protected function getAdapter(Doctrine_Connection $connection) { $adapterName = strtolower($connection->getDriverName()); if (!isset($this->adapters[$adapterName])) { throw new dmException(sprintf('%s is not supported. Available adapters are %s', $adapterName, implode(', ', array_keys($this->adapters)))); } return new $this->adapters[$adapterName]($this->filesystem, $connection); }
/** Factory method. * * @param $connection Doctrine_Connection * * @return static */ public static function factory(Doctrine_Connection $connection) { switch ($connection->getDriverName()) { case Test_Database_Driver_Mysql::NAME: return new Test_Database_Driver_Mysql($connection); } return new self($connection); }
protected function canUpdateWithOrderBy(Doctrine_Connection $conn) { // If transaction level is greater than 1, // query will throw exceptions when using this function return $conn->getTransactionLevel() < 2 && $conn->getDriverName() != 'Pgsql' && $conn->getDriverName() != 'Sqlite' && $conn->getDriverName() != 'Mssql'; }
protected function canUpdateWithOrderBy(Doctrine_Connection $conn) { // If transaction level is greater than 1, // query will throw exceptions when using this function return $conn->getTransactionLevel() < 2 && // some drivers do not support UPDATE with ORDER BY query syntax $conn->getDriverName() != 'Pgsql' && $conn->getDriverName() != 'Sqlite'; }
private static function getTimeRangeQuery(Doctrine_Connection $c, $filter) { $prefix = $c->getPrefix(); $startTime = $filter->getStartTime(); $endTime = $filter->getEndTime(); $DATE_FORMAT; $DATE; $NOW; switch (strtolower($c->getDriverName())) { case 'pgsql': $DATE_FORMAT = "'YYYY-MM-DD HH24:MI:SS'"; $DATE = "TO_DATE"; $NOW = "NOW()"; break; case 'oracle': case 'icingaOracle': $DATE_FORMAT = "'YYYY-MM-DD HH24:MI:SS'"; $DATE = "TO_DATE"; $NOW = "CURRENT_DATE"; break; case 'mysql': $DATE_FORMAT = "'%Y-%m-%d %H:%i:%s'"; $DATE = "STR_TO_DATE"; $NOW = "now()"; break; } if (!$startTime && !$endTime) { return "SELECT * FROM " . $prefix . "slahistory"; } $timeRange = "SELECT state, object_id, scheduled_downtime,acknowledgement_time"; if (!$startTime) { $timeRange .= ",start_time"; } else { $timeRange .= "\n ,CASE\n WHEN start_time <= {$DATE}('{$startTime}',{$DATE_FORMAT}) AND\n COALESCE(acknowledgement_time, end_time, {$NOW}) >= {$DATE}('{$startTime}',{$DATE_FORMAT}) THEN {$DATE}('{$startTime}',{$DATE_FORMAT})\n ELSE start_time\n END AS start_time"; } if (!$endTime) { $timeRange .= ",COALESCE(end_time,{$NOW}) as end_time"; } else { $timeRange .= "\n ,CASE\n WHEN COALESCE(acknowledgement_time, end_time, {$NOW}) >= {$DATE}('{$endTime}',{$DATE_FORMAT}) AND\n start_time <= {$DATE}('{$endTime}',{$DATE_FORMAT}) THEN {$DATE}('{$endTime}',{$DATE_FORMAT})\n ELSE COALESCE(end_time,{$NOW});\n END AS end_time"; } $query = $timeRange . " FROM " . $prefix . "slahistory "; if (!($endTime || $startTime)) { return $query; } $query .= "WHERE "; if ($endTime) { $query .= "end_time <= {$DATE}('{$endTime}',{$DATE_FORMAT}) "; } if ($endTime && $startTime) { $query .= " AND "; } if ($startTime) { $query .= "start_time >= {$DATE}('{$startTime}',{$DATE_FORMAT}) "; } return $query; }