* @version $Id$ * @license GPL * @package WebDAVAdmin * * Copyright (c) 2007 Jan Dittberner * * This file is part of WebDAVAdmin. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301 USA. */ /** Include configuration information. */ require_once('config.inc.php'); // output is plain text (JSON or an error message) header("Content-Type: text/plain; charset=UTF-8"); /** * Gets group names for autocompletion. * * @param string $part Comma separated list of groups and beginning of * a new group entry * @return list of Comma separated lists of groups */ function getGroups($part) { $regexp = '%(?:^|,\ *)("(?>[^"]*)(?>""[^"]* )*"|(?: [^",]*))%x'; preg_match_all($regexp, $part, $matches); $array = $matches[1]; $last_string = trim(array_pop($array)); if ($last_string != '') { try { $dbh = new PDO($GLOBALS['dsn'], $GLOBALS['dbuser'], $GLOBALS['dbpass']); $sth = $dbh->prepare("SELECT DISTINCT groupname FROM dav_group WHERE LOWER(groupname) LIKE LOWER(?) ORDER BY groupname"); $sth->execute(array("%" . $last_string . "%")); $prefix = count($array) ? implode(",", $array) . ", " : ''; $retval = array(); foreach ($sth->fetchAll(PDO::FETCH_ASSOC) as $row) { $retval[$prefix . $row['groupname']] = $row['groupname']; } $dbh = null; } catch (PDOException $e) { return $e->getMessage(); } } return json_encode($retval); } // split group list part from requested URL. $parts = substr($_SERVER['PHP_SELF'], strrpos($_SERVER['PHP_SELF'], "/") + 1); print getGroups($parts); ?>