Пример #1
0
 public static function updateTagRelationCache($manualLock = false)
 {
     if (!$manualLock) {
         self::checkTagRelationCache('lock');
     }
     try {
         $tagRelationsFile = sfConfig::get('sf_root_dir') . "/cache/objcache/tagsRelations.php";
         $c = new Criteria();
         $allTags = TagPeer::doSelect($c);
         $content = "<?php \n";
         foreach ($allTags as $singleTag) {
             $c = new Criteria();
             $c->add(TagrelationPeer::TAG_ID, $singleTag->getId());
             $tagRelations = TagrelationPeer::doSelect($c);
             if ($tagRelations) {
                 $elementsArr = "array(";
                 foreach ($tagRelations as $tagRelation) {
                     $elementsArr .= $tagRelation->getId() . ",";
                 }
                 $content .= "\$_TagRel['" . $singleTag->getTagId() . "'] = " . substr($elementsArr, 0, -1) . ");\n";
             }
         }
         $content .= "\n?>";
         if (FileHelper::writeFile($tagRelationsFile, $content)) {
             BackendService::loadTagsRelations();
         } else {
             echo FileHelper::Log("Unable to write tag cache in: " . $tagRelationsFile, UtilsHelper::MSG_ERROR);
         }
     } catch (Exception $e) {
         echo FileHelper::Log("Unable to refresh tag cache: " . $e->getMessage(), UtilsHelper::MSG_ERROR);
     }
     if (!$manualLock) {
         self::checkTagRelationCache('unlock');
     }
 }
Пример #2
0
<?php

require_once 'vendor/autoload.php';
require_once 'FileHelper.php';
use Silex\Application;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
$app = new Silex\Application();
$app->post('/upload', function (Request $request) use($app) {
    // get file from requests
    $file = $request->files->get('image');
    // if null return error
    if ($file == null) {
        $obj = new stdClass();
        $obj->success = false;
        $obj->error = "No image provided";
        return json_encode($obj);
    }
    // upload the file and return the json with the data
    return json_encode(FileHelper::writeFile($file));
});
$app->run();
Пример #3
0
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);
}
Пример #4
0
 public static function updateRelationCache($parentId = null, $manualLock = false)
 {
     //$m = memory_get_usage();
     if (!$manualLock) {
         self::checkRelationCache('wait');
         self::checkRelationCache('lock');
     }
     try {
         $relationsFile = sfConfig::get('sf_root_dir') . "/cache/objcache/childrenRelations.php";
         $found = false;
         if ($parentId && is_readable($relationsFile)) {
             $handle = fopen($relationsFile, "r+");
             if ($handle) {
                 $content = fread($handle, filesize($relationsFile));
                 $rels = explode("\$_Rel[" . $parentId . "]", $content);
                 $cnt = count($rels);
                 if ($cnt > 1) {
                     $prevContent = $rels[0];
                     $p = strpos($rels[$cnt - 1], ";");
                     $nextContent = substr($rels[$cnt - 1], $p + 2);
                     $found = true;
                 }
             }
         }
         if (!$found) {
             // if not found - create relations for ALL documents
             $prevContent = "<?php \n";
             $nextContent = "\n?>";
             $parentId = null;
         }
         $c = new Criteria();
         if ($parentId) {
             $c->add(RelationPeer::ID1, $parentId);
         }
         $c->addAscendingOrderByColumn('id1');
         $c->addAscendingOrderByColumn('document_model2');
         $c->addAscendingOrderByColumn('sort_order');
         $rs = RelationPeer::doSelectRs($c);
         $i = 0;
         $content = $prevContent;
         // "<?php \n";
         $oldIDModel = '';
         $currIDModel = '';
         $idStr = '';
         while ($rs->next()) {
             $id1 = $rs->getInt(1);
             $id2 = $rs->getInt(2);
             $model1 = $rs->getString(3);
             $model2 = $rs->getString(4);
             $sort = $rs->getString(5);
             $currIDModel = $id1 . ':' . $model2;
             if ($i == 0) {
                 $oldIDModel = $currIDModel;
             }
             $i++;
             if ($currIDModel == $oldIDModel) {
                 $idStr .= "," . $id2;
             } else {
                 $idStr = substr($idStr, 1);
                 $content .= "\$_Rel[" . $oldId1 . "][\"" . $oldModel2 . "\"] = explode(\",\", \"" . $idStr . "\");\n";
                 $idStr = "," . $id2;
             }
             $oldIDModel = $currIDModel;
             $oldId1 = $id1;
             $oldModel2 = $model2;
         }
         if ($idStr) {
             $idStr = substr($idStr, 1);
             $content .= "\$_Rel[" . $oldId1 . "][\"" . $oldModel2 . "\"] = explode(\",\", \"" . $idStr . "\");\n";
         }
         $content .= $nextContent;
         /* "\n?>"; */
         FileHelper::writeFile($relationsFile, $content);
         $_SESSION['childrenRelations'] = null;
         BackendService::loadChildrenRelations();
     } catch (Exception $e) {
     }
     if (!$manualLock) {
         self::checkRelationCache('unlock');
     }
     //$m2 = memory_get_usage();
     //FileHelper::Log(round(($m2-$m)/1024/1024,2)." Mo");
 }
Пример #5
0
 public static function cacheObj($document, $documentModel = null, $refreshTree = true, $parentId = null)
 {
     if (sfConfig::get('sf_cache_objects')) {
         // parse cachedObjects and cache objects
         $objects = XMLParser::getXMLdataValues(sfConfig::get('sf_root_dir') . "/config/cachedObjects.xml");
         // check if documentModel is Cached
         $foundModel = false;
         if (is_null($documentModel)) {
             $documentModel = get_class($document);
         }
         foreach ($objects as $obj) {
             if ($obj['tag'] == 'OBJECT' && $obj['type'] == 'complete') {
                 if ($documentModel == $obj['value']) {
                     $foundModel = true;
                 }
             }
         }
         // Caching Object if it's model is in "cachedObjects.xml" file
         if ($foundModel) {
             $docId = $document->getId();
             $path = self::getCachePath($docId, true);
             include_once sfConfig::get('sf_root_dir') . "/config/" . "/Schema.class.php";
             $m = "get" . $documentModel . "Properties";
             $properties = Schema::$m();
             $content = "<?php\nclass CachedObj" . $docId . "\n{\n";
             $content .= "\tpublic function __getDocumentModel(){\n\t\treturn \"" . $documentModel . "\";\n\t}\n";
             foreach ($properties as $getProperty) {
                 $getter = "get" . ucfirst($getProperty);
                 $v = $document->{$getter}();
                 if (is_null($v)) {
                     $content .= "\tpublic function " . $getter . "(){\n\t\treturn NULL;\n\t}\n";
                 } else {
                     if ($documentModel == "Page" && $getProperty == "Content") {
                         $content .= "\tpublic function " . $getter . "(){\n\t\treturn \"" . str_replace(array('\\', '"'), array('\\\\', '\\"'), $v) . "\";\n\t}\n";
                     } else {
                         // delete <script> tags !!!
                         $v = preg_replace('@(<[ \\n\\r\\t]*script(>|[^>]*>))@i', '', $v);
                         $v = preg_replace('@(<[ \\n\\r\\t]*/[ \\n\\r\\t]*script(>|[^>]*>))@i', '', $v);
                         $content .= "\tpublic function " . $getter . "(){\n\t\treturn \"" . str_replace(array('\\', '"'), array('\\\\', '\\"'), $v) . "\";\n\t}\n";
                     }
                 }
                 /*					else
                 					{
                 					$content .= "\tpublic function ".$getter."(){\n\t\treturn ".$v.";\n\t}\n";
                 					}*/
             }
             if (!$parentId) {
                 $parentId = intval(self::getParentOf($docId, null, false, false));
             }
             $content .= "\tpublic function getParent(){\n\t\treturn {$parentId};\n\t}\n";
             $content .= "}";
             $cachefile = $path . "doc" . $docId . ".php";
             if (file_exists($cachefile)) {
                 unlink($cachefile);
             }
             FileHelper::writeFile($cachefile, $content);
             chmod($cachefile, 0777);
         }
     }
     // Refreshing Tree - not related to CacheObject !!!
     if (sfConfig::get('sf_cache_trees') && $refreshTree) {
         /*
         $modules = FileHelper::getSubElements(sfConfig::get('sf_root_dir')."/apps/backend/modules", "folder");
         foreach ($modules as $module => $path)
         */
         include_once sfConfig::get('sf_root_dir') . "/config/" . "/Schema.class.php";
         $documentModel = get_class($document);
         $getTree = "get" . $documentModel . "Trees";
         $trees = Schema::$getTree();
         foreach ($trees as $module) {
             $module = strtolower($module);
             // Caching Left, Right and MCE tree
             BackendService::updateTree($module, $document, "UPDATE");
             //BackendService::updateTree($module, $document, "UPDATE", "right");
             BackendService::updateTree($module, $document, "UPDATE", "mce");
         }
     }
 }
Пример #6
0
 public static function makePhpCache($contentArr, $moduleName, $tree, $saveToFile = true)
 {
     $content = "<?php\n\n" . "\$contentArray = array(\n";
     foreach ($contentArr as $contentItem) {
         $content .= "\t" . $contentItem['id'] . "\t\t=> array(";
         foreach ($contentItem as $k => $v) {
             if (is_int($v)) {
                 $content .= " '" . $k . "' => " . $v . ",";
             } else {
                 $content .= " '" . $k . "' => '" . addslashes($v) . "',";
             }
         }
         $content = substr($content, 0, -1) . "),\n";
     }
     $content = substr($content, 0, -2) . "\n);\n\n?>";
     if ($saveToFile) {
         $moduleName = ucfirst($moduleName);
         /*if($tree == "right")
         		{
         		$writeResult = FileHelper::writeFile(sfConfig::get('sf_root_dir')."/cache/backend/".$moduleName."_rightTree.php", $content);
         		}
         		else*/
         if ($tree == "mce") {
             $writeResult = FileHelper::writeFile(sfConfig::get('sf_root_dir') . "/cache/backend/" . $moduleName . "_mceTree.php", $content);
         } else {
             $writeResult = FileHelper::writeFile(sfConfig::get('sf_root_dir') . "/cache/backend/" . $moduleName . "_Tree.php", $content);
         }
         if ($writeResult) {
             return self::makeHtmlCache($moduleName, $tree);
         } else {
             return "Error caching tree";
         }
     }
     return $content;
 }
Пример #7
0
 public static function updateListCache($listId = null)
 {
     if ($listId) {
         $list = Lists::getListByListId($listId);
         $lists = array($list);
     } else {
         if ($listsRootFolder = Rootfolder::getRootfolderByModule("lists")) {
             $lists = Document::getChildrenOf($listsRootFolder->getId(), "Lists");
         }
     }
     foreach ($lists as $list) {
         $listId = $list->getListId();
         $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?>";
         FileHelper::writeFile($listPath, $content);
     }
 }