function uddeIMselectComboUserlist( $myself, $my_gid, $lids, $config ) { $database = uddeIMgetDatabase(); $users = Array(); getAdditonalGroups($add_special, $add_admin, $config); $ret = '<select multiple="multiple" name="userlist" class="inputbox" ondblclick="userlistdblclick(this.selectedIndex, \'listsform\', \'userlist\', \'selectionlist\', '.$config->maxonlists.')" size="10">'; if (($config->restrictcon==1 && uddeIMisReggedOnly($my_gid)) || ($config->restrictcon==2 && uddeIMisAllNotAdmin($my_gid) && !uddeIMisAdmin2($my_gid, $config)) || ($config->restrictcon==3) ) { if ($lids) $temp = "u.id NOT IN (".uddeIMquoteSmart($lids).") AND "; $somanyfriends = 0; if (uddeIMcheckCB()) { $users = uddeIMselectCBbuddies($myself, $config, $temp); $somanyfriends = count($users); } if (!$somanyfriends) { // no friends found, maybe there are some in CBE? if (uddeIMcheckCBE()) { $users = uddeIMselectCBEbuddies($myself, $config, $temp); $somanyfriends = count($users); } if (uddeIMcheckCBE2()) { $users = uddeIMselectCBE2buddies($myself, $config, $temp); $somanyfriends = count($users); } } if (!$somanyfriends) { // no friends found, maybe there are some in JS? if (uddeIMcheckJS()) { $users = uddeIMselectJSbuddies($myself, $config, $temp); $somanyfriends = count($users); } } } else { if (uddeIMcheckJversion()>=2) { // J1.6 $temp = ""; if ($lids) $temp = "AND u.id NOT IN (".uddeIMquoteSmart($lids).") "; switch ($config->hideallusers) { case 3: // special users $sql="SELECT DISTINCT u.id,u.".($config->realnames ? "name" : "username")." AS displayname FROM (#__users AS u INNER JOIN #__user_usergroup_map AS um ON u.id=um.user_id) INNER JOIN #__usergroups AS g ON um.group_id=g.id WHERE u.block=0 ".$temp."AND g.id NOT IN (3,4,5,6,7,8".$add_admin.$add_special.") ORDER BY u.".($config->realnames ? "name" : "username"); break; case 2: // admins $sql="SELECT DISTINCT u.id,u.".($config->realnames ? "name" : "username")." AS displayname FROM (#__users AS u INNER JOIN #__user_usergroup_map AS um ON u.id=um.user_id) INNER JOIN #__usergroups AS g ON um.group_id=g.id WHERE u.block=0 ".$temp."AND g.id NOT IN (7,8".$add_admin.") ORDER BY u.".($config->realnames ? "name" : "username"); break; case 1: // superadmins $sql="SELECT DISTINCT u.id,u.".($config->realnames ? "name" : "username")." AS displayname FROM (#__users AS u INNER JOIN #__user_usergroup_map AS um ON u.id=um.user_id) INNER JOIN #__usergroups AS g ON um.group_id=g.id WHERE u.block=0 ".$temp."AND g.id NOT IN (8) ORDER BY u.".($config->realnames ? "name" : "username"); break; default: // none $sql="SELECT u.id,u.".($config->realnames ? "name" : "username")." AS displayname FROM #__users AS u WHERE u.block=0 ".$temp."ORDER BY u.".($config->realnames ? "name" : "username"); break; } if (uddeIMisAdmin($my_gid) || uddeIMisAdmin2($my_gid, $config)) // do not hide users when it is an admin $sql="SELECT u.id,u.".($config->realnames ? "name" : "username")." AS displayname FROM #__users AS u WHERE u.block=0 ".$temp."ORDER BY u.".($config->realnames ? "name" : "username"); } else { $temp = ""; if ($lids) $temp = "AND id NOT IN (".uddeIMquoteSmart($lids).") "; switch ($config->hideallusers) { case 3: // special users $sql="SELECT id,".($config->realnames ? "name" : "username")." AS displayname FROM #__users WHERE block=0 ".$temp."AND gid NOT IN (19,20,21,23,24,25".$add_admin.$add_special.") ORDER BY ".($config->realnames ? "name" : "username"); break; case 2: // admins $sql="SELECT id,".($config->realnames ? "name" : "username")." AS displayname FROM #__users WHERE block=0 ".$temp."AND gid NOT IN (24,25".$add_admin.") ORDER BY ".($config->realnames ? "name" : "username"); break; case 1: // superadmins $sql="SELECT id,".($config->realnames ? "name" : "username")." AS displayname FROM #__users WHERE block=0 ".$temp."AND gid NOT IN (25) ORDER BY ".($config->realnames ? "name" : "username"); break; default: // none $sql="SELECT id,".($config->realnames ? "name" : "username")." AS displayname FROM #__users WHERE block=0 ".$temp."ORDER BY ".($config->realnames ? "name" : "username"); break; } if (uddeIMisAdmin($my_gid) || uddeIMisAdmin2($my_gid, $config)) // do not hide users when it is an admin $sql="SELECT id,".($config->realnames ? "name" : "username")." AS displayname FROM #__users WHERE block=0 ".$temp."ORDER BY ".($config->realnames ? "name" : "username"); } $database->setQuery( $sql ); $users = $database->loadObjectList(); if (!$users) $users = Array(); } if ( count( $users ) ) { foreach ( $users as $user ) $ret .= '<option value="'.$user->id.'">'.$user->displayname.'</option>'; } $ret .= '</select>'; return $ret; }
function uddeIMdoShowAllUsers($myself, $my_gid, $config, $mode, $enabled=1, $defaultvalue=0) { $database = uddeIMgetDatabase(); $sep=","; if ($config->separator==1) $sep=";"; if (uddeIMcheckJversion()>=2) { // J1.6 $hide = ""; if ($config->hideusers) $hide = "AND u.id NOT IN (".uddeIMquoteSmart($config->hideusers).") "; $hide2 = ""; if (uddeIMisReggedOnly($my_gid) && $config->blockgroups) $hide2 = "AND g.id NOT IN (".uddeIMquoteSmart($config->blockgroups).") "; getAdditonalGroups($add_special, $add_admin, $config); switch ($config->hideallusers) { case 3: // special users $sql="SELECT DISTINCT u.".($config->realnames ? "name" : "username")." AS displayname, u.id FROM (#__users AS u INNER JOIN #__user_usergroup_map AS um ON u.id=um.user_id) INNER JOIN #__usergroups AS g ON um.group_id=g.id WHERE u.block=0 AND g.id NOT IN (3,4,5,6,7,8".$add_admin.$add_special.") AND u.id<>".$myself." ".$hide.$hide2."ORDER BY u.".($config->realnames ? "name" : "username"); break; case 2: // admins $sql="SELECT DISTINCT u.".($config->realnames ? "name" : "username")." AS displayname, u.id FROM (#__users AS u INNER JOIN #__user_usergroup_map AS um ON u.id=um.user_id) INNER JOIN #__usergroups AS g ON um.group_id=g.id WHERE u.block=0 AND g.id NOT IN (7,8".$add_admin.") AND u.id<>".$myself." ".$hide.$hide2."ORDER BY u.".($config->realnames ? "name" : "username"); break; case 1: // superadmins $sql="SELECT DISTINCT u.".($config->realnames ? "name" : "username")." AS displayname, u.id FROM (#__users AS u INNER JOIN #__user_usergroup_map AS um ON u.id=um.user_id) INNER JOIN #__usergroups AS g ON um.group_id=g.id WHERE u.block=0 AND g.id NOT IN (8) AND u.id<>".$myself." ".$hide.$hide2."ORDER BY u.".($config->realnames ? "name" : "username"); break; default: // none $sql="SELECT DISTINCT u.".($config->realnames ? "name" : "username")." AS displayname, u.id FROM (#__users AS u INNER JOIN #__user_usergroup_map AS um ON u.id=um.user_id) INNER JOIN #__usergroups AS g ON um.group_id=g.id WHERE u.block=0 AND u.id<>".$myself." ".$hide.$hide2."ORDER BY u.".($config->realnames ? "name" : "username"); break; } if (uddeIMisAdmin($my_gid) || uddeIMisAdmin2($my_gid, $config)) // do not hide users when it is an admin $sql="SELECT ".($config->realnames ? "name" : "username")." AS displayname, id FROM #__users WHERE block=0 AND id<>".$myself." ORDER BY ".($config->realnames ? "name" : "username"); } else { $hide = ""; if ($config->hideusers) $hide = "AND id NOT IN (".uddeIMquoteSmart($config->hideusers).") "; $hide2 = ""; if (uddeIMisReggedOnly($my_gid) && $config->blockgroups) $hide2 = "AND gid NOT IN (".uddeIMquoteSmart($config->blockgroups).") "; switch ($config->hideallusers) { case 3: // special users $sql="SELECT ".($config->realnames ? "name" : "username")." AS displayname, id FROM #__users WHERE block=0 AND gid NOT IN (19,20,21,23,24,25".$add_admin.") AND id<>".$myself." ".$hide.$hide2."ORDER BY ".($config->realnames ? "name" : "username"); break; case 2: // admins $sql="SELECT ".($config->realnames ? "name" : "username")." AS displayname, id FROM #__users WHERE block=0 AND gid NOT IN (24,25".$add_admin.") AND id<>".$myself." ".$hide.$hide2."ORDER BY ".($config->realnames ? "name" : "username"); break; case 1: // superadmins $sql="SELECT ".($config->realnames ? "name" : "username")." AS displayname, id FROM #__users WHERE block=0 AND gid NOT IN (25) AND id<>".$myself." ".$hide.$hide2."ORDER BY ".($config->realnames ? "name" : "username"); break; default: // none $sql="SELECT ".($config->realnames ? "name" : "username")." AS displayname, id FROM #__users WHERE block=0 AND id<>".$myself." ".$hide.$hide2."ORDER BY ".($config->realnames ? "name" : "username"); break; } if (uddeIMisAdmin($my_gid) || uddeIMisAdmin2($my_gid, $config)) // do not hide users when it is an admin $sql="SELECT ".($config->realnames ? "name" : "username")." AS displayname, id FROM #__users WHERE block=0 AND id<>".$myself." ORDER BY ".($config->realnames ? "name" : "username"); } $database->setQuery($sql); $rows=$database->loadObjectList(); if (!$rows) $rows = array(); if ($mode==1) { // CREATE NEW MESSAGE if ($config->allowmultipleuser) $allnames="<select size=\"1\" class=\"inputbox\" name=\"userlist\" onchange=\"document.sendeform.to_name.value=(document.sendeform.to_name.value.length>0 && document.sendeform.userlist.value.length>0) ? document.sendeform.to_name.value+'".$sep."'+document.sendeform.userlist.value : document.sendeform.userlist.value; return false;\">"; else $allnames="<select size=\"1\" class=\"inputbox\" name=\"userlist\" onchange=\"document.sendeform.to_name.value=document.sendeform.userlist.value; return false;\">"; $allnames.="<option value=\"\"> </option>"; foreach ($rows as $row) { $allnames.="<option value=\"".$row->displayname."\">".$row->displayname."</option>"; } $allnames.="</select>"; echo _UDDEIM_USERLIST."<br />"; } elseif ($mode==2) { // AUTOFORWARDING BOX $allnames="<select size=\"1\" class=\"inputbox\" name=\"autoforwardid\"".($enabled==1 ? "" : " disabled=\"disabled\"").">"; foreach ($rows as $row) { $allnames.="<option value=\"".$row->id."\"".($defaultvalue==$row->id ? " selected=\"selected\"" : "").">".$row->displayname."</option>"; } $allnames.="</select>"; } else { // NOT USED $allnames="<select size=\"1\" class=\"inputbox\" name=\"userlist\">"; $allnames.="<option value=\"0\">WRONG FUNCTION CALL</option>"; foreach ($rows as $row) { $allnames.="<option value=\"".$row->displayname."\">".$row->displayname."</option>"; } $allnames.="</select>"; } echo $allnames; }
function uddeIMdoPublicShowAllUsers($config) { $database = uddeIMgetDatabase(); $hide = ""; if ($config->pubhideusers) $hide = "AND a.id NOT IN (".uddeIMquoteSmart($config->pubhideusers).") "; $hide2 = ""; if ($config->pubblockgroups) $hide2 = "AND gid NOT IN (".uddeIMquoteSmart($config->pubblockgroups).") "; switch ($config->pubhideallusers) { case 3: // special users $sql="SELECT a.".($config->pubrealnames ? "name" : "username")." AS displayname FROM #__users AS a, #__uddeim_emn AS b WHERE a.id=b.userid AND b.public=1 AND a.block=0 AND gid NOT IN (19,20,21,23,24,25) ".$hide.$hide2."ORDER BY a.".($config->pubrealnames ? "name" : "username"); break; case 2: // admins $sql="SELECT a.".($config->pubrealnames ? "name" : "username")." AS displayname FROM #__users AS a, #__uddeim_emn AS b WHERE a.id=b.userid AND b.public=1 AND a.block=0 AND gid NOT IN (24,25) ".$hide.$hide2."ORDER BY a.".($config->pubrealnames ? "name" : "username"); break; case 1: // superadmins $sql="SELECT a.".($config->pubrealnames ? "name" : "username")." AS displayname FROM #__users AS a, #__uddeim_emn AS b WHERE a.id=b.userid AND b.public=1 AND a.block=0 AND gid NOT IN (25) ".$hide.$hide2."ORDER BY a.".($config->pubrealnames ? "name" : "username"); break; default: // none $sql="SELECT a.".($config->pubrealnames ? "name" : "username")." AS displayname FROM #__users AS a, #__uddeim_emn AS b WHERE a.id=b.userid AND b.public=1 AND a.block=0 ".$hide.$hide2."ORDER BY a.".($config->pubrealnames ? "name" : "username"); break; } $database->setQuery($sql); $rows=$database->loadObjectList(); if (count($rows)>0) { $allnames="<select size=\"1\" class=\"inputbox\" name=\"userlist\" onchange=\"document.sendeform.to_name.value=document.sendeform.userlist.value; return false;\">"; $allnames.="<option value=\"\"> </option>"; foreach ($rows as $row) $allnames.="<option value=\"".$row->displayname."\">".$row->displayname."</option>"; $allnames.="</select>"; echo _UDDEIM_USERLIST."<br />"; echo $allnames; } }
/** * returns userlist for autocomplete functionality * @since J!1.5 - uddeim 0.9b+ 2007-11-21 * @author zenny */ function uddeIMcompleteUserName($myself, $config){ // look for json encoding abilities, first native php, then global pear package, then local pear copy (switched by joomla version again) if (!function_exists('json_encode') && !class_exists('Services_JSON')) { if ( !@include_once('JSON.php') ) { require_once( uddeIMgetPath('absolute_path').'/components/com_uddeim/json.php' ); } } $db = uddeIMgetDatabase(); // get and filter input (switch for jjoom and joom again) $input = trim( class_exists('JRequest') ? JRequest::getVar('value') : uddeIMmosGetParam($_REQUEST, 'value', '') ); // $input = rawurldecode($input); // $input = utf8_decode($input); // if (!class_exists('JFilterInput')) if (function_exists('iconv')) $input=iconv('UTF-8',$config->charset,$input); if (class_exists('JFilterInput')) $input = JFilterInput::clean($input, 'username'); else $input = (string) preg_replace( '/[\x00-\x1F\x7F<>"\'%&]/', '', $input ); // do not fetch stuff from db if request is faulty in any way or empty, but return an blank result set if ( strlen($input) == 0){ $results = Array(); } else { $fieldToUse = $config->realnames ? 'name' : 'username'; // NOTE: modify the input quote to extend wildcard matching if (uddeIMcheckJversion()>=5) { // J3.0 if ($myself) { $my_gid = $config->usergid; $hide = ""; if ($config->hideusers && !uddeIMisAdmin($my_gid) && !uddeIMisAdmin2($my_gid, $config)) $hide = "AND u.id NOT IN (".uddeIMquoteSmart($config->hideusers).") "; $hide2 = ""; if ($config->blockgroups && uddeIMisReggedOnly($my_gid)) $hide2 = "AND g.id NOT IN (".uddeIMquoteSmart($config->blockgroups).") "; $query = sprintf( 'SELECT DISTINCT u.id,u.%1$s AS displayname FROM (#__users AS u INNER JOIN #__user_usergroup_map AS um ON u.id=um.user_id) INNER JOIN #__usergroups AS g ON um.group_id=g.id WHERE u.block=0 AND u.%1$s LIKE %2$s '.$hide.$hide2.'ORDER BY u.%1$s LIMIT 50' , $fieldToUse // , JDatabase::quoteName( $fieldToUse ) , $db->Quote( ($config->searchinstring ? '%' : '').$input.'%' ) ); } } elseif (uddeIMcheckJversion()>=2) { // J1.6 if ($myself) { $my_gid = $config->usergid; $hide = ""; if ($config->hideusers && !uddeIMisAdmin($my_gid) && !uddeIMisAdmin2($my_gid, $config)) $hide = "AND u.id NOT IN (".uddeIMquoteSmart($config->hideusers).") "; $hide2 = ""; if ($config->blockgroups && uddeIMisReggedOnly($my_gid)) $hide2 = "AND g.id NOT IN (".uddeIMquoteSmart($config->blockgroups).") "; $query = sprintf( 'SELECT DISTINCT u.id,u.%1$s AS displayname FROM (#__users AS u INNER JOIN #__user_usergroup_map AS um ON u.id=um.user_id) INNER JOIN #__usergroups AS g ON um.group_id=g.id WHERE u.block=0 AND u.%1$s LIKE %2$s '.$hide.$hide2.'ORDER BY u.%1$s LIMIT 50' , $db->nameQuote( $fieldToUse ) // ok , $db->Quote( ($config->searchinstring ? '%' : '').$input.'%' ) ); } else { $hide = ""; if ($config->hideusers && !uddeIMisAdmin($my_gid) && !uddeIMisAdmin2($my_gid, $config)) $hide = "AND a.id NOT IN (".uddeIMquoteSmart($config->hideusers).") "; $hide2 = ""; if ($config->pubblockgroups) $hide2 = "AND g.id NOT IN (".uddeIMquoteSmart($config->pubblockgroups).") "; $query = sprintf( 'SELECT DISTINCT u.id,u.%1$s AS displayname FROM ((#__users AS u INNER JOIN #__user_usergroup_map AS um ON u.id=um.user_id) INNER JOIN #__usergroups AS g ON um.group_id=g.id) INNER JOIN #__uddeim_emn AS b ON u.id=b.userid WHERE b.public=1 AND u.block=0 AND u.%1$s LIKE %2$s '.$hide.$hide2.'ORDER BY u.%1$s LIMIT 50' , $db->nameQuote( $fieldToUse ) // ok , $db->Quote( ($config->searchinstring ? '%' : '').$input.'%' ) ); } } else { if ($myself) { $my_gid = $config->usergid; $hide = ""; if ($config->hideusers && !uddeIMisAdmin($my_gid) && !uddeIMisAdmin2($my_gid, $config)) $hide = "AND id NOT IN (".uddeIMquoteSmart($config->hideusers).") "; $hide2 = ""; if ($config->blockgroups && uddeIMisReggedOnly($my_gid)) $hide2 = "AND gid NOT IN (".uddeIMquoteSmart($config->blockgroups).") "; $query = sprintf( 'SELECT %1$s AS displayname FROM `#__users` WHERE `block` = 0 AND %1$s LIKE %2$s '.$hide.$hide2.'ORDER BY %1$s LIMIT 50' , $db->nameQuote( $fieldToUse ) // ok , $db->Quote( ($config->searchinstring ? '%' : '').$input.'%' ) ); } else { $hide = ""; if ($config->hideusers && !uddeIMisAdmin($my_gid) && !uddeIMisAdmin2($my_gid, $config)) $hide = "AND a.id NOT IN (".uddeIMquoteSmart($config->hideusers).") "; $hide2 = ""; if ($config->pubblockgroups) $hide2 = "AND a.gid NOT IN (".uddeIMquoteSmart($config->pubblockgroups).") "; $query = sprintf( 'SELECT a.%1$s AS displayname FROM `#__users` AS a, `#__uddeim_emn` AS b WHERE a.id=b.userid AND b.public=1 AND a.block=0 AND a.%1$s LIKE %2$s '.$hide.$hide2.'ORDER BY a.%1$s LIMIT 50' , $db->nameQuote( $fieldToUse ) // ok , $db->Quote( ($config->pubsearchinstring ? '%' : '').$input.'%' ) ); } } $db->setQuery( $query ); $results = $db->loadObjectList(); } $items = Array(); $use_jason = 1; $use_xml = 0; if ($use_jason) { // - old style uddeIM 1.1 // assign results foreach ( $results as $item ) { // on some systems "rawurlencode" makes troubles, so special characters are displayed wrong, if this happens, remove this function // $temp = iconv($config->charset,'UTF-8',$temp); // $temp = ($item->displayname); // works in J1.5 $temp = $item->displayname; if (function_exists('iconv')) $temp = iconv($config->charset,'UTF-8',$temp); // fix for 1.2 $items[] = rawurlencode($temp); // works in J1.0 - uddeIM 1.1 style } // encode to json and print, using available methods if (function_exists('json_encode')) echo json_encode($items); else{ $json = new Services_JSON(); echo $json->encode($items); } } if ($use_xml) { $i = 0; foreach ( $results as $item ) { $temp = $item->displayname; if (function_exists('iconv')) $temp = iconv($config->charset,'UTF-8',$temp); $items[] = array( "id"=>($i+1) ,"value"=>rawurlencode($temp), "info"=>rawurlencode("") ); $i++; } header ("Expires: Mon, 26 Jul 1997 01:00:00 GMT"); // Date in the past header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // always modified header ("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 header ("Pragma: no-cache"); // HTTP/1.0 header ("Content-Type: application/json"); echo "["; $arr = array(); for ($i=0;$i<count($items);$i++) $arr[] = "\"".$items[$i]['value']."\""; // $arr[] = "{\"id\": \"".$items[$i]['id']."\", \"value\": \"".$items[$i]['value']."\", \"info\": \"\"}"; echo implode(", ", $arr); echo "]"; } }