/** * Called when the user creates a new file in this directory. */ public function createFile($name, $data = NULL) { $hash = md5(mt_rand() . time()); $newPath = Phprojekt::getInstance()->getConfig()->uploadPath . '/' . $hash; Default_Helpers_Upload::addFilesToUnusedFileList(array(array('md5' => $hash))); if (false === file_put_contents($newPath, $data)) { throw new Phprojekt_Exception_IOException('saving failed'); } if (!empty($this->_filemanager->files)) { $this->_filemanager->files .= '||'; } $this->_filemanager->files .= $hash . '|' . $name; $this->_filemanager->save(); Default_Helpers_Upload::removeFilesFromUnusedFileList(array(array('md5' => $hash))); }
/** * Updated the database table for the unused files. * Delete files that are no longe used by the item. * * @return void */ public function trackUploadedfiles() { $fields = $this->getInformation()->getInfo(Phprojekt_ModelInformation_Default::ORDERING_FORM, Phprojekt_DatabaseManager::COLUMN_NAME); foreach ($fields as $field) { $field = Phprojekt_ActiveRecord_Abstract::convertVarFromSql($field); if ($this->getInformation()->getType($field) == 'upload' && !empty($this->_storedId)) { $files = Default_Helpers_Upload::parseModelValues($this->_data[$field]); $originalFiles = Default_Helpers_Upload::parseModelValues($this->_originalData[$field]); // remove files that are in the old filelist, but not in the new one $toBeDeleted = array(); foreach ($originalFiles as $ofile) { $toBeDeleted[$ofile['md5']] = $ofile; } foreach ($files as $file) { if (array_key_exists($file['md5'], $toBeDeleted)) { unset($toBeDeleted[$file['md5']]); } } $deleteList = array(); foreach ($toBeDeleted as $hash => $file) { $deleteList[] = $file; } Default_Helpers_Upload::deleteFiles($deleteList); Default_Helpers_Upload::removeFilesFromUnusedFileList($files); } } }