Exemplo n.º 1
0
    public static function getTemplateVarCollection(modResource &$resource) {
        $c = $resource->xpdo->newQuery('modTemplateVar');
        $c->query['distinct'] = 'DISTINCT';
        $c->select($resource->xpdo->getSelectColumns('modTemplateVar', 'modTemplateVar'));
        if ($resource->isNew()) {
            $c->select(array(
                "modTemplateVar.default_text AS value",
                "0 AS resourceId"
            ));
        } else {
            $c->select(array(
                "ISNULL(tvc.value,modTemplateVar.default_text) AS value",
                "{$resource->get('id')} AS resourceId"
            ));
        }
        $c->select($resource->xpdo->getSelectColumns('modTemplateVarTemplate', 'tvtpl', '', array('rank')));
        $c->innerJoin('modTemplateVarTemplate','tvtpl',array(
            'tvtpl.tmplvarid = modTemplateVar.id',
            'tvtpl.templateid' => $resource->get('template'),
        ));
        if (!$resource->isNew()) {
            $c->leftJoin('modTemplateVarResource','tvc',array(
                'tvc.tmplvarid = modTemplateVar.id',
                'tvc.contentid' => $resource->get('id'),
            ));
        }
        $c->sortby('tvtpl.rank,modTemplateVar.rank');

        return $resource->xpdo->getCollection('modTemplateVar', $c);
    }
Exemplo n.º 2
0
 /**
  * Used in MODX < 2.1 where the modResource::getTemplateVarCollection method is not yet available.
  * Collects modTemplateVar objects with their value for the current resource.
  *
  * @return array An array with TV objects.
  */
 private function _getTemplateVars()
 {
     $c = $this->modx->newQuery('modTemplateVar');
     $c->query['distinct'] = 'DISTINCT';
     $c->select($this->modx->getSelectColumns('modTemplateVar', 'modTemplateVar'));
     if ($this->resource->isNew()) {
         $c->select(array('modTemplateVar.default_text AS value', '0 AS resourceId'));
     } else {
         $c->select(array('IF(ISNULL(tvc.value),modTemplateVar.default_text,tvc.value) AS value', $this->resource->get('id') . ' AS resourceId'));
     }
     $c->innerJoin('modTemplateVarTemplate', 'tvtpl', array('tvtpl.tmplvarid = modTemplateVar.id', 'tvtpl.templateid' => $this->resource->get('template')));
     if (!$this->resource->isNew()) {
         $c->leftJoin('modTemplateVarResource', 'tvc', array('tvc.tmplvarid = modTemplateVar.id', 'tvc.contentid' => $this->resource->get('id')));
     }
     $c->sortby('tvtpl.rank,modTemplateVar.rank');
     return $this->modx->getCollection('modTemplateVar', $c);
 }