Пример #1
0
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;
}
Пример #2
0
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=\"\">&nbsp;</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;
}
Пример #3
0
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=\"\">&nbsp;</option>";
		foreach ($rows as $row)
			$allnames.="<option value=\"".$row->displayname."\">".$row->displayname."</option>";
		$allnames.="</select>";
		echo _UDDEIM_USERLIST."<br />";
		echo $allnames;
	}
}
Пример #4
0
/**
 * 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 "]";
	}
}