execute() защищенный Метод

******************* internal ****************d*g*
protected execute ( )
Пример #1
0
 protected function execute()
 {
     if ($this->rows !== NULL) {
         return;
     }
     parent::execute();
     $this->onExecute();
 }
Пример #2
0
 protected function execute()
 {
     if ($this->rows !== NULL) {
         return;
     }
     $hash = md5($this->sqlBuilder->buildSelectQuery() . json_encode($this->sqlBuilder->getParameters()));
     $referencing =& $this->getRefTable($refPath)->referencing[$refPath . $hash];
     $this->rows =& $referencing['rows'];
     $this->referenced =& $referencing['refs'];
     $this->accessed =& $referencing['accessed'];
     $refData =& $referencing['data'];
     if ($refData === NULL) {
         $limit = $this->sqlBuilder->getLimit();
         $rows = count($this->refTable->rows);
         if ($limit && $rows > 1) {
             $this->sqlBuilder->setLimit(NULL, NULL);
         }
         parent::execute();
         $this->sqlBuilder->setLimit($limit, NULL);
         $refData = array();
         $offset = array();
         foreach ($this->rows as $key => $row) {
             $ref =& $refData[$row[$this->column]];
             $skip =& $offset[$row[$this->column]];
             if ($limit === NULL || $rows <= 1 || count($ref) < $limit && $skip >= $this->sqlBuilder->getOffset()) {
                 $ref[$key] = $row;
             } else {
                 unset($this->rows[$key]);
             }
             $skip++;
             unset($ref, $skip);
         }
     }
     $this->data =& $refData[$this->active];
     if ($this->data === NULL) {
         $this->data = array();
     } else {
         foreach ($this->data as $row) {
             $row->setTable($this);
             // injects correct parent GroupedSelection
         }
         reset($this->data);
     }
 }
Пример #3
0
 protected function execute()
 {
     if ($this->rows !== NULL) {
         $this->observeCache = $this;
         return;
     }
     $accessedColumns = $this->accessedColumns;
     $this->loadRefCache();
     if (!isset($this->refCacheCurrent['data'])) {
         // we have not fetched any data yet => init accessedColumns by cached accessedColumns
         $this->accessedColumns = $accessedColumns;
         $limit = $this->sqlBuilder->getLimit();
         $rows = count($this->refTable->rows);
         if ($limit && $rows > 1) {
             $this->sqlBuilder->setLimit(NULL, NULL);
         }
         parent::execute();
         $this->sqlBuilder->setLimit($limit, NULL);
         $data = array();
         $offset = array();
         $this->accessColumn($this->column);
         foreach ((array) $this->rows as $key => $row) {
             $ref =& $data[$row[$this->column]];
             $skip =& $offset[$row[$this->column]];
             if ($limit === NULL || $rows <= 1 || count($ref) < $limit && $skip >= $this->sqlBuilder->getOffset()) {
                 $ref[$key] = $row;
             } else {
                 unset($this->rows[$key]);
             }
             $skip++;
             unset($ref, $skip);
         }
         $this->refCacheCurrent['data'] = $data;
         $this->data =& $this->refCacheCurrent['data'][$this->active];
     }
     $this->observeCache = $this;
     if ($this->data === NULL) {
         $this->data = array();
     } else {
         foreach ($this->data as $row) {
             $row->setTable($this);
             // injects correct parent GroupedSelection
         }
         reset($this->data);
     }
 }
Пример #4
0
 protected function execute()
 {
     if ($this->rows !== NULL) {
         return;
     }
     $referencing =& $this->refTable->referencing[$this->getSql()];
     if ($referencing === NULL) {
         $limit = $this->limit;
         $rows = count($this->refTable->rows);
         if ($this->limit && $rows > 1) {
             $this->limit = NULL;
         }
         parent::execute();
         $this->limit = $limit;
         $referencing = array();
         $offset = array();
         foreach ($this->rows as $key => $row) {
             $ref =& $referencing[$row[$this->column]];
             $skip =& $offset[$row[$this->column]];
             if ($limit === NULL || $rows <= 1 || count($ref) < $limit && $skip >= $this->offset) {
                 $ref[$key] = $row;
             } else {
                 unset($this->rows[$key]);
             }
             $skip++;
             unset($ref, $skip);
         }
     }
     $this->data =& $referencing[$this->active];
     if ($this->data === NULL) {
         $this->data = array();
     }
 }
Пример #5
0
 protected function execute()
 {
     if ($this->rows !== NULL) {
         $this->observeCache = $this;
         return;
     }
     $hash = md5($this->getSql() . json_encode($this->sqlBuilder->getParameters()));
     $accessedColumns = $this->accessedColumns;
     $referencingBase =& $this->getRefTable($refPath)->referencing[$this->getCacheKey()];
     $referencing =& $referencingBase[$refPath . $hash];
     $this->rows =& $referencing['rows'];
     $this->referenced =& $referencing['refs'];
     $this->accessedColumns =& $referencing['accessed'];
     $this->observeCache =& $referencingBase['observeCache'];
     $refData =& $referencing['data'];
     if ($refData === NULL) {
         $this->accessedColumns = $accessedColumns;
         $limit = $this->sqlBuilder->getLimit();
         $rows = count($this->refTable->rows);
         if ($limit && $rows > 1) {
             $this->sqlBuilder->setLimit(NULL, NULL);
         }
         parent::execute();
         $this->sqlBuilder->setLimit($limit, NULL);
         $refData = array();
         $offset = array();
         $this->accessColumn($this->column);
         foreach ((array) $this->rows as $key => $row) {
             $ref =& $refData[$row[$this->column]];
             $skip =& $offset[$row[$this->column]];
             if ($limit === NULL || $rows <= 1 || count($ref) < $limit && $skip >= $this->sqlBuilder->getOffset()) {
                 $ref[$key] = $row;
             } else {
                 unset($this->rows[$key]);
             }
             $skip++;
             unset($ref, $skip);
         }
     }
     $this->observeCache = $this;
     $this->data =& $refData[$this->active];
     if ($this->data === NULL) {
         $this->data = array();
     } else {
         foreach ($this->data as $row) {
             $row->setTable($this);
         }
         reset($this->data);
         $this->checkReferenced = TRUE;
     }
 }
Пример #6
0
 protected function execute()
 {
     if ($this->rows !== NULL) {
         return;
     }
     $hash = md5($this->getSql() . json_encode($this->parameters));
     $referencing =& $this->refTable->referencing[$hash];
     if ($referencing === NULL) {
         $limit = $this->limit;
         $rows = count($this->refTable->rows);
         if ($this->limit && $rows > 1) {
             $this->limit = NULL;
         }
         parent::execute();
         $this->limit = $limit;
         $referencing = array();
         $offset = array();
         foreach ($this->rows as $key => $row) {
             $ref =& $referencing[$row[$this->column]];
             $skip =& $offset[$row[$this->column]];
             if ($limit === NULL || $rows <= 1 || count($ref) < $limit && $skip >= $this->offset) {
                 $ref[$key] = $row;
             } else {
                 unset($this->rows[$key]);
             }
             $skip++;
             unset($ref, $skip);
         }
     }
     $this->data =& $referencing[$this->active];
     if ($this->data === NULL) {
         $this->data = array();
     } else {
         foreach ($this->data as $row) {
             // update active id in the selection reference in case of requerying for another column
             // must be updated only the active key, not the Selection reference, because of caching accessed columns
             $row->getTable()->active = $this->active;
         }
         reset($this->data);
     }
 }
Пример #7
0
delete(){$condition=array($this->where,$this->parameters);$this->where[0]="$this->delimitedColumn = ?";$this->parameters[0]=$this->active;$return=parent::delete();list($this->where,$this->parameters)=$condition;return$return;}protected
function
execute(){if($this->rows!==NULL){return;}$hash=md5($this->getSql().json_encode($this->parameters));$referencing=&$this->referencing[$hash];if($referencing===NULL){$limit=$this->limit;$rows=count($this->refTable->rows);if($this->limit&&$rows>1){$this->limit=NULL;}parent::execute();$this->limit=$limit;$referencing=array();$offset=array();foreach($this->rows
as$key=>$row){$ref=&$referencing[$row[$this->column]];$skip=&$offset[$row[$this->column]];if($limit===NULL||$rows<=1||(count($ref)<$limit&&$skip>=$this->offset)){$ref[$key]=$row;}else{unset($this->rows[$key]);}$skip++;unset($ref,$skip);}}$this->data=&$referencing[$this->active];if($this->data===NULL){$this->data=array();}else{reset($this->data);}}}}namespace Nette\DI{use