/** * @return array */ public function load() { $properties = []; $propertiesData = $this->db->fetchAll($this->model->getFilter(), $this->model->getOrder()); foreach ($propertiesData as $propertyData) { $properties[] = Config::getByName($propertyData["id"]); } $this->model->setTags($properties); return $properties; }
public function tagManagementUpdateAction() { $this->checkPermission("tag_snippet_management"); $tag = Model\Tool\Tag\Config::getByName($this->getParam("name")); $data = \Zend_Json::decode($this->getParam("configuration")); $data = array_htmlspecialchars($data); $items = array(); foreach ($data as $key => $value) { $setter = "set" . ucfirst($key); if (method_exists($tag, $setter)) { $tag->{$setter}($value); } if (strpos($key, "item.") === 0) { $cleanKeyParts = explode(".", $key); $items[$cleanKeyParts[1]][$cleanKeyParts[2]] = $value; } } $tag->resetItems(); foreach ($items as $item) { $tag->addItem($item); } // parameters get/post $params = array(); for ($i = 0; $i < 5; $i++) { $params[] = array("name" => $data["params.name" . $i], "value" => $data["params.value" . $i]); } $tag->setParams($params); if ($this->getParam("name") != $data["name"]) { $tag->setName($this->getParam("name")); // set the old name again, so that the old file get's deleted $tag->delete(); // delete the old config / file $tag->setName($data["name"]); } $tag->save(); $this->_helper->json(array("success" => true)); }
/** * */ public function dispatchLoopShutdown() { if (!\Pimcore\Tool::isHtmlResponse($this->getResponse())) { return; } $cacheKey = "outputfilter_tagmngt"; $tags = Cache::load($cacheKey); if (!is_array($tags)) { $dir = Tool\Tag\Config::getWorkingDir(); $tags = array(); $files = scandir($dir); foreach ($files as $file) { if (strpos($file, ".xml")) { $name = str_replace(".xml", "", $file); $tags[] = Tool\Tag\Config::getByName($name); } } Cache::save($tags, $cacheKey, array("tagmanagement"), null, 100); } if (empty($tags)) { return; } $html = null; $body = $this->getResponse()->getBody(); $requestParams = array_merge($_GET, $_POST); foreach ($tags as $tag) { $method = strtolower($tag->getHttpMethod()); $pattern = $tag->getUrlPattern(); $textPattern = $tag->getTextPattern(); // site check if (\Site::isSiteRequest() && $tag->getSiteId()) { if (\Site::getCurrentSite()->getId() != $tag->getSiteId()) { continue; } } else { if (!\Site::isSiteRequest() && $tag->getSiteId()) { continue; } } $requestPath = rtrim($this->getRequest()->getPathInfo(), "/"); if (($method == strtolower($this->getRequest()->getMethod()) || empty($method)) && (empty($pattern) || @preg_match($pattern, $requestPath)) && (empty($textPattern) || strpos($body, $textPattern) !== false)) { $paramsValid = true; foreach ($tag->getParams() as $param) { if (!empty($param["name"])) { if (!empty($param["value"])) { if (!array_key_exists($param["name"], $requestParams) || $requestParams[$param["name"]] != $param["value"]) { $paramsValid = false; } } else { if (!array_key_exists($param["name"], $requestParams)) { $paramsValid = false; } } } } if (is_array($tag->getItems()) && $paramsValid) { foreach ($tag->getItems() as $item) { if (!empty($item["element"]) && !empty($item["code"]) && !empty($item["position"])) { if (!$html) { include_once "simple_html_dom.php"; $html = str_get_html($body); } if ($html) { $element = $html->find($item["element"], 0); if ($element) { if ($item["position"] == "end") { $element->innertext = $element->innertext . "\n\n" . $item["code"] . "\n\n"; } else { // beginning $element->innertext = "\n\n" . $item["code"] . "\n\n" . $element->innertext; } // we havve to reinitialize the html object, otherwise it causes problems with nested child selectors $body = $html->save(); $html->clear(); unset($html); $html = null; } } } } } } } if ($html && method_exists($html, "clear")) { $html->clear(); unset($html); } $this->getResponse()->setBody($body); }