protected function _partConfig(Db_Query $query, Db_Query_Part $part) { $cfg = array(); $fields = $part->getFields(); $objectConfig = Db_Object_Config::getInstance($part->getObject()); $mainPanel = new stdClass(); $mainPanel->xtype = 'panel'; $mainPanel->border = false; ksort($fields); foreach ($fields as $name => $config) { $obj = new stdClass(); $obj->xtype = 'reportfield'; $obj->valueSelected = $config['select']; $obj->valueTitle = $config['title']; $obj->valueAlias = $config['alias']; $obj->valueField = $name; $obj->valueIsLink = false; $obj->valueSelectSub = $config['selectSub']; $obj->valueObject = $part->getObject(); $obj->valuePartId = $part->getId(); $obj->valueSubObject = ''; $obj->valueSubObjectTtile = ''; if ($config['isLink'] && !$objectConfig->isDictionaryLink($name)) { $obj->valueIsLink = true; $child = $query->findChild($part->getId(), $name); if ($child !== false) { $linked = $child->getObject(); } else { $linked = $objectConfig->getLinkedObject($name); } if ($linked) { $obj->valueSubObject = $linked; $obj->valueSubObjectTtile = Db_Object_Config::getInstance($linked)->get('title'); } } $cfg[] = $obj; } $mainPanel->items = $cfg; return array('items' => $mainPanel, 'objectcfg' => array('join' => $part->joinType, 'title' => $objectConfig->get('title'), 'object' => $part->getObject(), 'childField' => $part->getChildField())); }
protected function _addSqlPart(Db_Query_Part $part, $sql, Db_Query_Part $parenPart, $countOnly = false) { if ($countOnly) { $fields = array(); } else { $fields = $this->_extractFields($part); if (empty($fields)) { return; } } $parentTable = Db_Object_Config::getInstance($parenPart->getObject())->getTable(); $curTable = Db_Object_Config::getInstance($part->getObject())->getTable(); $condition = '`' . $parentTable . '`.`' . $part->parentField . '` = `' . $curTable . '`.`' . $part->childField . '`'; switch ($part->joinType) { case Db_Query_Part::JOIN_INNER: $sql->joinInner($curTable, $condition, $fields); break; case Db_Query_Part::JOIN_LEFT: $sql->joinLeft($curTable, $condition, $fields); break; case Db_Query_Part::JOIN_RIGHT: $sql->joinRight($curTable, $condition, $fields); break; } }