From 3297d5c3e66675fff455ba31fc3fdbd5f683e1c5 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Sun, 19 Jan 2020 19:21:30 -0500 Subject: [PATCH] Create new ProfileField classes - Create ProfileField model class - Remove obsolete BaseCollection->models property --- src/BaseCollection.php | 1 - src/Collection/ProfileFields.php | 10 +++ src/Model/ProfileField.php | 24 ++++++ src/Repository/ProfileField.php | 122 +++++++++++++++++++++++++++++++ 4 files changed, 156 insertions(+), 1 deletion(-) create mode 100644 src/Collection/ProfileFields.php create mode 100644 src/Model/ProfileField.php create mode 100644 src/Repository/ProfileField.php diff --git a/src/BaseCollection.php b/src/BaseCollection.php index 4d5803d585..5a20acee7f 100644 --- a/src/BaseCollection.php +++ b/src/BaseCollection.php @@ -24,7 +24,6 @@ abstract class BaseCollection extends \ArrayIterator { parent::__construct($models); - $this->models = $models; $this->totalCount = $totalCount ?? count($models); } diff --git a/src/Collection/ProfileFields.php b/src/Collection/ProfileFields.php new file mode 100644 index 0000000000..e171b839b2 --- /dev/null +++ b/src/Collection/ProfileFields.php @@ -0,0 +1,10 @@ +dba, $this->logger, $data); + } + + /** + * @param array $condition + * @return Model\ProfileField + * @throws \Friendica\Network\HTTPException\NotFoundException + */ + public function selectFirst(array $condition) + { + return parent::selectFirst($condition); + } + + /** + * @param array $condition + * @param array $params + * @return Collection\ProfileFields + * @throws \Exception + */ + public function select(array $condition = [], array $params = []) + { + return parent::select($condition, $params); + } + + /** + * @param array $condition + * @param array $params + * @param int|null $max_id + * @param int|null $since_id + * @param int $limit + * @return Collection\ProfileFields + * @throws \Exception + */ + public function selectByBoundaries(array $condition = [], array $params = [], int $max_id = null, int $since_id = null, int $limit = self::LIMIT) + { + return parent::selectByBoundaries($condition, $params, $max_id, $since_id, $limit); + } + + /** + * @param int $uid Field owner user Id + * @return Collection\ProfileFields + * @throws \Exception + */ + public function selectByUserId(int $uid) + { + return $this->select( + ['uid' => $uid], + ['order' => ['order']] + ); + } + + /** + * Retrieve all custom profile field a given contact is able to access to, including public profile fields. + * + * @param int $cid Private contact id, must be owned by $uid + * @param int $uid Field owner user id + * @return Collection\ProfileFields + * @throws \Exception + */ + public function selectByContactId(int $cid, int $uid) + { + $psids = PermissionSet::get($uid, $cid); + + // Includes public custom fields + $psids[] = 0; + + return $this->select( + ['uid' => $uid, 'psid' => $psids], + ['order' => ['order']] + ); + } + + /** + * @param array $fields + * @return Model\ProfileField|bool + * @throws \Exception + */ + public function insert(array $fields) + { + $fields['created'] = DateTimeFormat::utcNow(); + $fields['edited'] = DateTimeFormat::utcNow(); + + return parent::insert($fields); + } + + /** + * @param Model\ProfileField $model + * @return bool + * @throws \Exception + */ + public function update(BaseModel $model) + { + $model->edited = DateTimeFormat::utcNow(); + + return parent::update($model); + } +}