| 
									
										
										
										
											2021-03-26 14:39:37 +02:00
										 |  |  | <?php | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-01-02 11:17:40 -07:00
										 |  |  | /** | 
					
						
							|  |  |  |  * @package    Grav\Plugin\Admin | 
					
						
							|  |  |  |  * | 
					
						
							| 
									
										
										
										
											2024-01-05 11:50:46 +00:00
										 |  |  |  * @copyright  Copyright (c) 2015 - 2024 Trilby Media, LLC. All rights reserved. | 
					
						
							| 
									
										
										
										
											2023-01-02 11:17:40 -07:00
										 |  |  |  * @license    MIT License; see LICENSE file for details. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-26 14:39:37 +02:00
										 |  |  | declare(strict_types=1); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace Grav\Plugin\Admin; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | use Grav\Common\Grav; | 
					
						
							|  |  |  | use Grav\Common\Page\Interfaces\PageInterface; | 
					
						
							|  |  |  | use Grav\Common\Page\Page; | 
					
						
							|  |  |  | use Grav\Framework\Form\Interfaces\FormFactoryInterface; | 
					
						
							|  |  |  | use Grav\Framework\Form\Interfaces\FormInterface; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * Class FlexFormFactory | 
					
						
							|  |  |  |  * @package Grav\Plugin\FlexObjects | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | class AdminFormFactory implements FormFactoryInterface | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * @param Page $page | 
					
						
							|  |  |  |      * @param string $name | 
					
						
							|  |  |  |      * @param array $form | 
					
						
							|  |  |  |      * @return FormInterface|null | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function createPageForm(Page $page, string $name, array $form): ?FormInterface | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         return $this->createFormForPage($page, $name, $form); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * @param PageInterface $page | 
					
						
							|  |  |  |      * @param string $name | 
					
						
							|  |  |  |      * @param array $form | 
					
						
							|  |  |  |      * @return FormInterface|null | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function createFormForPage(PageInterface $page, string $name, array $form): ?FormInterface | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         /** @var Admin|null $admin */ | 
					
						
							|  |  |  |         $admin = Grav::instance()['admin'] ?? null; | 
					
						
							|  |  |  |         $object = $admin->form ?? null; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return $object && $object->getName() === $name ? $object : null; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } |