Пример #1
0
 public function getUpdateInformationAction()
 {
     $id = $this->_getParam("id");
     $type = $this->_getParam("type");
     if ($type == "plugin") {
         $extensionPath = PIMCORE_PLUGINS_PATH . "/" . $id;
     } else {
         if ($type = "brick") {
             $extensionPath = PIMCORE_WEBSITE_PATH . "/var/areas/" . $id;
         }
     }
     $remoteConfig = array("token" => Pimcore_Liveconnect::getToken(), "id" => $id, "type" => $type, "revision" => trim(file_get_contents($extensionPath . "/.pimcore_extension_revision")));
     $rawData = Pimcore_Tool::getHttpData("http://extensions.pimcore.org/update/getUpdateInformation.php", null, array("data" => base64_encode(serialize($remoteConfig))));
     if (!$rawData) {
         header('HTTP/1.1 403 Forbidden');
         exit;
     }
     $steps = array();
     $numberOfFiles = 0;
     $data = Zend_Json::decode($rawData);
     foreach ($data["revisions"] as $revision) {
         foreach ($revision["files"] as $file) {
             $steps[] = array("action" => $file["action"], "controller" => "download", "params" => array("id" => $id, "type" => $type, "path" => $file["path"], "revision" => $file["revision"]));
             $numberOfFiles++;
         }
         $steps[] = array("action" => "check-update-script", "controller" => "update", "params" => array("id" => $id, "type" => $type, "revision" => $revision["revision"]));
     }
     $this->_helper->json(array("steps" => $steps, "fileAmount" => $numberOfFiles));
 }
Пример #2
0
 public function getLanguagesAction()
 {
     $languagesJson = Pimcore_Tool::getHttpData("http://www.pimcore.org/community/translations/pimcore_download");
     echo $languagesJson;
     exit;
     $languagesData = Zend_Json_Decoder::decode($languagesJson);
     $languages = $languagesData["languages"];
     if (is_array($languages)) {
         for ($i = 0; $i < count($languages); $i++) {
             if (is_file($filesDir = PIMCORE_WEBSITE_PATH . "/var/config/texts/" . $languages[$i]['key'] . ".csv")) {
                 $languages[$i]["exists"] = true;
             } else {
                 $languages[$i]["exists"] = false;
             }
         }
     }
     $this->_helper->json(array("languages" => $languages));
 }
Пример #3
0
 public function getExtensionsAction()
 {
     $configurations = array();
     // plugins
     $pluginConfigs = Pimcore_ExtensionManager::getPluginConfigs();
     // get remote repo state of plugins
     $remoteConfig = array();
     foreach ($pluginConfigs as $config) {
         if (!is_file(Pimcore_ExtensionManager::getPathForExtension($config["plugin"]["pluginName"], "plugin") . "/.pimcore_extension_revision")) {
             $remoteConfig["extensions"][] = array("id" => $config["plugin"]["pluginName"], "type" => "plugin");
         }
     }
     $brickConfigs = Pimcore_ExtensionManager::getBrickConfigs();
     // get repo state of bricks
     foreach ($brickConfigs as $id => $config) {
         if (!is_file(Pimcore_ExtensionManager::getPathForExtension($id, "brick") . "/.pimcore_extension_revision")) {
             $remoteConfig["extensions"][] = array("id" => $id, "type" => "brick");
         }
     }
     $remoteConfig["token"] = Pimcore_Liveconnect::getToken();
     $rawData = Pimcore_Tool::getHttpData("http://extensions.pimcore.org/share/getExtensions.php", null, array("data" => base64_encode(Pimcore_Tool_Serialize::serialize($remoteConfig))));
     if (!$rawData) {
         header('HTTP/1.1 403 Forbidden');
         exit;
     }
     $hubInfos = Zend_Json::decode($rawData);
     // create configuration for plugins
     foreach ($pluginConfigs as $config) {
         $plugin = array("id" => $config["plugin"]["pluginName"], "type" => "plugin", "name" => $config["plugin"]["pluginNiceName"], "description" => $config["plugin"]["pluginDescription"], "icon" => $config["plugin"]["pluginIcon"], "exists" => (bool) $hubInfos["extensions"][$config["plugin"]["pluginName"]]["existing"]);
         if ($hubInfos["extensions"][$plugin["id"]]["allowed"]) {
             $configurations[] = $plugin;
         }
     }
     // create configuration for bricks
     foreach ($brickConfigs as $id => $config) {
         $brick = array("id" => $id, "type" => "brick", "name" => $config->name, "description" => $config->description, "exists" => (bool) $hubInfos["extensions"][$id]["existing"]);
         if ($hubInfos["extensions"][$id]["allowed"]) {
             $configurations[] = $brick;
         }
     }
     $this->_helper->json(array("extensions" => $configurations));
 }
Пример #4
0
 public function downloadFileAction()
 {
     $id = $this->_getParam("id");
     $type = $this->_getParam("type");
     $path = $this->_getParam("path");
     $revision = $this->_getParam("revision");
     $remoteConfig = $this->_getAllParams();
     $remoteConfig["token"] = Pimcore_Liveconnect::getToken();
     $rawData = Pimcore_Tool::getHttpData("http://extensions.pimcore.org/download/downloadFile.php?data=" . base64_encode(serialize($remoteConfig)));
     if (!$rawData) {
         header('HTTP/1.1 403 Forbidden');
         exit;
     }
     $file = Zend_Json::decode($rawData);
     if ($type == "plugin") {
         $parentPath = PIMCORE_PLUGINS_PATH;
     } else {
         if ($type == "brick") {
             $parentPath = PIMCORE_WEBSITE_PATH . "/var/areas";
         }
     }
     if (!is_dir($parentPath)) {
         mkdir($parentPath, 0755, true);
     }
     $fileDestPath = $parentPath . $path;
     if (!is_dir(dirname($fileDestPath))) {
         mkdir(dirname($fileDestPath), 0755, true);
     }
     file_put_contents($fileDestPath, base64_decode($file["content"]));
     chmod($fileDestPath, 0766);
     // write revision information
     $revisionFile = $parentPath . "/" . $id . "/.pimcore_extension_revision";
     file_put_contents($revisionFile, $revision);
     chmod($revisionFile, 0766);
     $this->_helper->json(array("success" => true));
 }
Пример #5
0
 public function saveImagePixlrAction()
 {
     $asset = Asset::getById($this->_getParam("id"));
     $asset->setData(Pimcore_Tool::getHttpData($this->_getParam("image")));
     $asset->setUserModification($this->getUser()->getId());
     $asset->save();
     $this->view->asset = $asset;
 }
 public function seopanelTreeAction()
 {
     $document = Document::getById($this->_getParam("node"));
     $documents = array();
     if ($document->hasChilds()) {
         $list = new Document_List();
         $list->setCondition("parentId = ?", $document->getId());
         $list->setOrderKey("index");
         $list->setOrder("asc");
         $childsList = $list->load();
         foreach ($childsList as $childDocument) {
             // only display document if listing is allowed for the current user
             if ($childDocument->isAllowed("list")) {
                 $list = new Document_List();
                 $list->setCondition("path LIKE ? and type = ?", array($childDocument->getFullPath() . "/%", "page"));
                 if ($childDocument instanceof Document_Page || $list->getTotalCount() > 0) {
                     $nodeConfig = $this->getTreeNodeConfig($childDocument);
                     if (method_exists($childDocument, "getTitle") && method_exists($childDocument, "getDescription")) {
                         $nodeConfig["title"] = $childDocument->getTitle();
                         $nodeConfig["description"] = $childDocument->getDescription();
                         $nodeConfig["title_length"] = strlen($childDocument->getTitle());
                         $nodeConfig["description_length"] = strlen($childDocument->getDescription());
                         // anaylze content
                         $nodeConfig["links"] = 0;
                         $nodeConfig["externallinks"] = 0;
                         $nodeConfig["h1"] = 0;
                         $nodeConfig["h1_text"] = "";
                         $nodeConfig["hx"] = 0;
                         $nodeConfig["imgwithalt"] = 0;
                         $nodeConfig["imgwithoutalt"] = 0;
                         try {
                             // cannot use the rendering service from Document_Service::render() because of singleton's ...
                             // $content = Document_Service::render($childDocument, array("pimcore_admin" => true, "pimcore_preview" => true), true);
                             $request = $this->getRequest();
                             $contentUrl = $request->getScheme() . "://" . $request->getHttpHost() . $childDocument->getFullPath();
                             $content = Pimcore_Tool::getHttpData($contentUrl, array("pimcore_preview" => true, "pimcore_admin" => true, "_dc" => time()));
                             if ($content) {
                                 $html = str_get_html($content);
                                 if ($html) {
                                     $nodeConfig["links"] = count($html->find("a"));
                                     $nodeConfig["externallinks"] = count($html->find("a[href^=http]"));
                                     $nodeConfig["h1"] = count($html->find("h1"));
                                     $h1 = $html->find("h1", 0);
                                     if ($h1) {
                                         $nodeConfig["h1_text"] = strip_tags($h1->innertext);
                                     }
                                     $nodeConfig["hx"] = count($html->find("h2,h2,h4,h5"));
                                     $images = $html->find("img");
                                     if ($images) {
                                         foreach ($images as $image) {
                                             $alt = $image->alt;
                                             if (empty($alt)) {
                                                 $nodeConfig["imgwithoutalt"]++;
                                             } else {
                                                 $nodeConfig["imgwithalt"]++;
                                             }
                                         }
                                     }
                                 }
                             }
                         } catch (Exception $e) {
                             Logger::debug($e);
                         }
                         if (strlen($childDocument->getTitle()) > 80 || strlen($childDocument->getTitle()) < 5 || strlen($childDocument->getDescription()) > 180 || strlen($childDocument->getDescription()) < 20 || $nodeConfig["h1"] != 1 || $nodeConfig["hx"] < 1) {
                             $nodeConfig["cls"] = "pimcore_document_seo_warning";
                         }
                     }
                     $documents[] = $nodeConfig;
                 }
             }
         }
     }
     $this->_helper->json($documents);
 }
Пример #7
0
 public function translateAction()
 {
     $conf = Pimcore_Config::getSystemConfig();
     $key = $conf->services->translate->apikey;
     $locale = new Zend_Locale($this->_getParam("language"));
     $language = $locale->getLanguage();
     $supportedTypes = array("input", "textarea", "wysiwyg");
     $data = Zend_Json::decode($this->_getParam("data"));
     foreach ($data as &$d) {
         if (in_array($d["type"], $supportedTypes)) {
             $response = Pimcore_Tool::getHttpData("https://www.googleapis.com/language/translate/v2?key=" . $key . "&q=" . urlencode($d["data"]) . "&target=" . $language);
             $tData = Zend_Json::decode($response);
             if ($tData["data"]["translations"][0]["translatedText"]) {
                 $d["data"] = $tData["data"]["translations"][0]["translatedText"];
             }
         }
     }
     $this->getRequest()->setParam("data", Zend_Json::encode($data));
     $this->saveToSessionAction();
 }
Пример #8
0
 /**
  * Download language files for a specific language for pimcore core and all plugins or
  * download language files for all existing system languages for pimcore core and plugins if parameter is null
  * @static
  * @param  $language
  * @return bool
  */
 public static function downloadLanguage($lang = null)
 {
     $languages = Pimcore_Tool_Admin::getLanguages();
     if (!empty($lang)) {
         $languages = array($lang);
     } else {
         //omit core language
         $additonalLanguages = array();
         foreach ($languages as $lang) {
             if ($lang != "en") {
                 $additonalLanguages[] = $lang;
             }
         }
         $languages = $additonalLanguages;
     }
     //directory for additional languages
     $langDir = PIMCORE_WEBSITE_PATH . "/var/config/texts";
     if (!is_dir($langDir)) {
         mkdir($langDir, 0755, true);
     }
     $success = is_dir($langDir);
     if ($success) {
         if (is_array($languages)) {
             foreach ($languages as $language) {
                 //TODO: remove hard coded
                 $src = "http://www.pimcore.org/?controller=translation&action=download&language=" . $language;
                 $data = Pimcore_Tool::getHttpData($src);
                 if (!empty($language) and !empty($data)) {
                     try {
                         $languageFile = $langDir . "/" . $language . ".csv";
                         $fh = fopen($languageFile, 'w');
                         fwrite($fh, $data);
                         fclose($fh);
                     } catch (Exception $e) {
                         Logger::error("could not download language file");
                         Logger::error($e);
                         $success = false;
                     }
                 }
             }
         }
     } else {
         Logger::warning("Pimcore_Update: Could not create language dir [  {$langDir} ]");
     }
     return $success;
 }