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); }
/** * 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); }
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; }
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"; } }
/** * 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; }
/** * 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.'); } }
<?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; }
/** * 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('&', '&', 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); }
/** * 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()); }
/** * 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; }
$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();