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:
- Ha felhasználó regisztráció után aktivál, akkor felveszi őt az AJAX IM users táblájába
- 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:
- Az onAfterUserConfirm trigger hatására a felhasználót felveszi az AJAX IM users táblájába
- 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" />