CRM-14208, CRM-14140 use more of jsproffitt patch to simplify logic
authorBrian Shaughnessy <brian@lcdservices.biz>
Wed, 12 Feb 2014 04:10:17 +0000 (23:10 -0500)
committerBrian Shaughnessy <brian@lcdservices.biz>
Wed, 12 Feb 2014 04:10:17 +0000 (23:10 -0500)
CRM/Utils/Hook/Joomla.php
CRM/Utils/System/Joomla.php
bin/cli.class.php

index 94d7f0a58e0db5b21e5fecece50be8fdc75cca4f..459e1954976eebf0a4a287cda2791f61adb47662 100644 (file)
@@ -44,6 +44,7 @@ class CRM_Utils_Hook_Joomla extends CRM_Utils_Hook {
     if (defined('_JEXEC')) {
       //Invoke the Joomla plugin system to observe to civicrm events.
       jimport('joomla.plugin.helper');
+      jimport('cms.plugin.helper');
       JPluginHelper::importPlugin('civicrm');
 
       // get app based on cli or web
index fcbf34b7ca2f604840e198e75d768c4ad9e28ca3..4db4125cf13618f277b3b657b9fdf7f38a01a50f 100644 (file)
@@ -471,6 +471,22 @@ class CRM_Utils_System_Joomla extends CRM_Utils_System_Base {
 
     jimport('joomla.application.component.helper');
     jimport('joomla.database.table');
+    jimport('joomla.user.helper');
+
+    $JUserTable = JTable::getInstance('User', 'JTable');
+
+    $db = $JUserTable->getDbo();
+    $query = $db->getQuery(TRUE);
+    $query->select('id, name, username, email, password');
+    $query->from($JUserTable->getTableName());
+    $query->where('(LOWER(username) = LOWER(\'' . $name . '\')) AND (block = 0)');
+    $db->setQuery($query, 0, 0);
+    $users = $db->loadObjectList();
+
+    $row = array();
+    if (count($users)) {
+      $row = $users[0];
+    }
 
     if ( !defined('JVERSION') ) {
       $joomlaBase = dirname(dirname(dirname(dirname(dirname(dirname(dirname(dirname(__FILE__))))))));
@@ -479,30 +495,14 @@ class CRM_Utils_System_Joomla extends CRM_Utils_System_Base {
       define('JVERSION', $jversion->getShortVersion());
     }
 
-    if ( version_compare(JVERSION, '2.5.18', 'lt') ||
-      ( version_compare(JVERSION, '3.0', 'ge') && version_compare(JVERSION, '3.2.2', 'lt') )
-    ) {
-      //old method for authenticating
-      $JUserTable = JTable::getInstance('User', 'JTable');
-
-      $db = $JUserTable->getDbo();
-      $query = $db->getQuery(TRUE);
-      $query->select('id, username, email, password');
-      $query->from($JUserTable->getTableName());
-      $query->where('(LOWER(username) = LOWER(\'' . $name . '\')) AND (block = 0)');
-      $db->setQuery($query, 0, 0);
-      $users = $db->loadAssocList();
-
-      $row = array();;
-      if (count($users)) {
-        $row = $users[0];
-      }
-
-      if (!empty($row)) {
-        $dbPassword = CRM_Utils_Array::value('password', $row);
-        $dbId = CRM_Utils_Array::value('id', $row);
-        $dbEmail = CRM_Utils_Array::value('email', $row);
+    if (!empty($row)) {
+      $dbPassword = $row->password;
+      $dbId = $row->id;
+      $dbEmail = $row->email;
 
+      if ( version_compare(JVERSION, '2.5.18', 'lt') ||
+        ( version_compare(JVERSION, '3.0', 'ge') && version_compare(JVERSION, '3.2.1', 'lt') )
+      ) {
         // now check password
         if (strpos($dbPassword, ':') === FALSE) {
           if ($dbPassword != md5($password)) {
@@ -517,39 +517,18 @@ class CRM_Utils_System_Joomla extends CRM_Utils_System_Base {
           }
         }
       }
-    }
-    else {
-      //new authentication method (J2.5.18/3.2.2 and greater)
-      // Get a database object
-      $db = JFactory::getDbo();
-      $query = $db->getQuery(TRUE);
-
-      $query->select('id, password');
-      $query->from('#__users');
-      $query->where('username='.$db->quote($name));
-
-      $db->setQuery( $query );
-      $result = $db->loadObject();
-
-      if ($result) {
-        $match = JUserHelper::verifyPassword($password, $result->password, $result->id);
-
-        if ($match === TRUE) {
-          $jUser = JUser::getInstance($result->id); // Bring this in line with the rest of the system
-          $dbId = $row['id'] = $result->id;
-          $dbEmail = $row['email'] = $jUser->email;
-        }
+      else {
+        if (!JUserHelper::verifyPassword($password, $dbPassword, $dbId)) return FALSE;
       }
-    }
 
-    if (!empty($row)) {
-      CRM_Core_BAO_UFMatch::synchronizeUFMatch($user, $dbId, $dbEmail, 'Joomla');
+      CRM_Core_BAO_UFMatch::synchronizeUFMatch($row, $dbId, $dbEmail, 'Joomla');
       $contactID = CRM_Core_BAO_UFMatch::getContactId($dbId);
       if (!$contactID) {
         return FALSE;
       }
       return array($contactID, $dbId, mt_rand());
     }
+
     return FALSE;
   }
 
index 1e44a962a72798329ab906fe021bd9d0d8ceb2a6..de72c475b41673eb7f3297a250fd035059de530d 100644 (file)
@@ -201,7 +201,9 @@ class civicrm_cli {
     chdir($civicrm_root);
     require_once ('civicrm.config.php');
     // autoload
-    require_once $civicrm_root . '/CRM/Core/ClassLoader.php';
+    if ( !class_exists('CRM_Core_ClassLoader') ) {
+      require_once $civicrm_root . '/CRM/Core/ClassLoader.php';
+    }
     CRM_Core_ClassLoader::singleton()->register();
 
     $this->_config = CRM_Core_Config::singleton();