Example #1
0
function _get_sipuser($user_id)
{
    global $db;
    $user = $db->executeGetOne('SELECT `name` FROM `ast_sipfriends` WHERE `_user_id`=\'' . $db->escape($user_id) . '\'');
    if (!$user) {
        _err('Unknown sip user.');
    }
    return $user;
}
Example #2
0
function _get_userid()
{
	global $_SERVER, $db;
	
	$remote_addr = @$_SERVER['REMOTE_ADDR'];
	$user_id = (int)$db->executeGetOne( 'SELECT `id` FROM `users` WHERE `current_ip`=\''. $db->escape($remote_addr) .'\'' );
	if ($user_id < 1) _err( 'Unknown user.' );
	return $user_id;
}
Example #3
0
function _get_user_ext($user_id)
{
    $db = gs_db_slave_connect();
    $user_ext = $db->executeGetOne('SELECT `name` FROM `ast_sipfriends` WHERE `_user_id`=\'' . $db->escape($user_id) . '\'');
    if (!$user_ext) {
        _err('Unknown user.');
        return false;
    }
    return $user_ext;
}
Example #4
0
function getUserID($ext)
{
    global $db;
    if (!preg_match('/^\\d+$/', $ext)) {
        _err('Invalid username');
    }
    $user_id = (int) $db->executeGetOne('SELECT `_user_id` FROM `ast_sipfriends` WHERE `name`=\'' . $db->escape($ext) . '\'');
    if ($user_id < 1) {
        _err('Unknown user');
    }
    return $user_id;
}
Example #5
0
function getUserID($ext)
{
    global $db;
    if (!preg_match("/^\\d+\$/", $ext)) {
        _err("Invalid username");
    }
    $user_id = (int) $db->executeGetOne("SELECT `_user_id` FROM `ast_sipfriends` WHERE `name`='" . $db->escape($ext) . "'");
    if ($user_id < 1) {
        _err("Unknown user");
    }
    return $user_id;
}
Example #6
0
 private function connect()
 {
     $host = $this->args['host'];
     $port = $this->args['port'];
     $pass = $this->args['pass'];
     @($this->__sock = fsockopen($host, $port, $errno, $errstr));
     if ($this->__sock === false) {
         _err(__CLASS__, 'CONNECTION FAILED - ' . trim($errstr));
     }
     if ($pass) {
         $this->AUTH($pass);
     }
 }
Example #7
0
$error_msg = array();
//inizializzo l'array di errori
if (@$_GET['login'] == 1) {
    $username = clear($_POST['username']);
    $password = $_POST['password'];
    if (empty($username) && empty($password)) {
        $error_msg[] = "<font color=red><p><i>Inserire i dati per il Login!</i><p></font>";
    } elseif (login($username, md5($password)) == FALSE) {
        $error_msg[] = "<font color=red><p><i>Dati inseriti Errati!</i><p></font>";
    } elseif (check_maintenance(2) == 1 && level($username) == 'user') {
        $error_msg[] = "<font color=red><p><i>Login Impossibile (Forum in Modalità Manutenzione)</i><p></font>";
    } elseif (login($username, md5($password)) == TRUE && empty($error_msg)) {
        setcookie("0xBB_user", $username);
        setcookie("0xBB_pass", md5($password));
        //aggiorno l'IP dell'utente nel ban_ip
        mysql_query("UPDATE " . __PREFIX__ . "ban_ip \n\t\t\t\t\t\tSET ip = '" . $_SERVER['REMOTE_ADDR'] . "' \n\t\t\t\t\t  WHERE user_id = '" . nick2uid($username) . "'") or _err(mysql_error());
        header("Location: index.php");
        exit;
    } else {
        $error_msg[] = "<font color=red><p><i>Errore di Login! Riprova</i><p></font>";
    }
}
if ($error_msg) {
    print '<div class="error_msg">
		  <h3 align="center">ERRORI nella fase di LOGIN!</h2><br />
	          <br />';
    foreach ($error_msg as $error_message) {
        print $error_message . "<br />\n";
    }
    print "<br />\n<center><a href='javascript:history.back()'>Torna Indietro</a>\n</center>\n</div>\n";
} else {
Example #8
0
$url_polycom_dnd = GS_PROV_SCHEME . "://" . GS_PROV_HOST . (GS_PROV_PORT ? ":" . GS_PROV_PORT : "") . GS_PROV_PATH . "polycom/dnd.php";
$newdndstate = trim(@$_REQUEST["setdnd"]);
if ($newdndstate == "on" || $newdndstate == "off") {
    $masterdb = gs_db_master_connect();
    if (!$masterdb) {
        _err("Could not connect to database.");
    }
    if ($newdndstate == "on") {
        $dndvalue = 'yes';
    }
    if ($newdndstate == "off") {
        $dndvalue = 'no';
    }
    $check = $masterdb->execute("INSERT INTO `dnd` (`_user_id`, `active`) VALUES (" . $user_id . ", '" . $db->escape($dndvalue) . "') ON DUPLICATE KEY UPDATE `active` = '" . $db->escape($dndvalue) . "'");
    if (!$check) {
        _err("Failed to set new DND state.");
    }
    if (GS_BUTTONDAEMON_USE == true) {
        gs_dnd_changed_ui($user, $newdndstate);
    }
}
#################################### MAIN MENU {
$current_dndstate = $db->executeGetOne("SELECT `active` FROM `dnd` WHERE `_user_id`=" . $user_id);
echo $mainmenu_doctype . "\n";
echo "<html>\n";
echo "<head><title>" . __("Ruhe/DND") . "</title></head>\n";
echo "<body><br />\n";
echo "<table border=\"0\" cellspacing=\"0\" cellpadding=\"1\" width=\"100%\">\n";
echo "<tr>";
echo "<th width=\"100%\" align=\"center\">" . __("Ruhe/DND-Status setzen") . ":</th></tr>\n";
echo "<tr><td width=\"100%\" align=\"center\"><a href=\"" . $url_polycom_dnd . "?m=" . $mac . "&amp;u=" . $user . "&amp;setdnd=on\">" . ($current_dndstate == 'yes' ? "*" : "") . __("Ein") . "</a></td></tr>\n";
Example #9
0
function karma($user_id)
{
    global $karma;
    $query = "SELECT vote FROM " . __PREFIX__ . "karma WHERE vote_user_id = '{$user_id}'";
    $res = mysql_query($query) or _err(mysql_error());
    while ($row = mysql_fetch_row($res)) {
        $karma += $row[0];
    }
    if ($karma == NULL) {
        $karma = 0;
    }
    if ($karma > 0) {
        $karma = "<b><font color = 'green'>+{$karma}</font></b>";
    } elseif ($karma < 0) {
        $karma = "<b><font color = 'red'>{$karma}</font></b>";
    } else {
        $karma = "<b><font color = 'grey'>{$karma}</font></b>";
    }
    return $karma;
}
Example #10
0
gs_loadtextdomain('gemeinschaft-gui');
gs_settextdomain('gemeinschaft-gui');
//--- get user_id
$user_id = (int) $db->executeGetOne('SELECT `_user_id` FROM `ast_sipfriends` WHERE `name`=\'' . $db->escape($user) . '\'');
if ($user_id < 1) {
    _err('Unknown user.');
}
//--- check user/ip/mac
$user_id_check = $db->executeGetOne("SELECT `user_id` FROM `phones` WHERE `mac_addr`='" . $db->escape($mac) . "'");
if ($user_id != $user_id_check) {
    _err("Not authorized");
}
$remote_addr = @$_SERVER["REMOTE_ADDR"];
$remote_addr_check = $db->executeGetOne("SELECT `current_ip` FROM `users` WHERE `id`=" . $user_id);
if ($remote_addr != $remote_addr_check) {
    _err("Not authorized");
}
unset($remote_addr_check);
unset($remote_addr);
unset($user_id_check);
$typeToTitle = array("out" => __("Gewählt"), "missed" => __("Verpasst"), "in" => __("Angenommen"));
ob_start();
$url_polycom_dl = GS_PROV_SCHEME . '://' . GS_PROV_HOST . (GS_PROV_PORT ? ':' . GS_PROV_PORT : '') . GS_PROV_PATH . 'polycom/diallog.php';
if (isset($delete) && $type) {
    //--- clear list (
    $db->execute('DELETE FROM `dial_log` ' . 'WHERE ' . '  `user_id`=' . $user_id . ' AND ' . '  `type`=\'' . $type . '\'');
    //--- ) clear list
}
#################################### INITIAL SCREEN {
if (!$type) {
    //--- delete outdated entries
Example #11
0
function kona3plugins_comment_action_write($page)
{
    global $output_format;
    $bbs_id = isset($_POST['bbs_id']) ? $_POST['bbs_id'] : '';
    $name = isset($_POST['name']) ? $_POST['name'] : '';
    $body = isset($_POST['body']) ? $_POST['body'] : '';
    $pw = isset($_POST['pw']) ? $_POST['pw'] : '';
    //
    $bbs_id = intval($bbs_id);
    if ($body == '' || $bbs_id <= 0) {
        _err($page, 'Invalid data');
        exit;
    }
    if ($name == '') {
        $name = 'no name';
    }
    $pdo = kona3getDB();
    $stmt = $pdo->prepare("INSERT INTO comment_list(bbs_id, name, body, delkey, ctime, mtime)" . "VALUES(?, ?, ?, ?, ?, ?)" . "");
    $a = array($bbs_id, $name, $body, $pw, time(), time());
    $r = $stmt->execute($a);
    $_SESSION['name'] = $name;
    $_SESSION['password'] = $pw;
    // show result
    if ($output_format == "json") {
        _ok($page, "inserted");
    }
    // jump
    header("location: index.php?" . urlencode($page));
}
Example #12
0
 /**
  * custom query
  * @todo Select from database
  * @param string $sql An SQL string
  * @param array $array Paramters to bind
  * @param constant $fetchMode A PDO Fetch mode
  * @return mixed
  */
 public function CustomQuery($sql, $array = array(), $fetchMode = PDO::FETCH_ASSOC)
 {
     //remove type
     if (isset($array['type'])) {
         unset($array['type']);
     }
     //send sql
     $stmt = $this->prepare($sql);
     // send params
     foreach ($array as $key => $value) {
         $stmt->bindValue("{$key}", $value);
     }
     // run sql
     $success = $stmt->execute();
     // dubug unsuccess
     if (_DBG_ && !$success) {
         _err(array_merge($stmt->errorInfo(), array($sql)));
     }
     return $stmt->fetchAll($fetchMode);
 }
Example #13
0
    case '15':
        @($position = (int) $_GET['position']);
        @($real_position = (int) $_GET['real_position']);
        @($f_id = (int) $_GET['f_id']);
        if ($position && $f_id && $real_position) {
            // nuova posizione
            $new_position = $real_position + $position;
            $query = "UPDATE " . __PREFIX__ . "forum SET position = " . $real_position . " WHERE position = " . $new_position;
            $res = mysql_query($query) or _err(mysql_error());
            $query = "UPDATE " . __PREFIX__ . "forum SET position = " . $new_position . " WHERE id = " . $f_id;
            $res = mysql_query($query) or _err(mysql_error());
            header("Location: admin.php?mode=15");
        } else {
            print "\n<h2 align=\"center\">Posizionamento dei Forum</h2><br /><br />" . "\n<table align=\"center\">" . "\n<tr>" . "\n\t<td class=\"users\"> Titolo</td>" . "\n\t<td class=\"users\">Descrizione</td>" . "\n\t<td class=\"users\">Sposta</td>" . "\n</tr>";
            $query = "SELECT * FROM " . __PREFIX__ . "forum ORDER BY position";
            $res = mysql_query($query) or _err(mysql_error());
            while ($row = mysql_fetch_array($res)) {
                print "\n<tr>" . "\n\t<td class=\"users\">" . $row['title'] . "</td>" . "\n\t<td class=\"users\">" . $row['description'] . "</td>" . "\n\t<td class=\"users\"><a href=\"admin.php?mode=15&position=-1&f_id=" . $row['id'] . "&real_position=" . $row['position'] . "\">[SU]</a> -" . "\n\t<a href=\"admin.php?mode=15&position=1&f_id=" . $row['id'] . "&real_position=" . $row['position'] . "\">[GIU]</a></td>" . "\n</tr>";
            }
            print "\n</table>";
        }
        break;
    default:
        ?>
		<p><b>Pannello di Controllo Amministratore:</b></p>
		-> <a href = 'admin.php?mode=1'>Gestione Forums</a><br />
    	-> <a href = 'admin.php?mode=15'>Gestione Posizione Forums</a><br />
		-> <a href = 'admin.php?mode=2'>Aggiungi/Rimuovi Amministratori</a><br />
		-> <a href = 'admin.php?mode=5'>Aggiungi/Rimuovi Moderatori</a><br />	
		-> <a href = 'admin.php?mode=14'>Aggiungi/Rimuovi Utenti VIP</a><br />		
		-> <a href = 'admin.php?mode=3'>Cancella Utente</a><br />
Example #14
0
				<br />
				<input type = 'submit' value = 'Invia'>
			</form>
			<?php 
        }
        break;
    case 4:
        $id = (int) $_GET['id'];
        $query = "SELECT to_usr FROM " . __PREFIX__ . "pm WHERE id = '" . $id . "'";
        $row = mysql_fetch_row(mysql_query($query));
        if ($row[0] == $username) {
            $query = "DELETE FROM " . __PREFIX__ . "pm WHERE id = '" . $id . "'";
            mysql_query($query) or die("SQL Error:" . mysql_error());
            header("Location: pm.php");
        } else {
            _err("<b>Errore!</b>Non sei autorizzato a leggere questo PM!");
        }
        break;
    default:
        header("Location: pm.php?mode=1");
        break;
}
?>
</div>
</div>
<?php 
footer();
?>
</body>
</html>
Example #15
0
    _err("Not enabled.");
}
$mac = preg_replace("/[^\\dA-Z]/", "", strtoupper(trim(@$_REQUEST["mac"])));
$user = trim(@$_REQUEST["user"]);
if (!preg_match("/^\\d+\$/", $user)) {
    _err("Not a valid SIP user.");
}
$db = gs_db_slave_connect();
// setup i18n stuff
gs_setlang(gs_get_lang_user($db, $user, GS_LANG_FORMAT_GS));
gs_loadtextdomain('gemeinschaft-gui');
gs_settextdomain('gemeinschaft-gui');
//--- get user_id
$user_id = (int) $db->executeGetOne("SELECT `_user_id` FROM `ast_sipfriends` WHERE `name`='" . $db->escape($user) . "'");
if ($user_id < 1) {
    _err("Unknown user.");
}
$menuitems = array(array("file" => "diallog.php?user="******"&amp;mac=" . $mac, "title" => __("Ruflisten")), array("file" => "pb.php?u=" . $user . "&amp;m=" . $mac, "title" => __("Telefonbuch")), array("file" => "configmenu.php?u=" . $user . "&amp;m=" . $mac, "title" => __("Konfiguration")));
ob_start();
$url_polycom_base = GS_PROV_SCHEME . "://" . GS_PROV_HOST . (GS_PROV_PORT ? ":" . GS_PROV_PORT : "") . GS_PROV_PATH . "polycom/";
#################################### MAIN MENU {
echo $mainmenu_doctype . "\n";
echo "<html>\n";
echo "<head><title>" . __("Telefonmenü") . "</title></head>\n";
echo "<body><br />\n";
foreach ($menuitems as $thismenuitem) {
    echo "- <a href=\"" . $url_polycom_base . $thismenuitem["file"] . "\">" . $thismenuitem["title"] . "</a><br />\n";
}
echo "</body>\n";
echo "</html>\n";
#################################### MAIN MENU }
# connect to db
$db = gs_db_slave_connect();
if (!$db) {
    gs_log(GS_LOG_WARNING, "Phone with MAC \"{$mac}\" (Grandstream) ask for phonebook - Could not connect to DB");
    _err('No! See log for details.');
}
# get user_id
$user_id = (int) $db->executeGetOne('SELECT `u`.`id`
FROM
	`users` `u` JOIN
	`phones` `p` ON (`p`.`user_id`=`u`.`id`)
WHERE
	`u`.`current_ip`=\'' . $db->escape($requester['phone_ip']) . '\' AND
	`p`.`mac_addr`=\'' . $db->escape($mac) . '\'');
if ($user_id < 1) {
    _err('Unknown user');
}
$user_groups = gs_group_members_groups_get(array($user_id), 'user');
$permission_groups = gs_group_permissions_get($user_groups, 'phonebook_user');
$group_members = gs_group_members_get($permission_groups);
$pb = array();
# INTERNAL phonebook
$pb[15] = array('type' => 'gs', 'title' => gs_get_conf('GS_PB_INTERNAL_TITLE', __("Intern")), 'query' => 'SELECT `u`.`lastname` `ln`, `u`.`firstname` `fn`, `s`.`name` `ext`
FROM
	`users` `u` JOIN
	`ast_sipfriends` `s` ON (`s`.`_user_id`=`u`.`id`)
WHERE
	`u`.`id` IN (' . implode(',', $group_members) . ') AND
	`u`.`id`!=' . $user_id . '
ORDER BY `u`.`lastname`, `u`.`firstname`
LIMIT 100');
Example #17
0
 * viewtopic.php                                                        
 ***************************************************************************/
include "kernel.php";
show_header();
show_menu();
list($username, $password) = get_data();
$id = (int) $_GET['id'];
if (!check_topic_id($id)) {
    _err('ID Inesistente!');
}
// controllo se il topic è protetto
if (check_access_topic($id) != NULL && check_access_topic($id) != 'user') {
    if (login($username, $password) == TRUE) {
        if (level($username) != 'admin' && level($username) != 'mod') {
            if (level($username) != check_access_topic($id)) {
                _err('Non hai i permessi per visualizzare questo topic!');
            }
        }
    } else {
        if (check_access_topic($id) != NULL && check_access_topic($id) != 'user') {
            header('Location: index.php');
        }
    }
}
?>
<div class = 'path' id = 'path'>
	<ul>
		<li><b><a href = 'index.php'>Indice Forum</a></b></li>
		<li><?php 
patch_forum($id, 1);
?>
Example #18
0
        # the stupid Snom!
    }
    defineBackKey();
    echo '</SnomIPPhoneMenu>', "\n";
    _ob_send();
}
#################################### INITIAL SCREEN }
function defineBackKey()
{
    global $user, $type, $mac, $url_snom_menu;
    $args = array();
    $args[] = 'm=' . $mac;
    $args[] = 'u=' . $user;
    echo '<SoftKeyItem>', '<Name>#</Name>', '<URL>', $url_snom_menu, '?', implode('&', $args), '</URL>', '</SoftKeyItem>', "\n";
    echo '<SoftKeyItem>', '<Name>F4</Name>', '<Label>', snom_xml_esc(__('Menü')), '</Label>', '<URL>', $url_snom_menu, '?', implode('&', $args), '</URL>', '</SoftKeyItem>', "\n";
}
#################################### FORWARD SCREEN {
if ($type == 'forward') {
    if (!$show_forward) {
        _err("forbidden");
    }
    $mac = preg_replace('/[^\\dA-Z]/', '', strToUpper(trim(@$_REQUEST['m'])));
    ob_start();
    echo '<?', 'xml version="1.0" encoding="utf-8"?', '>', "\n", '<SnomIPPhoneMenu>', "\n", '<Title>' . __("Rufumleitung") . '</Title>', "\n\n";
    echo '<MenuItem>', "\n", '<Name>', snom_xml_esc(__('Rufumleitung')), '</Name>', "\n", '<URL>', $url_snom_provdir, 'callforward.php?m=', $mac, '&u=', $user, '</URL>', "\n", '</MenuItem>', "\n\n";
    echo '<MenuItem>', "\n", '<Name>', snom_xml_esc(__('externe Nummern')), '</Name>', "\n", '<URL>', $url_snom_provdir, 'extnumbers.php?m=', $mac, '&u=', $user, '</URL>', "\n", '</MenuItem>', "\n\n";
    defineBackKey();
    echo '</SnomIPPhoneMenu>', "\n";
    _ob_send();
}
#################################### FORWARD SCREEN }
Example #19
0
    }
    return $user_id;
}
if (!gs_get_conf('GS_SNOM_PROV_ENABLED')) {
    gs_log(GS_LOG_DEBUG, "Snom provisioning not enabled");
    snom_textscreen(__('Fehler'), __('Nicht aktiviert'));
}
$db = gs_db_slave_connect();
$user = trim(@$_REQUEST['u']);
$user_id = getUserID($user);
## Check permissions
#
$user_groups = gs_group_members_groups_get(array($user_id), 'user');
$members = gs_group_permissions_get($user_groups, 'forward');
if (count($members) <= 0) {
    _err('Forbidden');
}
// setup i18n stuff
gs_setlang(gs_get_lang_user($db, $user, GS_LANG_FORMAT_GS));
gs_loadtextdomain("gemeinschaft-gui");
gs_settextdomain("gemeinschaft-gui");
$type = trim(@$_REQUEST['t']);
if (!in_array($type, array('internal', 'external', 'std', 'var', 'timeout'), true)) {
    $type = false;
}
$tmp = array(15 => array('k' => 'internal', 'v' => gs_get_conf('GS_CLIR_INTERNAL', __("von intern"))), 25 => array('k' => 'external', 'v' => gs_get_conf('GS_CLIR_EXTERNAL', __("von extern"))));
kSort($tmp);
foreach ($tmp as $arr) {
    $typeToTitle[$arr['k']] = $arr['v'];
}
$url_snom_callforward = GS_PROV_SCHEME . '://' . GS_PROV_HOST . (GS_PROV_PORT ? ':' . GS_PROV_PORT : '') . GS_PROV_PATH . 'snom/callforward.php';
Example #20
0
     if (check_url($web_site) == FALSE) {
         $error_msg[] = 'Il Sito Web inserito non è valido';
     }
 }
 if (strlen($username) > 20) {
     $error_msg[] = 'L\'username è troppo lungo ( Max. 20 caratteri )';
 }
 if (!$error_msg) {
     $pass = md5($pass);
     $query = "INSERT INTO " . __PREFIX__ . "users (\n\t\t\t\t\t\tusername, password, level, email, web_site, msn, theme\n\t\t\t\t\t) VALUES (\n\t\t\t\t\t\t'" . $username . "', '{$pass}', 'user', '{$email}', '{$web_site}', '{$msn}', 'default.css')";
     mysql_query($query) or _err(mysql_error());
     $sql = "INSERT INTO " . __PREFIX__ . "karma (\n\t\t\t\t\t\tvote_user_id, vote\n\t\t\t\t\t) VALUES (\n\t\t\t\t\t\t'" . nick2uid($username) . "', '0')";
     mysql_query($sql) or _err(mysql_error());
     //ban ip inserimenti IP
     $ban_ip = "INSERT INTO " . __PREFIX__ . "ban_ip (\n\t\t\t\t\t\tuser_id, ip, banned\n\t\t\t\t\t) VALUES (\n\t\t\t\t\t\t'" . nick2uid($username) . "', '" . $_SERVER['REMOTE_ADDR'] . "', '0')";
     mysql_query($ban_ip) or _err(mysql_error());
     $oggetto = "Benvenuto in " . SITE_NAME . ".";
     $messaggio = "Ciao " . $username . "\n" . "Siamo lieti di darti il benvenuto in " . SITE_NAME . "\n" . "I tuoi dati di accesso sono:\n\n" . "Username: "******"\n" . "Password: "******"\n\n" . "Ti auguriamo una buona permanenza,\n" . "Lo Staff ~ " . SITE_NAME . ".";
     $check_send_mail = @mail($email, $oggetto, $messaggio, "From: " . $email);
     if ($check_send_email == TRUE) {
         die("<div class=\"success_msg\" align=\"center\">\nRegistrazione Avvenuta con Successo!\n<br /><p>E-Mail di Benvenuto Inviata!</p><br />\n<a href=\"login.php\">Vai al Login</a></div>");
     } else {
         die("<div class=\"success_msg\" align=\"center\">\nRegistrazione Avvenuta con Successo!\n<br /><p>E-Mail di Benvenuto non Inviata!</p><br />\n<a href=\"login.php\">Vai al Login</a></div>");
     }
 } else {
     print "\n<div class=\"error_msg\">" . "\n<h3 align=\"center\">Errori nella form!</h2><br />" . "\n<br /><center>";
     foreach ($error_msg as $error_message) {
         print $error_message . " <br />\n";
     }
     print "<br />\n<a href='javascript:history.back()'>Torna Indietro</a>\n</center>\n</div>\n";
 }
$url_polycom_dnd = GS_PROV_SCHEME . "://" . GS_PROV_HOST . (GS_PROV_PORT ? ":" . GS_PROV_PORT : "") . GS_PROV_PATH . "polycom/dnd.php";
$newdndstate = trim(@$_REQUEST['setdnd']);
if ($newdndstate == 'on' || $newdndstate == 'off') {
    $masterdb = gs_db_master_connect();
    if (!$masterdb) {
        _err('Could not connect to database.');
    }
    if ($newdndstate == 'on') {
        $dndvalue = 1;
    }
    if ($newdndstate == 'off') {
        $dndvalue = 0;
    }
    $check = $db->execute("INSERT INTO `dnd`\n\t\t(`user_id`, `active`) VALUES\n\t\t(" . $user_id . ", " . (int) $dndvalue . ") \n\t\tON DUPLICATE KEY UPDATE `active` = " . (int) $dndvalue);
    if (!$check) {
        _err('Failed to set new DND state.');
    }
}
#################################### MAIN MENU {
$current_dndstate = $db->executeGetOne("SELECT `active` FROM `dnd` WHERE `user_id`=" . $user_id);
echo "<html>\n";
echo "<head><title>" . __("Ruhe/DND") . "</title></head>\n";
echo "<body><br />\n";
echo "<table border=\"0\" cellspacing=\"0\" cellpadding=\"1\" width=\"100%\">\n";
echo "<tr>";
echo "<th width=\"100%\" align=\"center\">Ruhe/DND-Status setzen:</th></tr>\n";
echo "<tr><td width=\"100%\" align=\"center\"><a href=\"" . $url_polycom_dnd . "?m=" . $mac . "&amp;u=" . $user . "&amp;setdnd=on\">" . ($current_dndstate == 1 ? "*" : "") . "Ein</a></td></tr>\n";
echo "<tr><td width=\"100%\" align=\"center\"><a href=\"" . $url_polycom_dnd . "?m=" . $mac . "&amp;u=" . $user . "&amp;setdnd=off\">" . ($current_dndstate == 0 ? "*" : "") . "Aus</a></td></tr>\n";
echo "</table>\n";
echo "</body>\n";
echo "</html>\n";
 function _parseTrack($binStr, $tn)
 {
     //$trackLen2 =  ((( (( (ord($binStr[0]) << 8) | ord($binStr[1]))<<8) | ord($binStr[2]) ) << 8 ) |  ord($binStr[3]) );
     //$trackLen2 += 4;
     $trackLen = strlen($binStr);
     // MM: ToDo: Warn if trackLen and trackLen2 are different!!!
     // if ($trackLen != $trackLen2) { echo "Warning: TrackLength is corrupt ($trackLen != $trackLen2)! \n"; }
     $p = 4;
     $time = 0;
     $track = array();
     while ($p < $trackLen) {
         // timedelta
         $dt = _readVarLen($binStr, $p);
         $time += $dt;
         $byte = ord($binStr[$p]);
         $high = $byte >> 4;
         $low = $byte - $high * 16;
         switch ($high) {
             case 0xc:
                 //PrCh = ProgramChange
                 $chan = $low + 1;
                 $prog = ord($binStr[$p + 1]);
                 $last = 'PrCh';
                 $track[] = "{$time} PrCh ch={$chan} p={$prog}";
                 $p += 2;
                 break;
             case 0x9:
                 //On
                 $chan = $low + 1;
                 $note = ord($binStr[$p + 1]);
                 $vel = ord($binStr[$p + 2]);
                 $last = 'On';
                 $track[] = "{$time} On ch={$chan} n={$note} v={$vel}";
                 $p += 3;
                 break;
             case 0x8:
                 //Off
                 $chan = $low + 1;
                 $note = ord($binStr[$p + 1]);
                 $vel = ord($binStr[$p + 2]);
                 $last = 'Off';
                 $track[] = "{$time} Off ch={$chan} n={$note} v={$vel}";
                 $p += 3;
                 break;
             case 0xa:
                 //PoPr = PolyPressure
                 $chan = $low + 1;
                 $note = ord($binStr[$p + 1]);
                 $val = ord($binStr[$p + 2]);
                 $last = 'PoPr';
                 $track[] = "{$time} PoPr ch={$chan} n={$note} v={$val}";
                 $p += 3;
                 break;
             case 0xb:
                 //Par = ControllerChange
                 $chan = $low + 1;
                 $c = ord($binStr[$p + 1]);
                 $val = ord($binStr[$p + 2]);
                 $last = 'Par';
                 $track[] = "{$time} Par ch={$chan} c={$c} v={$val}";
                 $p += 3;
                 break;
             case 0xd:
                 //ChPr = ChannelPressure
                 $chan = $low + 1;
                 $val = ord($binStr[$p + 1]);
                 $last = 'ChPr';
                 $track[] = "{$time} ChPr ch={$chan} v={$val}";
                 $p += 2;
                 break;
             case 0xe:
                 //Pb = PitchBend
                 $chan = $low + 1;
                 $val = ord($binStr[$p + 1]) & 0x7f | (ord($binStr[$p + 2]) & 0x7f) << 7;
                 $last = 'Pb';
                 $track[] = "{$time} Pb ch={$chan} v={$val}";
                 $p += 3;
                 break;
             default:
                 switch ($byte) {
                     case 0xff:
                         // Meta
                         $meta = ord($binStr[$p + 1]);
                         switch ($meta) {
                             case 0x0:
                                 // sequence_number
                                 $tmp = ord($binStr[$p + 2]);
                                 if ($tmp == 0x0) {
                                     $num = $tn;
                                     $p += 3;
                                 } else {
                                     $num = 1;
                                     $p += 5;
                                 }
                                 $track[] = "{$time} Seqnr {$num}";
                                 break;
                             case 0x1:
                                 // Meta Text
                             // Meta Text
                             case 0x2:
                                 // Meta Copyright
                             // Meta Copyright
                             case 0x3:
                                 // Meta TrackName ???sequence_name???
                             // Meta TrackName ???sequence_name???
                             case 0x4:
                                 // Meta InstrumentName
                             // Meta InstrumentName
                             case 0x5:
                                 // Meta Lyrics
                             // Meta Lyrics
                             case 0x6:
                                 // Meta Marker
                             // Meta Marker
                             case 0x7:
                                 // Meta Cue
                                 $texttypes = array('Text', 'Copyright', 'TrkName', 'InstrName', 'Lyric', 'Marker', 'Cue');
                                 $type = $texttypes[$meta - 1];
                                 $p += 2;
                                 $len = _readVarLen($binStr, $p);
                                 if ($len + $p > $trackLen) {
                                     _err("Meta {$type} has corrupt variable length field ({$len}) [track: {$tn} dt: {$dt}]");
                                 }
                                 $txt = substr($binStr, $p, $len);
                                 $track[] = "{$time} Meta {$type} \"{$txt}\"";
                                 $p += $len;
                                 break;
                             case 0x20:
                                 // ChannelPrefix
                                 $chan = ord($binStr[$p + 3]);
                                 if ($chan < 10) {
                                     $chan = '0' . $chan;
                                 }
                                 //???
                                 $track[] = "{$time} Meta 0x20 {$chan}";
                                 $p += 4;
                                 break;
                             case 0x21:
                                 // ChannelPrefixOrPort
                                 $chan = ord($binStr[$p + 3]);
                                 if ($chan < 10) {
                                     $chan = '0' . $chan;
                                 }
                                 //???
                                 $track[] = "{$time} Meta 0x21 {$chan}";
                                 $p += 4;
                                 break;
                             case 0x2f:
                                 // Meta TrkEnd
                                 $track[] = "{$time} Meta TrkEnd";
                                 return $track;
                                 //ignore rest
                                 break;
                             case 0x51:
                                 // Tempo
                                 $tempo = ord($binStr[$p + 3]) * 256 * 256 + ord($binStr[$p + 4]) * 256 + ord($binStr[$p + 5]);
                                 $track[] = "{$time} Tempo {$tempo}";
                                 if ($tn == 0 && $time == 0) {
                                     $this->tempo = $tempo;
                                     // ???
                                     $this->tempoMsgNum = count($track) - 1;
                                 }
                                 $p += 6;
                                 break;
                             case 0x54:
                                 // SMPTE offset
                                 $h = ord($binStr[$p + 3]);
                                 $m = ord($binStr[$p + 4]);
                                 $s = ord($binStr[$p + 5]);
                                 $f = ord($binStr[$p + 6]);
                                 $fh = ord($binStr[$p + 7]);
                                 $track[] = "{$time} SMPTE {$h} {$m} {$s} {$f} {$fh}";
                                 $p += 8;
                                 break;
                             case 0x58:
                                 // TimeSig
                                 $z = ord($binStr[$p + 3]);
                                 $t = pow(2, ord($binStr[$p + 4]));
                                 $mc = ord($binStr[$p + 5]);
                                 $c = ord($binStr[$p + 6]);
                                 $track[] = "{$time} TimeSig {$z}/{$t} {$mc} {$c}";
                                 $p += 7;
                                 break;
                             case 0x59:
                                 // KeySig
                                 $vz = ord($binStr[$p + 3]);
                                 $g = ord($binStr[$p + 4]) == 0 ? 'major' : 'minor';
                                 $track[] = "{$time} KeySig {$vz} {$g}";
                                 $p += 5;
                                 break;
                             case 0x7f:
                                 // Sequencer specific data (string or hexString???)
                                 $p += 2;
                                 $len = _readVarLen($binStr, $p);
                                 if ($len + $p > $trackLen) {
                                     _err("SeqSpec has corrupt variable length field ({$len}) [track: {$tn} dt: {$dt}]");
                                 }
                                 $p -= 3;
                                 $data = '';
                                 for ($i = 0; $i < $len; $i++) {
                                     $data .= ' ' . sprintf("%02x", ord($binStr[$p + 3 + $i]));
                                 }
                                 $track[] = "{$time} SeqSpec{$data}";
                                 $p += $len + 3;
                                 break;
                             default:
                                 // MM added: accept "unknown" Meta-Events
                                 $metacode = sprintf("%02x", ord($binStr[$p + 1]));
                                 $p += 2;
                                 $len = _readVarLen($binStr, $p);
                                 if ($len + $p > $trackLen) {
                                     _err("Meta {$metacode} has corrupt variable length field ({$len}) [track: {$tn} dt: {$dt}]");
                                 }
                                 $p -= 3;
                                 $data = '';
                                 for ($i = 0; $i < $len; $i++) {
                                     $data .= ' ' . sprintf("%02x", ord($binStr[$p + 3 + $i]));
                                 }
                                 $track[] = "{$time} Meta 0x{$metacode} {$data}";
                                 $p += $len + 3;
                                 break;
                         }
                         // switch ($meta)
                         break;
                         // Ende Meta
                     // Ende Meta
                     case 0xf0:
                         // SysEx
                         $p += 1;
                         $len = _readVarLen($binStr, $p);
                         if ($len + $p > $trackLen) {
                             _err("SysEx has corrupt variable length field ({$len}) [track: {$tn} dt: {$dt} p: {$p}]");
                         }
                         $str = 'f0';
                         for ($i = 0; $i < $len; $i++) {
                             $str .= ' ' . sprintf("%02x", ord($binStr[$p + $i]));
                         }
                         # FIXED
                         $track[] = "{$time} SysEx {$str}";
                         $p += $len;
                         break;
                     default:
                         // Repetition of last event?
                         switch ($last) {
                             case 'On':
                             case 'Off':
                                 $note = ord($binStr[$p]);
                                 $vel = ord($binStr[$p + 1]);
                                 $track[] = "{$time} {$last} ch={$chan} n={$note} v={$vel}";
                                 $p += 2;
                                 break;
                             case 'PrCh':
                                 $prog = ord($binStr[$p]);
                                 $track[] = "{$time} PrCh ch={$chan} p={$prog}";
                                 $p += 1;
                                 break;
                             case 'PoPr':
                                 $note = ord($binStr[$p + 1]);
                                 $val = ord($binStr[$p + 2]);
                                 $track[] = "{$time} PoPr ch={$chan} n={$note} v={$val}";
                                 $p += 2;
                                 break;
                             case 'ChPr':
                                 $val = ord($binStr[$p]);
                                 $track[] = "{$time} ChPr ch={$chan} v={$val}";
                                 $p += 1;
                                 break;
                             case 'Par':
                                 $c = ord($binStr[$p]);
                                 $val = ord($binStr[$p + 1]);
                                 $track[] = "{$time} Par ch={$chan} c={$c} v={$val}";
                                 $p += 2;
                                 break;
                             case 'Pb':
                                 $val = ord($binStr[$p]) & 0x7f | (ord($binStr[$p + 1]) & 0x7f) << 7;
                                 $track[] = "{$time} Pb ch={$chan} v={$val}";
                                 $p += 2;
                                 break;
                             default:
                                 // MM: ToDo: Repetition of SysEx and META-events? with <last>?? \n";
                                 _err("unknown repetition: {$last}");
                         }
                         // switch ($last)
                 }
                 // switch ($byte)
         }
         // switch ($high)
     }
     // while
     return $track;
 }
Example #23
0
    $pos = (int) gs_get_conf('GS_PB_IMPORTED_ORDER', 9) * 10;
    $tmp[$pos] = array('k' => 'imported', 'v' => gs_get_conf('GS_PB_IMPORTED_TITLE', __("Importiert")));
}
kSort($tmp);
foreach ($tmp as $arr) {
    $typeToTitle[$arr['k']] = $arr['v'];
}
$url_snom_extnumbers = GS_PROV_SCHEME . '://' . GS_PROV_HOST . (GS_PROV_PORT == 80 ? '' : ':' . GS_PROV_PORT) . GS_PROV_PATH . 'snom/extnumbers.php';
$url_snom_menu = GS_PROV_SCHEME . '://' . GS_PROV_HOST . (GS_PROV_PORT ? ':' . GS_PROV_PORT : '') . GS_PROV_PATH . 'snom/menu.php';
#################################### INITIAL SCREEN {
if (!$type) {
    $mac = preg_replace('/[^\\dA-Z]/', '', strToUpper(trim(@$_REQUEST['m'])));
    $user_name = $db->executeGetOne('SELECT `user` FROM `users` WHERE `id`=\'' . $db->escape($user_id) . '\'');
    $enumbers = gs_user_external_numbers_get($user_name);
    if (isGsError($enumbers)) {
        _err('Fehler beim Abfragen.');
    }
    ob_start();
    echo '<?', 'xml version="1.0" encoding="utf-8"?', '>', "\n", '<SnomIPPhoneMenu>', "\n", '<Title>' . __("externe Nummern") . '</Title>', "\n\n";
    foreach ($enumbers as $extnumber) {
        echo '<MenuItem>', "\n", '<Name>', snom_xml_esc($extnumber), '</Name>', "\n", '<URL>', $url_snom_menu, '?t=forward&m=', $mac, '&u=', $user, '</URL>', "\n", '</MenuItem>', "\n\n";
        # in XML the & must normally be encoded as &amp; but not for
        # the stupid Snom!
    }
    defineBackMenu();
    echo '</SnomIPPhoneMenu>', "\n";
    _ob_send();
}
#################################### INITIAL SCREEN }
function defineBackMenu()
{
$user = trim(@$_REQUEST['user']);
if (!preg_match('/^\\d+$/', $user)) {
    _err('Not a valid SIP user.');
}
$type = trim(@$_REQUEST['type']);
if (!in_array($type, array('in', 'out', 'missed', 'queue'), true)) {
    $type = false;
}
if (isset($_REQUEST['delete'])) {
    $delete = (int) $_REQUEST['delete'];
}
$db = gs_db_slave_connect();
//--- get user_id
$user_id = (int) $db->executeGetOne('SELECT `_user_id` FROM `ast_sipfriends` WHERE `name`=\'' . $db->escape($user) . '\'');
if ($user_id < 1) {
    _err('Unknown user.');
}
$typeToTitle = array('out' => __("Gewählt"), 'missed' => __('Verpasst'), 'in' => __('Angenommen'), 'queue' => __('Warteschlangen'));
ob_start();
$url_polycom_dl = GS_PROV_SCHEME . '://' . GS_PROV_HOST . (GS_PROV_PORT ? ':' . GS_PROV_PORT : '') . GS_PROV_PATH . 'polycom/diallog.php';
if (isset($delete) && $type) {
    //--- clear list (
    $db->execute('DELETE FROM `dial_log` ' . 'WHERE ' . '  `user_id`=' . $user_id . ' AND ' . '  `type`=\'' . $type . '\'');
    //--- ) clear list
}
#################################### INITIAL SCREEN {
if (!$type) {
    //--- delete outdated entries
    $db->execute('DELETE FROM `dial_log` WHERE `user_id`=' . $user_id . ' AND `timestamp`<' . (time() - (int) GS_PROV_DIAL_LOG_LIFE));
    echo $diallog_doctype . "\n";
    echo '<html>', "\n";
Example #25
0
 /**
  * Create objects and fill objects tables from a OSM xml document (string).
  *
  * @param string $xmlStr
  */
 public function createObjectsfromXml($xmlStr)
 {
     OSM_ZLog::debug(__METHOD__, $xmlStr);
     if (empty($xmlStr)) {
         throw new OSM_Exception('Xml string could not be empty');
     }
     $xmlObj = simplexml_load_string($xmlStr);
     if ($xmlObj == null) {
         _err('Failed to parse xml: [' . print_r($xmlStr, true) . ']');
         throw new OSM_Exception('Failed to parse xml');
     }
     $this->_loadedXml[] = $xmlStr;
     // Take all others object
     $objects = $xmlObj->xpath('/osm/*');
     foreach ($objects as $obj) {
         OSM_ZLog::debug(__METHOD__, 'subobjects type=', $obj->getName());
         switch ($obj->getName()) {
             case self::OBJTYPE_RELATION:
                 $r = OSM_Objects_Relation::fromXmlObj($obj);
                 $this->_relations[$r->getId()] = $r;
                 break;
             case self::OBJTYPE_WAY:
                 $w = OSM_Objects_Way::fromXmlObj($obj);
                 $this->_ways[$w->getId()] = $w;
                 break;
             case self::OBJTYPE_NODE:
                 $n = OSM_Objects_Node::fromXmlObj($obj);
                 $this->_nodes[$n->getId()] = $n;
                 break;
             case 'note':
             case 'meta':
             case 'remark':
                 break;
             default:
                 throw new OSM_Exception('Object "' . $obj->getName() . '" is not supported');
         }
     }
 }
Example #26
0
    print nick2uid($row[3]) . "'>" . $row[3];
    ?>
</a></td>
		<td class="forums"><?php 
    print $replies;
    ?>
</td>
	</tr>
	<tr>
	<td colspan="3"><hr style="margin:1px;height:1px;border:none;background-color:white;"></td>
</tr>
<?php 
}
// end while write topics announcement and important
$query_2 = "SELECT * \n\t\t\t  FROM " . __PREFIX__ . "topic \n\t\t\t WHERE f_id = '" . $id . "' \n\t\t\t   AND replyof < 0\n\t\t\t   AND ((important = 0 OR important = NULL) \n\t\t\t   AND (announcement = 0 OR announcement = NULL)) \n\t\t\t ORDER by last DESC \n\t\t\t LIMIT " . $limit . " \n\t\t\tOFFSET " . $offset;
$result = mysql_query($query_2) or _err(mysql_error());
while ($row = mysql_fetch_row($result)) {
    $query = "SELECT id FROM " . __PREFIX__ . "topic WHERE replyof = '" . $row[0] . "'";
    $res2 = mysql_query($query);
    $replies = 0;
    while (mysql_fetch_row($res2)) {
        $replies++;
    }
    ?>
	<tr>
		<td class="forums"><a href = 'viewtopic.php?id=<?php 
    print $row[0] . "'>" . $row[4] . "</a> " . check_graphic_block_topic($row[0]);
    ?>
</td>
		<td class="forums"><a href = 'profile.php?id=<?php 
    print nick2uid($row[3]) . "'>" . $row[3];
Example #27
0
function zayav_info()
{
    if (!($zayav_id = _num(@$_GET['id']))) {
        return _err('Страницы не существует');
    }
    $sql = "SELECT *\n\t\t\tFROM `zayav`\n\t\t\tWHERE `ws_id`=" . WS_ID . "\n\t\t\t  AND !`deleted`\n\t\t\t  AND `id`=" . $zayav_id;
    if (!($z = query_assoc($sql))) {
        return _err('Заявки не существует.');
    }
    $z['pre_cost'] = _cena($z['pre_cost']);
    $status = _zayavStatus();
    unset($status[0]);
    $history = _history(array('zayav_id' => $zayav_id));
    return '<script type="text/javascript">' . 'var ZAYAV={' . 'id:' . $zayav_id . ',' . 'nomer:' . $z['nomer'] . ',' . 'head:"№<b>' . $z['nomer'] . '</b>",' . 'client_id:' . $z['client_id'] . ',' . 'client_link:"' . addslashes(_clientVal($z['client_id'], 'link')) . '",' . 'status:' . $z['status'] . ',' . 'status_sel:' . _selJson($status) . ',' . 'name:"' . addslashes($z['name']) . '",' . 'about:"' . addslashes($z['about']) . '",' . 'count:' . $z['count'] . ',' . 'adres:"' . addslashes($z['adres']) . '",' . 'pre_cost:' . $z['pre_cost'] . '};' . '</script>' . '<div id="zayav-info">' . '<div id="dopLinks">' . '<a class="link a-page sel">Информация</a>' . '<a class="link" id="edit">Редактирование</a>' . '<a class="link _accrual-add">Начислить</a>' . '<a class="link _income-add">Принять платёж</a>' . '<a class="link a-page">История</a>' . '</div>' . '<div class="page">' . '<div class="headName">' . 'Заявка №' . $z['nomer'] . '<input type="hidden" id="zayav-action" />' . '</div>' . '<table id="tab">' . '<tr><td class="label">Клиент:<td>' . _clientVal($z['client_id'], 'go') . '<tr><td class="label">Название:<td><b>' . $z['name'] . '</b>' . '<tr><td class="label">Описание:<td>' . $z['about'] . '<tr><td class="label">Количество:<td><b>' . $z['count'] . '</b> шт.' . ($z['adres'] ? '<tr><td class="label">Адрес:<td>' . $z['adres'] : '') . ($z['pre_cost'] ? '<tr><td class="label">Стоимость:<td><b>' . $z['pre_cost'] . '</b> руб.' : '') . '<tr><td class="label">Дата приёма:' . '<td class="dtime_add' . _tooltip('Заявку ' . _viewerAdded($z['viewer_id_add']), -70) . FullDataTime($z['dtime_add']) . '<tr><td class="label">Статус:<td>' . _zayavStatusButton($z) . '</table>' . _zayavInfoAccrual($zayav_id) . _zayav_expense($zayav_id) . _remind_zayav($zayav_id) . _zayavInfoMoney($zayav_id) . _vkComment('zayav', $zayav_id) . '</div>' . '<div class="page dn">' . '<div class="headName">Заявка №' . $z['nomer'] . ' - история действий</div>' . $history['spisok'] . '</div>' . '</div>';
}
Example #28
0
 * =========================================================================*
 * Software:					0xBB
 * Software version:			2.0
 * Author:						KinG-InFeT
 * Copyleft:					GNU General Public License              
 * =========================================================================*
 * dump.php
 ***************************************************************************/
set_time_limit(0);
include "kernel.php";
list($username, $password) = get_data();
if (!login($username, $password)) {
    _err("ACCESS DENIED");
}
if (!(level($username) == 'admin')) {
    _err("ACCESS DENIED");
}
if (isset($_REQUEST['esegui_backup'])) {
    $mysql_host = $db_host;
    $mysql_database = $db_name;
    $mysql_username = $db_user;
    $mysql_password = $db_pass;
    header('Content-type: text/plain');
    header('Content-Disposition: attachment; filename="' . $mysql_host . "_" . $mysql_database . "_" . date('YmdHis') . '.sql"');
    _mysqldump($mysql_database);
}
function _mysqldump($mysql_database)
{
    $sql = "show tables;";
    $result = mysql_query($sql);
    if ($result) {
	# don't explain this to the users
	_err( 'No! See log for details.' );
}

# only gxv3000
if (! in_array($phone_model, array('gxv3000'), true) ) {
	gs_log( GS_LOG_WARNING, 'only gxp3000' );
	_err( 'No! See log for details.' );
}
*/
# DB connect
require_once GS_DIR . 'inc/db_connect.php';
$db = gs_db_slave_connect();
if (!$db) {
    gs_log(GS_LOG_WARNING, "Grandstream phone asks for idle screen - Could not connect to DB");
    _err('Could not connect to DB.');
}
# get user_id
$user_id = (int) $db->executeGetOne('SELECT `id` FROM `users` WHERE `current_ip`=\'' . $db->escape($remote_ip) . '\'');
function checksum($str)
{
    $sum = 0;
    for ($i = 0; $i <= (strLen($str) - 1) / 2; $i++) {
        $sum += ord(subStr($str, 2 * $i, 1)) << 8;
        $sum += ord(subStr($str, 2 * $i + 1, 1));
        $sum &= 0xffff;
    }
    $sum = 0x10000 - $sum;
    return array($sum >> 8 & 0xff, $sum & 0xff);
}
#####################################################################
		`ast_sipfriends` `s` ON (`s`.`_user_id`=`u`.`id`)
		WHERE
			`u`.`id` IN (' . implode(',', $group_members) . ') AND
			`u`.`id`!=' . $user_id . '
		ORDER BY `u`.`lastname`, `u`.`firstname`');
} elseif ($type === 'prv') {
    # PRIVATE phonebook
    $pb = array('type' => 'prv', 'title' => gs_get_conf('GS_PB_PRIVATE_TITLE', __("Persönlich")), 'query' => 'SELECT `pb`.`lastname` `ln`, `pb`.`firstname` `fn`, `pb`.`number` `ext`
		FROM
		`pb_prv` `pb`
		WHERE `pb`.`user_id`=' . $user_id . '
		ORDER BY `pb`.`lastname`, `pb`.`firstname`');
} elseif (type === 'imported') {
    # IMPORTED phonebook
    if (!gs_get_conf('GS_PB_IMPORTED_ENABLED')) {
        _err('Not allowed');
    }
    $pb = array('type' => 'imported', 'title' => gs_get_conf('GS_PB_IMPORTED_TITLE', __("Extern")), 'query' => 'SELECT `lastname` `ln`, `firstname` `fn`, `number` `ext`
		FROM `pb_ldap`
		ORDER BY `lastname`, `firstname`');
}
ob_start();
echo '<?', 'xml version="1.0" encoding="utf-8"?', '>', "\n";
echo '<TiptelIPPhoneDirectory>', "\n";
echo '<Title>' . $pb['title'] . '</Title>', "\n";
$rs = $db->execute($pb['query']);
if ($rs && $rs->numRows() !== 0) {
    while ($r = $rs->fetchRow()) {
        $lastname = $r['ln'];
        $firstname = $r['fn'];
        $number = $r['ext'];