Пример #1
0
 /**
  * Returns current PDOStatement
  *
  * @return PDOStatement
  */
 private function execute($sql, array $params = null)
 {
     if ($this->isProfilerEnabled) {
         $this->profiler->reset();
     }
     /* @var $stmt PDOStatement */
     $stmt = $this->connection->prepare($sql);
     if ($params !== null) {
         foreach ($params as $key => $value) {
             $paramType = PDO::PARAM_STR;
             if (is_int($value)) {
                 $paramType = PDO::PARAM_INT;
             } elseif (is_bool($value)) {
                 $paramType = PDO::PARAM_BOOL;
             }
             $stmt->bindValue(is_int($key) ? $key + 1 : $key, $value, $paramType);
         }
     }
     OW::getEventManager()->trigger(new OW_Event("core.sql.exec_query", array("sql" => $sql, "params" => $params)));
     $stmt->execute();
     //TODO setup profiler
     $this->affectedRows = $stmt->rowCount();
     if ($this->isProfilerEnabled) {
         $this->queryExecTime = $this->profiler->getTotalTime();
         $this->totalQueryExecTime += $this->queryExecTime;
         $this->queryCount++;
         $this->queryLog[] = array('query' => $sql, 'execTime' => $this->queryExecTime, 'params' => $params);
     }
     return $stmt;
 }
Пример #2
0
 /**
  * Calls last event listener and returns it's result value.
  *
  * @param string $eventName
  * @param array $eventParams
  * @return mixed
  */
 public function call($eventName, $eventParams = array())
 {
     $event = new OW_Event($eventName, $eventParams);
     if (!empty($this->listeners[$eventName])) {
         ksort($this->listeners[$event->getName()]);
         // log triggered events for developer mode
         if ($this->devMode) {
             $startTime = UTIL_Profiler::getInstance()->getTotalTime();
             $this->profiler->reset();
             $handlers = reset($this->listeners[$eventName]);
             $result = call_user_func(end($handlers), $event);
             if (!in_array($event->getName(), $this->eventsToSkip) && count($this->eventsLog) < $this->maxItemsInLog) {
                 $this->eventsLog[] = array('type' => 'call', 'start' => $startTime, 'exec' => $this->profiler->getTotalTime(), 'event' => $event, 'listeners' => $this->listeners[$event->getName()]);
             }
         } else {
             $handlers = reset($this->listeners[$eventName]);
             $result = call_user_func(end($handlers), $event);
         }
         return $result;
     } else {
         // log events with no listeners
         $startTime = UTIL_Profiler::getInstance()->getTotalTime();
         if ($this->devMode && !in_array($event->getName(), $this->eventsToSkip) && count($this->eventsLog) < $this->maxItemsInLog) {
             $this->eventsLog[] = array('type' => 'call', 'start' => $startTime, 'event' => $event, 'listeners' => array(), 'exec' => 0);
         }
     }
 }