コード例 #1
0
 public function prepareQueryBeforeCount(xPDOQuery $c)
 {
     $c->leftJoin('modUser', 'CreatedBy');
     if ($this->getTagsTV()) {
         $c->leftJoin('modTemplateVarResource', 'Tags', array('Tags.tmplvarid' => $this->tvTags->get('id'), 'Tags.contentid = Article.id'));
     }
     $parent = $this->getProperty('parent', null);
     if (!empty($parent)) {
         $c->where(array('parent' => $parent));
     }
     $query = $this->getProperty('query', null);
     if (!empty($query)) {
         $queryWhere = array('pagetitle:LIKE' => '%' . $query . '%', 'OR:description:LIKE' => '%' . $query . '%', 'OR:introtext:LIKE' => '%' . $query . '%');
         if ($this->tvTags) {
             $queryWhere['OR:Tags.value:LIKE'] = '%' . $query . '%';
         }
         $c->where($queryWhere);
     }
     $filter = $this->getProperty('filter', '');
     switch ($filter) {
         case 'published':
             $c->where(array('published' => 1, 'deleted' => 0));
             break;
         case 'unpublished':
             $c->where(array('published' => 0, 'deleted' => 0));
             break;
         case 'deleted':
             $c->where(array('deleted' => 1));
             break;
         default:
             $c->where(array('deleted' => 0));
             break;
     }
     $c->where(array('class_key' => 'Article'));
     return $c;
 }
コード例 #2
0
 public function getElementSources()
 {
     $c = $this->modx->newQuery('modContext');
     $c->leftJoin('sources.modMediaSourceElement', 'SourceElements', array('SourceElements.object' => $this->tv->get('id'), 'SourceElements.object_class' => $this->tv->_class, 'SourceElements.context_key = modContext.key'));
     $c->leftJoin('sources.modMediaSource', 'Source', 'SourceElements.source = Source.id');
     $c->select($this->modx->getSelectColumns('modContext', 'modContext'));
     $c->select($this->modx->getSelectColumns('sources.modMediaSourceElement', 'SourceElements'));
     $c->select($this->modx->getSelectColumns('sources.modMediaSource', 'Source', '', array('name')));
     $c->where(array('key:!=' => 'mgr'));
     $c->sortby($this->modx->escape('rank'), 'ASC');
     $c->sortby($this->modx->escape('key'), 'DESC');
     $contexts = $this->modx->getCollection('modContext', $c);
     $list = array();
     /** @var modContext $context */
     foreach ($contexts as $context) {
         $source = $context->get('source');
         $list[] = array($context->get('key'), !empty($source) ? $source : $this->modx->getOption('default_media_source', null, 1), $context->get('name'));
     }
     return $list;
 }
コード例 #3
0
ファイル: gettvs.class.php プロジェクト: suasti/mxManager
 /**
  * @param modTemplateVar $tv
  *
  * @return array
  */
 protected function _getAutoTags(modTemplateVar $tv)
 {
     $params = $tv->get('input_properties');
     if (empty($params['parent_resources'])) {
         $params['parent_resources'] = '';
     }
     /** @var xPDOQuery $c */
     $c = $this->modx->newQuery('modTemplateVarResource');
     $c->innerJoin('modTemplateVar', 'TemplateVar');
     $c->innerJoin('modResource', 'Resource');
     $c->where(array('tmplvarid' => $tv->get('id')));
     if (!empty($params['parent_resources'])) {
         $ids = array();
         $parents = explode(',', $params['parent_resources']);
         $currCtx = 'web';
         $this->modx->switchContext('web');
         foreach ($parents as $id) {
             /** @var modResource $r */
             $r = $this->modx->getObject('modResource', $id);
             if ($r && $currCtx != $r->get('context_key')) {
                 $this->modx->switchContext($r->get('context_key'));
                 $currCtx = $r->get('context_key');
             }
             if ($r) {
                 $pids = $this->modx->getChildIds($id, 10, array('context' => $r->get('context_key')));
                 $ids = array_merge($ids, $pids);
             }
             $ids[] = $id;
         }
         $this->modx->switchContext('mgr');
         $ids = array_unique($ids);
         $c->where(array('Resource.id:IN' => $ids));
     }
     $tvs = $this->modx->getIterator('modTemplateVarResource', $c);
     $list = array();
     /** @var modTemplateVarResource $tv */
     foreach ($tvs as $tv) {
         $list = array_merge($list, explode(',', $tv->get('value')));
     }
     return array_unique($list);
 }
コード例 #4
0
 /**
  * @param string $content
  * @dataProvider providerSetContent
  * @depends testGetContent
  */
 public function testSetContent($content)
 {
     $this->tv->setContent($content);
     $this->assertEquals($content, $this->tv->get('default_text'));
 }
コード例 #5
0
 /**
  * Prepare radio boxes.
  *
  * @param modTemplateVar $tv
  * @return modTemplateVar
  */
 public function prepareRadio($tv)
 {
     $value = $tv->get('value');
     $default = $tv->get('default_text');
     // handles radio buttons
     $options = $tv->parseInputOptions($tv->processBindings($tv->get('elements'), $tv->get('name')));
     $items = array();
     $defaultIndex = '';
     $i = 0;
     foreach ($options as $option) {
         $opt = explode("==", $option);
         if (!isset($opt[1])) {
             $opt[1] = $opt[0];
         }
         /* set checked status */
         $checked = strcmp($opt[1], $value) == 0 ? ' checked="checked"' : '';
         /* set default value */
         if (strcmp($opt[1], $default) == 0) {
             $defaultIndex = 'tv' . $tv->get('id') . '-' . $i;
             $tv->set('default_text', $defaultIndex);
         }
         if (is_string($opt[1])) {
             $opt[1] = str_replace('"', '"', $opt[1]);
         }
         $items[] = array('text' => htmlspecialchars($opt[0], ENT_COMPAT, 'UTF-8'), 'name' => 'tv' . $tv->get('id'), 'value' => $opt[1], 'checked' => $checked, 'idx' => $i);
         $i++;
     }
     $list = array();
     foreach ($items as $item) {
         $list[] = $this->hm->getTpl('fields/radio.option', $item);
     }
     $tv->set('options', implode("\n", $list));
     return $tv;
 }