public function getIndexPage() { try { $c = new Criteria(); $c->add(TagPeer::TAG_ID, 'website_page_index'); $tag = TagPeer::doSelectOne($c); $c = new Criteria(); $c->add(RelationPeer::ID1, $this->getId()); $c->addJoin(RelationPeer::ID2, TagrelationPeer::ID); $c->add(TagrelationPeer::TAG_ID, $tag->getId()); $relation = RelationPeer::doSelectOne($c); if ($relation) { $indexPage = Document::getDocumentInstance($relation->getId2()); return $indexPage; } else { return null; } } catch (Exception $e) { throw $e; } }
public function fromArray($arr, $keyType = BasePeer::TYPE_PHPNAME) { $keys = RelationPeer::getFieldNames($keyType); if (array_key_exists($keys[0], $arr)) { $this->setId1($arr[$keys[0]]); } if (array_key_exists($keys[1], $arr)) { $this->setId2($arr[$keys[1]]); } if (array_key_exists($keys[2], $arr)) { $this->setDocumentModel1($arr[$keys[2]]); } if (array_key_exists($keys[3], $arr)) { $this->setDocumentModel2($arr[$keys[3]]); } if (array_key_exists($keys[4], $arr)) { $this->setSortOrder($arr[$keys[4]]); } }
function run_generate_cache($task, $args) { ini_set("memory_limit", "2048M"); ini_set("display_errors", 1); define('SF_ROOT_DIR', sfConfig::get('sf_root_dir')); define('SF_APP', 'frontend'); define('SF_ENVIRONMENT', 'dev'); define('SF_DEBUG', false); sfConfig::set("sf_use_relations_cache", false); require_once SF_ROOT_DIR . DIRECTORY_SEPARATOR . 'apps' . DIRECTORY_SEPARATOR . SF_APP . DIRECTORY_SEPARATOR . 'config' . DIRECTORY_SEPARATOR . 'config.php'; $databaseManager = new sfDatabaseManager(); $databaseManager->initialize(); run_url_relations($task, $args); run_tags_relations($task, $args); echo_cms_title("GENERATING CACHE..."); if (!class_exists("XMLParser")) { include sfConfig::get('sf_root_dir') . "/lib/tools/XMLParser.class.php"; } if (!class_exists("FileHelper")) { include sfConfig::get('sf_root_dir') . "/lib/helper/FileHelper.php"; } //echo_cms_sep(); echo_cms("sf_cache_objects = " . sfConfig::get('sf_cache_objects')); echo_cms("sf_cache_relations = " . sfConfig::get('sf_cache_relations')); echo_cms("sf_cache_trees = " . sfConfig::get('sf_cache_trees')); //echo_cms_sep(); if (count($args) > 0) { $relationsFlag = substr($args[0], 0, 3) == "rel"; $listsFlag = substr($args[0], 0, 4) == "list"; $cacheModel = $args[0]; if (is_numeric($cacheModel)) { $obj = Document::getDocumentInstance($cacheModel); if ($obj) { $phpName = get_class($obj); } else { echo_cms_error("Object with ID=" . $cacheModel . " not found!"); exit; } } } // parse schema file to make Schema.class.php $objects = XMLParser::getXMLdataValues(sfConfig::get('sf_root_dir') . "/config/schema.xml"); $schemaFile = sfConfig::get('sf_root_dir') . "/config/Schema.class.php"; $content = $content = "<?php\n class Schema\n{\n\n"; echo_cms("Building " . $schemaFile . "... "); foreach ($objects as $obj) { if ($obj['tag'] == 'TABLE' && $obj['type'] == 'open') { $table = $obj['attributes']['PHPNAME']; if ($phpName && $phpName == $table) { $tableName = $obj['attributes']['NAME']; } $trees = explode(",", $obj['attributes']['TREE']); $content .= "\tpublic static function get" . $table . "Trees()\n\t{\n"; $content .= "\t\treturn array("; foreach ($trees as $tree) { $content .= "'" . strtolower($tree) . "', "; } $content = substr($content, 0, -2); $content .= ");\n\t}\n\n"; $content .= "\tpublic static function get" . $table . "Properties()\n\t{\n"; $content .= "\t\treturn array("; } if ($obj['tag'] == 'COLUMN' && $obj['type'] == 'complete') { $property = $obj['attributes']['NAME']; $getProperty = UtilsHelper::convertFieldName($property); $content .= "'" . $getProperty . "', "; } if ($obj['tag'] == 'TABLE' && $obj['type'] == 'close') { $content = substr($content, 0, -2); $content .= ");\n\t}\n\n"; } } $content .= "\n}"; //echo_cms_sep(); if (FileHelper::writeFile($schemaFile, $content)) { echo_cms($schemaFile . " writen successfully!"); } else { echo_cms_error("Error writing " . $schemaFile . "!"); } echo "\n"; //echo_cms_sep(); if (substr($args[0], 0, 5) == "schema") { echo_cms(" Done!"); exit; } if (!$relationsFlag && !$listsFlag) { try { if (is_numeric($cacheModel)) { $obj = array(); $obj['tag'] = 'OBJECT'; $obj['type'] = 'complete'; $obj['id'] = $cacheModel; $objects = array($obj); $exit = true; } elseif ($cacheModel) { $obj = array(); $obj['tag'] = 'OBJECT'; $obj['type'] = 'complete'; $obj['value'] = $cacheModel; $objects = array($obj); $exit = true; } else { $objects = XMLParser::getXMLdataValues(sfConfig::get('sf_root_dir') . "/config/cachedObjects.xml"); } foreach ($objects as $obj) { if ($obj['tag'] == 'OBJECT' && $obj['type'] == 'complete') { if ($id = $obj['id']) { $obj = Document::getDocumentInstance($id); $model = get_class($obj); $c = new Criteria(); $c->add($tableName . '.ID', $id); } else { $model = $obj['value']; $c = new Criteria(); } $classPeer = ucfirst($model) . "Peer"; //$c = new Criteria(); //$results = call_user_func(array($classPeer, 'doSelect'), $c); $peerMethod = "doSelect"; $results = call_user_func(array($classPeer, $peerMethod), $c); echo_cms(" Caching " . $model . " documents"); $ind = 0; foreach ($results as $result) { if ($ind % 20 == 0) { echo $ind . " .\r"; } else { if ($ind % 10 == 0) { echo $ind . " o\r"; } } $ind++; Document::cacheObj($result, $model, false); } echo_cms(" ====> " . $ind . " " . $model . " Document(s) cached."); //echo_cms_sep(); } } if ($exit) { exit; } } catch (Expection $e) { echo_cms_error(" Error: {$e}"); } } if (!$listsFlag) { echo "\n"; //echo_cms_sep(); echo_cms("Writing relations cache"); Relation::checkRelationCache('lock'); try { $c = new Criteria(); $c->addAscendingOrderByColumn('id1'); $c->addAscendingOrderByColumn('document_model2'); $c->addAscendingOrderByColumn('sort_order'); $relations = RelationPeer::doSelect($c); $relationsFile = sfConfig::get('sf_root_dir') . "/cache/objcache/childrenRelations.php"; echo_cms("Processing children :"); $i = 0; $content = "<?php \n"; $oldIDModel = ''; $currIDModel = ''; $idStr = ''; foreach ($relations as $relation) { $currIDModel = $relation->getId1() . ':' . $relation->getDocumentModel2(); if ($i == 0) { $oldIDModel = $currIDModel; } $i++; echo $i . "\t\t\r"; if ($currIDModel == $oldIDModel) { $idStr .= "," . $relation->getId2(); } else { $idStr = substr($idStr, 1); $content .= "\$_Rel[" . $oldId1 . "][\"" . $oldModel2 . "\"] = explode(\",\", \"" . $idStr . "\");\n"; $idStr = "," . $relation->getId2(); } $oldIDModel = $currIDModel; $oldId1 = $relation->getId1(); $oldModel2 = $relation->getDocumentModel2(); } if ($idStr) { $idStr = substr($idStr, 1); $content .= "\$_Rel[" . $oldId1 . "][\"" . $oldModel2 . "\"] = explode(\",\", \"" . $idStr . "\");\n"; } echo "\n"; $content .= "\n?>"; //echo_cms_sep(); if (FileHelper::writeFile($relationsFile, $content)) { echo_cms($relationsFile . " written successfully"); } else { echo_cms_error("Error writing " . $relationsFile . " !"); } //echo_cms_sep(); } catch (Exception $e) { echo "Error: " . $e->getMessage(); } Relation::checkRelationCache('unlock'); } if (!$relationsFlag) { echo "\n"; //echo_cms_sep(); echo_cms_title("Writing Lists cache"); $listsRootFolder = Rootfolder::getRootfolderByModule("lists"); if ($listsRootFolder) { $lists = Document::getChildrenOf($listsRootFolder->getId(), "Lists"); } foreach ($lists as $list) { $listId = $list->getListId(); echo "\t\tprocessing \"" . $listId . "\" list ..."; $listPath = sfConfig::get('sf_root_dir') . "/cache/listscache/" . $listId . ".php"; @unlink($listPath); $content = "<?php \n"; $content .= "\$listItemsForSelect = array(\n"; $items = Lists::getListitemsForSelect($listId, array(), false); foreach ($items as $key => $item) { $content .= "\"" . str_replace("\"", "\\\"", $key) . "\" => \"" . str_replace("\"", "\\\"", $item) . "\",\n"; } $content .= ");\n?>"; if (FileHelper::writeFile($listPath, $content)) { echo_cms(" Done!"); } else { echo_cms_error(" Error!"); } } //echo_cms_sep(); } sfConfig::set("sf_use_relations_cache", true); }
public static function retrieveByPK($id1, $id2, $con = null) { if ($con === null) { $con = Propel::getConnection(self::DATABASE_NAME); } $criteria = new Criteria(); $criteria->add(RelationPeer::ID1, $id1); $criteria->add(RelationPeer::ID2, $id2); $v = RelationPeer::doSelect($criteria, $con); return !empty($v) ? $v[0] : null; }
public static function orderDocument($documentId, $up = true) { try { $con = Propel::getConnection(); $con->begin(); $c = new Criteria(); $c->add(RelationPeer::ID2, $documentId); $relation = RelationPeer::doSelectOne($c); $c = new Criteria(); $c->add(RelationPeer::ID1, $relation->getId1()); if ($up) { $c->addDescendingOrderByColumn(RelationPeer::SORT_ORDER); $criterion = $c->getNewCriterion(RelationPeer::SORT_ORDER, $relation->getSortOrder(), Criteria::LESS_THAN); } else { $c->addAscendingOrderByColumn(RelationPeer::SORT_ORDER); $criterion = $c->getNewCriterion(RelationPeer::SORT_ORDER, $relation->getSortOrder(), Criteria::GREATER_THAN); } $c->add($criterion); $previousRelation = RelationPeer::doSelectOne($c); if ($previousRelation) { $previousSortOrder = $previousRelation->getSortOrder(); $previousRelation->setSortOrder($relation->getSortOrder()); $previousRelation->save(); $relation->setSortOrder($previousSortOrder); $relation->save(); if (sfConfig::get('sf_cache_relations')) { if ($relation) { self::updateRelationCache($relation->getId1()); } } } if (SF_APP == "backend" && sfConfig::get('sf_cache_trees')) { $user = sfContext::getInstance()->getUser(); $moduleName = $user->getAttribute("currentModule"); $document = Document::getDocumentInstance($documentId); if ($up) { BackendService::updateTree($moduleName, $document, "UP"); //BackendService::updateTree($moduleName, $document, "UP", "right"); //BackendService::updateTree($moduleName, $document, "UP", "mce"); } else { BackendService::updateTree($moduleName, $document, "DOWN"); //BackendService::updateTree($moduleName, $document, "DOWN", "right"); //BackendService::updateTree($moduleName, $document, "DOWN", "mce"); } } $con->commit(); } catch (Exception $e) { $con->rollback(); throw $e; } }
public function executeChangeOrder() { exec('rm -fr ' . SF_ROOT_DIR . DIRECTORY_SEPARATOR . 'cache' . DIRECTORY_SEPARATOR . 'menus/*'); $items = $this->getRequestParameter('item'); $c = new Criteria(); $c->addAscendingOrderByColumn(RelationPeer::SORT_ORDER); $c->add(RelationPeer::ID2, $items, Criteria::IN); $arr = RelationPeer::doSelect($c); $order = array(); foreach ($arr as $ind => $obj) { $parentId = $obj->getId1(); $order[$items[$ind]] = $obj->getSortOrder(); } foreach ($arr as &$obj) { $obj->setSortOrder($order[$obj->getId2()]); $obj->save(); } if ($parentId) { Relation::updateRelationCache($parentId); } exit("OK"); }
public static function getParentOf($id, $model = null, $createInstance = true, $useCache = true) { $parent = $parentId = null; try { $found = false; $load = true; if ($useCache) { $objclass = "CachedObj" . $id; if (!class_exists($objclass)) { $cacheFile = self::getCachePath($id) . "doc" . $id . ".php"; if (is_readable($cacheFile)) { include self::getCachePath($id) . "doc" . $id . ".php"; } else { $load = false; } } if ($load) { $cachedObj = new $objclass(); if (method_exists($cachedObj, 'getParent')) { $parentId = $cachedObj->getParent(); $found = true; } } } if (!$found) { $c = new Criteria(); $c->add(RelationPeer::ID2, $id); if ($model) { $c->add(RelationPeer::DOCUMENT_MODEL1, $model); } $parent = RelationPeer::doSelectOne($c); if ($parent) { $parentId = $parent->getId1(); } } if ($parentId) { if ($createInstance) { $parent = self::getDocumentInstance($parentId); } else { $parent = $parentId; } } return $parent; } catch (Exception $e) { throw $e; } }