/** * Create a new content. * * Here pre and post insert event are fired * * @param $defaultFolderId * @throws \Exception */ public function create($defaultFolderId) { $con = Propel::getWriteConnection(ContentTableMap::DATABASE_NAME); $con->beginTransaction(); $this->dispatchEvent(TheliaEvents::BEFORE_CREATECONTENT, new ContentEvent($this)); try { $this->save($con); $cf = new ContentFolder(); $cf->setContentId($this->getId())->setFolderId($defaultFolderId)->setDefaultFolder(1)->save($con); $this->setPosition($this->getNextPosition())->save($con); $con->commit(); $this->dispatchEvent(TheliaEvents::AFTER_CREATECONTENT, new ContentEvent($this)); } catch (\Exception $ex) { $con->rollback(); throw $ex; } }
/** * @param Folder $folder The folder object to add. */ protected function doAddFolder($folder) { $contentFolder = new ChildContentFolder(); $contentFolder->setFolder($folder); $this->addContentFolder($contentFolder); // set the back reference to this object directly as using provided method either results // in endless loop or in multiple relations if (!$folder->getContents()->contains($this)) { $foreignCollection = $folder->getContents(); $foreignCollection[] = $this; } }
/** * @depends testAddFolderToContent */ public function testRemoveFolder(ContentFolder $association) { $event = new ContentRemoveFolderEvent($association->getContent(), $association->getFolder()->getId()); $event->setDispatcher($this->dispatcher); $contentAction = new Content($this->getContainer()); $contentAction->removeFolder($event); $testAssociation = ContentFolderQuery::create()->filterByContent($association->getContent())->filterByFolder($association->getFolder())->findOne(); $this->assertNull($testAssociation); }
/** * * associate a folder to a content if the association already does not exists * * @param ContentAddFolderEvent $event */ public function addFolder(ContentAddFolderEvent $event) { if (ContentFolderQuery::create()->filterByContent($event->getContent())->filterByFolderId($event->getFolderId())->count() <= 0) { $contentFolder = new ContentFolder(); $contentFolder->setFolderId($event->getFolderId())->setContent($event->getContent())->setDefaultFolder(false)->save(); } }
/** * 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 you may need to explicitly add objects * to the cache in order to ensure that the same objects are always returned by find*() * and findPk*() calls. * * @param \Thelia\Model\ContentFolder $obj A \Thelia\Model\ContentFolder object. * @param string $key (optional) key to use for instance map (for performance boost if key was already calculated externally). */ public static function addInstanceToPool($obj, $key = null) { if (Propel::isInstancePoolingEnabled()) { if (null === $key) { $key = serialize(array((string) $obj->getContentId(), (string) $obj->getFolderId())); } // if key === null self::$instances[$key] = $obj; } }
/** * Filter the query by a related \Thelia\Model\ContentFolder object * * @param \Thelia\Model\ContentFolder|ObjectCollection $contentFolder the related object to use as filter * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL * * @return ChildFolderQuery The current query, for fluid interface */ public function filterByContentFolder($contentFolder, $comparison = null) { if ($contentFolder instanceof \Thelia\Model\ContentFolder) { return $this->addUsingAlias(FolderTableMap::ID, $contentFolder->getFolderId(), $comparison); } elseif ($contentFolder instanceof ObjectCollection) { return $this->useContentFolderQuery()->filterByPrimaryKeys($contentFolder->getPrimaryKeys())->endUse(); } else { throw new PropelException('filterByContentFolder() only accepts arguments of type \\Thelia\\Model\\ContentFolder or Collection'); } }
/** * Exclude object from result * * @param ChildContentFolder $contentFolder Object to remove from the list of results * * @return ChildContentFolderQuery The current query, for fluid interface */ public function prune($contentFolder = null) { if ($contentFolder) { $this->addCond('pruneCond0', $this->getAliasedColName(ContentFolderTableMap::CONTENT_ID), $contentFolder->getContentId(), Criteria::NOT_EQUAL); $this->addCond('pruneCond1', $this->getAliasedColName(ContentFolderTableMap::FOLDER_ID), $contentFolder->getFolderId(), Criteria::NOT_EQUAL); $this->combine(array('pruneCond0', 'pruneCond1'), Criteria::LOGICAL_OR); } return $this; }