Skip to content
Snippets Groups Projects
PersonController.php 4.73 KiB
Newer Older
  • Learn to ignore specific revisions
  •  * @copyright  2021 Ad Aures
    
     * @license    https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3
     * @link       https://castopod.org/
     */
    
    
    use App\Models\PersonModel;
    
    use CodeIgniter\Exceptions\PageNotFoundException;
    use CodeIgniter\HTTP\RedirectResponse;
    
    use Modules\Media\Models\MediaModel;
    
    class PersonController extends BaseController
    
        public function _remap(string $method, string ...$params): mixed
    
            if ($params === []) {
    
                ($person = (new PersonModel())->getPersonById((int) $params[0])) instanceof Person
    
                'persons' => (new PersonModel())->orderBy('full_name')
                    ->findAll(),
    
            $this->setHtmlHead(lang('Person.all_persons'));
    
        public function view(Person $person): string
    
            $this->setHtmlHead($person->full_name);
    
        public function createAction(): RedirectResponse
    
                'avatar' => 'is_image[avatar]|ext_in[avatar,jpg,jpeg,png]|min_dims[avatar,400,400]|is_image_ratio[avatar,1,1]',
    
                return redirect()
                    ->back()
                    ->withInput()
                    ->with('errors', $this->validator->getErrors());
            }
    
    
                'created_by'      => user_id(),
                'updated_by'      => user_id(),
    
                'full_name'       => $this->request->getPost('full_name'),
                'unique_name'     => $this->request->getPost('unique_name'),
    
                'information_url' => $this->request->getPost('information_url'),
    
                'avatar'          => $this->request->getFile('avatar'),
    
            ]);
    
            $personModel = new PersonModel();
    
            if (! $personModel->insert($person)) {
    
                return redirect()
                    ->back()
                    ->withInput()
                    ->with('errors', $personModel->errors());
            }
    
    
            return redirect()->route('person-list')
                ->with('message', lang('Person.messages.createSuccess'));
    
        public function editView(Person $person): string
    
        public function editAction(Person $person): RedirectResponse
    
                'avatar' => 'is_image[avatar]|ext_in[avatar,jpg,jpeg,png]|min_dims[avatar,400,400]|is_image_ratio[avatar,1,1]',
    
                return redirect()
                    ->back()
                    ->withInput()
                    ->with('errors', $this->validator->getErrors());
            }
    
    
            $person->updated_by = user_id();
            $person->full_name = $this->request->getPost('full_name');
            $person->unique_name = $this->request->getPost('unique_name');
            $person->information_url = $this->request->getPost('information_url');
            $person->setAvatar($this->request->getFile('avatar'));
    
    
            $personModel = new PersonModel();
    
            if (! $personModel->update($person->id, $person)) {
    
                return redirect()
                    ->back()
                    ->withInput()
                    ->with('errors', $personModel->errors());
            }
    
    
            return redirect()->route('person-edit', [$person->id])->with(
    
                lang('Person.messages.editSuccess'),
    
        public function deleteAction(Person $person): RedirectResponse
    
                // delete avatar to prevent collision if recreating person
    
                (new MediaModel())->deleteMedia($person->avatar);
    
            (new PersonModel())->delete($person->id);
    
            return redirect()->route('person-list')
                ->with('message', lang('Person.messages.deleteSuccess'));