/** */ public function process() { try { /** @var $properties RokGallery_Job_Property_FileTags[] */ $properties = $this->_job->getProperties(); $total_files = count($properties); foreach ($properties as $key => &$tagAddition) { // keep bumping the time as log as a file doesnt take 30 seconds or more if (!$this->_checkState($properties, rc__('ROKGALLERY_CREATE_UPDATE'))) { return; } if ($tagAddition->isCompleted()) { continue; } RokGallery_Doctrine::getConnection()->beginTransaction(); $file = RokGallery_Model_FileTable::getSingle($tagAddition->getFileId()); if (!$file) { $tagAddition->setStatus(rc__('ROKGALLERY_UNABLE_TO_FIND_FILE')); $tagAddition->setError(true); RokGallery_Doctrine::getConnection()->commit(); continue; } RokGallery_Model_FileTable::addTagsToFile($file, $tagAddition->getTags()); $tagAddition->setCompleted(); $percent = (int) (($key + 1) / $total_files * 100); $this->_job->setProperties($properties); $this->_job->save(rc__('ROKGALLERY_ADDED_TAGS_TO_FILE_N', $file->title), $percent); RokGallery_Doctrine::getConnection()->commit(); } $this->_job->Complete(rc__('ROKGALLERY_TAG_ADDITION_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; } }
/** * Add an array of tags to a {@link RokGallery_Model_File} object * $params object should be a json like * <code> * { * 'id': 1, * 'tags':['tag1','tag2'] * } * </code> * * @throws RokCommon_Ajax_Exception * @param $params * @return RokCommon_Ajax_Result */ public function addTags($params) { $result = new RokCommon_Ajax_Result(); try { RokGallery_Doctrine::getConnection()->beginTransaction(); $file = RokGallery_Model_FileTable::getSingle($params->id); if ($file === false) { throw new RokCommon_Ajax_Exception(rc__('ROKGALLERY_UNABLE_TO_FIND_FILE_TO_ADD_TAG_TO')); } RokGallery_Model_FileTable::addTagsToFile($file, $params->tags); RokGallery_Doctrine::getConnection()->commit(); $file->imageurl; $file->Tags; foreach ($file->Slices as &$slice) { $slice->populateFilterInfo(); $slice->manipulations = RokGallery_Manipulation_Helper::prepSerializedForJson($slice->manipulations); $slice->clearRelated('File'); $slice->Tags; $slice->FileTags; $slice->Gallery; } $result->setPayload(array('file' => $file->toJsonableArray(), 'defaults' => $this->getDefaults())); } catch (Exception $e) { RokGallery_Doctrine::getConnection()->rollback(); throw $e; } return $result; }