/** * @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; }
/** * */ 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; }
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'); } } } } } }