X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FBaseRepository.php;h=abec4c119b3f21c834cc73ba34017184ded8f94f;hb=d4f7bfa676bc9a8ffcb304912b48b360453d0f3c;hp=9f43d8fe144437adb62ee5c311667cb45833eb50;hpb=f67f398fe1faf6ec53407e50d7c62cc3a30fe09d;p=friendica.git diff --git a/src/BaseRepository.php b/src/BaseRepository.php index 9f43d8fe14..abec4c119b 100644 --- a/src/BaseRepository.php +++ b/src/BaseRepository.php @@ -1,4 +1,23 @@ . + * + */ namespace Friendica; @@ -90,26 +109,22 @@ abstract class BaseRepository extends BaseFactory */ 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]); } $params['limit'] = $limit; $models = $this->selectModels($boundCondition, $params); - $totalCount = DBA::count(static::$table_name, $condition); - return new static::$collection_class($models, $totalCount); } @@ -122,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], true); + if ($this->dba->update(static::$table_name, $model->toArray(), ['id' => $model->id], $model->getOriginalData())) { + $model->resetOriginalData(); + return true; + } + + return false; } /** @@ -136,11 +156,13 @@ abstract class BaseRepository extends BaseFactory { $return = $this->dba->insert(static::$table_name, $fields); - if ($return) { - $fields['id'] = $this->dba->lastInsertId(); - $return = $this->create($fields); + if (!$return) { + throw new HTTPException\InternalServerErrorException('Unable to insert new row in table "' . static::$table_name . '"'); } + $fields['id'] = $this->dba->lastInsertId(); + $return = $this->create($fields); + return $return; } @@ -197,4 +219,12 @@ abstract class BaseRepository extends BaseFactory return $models; } + + /** + * @param BaseCollection $collection + */ + public function saveCollection(BaseCollection $collection) + { + $collection->map([$this, 'update']); + } }