Esempio n. 1
0
 /**
  * Method to initialize the registrer
  *
  * @param null
  * $return null
  */
 public function init()
 {
     // Initialize the register
     MageBridgeRegisterHelper::preload();
 }
Esempio n. 2
0
 /**
  * Method to collect the data from the proxy
  *
  * @return array
  */
 public function build()
 {
     $application = JFactory::getApplication();
     $register = MageBridgeModelRegister::getInstance();
     $proxy = MageBridgeModelProxy::getInstance();
     $proxy->reset();
     // Initialize the register if possible
     MageBridgeRegisterHelper::preload();
     // Load cached data into the register
     $register->loadCache();
     // Exit immediately if the bridge is set offline
     if ($this->isOffline()) {
         MageBridgeModelDebug::getInstance()->error('Bridge is set offline');
         return $register->getRegister();
     }
     // Exit immediately if the api_user and api_key are not configured yet
     if (strlen(MagebridgeModelConfig::load('api_user')) == 0 && strlen(MagebridgeModelConfig::load('api_key')) == 0) {
         MageBridgeModelDebug::getInstance()->error('No API user or no API key');
         return $register->getRegister();
     }
     // Exit if the proxy doesn't work (after 10 proxy-requests)
     if ($proxy->getCount() > 10) {
         MageBridgeModelDebug::getInstance()->notice('Too many requests');
         return $register->getRegister();
     }
     // Only continue if we have no data yet, or when we're dealing with a new (or empty) register
     if (count($register->getPendingRegister()) > 0) {
         // Allow modification before we build the bridge
         MageBridgeModelDebug::beforeBuild();
         //MageBridgeModelDebug::getInstance()->trace('Backtrace', debug_backtrace());
         //MageBridgeModelDebug::getInstance()->trace('Declared classes', get_declared_classes());
         MageBridgeModelDebug::getInstance()->notice('Building bridge for ' . count($register->getPendingRegister()) . ' items');
         // Extra debugging options
         if (!defined('MAGEBRIDGE_MODULEHELPER_OVERRIDE')) {
             MageBridgeModelDebug::getInstance()->warning('Modulehelper override not active');
         }
         foreach ($register->getPendingRegister() as $segment) {
             switch ($segment['type']) {
                 case 'api':
                     MageBridgeModelDebug::getInstance()->notice('Pending Segment API resource: ' . $segment['name']);
                     break;
                 case 'block':
                     MageBridgeModelDebug::getInstance()->notice('Pending Segment block: ' . $segment['name']);
                     break;
                 case 'widget':
                     MageBridgeModelDebug::getInstance()->notice('Pending Segment widget: ' . $segment['name']);
                     break;
                 default:
                     $name = isset($segment['name']) ? $segment['name'] : null;
                     $type = isset($segment['type']) ? $segment['type'] : null;
                     if (empty($name)) {
                         MageBridgeModelDebug::getInstance()->notice('Pending Segment: ' . $type);
                     } else {
                         MageBridgeModelDebug::getInstance()->notice('Pending Segment: ' . $type . '/' . $name);
                     }
                     break;
             }
         }
         // Initialize proxy-settings
         if ($application->isSite() && JFactory::getApplication()->input->getCmd('option') != 'com_magebridge') {
             $proxy->setAllowRedirects(false);
         } else {
             if ($application->isAdmin() && (JFactory::getApplication()->input->getCmd('option') != 'com_magebridge' || JFactory::getApplication()->input->getCmd('view') != 'root')) {
                 $proxy->setAllowRedirects(false);
             }
         }
         // Allow others to hook into this event
         $this->beforeBuild();
         // Get the proxy and push the registry through the proxy
         //MageBridgeModelDebug::getInstance()->trace( 'Register', $register->getPendingRegister());
         MageBridgeModelDebug::getInstance()->notice('HTTP Referer: ' . $this->getHttpReferer());
         // Build the bridge through the proxy
         $data = $proxy->build($register->getPendingRegister());
         //MageBridgeModelDebug::getInstance()->trace( 'Bridge-data', $data );
         // Set the API-state flag
         $this->setApiState($proxy->getState());
         // Exit, if the result is empty
         if (empty($data) || !is_array($data)) {
             return $register->getRegister();
         }
         // Merge the new data with the already existing register
         $register->merge($data);
         if (isset($data['meta']['data']['state'])) {
             $this->setApiState($data['meta']['data']['state']);
         }
         if (isset($data['meta']['data']['extra'])) {
             $this->setApiExtra($data['meta']['data']['extra']);
         }
         if (isset($data['meta']['data']['api_session'])) {
             $this->setApiSession($data['meta']['data']['api_session']);
         }
         if (isset($data['meta']['data']['magento_config'])) {
             $this->setSessionData($data['meta']['data']['magento_config']);
         }
         // Allow others to hook into this event
         $this->afterBuild();
         // Fire all Magento events defined in the incoming bridge-data
         $this->setEvents();
     }
     //MageBridgeModelDebug::getInstance()->trace('Register data', $register->getRegister());
     //MageBridgeModelDebug::getInstance()->trace('Function stack', xdebug_get_function_stack());
     MageBridgeModelDebug::getInstance()->getBridgeData();
     return $register->getRegister();
 }