Merge pull request #14948 from civicrm/5.16
[civicrm-core.git] / CRM / Utils / System / Joomla.php
index 533331b8837ab62d5089152c37ea513d99622600..fa5b4e5b68c1833edb43122c42ec2dd9748876e0 100644 (file)
@@ -35,6 +35,7 @@
  * Joomla specific stuff goes here.
  */
 class CRM_Utils_System_Joomla extends CRM_Utils_System_Base {
+
   /**
    * Class constructor.
    */
@@ -76,7 +77,7 @@ class CRM_Utils_System_Joomla extends CRM_Utils_System_Base {
     }
 
     // Prepare the values for a new Joomla user.
-    $values = array();
+    $values = [];
     $values['name'] = $fullname;
     $values['username'] = trim($params['cms_name']);
     $values['password1'] = $values['password2'] = $params['cms_pass'];
@@ -98,7 +99,7 @@ class CRM_Utils_System_Joomla extends CRM_Utils_System_Base {
     $ufID = CRM_Utils_Type::escape($ufID, 'Integer');
     $ufName = CRM_Utils_Type::escape($ufName, 'String');
 
-    $values = array();
+    $values = [];
     $user = JUser::getInstance($ufID);
 
     $values['email'] = $ufName;
@@ -142,7 +143,7 @@ class CRM_Utils_System_Joomla extends CRM_Utils_System_Base {
     $db->setQuery($query, 0, 10);
     $users = $db->loadAssocList();
 
-    $row = array();
+    $row = [];
     if (count($users)) {
       $row = $users[0];
     }
@@ -152,13 +153,13 @@ class CRM_Utils_System_Joomla extends CRM_Utils_System_Base {
       $dbEmail = CRM_Utils_Array::value('email', $row);
       if (strtolower($dbName) == strtolower($name)) {
         $errors['cms_name'] = ts('The username %1 is already taken. Please select another username.',
-          array(1 => $name)
+          [1 => $name]
         );
       }
       if (strtolower($dbEmail) == strtolower($email)) {
         $resetUrl = str_replace('administrator/', '', $config->userFrameworkBaseURL) . 'index.php?option=com_users&view=reset';
         $errors[$emailName] = ts('The email address %1 already has an account associated with it. <a href="%2">Have you forgotten your password?</a>',
-          array(1 => $email, 2 => $resetUrl)
+          [1 => $email, 2 => $resetUrl]
         );
       }
     }
@@ -189,7 +190,7 @@ class CRM_Utils_System_Joomla extends CRM_Utils_System_Base {
     if (is_array($breadCrumbs)) {
       foreach ($breadCrumbs as $crumbs) {
         if (stripos($crumbs['url'], 'id%%')) {
-          $args = array('cid', 'mid');
+          $args = ['cid', 'mid'];
           foreach ($args as $a) {
             $val = CRM_Utils_Request::retrieve($a, 'Positive', CRM_Core_DAO::$_nullObject,
               FALSE, NULL, $_GET
@@ -317,8 +318,8 @@ class CRM_Utils_System_Joomla extends CRM_Utils_System_Base {
     global $database;
     $query = $db->getQuery(TRUE);
     $query->select($db->quoteName('email'))
-          ->from($db->quoteName('#__users'))
-          ->where($db->quoteName('id') . ' = ' . $user->id);
+      ->from($db->quoteName('#__users'))
+      ->where($db->quoteName('id') . ' = ' . $user->id);
     $database->setQuery($query);
     $user->email = $database->loadResult();
   }
@@ -333,12 +334,12 @@ class CRM_Utils_System_Joomla extends CRM_Utils_System_Base {
     $user = NULL;
 
     if ($loadCMSBootstrap) {
-      $bootStrapParams = array();
+      $bootStrapParams = [];
       if ($name && $password) {
-        $bootStrapParams = array(
+        $bootStrapParams = [
           'name' => $name,
           'pass' => $password,
-        );
+        ];
       }
       CRM_Utils_System::loadBootStrap($bootStrapParams, TRUE, TRUE, FALSE);
     }
@@ -357,7 +358,7 @@ class CRM_Utils_System_Joomla extends CRM_Utils_System_Base {
     $db->setQuery($query, 0, 0);
     $users = $db->loadObjectList();
 
-    $row = array();
+    $row = [];
     if (count($users)) {
       $row = $users[0];
     }
@@ -403,7 +404,7 @@ class CRM_Utils_System_Joomla extends CRM_Utils_System_Base {
       if (!$contactID) {
         return FALSE;
       }
-      return array($contactID, $dbId, mt_rand());
+      return [$contactID, $dbId, mt_rand()];
     }
 
     return FALSE;
@@ -446,14 +447,20 @@ class CRM_Utils_System_Joomla extends CRM_Utils_System_Base {
     $contactID = CRM_Core_BAO_UFMatch::getContactId($uid);
     if (!empty($password)) {
       $instance = JFactory::getApplication('site');
-      $params = array(
+      $params = [
         'username' => $username,
         'password' => $password,
-      );
+      ];
       //perform the login action
       $instance->login($params);
     }
 
+    // Save details in Joomla session
+    $user = JFactory::getUser($uid);
+    $jsession = JFactory::getSession();
+    $jsession->set('user', $user);
+
+    // Save details in Civi session
     $session = CRM_Core_Session::singleton();
     $session->set('ufID', $uid);
     $session->set('userID', $contactID);
@@ -547,7 +554,7 @@ class CRM_Utils_System_Joomla extends CRM_Utils_System_Base {
    *
    * @return bool
    */
-  public function loadBootStrap($params = array(), $loadUser = TRUE, $throwError = TRUE, $realPath = NULL, $loadDefines = TRUE) {
+  public function loadBootStrap($params = [], $loadUser = TRUE, $throwError = TRUE, $realPath = NULL, $loadDefines = TRUE) {
     $joomlaBase = self::getBasePath();
 
     // load BootStrap here if needed
@@ -685,7 +692,7 @@ class CRM_Utils_System_Joomla extends CRM_Utils_System_Base {
    *   CRM_Core_Module
    */
   public function getModules() {
-    $result = array();
+    $result = [];
 
     $db = JFactory::getDbo();
     $query = $db->getQuery(TRUE);
@@ -695,7 +702,7 @@ class CRM_Utils_System_Joomla extends CRM_Utils_System_Base {
     $plugins = $db->setQuery($query)->loadAssocList();
     foreach ($plugins as $plugin) {
       // question: is the folder really a critical part of the plugin's name?
-      $name = implode('.', array('joomla', $plugin['type'], $plugin['folder'], $plugin['element']));
+      $name = implode('.', ['joomla', $plugin['type'], $plugin['folder'], $plugin['element']]);
       $result[] = new CRM_Core_Module($name, $plugin['enabled'] ? TRUE : FALSE);
     }
 
@@ -799,7 +806,7 @@ class CRM_Utils_System_Joomla extends CRM_Utils_System_Base {
       '',
       $config->imageUploadDir
     );
-    return array($url, NULL, $siteRoot);
+    return [$url, NULL, $siteRoot];
   }
 
   /**
@@ -843,15 +850,6 @@ class CRM_Utils_System_Joomla extends CRM_Utils_System_Base {
     }
   }
 
-  /**
-   * Append Joomla js to coreResourcesList.
-   *
-   * @param array $list
-   */
-  public function appendCoreResources(&$list) {
-    $list[] = 'js/crm.joomla.js';
-  }
-
   /**
    * @inheritDoc
    */
@@ -904,11 +902,11 @@ class CRM_Utils_System_Joomla extends CRM_Utils_System_Base {
       }
     }
 
-    return array(
+    return [
       'contactCount' => $contactCount,
       'contactMatching' => $contactMatching,
       'contactCreated' => $contactCreated,
-    );
+    ];
   }
 
 }