/**
  * add
  * @author Thomas Schedler <*****@*****.**>
  * @version 1.0
  */
 public function add($_FILE_NAME)
 {
     $this->core->logger->debug('massiveart.files.File->add()');
     try {
         $this->_FILE_NAME = $_FILE_NAME;
         $this->strFileId = uniqid();
         $this->upload();
         $this->getModelFile();
         $this->intUserId = Zend_Auth::getInstance()->getIdentity()->id;
         $this->intVersion = 1;
         $arrInsertData = array('fileId' => $this->strFileId, 'idUsers' => $this->intUserId, 'path' => '', 'idParent' => $this->intParentId, 'idParentTypes' => $this->intParentTypeId, 'isS3Stored' => 0, 'isImage' => $this->getIsImage(), 'filename' => $this->strFileId . '.' . $this->strExtension, 'creator' => $this->intUserId, 'created' => date('Y-m-d H:i:s'), 'size' => $this->dblSize, 'extension' => $this->strExtension, 'mimeType' => $this->strMimeType, 'version' => $this->intVersion);
         $this->intId = $this->objModelFile->getFileTable()->insert($arrInsertData);
         if ($this->getIsImage()) {
             $arrInsertAttributeData = array('idFiles' => $this->intId, 'xDim' => $this->intXDim, 'yDim' => $this->intYDim);
             $this->objModelFile->getFileAttributeTable()->insert($arrInsertAttributeData);
         }
     } catch (Exception $exc) {
         $this->core->logger->err($exc);
     }
 }
 /**
  * updateFileData
  * @author Cornelius Hansjakob <*****@*****.**>
  * @version 1.0
  */
 public function updateFileData()
 {
     $this->core->logger->debug('massiveart.files.File->updateFileData()');
     try {
         $arrMetaData = array();
         $this->getModelFile();
         $this->getModelTags();
         $strTmpEditFileIds = trim($this->arrFileDatas['FileIds'], '[]');
         $arrEditFileIds = array();
         $arrEditFileIds = split('\\]\\[', $strTmpEditFileIds);
         if (count($arrEditFileIds) > 0) {
             foreach ($arrEditFileIds as $intEditFileId) {
                 if ($intEditFileId != '') {
                     $strFileTitle = $this->arrFileDatas['FileTitle' . $intEditFileId];
                     $strFileDescription = $this->arrFileDatas['FileDescription' . $intEditFileId];
                     if ($strFileTitle != '' || $strFileDescription != '') {
                         $arrData = array('title' => $strFileTitle, 'description' => $strFileDescription, 'changed' => date('Y-m-d H:i:s'));
                         if ($this->objModelFile->hasDisplayTitle($intEditFileId) == false) {
                             $arrData['isDisplayTitle'] = 1;
                         }
                         $strWhere = $this->objModelFile->getFileTitleTable()->getAdapter()->quoteInto('idFiles = ?', $intEditFileId);
                         $strWhere .= $this->objModelFile->getFileTitleTable()->getAdapter()->quoteInto(' AND idLanguages = ?', $this->intLanguageId);
                         $intNumOfEffectedRows = $this->objModelFile->getFileTitleTable()->update($arrData, $strWhere);
                         if ($intNumOfEffectedRows == 0) {
                             $this->saveFileData(array($intEditFileId));
                         } else {
                             /**
                              * update is language specific file
                              */
                             $intFilePreviewId = 0;
                             if (array_key_exists('documentpic', $this->arrFileDatas)) {
                                 $intFilePreviewId = trim($this->arrFileDatas['documentpic'], '[]');
                                 //str_replace('[', '', str_replace(']', '', $this->arrFileDatas['documentpic'])); //FIXME: Make a single-select media-field
                             }
                             $intFileIsLanguageSpecific = (int) isset($this->arrFileDatas['FileIsLanguageSpecific' . $intEditFileId]) ? $this->arrFileDatas['FileIsLanguageSpecific' . $intEditFileId] : 0;
                             $intFileDestinationId = (int) isset($this->arrFileDatas['FileDestinationId' . $intEditFileId]) ? $this->arrFileDatas['FileDestinationId' . $intEditFileId] : 0;
                             $intFileGroupId = (int) isset($this->arrFileDatas['FileGroupId' . $intEditFileId]) ? $this->arrFileDatas['FileGroupId' . $intEditFileId] : 0;
                             $strWhere = $this->objModelFile->getFileTitleTable()->getAdapter()->quoteInto('id = ?', $intEditFileId);
                             $this->objModelFile->getFileTable()->update(array('isLanguageSpecific' => $intFileIsLanguageSpecific, 'idDestination' => $intFileDestinationId, 'idGroup' => $intFileGroupId, 'idFiles' => $intFilePreviewId > 0 ? $intFilePreviewId : 'NULL'), $strWhere);
                             /**
                              * save tags (quick&dirty solution)
                              */
                             $this->arrNewTags = array();
                             $this->arrNewTags = explode(',', trim($this->arrFileDatas['FileTags' . $intEditFileId]));
                             $this->validateTags();
                             $this->objModelTags->deletTypeTags('file', $intEditFileId, 1);
                             // TODO : version
                             $this->objModelTags->addTypeTags('file', $this->arrNewTagIds, $intEditFileId, 1);
                             // TODO : version
                         }
                     } else {
                         $strWhere = $this->objModelFile->getFileTitleTable()->getAdapter()->quoteInto('idFiles = ?', $intEditFileId);
                         $strWhere .= $this->objModelFile->getFileTitleTable()->getAdapter()->quoteInto(' AND idLanguages = ?', $this->intLanguageId);
                         $this->objModelFile->getFileTitleTable()->delete($strWhere);
                     }
                 }
             }
         }
     } catch (Exception $exc) {
         $this->core->logger->err($exc);
     }
 }