protected function execute($arguments = array(), $options = array())
 {
     $databaseManager = new sfDatabaseManager($this->configuration);
     if (sfAssetFolderTable::getRoot()) {
         throw new sfCommandException('The asset library already has a root');
     }
     $this->logSection('sfAsset', sprintf("Creating root node at %s...", sfConfig::get('app_sfDoctrineAssetsLibrary_upload_dir', 'media')));
     sfAssetFolderTable::createRoot();
     $this->logSection('sfAsset', "Root Node Created");
 }
 protected function execute($arguments = array(), $options = array())
 {
     $databaseManager = new sfDatabaseManager($this->configuration);
     $this->logSection('sfAsset', sprintf("Comparing files from %s with assets stored in the database...", $arguments['dirname']));
     $rootFolder = sfAssetFolderTable::getRoot();
     if (!$rootFolder instanceof sfAssetFolder) {
         throw new sfException('no root node defined !');
     }
     try {
         $rootFolder->synchronizeWith($arguments['dirname'], $options['verbose'], $options['removeOrphanAssets'], $options['removeOrphanFolders']);
     } catch (sfAssetException $e) {
         throw new sfException(strtr($e->getMessage(), $e->getMessageParams()));
     }
     $this->logSection('sfAsset', "Synchronization complete");
 }
$configuration = ProjectConfiguration::getApplicationConfiguration('frontend', 'test', true);
sfContext::createInstance($configuration);
include $configuration->getSymfonyLibDir() . '/vendor/lime/lime.php';
sfContext::createInstance($configuration);
Doctrine_Manager::getInstance();
$browser = new sfTestBrowser();
$browser->initialize();
$t = $browser->test();
$manager = new sfDatabaseManager($configuration);
$con = $manager->getDatabase('doctrine')->getConnection();
$doctrine_conn = Doctrine_Manager::getInstance()->getConnection('doctrine');
$doctrine_conn->beginTransaction();
try {
    // run the test
    $t->diag('sfAssetFolder');
    $root = sfAssetFolderTable::getRoot();
    $t->isa_ok($root, 'sfAssetFolder', 'root folder exists');
    $sfAssetFolder = new sfAssetFolder();
    $sfAssetFolder->setName('Test_Directory');
    $sfAssetFolder->getNode()->insertAsFirstChildOf($root);
    $sfAssetFolder->save();
    $t->is($sfAssetFolder->getRelativePath(), $root->getRelativePath() . '/' . $sfAssetFolder->getName(), 'getRelativePath() is updated on save');
    $sfAssetFolder2 = new sfAssetFolder();
    $sfAssetFolder2->setName('Test_Sub-directory');
    $sfAssetFolder2->getNode()->insertAsFirstChildOf($sfAssetFolder);
    $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 = new sfAsset();
 $sfAsset->setsfAssetFolder(sfAssetFolderTable::getRoot());
 $t->isa_ok($sfAsset->getsfAssetFolder(), 'sfAssetFolder', 'sfAsset can have root as folder');
 $sfAsset->setFilename('filename.jpg');
 $t->is($sfAsset->getRelativePath(), sfConfig::get('app_sfDoctrineAssetsLibrary_upload_dir', 'media') . DIRECTORY_SEPARATOR . 'filename.jpg', 'getRelativePath() gives correct result');
 sfConfig::set('sf_web_dir', '/tmp');
 sfConfig::set('app_sfDoctrineAssetsLibrary_upload_dir', 'media');
 $t->is($sfAsset->getFullPath(), sfConfig::get('sf_web_dir') . DIRECTORY_SEPARATOR . sfConfig::get('app_sfDoctrineAssetsLibrary_upload_dir', 'media') . DIRECTORY_SEPARATOR . 'filename.jpg', 'getFullPath() gives complete path');
 $t->is($sfAsset->getFullPath('large'), sfConfig::get('sf_web_dir') . DIRECTORY_SEPARATOR . sfConfig::get('app_sfDoctrineAssetsLibrary_upload_dir', 'media') . DIRECTORY_SEPARATOR . 'thumbnail/large_filename.jpg', 'getFullPath() gives correct thumbnail path');
 $t->is($sfAsset->getUrl(), DIRECTORY_SEPARATOR . sfConfig::get('app_sfDoctrineAssetsLibrary_upload_dir', 'media') . DIRECTORY_SEPARATOR . 'filename.jpg', 'getUrl() gives correct url');
 $t->is($sfAsset->getUrl('small'), DIRECTORY_SEPARATOR . sfConfig::get('app_sfDoctrineAssetsLibrary_upload_dir', 'media') . DIRECTORY_SEPARATOR . 'thumbnail/small_filename.jpg', 'getUrl() gives correct thumbnail url');
 $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(sfAssetFolderTable::getRoot());
 $sfAsset->createAsset($test_asset, false);
 $t->is($sfAsset->getFilename(), 'raikkonen.jpg', 'create() gives correct filename');
 $t->is((int) $sfAsset->getFilesize(), 18, 'create() gives correct size');
 $t->ok($sfAsset->isImage(), 'create() gives correct type');
 $t->ok(is_file($sfAsset->getFullPath()), 'create() physically copies asset');
 if ($sfAsset->supportsThumbnails()) {
     $t->ok(is_file($sfAsset->getFullPath('large')), 'create() physically creates thumbnail');
 } else {
     $t->diag('please activate thumbnails support');
 }
 $old_path = $sfAsset->getFullPath();
 $old_thumb_path = $sfAsset->getFullPath('large');
 $sfAsset->save($doctrine_conn);
 $sfAsset->setFilename('raikkonen2.jpg');
 $sfAsset->save($doctrine_conn);