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); }
/** * 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); }