/**
  * @see sfTask
  */
 protected function execute($arguments = array(), $options = array())
 {
     $databaseManager = new sfDatabaseManager($this->configuration);
     if (sfAssetFolderPeer::retrieveRoot()) {
         throw new sfException('The asset library already has a root');
     }
     $this->logSection('asset', sprintf('Creating root node at %s...', sfConfig::get('app_sfAssetsLibrary_upload_dir', 'media')), null, 'COMMENT');
     $folder = new sfAssetFolder();
     $folder->setName(sfConfig::get('app_sfAssetsLibrary_upload_dir', 'media'));
     sfAssetFolderPeer::createRoot($folder);
     $folder->save();
     $this->logSection('asset', 'Root Node Created', null, 'INFO');
 }
Пример #2
0
 /**
  * Recursively creates parent folders 
  *
  * @param string $path
  * @return sfAssetFolder
  */
 public static function createFromPath($path)
 {
     $path = self::cleanPath($path);
     list($parent_path, $name) = sfAssetsLibraryTools::splitPath($path);
     if (!($parent_folder = self::retrieveByPath($parent_path))) {
         $parent_folder = self::createFromPath($parent_path);
         $parent_folder->save();
     }
     $folder = new sfAssetFolder();
     $folder->setName($name);
     $folder->setRelativePath($path);
     $folder->insertAsLastChildOf($parent_folder);
     $folder->save();
     return $folder;
 }
Пример #3
0
 /**
  * Change asset directory and/or name
  *
  * @param sfAssetFolder $newFolder
  * @param string        $newFilename
  */
 public function move(sfAssetFolder $newFolder, $newFilename = null)
 {
     if (sfAssetPeer::exists($newFolder->getId(), $newFilename ? $newFilename : $this->getFilename())) {
         throw new sfAssetException('The target folder "%folder%" already contains an asset named "%name%". The asset has not been moved.', array('%folder%' => $newFolder->getName(), '%name%' => $newFilename ? $newFilename : $this->getFilename()));
     }
     $oldFilepaths = $this->getFilepaths();
     if ($newFilename) {
         if (sfAssetsLibraryTools::sanitizeName($newFilename) != $newFilename) {
             throw new sfAssetException('The filename "%name%" contains incorrect characters. The asset has not be altered.', array('%name%' => $newFilename));
         }
         $this->setFilename($newFilename);
     }
     $this->setFolderId($newFolder->getId());
     $success = true;
     foreach ($oldFilepaths as $type => $filepath) {
         $success = rename($filepath, $this->getFullPath($type)) && $success;
     }
     if (!$success) {
         throw new sfAssetException('Some or all of the file operations failed. It is possible that the moved asset or its thumbnails are missing.');
     }
 }
 $t->isa_ok($sfAsset->getFolder(), 'sfAssetFolder', 'sfAsset can have root as folder');
 $sfAsset->setFilename('filename.jpg');
 $t->diag('sfAsset::getRelativePath()');
 $t->is($sfAsset->getRelativePath(), sfConfig::get('app_sfAssetsLibrary_upload_dir') . DIRECTORY_SEPARATOR . 'filename.jpg', 'getRelativePath() returns the path relative to the media directory');
 $t->diag('sfAsset::getFullPath()');
 $t->is($sfAsset->getFullPath(), sfConfig::get('sf_web_dir') . DIRECTORY_SEPARATOR . sfConfig::get('app_sfAssetsLibrary_upload_dir') . DIRECTORY_SEPARATOR . 'filename.jpg', 'getFullPath() returns the complete asset path on the disk');
 $t->is($sfAsset->getFullPath('small'), sfConfig::get('sf_web_dir') . DIRECTORY_SEPARATOR . sfConfig::get('app_sfAssetsLibrary_upload_dir') . DIRECTORY_SEPARATOR . 'thumbnail' . DIRECTORY_SEPARATOR . 'small_filename.jpg', 'getFullPath(\'small\') returns the complete small thumbnail path on the disk');
 $t->is($sfAsset->getFullPath('large'), sfConfig::get('sf_web_dir') . DIRECTORY_SEPARATOR . sfConfig::get('app_sfAssetsLibrary_upload_dir') . DIRECTORY_SEPARATOR . 'thumbnail' . DIRECTORY_SEPARATOR . 'large_filename.jpg', 'getFullPath(\'large\') returns the complete large thumbnail path on the disk');
 $t->diag('sfAsset::getUrl()');
 $t->is($sfAsset->getUrl(), '/' . sfConfig::get('app_sfAssetsLibrary_upload_dir') . DIRECTORY_SEPARATOR . 'filename.jpg', 'getUrl() returns the asset URL');
 $t->is($sfAsset->getUrl('small'), '/' . sfConfig::get('app_sfAssetsLibrary_upload_dir') . '/thumbnail/small_filename.jpg', 'getUrl(\'small\') returns the small thumbnail url');
 $t->is($sfAsset->getUrl('large'), '/' . sfConfig::get('app_sfAssetsLibrary_upload_dir') . '/thumbnail/large_filename.jpg', 'getUrl(\'large\') returns the large thumbnail url');
 $t->diag('sfAsset::create()');
 $assets_path = dirname(__FILE__) . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'assets' . DIRECTORY_SEPARATOR;
 $test_asset = $assets_path . 'raikkonen.jpg';
 $folder1 = new sfAssetFolder();
 $folder1->getNode()->insertAsFirstChildOf($root);
 $folder1->setName('Test_Directory');
 $folder1->save();
 $asset1 = new sfAsset();
 $asset1->setFolder($folder1);
 $asset1->create($test_asset, false);
 $asset_file_size = (int) (filesize($test_asset) / 1024);
 $t->is($asset1->getFilename(), 'raikkonen.jpg', 'create() sets the object filename according to the given asset');
 $t->is($asset1->getFilesize(), 18, 'create() sets the object filesize according to the given asset');
 $t->ok($asset1->isImage(), 'create() sets the object type according to the given asset');
 $t->is($asset1->getUrl(), $folder1->getUrl() . '/' . $asset1->getFilename(), 'create() sets the object url according to the given asset and folder object');
 $t->ok(is_file($asset1->getFullPath()), 'create() physically copies asset');
 $t->ok(is_file($asset1->getFullPath('large')), 'create() physically creates thumbnail');
 $t->diag('sfAsset::move()');
 $old_path = $asset1->getFullPath();
 /**
  * get a criteria for all folders except one
  * @param  sfAssetFolder $folder folder to exclude
  * @return Criteria
  */
 public static function getAllPathsButOneCriteria($folder)
 {
     $c = new Criteria();
     $c->add(self::ID, $folder->getId(), Criteria::NOT_EQUAL);
     return $c;
 }
 /**
  * Move under a new parent
  *
  * @param sfAssetFolder $new_parent
  */
 public function move(sfAssetFolder $new_parent)
 {
     // controls
     if ($this->getNode()->isRoot()) {
         throw new sfAssetException('The root folder cannot be moved');
     } else {
         if ($new_parent->hasSubFolder($this->getName())) {
             throw new sfAssetException('The target folder "%folder%" already contains a folder named "%name%". The folder has not been moved.', array('%folder%' => $new_parent, '%name%' => $this->getName()));
         } else {
             if ($new_parent->getNode()->isDescendantOf($this)) {
                 throw new sfAssetException('The target folder cannot be a subfolder of moved folder. The folder has not been moved.');
             } else {
                 if ($this->getId() == $new_parent->getId()) {
                     return;
                 }
             }
         }
     }
     $old_path = $this->getFullPath();
     $this->getNode()->moveAsLastChildOf($new_parent);
     $this->save();
     $descendants = $this->getNode()->getChildren();
     $descendants = $descendants ? $descendants : array();
     // move its assets
     self::movePhysically($old_path, $this->getFullPath());
     foreach ($descendants as $descendant) {
         // Update relative path
         $descendant->save();
     }
     // else: nothing to do
 }
<?php

$app = 'frontend';
include dirname(__FILE__) . '/../../../../test/bootstrap/functional.php';
include $configuration->getSymfonyLibDir() . '/vendor/lime/lime.php';
$databaseManager = new sfDatabaseManager($configuration);
$con = Doctrine::getConnectionByTableName('sfAsset');
$con->beginTransaction();
try {
    // prepare test environment
    sfAssetFolderTable::getInstance()->createQuery()->delete()->execute();
    sfAssetTable::getInstance()->createQuery()->delete()->execute();
    sfConfig::set('app_sfAssetsLibrary_upload_dir', 'mediaTEST');
    $f = new sfAssetFolder();
    $f->setName(sfConfig::get('app_sfAssetsLibrary_upload_dir'));
    $tree = sfAssetFolderTable::getInstance()->getTree();
    $tree->createRoot($f);
    $f->save();
    $t = new lime_test(5, array('options' => new lime_output_color(), 'error_reporting' => true));
    $t->diag('sfAssetPeer');
    $t->is(sfAssetTable::getInstance()->retrieveFromUrl(sfAssetFolderTable::getInstance()->getRoot()->getRelativePath() . '/filename.jpg'), null, 'sfAssetPeer::retrieveFromUrl() returns null when a URL is not found');
    $t->is(sfAssetTable::getInstance()->exists(sfAssetFolderTable::getInstance()->getRoot()->getId(), 'filename.jpg'), false, 'sfAssetPeer::exists() returns false when an asset is not found');
    $sfAsset = new sfAsset();
    $sfAsset->setFolder(sfAssetFolderTable::getInstance()->getRoot());
    $sfAsset->setFilename('filename.jpg');
    $sfAsset->save();
    $t->is(sfAssetTable::getInstance()->retrieveFromUrl(sfAssetFolderTable::getInstance()->getRoot()->getRelativePath() . '/filename.jpg')->getId(), $sfAsset->getId(), 'sfAssetPeer::retrieveFromUrl() finds an asset from its URL');
    $t->is(sfAssetTable::getInstance()->retrieveFromUrl($sfAsset->getUrl())->getId(), $sfAsset->getId(), 'sfAssetPeer::retrieveFromUrl() finds an asset from the result of `getUrl()`');
    $t->is(sfAssetTable::getInstance()->exists(sfAssetFolderTable::getInstance()->getRoot()->getId(), 'filename.jpg'), true, 'sfAssetPeer::exists() returns true when an asset is found');
} catch (Exception $e) {
    echo $e->getMessage();
 /**
  * get a criteria for all folders except one
  * @param  sfAssetFolder $folder folder to exclude
  * @return Doctrine_Query
  */
 public function getAllPathsButOneCriteria($folder)
 {
     $query = $this->createQuery()->where('id != ?', $folder->getId());
     return $query;
 }
Пример #9
0
 public function executeCreateFolder()
 {
     if ($this->getRequest()->getMethod() == sfRequest::POST) {
         // Handle the form submission
         $parentFolder = sfAssetFolderPeer::retrieveByPath($this->getRequestParameter('parent_folder'));
         $this->forward404Unless($parentFolder);
         $folder = new sfAssetFolder();
         $folder->setName($this->getRequestParameter('name'));
         $folder->insertAsLastChildOf($this->parentFolder);
         $folder->save();
         $this->redirectToPath('sfAsset/list?dir=' . $folder->getRelativePath());
     } else {
         // Display the form
         return sfView::SUCCESS;
     }
 }
 /**
  * create folder
  * @param sfWebRequest $request
  */
 public function executeCreateFolder(sfWebRequest $request)
 {
     $this->form = new sfAssetFolderForm();
     $this->form->bind($request->getParameter($this->form->getName()));
     if ($this->form->isValid()) {
         $parentFolder = sfAssetFolderPeer::retrieveByPK($this->form->getValue('parent_folder'));
         $this->forward404Unless($parentFolder, 'parent folder not found');
         $folder = new sfAssetFolder();
         $folder->setName($this->form->getValue('name'));
         $folder->insertAsLastChildOf($parentFolder);
         $folder->save();
         $this->redirectToPath('@sf_asset_library_dir?dir=' . $folder->getRelativePath());
     }
 }
Пример #11
0
 /**
  * Adds an object to the instance pool.
  *
  * Propel keeps cached copies of objects in an instance pool when they are retrieved
  * from the database.  In some cases -- especially when you override doSelect*()
  * methods in your stub classes -- you may need to explicitly add objects
  * to the cache in order to ensure that the same objects are always returned by doSelect*()
  * and retrieveByPK*() calls.
  *
  * @param      sfAssetFolder $value A sfAssetFolder object.
  * @param      string $key (optional) key to use for instance map (for performance boost if key was already calculated externally).
  */
 public static function addInstanceToPool(sfAssetFolder $obj, $key = null)
 {
     if (Propel::isInstancePoolingEnabled()) {
         if ($key === null) {
             $key = (string) $obj->getId();
         }
         // if key === null
         self::$instances[$key] = $obj;
     }
 }
Пример #12
0
 /**
  * Declares an association between this object and a sfAssetFolder object.
  *
  * @param      sfAssetFolder $v
  * @return     sfAsset The current object (for fluent API support)
  * @throws     PropelException
  */
 public function setsfAssetFolder(sfAssetFolder $v = null)
 {
     if ($v === null) {
         $this->setFolderId(NULL);
     } else {
         $this->setFolderId($v->getId());
     }
     $this->asfAssetFolder = $v;
     // Add binding for other direction of this n:n relationship.
     // If this object has already been added to the sfAssetFolder object, it will not be re-added.
     if ($v !== null) {
         $v->addsfAsset($this);
     }
     return $this;
 }
<?php

$app = 'frontend';
include dirname(__FILE__) . '/../../../../test/bootstrap/functional.php';
include $configuration->getSymfonyLibDir() . '/vendor/lime/lime.php';
$databaseManager = new sfDatabaseManager($configuration);
$con = Propel::getConnection();
$con->beginTransaction();
try {
    // prepare test environment
    sfAssetFolderPeer::doDeleteAll();
    sfAssetPeer::doDeleteAll();
    sfConfig::set('app_sfAssetsLibrary_upload_dir', 'mediaTEST');
    $f = new sfAssetFolder();
    $f->setName(sfConfig::get('app_sfAssetsLibrary_upload_dir'));
    sfAssetFolderPeer::createRoot($f);
    $f->save();
    $t = new lime_test(5, array('options' => new lime_output_color(), 'error_reporting' => true));
    $t->diag('sfAssetPeer');
    $t->is(sfAssetPeer::retrieveFromUrl(sfAssetFolderPeer::retrieveRoot()->getRelativePath() . '/filename.jpg'), null, 'sfAssetPeer::retrieveFromUrl() returns null when a URL is not found');
    $t->is(sfAssetPeer::exists(sfAssetFolderPeer::retrieveRoot()->getId(), 'filename.jpg'), false, 'sfAssetPeer::exists() returns false when an asset is not found');
    $sfAsset = new sfAsset();
    $sfAsset->setFolder(sfAssetFolderPeer::retrieveRoot());
    $sfAsset->setFilename('filename.jpg');
    $sfAsset->save($con);
    $t->is(sfAssetPeer::retrieveFromUrl(sfAssetFolderPeer::retrieveRoot()->getRelativePath() . '/filename.jpg')->getId(), $sfAsset->getId(), 'sfAssetPeer::retrieveFromUrl() finds an asset from its URL');
    $t->is(sfAssetPeer::retrieveFromUrl($sfAsset->getUrl())->getId(), $sfAsset->getId(), 'sfAssetPeer::retrieveFromUrl() finds an asset from the result of `getUrl()`');
    $t->is(sfAssetPeer::exists(sfAssetFolderPeer::retrieveRoot()->getId(), 'filename.jpg'), true, 'sfAssetPeer::exists() returns true when an asset is found');
} catch (Exception $e) {
    echo $e->getMessage();
}
<?php

$app = "frontend";
include dirname(__FILE__) . '/../../../../test/bootstrap/functional.php';
include $configuration->getSymfonyLibDir() . '/vendor/lime/lime.php';
$folderProvider = new sfAssetsFolderProvider();
$assetProvider = new sfAssetsProvider();
$databaseManager = new sfDatabaseManager($configuration);
$con = Propel::getConnection();
$con->beginTransaction();
try {
    // prepare test environment
    $folderProvider->doDeleteAll();
    $assetProvider->doDeleteAll();
    sfConfig::set('app_sfAssetsLibrary_upload_dir', 'medias');
    $f = new sfAssetFolder();
    $f->setName(sfConfig::get('app_sfAssetsLibrary_upload_dir'));
    $folderProvider->createRoot($f);
    $f->save();
    // run the test
    $t = new lime_test(13, new lime_output_color());
    $t->diag('sfAssetFolderPeer');
    $sfAssetFolder = $folderProvider->retrieveByPath(sfConfig::get('app_sfAssetsLibrary_upload_dir', 'media'));
    $t->ok($sfAssetFolder->isRoot(), 'retrieveByPath() retrieves root from app_sfAssetsLibrary_upload_dir string');
    $sfAssetFolder = $folderProvider->retrieveByPath();
    $t->ok($sfAssetFolder->isRoot(), 'retrieveByPath() retrieves root from empty string');
    $sfAssetFolder = $folderProvider->createFromPath(sfConfig::get('app_sfAssetsLibrary_upload_dir', 'media') . '/simple');
    $t->isa_ok($sfAssetFolder, 'sfAssetFolder', 'createFromPath() creates a sfAssetFolder from simple string');
    $t->isa_ok($sfAssetFolder->retrieveParent(), 'sfAssetFolder', 'createFromPath() from simple string has a parent');
    $t->ok($sfAssetFolder->retrieveParent()->isRoot(), 'createFromPath() creates a root child from simple string');
    $sfAssetFolder2 = $folderProvider->createFromPath(sfConfig::get('app_sfAssetsLibrary_upload_dir', 'media') . '/simple/subfolder');
 $sfAssetFolder = new sfAssetFolder();
 $sfAssetFolder->setName('Test_Directory');
 $sfAssetFolder->insertAsFirstChildOf($root);
 $sfAssetFolder->save();
 $t->is($sfAssetFolder->getName(), 'Test_Directory', 'getName() returns the folder name');
 $t->diag('sfAssetFolder::getRelativePath()');
 $t->is($sfAssetFolder->getRelativePath(), $root->getRelativePath() . '/' . $sfAssetFolder->getName(), 'getRelativePath() returns the folder relative path, including its own name');
 # $sfAssetFolder2 is /root/Test_Directory/Test_Sub-directory
 $sfAssetFolder2 = new sfAssetFolder();
 $sfAssetFolder2->setName('Test_Sub-directory');
 $sfAssetFolder2->insertAsFirstChildOf($sfAssetFolder);
 $sfAssetFolder2->save();
 $t->is($sfAssetFolder2->getRelativePath(), $sfAssetFolder->getRelativePath() . '/' . $sfAssetFolder2->getName(), 'getRelativePath() returns the folder relative path, including its parent name');
 $id2 = $sfAssetFolder2->getId();
 # $sfAssetFolder3 is /root/Test_Directory/Test_Sub-directory/Test_Sub-sub-directory
 $sfAssetFolder3 = new sfAssetFolder();
 $sfAssetFolder3->insertAsFirstChildOf($sfAssetFolder2);
 $sfAssetFolder3->setName('Test_Sub-sub-directory');
 $sfAssetFolder3->save();
 $t->is($sfAssetFolder3->getRelativePath(), $sfAssetFolder2->getRelativePath() . '/' . $sfAssetFolder3->getName(), 'getRelativePath() returns the folder relative path, including its ancestors names');
 $id3 = $sfAssetFolder3->getId();
 # $sfAsset is /root/Test_Directory/Test_Sub-directory/raikkonen.jpg
 $assets_path = dirname(__FILE__) . '/../assets/';
 $test_asset = $assets_path . 'raikkonen.jpg';
 $sfAsset = new sfAsset();
 $sfAsset->setFolder($sfAssetFolder2);
 $sfAsset->create($test_asset, false);
 $sfAsset->save();
 $sf_asset_id = $sfAsset->getId();
 # $sfAsset2 is /root/Test_Directory/Test_Sub-directory/Test_Sub-sub-directory/toto
 $sfAsset2 = new sfAsset();
Пример #16
0
 $t->is($sfAssetFolder->getRelativePath(), $root->getRelativePath() . '/' . $sfAssetFolder->getName(), 'getRelativePath() is updated on save');
 $sfAssetFolder2 = new sfAssetFolder();
 $sfAssetFolder2->insertAsFirstChildOf($sfAssetFolder);
 $sfAssetFolder2->setName('Test_Sub-directory');
 $sfAssetFolder2->save();
 $t->is($sfAssetFolder2->getRelativePath(), $sfAssetFolder->getRelativePath() . '/' . $sfAssetFolder2->getName(), 'getRelativePath() is updated on save for subfolders');
 $assets_path = dirname(__FILE__) . '/../assets/';
 $test_asset = $assets_path . 'raikkonen.jpg';
 $t->ok(is_file($test_asset), 'test asset found');
 $sfAsset = new sfAsset();
 $sfAsset->setsfAssetFolder($sfAssetFolder2);
 $sfAsset->create($test_asset, false);
 $sfAsset->save();
 $t->ok(is_file($sfAsset->getFullPath()), 'asset found');
 $sf_asset_id = $sfAsset->getId();
 $sfAssetFolder3 = new sfAssetFolder();
 $sfAssetFolder3->insertAsFirstChildOf($sfAssetFolder2);
 $sfAssetFolder3->setName('Test_Sub-sub-directory');
 $sfAssetFolder3->save();
 $t->is($sfAssetFolder3->getRelativePath(), $sfAssetFolder2->getRelativePath() . '/' . $sfAssetFolder3->getName(), 'getRelativePath() is updated on save for subfolders');
 $sfAsset2 = new sfAsset();
 $sfAsset2->setsfAssetFolder($sfAssetFolder3);
 $sfAsset2->setFilename('toto');
 $sfAsset2->create($test_asset, false);
 $sfAsset2->save();
 $t->ok(is_file($sfAsset2->getFullPath()), 'asset2 found');
 $sf_asset2_id = $sfAsset2->getId();
 $id3 = $sfAssetFolder3->getId();
 $sfAssetFolder2->move($root);
 $sfAssetFolder3 = sfAssetFolderPeer::retrieveByPk($id3);
 $t->is($sfAssetFolder2->getParent()->getId(), $root->getId(), 'move() gives the correct parent');
Пример #17
0
 /**
  * Overrrides the parent synchronizeWith() method to add a fix when calling
  * insertAsLastChildOf($this->reload()) because $this->reload() doesn't return
  * $this.
  *
  * @see parent::synchronizeWith()
  */
 public function synchronizeWith($baseFolder, $verbose = true, $removeOrphanAssets = false, $removeOrphanFolders = false)
 {
     if (!is_dir($baseFolder)) {
         throw new sfAssetException(sprintf('%s is not a directory', $baseFolder));
     }
     $files = sfFinder::type('file')->maxdepth(0)->ignore_version_control()->in($baseFolder);
     $assets = $this->getAssetsWithFilenames();
     foreach ($files as $file) {
         if (!array_key_exists(basename($file), $assets)) {
             // File exists, asset does not exist: create asset
             $sfAsset = new sfAsset();
             $sfAsset->setFolderId($this->getId());
             $sfAsset->create($file, false);
             $sfAsset->save();
             if ($verbose) {
                 sfAssetsLibraryTools::log(sprintf("Importing file %s", $file), 'green');
             }
         } else {
             // File exists, asset exists: do nothing
             unset($assets[basename($file)]);
         }
     }
     foreach ($assets as $name => $asset) {
         if ($removeOrphanAssets) {
             // File does not exist, asset exists: delete asset
             $asset->delete();
             if ($verbose) {
                 sfAssetsLibraryTools::log(sprintf("Deleting asset %s", $asset->getUrl()), 'yellow');
             }
         } else {
             if ($verbose) {
                 sfAssetsLibraryTools::log(sprintf("Warning: No file for asset %s", $asset->getUrl()), 'red');
             }
         }
     }
     $dirs = sfFinder::type('dir')->maxdepth(0)->discard(sfConfig::get('app_sfAssetsLibrary_thumbnail_dir', 'thumbnail'))->ignore_version_control()->in($baseFolder);
     $folders = $this->getSubfoldersWithFolderNames();
     foreach ($dirs as $dir) {
         list(, $name) = sfAssetsLibraryTools::splitPath($dir);
         if (!array_key_exists($name, $folders)) {
             $this->reload();
             // dir exists in filesystem, not in database: create folder in database
             $sfAssetFolder = new sfAssetFolder();
             $sfAssetFolder->insertAsLastChildOf($this);
             $sfAssetFolder->setName($name);
             $sfAssetFolder->save();
             if ($verbose) {
                 sfAssetsLibraryTools::log(sprintf("Importing directory %s", $dir), 'green');
             }
         } else {
             // dir exists in filesystem and database: look inside
             $sfAssetFolder = $folders[$name];
             unset($folders[$name]);
         }
         $sfAssetFolder->synchronizeWith($dir, $verbose, $removeOrphanAssets, $removeOrphanFolders);
     }
     foreach ($folders as $name => $folder) {
         if ($removeOrphanFolders) {
             $folder->delete(null, true);
             if ($verbose) {
                 sfAssetsLibraryTools::log(sprintf("Deleting folder %s", $folder->getRelativePath()), 'yellow');
             }
         } else {
             if ($verbose) {
                 sfAssetsLibraryTools::log(sprintf("Warning: No directory for folder %s", $folder->getRelativePath()), 'red');
             }
         }
     }
 }
 /**
  * process search
  * @param  array    $params
  * @param  string   $sort
  * @return Doctrine_Query
  */
 protected function search(array $params, $sort = 'name')
 {
     $query = $this->createQuery('a');
     if (isset($params['folder_id']) && $params['folder_id'] !== '') {
         if (null != ($folder = sfAssetFolderTable::getInstance()->find($params['folder_id']))) {
             if (false) {
                 $folder = new sfAssetFolder();
             }
             $query->leftJoin('a.Folder f');
             $query->where('f.lft >= ?', $folder->getNode()->getLeftValue());
             $query->andWhere('f.rgt <= ?', $folder->getNode()->getRightValue());
         }
     }
     //    if (isset($params['filename']['is_empty']))
     //    {
     //      $query->andWhere('filename = \'\' or filename is null', null);
     ////      $criterion = $c->getNewCriterion(self::FILENAME, '');
     ////      $criterion->addOr($c->getNewCriterion(self::FILENAME, null, Criteria::ISNULL));
     ////      $c->add($criterion);
     //    }
     //    else
     if (isset($params['filename']['text']) && strlen($params['filename']['text'])) {
         $query->andWhere('filename like ?', '%' . trim($params['filename']['text'], '*%') . '%');
     }
     if (isset($params['author']['is_empty'])) {
         $query->andWhere('author = \'\' or author is null');
     } elseif (isset($params['author']['text']) && strlen($params['author']['text'])) {
         $query->andWhere('author like ?', '%' . trim($params['author']['text'], '*%') . '%');
     }
     if (isset($params['copyright']['is_empty'])) {
         $query->andWhere('copyright = \'\' or copyright is null');
     } elseif (isset($params['copyright']['text']) && strlen($params['copyright']['text'])) {
         $query->andWhere('copyright like ?', '%' . trim($params['copyright']['text'], '*%') . '%');
     }
     if (isset($params['created_at'])) {
         // TODO query
         //      if (isset($params['created_at']['from']) && $params['created_at']['from'] !== array())  // TODO check this
         //      {
         //        $criterion = $c->getNewCriterion(self::CREATED_AT, $params['created_at']['from'], Criteria::GREATER_EQUAL);
         //      }
         //      if (isset($params['created_at']['to']) && $params['created_at']['to'] !== array())  // TODO check this
         //      {
         //        if (isset($criterion))
         //        {
         //          $criterion->addAnd($c->getNewCriterion(self::CREATED_AT, $params['created_at']['to'], Criteria::LESS_EQUAL));
         //        }
         //        else
         //        {
         //          $criterion = $c->getNewCriterion(self::CREATED_AT, $params['created_at']['to'], Criteria::LESS_EQUAL);
         //        }
         //      }
         //      if (isset($criterion))
         //      {
         //        $c->add($criterion);
         //      }
     }
     if (isset($params['description']['is_empty'])) {
         $query->andWhere('description = \'\' or description is null');
     } else {
         if (isset($params['description']) && $params['description'] !== '') {
             $query->andWhere('description like ?', '%' . trim($params['description']['text'], '*%') . '%');
         }
     }
     switch ($sort) {
         case 'date':
             $query->orderBy('created_at DESC');
             break;
         default:
             $query->orderBy('filename ASC');
     }
     return $query;
 }