/** * this method returns a Propel ModelCriteria * * @return \Propel\Runtime\ActiveQuery\ModelCriteria */ public function buildModelCriteria() { $search = ViewQuery::create(); if (null !== ($id = $this->getId())) { $search->filterById($id, Criteria::IN); } if (null !== ($view = $this->getView())) { $search->filterByView($view, Criteria::IN); } if (null !== ($source = $this->getSource())) { $search->filterBySource($source, Criteria::IN); } if (null !== ($source_id = $this->getSourceId())) { $search->filterBySourceId($source_id, Criteria::IN); } return $search; }
/** * Removes this object from datastore and sets delete attribute. * * @param ConnectionInterface $con * @return void * @throws PropelException * @see View::setDeleted() * @see View::isDeleted() */ public function delete(ConnectionInterface $con = null) { if ($this->isDeleted()) { throw new PropelException("This object has already been deleted."); } if ($con === null) { $con = Propel::getServiceContainer()->getWriteConnection(ViewTableMap::DATABASE_NAME); } $con->beginTransaction(); try { $deleteQuery = ChildViewQuery::create()->filterByPrimaryKey($this->getPrimaryKey()); $ret = $this->preDelete($con); if ($ret) { $deleteQuery->delete($con); $this->postDelete($con); $con->commit(); $this->setDeleted(true); } else { $con->commit(); } } catch (Exception $e) { $con->rollBack(); throw $e; } }
/** * Try to find the custom template in the object parent. * * @param $objectId int the object id * @param $objectType string the object type * @param $objectQuery ModelCriteria the object query to use * @param $forLeaf bool seach for a leaf (product, content) or node (category, folder) * @param $sourceView ModelCriteria the model of the found View, returned ti the caller. * * @return bool */ protected function searchInParents($objectId, $objectType, $objectQuery, $forLeaf, &$sourceView) { // For a folder or a category, search template in the object's parent instead of getting object's one. // To do this, we will ignore the first loop iteration. $ignoreIteration = !$forLeaf; while (null !== ($object = $objectQuery->findPk($objectId))) { if (!$ignoreIteration) { if (null !== ($viewObj = ViewQuery::create()->filterBySourceId($object->getId())->findOneBySource($objectType))) { $viewName = $forLeaf ? $viewObj->getChildrenView() : $viewObj->getSubtreeView(); if (!empty($viewName)) { $sourceView = $viewObj; return $viewName; } } } $ignoreIteration = false; // Not found. Try to find the view in the parent object. $objectId = $object->getParent(); } return false; }
/** * Performs an INSERT on the database, given a View or Criteria object. * * @param mixed $criteria Criteria or View object containing data that is used to create the INSERT statement. * @param ConnectionInterface $con the ConnectionInterface connection to use * @return mixed The new primary key. * @throws PropelException Any exceptions caught during processing will be * rethrown wrapped into a PropelException. */ public static function doInsert($criteria, ConnectionInterface $con = null) { if (null === $con) { $con = Propel::getServiceContainer()->getWriteConnection(ViewTableMap::DATABASE_NAME); } if ($criteria instanceof Criteria) { $criteria = clone $criteria; // rename for clarity } else { $criteria = $criteria->buildCriteria(); // build Criteria from View object } if ($criteria->containsKey(ViewTableMap::ID) && $criteria->keyContainsValue(ViewTableMap::ID)) { throw new PropelException('Cannot insert a value for auto-increment primary key (' . ViewTableMap::ID . ')'); } // Set the correct dbName $query = ViewQuery::create()->mergeWith($criteria); try { // use transaction because $criteria could contain info // for more than one table (I guess, conceivably) $con->beginTransaction(); $pk = $query->doInsert($con); $con->commit(); } catch (PropelException $e) { $con->rollBack(); throw $e; } return $pk; }