Exemple #1
0
 /**
  * Constructor
  *
  * @param   array  $config  An array of configuration options (name, state, dbo, table_path, ignore_request).
  *
  * @since   3.3.4
  * @throws  Exception
  */
 public function __construct($config = array())
 {
     $this->app = JArrayHelper::getValue($config, 'app', JFactory::getApplication());
     $this->user = JArrayHelper::getValue($config, 'user', JFactory::getUser());
     $this->config = JArrayHelper::getValue($config, 'config', JFactory::getConfig());
     $this->session = JArrayHelper::getValue($config, 'session', JFactory::getSession());
     $this->date = JArrayHelper::getValue($config, 'date', JFactory::getDate());
     $this->lang = JArrayHelper::getValue($config, 'lang', JFactory::getLanguage());
     $this->package = $this->app->getUserState('com_fabrik.package', 'fabrik');
     parent::__construct($config);
 }
Exemple #2
0
 /**
  * Method to handle any login logic and report back to the subject.
  *
  * @param   array  $user     Holds the user data.
  * @param   array  $options  Array holding options (remember, autoregister, group).
  *
  * @return  boolean  True on success.
  *
  * @since   1.5
  */
 public function onUserLogin($user, $options = array())
 {
     $menu = $this->app->getMenu();
     if ($this->app->isSite()) {
         if ($this->params->get('automatic_change', 1)) {
             $assoc = JLanguageAssociations::isEnabled();
             $lang_code = $user['language'];
             // If no language is specified for this user, we set it to the site default language
             if (empty($lang_code)) {
                 $lang_code = $this->default_lang;
             }
             jimport('joomla.filesystem.folder');
             // The language has been deleted/disabled or the related content language does not exist/has been unpublished
             // or the related home page does not exist/has been unpublished
             if (!array_key_exists($lang_code, $this->lang_codes) || !array_key_exists($lang_code, JLanguageMultilang::getSiteHomePages()) || !JFolder::exists(JPATH_SITE . '/language/' . $lang_code)) {
                 $lang_code = $this->current_lang;
             }
             // Try to get association from the current active menu item
             $active = $menu->getActive();
             $foundAssociation = false;
             if ($active) {
                 if ($assoc) {
                     $associations = MenusHelper::getAssociations($active->id);
                 }
                 // The login menu item contains a redirection.
                 // This will override the automatic change to the user preferred language
                 if ($active->params['login_redirect_url']) {
                     $this->app->setUserState('users.login.form.return', JRoute::_($this->app->getUserState('users.login.form.return'), false));
                 } elseif ($this->app->getUserState('users.login.form.return')) {
                     // The login module contains a menu item redirection. Try to get association from that menu item.
                     $itemid = preg_replace('/\\D+/', '', $this->app->getUserState('users.login.form.return'));
                     if ($assoc) {
                         $associations = MenusHelper::getAssociations($itemid);
                     }
                     if (isset($associations[$lang_code]) && $menu->getItem($associations[$lang_code])) {
                         $associationItemid = $associations[$lang_code];
                         $this->app->setUserState('users.login.form.return', 'index.php?Itemid=' . $associationItemid);
                         $foundAssociation = true;
                     }
                 } elseif (isset($associations[$lang_code]) && $menu->getItem($associations[$lang_code])) {
                     $associationItemid = $associations[$lang_code];
                     $this->app->setUserState('users.login.form.return', 'index.php?Itemid=' . $associationItemid);
                     $foundAssociation = true;
                 } elseif ($active->home) {
                     // We are on a Home page, we redirect to the user site language home page
                     $item = $menu->getDefault($lang_code);
                     if ($item && $item->language != $active->language && $item->language != '*') {
                         $this->app->setUserState('users.login.form.return', 'index.php?Itemid=' . $item->id);
                         $foundAssociation = true;
                     }
                 }
             }
             if ($foundAssociation && $lang_code != $this->current_lang) {
                 // Change language.
                 $this->current_lang = $lang_code;
                 // Create a cookie.
                 $this->setLanguageCookie($lang_code);
                 // Change the language code.
                 JFactory::getLanguage()->setLanguage($lang_code);
             }
         } else {
             if ($this->app->getUserState('users.login.form.return')) {
                 $this->app->setUserState('users.login.form.return', JRoute::_($this->app->getUserState('users.login.form.return'), false));
             }
         }
     }
 }
Exemple #3
0
 /**
  * Set the List's tab HTML
  *
  * @return  array  Tabs
  */
 public function loadTabs()
 {
     $this->tabs = array();
     $tabs = $this->getTabCategories();
     if (!is_array($tabs) || empty($tabs)) {
         return $this->tabs;
     }
     $package = $this->app->getUserState('com_fabrik.package', 'fabrik');
     $listId = $this->getId();
     $tabsField = $this->getTabField();
     $itemId = FabrikWorker::itemId();
     $uri = JURI::getInstance();
     $urlBase = $uri->toString(array('path'));
     $urlBase .= '?option=com_' . $package . '&';
     if ($this->app->isAdmin()) {
         $urlBase .= 'task=list.view&';
     } else {
         $urlBase .= 'view=list&';
     }
     $urlBase .= 'listid=' . $listId . '&resetfilters=1';
     $urlEquals = $urlBase . '&' . $tabsField . '=%s';
     $urlRange = $urlBase . '&' . $tabsField . '[value][]=%s&' . $tabsField . '[value][]=%s&' . $tabsField . '[condition]=BETWEEN';
     $uri = JURI::getInstance();
     $thisUri = rawurldecode($uri->toString(array('path', 'query')));
     foreach ($tabs as $i => $tabArray) {
         $row = new stdClass();
         list($label, $range) = $tabArray;
         $row->label = $label;
         if (is_null($range)) {
             $row->href = $urlBase;
         } elseif (!is_array($range)) {
             $row->href = sprintf($urlEquals, $range);
         } else {
             list($low, $high) = $range;
             $row->href = sprintf($urlEquals, sprintf($urlRange, $low, $high));
         }
         if ($itemId) {
             $row->href .= '&Itemid=' . $itemId;
         }
         $row->id = 'list_tabs_' . $this->getId() . '_' . $i;
         $row->js = false;
         $row->class = $thisUri == $row->href ? 'active' : '';
         $this->tabs[] = $row;
     }
     return $this->tabs;
 }