Ejemplo n.º 1
0
 /**
  * Event onAfterRender
  *
  * @access public
  * @param null
  * @return null
  */
 public function onAfterRender()
 {
     $bridge = MageBridgeModelBridge::getInstance();
     $bridge->build();
     $register = MageBridgeModelRegister::getInstance();
     $segment = $register->getById($this->magebridge_register_id);
 }
Ejemplo n.º 2
0
 /**
  * Event onBeforeBuildMageBridge
  *
  * @access public
  * @param null
  * @return null
  */
 public function onBeforeBuildMageBridge()
 {
     // Get base variables
     $application = JFactory::getApplication();
     // Get the current Magento request
     $request = MageBridgeUrlHelper::getRequest();
     // Check for the logout-page
     if ($request == 'customer/account/logoutSuccess') {
         $application->logout();
     }
     // When visiting the checkout/cart/add URL without a valid session, the action will fail because the session does not exist yet
     // The following workaround makes sure we first redirect to another page (to initialize the session) after which we can add the product
     if (preg_match('/checkout\\/cart\\/add\\//', $request) && !preg_match('/redirect=1/', $request)) {
         $bridge = MageBridgeModelBridge::getInstance();
         $register = MageBridgeModelRegister::getInstance();
         $session = $bridge->getMageSession();
         // Check for the Magento session-key stored in the Joomla! session
         // Session is NOT yet initialized, therefor addtocart is not working yet either
         if (empty($session) && !empty($_COOKIE)) {
             // Redirect the client to an intermediate page to properly initialize the session
             $bridge->setHttpReferer(MageBridgeUrlHelper::route($request . '?redirect=1'));
             MageBridgeUrlHelper::setRequest('magebridge/redirect/index/url/' . base64_encode($request));
             MageBridgeModelBridgeMeta::getInstance()->reset();
         }
     }
 }
Ejemplo n.º 3
0
 /**
  * Singleton method
  *
  * @param null
  * @return MageBridgeModelRegister
  */
 public static function getInstance()
 {
     if (null == self::$_instance) {
         self::$_instance = new self();
         self::$_instance->init();
     }
     return self::$_instance;
 }
Ejemplo n.º 4
0
 public function getResult()
 {
     // Register this request
     $register = MageBridgeModelRegister::getInstance();
     $register->add('api', 'magebridge_storegroups.list');
     // Send the request to the bridge
     $bridge = MageBridgeModelBridge::getInstance();
     $bridge->build();
     $result = $bridge->getAPI('magebridge_storegroups.list');
     return $result;
 }
Ejemplo n.º 5
0
 /**
  * Event onBeforeBuildMageBridge
  *
  * @access public
  * @param null
  * @return null
  */
 public function onBeforeBuildMageBridge()
 {
     // Get the current Magento request
     $request = MageBridgeUrlHelper::getRequest();
     // Get the current MageBridge register
     $register = MageBridgeModelRegister::getInstance();
     // Check for the checkout-page
     if ($request == 'checkout/onepage') {
         $register->add('mystuff', null, array('test1', 'test2', 'test3'));
     }
 }
 public static function getResult()
 {
     $bridge = MageBridgeModelBridge::getInstance();
     $result = $bridge->getAPI('customer_group.list');
     if (empty($result)) {
         // Register this request
         $register = MageBridgeModelRegister::getInstance();
         $register->add('api', 'customer_group.list');
         // Send the request to the bridge
         $result = $bridge->getAPI('customer_group.list');
     }
     return $result;
 }
Ejemplo n.º 7
0
 /**
  * Method to get a list of scripts from the API
  *
  * @param null
  * @return array
  */
 public static function getResult()
 {
     $bridge = MageBridgeModelBridge::getInstance();
     $headers = $bridge->getHeaders();
     if (empty($headers)) {
         // Send the request to the bridge
         $register = MageBridgeModelRegister::getInstance();
         $register->add('headers');
         $bridge->build();
         $headers = $bridge->getHeaders();
     }
     $scripts = array();
     if (!empty($headers['items'])) {
         foreach ($headers['items'] as $item) {
             if (strstr($item['type'], 'js')) {
                 $scripts[] = array('value' => $item['name'], 'label' => $item['name']);
             }
         }
     }
     return $scripts;
 }
Ejemplo n.º 8
0
 /**
  * Method to display the requested view
  */
 public function display($tpl = null)
 {
     // Determine which block to display
     $blockName = JFactory::getApplication()->input->getString('block');
     // Fetch the block
     if (!empty($blockName)) {
         // Get the register and add the block-request
         $register = MageBridgeModelRegister::getInstance();
         $register->clean();
         $register->add('block', $blockName);
         // Build the bridge
         MageBridgeModelDebug::getInstance()->notice('Building AJAX view for block "' . $blockName . '"');
         $bridge = MageBridgeModelBridge::getInstance();
         $bridge->build();
         // Query the bridge for the block
         $block = $bridge->getBlock($blockName);
         print $block;
     }
     // Close the application
     JFactory::getApplication()->close();
 }
Ejemplo n.º 9
0
 /**
  * Helper-method to build the bridge
  * 
  * @param string $block_name
  * @return null
  */
 public function build()
 {
     static $block = null;
     if (empty($block)) {
         // Get the register and add all block-requirements to it
         $register = MageBridgeModelRegister::getInstance();
         $register->add('headers');
         $register->add('block', $this->block_name);
         // Only request breadcrumbs if we are loading another page than the homepage
         if (MagebridgeModelConfig::load('enable_breadcrumbs') == 1) {
             $request = MageBridgeUrlHelper::getRequest();
             if (!empty($request)) {
                 $register->add('breadcrumbs');
             }
         }
         // Build the bridge
         MageBridgeModelDebug::getInstance()->notice('Building view');
         $bridge = MageBridge::getBridge();
         $bridge->build();
         $bridge->setHeaders();
         // Add things for the frontend specifically
         $application = JFactory::getApplication();
         if ($application->isSite()) {
             if (MagebridgeModelConfig::load('enable_breadcrumbs') == 1) {
                 $bridge->setBreadcrumbs();
             }
         }
         // Query the bridge for the block
         $block = $bridge->getBlock($this->block_name);
         // Empty blocks
         if (empty($block)) {
             MageBridgeModelDebug::getInstance()->warning('JView: Empty block: ' . $this->block_name);
             $block = JText::_($this->getOfflineMessage());
         }
     }
     return $block;
 }
Ejemplo n.º 10
0
 public function preBuildBridge()
 {
     // Register the needed segments
     $register = MageBridgeModelRegister::getInstance();
     $register->add('headers');
     $register->add('api', 'customer_group.list');
     $register->add('api', 'magebridge_websites.list');
     // Build the bridge and collect all segments
     $bridge = MageBridge::getBridge();
     $bridge->build();
 }
Ejemplo n.º 11
0
 public function getResponseData($name, $arguments = null)
 {
     return MageBridgeModelRegister::getInstance()->getData('block', $name, $arguments);
 }
Ejemplo n.º 12
0
 protected function getResponse($type = '', $name = null, $arguments = null, $id = null)
 {
     return MageBridgeModelRegister::getInstance()->get($type, $name, $arguments, $id);
 }
Ejemplo n.º 13
0
 public static function getThemes()
 {
     $bridge = MageBridgeModelBridge::getInstance();
     $result = $bridge->getAPI('magebridge_theme.list');
     if (empty($result)) {
         // Register this request
         $register = MageBridgeModelRegister::getInstance();
         $id = $register->add('api', 'magebridge_theme.list');
         // Build the bridge
         $bridge->build();
         // Send the request to the bridge
         $result = $register->getDataById($id);
     }
     return $result;
 }
Ejemplo n.º 14
0
 /**
  * Event onAfterRender
  *
  * @access public
  * @param null
  * @return null
  */
 public function onAfterRender()
 {
     // Don't do anything if MageBridge is not enabled
     if ($this->isEnabled() == false) {
         return false;
     }
     if (JFactory::getApplication()->input->getCmd('option') == 'com_zoo') {
         $body = JResponse::getBody();
         // Check for Magento CMS-tags
         if (preg_match('/\\{\\{([^}]+)\\}\\}/', $body) || preg_match('/\\{mb([^}]+)\\}/', $body)) {
             // Get system variables
             $bridge = MageBridgeModelBridge::getInstance();
             $register = MageBridgeModelRegister::getInstance();
             // Detect the request-tag
             if (preg_match_all('/\\{mbrequest url="([^\\"]+)"\\}/', $body, $matches)) {
                 foreach ($matches[0] as $matchIndex => $match) {
                     $url = $matches[1][$matchIndex];
                     MageBridgeUrlHelper::setRequest($url);
                     $body = str_replace($match, '', $body);
                 }
             }
             // Detect block-names
             if (preg_match_all('/\\{mbblock name="([^\\"]+)"\\}/', $body, $matches)) {
                 foreach ($matches[0] as $matchIndex => $match) {
                     $block_name = $matches[1][$matchIndex];
                     $register->add('block', $block_name);
                 }
             }
             // Include the MageBridge register
             $key = md5(var_export($body, true)) . ':' . JFactory::getApplication()->input->getCmd('option');
             $text = MageBridgeEncryptionHelper::base64_encode($body);
             // Conditionally load CSS
             if ($this->params->get('load_css') == 1 || $this->params->get('load_js') == 1) {
                 $bridge->register('headers');
             }
             // Build the bridge
             $segment_id = $bridge->register('filter', $key, $text);
             $bridge->build();
             // Load CSS if needed
             if ($this->params->get('load_css') == 1) {
                 $bridge->setHeaders('css');
             }
             // Load JavaScript if needed
             if ($this->params->get('load_js') == 1) {
                 $bridge->setHeaders('js');
             }
             // Get the result from the bridge
             $result = $bridge->getSegmentData($segment_id);
             $result = MageBridgeEncryptionHelper::base64_decode($result);
             // Only replace the original if the new content exists
             if (!empty($result)) {
                 $body = $result;
             }
             // Detect block-names
             if (preg_match_all('/\\{mbblock name="([^\\"]+)"\\}/', $body, $matches)) {
                 foreach ($matches[0] as $matchIndex => $match) {
                     $block_name = $matches[1][$matchIndex];
                     $block = $bridge->getBlock($block_name);
                     $body = str_replace($match, $block, $body);
                 }
             }
         }
         if (!empty($body)) {
             JResponse::setBody($body);
         }
     }
 }
Ejemplo n.º 15
0
 /**
  * Helper-method to return the Magento configuration
  *
  * @param string $name
  * @param boolean $allow_cache
  *
  * @return mixed
  */
 public function getSessionData($name = null, $allow_cache = true)
 {
     // Do not use this function, when Joomla! has not routed the request yet
     $option = JFactory::getApplication()->input->getCmd('option');
     if (empty($option)) {
         return null;
     }
     // Fetch the current register
     $data = MageBridgeModelRegister::getInstance()->getRegister();
     if (isset($data['meta']['data']['magento_config'][$name])) {
         return $data['meta']['data']['magento_config'][$name];
     }
     if ($allow_cache == false) {
         return null;
     }
     $session = JFactory::getSession();
     $data = $session->get('magento_config');
     if (!empty($name)) {
         if (isset($data[$name])) {
             return $data[$name];
         } else {
             return null;
         }
     }
     return $data;
 }
Ejemplo n.º 16
0
 /**
  * Method to authenticate an user - called from the "Authentication - MageBridge" plugin
  *
  * @param string $username
  * @param string $password
  * @param string $application
  * @return array
  */
 public function authenticate($username = null, $password = null, $application = 'site')
 {
     // Encrypt values for transfer through the MageBridge API
     $username = MageBridgeEncryptionHelper::encrypt($username);
     $password = MageBridgeEncryptionHelper::encrypt($password);
     // Construct the API-arguments
     $arguments = array('username' => $username, 'password' => $password, 'application' => $application, 'disable_events' => 1);
     // Initalize the needed objects
     $bridge = MageBridgeModelBridge::getInstance();
     $register = MageBridgeModelRegister::getInstance();
     // Build the bridge and fetch the result
     $id = $register->add('authenticate', null, $arguments);
     $bridge->build();
     $data = $register->getDataById($id);
     return $data;
 }
Ejemplo n.º 17
0
 /**
  * Event onUserLogout
  * 
  * @access public
  * @param array $user
  * @param array $options
  * @return bool
  */
 public function onUserLogout($user = null, $options = array())
 {
     // Check if we can run this event or not
     if (MageBridgePluginHelper::allowEvent('onUserLogout', $options) == false) {
         return;
     }
     // Get system variables
     $application = JFactory::getApplication();
     $session = JFactory::getSession();
     $bridge = MageBridgeModelBridge::getInstance();
     $register = MageBridgeModelRegister::getInstance();
     // Remove the frontend-cookie
     setcookie('frontend', NULL, -1);
     $session->set('magento_session', null);
     // Build the bridge and fetch the result
     $arguments = array('disable_events' => 1);
     $id = $register->add('logout', null, $arguments);
     $bridge->build();
     // Check whether SSO is enabled
     if ($this->getParam('enable_sso') == 1 && isset($user['username'])) {
         if ($application->isSite() && $this->getParam('enable_auth_frontend') == 1) {
             MageBridgeModelUserSSO::doSSOLogout($user['username']);
         } else {
             if ($application->isAdmin() && $this->getParam('enable_auth_backend') == 1) {
                 MageBridgeModelUserSSO::doSSOLogout($user['username']);
             }
         }
     }
     return true;
 }
Ejemplo n.º 18
0
 /**
  * Method to do all bridge-based checks
  *
  * @package MageBridge
  * @access public
  * @return null
  */
 public function doBridgeChecks()
 {
     $register = MageBridgeModelRegister::getInstance();
     $bridge = MageBridgeModelBridge::getInstance();
     // First add all the things we need to the bridge
     $version_id = $register->add('version');
     // Build the bridge
     $bridge->build();
     $magebridge_version_magento = $register->getDataById($version_id);
     $magebridge_version_joomla = MageBridgeUpdateHelper::getComponentVersion();
     if (empty($magebridge_version_magento)) {
         $this->addResult('bridge', 'Bridge version', self::CHECK_WARNING, JText::_('CHECK_BRIDGE_NO_VERSION'));
     } else {
         $result = version_compare($magebridge_version_magento, $magebridge_version_joomla, '=') ? self::CHECK_OK : self::CHECK_ERROR;
         $this->addResult('bridge', 'Bridge version', $result, JText::sprintf('CHECK_BRIDGE_VERSION', $magebridge_version_magento, $magebridge_version_joomla));
     }
     $result = MageBridgeModelConfig::load('modify_url') == 1 ? self::CHECK_OK : self::CHECK_WARNING;
     $this->addResult('bridge', 'Modify URLs', $result, JText::_('CHECK_BRIDGE_MODIFY_URL'));
     $result = MageBridgeModelConfig::load('link_to_magento') == 0 ? self::CHECK_OK : self::CHECK_WARNING;
     $this->addResult('bridge', 'Link to Magento', $result, JText::_('CHECK_BRIDGE_LINK_TO_MAGENTO'));
     //$result = (defined('MAGEBRIDGE_MODULEHELPER_OVERRIDE') == true) ? self::CHECK_OK : self::CHECK_WARNING;
     //$this->addResult('bridge', 'Modulehelper override', $result, JText::_('CHECK_BRIDGE_MODULEHELPER_OVERRIDE'));
     return;
 }
Ejemplo n.º 19
0
 public function getMageConfig($name = null, $allow_cache = true)
 {
     $data = MageBridgeModelRegister::getInstance()->getRegister();
     if (isset($data['meta']['data']['magento_config'][$name])) {
         return $data['meta']['data']['magento_config'][$name];
     }
     if ($allow_cache == false) {
         return null;
     }
     $session = JFactory::getSession();
     $data = $session->get('magento_config');
     if (!empty($name)) {
         if (isset($data[$name])) {
             return $data[$name];
         } else {
             return null;
         }
     }
     return $data;
 }
Ejemplo n.º 20
0
 /**
  * Event onUserLogout
  *
  * @param array $user
  * @param array $options
  *
  * @return bool
  */
 public function onUserLogout($user = null, $options = array())
 {
     // Check if we can run this event or not
     if (MageBridgePluginHelper::allowEvent('onUserLogout', $options) == false) {
         return true;
     }
     // Get system variables
     $application = JFactory::getApplication();
     $session = JFactory::getSession();
     $bridge = MageBridgeModelBridge::getInstance();
     $register = MageBridgeModelRegister::getInstance();
     // Remove the Magento cookies
     $cookies = array('frontend', 'user_allowed_save_cookie', 'persistent_shopping_cart', 'mb_postlogin');
     foreach ($cookies as $cookie) {
         if (isset($_COOKIE[$cookie])) {
             unset($_COOKIE[$cookie]);
         }
         setcookie($cookie, '', time() - 1000);
         setcookie($cookie, '', time() - 1000, '/');
         setcookie($cookie, '', time() - 1000, '/', '.' . JURI::getInstance()->toString(array('host')));
         $application->input->set($cookie, null, 'cookie');
         JFactory::getSession()->set('magebridge.cookie.' . $cookie, null);
     }
     // Set the Magento session to null
     $session->set('magento_session', null);
     // Build the bridge and fetch the result
     if ($this->getParam('link_to_magento') == 0) {
         $arguments = array('disable_events' => 1);
         $id = $register->add('logout', null, $arguments);
         $bridge->build();
     }
     return true;
 }
Ejemplo n.º 21
0
 /**
  * Helper-method to set the debugging information
  *
  * @param null
  * @return null
  */
 public static function addDebug()
 {
     // Do not add debugging information when posting or redirecting
     if (strtolower($_SERVER['REQUEST_METHOD']) == 'post') {
         return false;
     }
     // Only continue when debugging is enabled
     if (MageBridgeModelDebug::isDebug() && MagebridgeModelConfig::load('debug_bar')) {
         // Load variables
         $debug = MageBridgeModelDebug::getInstance();
         $bridge = MageBridgeModelBridge::getInstance();
         $register = MageBridgeModelRegister::getInstance();
         $original_request = MageBridgeUrlHelper::getOriginalRequest();
         $request = MageBridgeUrlHelper::getRequest();
         // Debug the MageBridge request
         if (MagebridgeModelConfig::load('debug_bar_request')) {
             $url = $bridge->getMagentoUrl() . $request;
             if (empty($request)) {
                 $request = '[empty]';
             }
             $Itemid = JFactory::getApplication()->input->getInt('Itemid');
             $root_item = MageBridgeUrlHelper::getRootItem();
             $root_item_id = $root_item ? $root_item->id : false;
             $menu_message = 'Menu-Item: ' . $Itemid;
             if ($root_item_id == $Itemid) {
                 $menu_message .= ' (Root Menu-Item)';
             }
             JError::raiseNotice('notice', $menu_message);
             JError::raiseNotice('notice', JText::sprintf('Page request: %s', !empty($request) ? $request : '[empty]'));
             JError::raiseNotice('notice', JText::sprintf('Original request: %s', $bridge->getSessionData('request')));
             JError::raiseNotice('notice', JText::sprintf('Received request: %s', $bridge->getSessionData('request')));
             JError::raiseNotice('notice', JText::sprintf('Received referer: %s', $bridge->getSessionData('referer')));
             JError::raiseNotice('notice', JText::sprintf('Current referer: %s', $bridge->getHttpReferer()));
             JError::raiseNotice('notice', JText::sprintf('Magento request: <a href="%s" target="_new">%s</a>', $url, $url));
             JError::raiseNotice('notice', JText::sprintf('Magento session: %s', $bridge->getMageSession()));
             if (MageBridgeTemplateHelper::isCategoryPage()) {
                 JError::raiseNotice('notice', JText::_('MageBridgeTemplateHelper::isCategoryPage() == TRUE'));
             }
             if (MageBridgeTemplateHelper::isProductPage()) {
                 JError::raiseNotice('notice', JText::_('MageBridgeTemplateHelper::isProductPage() == TRUE'));
             }
             if (MageBridgeTemplateHelper::isCatalogPage()) {
                 JError::raiseNotice('notice', JText::_('MageBridgeTemplateHelper::isCatalogPage() == TRUE'));
             }
             if (MageBridgeTemplateHelper::isCustomerPage()) {
                 JError::raiseNotice('notice', JText::_('MageBridgeTemplateHelper::isCustomerPage() == TRUE'));
             }
             if (MageBridgeTemplateHelper::isCartPage()) {
                 JError::raiseNotice('notice', JText::_('MageBridgeTemplateHelper::isCartPage() == TRUE'));
             }
             if (MageBridgeTemplateHelper::isCheckoutPage()) {
                 JError::raiseNotice('notice', JText::_('MageBridgeTemplateHelper::isCheckoutPage() == TRUE'));
             }
             if (MageBridgeTemplateHelper::isSalesPage()) {
                 JError::raiseNotice('notice', JText::_('MageBridgeTemplateHelper::isSalesPage() == TRUE'));
             }
             if (MageBridgeTemplateHelper::isHomePage()) {
                 JError::raiseNotice('notice', JText::_('MageBridgeTemplateHelper::isHomePage() == TRUE'));
             }
         }
         // Add store information
         if (MagebridgeModelConfig::load('debug_bar_store')) {
             JError::raiseNotice('notice', JText::sprintf('Magento store loaded: %s (%s)', $bridge->getSessionData('store_name'), $bridge->getSessionData('store_code')));
         }
         // Add category information
         $category_id = $bridge->getSessionData('current_category_id');
         if ($category_id > 0) {
             JError::raiseNotice('notice', JText::sprintf('Magento category: %d', $category_id));
         }
         // Add product information
         $product_id = $bridge->getSessionData('current_product_id');
         if ($product_id > 0) {
             JError::raiseNotice('notice', JText::sprintf('Magento product: %d', $product_id));
         }
         // Add information on bridge-segments
         if (MagebridgeModelConfig::load('debug_bar_parts')) {
             $i = 0;
             $segments = $register->getRegister();
             foreach ($segments as $segment) {
                 if (isset($segment['status']) && $segment['status'] == 1) {
                     switch ($segment['type']) {
                         case 'breadcrumbs':
                         case 'meta':
                         case 'debug':
                         case 'headers':
                         case 'events':
                             JError::raiseNotice('notice', JText::sprintf('Magento [%d]: %s', $i, ucfirst($segment['type'])));
                             break;
                         case 'api':
                             JError::raiseNotice('notice', JText::sprintf('Magento [%d]: API resource "%s"', $i, $segment['name']));
                             break;
                         case 'block':
                             JError::raiseNotice('notice', JText::sprintf('Magento [%d]: Block "%s"', $i, $segment['name']));
                             break;
                         default:
                             $name = isset($segment['name']) ? $segment['name'] : null;
                             $type = isset($segment['type']) ? $segment['type'] : null;
                             JError::raiseNotice('notice', JText::sprintf('Magento [%d]: type %s, name %s', $i, $type, $name));
                             break;
                     }
                     $i++;
                 }
             }
         }
     }
 }
Ejemplo n.º 22
0
 /**
  * Handle the event when searching for items
  *
  * @param string $text
  * @param string $phrase
  * @param string $ordering
  * @param array  $areas
  *
  * @return array
  */
 public function onContentSearch($text, $phrase, $ordering = '', $areas = null)
 {
     // Do not continue if not enabled
     if ($this->isEnabled() == false) {
         return array();
     }
     // Check if the areas match
     if (!empty($areas) && is_array($areas)) {
         if (!array_intersect($areas, array_keys($this->onContentSearchAreas()))) {
             return array();
         }
     }
     // Do not continue with an empty search string
     if (empty($text)) {
         return array();
     }
     // Load the plugin parameters
     $search_limit = (int) $this->params->get('search_limit', 50);
     $search_fields = trim($this->params->get('search_fields'));
     // Determine the search fields
     if (!empty($search_fields)) {
         $search_field_values = explode(',', $search_fields);
         $search_fields = array();
         //$search_fields = array('title', 'description');
         foreach ($search_field_values as $search_field_value) {
             $search_fields[] = trim($search_field_value);
         }
         array_unique($search_fields);
     } else {
         $search_fields = array('title', 'description');
     }
     // Build the search array
     $search_options = array('store' => MageBridgeConnectorStore::getInstance()->getStore(), 'website' => MagebridgeModelConfig::load('website'), 'text' => $text, 'search_limit' => $search_limit, 'search_fields' => $search_fields);
     // Include the MageBridge register
     MageBridgeModelDebug::getInstance()->trace('Search plugin');
     $register = MageBridgeModelRegister::getInstance();
     $segment_id = $register->add('api', 'magebridge_product.search', $search_options);
     // Include the MageBridge bridge
     $bridge = MageBridgeModelBridge::getInstance();
     $bridge->build(true);
     // Get the results
     $results = $register->getDataById($segment_id);
     // Do not continue if the result is empty
     if (empty($results)) {
         return array();
     }
     // Only show the maximum amount
     $results = array_slice($results, 0, $search_limit);
     $objects = array();
     foreach ($results as $index => $result) {
         $object = (object) null;
         $object->title = $result['name'];
         $object->text = $result['description'];
         $url = preg_replace('/^(.*)index.php/', 'index.php', $result['url']);
         $object->href = $url;
         $object->created = $result['created_at'];
         $object->metadesc = $result['meta_description'];
         $object->metakey = $result['meta_keyword'];
         $object->section = null;
         $object->browsernav = 2;
         $object->thumbnail = $result['thumbnail'];
         $object->small_image = $result['small_image'];
         $object->image = $result['image'];
         $objects[] = $object;
     }
     return $objects;
 }
Ejemplo n.º 23
0
 /**
  * Method to get a list of matching Magento users
  *
  * @param array $jusers
  * @return null
  */
 private function getMagentoUsers($jusers = null)
 {
     $musers = array();
     if (!empty($jusers)) {
         $emails = array();
         foreach ($jusers as $juser) {
             $emails[] = $juser->email;
         }
         // Register this request
         $arguments = array('emails' => $emails);
         $register = MageBridgeModelRegister::getInstance();
         $id = $register->add('api', 'magebridge_customer.list', $arguments);
         // Send the request to the bridge
         $bridge = MageBridgeModelBridge::getInstance();
         $bridge->build();
         $musers = $bridge->getAPI('magebridge_customer.list', $arguments);
     }
     return $musers;
 }
Ejemplo n.º 24
0
 public static function preload()
 {
     // Don't preload anything if this is the API
     if (MageBridge::isApiPage() == true) {
         return null;
     }
     // Don't preload anything if the current output contains only the component-area
     if (in_array(JRequest::getCmd('tmpl'), array('component', 'raw'))) {
         return null;
     }
     // Fetch all the current modules
     $modules = MageBridgeModuleHelper::load();
     $register = MageBridgeModelRegister::getInstance();
     // Loop through all the available Joomla! modules
     if (!empty($modules)) {
         foreach ($modules as $module) {
             // Check the name to see if this is a MageBridge-related module
             if (preg_match('/^mod_magebridge_/', $module->module)) {
                 // Initialize variables
                 $type = null;
                 $name = null;
                 jimport('joomla.html.parameter');
                 $params = new JParameter($module->params);
                 $conf = JFactory::getConfig();
                 $user = JFactory::getUser();
                 // Check whether caching returns a valid module-output
                 if ($params->get('cache', 0) && $conf->getValue('config.caching')) {
                     $cache = JFactory::getCache($module->module);
                     $cache->setLifeTime($params->get('cache_time', $conf->getValue('config.cachetime') * 60));
                     $contents = $cache->get(array('JModuleHelper', 'renderModule'), array($module, $params->toArray()), $module->id . $user->get('aid', 0));
                     // If the contents are not empty, there is a cached version so we skip this
                     if (!empty($contents)) {
                         continue;
                     }
                     // If the contents are empty, make sure we have a fresh start
                     // @todo: Why was this needed? This causes under certain circumstances numerous bridge-calls which is bad.
                     //if (empty($contents)) {
                     //    $cache->clean();
                     //}
                 }
                 // If the layout is AJAX-ified, do not fetch the block at all
                 if ($params->get('layout') == 'ajax') {
                     continue;
                 }
                 // Try to include the helper-file
                 if (is_file(JPATH_SITE . '/modules/' . $module->module . '/helper.php')) {
                     $module_file = JPATH_SITE . '/modules/' . $module->module . '/helper.php';
                 } else {
                     if (is_file(JPATH_ADMINISTRATOR . '/modules/' . $module->module . '/helper.php')) {
                         $module_file = JPATH_ADMINISTRATOR . '/modules/' . $module->module . '/helper.php';
                     }
                 }
                 // If there is a module-file, include it
                 if (!empty($module_file) && is_file($module_file)) {
                     require_once $module_file;
                     // Construct and detect the module-class
                     $class = preg_replace('/_([a-z]{1})/', '\\1', $module->module) . 'Helper';
                     if (class_exists($class)) {
                         // Instantiate the class and check for the "register" method
                         $o = new $class();
                         if (method_exists($o, 'register')) {
                             // Fetch the requested tasks
                             $requests = $o->register($params);
                             if (is_array($requests) && count($requests) > 0) {
                                 foreach ($requests as $request) {
                                     // Add each requested task to the MageBridge register
                                     if (!empty($request[2])) {
                                         $register->add($request[0], $request[1], $request[2]);
                                     } else {
                                         if (!empty($request[1])) {
                                             $register->add($request[0], $request[1]);
                                         } else {
                                             $register->add($request[0]);
                                         }
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
 }
Ejemplo n.º 25
0
 /**
  * Load the data from the bridge
  */
 public function getResponseData($resource = null, $arguments = null, $id = null)
 {
     return MageBridgeModelRegister::getInstance()->getData('api', $resource, $arguments, $id);
 }
Ejemplo n.º 26
0
 /**
  * Call the API for a category tree
  *
  * @param array $arguments
  *
  * @return array
  */
 public static function getCategoryTree($arguments = array())
 {
     // Initialize some important variables
     $application = JFactory::getApplication();
     $option = JFactory::getApplication()->input->getCmd('option') . '-element-categories';
     // Add the search-filter
     $search = $application->getUserStateFromRequest($option . '.search', 'search', '', 'string');
     $search = JString::strtolower(trim($search));
     if (strlen($search) > 0) {
         $arguments['filters'] = array('name' => array('like' => array('%' . $search . '%')));
     }
     // Add arguments
     $store = $application->getUserStateFromRequest($option . '.store', 'store');
     $store = explode(':', $store);
     if ($store[0] == 'v' || $store[0] == 's') {
         $arguments['storeId'] = $store[1];
     }
     if ($store[0] == 'g') {
         $arguments['storeGroupId'] = $store[1];
     }
     // Determine the API-call to make
     $apiCall = 'magebridge_category.tree';
     if (!empty($search)) {
         $apiCall = 'magebridge_category.list';
     }
     // Register this request
     $register = MageBridgeModelRegister::getInstance();
     $register->clean();
     $register->add('api', $apiCall, $arguments);
     // Send the request to the bridge
     $bridge = MageBridgeModelBridge::getInstance();
     $bridge->build();
     // Get the category-tree
     $tree = $bridge->getAPI($apiCall, $arguments);
     return $tree;
 }
Ejemplo n.º 27
0
 /**
  * Load the data from the bridge
  */
 public function getResponseData()
 {
     return MageBridgeModelRegister::getInstance()->getData('messages');
 }
Ejemplo n.º 28
0
 public static function getRegister()
 {
     return MageBridgeModelRegister::getInstance();
 }
Ejemplo n.º 29
0
 /**
  * Pre-register the modules, because they are loaded after the component output
  *
  * @param null
  * @return null
  */
 public static function preload()
 {
     // Preload only once
     static $preload = false;
     if ($preload == true) {
         return null;
     }
     $preload = true;
     // Don't preload anything if this is the API
     if (MageBridge::isApiPage() == true) {
         return null;
     }
     // Don't preload anything if the current output contains only the component-area
     if (in_array(JFactory::getApplication()->input->getCmd('tmpl'), array('component', 'raw'))) {
         return null;
     }
     // Only preload once
     static $preloaded = false;
     if ($preloaded == false) {
         $preloaded = true;
     }
     // Fetch all the current modules
     $modules = MageBridgeModuleHelper::loadMageBridgeModules();
     $register = MageBridgeModelRegister::getInstance();
     // Loop through all the available Joomla! modules
     if (!empty($modules)) {
         foreach ($modules as $module) {
             // Check the name to see if this is a MageBridge-related module
             if (preg_match('/^mod_magebridge/', $module->module)) {
                 // Initialize variables
                 $type = null;
                 $name = null;
                 $params = YireoHelper::toRegistry($module->params);
                 $app = JFactory::getApplication();
                 $user = JFactory::getUser();
                 // Check whether caching returns a valid module-output
                 if ($params->get('cache', 0) && JFactory::getConfig()->get('caching')) {
                     $cache = JFactory::getCache($module->module);
                     $cache->setLifeTime($params->get('cache_time', JFactory::getConfig()->get('cachetime') * 60));
                     $contents = $cache->get(array('JModuleHelper', 'renderModule'), array($module, $params->toArray()), $module->id . $user->get('aid', 0));
                     $contents = trim($contents);
                     // If the contents are not empty, there is a cached version so we skip this
                     if (!empty($contents)) {
                         continue;
                     }
                 }
                 // If the layout is AJAX-ified, do not fetch the block at all
                 if ($params->get('layout') == 'ajax') {
                     continue;
                 }
                 // Try to include the helper-file
                 if (is_file(JPATH_SITE . '/modules/' . $module->module . '/helper.php')) {
                     $module_file = JPATH_SITE . '/modules/' . $module->module . '/helper.php';
                 } else {
                     if (is_file(JPATH_ADMINISTRATOR . '/modules/' . $module->module . '/helper.php')) {
                         $module_file = JPATH_ADMINISTRATOR . '/modules/' . $module->module . '/helper.php';
                     }
                 }
                 // If there is no module-file, skip this module
                 if (empty($module_file) || !is_file($module_file)) {
                     continue;
                 }
                 // Include the module file
                 require_once $module_file;
                 // Construct and detect the module-class
                 $class = preg_replace('/_([a-z]{1})/', '\\1', $module->module) . 'Helper';
                 // If the class does not exist, try it with a uppercase-first match
                 if (!class_exists($class)) {
                     $class = ucfirst($class);
                 }
                 // If the class does not exist, skip this module
                 if (!class_exists($class)) {
                     continue;
                 }
                 // Instantiate the class
                 $o = new $class();
                 // If the register-method does not exist, skip this module
                 if (!method_exists($o, 'register')) {
                     continue;
                 }
                 MageBridgeModelDebug::getInstance()->notice('Preloading module-resource for ' . $module->module);
                 // Fetch the requested tasks
                 $requests = $o->register($params);
                 if (is_array($requests) && count($requests) > 0) {
                     foreach ($requests as $request) {
                         // Add each requested task to the MageBridge register
                         if (!empty($request[2])) {
                             $register->add($request[0], $request[1], $request[2]);
                         } else {
                             if (!empty($request[1])) {
                                 $register->add($request[0], $request[1]);
                             } else {
                                 $register->add($request[0]);
                             }
                         }
                     }
                 }
             }
         }
     }
 }
Ejemplo n.º 30
0
 public function addDebug()
 {
     if (MageBridgeModelDebug::isDebug() && MagebridgeModelConfig::load('debug_bar')) {
         $debug = MageBridgeModelDebug::getInstance();
         $bridge = MageBridgeModelBridge::getInstance();
         $register = MageBridgeModelRegister::getInstance();
         $request = MageBridgeUrlHelper::getRequest();
         if (MagebridgeModelConfig::load('debug_bar_request')) {
             $url = $bridge->getMagentoUrl() . $request;
             if (empty($request)) {
                 $request = '[empty]';
             }
             $Itemid = JRequest::getInt('Itemid');
             $root_item = MageBridgeUrlHelper::getRootItem();
             $root_item_id = $root_item ? $root_item->id : false;
             $menu_message = 'Menu-Item: ' . $Itemid;
             if ($root_item_id == $Itemid) {
                 $menu_message .= ' (Root Menu-Item)';
             }
             JError::raiseNotice('notice', $menu_message);
             JError::raiseNotice('notice', JText::sprintf('Page request: %s', !empty($request) ? $request : '[empty]'));
             JError::raiseNotice('notice', JText::sprintf('Received request: %s', $bridge->getMageConfig('request')));
             JError::raiseNotice('notice', JText::sprintf('Received referer: %s', $bridge->getMageConfig('referer')));
             JError::raiseNotice('notice', JText::sprintf('Current referer: %s', $bridge->getHttpReferer()));
             JError::raiseNotice('notice', JText::sprintf('Magento request: <a href="%s" target="_new">%s</a>', $url, $url));
             JError::raiseNotice('notice', JText::sprintf('Magento session: %s', $bridge->getMageSession()));
             if (MageBridgeTemplateHelper::isCategoryPage()) {
                 JError::raiseNotice('notice', JText::_('MageBridgeTemplateHelper::isCategoryPage() == TRUE'));
             }
             if (MageBridgeTemplateHelper::isProductPage()) {
                 JError::raiseNotice('notice', JText::_('MageBridgeTemplateHelper::isProductPage() == TRUE'));
             }
             if (MageBridgeTemplateHelper::isCatalogPage()) {
                 JError::raiseNotice('notice', JText::_('MageBridgeTemplateHelper::isCatalogPage() == TRUE'));
             }
             if (MageBridgeTemplateHelper::isCustomerPage()) {
                 JError::raiseNotice('notice', JText::_('MageBridgeTemplateHelper::isCustomerPage() == TRUE'));
             }
             if (MageBridgeTemplateHelper::isCartPage()) {
                 JError::raiseNotice('notice', JText::_('MageBridgeTemplateHelper::isCartPage() == TRUE'));
             }
             if (MageBridgeTemplateHelper::isCheckoutPage()) {
                 JError::raiseNotice('notice', JText::_('MageBridgeTemplateHelper::isCheckoutPage() == TRUE'));
             }
             if (MageBridgeTemplateHelper::isSalesPage()) {
                 JError::raiseNotice('notice', JText::_('MageBridgeTemplateHelper::isSalesPage() == TRUE'));
             }
             if (MageBridgeTemplateHelper::isHomePage()) {
                 JError::raiseNotice('notice', JText::_('MageBridgeTemplateHelper::isHomePage() == TRUE'));
             }
         }
         if (MagebridgeModelConfig::load('debug_bar_store')) {
             JError::raiseNotice('notice', JText::sprintf('Magento store loaded: %s', $bridge->getMageConfig('store_name')));
         }
         if (MagebridgeModelConfig::load('debug_bar_parts')) {
             $i = 0;
             foreach ($register->getRegister() as $segment) {
                 if (isset($segment['status']) && $segment['status'] == 1) {
                     switch ($segment['type']) {
                         case 'breadcrumbs':
                         case 'meta':
                         case 'debug':
                         case 'headers':
                         case 'events':
                             JError::raiseNotice('notice', JText::sprintf('Magento [%d]: %s', $i, ucfirst($segment['type'])));
                             break;
                         case 'api':
                             JError::raiseNotice('notice', JText::sprintf('Magento [%d]: API resource "%s"', $i, $segment['name']));
                             break;
                         case 'block':
                             JError::raiseNotice('notice', JText::sprintf('Magento [%d]: Block "%s"', $i, $segment['name']));
                             break;
                         default:
                             $name = isset($segment['name']) ? $segment['name'] : null;
                             $type = isset($segment['type']) ? $segment['type'] : null;
                             JError::raiseNotice('notice', JText::sprintf('Magento [%d]: type %s, name %s', $i, $type, $name));
                             break;
                     }
                     $i++;
                 }
             }
         }
         $this->assignRef('debug', $debug->getData());
     }
 }