AJAX IM és CB összekapcsolása user pluginnal

Felmerült az a probléma, hogy egy Joomla! honlapot, melyen Community Builder üzemel, lássunk el egy chat felülettel. Nos, a választás a szépen kivitelezett UIAJAXIM-re esett.

Az UIAJAXIM ingyenes, fejlesztői oldala viszont mostanában nehezen látogatható, ezért felteszem a szükséges dolgokat ide. Most így böngészve az oldalukat, azt vettem észre, hogy ez alatt a pár nap alatt már fizetőssé is tették...csodás...:( Ezért a továbbiakban az AJAX IM lesz említve.

De a lényeg, hogy elkészítettem az UIAJAXIM, illetve az AJAX IM-hez, a magyarítást és egy Community Builder plugint, mely két eseményt figyel:

  1. Ha felhasználó regisztráció után aktivál, akkor felveszi őt az AJAX IM users táblájába
  2. Ha a felhasználó törlődik, akkor törli őt az AJAX IM users táblájából

 A plugin működése röviden:

  1. Az onAfterUserConfirm trigger hatására a felhasználót felveszi az AJAX IM users táblájába
  2. Az onAfterDeleteUser trigger hatására a felhasználót törli az AJAX IM users táblájából

Szükséges hack, melyet tulajdonképpen a Universal Informatique készített el, nekünk pont kapóra jön, ugyan is az AJAX IM authentikálásához a user jelszavát is mindig szinkronizálni kellene a jos_users, illetve a CB jos_comprofiler táblából, ezt elkerülve, a beléptetés egyik fele az AJAX IM táblából történik, a másik fele a jos_comprofiler táblából.

Az AJAX IM a userre vonatkozó dolgokat a saját users táblájából veszi, viszont beléptetéskor a jelszó ellenőrzéshez a CB jos_comprofiler táblájából vesszük a jelszót, így nem kell azt figyelni, hogy a user változtatja-e a jelszavát...

A hack megtalálható a plugin php-s részében, de leírom az idevonatkozó részt:

Ezt a funkciót kell az eredeti AJAX IM-ben módosítani (az UIAJAXIM-ben már gyárilag benne van a hack)

function checkInfo($username, $password, $return=array()) {
      if(count($return) > 0)
         $columns = implode(',', $return);
      else
         $columns = 'id';

      $username = mysql_real_escape_string($username);
      $password = mysql_real_escape_string($password);

      // Universal Informatique HACK BEGIN

      //select Joomla password with username = $username
      $query = mysql_query('SELECT `password` FROM ' . SQL_PREFIX_JOOMLA . 'users WHERE username=\'' . $username . '\' LIMIT 1');
      if(mysql_num_rows($query) > 0){
         $result     = mysql_fetch_assoc($query);
         $sub_pass    = substr($result['password'], 33, strlen($result['password']));
//         $password    = md5($password.$sub_pass).':'.$sub_pass;

         if ($password != $result['password'])
            return false;
      } else
          return false;
      // Universal Informatique HACK END

//      $query = mysql_query('SELECT ' . $columns . ' FROM ' . SQL_PREFIX . 'users WHERE username=\'' . $username . '\' AND password=\'' . $password . '\' LIMIT 1');
      $query = mysql_query('SELECT ' . $columns . ' FROM ' . SQL_PREFIX . 'users WHERE username=\'' . $username . '\' LIMIT 1');

      if(mysql_num_rows($query) > 0)
         return mysql_fetch_assoc($query);
      else
         return false;
   }

Remélem mindenkinek sikerül használni az AJAX IM-t Joomla! alatt, CB-vel...


Kis megjegyzés AJAX IM-hez:

  • IE8 alatt nem tökéletesen működik, ezért érdemes az index.php-hez hozzáadni a következő sort:

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />

Buy and Trade Bitcoin at Binance