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';
 }
Example #4
0
 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;
 }