コード例 #1
0
ファイル: Import.php プロジェクト: atikahmed/joomla-probid
 /**
  */
 public function process()
 {
     try {
         /** @var RokGallery_Job_Property_ImportFile[] $import_files  */
         $import_files = $this->_job->getProperties();
         $total_files = count($import_files);
         foreach ($import_files as $key => &$import_file) {
             $this->_job->refreshState();
             if (!$this->_checkState($properties, 'Import')) {
                 return;
             }
             if ($import_file->isCompleted()) {
                 continue;
             }
             RokGallery_Doctrine::getConnection()->beginTransaction();
             $file = RokGallery_Model_File::createNew($import_file->getFilename(), $import_file->getPath());
             // If we need to check to make sure it is not a duplicated file
             if (RokGallery_Config::getOption(RokGallery_Config::OPTION_ALLOW_DUPLICATE_FILES, true) == false && RokGallery_Model_FileTable::getMD5($file->md5) !== false && RokGallery_Model_FileTable::getMD5($file->md5)->count() > 0) {
                 throw new RokGallery_Job_Exception(rc__('ROKGALLERY_A_MATCHING_FILE_FOR_N_IN_SYSTEM', $file->filename));
             }
             // Copy file to fine directory
             $basepath = dirname($file->getFullPath());
             if (!file_exists($basepath)) {
                 @mkdir($basepath, 0777, true);
                 RokGallery_Queue_DirectoryCreate::add($basepath);
             }
             if (!(file_exists($basepath) && is_dir($basepath) && is_writable($basepath))) {
                 throw new RokGallery_Job_Exception(rc__('ROKGALLERY_UNABLE_TO_CREATE_OR_WRITE_TO_THE_DIR_N', $basepath));
             }
             // Move the file to its final location
             $endpath = $file->getFullPath();
             rename($import_file->getPath(), $endpath);
             // update the image file info
             $file_image_info = @getimagesize($endpath);
             $file->xsize = $file_image_info[0];
             /// x size
             $file->ysize = $file_image_info[1];
             /// y size
             // Create the initial admin slice
             $this->createInitialAdminSlice($file);
             // Save the file to the db;
             $file->save();
             $import_file->setCompleted();
             $percent = (int) (($key + 1) / $total_files * 100);
             $this->_job->setProperties($import_files);
             $this->_job->save(rc__('ROKGALLERY_IMPORTED_FILE_N', $import_file->getFilename()), $percent);
             RokGallery_Doctrine::getConnection()->commit();
             $file->free(true);
         }
         $this->_job->Complete('Importing Complete');
         if (RokGallery_Config::getOption(RokGallery_Config::OPTION_AUTO_CLEAR_SUCCESSFUL_JOBS, false)) {
             sleep(5);
             $this->_job->Delete();
         }
         return;
     } catch (Exception $e) {
         RokGallery_Doctrine::getConnection()->rollback();
         $this->_job->Error($e->getMessage());
         return;
     }
 }
コード例 #2
0
ファイル: FileTable.php プロジェクト: atikahmed/joomla-probid
 /**
  * @param \RokGallery_Model_File $file
  * @param array $tags
  */
 public static function removeTagsFromFile(RokGallery_Model_File &$file, array $tags = array())
 {
     try {
         $query = Doctrine_Query::create()->delete('RokGallery_Model_FileTags ft')->where('ft.file_id = ?', $file->id)->andWhereIn('ft.tag', $tags);
         $query->execute();
         foreach ($tags as $tag) {
             $galleries = RokGallery_Model_GalleryTable::getByTag($tag);
             foreach ($galleries as $gallery) {
                 $slices = $file->getSlicesForGallery($gallery->id);
                 if (is_array($slices)) {
                     foreach ($slices as &$slice) {
                         if (RokGallery_Config::getOption(RokGallery_Config::OPTION_GALLERY_REMOVE_SLICES, false)) {
                             $file->unlink('Slices', array($slice->id));
                             $slice->delete();
                         } else {
                             $slice->gallery_id = null;
                             $slice->save();
                         }
                     }
                 }
             }
         }
         $file->save();
     } catch (Exception $e) {
         throw $e;
     }
 }
コード例 #3
0
 /**
  * @param RokGallery_Model_File $record
  * @return RokGallery_Model_Slice
  */
 protected function &_getAdminSlice(RokGallery_Model_File $record)
 {
     $slice = $record->getAdminThumbSlice();
     if (null == $slice) {
         $slice = $this->createMissingAdminSlice();
     }
     return $slice;
 }