/** * @return owa_db */ public static function dbSingleton() { static $db; if (!isset($db)) { $db = owa_coreAPI::dbFactory(); } return $db; }
function generateSegmentQuery($base_entity) { $segment = $this->getSegment(); $segment_entity = owa_coreAPI::entityFactory($base_entity->getName()); $segment_entity->setTableAlias($segment_entity->getTableAlias() . '_segment'); if ($segment) { // use a new data access object $db = owa_coreAPI::dbFactory(); $db->select($segment_entity->getTableAlias() . '.*'); $db->from($segment_entity->getTableName(), $segment_entity->getTableAlias()); if (isset($segment['metrics'])) { //$this->applyConstraints( $segment['metrics'], $db); } if (isset($segment['dimensions'])) { //print_r($segment); foreach ($segment['dimensions'] as $k => $dim) { $check = $this->isDimensionRelated($dim['name'], $segment_entity->getName()); if ($check) { $dimension = $this->lookupDimension($dim['name'], $segment_entity); if (!isset($dimension['denormalized']) || $dimension['denormalized'] != true) { $this->addRelation($dimension, $db, $segment_entity); } } } //print_r( $segment['dimensions'] ); $this->applyConstraints($segment['dimensions'], $db, $segment_entity); // apply siteId, startDate, and endDate constraints $constraint_names = array('siteId', 'date'); $constraints_apply = array(); //print_r($this->params['constraints']); foreach ($constraint_names as $name) { $con = $this->getConstraint($name); if ($con) { $constraints_apply[$name] = $con; } } if ($constraints_apply) { $this->applyConstraints($constraints_apply, $db, $segment_entity); } } return sprintf('(%s)', $db->generateSelectQuerySql()); } }