Adds stuff about groups

This commit is contained in:
nikolark committed 2014-08-03 19:01:31 +02:00
1 parent 79af6bfea5
commit e25bb1e82b
2 files changed
+102 -8

No files matched your search

+59
View File
@@ -0,0 +1,59 @@
<?php
set_include_path("../includes/");
require_once("../inside/credentials.php");
require_once("../includes/DB.php");
/* Functions */
/* Set HTTP response code */
function set_response_code($code) {
if(!is_int($code)) {
return false;
}
header('X-Ignore-This: something', true, $code);
}
header('Access-Control-Allow-Origin: *', true); // Come fetch!
/* Connect to database */
$options = array(
'debug' => 2,
'portability' => DB_PORTABILITY_ALL,
);
$conn = DB::connect(getDSN(), $options);
if(DB :: isError($conn)) {
echo $conn->toString();
}
$conn->setFetchMode(DB_FETCHMODE_ASSOC);
// Search query
$sql = "SELECT g.name as group_name, g.id as group_id, g.posix_group, g.mailinglist, g.admin as is_admin_group,
d.user_id_contact, d.nicename, d.office, d.url, d.updated, d.name as division_name, d.id as division_id
FROM din_division AS d
LEFT JOIN din_group AS g ON d.id=g.division_id
WHERE g.id IS NOT NULL
ORDER BY g.name";
$res = $conn->getAll($sql);
/* Encode */
$results = array();
foreach($res as $result) {
foreach($result as $key => $value) {
/* Encoding issues? oh yes, utf-8 please */
if(is_string($value)) {
$result[$key] = utf8_encode($value);
}
}
$results[] = $result;
}
if( DB::isError($res) ) {
set_response_code(500);
echo json_encode(array('error' => $res->getMessage().". DEBUG: ".$res->getDebugInfo()));
die();
}
echo json_encode(array('results' => $results));
?>
+43 -8
View File
@@ -33,10 +33,15 @@ if(DB :: isError($conn)) {
}
$conn->setFetchMode(DB_FETCHMODE_ORDERED);
/* Valid API KEY (defined in credentials.php) ? */
if(!isset($_GET['apikey']) || $_GET['apikey'] !== USER_API_KEY) {
if( !isset($_GET['apikey']) ) {
set_response_code(400);
echo json_encode(array('error' => "Invalid apikey."));
echo json_encode(array('error' => "Missing param apikey."));
die();
}
/* Valid API KEY (defined in credentials.php) ? */
if( $_GET['apikey'] !== USER_API_KEY ) {
set_response_code(400);
echo json_encode(array('error' => "Invalid apikey.".$_GET['apikey']));
die();
}
@@ -46,7 +51,25 @@ if(!isset($_GET['q'])) {
echo json_encode(array('error' => "Missing search param q"));
die();
}
if( strlen($_GET['q']) <= 2 ) {
/* Filters */
$groups = array();
if(isset($_GET['filter_groups']) && strlen($_GET['filter_groups']) > 0 ) {
if( !strstr(",", $_GET['filter_groups']) ) {
$groups = array($_GET['filter_groups']);
} else {
$groups = explode($_GET['filter_groups'], ",");
}
foreach($groups as $group) {
if( !is_numeric($group) ) {
set_response_code(400);
echo json_encode(array('error' => "Value in filter_groups must be numeric: '".$group."'"));
die();
}
}
}
if( strlen($_GET['q']) <= 2 && count($groups) == 0 ) {
set_response_code(400);
echo json_encode(array('error' => "Search param must be longer than 2 chars"));
die();
@@ -58,13 +81,25 @@ $query = $_GET['q'];
$query = "%" . str_replace(" ", "% %", $query) . "%";
$query = $conn->quoteSmart($query);
// Search query
$user_search_query = "CONCAT(UPPER(u.firstname), ' ', UPPER(u.lastname)) LIKE $query
OR CONCAT(UPPER(u.firstname), ' ', UPPER(u.lastname)) LIKE $query
OR UPPER(u.username) LIKE $query
OR UPPER(u.email) LIKE $query";
$sql = "SELECT DISTINCT u.id
FROM din_user u
WHERE CONCAT(UPPER(u.firstname), ' ', UPPER(u.lastname)) LIKE $query
OR CONCAT(UPPER(u.firstname), ' ', UPPER(u.lastname)) LIKE $query
OR UPPER(u.username) LIKE $query
OR UPPER(u.email) LIKE $query";
WHERE $user_search_query";
// Search query with groups
if(count($groups) > 0) {
$sql = "SELECT DISTINCT u.id
FROM din_user u
LEFT JOIN din_usergrouprelationship as ug ON u.id=ug.user_id
WHERE ($user_search_query)
AND ug.group_id IN(".implode($groups, ",").")";
}
$res = $conn->getAll($sql);
if( DB::isError($res) ) {