125 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			125 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| /**
 | |
|  *  @author          Tassos.gr <info@tassos.gr>
 | |
|  *  @link            https://www.tassos.gr
 | |
|  *  @copyright       Copyright © 2024 Tassos All Rights Reserved
 | |
|  *  @license         GNU GPLv3 <http://www.gnu.org/licenses/gpl.html> or later
 | |
|  */
 | |
| 
 | |
| namespace NRFramework;
 | |
| 
 | |
| use \NRFramework\WebClient;
 | |
| use \NRFramework\CacheManager;
 | |
| use Joomla\CMS\Factory as JoomlaFactory;
 | |
| use Joomla\CMS\Uri\Uri;
 | |
| 
 | |
| defined('_JEXEC') or die;
 | |
| 
 | |
| /**
 | |
| *  Framework Factory Class
 | |
| *  
 | |
| *  Used to decouple the framework from it's dependencies and make unit testing easier.
 | |
| *
 | |
| *  @todo Rename class to Container and make all methods static.
 | |
| */
 | |
| class Factory
 | |
| {
 | |
|     public function isFrontend()
 | |
|     {
 | |
|         return $this->getApplication()->isClient('site');
 | |
|     }
 | |
| 
 | |
|     public static function getCondition($name)
 | |
|     {
 | |
|         return \NRFramework\Conditions\ConditionsHelper::getInstance()->getCondition($name);
 | |
|     }
 | |
| 
 | |
|     public function getDbo()
 | |
|     {
 | |
|         return JoomlaFactory::getDbo();
 | |
|     }
 | |
| 
 | |
|     public function getApplication()
 | |
|     {
 | |
|         $app = JoomlaFactory::getApplication();
 | |
| 
 | |
|         // The 'forward_context' parameter is used to forward data from one page to another. This is rather useful in XHR requests. 
 | |
|         // This is mainly used in Convert Forms to make the {article} Smart Tag work after form submission.
 | |
|         if ($context = $app->input->get('forward_context', '', 'raw'))
 | |
|         {   
 | |
|             if (is_string($context))
 | |
|             {
 | |
|                 try
 | |
|                 {
 | |
|                     $context = json_decode($context, true);
 | |
|                     $app->input->set('forward_context', $context);
 | |
|                 } catch (\Throwable $th)
 | |
|                 {
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         return $app;
 | |
|     }
 | |
| 
 | |
|     public function getCookie($cookie_name)
 | |
|     {
 | |
|         return JoomlaFactory::getApplication()->input->cookie->get($cookie_name, null, 'string');
 | |
|     }
 | |
| 
 | |
|     public function getDocument()
 | |
|     {
 | |
|         return JoomlaFactory::getDocument();
 | |
|     }
 | |
| 
 | |
|     public function getUser($id = null)
 | |
|     {
 | |
|         return \NRFramework\User::get($id);
 | |
|     }
 | |
| 
 | |
|     public function getCache()
 | |
|     {
 | |
|         return CacheManager::getInstance(JoomlaFactory::getCache('tassos', ''));
 | |
|     }
 | |
| 
 | |
|     public function getDate($date = 'now', $tz = null)
 | |
|     {
 | |
|         return JoomlaFactory::getDate($date, $tz);
 | |
|     }
 | |
| 
 | |
|     public function getURI()
 | |
|     {
 | |
|         return Uri::getInstance();
 | |
|     }
 | |
| 
 | |
|     public function getURL()
 | |
|     {
 | |
|         return Uri::getInstance()->toString();
 | |
|     }
 | |
| 
 | |
|     public function getLanguage()
 | |
|     {
 | |
|         return JoomlaFactory::getLanguage();
 | |
|     }
 | |
| 
 | |
|     public function getSession()
 | |
|     {
 | |
|         return JoomlaFactory::getSession();
 | |
|     }
 | |
| 
 | |
|     public function getDevice()
 | |
|     {
 | |
|         return WebClient::getDeviceType();
 | |
|     }
 | |
| 
 | |
|     public function getBrowser()
 | |
|     {
 | |
|         return WebClient::getBrowser();
 | |
|     }
 | |
| 
 | |
|     public function getExecuter($php_code)
 | |
|     {
 | |
|         return new \NRFramework\Executer($php_code);
 | |
|     }
 | |
| } |