forked from GNUsocial/gnu-social
		
	[COMPONENT][Posting] Fix request handling issues that resulted from splitting creation and controller
This commit is contained in:
		| @@ -137,28 +137,6 @@ class Conversation extends Component | ||||
|         return Event::next; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Posting event to add extra information to Component\Posting form data | ||||
|      * | ||||
|      * @param array $data Transport data to be filled with reply_to_id | ||||
|      * | ||||
|      * @throws \App\Util\Exception\ClientException | ||||
|      * @throws \App\Util\Exception\NoSuchNoteException | ||||
|      * | ||||
|      * @return bool EventHook | ||||
|      */ | ||||
|     public function onPostingModifyData(Request $request, Actor $actor, array &$data): bool | ||||
|     { | ||||
|         $data['reply_to_id'] = $request->get('_route') === 'conversation_reply_to' && $request->query->has('reply_to_id') | ||||
|                              ? $request->query->getInt('reply_to_id') | ||||
|                              : null; | ||||
|  | ||||
|         if (!\is_null($data['reply_to_id'])) { | ||||
|             Note::ensureCanInteract(Note::getById($data['reply_to_id']), $actor); | ||||
|         } | ||||
|         return Event::next; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Append on note information about user actions. | ||||
|      * | ||||
| @@ -194,6 +172,22 @@ class Conversation extends Component | ||||
|         return Event::next; | ||||
|     } | ||||
|  | ||||
|     private function getReplyToIdFromRequest(Request $request): ?int | ||||
|     { | ||||
|         if (!\is_array($request->get('post_note')) || !\array_key_exists('_next', $request->get('post_note'))) { | ||||
|             return null; | ||||
|         } | ||||
|         $next = parse_url($request->get('post_note')['_next']); | ||||
|         if (!\array_key_exists('query', $next)) { | ||||
|             return null; | ||||
|         } | ||||
|         parse_str($next['query'], $query); | ||||
|         if (!\array_key_exists('reply_to_id', $query)) { | ||||
|             return null; | ||||
|         } | ||||
|         return (int) $query['reply_to_id']; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Informs **\App\Component\Posting::onAppendRightPostingBlock**, of the **current page context** in which the given | ||||
|      * Actor is in. This is valuable when posting within a group route, allowing \App\Component\Posting to create a | ||||
| @@ -206,7 +200,7 @@ class Conversation extends Component | ||||
|      */ | ||||
|     public function onPostingGetContextActor(Request $request, Actor $actor, ?Actor &$context_actor): bool | ||||
|     { | ||||
|         $to_note_id = $request->query->get('reply_to_id'); | ||||
|         $to_note_id = $this->getReplyToIdFromRequest($request); | ||||
|         if (!\is_null($to_note_id)) { | ||||
|             // Getting the actor itself | ||||
|             $context_actor = Actor::getById(Note::getById((int) $to_note_id)->getActorId()); | ||||
| @@ -215,6 +209,27 @@ class Conversation extends Component | ||||
|         return Event::next; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Posting event to add extra information to Component\Posting form data | ||||
|      * | ||||
|      * @param array $data Transport data to be filled with reply_to_id | ||||
|      * | ||||
|      * @throws \App\Util\Exception\ClientException | ||||
|      * @throws \App\Util\Exception\NoSuchNoteException | ||||
|      * | ||||
|      * @return bool EventHook | ||||
|      */ | ||||
|     public function onPostingModifyData(Request $request, Actor $actor, array &$data): bool | ||||
|     { | ||||
|         $to_note_id = $this->getReplyToIdFromRequest($request); | ||||
|         if (!\is_null($to_note_id)) { | ||||
|             Note::ensureCanInteract(Note::getById($to_note_id), $actor); | ||||
|             $data['reply_to_id'] = $to_note_id; | ||||
|         } | ||||
|  | ||||
|         return Event::next; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Add minimal Note card to RightPanel template | ||||
|      */ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user