From: Philipp Date: Fri, 8 Oct 2021 17:17:27 +0000 (+0200) Subject: Move ProfileField from Model to Entity X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=1c0f92c38232947b21dd736c56760e1378698211;p=friendica.git Move ProfileField from Model to Entity --- diff --git a/src/Factory/Api/Mastodon/Field.php b/src/Factory/Api/Mastodon/Field.php index 6ff63fb1bf..2e33022425 100644 --- a/src/Factory/Api/Mastodon/Field.php +++ b/src/Factory/Api/Mastodon/Field.php @@ -25,13 +25,14 @@ use Friendica\BaseFactory; use Friendica\Collection\Api\Mastodon\Fields; use Friendica\Collection\ProfileFields; use Friendica\Content\Text\BBCode; -use Friendica\Model\ProfileField; +use Friendica\Profile\ProfileField\Entity\ProfileField; use Friendica\Network\HTTPException; class Field extends BaseFactory { /** - * @param ProfileField $profileField + * @param \Friendica\Profile\ProfileField\Entity\ProfileField $profileField + * * @return \Friendica\Object\Api\Mastodon\Field * @throws HTTPException\InternalServerErrorException */ diff --git a/src/Model/ProfileField.php b/src/Model/ProfileField.php deleted file mode 100644 index c5905f934c..0000000000 --- a/src/Model/ProfileField.php +++ /dev/null @@ -1,85 +0,0 @@ -. - * - */ - -namespace Friendica\Model; - -use Friendica\BaseModel; -use Friendica\Database\Database; -use Friendica\Network\HTTPException\NotFoundException; -use Friendica\Security\PermissionSet\Depository\PermissionSet as PermissionSetDepository; -use Friendica\Security\PermissionSet\Entity\PermissionSet; -use Psr\Log\LoggerInterface; - -/** - * Custom profile field model class. - * - * Custom profile fields are user-created arbitrary profile fields that can be assigned a permission set to restrict its - * display to specific Friendica contacts as it requires magic authentication to work. - * - * @property int uid - * @property int order - * @property int psid - * @property string label - * @property string value - * @property string created - * @property string edited - * @property PermissionSet permissionSet - */ -class ProfileField extends BaseModel -{ - /** @var PermissionSet */ - private $permissionSet; - - /** @var PermissionSetDepository */ - private $permissionSetDepository; - - public function __construct(Database $dba, LoggerInterface $logger, PermissionSetDepository $permissionSetDepository, array $data = []) - { - parent::__construct($dba, $logger, $data); - - $this->permissionSetDepository = $permissionSetDepository; - } - - public function __get($name) - { - $this->checkValid(); - - switch ($name) { - case 'permissionSet': - if (empty($this->permissionSet)) { - $permissionSet = $this->permissionSetDepository->selectOneById($this->psid, $this->uid); - if ($permissionSet->uid !== $this->uid) { - throw new NotFoundException(sprintf('PermissionSet %d (user-id: %d) for ProfileField %d (user-id: %d) is invalid.', $permissionSet->id, $permissionSet->uid, $this->id, $this->uid)); - } - - $this->permissionSet = $permissionSet; - } - - $return = $this->permissionSet; - break; - default: - $return = parent::__get($name); - break; - } - - return $return; - } -} diff --git a/src/Module/Settings/Profile/Index.php b/src/Module/Settings/Profile/Index.php index c51393c984..a7b71851df 100644 --- a/src/Module/Settings/Profile/Index.php +++ b/src/Module/Settings/Profile/Index.php @@ -30,7 +30,7 @@ use Friendica\Database\DBA; use Friendica\DI; use Friendica\Model\Contact; use Friendica\Model\Profile; -use Friendica\Model\ProfileField; +use Friendica\Profile\ProfileField\Entity\ProfileField; use Friendica\Model\User; use Friendica\Module\BaseSettings; use Friendica\Module\Security\Login; diff --git a/src/Profile/ProfileField/Entity/ProfileField.php b/src/Profile/ProfileField/Entity/ProfileField.php new file mode 100644 index 0000000000..6703615b0b --- /dev/null +++ b/src/Profile/ProfileField/Entity/ProfileField.php @@ -0,0 +1,85 @@ +. + * + */ + +namespace Friendica\Profile\ProfileField\Entity; + +use Friendica\BaseModel; +use Friendica\Database\Database; +use Friendica\Network\HTTPException\NotFoundException; +use Friendica\Security\PermissionSet\Depository\PermissionSet as PermissionSetDepository; +use Friendica\Security\PermissionSet\Entity\PermissionSet; +use Psr\Log\LoggerInterface; + +/** + * Custom profile field model class. + * + * Custom profile fields are user-created arbitrary profile fields that can be assigned a permission set to restrict its + * display to specific Friendica contacts as it requires magic authentication to work. + * + * @property int uid + * @property int order + * @property int psid + * @property string label + * @property string value + * @property string created + * @property string edited + * @property PermissionSet permissionSet + */ +class ProfileField extends BaseModel +{ + /** @var PermissionSet */ + private $permissionSet; + + /** @var PermissionSetDepository */ + private $permissionSetDepository; + + public function __construct(Database $dba, LoggerInterface $logger, PermissionSetDepository $permissionSetDepository, array $data = []) + { + parent::__construct($dba, $logger, $data); + + $this->permissionSetDepository = $permissionSetDepository; + } + + public function __get($name) + { + $this->checkValid(); + + switch ($name) { + case 'permissionSet': + if (empty($this->permissionSet)) { + $permissionSet = $this->permissionSetDepository->selectOneById($this->psid, $this->uid); + if ($permissionSet->uid !== $this->uid) { + throw new NotFoundException(sprintf('PermissionSet %d (user-id: %d) for ProfileField %d (user-id: %d) is invalid.', $permissionSet->id, $permissionSet->uid, $this->id, $this->uid)); + } + + $this->permissionSet = $permissionSet; + } + + $return = $this->permissionSet; + break; + default: + $return = parent::__get($name); + break; + } + + return $return; + } +} diff --git a/src/Repository/ProfileField.php b/src/Repository/ProfileField.php index 40417be486..75221933b3 100644 --- a/src/Repository/ProfileField.php +++ b/src/Repository/ProfileField.php @@ -36,7 +36,7 @@ class ProfileField extends BaseRepository { protected static $table_name = 'profile_field'; - protected static $model_class = Model\ProfileField::class; + protected static $model_class = \Friendica\Profile\ProfileField\Entity\ProfileField::class; protected static $collection_class = Collection\ProfileFields::class; @@ -58,7 +58,8 @@ class ProfileField extends BaseRepository /** * @param array $data - * @return Model\ProfileField + * + * @return \Friendica\Profile\ProfileField\Entity\ProfileField */ protected function create(array $data) { @@ -67,7 +68,8 @@ class ProfileField extends BaseRepository /** * @param array $condition - * @return Model\ProfileField + * + * @return \Friendica\Profile\ProfileField\Entity\ProfileField * @throws \Friendica\Network\HTTPException\NotFoundException */ public function selectFirst(array $condition) @@ -138,7 +140,8 @@ class ProfileField extends BaseRepository /** * @param array $fields - * @return Model\ProfileField|bool + * + * @return \Friendica\Profile\ProfileField\Entity\ProfileField|bool * @throws \Exception */ public function insert(array $fields) @@ -150,7 +153,8 @@ class ProfileField extends BaseRepository } /** - * @param Model\ProfileField $model + * @param \Friendica\Profile\ProfileField\Entity\ProfileField $model + * * @return bool * @throws \Exception */ @@ -202,7 +206,7 @@ class ProfileField extends BaseRepository unset($profileFieldOrder['new']); // Prunes profile field whose label has been emptied - $profileFields = $profileFields->filter(function (Model\ProfileField $profileField) use (&$profileFieldInputs, &$profileFieldOrder) { + $profileFields = $profileFields->filter(function (\Friendica\Profile\ProfileField\Entity\ProfileField $profileField) use (&$profileFieldInputs, &$profileFieldOrder) { $keepModel = !isset($profileFieldInputs[$profileField->id]) || !empty($profileFieldInputs[$profileField->id]['label']); if (!$keepModel) { @@ -218,7 +222,7 @@ class ProfileField extends BaseRepository $profileFieldOrder = array_flip(array_keys($profileFieldOrder)); // Update existing profile fields from form values - $profileFields = $profileFields->map(function (Model\ProfileField $profileField) use ($uid, &$profileFieldInputs, &$profileFieldOrder) { + $profileFields = $profileFields->map(function (\Friendica\Profile\ProfileField\Entity\ProfileField $profileField) use ($uid, &$profileFieldInputs, &$profileFieldOrder) { if (isset($profileFieldInputs[$profileField->id]) && isset($profileFieldOrder[$profileField->id])) { $psid = $this->permissionSet->selectOrCreate($this->permissionSetFactory->createFromString( $uid,