Security::remove_XSS($url), 'name' => $originaltoolname);
// Because $nametools uses $_SERVER['PHP_SELF'] for the breadcrumbs instead of $_SERVER['REQUEST_URI'], I had to
// bypass the $nametools thing and use tags in the $interbreadcrump array
//$url = 'slideshow.php?curdirpath='.$pathurl;
$originaltoolname = get_lang('SlideShow');
//$interbreadcrumb[] = array('url'=>$url, 'name' => $originaltoolname);
Display :: display_header($originaltoolname, 'Doc');
// Loading the slides from the session
if (isset($_SESSION['image_files_only'])) {
$image_files_only = $_SESSION['image_files_only'];
}
// Calculating the current slide, next slide, previous slide and the number of slides
if ($slide_id != 'all') {
$slide = $slide_id ? $slide_id : 0;
$previous_slide = $slide - 1;
$next_slide = $slide + 1;
}
$total_slides = count($image_files_only);
?>
';
}
}
// Exit the slideshow
echo ''.Display::return_icon('back.png',get_lang('BackTo').' '.get_lang('DocumentsOverview'),'',ICON_SIZE_MEDIUM).'';
// Show thumbnails
if ($slide_id != 'all') {
echo ''.Display::return_icon('thumbnails.png',get_lang('ShowThumbnails'),'',ICON_SIZE_MEDIUM).'';
} else {
echo Display::return_icon('thumbnails_na.png',get_lang('ShowThumbnails'),'',ICON_SIZE_MEDIUM);
}
// Slideshow options
echo ''.Display::return_icon('settings.png',get_lang('SetSlideshowOptions'),'',ICON_SIZE_MEDIUM).'';
?>
';
/* TREATING THE POST DATA FROM SLIDESHOW OPTIONS */
// If we come from slideshowoptions.php we sessionize (new word !!! ;-) the options
if (isset($_POST['Submit'])) {
// We come from slideshowoptions.php
//$_SESSION["auto_image_resizing"]=Security::remove_XSS($_POST['auto_radio_resizing']);
$_SESSION["image_resizing"] = Security::remove_XSS($_POST['radio_resizing']);
if ($_POST['radio_resizing'] == "resizing" && $_POST['width'] != '' && $_POST['height'] != '') {
//echo "resizing";
$_SESSION["image_resizing_width"] = Security::remove_XSS($_POST['width']);
$_SESSION["image_resizing_height"] = Security::remove_XSS($_POST['height']);
} else {
//echo "unsetting the session heighte and width";
$_SESSION["image_resizing_width"] = null;
$_SESSION["image_resizing_height"] = null;
}
}
$target_width = $target_height = null;
// The target height and width depends if we choose resizing or no resizing
if (isset($_SESSION["image_resizing"]) && $_SESSION["image_resizing"] == "resizing") {
$target_width = $_SESSION["image_resizing_width"];
$target_height = $_SESSION["image_resizing_height"];
}
/* THUMBNAIL VIEW */
// This is for viewing all the images in the slideshow as thumbnails.
$image_tag = array ();
if ($slide_id == 'all') {
// Config for make thumbnails
$allowed_thumbnail_types = array('jpg','jpeg','gif','png');
$max_thumbnail_width = 100;
$max_thumbnail_height = 100;
$png_compression = 0;//0(none)-9
$jpg_quality = 75;//from 0 to 100 (default is 75). More quality less compression
$directory_thumbnails=$sys_course_path.$_course['path'].'/document'.$folder.'.thumbs/';
//Other parameters only for show tumbnails
$row_items = 4;//only in slideshow.php
$number_image = 7;//num icons cols to show
$thumbnail_width_frame=$max_thumbnail_width;//optional $max_thumbnail_width+x
$thumbnail_height_frame=$max_thumbnail_height;
// Create the template_thumbnails folder (if no exist)
if (!file_exists($directory_thumbnails)) {
@mkdir($directory_thumbnails, api_get_permissions_for_new_directories());
}
/*
//
//disabled by now, because automatic mode is heavy for server (scandir), only manual
//
// Delete orphaned thumbnails
$directory_images=$sys_course_path.$_course['path'].'/document'.$folder;
$all_thumbnails = scandir($directory_thumbnails);
$all_files = scandir($directory_images);
foreach ($all_thumbnails as $check_thumb) {
$temp_filename=substr($check_thumb,1);//erase the first dot in file, and translate .. to .
if ($temp_filename=='.') {
continue; //need because scandir also return . and .. simbols
}
if(in_array($filename, $all_files)==false) {
unlink($directory_thumbnails.'.'.$temp_filename);
}
}
*/
// check files and thumbnails
if (is_array($image_files_only)) {
foreach ($image_files_only as $one_image_file) {
$image = $sys_course_path.$_course['path'].'/document'.$folder.$one_image_file;
$image_thumbnail= $directory_thumbnails.'.'.$one_image_file;
if (file_exists($image)) {
//check thumbnail
$imagetype = explode(".", $image);
$imagetype = strtolower($imagetype[count($imagetype)-1]);//or check $imagetype = image_type_to_extension(exif_imagetype($image), false);
if(in_array($imagetype,$allowed_thumbnail_types)) {
if (!file_exists($image_thumbnail)){
$original_image_size = api_getimagesize($image);//run each once we view thumbnails is too heavy, then need move into !file_exists($image_thumbnail, and only run when haven't the thumbnail
switch($imagetype) {
case 'gif':
$source_img = imagecreatefromgif($image);
break;
case 'jpg':
$source_img = imagecreatefromjpeg($image);
break;
case 'jpeg':
$source_img = imagecreatefromjpeg($image);
break;
case 'png':
$source_img = imagecreatefrompng($image);
break;
}
$new_thumbnail_size = api_calculate_image_size($original_image_size['width'], $original_image_size['height'], $max_thumbnail_width, $max_thumbnail_height);
if($max_thumbnail_width>$original_image_size['width'] && $max_thumbnail_height>$original_image_size['height']){
$new_thumbnail_size['width']=$original_image_size['width'];
$new_thumbnail_size['height']=$original_image_size['height'];
}
$crop = imagecreatetruecolor($new_thumbnail_size['width'], $new_thumbnail_size['height']);
// preserve transparency
if($imagetype == "png"){
imagesavealpha($crop, true);
$color = imagecolorallocatealpha($crop,0x00,0x00,0x00,127);
imagefill($crop, 0, 0, $color);
}
if ($imagetype == "gif") {
$transindex = imagecolortransparent($source_img);
$palletsize = imagecolorstotal($source_img);
//GIF89a for transparent and anim (first clip), either GIF87a
if ($transindex >= 0 && $transindex < $palletsize){
$transcol = imagecolorsforindex($source_img, $transindex);
$transindex = imagecolorallocatealpha($crop, $transcol['red'], $transcol['green'], $transcol['blue'], 127);
imagefill($crop, 0, 0, $transindex);
imagecolortransparent($crop, $transindex);
}
}
//resampled image
imagecopyresampled($crop,$source_img,0,0,0,0,$new_thumbnail_size['width'],$new_thumbnail_size['height'],$original_image_size['width'],$original_image_size['height']);
switch($imagetype) {
case 'gif':
imagegif($crop,$image_thumbnail);
break;
case 'jpg':
imagejpeg($crop,$image_thumbnail,$jpg_quality);
break;
case 'jpeg':
imagejpeg($crop,$image_thumbnail,$jpg_quality);
break;
case 'png':
imagepng($crop,$image_thumbnail,$png_compression);
break;
}
//clean memory
imagedestroy($crop);
}//end !exist thumbnail
//show thumbnail and link
$one_image_thumbnail_file='.thumbs/.'.$one_image_file;//get path thumbnail
$doc_url = ($path && $path !== '/') ? $path.'/'.$one_image_thumbnail_file : $path.$one_image_thumbnail_file;
$image_tag[] = '';
}
else{
//if images aren't support by gd (not gif, jpg, jpeg, png)
if ($imagetype=="bmp"){
$original_image_size = getimagesize($image);// use getimagesize instead api_getimagesize($image); becasuse api_getimagesize doesn't support bmp files. Put here for each show, only for a few bmp files isn't heavy
if($max_thumbnail_width<$original_image_size[0] || $max_thumbnail_height<$original_image_size[1]){
$thumbnail_size=api_calculate_image_size($original_image_size[0], $original_image_size[1], $max_thumbnail_width, $max_thumbnail_height);//don't use resize_image because doesn't run with bmp files
$image_height = $thumbnail_size['height'];
$image_width = $thumbnail_size['width'];
}
else{
$image_height=$original_image_size[0];
$image_width=$original_image_size[1];
}
}
else{
//example for svg files,...
$image_width=$max_thumbnail_width;
$image_height=$max_thumbnail_height;
}
$doc_url = ($path && $path !== '/') ? $path.'/'.$one_image_file : $path.$one_image_file;
$image_tag[] = '';
}//end allowed image types
}//end if exist file image
}//end foreach
}//end image files only
// Creating the table
$html_table = '';
echo '';
$i = 0;
$count_image = count($image_tag);
$number_iteration = ceil($count_image/$number_image);
$p = 0;
for ($k = 0; $k < $number_iteration; $k++) {
echo '';
for ($i = 0; $i < $number_image; $i++) {
if (!is_null($image_tag[$p])) {
echo '';
//TODO:move styles to css files and center image vertical
?>
';
echo ''.$image_tag[$p].'';
echo '';
echo ' | ';
}
$p++;
}
echo '
';
}
echo '
';
}//end slide==all
/* ONE AT A TIME VIEW */
$course_id = api_get_course_int_id();
// This is for viewing all the images in the slideshow one at a time.
if ($slide_id != 'all') {
if (file_exists($image)) {
$image_height_width = resize_image($image, $target_width, $target_height);
$image_height = $image_height_width[0];
$image_width = $image_height_width[1];
$height_width_tags = null;
if (isset($_SESSION['image_resizing']) && $_SESSION['image_resizing'] == 'resizing') {
$height_width_tags = 'width="'.$image_width.'" height="'.$image_height.'"';
}
// This is done really quickly and should be cleaned up a little bit using the API functions
$tbl_documents = Database::get_course_table(TABLE_DOCUMENT);
if ($path == '/') {
$pathpart = '/';
} else {
$pathpart = $path.'/';
}
$sql = "SELECT * FROM $tbl_documents WHERE c_id = $course_id AND path='".Database::escape_string($pathpart.$image_files_only[$slide])."'";
$result = Database::query($sql);
$row = Database::fetch_array($result);
echo '';
echo '';
if (api_is_allowed_to_edit(null, true)) {
echo '';
echo '';
echo '
';
$aux = explode('.', htmlspecialchars($image_files_only[$slide]));
$ext = $aux[count($aux) - 1];
echo $image_files_only[$slide].' ';
echo $width.' x '.$height.' ';
echo round((filesize($image)/1024), 2).' KB';
echo ' - '.$ext;
echo ' | ';
echo '
';
echo '';
echo '';
if ($_SESSION['image_resizing'] == 'resizing') {
$resize_info = get_lang('Resizing').' ';
$resize_widht = $_SESSION["image_resizing_width"].' x ';
$resize_height = $_SESSION['image_resizing_height'];
}
elseif($_SESSION['image_resizing'] != 'noresizing'){
$resize_info = get_lang('Resizing').' ';
$resize_widht = get_lang('Auto').' x ';
$resize_height = get_lang('Auto');
} else {
$resize_info = get_lang('NoResizing').' ';
}
echo $resize_info;
echo $resize_widht;
echo $resize_height;
echo ' | ';
echo '
';
}
echo '
';
} else {
Display::display_warning_message(get_lang('FileNotFound'));
}
}
Display :: display_footer();