Schlaefer /
Saito
| 1 | <?php |
||||
| 2 | |||||
| 3 | declare(strict_types=1); |
||||
| 4 | |||||
| 5 | /** |
||||
| 6 | * Saito - The Threaded Web Forum |
||||
| 7 | * |
||||
| 8 | * @copyright Copyright (c) the Saito Project Developers |
||||
| 9 | * @link https://github.com/Schlaefer/Saito |
||||
| 10 | * @license http://opensource.org/licenses/MIT |
||||
| 11 | */ |
||||
| 12 | |||||
| 13 | namespace App\Controller; |
||||
| 14 | |||||
| 15 | use Api\Controller\ApiAppController; |
||||
| 16 | use App\Controller\Component\PostingComponent; |
||||
| 17 | use App\Model\Table\EntriesTable; |
||||
| 18 | use Cake\I18n\Time; |
||||
| 19 | use Cake\View\Helper\IdGeneratorTrait; |
||||
| 20 | |||||
| 21 | /** |
||||
| 22 | * Class EntriesController |
||||
| 23 | * |
||||
| 24 | * @property EntriesTable $Entries |
||||
| 25 | * @property PostingComponent $Posting |
||||
| 26 | */ |
||||
| 27 | class PreviewController extends ApiAppController |
||||
| 28 | { |
||||
| 29 | use IdGeneratorTrait; |
||||
| 30 | |||||
| 31 | /** |
||||
| 32 | * Generate posting preview for JSON frontend. |
||||
| 33 | * |
||||
| 34 | * @return \Cake\Http\Response|void |
||||
| 35 | */ |
||||
| 36 | public function preview() |
||||
| 37 | { |
||||
| 38 | $this->loadModel('Entries'); |
||||
| 39 | $this->loadComponent('Posting'); |
||||
| 40 | |||||
| 41 | $data = [ |
||||
| 42 | 'category_id' => $this->request->getData('category_id'), |
||||
| 43 | 'edited_by' => null, |
||||
| 44 | 'fixed' => false, |
||||
| 45 | 'id' => 'preview', |
||||
| 46 | 'ip' => '', |
||||
| 47 | 'last_answer' => bDate(), |
||||
| 48 | 'name' => $this->CurrentUser->get('username'), |
||||
| 49 | 'pid' => $this->request->getData('pid') ?: 0, |
||||
| 50 | 'solves' => 0, |
||||
| 51 | 'subject' => $this->request->getData('subject'), |
||||
| 52 | 'text' => $this->request->getData('text'), |
||||
| 53 | 'user_id' => $this->CurrentUser->getId(), |
||||
| 54 | 'time' => new Time(), |
||||
| 55 | 'views' => 0, |
||||
| 56 | ]; |
||||
| 57 | |||||
| 58 | if (!empty($data['pid'])) { |
||||
| 59 | $parent = $this->Entries->get($data['pid']); |
||||
| 60 | $data = $this->Posting->prepareChildPosting($parent, $data); |
||||
|
0 ignored issues
–
show
Bug
introduced
by
Loading history...
|
|||||
| 61 | } |
||||
| 62 | |||||
| 63 | /** @var \App\Model\Entity\Entry */ |
||||
| 64 | $newEntry = $this->Entries->newEntity($data); |
||||
| 65 | $errors = $newEntry->getErrors(); |
||||
| 66 | |||||
| 67 | if (empty($errors)) { |
||||
| 68 | // no validation errors |
||||
| 69 | $newEntry['user'] = $this->CurrentUser->getSettings(); |
||||
| 70 | $newEntry['category'] = $this->Entries->Categories->find() |
||||
| 71 | ->where(['id' => $newEntry['category_id']]) |
||||
| 72 | ->first(); |
||||
| 73 | $posting = $newEntry->toPosting()->withCurrentUser($this->CurrentUser); |
||||
|
0 ignored issues
–
show
The method
toPosting() does not exist on Cake\Datasource\EntityInterface. It seems like you code against a sub-type of Cake\Datasource\EntityInterface such as App\Model\Entity\Entry.
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
Loading history...
|
|||||
| 74 | $this->set(compact('posting')); |
||||
| 75 | } else { |
||||
| 76 | $this->set(compact('errors')); |
||||
| 77 | $this->viewBuilder()->setTemplate('/Error/json/entityValidation'); |
||||
| 78 | } |
||||
| 79 | } |
||||
| 80 | } |
||||
| 81 |