Back to PhocaGalleryFileThumbnail class

Method getOrCreateThumbnail

public static
getOrCreateThumbnail
(mixed $fileNo, mixed $refreshUrl, mixed $small = 0, mixed $medium = 0, mixed $large = 0, mixed $frontUpload = 0)

Method getOrCreateThumbnail - Source code

/*
 * Main Thumbnail creating function
 *
 * file 		= abc.jpg
 * fileNo	= folder/abc.jpg
 * if small, medium, large = 1, create small, medium, large thumbnail
 */
public static function getOrCreateThumbnail($fileNo, $refreshUrl, $small = 0, $medium = 0, $large = 0, $frontUpload = 0)
{
    if ($frontUpload) {
        $returnFrontMessage = '';
    }
    $onlyThumbnailInfo = 0;
    if ($small == 0 && $medium == 0 && $large == 0) {
        $onlyThumbnailInfo = 1;
    }
    $paramsC = ComponentHelper::getParams('com_phocagallery');
    $additional_thumbnails = $paramsC->get('additional_thumbnails', 0);
    $path = PhocaGalleryPath::getPath();
    $origPathServer = str_replace('//', '/', $path->image_abs);
    $file['name'] = PhocaGalleryFile::getTitleFromFile($fileNo, 1);
    $file['name_no'] = ltrim($fileNo, '/');
    $file['name_original_abs'] = PhocaGalleryFile::getFileOriginal($fileNo);
    $file['name_original_rel'] = PhocaGalleryFile::getFileOriginal($fileNo, 1);
    $file['path_without_file_name_original'] = str_replace($file['name'], '', $file['name_original_abs']);
    $file['path_without_file_name_thumb'] = str_replace($file['name'], '', $file['name_original_abs'] . 'thumbs' . '/');
    //$file['path_without_name']				= str_replace('\\', '/', JPath::clean($origPathServer));
    //$file['path_with_name_relative_no']		= str_replace($origPathServer, '', $file['name_original']);
    /*
    		$file['path_with_name_relative']		= $path['orig_rel_ds'] . str_replace($origPathServer, '', $file['name_original']);
    		$file['path_with_name_relative_no']		= str_replace($origPathServer, '', $file['name_original']);
    
    		$file['path_without_name']				= str_replace('\\', '/', Path::clean($origPath.'/'));
    		$file['path_without_name_relative']		= $path['orig_rel_ds'] . str_replace($origPathServer, '', $file['path_without_name']);
    		$file['path_without_name_relative_no']	= str_replace($origPathServer, '', $file['path_without_name']);
    		$file['path_without_name_thumbs'] 		= $file['path_without_name'] .'thumbs';
    		$file['path_without_file_name_original'] 			= str_replace($file['name'], '', $file['name_original']);
    		$file['path_without_name_thumbs_no'] 	= str_replace($file['name'], '', $file['name_original'] .'thumbs');*/
    $ext = strtolower(File::getExt($file['name']));
    switch ($ext) {
        case 'jpg':
        case 'png':
        case 'gif':
        case 'jpeg':
        case 'webp':
            //Get File thumbnails name
            $thumbNameS = PhocaGalleryFileThumbnail::getThumbnailName($fileNo, 'small');
            $file['thumb_name_s_no_abs'] = $thumbNameS->abs;
            $file['thumb_name_s_no_rel'] = $thumbNameS->rel;
            $thumbNameM = PhocaGalleryFileThumbnail::getThumbnailName($fileNo, 'medium');
            $file['thumb_name_m_no_abs'] = $thumbNameM->abs;
            $file['thumb_name_m_no_rel'] = $thumbNameM->rel;
            $thumbNameL = PhocaGalleryFileThumbnail::getThumbnailName($fileNo, 'large');
            $file['thumb_name_l_no_abs'] = $thumbNameL->abs;
            $file['thumb_name_l_no_rel'] = $thumbNameL->rel;
            // Don't create thumbnails from watermarks...
            $dontCreateThumb = PhocaGalleryFileThumbnail::dontCreateThumb($file['name']);
            if ($dontCreateThumb == 1) {
                $onlyThumbnailInfo = 1;
                // WE USE $onlyThumbnailInfo FOR NOT CREATE A THUMBNAIL CLAUSE
            }
            // We want only information from the pictures OR
            if ($onlyThumbnailInfo == 0) {
                $thumbInfo = $fileNo;
                //Create thumbnail folder if not exists
                $errorMsg = 'ErrorCreatingFolder';
                $creatingFolder = PhocaGalleryFileThumbnail::createThumbnailFolder($file['path_without_file_name_original'], $file['path_without_file_name_thumb'], $errorMsg);
                switch ($errorMsg) {
                    case 'Success':
                    //case 'ThumbnailExists':
                    case 'DisabledThumbCreation':
                        //case 'OnlyInformation':
                        break;
                    default:
                        // BACKEND OR FRONTEND
                        if ($frontUpload != 1) {
                            PhocaGalleryRenderProcess::getProcessPage($file['name'], $thumbInfo, $refreshUrl, $errorMsg, $frontUpload);
                            exit;
                        } else {
                            $returnFrontMessage = $errorMsg;
                        }
                        break;
                }
                // Folder must exist
                if (Folder::exists($file['path_without_file_name_thumb'])) {
                    // Thumbnails real size
                    $tRS = array();
                    $errorMsgS = $errorMsgM = $errorMsgL = '';
                    //Small thumbnail
                    if ($small == 1) {
                        $createSmall = PhocaGalleryFileThumbnail::createFileThumbnail($file['name_original_abs'], $thumbNameS->abs, 'small', $frontUpload, $errorMsgS);
                        if ($additional_thumbnails == 2 || $additional_thumbnails == 3 || $additional_thumbnails == 7) {
                            PhocaGalleryFileThumbnail::createFileThumbnail($file['name_original_abs'], str_replace('phoca_thumb_s_', 'phoca_thumb_s1_', $thumbNameS->abs), 'small1', $frontUpload, $errorMsgS);
                            PhocaGalleryFileThumbnail::createFileThumbnail($file['name_original_abs'], str_replace('phoca_thumb_s_', 'phoca_thumb_s2_', $thumbNameS->abs), 'small2', $frontUpload, $errorMsgS);
                            PhocaGalleryFileThumbnail::createFileThumbnail($file['name_original_abs'], str_replace('phoca_thumb_s_', 'phoca_thumb_s3_', $thumbNameS->abs), 'small3', $frontUpload, $errorMsgS);
                        }
                        // Thumbnail real size
                        if ($createSmall && File::exists($thumbNameS->abs)) {
                            $size = getimagesize($thumbNameS->abs);
                            if (isset($size[0])) {
                                $tRS['s']['w'] = $size[0];
                            }
                            if (isset($size[1])) {
                                $tRS['s']['h'] = $size[1];
                            }
                        }
                    } else {
                        $errorMsgS = 'ThumbnailExists';
                        // in case we only need medium or large, because of if clause bellow
                    }
                    //Medium thumbnail
                    if ($medium == 1) {
                        $createMedium = PhocaGalleryFileThumbnail::createFileThumbnail($file['name_original_abs'], $thumbNameM->abs, 'medium', $frontUpload, $errorMsgM);
                        if ($additional_thumbnails == 1 || $additional_thumbnails == 3 || $additional_thumbnails == 7) {
                            PhocaGalleryFileThumbnail::createFileThumbnail($file['name_original_abs'], str_replace('phoca_thumb_m_', 'phoca_thumb_m1_', $thumbNameM->abs), 'medium1', $frontUpload, $errorMsgM);
                            PhocaGalleryFileThumbnail::createFileThumbnail($file['name_original_abs'], str_replace('phoca_thumb_m_', 'phoca_thumb_m2_', $thumbNameM->abs), 'medium2', $frontUpload, $errorMsgM);
                            PhocaGalleryFileThumbnail::createFileThumbnail($file['name_original_abs'], str_replace('phoca_thumb_m_', 'phoca_thumb_m3_', $thumbNameM->abs), 'medium3', $frontUpload, $errorMsgM);
                        }
                        // Thumbnail real size
                        if ($createMedium && File::exists($thumbNameM->abs)) {
                            $size = getimagesize($thumbNameM->abs);
                            if (isset($size[0])) {
                                $tRS['m']['w'] = $size[0];
                            }
                            if (isset($size[1])) {
                                $tRS['m']['h'] = $size[1];
                            }
                        }
                    } else {
                        $errorMsgM = 'ThumbnailExists';
                        // in case we only need small or large, because of if clause bellow
                    }
                    //Large thumbnail
                    if ($large == 1) {
                        $createLarge = PhocaGalleryFileThumbnail::createFileThumbnail($file['name_original_abs'], $thumbNameL->abs, 'large', $frontUpload, $errorMsgL);
                        if ($additional_thumbnails == 7) {
                            PhocaGalleryFileThumbnail::createFileThumbnail($file['name_original_abs'], str_replace('phoca_thumb_l_', 'phoca_thumb_l1_', $thumbNameL->abs), 'large1', $frontUpload, $errorMsgL);
                        }
                        // Thumbnail real size
                        if ($createLarge && File::exists($thumbNameL->abs)) {
                            $size = getimagesize($thumbNameL->abs);
                            if (isset($size[0])) {
                                $tRS['l']['w'] = $size[0];
                            }
                            if (isset($size[1])) {
                                $tRS['l']['h'] = $size[1];
                            }
                        }
                    } else {
                        $errorMsgL = 'ThumbnailExists';
                        // in case we only need small or medium, because of if clause bellow
                    }
                    // Error messages for all 3 thumbnails (if the message contains error string, we got error
                    // Other strings can be:
                    // - ThumbnailExists  - do not display error message nor success page
                    // - OnlyInformation - do not display error message nor success page
                    // - DisabledThumbCreation - do not display error message nor success page
                    $creatingSError = $creatingMError = $creatingLError = false;
                    $creatingSError = preg_match("/Error/i", $errorMsgS);
                    $creatingMError = preg_match("/Error/i", $errorMsgM);
                    $creatingLError = preg_match("/Error/i", $errorMsgL);
                    // Add info about real thumbnail sizes into database
                    if ($creatingSError || $creatingMError || $creatingLError) {
                    } else {
                        if (isset($createSmall) && $createSmall || isset($createMedium) && $createMedium || isset($createLarge) && $createLarge) {
                            // Set it only when really new thumbnail was created
                            PhocaGalleryImage::updateRealThumbnailSizes($file['name_original_rel'], $tRS);
                        }
                    }
                    // BACKEND OR FRONTEND
                    if ($frontUpload != 1) {
                        // There is an error while creating thumbnail in m or in s or in l
                        if ($creatingSError || $creatingMError || $creatingLError) {
                            // if all or two errors appear, we only display the last error message
                            // because the errors in this case is the same
                            if ($errorMsgS != '') {
                                $creatingError = $errorMsgS;
                            }
                            if ($errorMsgM != '') {
                                $creatingError = $errorMsgM;
                            }
                            if ($errorMsgL != '') {
                                $creatingError = $errorMsgL;
                            }
                            PhocaGalleryRenderProcess::getProcessPage($file['name'], $thumbInfo, $refreshUrl, $creatingError);
                            exit;
                        } else {
                            if ($errorMsgS == '' && $errorMsgM == '' && $errorMsgL == '') {
                                PhocaGalleryRenderProcess::getProcessPage($file['name'], $thumbInfo, $refreshUrl);
                                exit;
                            } else {
                                if ($errorMsgS == '' && $errorMsgM == '' && $errorMsgL == 'ThumbnailExists') {
                                    PhocaGalleryRenderProcess::getProcessPage($file['name'], $thumbInfo, $refreshUrl);
                                    exit;
                                } else {
                                    if ($errorMsgS == '' && $errorMsgM == 'ThumbnailExists' && $errorMsgL == 'ThumbnailExists') {
                                        PhocaGalleryRenderProcess::getProcessPage($file['name'], $thumbInfo, $refreshUrl);
                                        exit;
                                    } else {
                                        if ($errorMsgS == '' && $errorMsgM == 'ThumbnailExists' && $errorMsgL == '') {
                                            PhocaGalleryRenderProcess::getProcessPage($file['name'], $thumbInfo, $refreshUrl);
                                            exit;
                                        } else {
                                            if ($errorMsgS == 'ThumbnailExists' && $errorMsgM == 'ThumbnailExists' && $errorMsgL == '') {
                                                PhocaGalleryRenderProcess::getProcessPage($file['name'], $thumbInfo, $refreshUrl);
                                                exit;
                                            } else {
                                                if ($errorMsgS == 'ThumbnailExists' && $errorMsgM == '' && $errorMsgL == '') {
                                                    PhocaGalleryRenderProcess::getProcessPage($file['name'], $thumbInfo, $refreshUrl);
                                                    exit;
                                                } else {
                                                    if ($errorMsgS == 'ThumbnailExists' && $errorMsgM == '' && $errorMsgL == 'ThumbnailExists') {
                                                        PhocaGalleryRenderProcess::getProcessPage($file['name'], $thumbInfo, $refreshUrl);
                                                        exit;
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    } else {
                        // There is an error while creating thumbnail in m or in s or in l
                        if ($creatingSError || $creatingMError || $creatingLError) {
                            // if all or two errors appear, we only display the last error message
                            // because the errors in this case is the same
                            if ($errorMsgS != '') {
                                $creatingError = $errorMsgS;
                            }
                            if ($errorMsgM != '') {
                                $creatingError = $errorMsgM;
                            }
                            if ($errorMsgL != '') {
                                $creatingError = $errorMsgL;
                            }
                            // because the errors in this case is the same
                            $returnFrontMessage = $creatingError;
                        } else {
                            if ($errorMsgS == '' && $errorMsgM == '' && $errorMsgL == '') {
                                $returnFrontMessage = 'Success';
                            } else {
                                if ($errorMsgS == '' && $errorMsgM == '' && $errorMsgL == 'ThumbnailExists') {
                                    $returnFrontMessage = 'Success';
                                } else {
                                    if ($errorMsgS == '' && $errorMsgM == 'ThumbnailExists' && $errorMsgL == 'ThumbnailExists') {
                                        $returnFrontMessage = 'Success';
                                    } else {
                                        if ($errorMsgS == '' && $errorMsgM == 'ThumbnailExists' && $errorMsgL == '') {
                                            $returnFrontMessage = 'Success';
                                        } else {
                                            if ($errorMsgS == 'ThumbnailExists' && $errorMsgM == 'ThumbnailExists' && $errorMsgL == '') {
                                                $returnFrontMessage = 'Success';
                                            } else {
                                                if ($errorMsgS == 'ThumbnailExists' && $errorMsgM == '' && $errorMsgL == '') {
                                                    $returnFrontMessage = 'Success';
                                                } else {
                                                    if ($errorMsgS == 'ThumbnailExists' && $errorMsgM == '' && $errorMsgL == 'ThumbnailExists') {
                                                        $returnFrontMessage = 'Success';
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                    if ($frontUpload == 1) {
                        return $returnFrontMessage;
                    }
                }
            }
            break;
    }
    return $file;
}