/**
  * @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');
 }
/**
 *
 * @param object $task
 * @param array $args
 */
function run_sfassetlibrary_create_root($task, $args)
{
    $app = $args[0];
    $env = empty($args[1]) ? 'dev' : $args[1];
    // define constants
    define('SF_ROOT_DIR', sfConfig::get('sf_root_dir'));
    define('SF_APP', $app);
    define('SF_ENVIRONMENT', $env);
    define('SF_DEBUG', true);
    require_once SF_ROOT_DIR . DIRECTORY_SEPARATOR . 'apps' . DIRECTORY_SEPARATOR . SF_APP . DIRECTORY_SEPARATOR . 'config' . DIRECTORY_SEPARATOR . 'config.php';
    // initialize database manager
    $databaseManager = new sfDatabaseManager();
    $databaseManager->initialize();
    $con = Propel::getConnection();
    if (sfAssetFolderPeer::getRoot()) {
        throw new sfException('The asset library already has a root');
    }
    echo pakeColor::colorize(sprintf("Creating root node at %s...\n", sfConfig::get('app_sfAssetsLibrary_upload_dir', 'media')), 'COMMENT');
    sfAssetFolderPeer::createRoot();
    echo pakeColor::colorize("Root Node Created\n", 'INFO');
}
 /**
  * Sets node properties to make it a root node.
  *
  * @return     sfAssetFolder The current object (for fluent API support)
  * @throws     PropelException
  */
 public function makeRoot()
 {
     sfAssetFolderPeer::createRoot($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');
    $root = new sfAssetFolder();
    $root->setName(sfConfig::get('app_sfAssetsLibrary_upload_dir'));
    sfAssetFolderPeer::createRoot($root);
    $root->save();
    $rootId = $root->getId();
    // run the test
    $t = new lime_test(10, array('options' => new lime_output_color(), 'error_reporting' => true));
    $t->diag('sfAssetFolder::getName()');
    # $sfAssetFolder is /root/Test_Directory
    $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();
<?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();
}