Beispiel #1
0
 /**
  * Конструктор
  */
 protected function __construct()
 {
     parent::__construct();
     if (DEBUG) {
         Open_Benchmark::getInstance()->mark(__CLASS__ . '_start');
     }
     $this->config = Open_Config::getInstance();
     $this->input = Open_Input::getInstance();
     $this->router = Open_Router::getInstance();
     $this->text = Open_Text::getInstance();
     $this->view = Open_View::getInstance();
     $this->setArguments($this->router->getArguments());
 }
Beispiel #2
0
 function getArguments()
 {
     $arguments = array();
     if ($this->columns) {
         $arguments = array_merge($arguments, $this->columns->getArguments());
     }
     if ($this->action == 'insert-select') {
         $arguments = array_merge($arguments, $this->subquery->getArguments());
     }
     $arguments = array_merge($arguments, $this->tables->getArguments());
     $arguments = array_merge($arguments, $this->conditions->getArguments());
     $arguments = array_merge($arguments, $this->navigation->getArguments());
     return $arguments;
 }
Beispiel #3
0
 /**
  * Return select query string
  * @param object $query
  * @param boolean $with_values
  * @return string
  */
 function getSelectSql($query, $with_values = TRUE, $connection = NULL)
 {
     $with_values = false;
     //$limitOffset = $query->getLimit()->getOffset();
     //if($limitOffset)
     // TODO Implement Limit with offset with subquery
     $limit = '';
     $limitCount = '';
     $limitQueryPart = $query->getLimit();
     if ($limitQueryPart) {
         $limitCount = $limitQueryPart->getLimit();
     }
     if ($limitCount != '') {
         $limit = 'SELECT TOP ' . $limitCount;
     }
     $select = $query->getSelectString($with_values);
     if ($select == '') {
         return new Object(-1, "Invalid query");
     }
     if ($limit != '') {
         $select = $limit . ' ' . $select;
     } else {
         $select = 'SELECT ' . $select;
     }
     $from = $query->getFromString($with_values);
     if ($from == '') {
         return new Object(-1, "Invalid query");
     }
     $from = ' FROM ' . $from;
     $where = $query->getWhereString($with_values);
     if ($where != '') {
         $where = ' WHERE ' . $where;
     }
     $groupBy = $query->getGroupByString();
     if ($groupBy != '') {
         $groupBy = ' GROUP BY ' . $groupBy;
     }
     $orderBy = $query->getOrderByString();
     if ($orderBy != '') {
         $orderBy = ' ORDER BY ' . $orderBy;
     }
     if ($limitCount != '' && $query->limit->start > 0) {
         $order = $query->getOrder();
         $first_columns = array();
         foreach ($order as $val) {
             $tmpColumnName = $val->getPureColumnName();
             $first_columns[] = sprintf('%s(%s) as %s', $val->getPureSortOrder() == 'asc' ? 'max' : 'min', $tmpColumnName, $tmpColumnName);
             $first_sub_columns[] = $tmpColumnName;
         }
         $first_query = sprintf("select %s from (select top %d %s %s %s %s %s) xet", implode(',', $first_columns), $query->limit->start, implode(',', $first_sub_columns), $from, $where, $groupBy, $orderBy);
         $this->param = $query->getArguments();
         $result = $this->__query($first_query, $connection);
         $tmp = $this->_fetch($result);
         $sub_cond = array();
         foreach ($order as $k => $v) {
             //for example... use Document
             if (get_class($v->sort_order) == 'SortArgument') {
                 $sort_order = $v->sort_order->value;
             } else {
                 $sort_order = $v->sort_order;
             }
             $sub_cond[] = sprintf("%s %s '%s'", $v->getPureColumnName(), $sort_order == 'asc' ? '>' : '<', $tmp->{$v->getPureColumnName()});
         }
         if (!$where) {
             $sub_condition = ' WHERE ( ' . implode(' and ', $sub_cond) . ' )';
         } else {
             $sub_condition = ' and ( ' . implode(' and ', $sub_cond) . ' )';
         }
     }
     return $select . ' ' . $from . ' ' . $where . $sub_condition . ' ' . $groupBy . ' ' . $orderBy;
 }
Beispiel #4
0
 /**
  * A warning pushed on stack
  *
  * @param object $event The event
  *
  * @return array
  */
 public function pushWarning($event)
 {
     list($warn) = $event->getArguments();
     return array('timestamp' => time(), 'level' => 'warning', 'message' => $warn);
 }
Beispiel #5
0
 /**
  * A file scan ended
  *
  * @param object $event The event
  *
  * @return array
  */
 public function endScanFile($event)
 {
     list($file, $currentIndex, $maxIndex) = $event->getArguments();
     $results = $this->subject->toArray($file);
     $progress = '.';
     foreach ($results['conditions'] as $condition => $value) {
         if ($value > 0) {
             $progress = 'C';
             // conditional code found in $file
             break;
         }
     }
     print $progress;
     if ($currentIndex % $this->maxColumn === 0) {
         printf(' %' . strlen($maxIndex) . 'd / %' . strlen($maxIndex) . 'd (%3s%%)', $currentIndex, $maxIndex, floor($currentIndex / $maxIndex * 100));
         echo PHP_EOL;
     }
 }
Beispiel #6
0
 /**
  * Listen for aws command event
  *
  * @param object $event The event object
  */
 public function onCommand($event)
 {
     $this->data['commands'][] = array('command' => $event->getCommand(), 'arguments' => $event->getArguments(), 'executiontime' => $event->getExecutionTime());
 }
Beispiel #7
0
 /**
  * A warning pushed on stack
  *
  * @param object $event The event
  *
  * @return array
  */
 public function pushWarning($event)
 {
     list($warn) = $event->getArguments();
     return array('name' => self::GROWL_NOTIFY_WARN, 'title' => 'Warning', 'description' => $warn, 'options' => array('priority' => Net_Growl::PRIORITY_HIGH));
 }