*/ include('../../.htpasswd'); //Connect to to database $con = mysqli_connect($host, $username_rw, $pass_rw, $db_name); //Set encoding options mysqli_set_charset($con, 'utf-8'); header('Content-Type: text/html; charset=utf8'); mysqli_query($con, 'SET NAMES utf8;'); //Return the db connection return $con; } /** * Discerns the type of notifications requested. * * Determines which notificatios the request is looking for: public * notification or members-only notifications. To do so, it looks for a * request parameter keyed 'target' * * @since 3.0.0 * @param array $get Array with the request parameters. * @return string 'all' or 'gm' if it was passed as the 'target' GET * parameter. 'gm' if there was no 'target' parameter or * null if some invalid value was passed as the 'target' * parameter. */ function get_target($get){ $target = $get[GET_TARGET]; if (strlen($target) < 1){ return DEF_TARGET; } else{ if ($target != TARGET_ALL && $target != TARGET_GM){ return null; } else{ return $target; } } } /** * Retrieves the notifications * * Retrieves the notificatios for the selected target that are still on * time to be delivered and formats them as a JSON object. * * @since 3.0.0 * @param object $con Open database connection. * @param string $target Optional. 'gm' or 'all'. Default is 'all'. * @return string JSON object with the fetched notifications. */ function select_notifications($con, $target = TARGET_ALL){ if ($target == TARGET_GM){ $query = "SELECT id, title_es, title_en, title_eu, text_es, text_en, text_eu, dtime, internal AS gm, duration, action, 0 AS seen FROM notification WHERE internal = 1 AND dtime > NOW() - INTERVAL duration MINUTE ORDER BY dtime DESC"; } else{ $query = "SELECT id, title_es, title_en, title_eu, text_es, text_en, text_eu, dtime, internal AS gm, duration, action, 0 AS seen FROM notification WHERE dtime > NOW() - INTERVAL duration MINUTE ORDER BY dtime DESC"; } $q = mysqli_query($con, $query); if (mysqli_num_rows($q) == 0){ return null; } else{ $rows = array(); while($r = mysqli_fetch_assoc($q)) { $rows[] = $r; } return(json_encode($rows)); } } /** * Prints the notifications. * * @since 3.0.0 * @param string $notifications JSON object with the notifications, * as generated by * {@see select_notifications($con, $target)} */ function print_notifications($notifications){ echo($notifications); } // SCRIPT START // Connect to the database $con = startdb('rw'); // Select target $target = get_target($_GET); if ($target == null){ // Bad request http_response_code(400); exit(-1); } // Get notifications $notifications = select_notifications($con, $_GET[GET_TARGET]); if ($notifications == null){ // No content http_response_code(204); } else{ print_notifications($notifications); } ?>