Example #1
0
 /**
  * @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;
 }
Example #2
0
 /**
  * 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']);
 }
Example #3
0
 /**
  * @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;
 }
Example #4
0
 /**
  * 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']);
 }
Example #5
0
 /**
  * @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;
     }
 }