Beispiel #1
0
 /**
  * @return bool
  * @throws Exception
  */
 public function execute()
 {
     $originalTable = $this->entity->getTable();
     $data = $this->entity->tabelizeRecord($this->record);
     foreach ($data as $table => $update) {
         if ($this->tables && !in_array($table, $this->tables)) {
             continue;
         }
         if ($table == $this->entity->getTable()) {
             $this->update($table, $update);
         } else {
             // we don't know if children exists
             $this->updateOrInsert($table, $update);
         }
     }
     $this->entity->setTable($originalTable);
     return true;
 }
Beispiel #2
0
 /**
  *
  */
 public function execute()
 {
     $data = $this->entity->tabelizeRecord($this->record);
     /**
      * We need to get entity table extensions.
      * Lets hardcode them for now.
      */
     $extensions = ['i18n', 'p17n', ''];
     $table = $this->entity->getTable();
     $primaryKeys = $this->entity->getRepository()->getCache()->getTablePrimaryKeys($table);
     if (!$primaryKeys) {
         throw new Exception('Will NOT delete from table without primary keys ...');
     }
     foreach ($extensions as $ext) {
         if ($ext) {
             $ext = '_' . $ext;
         }
         if ($this->entity->getRepository()->getCache()->hasTable($table . $ext)) {
             /**
              * We will delete record from $table ...
              */
             $query = (new Delete())->setTable($table . $ext);
             /**
              * ... add primary key condition ...
              */
             foreach ($primaryKeys as $key) {
                 $query->where($key, $data[$table][$key]);
             }
             /**
              * ... prepare query ...
              */
             $prepare = $this->repository->prepareQuery($query);
             /**
              *  ... and execute it.
              */
             $this->repository->executePrepared($prepare);
         }
     }
     $this->record->setSaved(false);
     $this->record->setDeleted(true);
     return true;
 }
Beispiel #3
0
 protected function applyGuessedSorts(Entity $entity)
 {
     if (!$entity->getQuery()->getOrderBy()) {
         $cache = $entity->getRepository()->getCache();
         if ($cache->tableHasField($entity->getTable(), 'order')) {
             $entity->orderBy('`' . $entity->getTable() . '`.`order` ASC');
         } else {
             if ($cache->tableHasField($entity->getTable(), 'ord')) {
                 $entity->orderBy('`' . $entity->getTable() . '`.`ord` ASC');
             } else {
                 if ($cache->tableHasField($entity->getTable(), 'position')) {
                     $entity->orderBy('`' . $entity->getTable() . '`.`position` ASC');
                 } else {
                     if ($cache->tableHasField($entity->getTable(), 'dt_published')) {
                         $entity->orderBy('IF(`' . $entity->getTable() . '`.`dt_published` BETWEEN \'0000-00-00 00:00:01\' AND NOW() , 1, 0) DESC, id ASC');
                     } else {
                         $entity->orderBy('`' . $entity->getTable() . '`.`id` DESC');
                     }
                 }
             }
         }
     }
 }