/** * @param string $tpl * @param int $time * * @return string */ public function getSource($tpl, &$time) { $content = ''; if ($pos = strpos($tpl, '@')) { $propertySet = substr($tpl, $pos + 1); $tpl = substr($tpl, 0, $pos); } $c = is_numeric($tpl) && $tpl > 0 ? $tpl : array('name' => $tpl); /** @var modChunk $chunk */ if ($element = $this->modx->getObject('modChunk', $c)) { $content = $element->getContent(); $properties = array(); if (!empty($propertySet)) { if ($tmp = $element->getPropertySet($propertySet)) { $properties = $tmp; } } else { $properties = $element->getProperties(); } if (!empty($content) && !empty($properties)) { $useFenom = $this->pdoTools->config['useFenom']; $this->pdoTools->config['useFenom'] = false; $content = $this->pdoTools->parseChunk('@INLINE ' . $content, $properties); $this->pdoTools->config['useFenom'] = $useFenom; } } return $content; }
/** * Recursive template of branch of menu * * @param array $row * * @return mixed|string */ public function templateBranch($row = array()) { $children = ''; $row['level'] = $this->level; if (!empty($row['children']) && ($this->isHere($row['id']) || empty($this->pdoTools->config['hideSubMenus'])) && $this->checkResource($row['id'])) { $idx = 1; $this->level++; $count = count($row['children']); foreach ($row['children'] as $v) { $v['idx'] = $idx++; $v['last'] = (int) $v['idx'] == $count; $children .= $this->templateBranch($v); } $this->level--; $row['children'] = $count; } else { $row['children'] = isset($row['children']) ? count($row['children']) : 0; } if (!empty($this->pdoTools->config['countChildren'])) { if ($ids = $this->modx->getChildIds($row['id'])) { $tstart = microtime(true); $count = $this->modx->getCount('modResource', array('id:IN' => $ids, 'published' => true, 'deleted' => false)); $this->modx->queryTime += microtime(true) - $tstart; $this->modx->executedQueries++; $this->pdoTools->addTime('Got the number of active children for resource "' . $row['id'] . '": ' . $count); } else { $count = 0; } $row['children'] = $count; } if (!empty($children)) { $pls = $this->addWayFinderPlaceholders(array('wrapper' => $children, 'classes' => ' class="' . $this->pdoTools->config['innerClass'] . '"', 'classNames' => $this->pdoTools->config['innerClass'], 'classnames' => $this->pdoTools->config['innerClass'], 'level' => $this->level)); $row['wrapper'] = $this->pdoTools->parseChunk($this->pdoTools->config['tplInner'], $pls); } else { $row['wrapper'] = ''; } if (empty($row['menutitle']) && !empty($row['pagetitle'])) { $row['menutitle'] = $row['pagetitle']; } $classes = $this->getClasses($row); if (!empty($classes)) { $row['classNames'] = $row['classnames'] = $classes; $row['classes'] = ' class="' . $classes . '"'; } else { $row['classNames'] = $row['classnames'] = $row['classes'] = ''; } if (!empty($this->pdoTools->config['useWeblinkUrl']) && $row['class_key'] == 'modWebLink') { $row['link'] = is_numeric(trim($row['content'], '[]~ ')) ? $this->modx->makeUrl(intval(trim($row['content'], '[]~ ')), '', '', $this->pdoTools->config['scheme']) : $row['content']; } else { $row['link'] = $this->modx->makeUrl($row['id'], $row['context_key'], '', $this->pdoTools->config['scheme']); } $row['title'] = !empty($this->pdoTools->config['titleOfLinks']) ? $row[$this->pdoTools->config['titleOfLinks']] : ''; $tpl = $this->getTpl($row); $row = $this->addWayFinderPlaceholders($row); return $this->pdoTools->getChunk($tpl, $row, $this->pdoTools->config['fastMode']); }
/** * @param string $tpl * @param int $time * * @return string */ public function getSource($tpl, &$time) { $content = ''; if ($pos = strpos($tpl, '@')) { $propertySet = substr($tpl, $pos + 1); $tpl = substr($tpl, 0, $pos); } /** @var modChunk $chunk */ if ($element = $this->modx->getObject('modTemplate', array('templatename' => $tpl))) { $content = $element->getContent(); $properties = array(); if (!empty($propertySet)) { if ($tmp = $element->getPropertySet($propertySet)) { $properties = $tmp; } } else { $properties = $element->getProperties(); } if (!empty($content) && !empty($properties)) { $content = $this->pdoTools->parseChunk('@INLINE ' . $content, $properties); } } return $content; }
/** * Recursive template of branch of menu * * @param array $row * * @return mixed|string */ public function templateBranch($row = array()) { $children = ''; $row['level'] = $this->level; if (!empty($row['children']) && ($this->isHere($row['id']) || empty($this->pdoTools->config['hideSubMenus'])) && $this->checkResource($row['id'])) { $idx = 1; $this->level++; $count = count($row['children']); foreach ($row['children'] as $v) { $v['idx'] = $idx++; $v['last'] = (int) $v['idx'] == $count; $children .= $this->templateBranch($v); } $this->level--; $row['children'] = $count; } else { $row['children'] = 0; } if (!empty($children)) { $pls = $this->addWayFinderPlaceholders(array('wrapper' => $children, 'classes' => ' class="' . $this->pdoTools->config['innerClass'] . '"', 'classNames' => $this->pdoTools->config['innerClass'], 'classnames' => $this->pdoTools->config['innerClass'])); $row['wrapper'] = $this->pdoTools->parseChunk($this->pdoTools->config['tplInner'], $pls); } else { $row['wrapper'] = ''; } if (empty($row['menutitle']) && !empty($row['pagetitle'])) { $row['menutitle'] = $row['pagetitle']; } $classes = $this->getClasses($row); if (!empty($classes)) { $row['classNames'] = $row['classnames'] = $classes; $row['classes'] = ' class="' . $classes . '"'; } else { $row['classNames'] = $row['classnames'] = $row['classes'] = ''; } if (!empty($this->pdoTools->config['useWeblinkUrl']) && $row['class_key'] == 'modWebLink') { $row['link'] = is_numeric(trim($row['content'], '[]~ ')) ? $this->modx->makeUrl(intval(trim($row['content'], '[]~ ')), $row['context_key'], '', $this->pdoTools->config['scheme']) : $row['content']; } else { $row['link'] = $this->modx->makeUrl($row['id'], $row['context_key'], '', $this->pdoTools->config['scheme']); } $row['title'] = !empty($this->pdoTools->config['titleOfLinks']) ? $row[$this->pdoTools->config['titleOfLinks']] : ''; $tpl = $this->getTpl($row); $row = $this->addWayFinderPlaceholders($row); return $this->pdoTools->getChunk($tpl, $row, $this->pdoTools->config['fastMode']); }
/** * @param string $key * @param bool $string * @param string $tpl * * @return array|string */ public function getInfo($key = '', $string = true, $tpl = '@INLINE {$key}: {$value}') { $totalTime = microtime(true) - $this->modx->startTime; $queryTime = sprintf("%2.4f s", $this->modx->queryTime); $totalTime = sprintf("%2.4f s", $totalTime); $phpTime = sprintf("%2.4f s", $totalTime - $queryTime); $queries = isset($this->modx->executedQueries) ? $this->modx->executedQueries : 0; $source = $this->modx->resourceGenerated ? 'database' : 'cache'; $info = array('queries' => $queries, 'totalTime' => $totalTime, 'queryTime' => $queryTime, 'phpTime' => $phpTime, 'source' => $source, 'log' => "\n" . $this->pdoTools->getTime()); if (empty($key) && !empty($string)) { $output = array(); foreach ($info as $key => $value) { $output[] = $this->pdoTools->parseChunk($tpl, array('key' => $key, 'value' => $value)); } return implode("\n", $output); } else { return !empty($key) && isset($info[$key]) ? $info[$key] : $info; } }