/** * 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); }
/** * 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(); } } }
/** * Singleton method * * @param null * @return MageBridgeModelRegister */ public static function getInstance() { if (null == self::$_instance) { self::$_instance = new self(); self::$_instance->init(); } return self::$_instance; }
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; }
/** * 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; }
/** * 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; }
/** * 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(); }
/** * 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; }
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(); }
public function getResponseData($name, $arguments = null) { return MageBridgeModelRegister::getInstance()->getData('block', $name, $arguments); }
protected function getResponse($type = '', $name = null, $arguments = null, $id = null) { return MageBridgeModelRegister::getInstance()->get($type, $name, $arguments, $id); }
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; }
/** * 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); } } }
/** * 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; }
/** * 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; }
/** * 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; }
/** * 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; }
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; }
/** * 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; }
/** * 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++; } } } } }
/** * 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; }
/** * 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; }
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]); } } } } } } } } } } }
/** * Load the data from the bridge */ public function getResponseData($resource = null, $arguments = null, $id = null) { return MageBridgeModelRegister::getInstance()->getData('api', $resource, $arguments, $id); }
/** * 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; }
/** * Load the data from the bridge */ public function getResponseData() { return MageBridgeModelRegister::getInstance()->getData('messages'); }
public static function getRegister() { return MageBridgeModelRegister::getInstance(); }
/** * 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]); } } } } } } } }
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()); } }