X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FBaseRepository.php;h=64a0d1c510626e995cb4c213f9565271fa6af062;hb=d53f46b9583737668a3314a22d1eeacb00a47db2;hp=9f43d8fe144437adb62ee5c311667cb45833eb50;hpb=f67f398fe1faf6ec53407e50d7c62cc3a30fe09d;p=friendica.git diff --git a/src/BaseRepository.php b/src/BaseRepository.php index 9f43d8fe14..64a0d1c510 100644 --- a/src/BaseRepository.php +++ b/src/BaseRepository.php @@ -1,4 +1,23 @@ . + * + */ namespace Friendica; @@ -122,7 +141,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 +160,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 +223,12 @@ abstract class BaseRepository extends BaseFactory return $models; } + + /** + * @param BaseCollection $collection + */ + public function saveCollection(BaseCollection $collection) + { + $collection->map([$this, 'update']); + } }