X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FBaseRepository.php;h=abec4c119b3f21c834cc73ba34017184ded8f94f;hb=9c7a4ae2bdc174c8224be87dc9af1324652970bc;hp=a66914e88b5b6a131a23a9ee7cec83beb46ed73c;hpb=b46b72ad3b345ff271e435199fea795264e3b799;p=friendica.git diff --git a/src/BaseRepository.php b/src/BaseRepository.php index a66914e88b..abec4c119b 100644 --- a/src/BaseRepository.php +++ b/src/BaseRepository.php @@ -1,4 +1,23 @@ . + * + */ namespace Friendica; @@ -63,15 +82,13 @@ abstract class BaseRepository extends BaseFactory * Chainable. * * @param array $condition - * @param array $order An optional array with order information - * @param int|array $limit Optional limit information - * + * @param array $params * @return BaseCollection * @throws \Exception */ - public function select(array $condition = [], array $order = [], $limit = null) + public function select(array $condition = [], array $params = []) { - $models = $this->selectModels($condition, $order, $limit); + $models = $this->selectModels($condition, $params); return new static::$collection_class($models); } @@ -83,33 +100,30 @@ abstract class BaseRepository extends BaseFactory * Chainable. * * @param array $condition - * @param array $order + * @param array $params * @param int? $max_id * @param int? $since_id * @param int $limit - * * @return BaseCollection * @throws \Exception */ - public function selectByBoundaries(array $condition = [], array $order = [], int $max_id = null, int $since_id = null, int $limit = self::LIMIT) + public function selectByBoundaries(array $condition = [], array $params = [], int $max_id = null, int $since_id = null, int $limit = self::LIMIT) { - $condition = DBA::collapseCondition($condition); + $totalCount = DBA::count(static::$table_name, $condition); $boundCondition = $condition; if (isset($max_id)) { - $boundCondition[0] .= " AND `id` < ?"; - $boundCondition[] = $max_id; + $boundCondition = DBA::mergeConditions($boundCondition, ['`id` < ?', $max_id]); } if (isset($since_id)) { - $boundCondition[0] .= " AND `id` > ?"; - $boundCondition[] = $since_id; + $boundCondition = DBA::mergeConditions($boundCondition, ['`id` > ?', $since_id]); } - $models = $this->selectModels($boundCondition, $order, $limit); + $params['limit'] = $limit; - $totalCount = DBA::count(static::$table_name, $condition); + $models = $this->selectModels($boundCondition, $params); return new static::$collection_class($models, $totalCount); } @@ -123,7 +137,12 @@ abstract class BaseRepository extends BaseFactory */ public function update(BaseModel $model) { - return $this->dba->update(static::$table_name, $model->toArray(), ['id' => $model->id], $model->getOriginalData()); + if ($this->dba->update(static::$table_name, $model->toArray(), ['id' => $model->id], $model->getOriginalData())) { + $model->resetOriginalData(); + return true; + } + + return false; } /** @@ -176,24 +195,12 @@ abstract class BaseRepository extends BaseFactory /** * @param array $condition Query condition - * @param array $order An optional array with order information - * @param int|array $limit Optional limit information - * + * @param array $params Additional query parameters * @return BaseModel[] * @throws \Exception */ - protected function selectModels(array $condition, array $order = [], $limit = null) + protected function selectModels(array $condition, array $params = []) { - $params = []; - - if (!empty($order)) { - $params['order'] = $order; - } - - if (!empty($limit)) { - $params['limit'] = $limit; - } - $result = $this->dba->select(static::$table_name, [], $condition, $params); /** @var BaseModel $prototype */