protected function doClean($values) { $my_id = 0; if ($values['parent_id']) { $parent = lyMediaFolderTable::getInstance()->find($values['parent_id']); } else { $my_id = $values['id']; $object = lyMediaFolderTable::getInstance()->find($my_id); $parent = $object->getNode()->getParent(); } $fs = new lyMediaFileSystem(); if (!$fs->is_dir($parent->getRelativePath()) || !$fs->is_writable($parent->getRelativePath())) { throw new sfValidatorError($this, 'parent_unwritable', array('name' => $values['name'], 'parent' => $parent->getName())); } if (!$parent || !$parent->getNode()->isValidNode()) { throw new sfValidatorError($this, 'invalid'); } if ($children = $parent->getNode()->getChildren()) { foreach ($children as $c) { if ($values['name'] == $c->getName() && $c->getId() != $my_id) { throw new sfValidatorError($this, 'folder_exists', array('name' => $values['name'], 'parent' => $parent->getName())); } } } return $values; }
protected function doClean($values) { $folder = lyMediaFolderTable::getInstance()->find($values['folder_id']); if ($folder === false) { throw new sfValidatorError($this, 'invalid'); } $fs = new lyMediaFileSystem(); if (!$fs->is_dir($folder->getRelativePath()) || !$fs->is_writable($folder->getRelativePath())) { throw new sfValidatorError($this, 'folder_unwritable', array('folder' => $folder->getRelativePath())); } $my_id = empty($values['id']) ? 0 : $values['id']; $assets = $folder->getAssets(); foreach ($assets as $a) { if ($values['filename'] == $a->getFilename() && $a->getId() != $my_id) { throw new sfValidatorError($this, 'file_exists', array('name' => $values['filename'], 'folder' => $folder->getName())); } } return $values; }
/** * preDelete. * * @param Doctrine_Event $event. */ public function preDelete($event) { $record = $event->getInvoker(); $fs = new lyMediaFileSystem(); if ($fs->is_writable($record->getNode()->getParent()->getRelativePath())) { //Delete folder contents foreach ($record->getAssets() as $a) { $a->delete(); } } $fs->rmdir($record->getRelativePath()); }