[ 'load' => 'imagecreatefromjpeg', 'save' => 'imagejpeg', 'quality' => 100 ], IMAGETYPE_PNG => [ 'load' => 'imagecreatefrompng', 'save' => 'imagepng', 'quality' => 0 ], IMAGETYPE_GIF => [ 'load' => 'imagecreatefromgif', 'save' => 'imagegif' ] ]; class ThumbImage { function resize_crop_image($max_width, $max_height, $source_file, $dst_dir, $quality = 80){ $imgsize = getimagesize($source_file); $width = $imgsize[0]; $height = $imgsize[1]; $mime = $imgsize['mime']; switch($mime){ case 'image/gif': $image_create = "imagecreatefromgif"; $image = "imagegif"; break; case 'image/png': $image_create = "imagecreatefrompng"; $image = "imagepng"; $quality = 7; break; case 'image/jpeg': $image_create = "imagecreatefromjpeg"; $image = "imagejpeg"; $quality = 80; break; default: return false; break; } /////////////////////////////////*******************/////////////////// if ($max_height == null) { // get width to height ratio $ratio = $width / $height; // if is portrait // use ratio to scale height to fit in square if ($width > $height) { $max_height = floor($max_width / $ratio); } // if is landscape // use ratio to scale width to fit in square else { $max_height = $max_width; $max_width = floor($max_width * $ratio); } } ////////////////////**************************//////////////////////// $dst_img = imagecreatetruecolor($max_width, $max_height); $src_img = $image_create($source_file); $width_new = $height * $max_width / $max_height; $height_new = $width * $max_height / $max_width; //if the new width is greater than the actual width of the image, then the height is too large and the rest cut off, or vice versa if($width_new > $width){ //cut point by height $h_point = (($height - $height_new) / 2); //copy image imagecopyresampled($dst_img, $src_img, 0, 0, 0, $h_point, $max_width, $max_height, $width, $height_new); }else{ //cut point by width $w_point = (($width - $width_new) / 2); imagecopyresampled($dst_img, $src_img, 0, 0, $w_point, 0, $max_width, $max_height, $width_new, $height); } if ($image = "imagegif"){ $image($dst_img, $dst_dir);} else{ $image($dst_img, $dst_dir, $quality); } if($dst_img)imagedestroy($dst_img); if($src_img)imagedestroy($src_img); } /** * @param $src - a valid file location * @param $dest - a valid file target * @param $targetWidth - desired output width * @param $targetHeight - desired output height or null */ function createThumbnail($src, $dest, $targetWidth, $targetHeight) { // 1. Load the image from the given $src // - see if the file actually exists // - check if it's of a valid image type // - load the image resource // get the type of the image // we need the type to determine the correct loader $type = exif_imagetype($src); // if no valid type or no handler found -> exit if (!$type || !IMAGE_HANDLERS[$type]) { return null; } // load the image with the correct loader $image = call_user_func(IMAGE_HANDLERS[$type]['load'], $src); // no image found at supplied location -> exit if (!$image) { return null; } // 2. Create a thumbnail and resize the loaded $image // - get the image dimensions // - define the output size appropriately // - create a thumbnail based on that size // - set alpha transparency for GIFs and PNGs // - draw the final thumbnail // get original image width and height $width = imagesx($image); $height = imagesy($image); // maintain aspect ratio when no height set if ($targetHeight == null) { // get width to height ratio $ratio = $width / $height; // if is portrait // use ratio to scale height to fit in square if ($width > $height) { $targetHeight = floor($targetWidth / $ratio); } // if is landscape // use ratio to scale width to fit in square else { $targetHeight = $targetWidth; $targetWidth = floor($targetWidth * $ratio); } } // create duplicate image based on calculated target size $thumbnail = imagecreatetruecolor($targetWidth, $targetHeight); // set transparency options for GIFs and PNGs if ($type == IMAGETYPE_GIF || $type == IMAGETYPE_PNG) { // make image transparent imagecolortransparent( $thumbnail, imagecolorallocate($thumbnail, 0, 0, 0) ); // additional settings for PNGs if ($type == IMAGETYPE_PNG) { imagealphablending($thumbnail, false); imagesavealpha($thumbnail, true); } } // copy entire source image to duplicate image and resize imagecopyresampled( $thumbnail, $image, 0, 0, 0, 0, $targetWidth, $targetHeight, $width, $height ); // 3. Save the $thumbnail to disk // - call the correct save method // - set the correct quality level // save the duplicate version of the image to disk if ($type == IMAGETYPE_GIF) { return call_user_func( IMAGE_HANDLERS[$type]['save'], $thumbnail, $dest ); } else { return call_user_func( IMAGE_HANDLERS[$type]['save'], $thumbnail, $dest, IMAGE_HANDLERS[$type]['quality'] ); } } } abstract class JTContentSliderHelper { /** * Retrieve a list of article * * @param Registry $params The module parameters. * @param ArticlesModel $model The model. * * @return mixed * * @since 1.6 */ public static function getList(Registry $params, ArticlesModel $model) { // Get the Dbo and User object $db = Factory::getDbo(); $user = Factory::getUser(); // Set application parameters in model $app = Factory::getApplication(); $appParams = $app->getParams(); $model->setState('params', $appParams); // Set the filters based on the module params $model->setState('list.start', (int) $params->get('num_intro_skip', 0)); $model->setState('list.limit', (int) $params->get('count', 5)); $model->setState('filter.published', 1); // This module does not use tags data $model->setState('load_tags', false); // Access filter $access = !ComponentHelper::getParams('com_content')->get('show_noauth'); $authorised = Access::getAuthorisedViewLevels($user->get('id')); $model->setState('filter.access', $access); // Category filter $model->setState('filter.category_id', $params->get('catid', array())); // User filter $userId = $user->get('id'); switch ($params->get('user_id')) { case 'by_me' : $model->setState('filter.author_id', (int) $userId); break; case 'not_me' : $model->setState('filter.author_id', $userId); $model->setState('filter.author_id.include', false); break; case 'created_by' : $model->setState('filter.author_id', $params->get('author', array())); break; case '0' : break; default: $model->setState('filter.author_id', (int) $params->get('user_id')); break; } // Filter by language $model->setState('filter.language', $app->getLanguageFilter()); // Featured switch $featured = $params->get('show_featured', ''); if ($featured === '') { $model->setState('filter.featured', 'show'); } elseif ($featured) { $model->setState('filter.featured', 'only'); } else { $model->setState('filter.featured', 'hide'); } // Set ordering $order_map = array( 'a.created' => 'a.created', 'a.publish_up' => 'a.publish_up', 'a.ordering'=> 'a.ordering', 'fp.ordering' => 'fp.ordering', 'a.hits' => 'a.hits', 'a.title' => 'a.title', 'a.id' => 'a.id', 'a.alias' => 'a.alias', 'modified' => 'a.modified', 'a.publish_down' => 'a.publish_down', 'rating_count' => 'rating_count', 'random' => $db->getQuery(true)->Rand(), ); $ordering = ArrayHelper::getValue($order_map, $params->get('ordering'), 'a.publish_up'); $dir = 'DESC'; $model->setState('list.ordering', $ordering); $model->setState('list.direction', $params->get('article_ordering_direction', 'ASC')); $items = $model->getItems(); foreach ($items as &$item) { $item->slug = $item->id . ':' . $item->alias; if ($access || in_array($item->access, $authorised)) { // We know that user has the privilege to view the article $item->link = Route::_(\ContentHelperRoute::getArticleRoute($item->slug, $item->catid, $item->language)); } else { $item->link = Route::_('index.php?option=com_users&view=login'); } } return $items; } public static function getDate($show_date, $show_date_type, $created_date, $custom_date_format) { $date = new Date($created_date); if($show_date==1) { switch($show_date_type) { case 1: echo ""; echo HTMLHelper::_('date', $date, Text::_('l, d F Y H:i')); echo "
"; break; case 2: echo ""; echo HTMLHelper::_('date', $date, Text::_('d F Y')); echo "
"; break; case 3: echo ""; echo HTMLHelper::_('date', $date, Text::_('H:i')); echo "
"; break; case 4: echo ""; echo HTMLHelper::_('date', $date, Text::_('D, M jS Y')); echo "
"; break; case 5: echo ""; echo HTMLHelper::_('date', $date, Text::_('l, F jS Y H:i')); echo "
"; break; case 6: echo ""; echo HTMLHelper::_('date', $date, Text::_($custom_date_format)); echo "
"; break; default: echo ""; echo HTMLHelper::_('date', $date, Text::_('l, d F Y')); echo "
"; break; } } } public static function getOrgImage($item_id, $article_images,$title,$introtext,$modulebase) { $thumb_name = str_replace([':', '\\', '/', '*', '\'', '"'], '', str_replace(' ', '_', strtolower($item_id)) ); if ($article_images) { // Thumbnail is not exist $images = json_decode($article_images); // Find Article's Image if (!empty($images->image_intro) ) { $orig_image = strstr($images->image_intro, '#', true); // Added JCE PRO support if ($orig_image == NULL) { $orig_image = $images->image_intro; } } elseif (empty($images->image_intro) && !empty($images->image_fulltext) ) { $orig_image = strstr($images->image_fulltext, '#', true); // Added JCE PRO support if ($orig_image == NULL) { $orig_image = $images->image_fulltext; } } else { // Find first image in the article $html = $introtext; $pattern = '/image_intro) ) { $caption = $images->image_intro_caption; if(!$caption){ $caption = $images->image_fulltext_caption; } } return $caption; } } public static function getThumbnail($item_id, $article_images, $thumb_folder, $show_default_thumb, $thumb_width,$thumb_height,$title,$introtext,$modulebase) { $thumb_name = str_replace([':', '\\', '/', '*', '\'', '"'], '', str_replace(' ', '_', strtolower($item_id)) ); $thumb_name = md5($thumb_width.$thumb_height).'_'. $thumb_name; if (!File::exists(JPATH_BASE.$thumb_folder.$thumb_name.'.jpg')) { // Thumbnail is not exist $images = json_decode($article_images); // Find Article's Image if (!empty($images->image_intro) ) { $orig_image = strstr($images->image_intro, '#', true); // Added JCE PRO support if ($orig_image == NULL) { $orig_image = $images->image_intro; } } elseif (empty($images->image_intro) && !empty($images->image_fulltext) ) { $orig_image = strstr($images->image_fulltext, '#', true); // Added JCE PRO support if ($orig_image == NULL) { $orig_image = $images->image_fulltext; } } else { // Find first image in the article $html = $introtext; $pattern = '/createThumbnail($orig_image,JPATH_BASE.$thumb_folder.$thumb_name.'.jpg',$thumb_width,$thumb_height); $thumb_img->resize_crop_image($thumb_width,$thumb_height,$orig_image,JPATH_BASE.$thumb_folder.$thumb_name.'.jpg',100); $thumb_img = ''.$title.''; } else { // If article doesn't have any image then use default image or leave it empty if($show_default_thumb){ $thumb_img = ''.$title.''; } else { $thumb_img=""; } } } else { // Thumbnail is exists $thumb_img = ''.$title.''; } return $thumb_img; } }