public function getParams($slot, $settings)
 {
     $asset_id = $slot->getOption('asset_id', null, $settings['culture']);
     $asset = empty($asset_id) ? new sfAsset() : sfAssetPeer::retrieveFromUrl($asset_id);
     if (!$asset) {
         $asset = new sfAsset();
     }
     return array('asset' => $asset);
 }
 public function getSlotValue($slot, $settings)
 {
     sfProjectConfiguration::getActive()->loadHelpers('sfAsset');
     $asset_id = $slot->getOption('asset_id', null, $settings['culture']);
     $asset = empty($asset_id) ? new sfAsset() : sfAssetPeer::retrieveFromUrl($asset_id);
     if (!$asset) {
         $asset = new sfAsset();
     }
     return asset_image_tag($asset, $asset->isNew() ? 'small' : 'full') . ($asset->getDescription() != '' ? content_tag('span', $asset->getDescription(), 'class=desc') : null);
 }
Example #3
0
 /**
  * Retrieves a sfAsset object from a relative URL like
  *    /medias/foo/bar.jpg
  * i.e. the kind of URL returned by $sf_asset->getUrl()
  */
 public static function retrieveFromUrl($url)
 {
     $url = sfAssetFolderPeer::cleanPath($url);
     list($relPath, $filename) = sfAssetsLibraryTools::splitPath($url);
     $c = new Criteria();
     $c->add(sfAssetPeer::FILENAME, $filename);
     $c->addJoin(sfAssetPeer::FOLDER_ID, sfAssetFolderPeer::ID);
     $c->add(sfAssetFolderPeer::RELATIVE_PATH, $relPath ? $relPath : null);
     return sfAssetPeer::doSelectOne($c);
 }
Example #4
0
 public function getAssetsWithFilenames()
 {
     $c = new Criteria();
     $c->add(sfAssetPeer::FOLDER_ID, $this->getId());
     $assets = sfAssetPeer::doSelect($c);
     $filenames = array();
     foreach ($assets as $asset) {
         $filenames[$asset->getFilename()] = $asset;
     }
     return $filenames;
 }
Example #5
0
 public function countsfAssets($criteria = null, $distinct = false, $con = null)
 {
     include_once 'plugins/sfAssetsLibraryPlugin/lib/model/om/BasesfAssetPeer.php';
     if ($criteria === null) {
         $criteria = new Criteria();
     } elseif ($criteria instanceof Criteria) {
         $criteria = clone $criteria;
     }
     $criteria->add(sfAssetPeer::FOLDER_ID, $this->getId());
     return sfAssetPeer::doCount($criteria, $distinct, $con);
 }
    #   Test_Directory/             sfAssetFolder
    #   Test_Sub-directory/         sfAssetFolder2
    #     Test_Sub-sub-directory/   sfAssetFolder3
    #       toto
    #     raikkonen.jpg
    // Bug in Propel instance pooling + NestedSets...
    sfAssetFolderPeer::clearInstancePool();
    $root = sfAssetFolderPeer::retrieveByPk($rootId);
    $sfAssetFolder2 = sfAssetFolderPeer::retrieveByPk($id2);
    $sfAssetFolder3 = sfAssetFolderPeer::retrieveByPk($id3);
    $t->is($sfAssetFolder2->retrieveParent()->getId(), $root->getId(), 'move() gives the correct parent');
    $t->is($sfAssetFolder3->retrieveParent()->retrieveParent()->getId(), $root->getId(), 'move() also moves children');
    $t->is($sfAssetFolder2->getRelativePath(), $root->getRelativePath() . '/' . $sfAssetFolder2->getName(), 'move() changes descendants relative paths');
    $t->is($sfAssetFolder3->getRelativePath(), $sfAssetFolder2->getRelativePath() . '/' . $sfAssetFolder3->getName(), 'move() changes descendants relative paths');
    sfAssetPeer::clearInstancePool();
    $sfAsset = sfAssetPeer::retrieveByPk($sf_asset_id);
    $sfAsset2 = sfAssetPeer::retrieveByPk($sf_asset2_id);
    $t->ok(is_file($sfAsset->getFullPath()), 'move() also moves assets under the moved folder');
    $t->ok(is_file($sfAsset2->getFullPath()), 'move() also moves assets under the moved folder');
} catch (Exception $e) {
    echo $e->getMessage();
}
// reset DB
$con->rollBack();
function debugTree($root)
{
    echo $root->getName(), ' ', $root->getTreeLeft(), '/', $root->getTreeRight(), "\n";
    foreach ($root->getDescendants() as $folder) {
        echo str_repeat('  ', $folder->getLevel()), $folder->getName(), ' ', $folder->getTreeLeft(), '/', $folder->getTreeRight(), "\n";
    }
}
Example #7
0
 /**
  * Returns the number of related sfAsset objects.
  *
  * @param      Criteria $criteria
  * @param      boolean $distinct
  * @param      PropelPDO $con
  * @return     int Count of related sfAsset objects.
  * @throws     PropelException
  */
 public function countsfAssets(Criteria $criteria = null, $distinct = false, PropelPDO $con = null)
 {
     if ($criteria === null) {
         $criteria = new Criteria(sfAssetFolderPeer::DATABASE_NAME);
     } else {
         $criteria = clone $criteria;
     }
     if ($distinct) {
         $criteria->setDistinct();
     }
     $count = null;
     if ($this->collsfAssets === null) {
         if ($this->isNew()) {
             $count = 0;
         } else {
             $criteria->add(sfAssetPeer::FOLDER_ID, $this->id);
             $count = sfAssetPeer::doCount($criteria, $con);
         }
     } else {
         // criteria has no effect for a new object
         if (!$this->isNew()) {
             // the following code is to determine if a new query is
             // called for.  If the criteria is the same as the last
             // one, just return count of the collection.
             $criteria->add(sfAssetPeer::FOLDER_ID, $this->id);
             if (!isset($this->lastsfAssetCriteria) || !$this->lastsfAssetCriteria->equals($criteria)) {
                 $count = sfAssetPeer::doCount($criteria, $con);
             } else {
                 $count = count($this->collsfAssets);
             }
         } else {
             $count = count($this->collsfAssets);
         }
     }
     return $count;
 }
Example #8
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.');
     }
 }
Example #9
0
<?php

$app = "frontend";
include dirname(__FILE__) . '/../../../../test/bootstrap/functional.php';
$browser = new sfTestBrowser();
$browser->initialize();
$con = Propel::getConnection();
$con->begin();
try {
    $t = new lime_test(5, new lime_output_color());
    $t->diag('sfAssetPeer');
    $con->begin();
    $t->is(sfAssetPeer::retrieveFromUrl(sfAssetFolderPeer::getRoot()->getRelativePath() . '/filename.jpg'), null, 'sfAssetPeer::retrieveFromUrl() returns null when a URL is not found');
    $t->is(sfAssetPeer::exists(sfAssetFolderPeer::getRoot()->getId(), 'filename.jpg'), false, 'sfAssetPeer::exists() returns false when an asset is not found');
    $sfAsset = new sfAsset();
    $sfAsset->setsfAssetFolder(sfAssetFolderPeer::getRoot());
    $sfAsset->setFilename('filename.jpg');
    $sfAsset->save($con);
    $t->is(sfAssetPeer::retrieveFromUrl(sfAssetFolderPeer::getRoot()->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::getRoot()->getId(), 'filename.jpg'), true, 'sfAssetPeer::exists() returns true when an asset is found');
} catch (Exception $e) {
    echo $e->getMessage();
}
// reset DB
$con->rollback();
<?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();
    // run the test
    $t = new lime_test(13, array('options' => new lime_output_color(), 'error_reporting' => true));
    $t->diag('sfAssetFolderPeer');
    $sfAssetFolder = sfAssetFolderPeer::retrieveByPath(sfConfig::get('app_sfAssetsLibrary_upload_dir', 'mediaTEST'));
    $t->ok($sfAssetFolder->isRoot(), 'retrieveByPath() retrieves root from app_sfAssetsLibrary_upload_dir string');
    $sfAssetFolder = sfAssetFolderPeer::retrieveByPath();
    $t->ok($sfAssetFolder->isRoot(), 'retrieveByPath() retrieves root from empty string');
    $sfAssetFolder = sfAssetFolderPeer::createFromPath(sfConfig::get('app_sfAssetsLibrary_upload_dir', 'mediaTEST') . DIRECTORY_SEPARATOR . '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 = sfAssetFolderPeer::createFromPath(sfConfig::get('app_sfAssetsLibrary_upload_dir', 'mediaTEST') . DIRECTORY_SEPARATOR . 'simple' . DIRECTORY_SEPARATOR . 'subfolder');
    $t->isa_ok($sfAssetFolder2, 'sfAssetFolder', 'createFromPath() creates a sfAssetFolder from simple string');
    $t->is($sfAssetFolder2->retrieveParent()->getId(), $sfAssetFolder->getId(), 'createFromPath() from simple string parent is correct');
 public function executeTinyConfigMedia()
 {
     $this->forward404Unless($this->hasRequestParameter('id'));
     $this->sf_asset = sfAssetPeer::retrieveByPk($this->getRequestParameter('id'));
     $this->forward404Unless($this->sf_asset);
     $this->setLayout($this->getContext()->getConfiguration()->getTemplateDir('sfAsset', 'popupLayout.php') . DIRECTORY_SEPARATOR . 'popupLayout');
     return sfView::SUCCESS;
 }
 /**
  * @param  sfWebRequest $request
  * @param  string
  * @return sfAsset
  */
 protected function getsfAssetOrCreate(sfWebRequest $request, $id = 'id')
 {
     if (!$request->getParameter($id)) {
         $asset = new sfAsset();
     } else {
         $asset = sfAssetPeer::retrieveByPk($request->getParameter($id));
         $this->forward404Unless($asset, 'asset not found');
     }
     return $asset;
 }
 /**
  * This is a method for emulating ON DELETE CASCADE for DBs that don't support this
  * feature (like MySQL or SQLite).
  *
  * This method is not very speedy because it must perform a query first to get
  * the implicated records and then perform the deletes by calling those Peer classes.
  *
  * This method should be used within a transaction if possible.
  *
  * @param      Criteria $criteria
  * @param      PropelPDO $con
  * @return     int The number of affected rows (if supported by underlying database driver).
  */
 protected static function doOnDeleteCascade(Criteria $criteria, PropelPDO $con)
 {
     // initialize var to track total num of affected rows
     $affectedRows = 0;
     // first find the objects that are implicated by the $criteria
     $objects = sfAssetFolderPeer::doSelect($criteria, $con);
     foreach ($objects as $obj) {
         // delete related sfAsset objects
         $criteria = new Criteria(sfAssetPeer::DATABASE_NAME);
         $criteria->add(sfAssetPeer::FOLDER_ID, $obj->getId());
         $affectedRows += sfAssetPeer::doDelete($criteria, $con);
     }
     return $affectedRows;
 }
Example #14
0
/**
 * get input form field
 * @param  string  $name
 * @param  integer $value   possible value of asset id
 * @param  array   $options
 * @return string
 */
function input_sf_asset_image_tag($name, $value = null, $options = array())
{
    $url = str_replace('&', '&amp;', url_for('@sf_asset_library_list?dir=' . sfConfig::get('app_sfAssetsLibrary_upload_dir', 'media') . '&popup=2'));
    $asset = empty($value) ? new sfAsset() : sfAssetPeer::retrieveByPK($value);
    return '<a id="sf_asset_input_image" href="#" rel="{url: \'' . $url . '\', name: \'' . $name . '\', type: \'' . $options['type'] . '\'}">' . image_tag('/sfAssetsLibraryPlugin/images/folder_open', array('alt' => 'Insert Image', 'title' => __('Insert Image', null, 'sfAsset'))) . '</a> ' . asset_image_tag($asset, 'small', array('id' => $options['id'] . '_img'));
}
 /**
  * get files of folder, sorted
  * @param  array  $dirs
  * @param  string $sortOrder
  * @return array
  */
 public function getSortedFiles(array $dirs, $sortOrder)
 {
     $c = new Criteria();
     $c->add(sfAssetPeer::FOLDER_ID, $this->getId());
     switch ($sortOrder) {
         case 'date':
             $dirs = sfAssetFolderPeer::sortByDate($dirs);
             $c->addDescendingOrderByColumn(sfAssetPeer::CREATED_AT);
             break;
         default:
             $dirs = sfAssetFolderPeer::sortByName($dirs);
             $c->addAscendingOrderByColumn(sfAssetPeer::FILENAME);
     }
     return sfAssetPeer::doSelect($c);
 }
Example #16
0
 /**
  * Populates the object using an array.
  *
  * This is particularly useful when populating an object from one of the
  * request arrays (e.g. $_POST).  This method goes through the column
  * names, checking to see whether a matching key exists in populated
  * array. If so the setByName() method is called for that column.
  *
  * You can specify the key type of the array by additionally passing one
  * of the class type constants BasePeer::TYPE_PHPNAME, BasePeer::TYPE_STUDLYPHPNAME,
  * BasePeer::TYPE_COLNAME, BasePeer::TYPE_FIELDNAME, BasePeer::TYPE_NUM.
  * The default key type is the column's phpname (e.g. 'AuthorId')
  *
  * @param      array  $arr     An array to populate the object from.
  * @param      string $keyType The type of keys the array uses.
  * @return     void
  */
 public function fromArray($arr, $keyType = BasePeer::TYPE_PHPNAME)
 {
     $keys = sfAssetPeer::getFieldNames($keyType);
     if (array_key_exists($keys[0], $arr)) {
         $this->setId($arr[$keys[0]]);
     }
     if (array_key_exists($keys[1], $arr)) {
         $this->setFolderId($arr[$keys[1]]);
     }
     if (array_key_exists($keys[2], $arr)) {
         $this->setFilename($arr[$keys[2]]);
     }
     if (array_key_exists($keys[3], $arr)) {
         $this->setDescription($arr[$keys[3]]);
     }
     if (array_key_exists($keys[4], $arr)) {
         $this->setAuthor($arr[$keys[4]]);
     }
     if (array_key_exists($keys[5], $arr)) {
         $this->setCopyright($arr[$keys[5]]);
     }
     if (array_key_exists($keys[6], $arr)) {
         $this->setType($arr[$keys[6]]);
     }
     if (array_key_exists($keys[7], $arr)) {
         $this->setFilesize($arr[$keys[7]]);
     }
     if (array_key_exists($keys[8], $arr)) {
         $this->setCreatedAt($arr[$keys[8]]);
     }
 }
 public function executeTinyConfigMedia()
 {
     $this->forward404Unless($this->hasRequestParameter('id'));
     $this->sf_asset = sfAssetPeer::retrieveByPk($this->getRequestParameter('id'));
     $this->forward404Unless($this->sf_asset);
     $this->setLayout(sfLoader::getTemplateDir('sfAsset', 'popupLayout.php') . '/popupLayout');
     return sfView::SUCCESS;
 }
 /**
  * replace asset
  * @param sfWebRequest $request
  */
 public function executeReplaceAsset(sfWebRequest $request)
 {
     $this->forward404Unless($request->isMethod(sfRequest::POST), 'method not allowed');
     $sfAsset = $request->getParameter('sf_asset');
     $asset = sfAssetPeer::retrieveByPK($sfAsset['id']);
     $this->forward404Unless($asset, 'asset not found');
     $this->form = new sfAssetReplaceForm($asset);
     $this->form->bind($request->getParameter($this->form->getName()), $request->getFiles($this->form->getName()));
     if ($this->form->isValid()) {
         // physically replace asset
         $file = $this->form->getValue('file');
         $asset->destroy();
         $asset->create($file->getTempName(), false, false);
         $this->dispatcher->notify(new sfEvent($this, 'admin.save_object', array('object' => $asset)));
         $this->getUser()->setFlash('notice', 'The file has been replaced');
     }
     return $this->redirect('@sf_asset_library_edit?id=' . $asset->getId());
 }
Example #19
0
 /**
  * Retrieve multiple objects by pkey.
  *
  * @param      array $pks List of primary keys
  * @param      PropelPDO $con the connection to use
  * @throws     PropelException Any exceptions caught during processing will be
  *		 rethrown wrapped into a PropelException.
  */
 public static function retrieveByPKs($pks, PropelPDO $con = null)
 {
     if ($con === null) {
         $con = Propel::getConnection(sfAssetPeer::DATABASE_NAME, Propel::CONNECTION_READ);
     }
     $objs = null;
     if (empty($pks)) {
         $objs = array();
     } else {
         $criteria = new Criteria(sfAssetPeer::DATABASE_NAME);
         $criteria->add(sfAssetPeer::ID, $pks, Criteria::IN);
         $objs = sfAssetPeer::doSelect($criteria, $con);
     }
     return $objs;
 }
Example #20
0
    $test_asset = $assets_path . 'raikkonen.jpg';
    $t->ok(is_file($test_asset), 'test asset found');
    $sfAsset = new sfAsset();
    $sfAsset->setsfAssetFolder(sfAssetFolderPeer::getRoot());
    $sfAsset->create($test_asset, false);
    $t->is($sfAsset->getFilename(), 'raikkonen.jpg', 'create() gives correct filename');
    $t->is($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');
    $t->ok(is_file($sfAsset->getFullPath('large')), 'create() physically creates thumbnail');
    $old_path = $sfAsset->getFullPath();
    $old_thumb_path = $sfAsset->getFullPath('large');
    $sfAsset->move(sfAssetFolderPeer::getRoot(), 'raikkonen2.jpg');
    $t->is($sfAsset->getFilename(), 'raikkonen2.jpg', 'move() changes filename');
    $t->ok(is_file($sfAsset->getFullPath()), 'move() physically moves asset');
    $t->ok(!is_file($old_path), 'move() physically moves asset');
    $t->ok(is_file($sfAsset->getFullPath('large')), 'move() physically moves thumbnail');
    $t->ok(!is_file($old_thumb_path), 'move() physically moves thumbnail');
    $old_path = $sfAsset->getFullPath();
    $old_thumb_path = $sfAsset->getFullPath('large');
    $old_id = $sfAsset->getId();
    $sfAsset->delete();
    $t->ok(!is_file($old_path), 'delete() physically removes asset');
    $t->ok(!is_file($old_thumb_path), 'delete() physically removes thumbnail');
    $null = sfAssetPeer::retrieveByPk($old_id);
    $t->ok(!$null, 'delete() removes asset from DB');
} catch (Exception $e) {
    // do nothing
}
// reset DB
$con->rollback();