Example #1
0
 /**
  * @param modX $modx
  * @param array $config
  */
 public function __construct(modX &$modx, $config = array())
 {
     $this->modx =& $modx;
     $config = array_merge(array('firstClass' => 'first', 'lastClass' => 'last', 'hereClass' => 'active', 'parentClass' => '', 'rowClass' => '', 'outerClass' => '', 'innerClass' => '', 'levelClass' => '', 'selfClass' => '', 'webLinkClass' => '', 'limit' => 0, 'hereId' => 0), $config, array('return' => 'data'));
     if (empty($config['tplInner']) && !empty($config['tplOuter'])) {
         $config['tplInner'] = $config['tplOuter'];
     }
     if (empty($config['hereId']) && !empty($modx->resource)) {
         $config['hereId'] = $modx->resource->id;
     }
     $fqn = $modx->getOption('pdoFetch.class', null, 'pdotools.pdofetch', true);
     if ($pdoClass = $modx->loadClass($fqn, '', false, true)) {
         $this->pdoTools = new $pdoClass($modx, $config);
     } elseif ($pdoClass = $modx->loadClass($fqn, MODX_CORE_PATH . 'components/pdotools/model/', false, true)) {
         $this->pdoTools = new $pdoClass($modx, $config);
     } else {
         $this->modx->log(modX::LOG_LEVEL_ERROR, 'Could not load pdoFetch from "MODX_CORE_PATH/components/pdotools/model/".');
         return false;
     }
     if ($config['hereId'] && ($currentResource = $this->pdoTools->getObject('modResource', $config['hereId']))) {
         $tmp = $modx->getParentIds($currentResource['id'], 100, array('context' => $currentResource['context_key']));
         $tmp[] = $config['hereId'];
         $this->parentTree = array_flip($tmp);
     }
     $modx->lexicon->load('pdotools:pdomenu');
     return true;
 }
Example #2
0
 /**
  * @param modX $modx
  * @param array $config
  */
 public function __construct(modX &$modx, $config = array())
 {
     $this->modx =& $modx;
     $config = array_merge(array('firstClass' => 'first', 'lastClass' => 'last', 'hereClass' => 'active', 'parentClass' => '', 'rowClass' => '', 'outerClass' => '', 'innerClass' => '', 'levelClass' => '', 'selfClass' => '', 'webLinkClass' => '', 'limit' => 0, 'hereId' => 0), $config, array('return' => 'data'));
     if (empty($config['tplInner']) && !empty($config['tplOuter'])) {
         $config['tplInner'] = $config['tplOuter'];
     }
     if (empty($config['hereId']) && !empty($modx->resource)) {
         $config['hereId'] = $modx->resource->id;
     }
     $fqn = $modx->getOption('pdoFetch.class', null, 'pdotools.pdofetch', true);
     $path = $modx->getOption('pdofetch_class_path', null, MODX_CORE_PATH . 'components/pdotools/model/', true);
     if ($pdoClass = $modx->loadClass($fqn, $path, false, true)) {
         $this->pdoTools = new $pdoClass($modx, $config);
     } else {
         return;
     }
     if ($config['hereId']) {
         $here = $this->pdoTools->getObject('modResource', $config['hereId'], array('select' => 'id, context_key'));
         if ($here) {
             $tmp = $modx->getParentIds($here['id'], 100, array('context' => $here['context_key']));
             $tmp[] = $config['hereId'];
             $this->parentTree = array_flip($tmp);
         }
     }
     $modx->lexicon->load('pdotools:pdomenu');
 }
Example #3
0
 /** @inheritdoc} */
 public function getProfitResourceGroups($id = 0)
 {
     $groups = array();
     $key = $this->MlmSystem->namespace;
     $options = array('cache_key' => $key . '/profit/group/' . __CLASS__ . '/resource/' . $id, 'cacheTime' => 0);
     if ($resource = $this->modx->getObject('modResource', array('id' => $id)) and !($groups = $this->MlmSystem->getCache($options))) {
         $ids = $this->modx->getParentIds($id, 10, array('context' => $resource->get('context_key')));
         $ids[] = $id;
         $ids = array_unique($ids);
         $q = $this->modx->newQuery('modResourceGroupResource', array('document:IN' => $ids));
         $q->leftJoin('MlmSystemProfitGroup', 'MlmSystemProfitGroup', 'MlmSystemProfitGroup.group = modResourceGroupResource.document_group');
         $q->where(array('MlmSystemProfitGroup.class' => 'modResourceGroup'));
         $q->select('document_group,profit');
         $q->sortby('profit');
         $q->groupby('MlmSystemProfitGroup.group');
         $tstart = microtime(true);
         if ($q->prepare() && $q->stmt->execute()) {
             $this->modx->queryTime += microtime(true) - $tstart;
             $this->modx->executedQueries++;
             while ($row = $q->stmt->fetch(PDO::FETCH_ASSOC)) {
                 $groups[$row['document_group']] = $row['profit'];
             }
         }
         $this->MlmSystem->setCache($groups, $options);
     }
     return $groups;
 }
Example #4
0
 /**
  * @param int $resource
  * @param string $context
  * @return mixed
  */
 public function getUltimateParent($resource = 0, $context = '')
 {
     $parents = $this->modx->getParentIds($resource, 10, array('context' => $context));
     $parents = array_reverse($parents);
     return isset($parents[1]) ? $parents[1] : 0;
 }
Example #5
0
 /**
  * @param null $id
  * @param int $height
  * @param array $options
  *
  * @return array
  */
 public function getParentIds($id = null, $height = 10, array $options = array())
 {
     return $this->modx->getParentIds($id, $height, $options);
 }
Example #6
0
 /**
  * @param $config
  */
 public function getBreadCrumbs($config)
 {
     $mode = $this->modx->getOption('mode', $config);
     $resource = $this->modx->getOption('resource', $config);
     if ($mode === modSystemEvent::MODE_NEW || !$resource) {
         if (!isset($_GET['parent'])) {
             return;
         }
         $resource = $this->modx->getObject('modResource', $_GET['parent']);
         if (!$resource) {
             return;
         }
     }
     $context = $resource->get('context_key');
     if ($context != 'web') {
         $this->modx->reloadContext($context);
     }
     /** @TODO Prepare as System Setting */
     $limit = 3;
     $resources = $this->modx->getParentIds($resource->get('id'), $limit, array('context' => $context));
     if ($mode === modSystemEvent::MODE_NEW) {
         array_unshift($resources, $_GET['parent']);
     }
     $crumbs = array();
     $root = $this->modx->toJSON(array('text' => $context, 'className' => 'first', 'root' => true, 'url' => '?'));
     $controllerConfig = $this->modx->controller->config;
     $action = $controllerConfig['controller'];
     if ($action == 'resource/create') {
         $action = 'resource/update';
     }
     if (isset($controllerConfig['id'])) {
         if ($controllerConfig['controller'] == 'resource/create') {
             $actionObj = $this->modx->getObject('modAction', array('controller' => 'resource/update'));
             $action = $actionObj->get('id');
         } else {
             $action = $controllerConfig['id'];
         }
     }
     $isAll = false;
     for ($i = count($resources) - 1; $i >= 0; $i--) {
         $resId = $resources[$i];
         if ($resId == 0) {
             continue;
         }
         $parent = $this->modx->getObject('modResource', $resId);
         if (!$parent) {
             break;
         }
         if ($parent->get('parent') == 0) {
             $isAll = true;
         }
         $crumbs[] = array('text' => $parent->get('pagetitle'), 'url' => '?a=' . $action . '&id=' . $parent->get('id'));
     }
     if (count($resources) == $limit && !$isAll) {
         array_unshift($crumbs, array('text' => '...'));
     }
     // Add pagetitle of current page
     if ($mode === modSystemEvent::MODE_NEW) {
         $pagetitle = $this->modx->lexicon('new_document');
     } else {
         $pagetitle = $resource->get('pagetitle');
     }
     $crumbs[] = array('text' => $pagetitle);
     $crumbs = $this->modx->toJSON($crumbs);
     $this->modx->controller->addJavascript($this->config['jsUrl'] . 'mgr/moddevtools.js');
     $this->modx->controller->addJavascript($this->config['jsUrl'] . 'mgr/widgets/breadcrumbs.panel.js');
     $this->modx->controller->addHtml("<script>\n            Ext.onReady(function() {\n                var header = Ext.getCmp('modx-resource-header').ownerCt;\n                header.insert(1, {\n                    xtype: 'moddevtools-breadcrumbs-panel'\n                    ,id: 'resource-breadcrumbs'\n                    ,desc: ''\n                    ,root : {$root}\n                });\n                header.doLayout();\n\n                var crumbCmp = Ext.getCmp('resource-breadcrumbs');\n                var bd = { trail : {$crumbs}};\n\t\t        crumbCmp.updateDetail(bd);\n\n\t\t        Ext.getCmp('modx-resource-pagetitle').on('keyup', function(){\n                    bd.trail[bd.trail.length-1] = {text: crumbCmp.getPagetitle()};\n                    crumbCmp._updatePanel(bd);\n                });\n            });\n            </script>");
 }