コード例 #1
0
 /**
  * Take the original uploaded file and make all the different versions, based on the given template.
  *
  * @param string $filename 
  * @param string $Template 
  * @return void
  * @author Drew McLellan
  */
 public function process_versions($filename, $Template, $bucket)
 {
     $this->delete_versions();
     $result = false;
     $image_file = PerchUtil::file_path($bucket['file_path'] . '/' . $filename);
     PerchUtil::debug('123: ' . $image_file);
     if (!file_exists($image_file)) {
         return false;
     }
     $API = new PerchAPI(1.0, 'perch_gallery');
     $Image = $API->get('Image');
     $Versions = new PerchGallery_ImageVersions();
     $tags = $Template->find_all_tags();
     $Perch = Perch::fetch();
     if (!is_array($tags)) {
         $tags = array();
     }
     // add defaults we need for admin
     $tags[] = new PerchXMLTag('<perch:gallery id="image" type="image" />');
     // default full size
     $tags[] = new PerchXMLTag('<perch:gallery id="image" type="image" width="80" height="80" crop="true" key="admin_thumb" />');
     // admin thumb
     $tags[] = new PerchXMLTag('<perch:gallery id="image" type="image" width="180" key="admin_preview" />');
     // admin preview
     if (PerchUtil::count($tags)) {
         foreach ($tags as $Tag) {
             if ($Tag->id() == 'image' && $Tag->type() == 'image') {
                 //$bucket = $Perch->get_resource_bucket($Tag->bucket());
                 $Image->reset_defaults();
                 if ($Tag->quality()) {
                     $Image->set_quality($Tag->quality());
                 }
                 if ($Tag->sharpen()) {
                     $Image->set_sharpening($Tag->sharpen());
                 }
                 if ($Tag->density()) {
                     $Image->set_density($Tag->density());
                 }
                 if ($Tag->width() || $Tag->height()) {
                     $details = $Image->resize_image($image_file, $Tag->width(), $Tag->height(), $Tag->crop());
                 } else {
                     $details = array();
                     $details['file_name'] = $filename;
                     PerchUtil::debug('152: ' . $filename);
                     $info = getimagesize($image_file);
                     if (is_array($info)) {
                         $details['w'] = $info[0];
                         $details['h'] = $info[1];
                     }
                 }
                 if ($details) {
                     $data = array();
                     $data['imageID'] = $this->id();
                     if (strpos($details['file_name'], DIRECTORY_SEPARATOR) !== false) {
                         $parts = explode(DIRECTORY_SEPARATOR, $details['file_name']);
                         $details['file_name'] = array_pop($parts);
                     }
                     $data['versionPath'] = $details['file_name'];
                     //PerchUtil::debug('167: '. $details['file_name']);
                     if ($Tag->key()) {
                         $data['versionKey'] = $Tag->key();
                     } else {
                         $data['versionKey'] = $this->_generate_version_key($Tag->width(), $Tag->height());
                     }
                     if ($Tag->crop()) {
                         $data['versionWidth'] = $Tag->width();
                         $data['versionHeight'] = $Tag->height();
                     } else {
                         $data['versionWidth'] = $details['w'];
                         $data['versionHeight'] = $details['h'];
                     }
                     $Version = $Versions->create($data);
                     if (is_object($Version)) {
                         $result = true;
                     }
                 }
             }
         }
     }
     return $result;
 }