0); } /** * Get the real user name for an account name. If the function fails, it throws * an Exception. * @param $strAct (string) Account name of the user to look up * @return (string) The real name of the user. * @throws Exception */ function getRealUserName($strAct) { $hQuery = db_query("SELECT firstname, lastname FROM users WHERE act = $1;", $strAct); if(!is_resource($hQuery)) { throw new Exception(RS_ERROR_SQL); } if(pg_num_rows($hQuery) == 0) { return $strAct; // User not found in database, return account name } $arResult = pg_fetch_array($hQuery); return user_join_name($arResult); } /** * Determine if a specified group exists. If the function fails, it throws an * Exception. * @param $strAct (string) Account name of the group * @return bool * @throws Exception */ function isGroup($strAct) { $hQuery = db_query("SELECT * FROM groups WHERE act = $1;", $strAct); if(!is_resource($hQuery)) { throw new Exception(RS_ERROR_SQL); } return (pg_num_rows($hQuery) > 0); } /** * Look up the name of a group. If the function fails, it throws an Exception. * @param $strAct (string) Account name of the group * @return (string) The name of the group. */ function getGroupName($strAct) { $hQuery = db_query("SELECT * FROM groups WHERE act = $1;", $strAct); if(!is_resource($hQuery)) { throw new Exception(RS_ERROR_SQL); } if(pg_num_rows($hQuery) == 0) { return $strAct; // Group not found in database, return account name } $arResult = pg_fetch_array($hQuery); return $arResult["name"]; } /** * Create a link to write a mail to the specified account name. Returns a link * if the specified account exists, otherwise it returns the account name. * @param $strAct (string) Account name * @param $strColor (string) Background color for icon() * @param $strParams (string) additional URL parameters * @return string */ function mailToUserLink($strAct, $strColor = "bl", $strParams = "") { if(!isAct($strAct)) { return $strAct; } return popup(relroot("msg/write/?to=".user_mail_addr($strAct).$strParams), 600, 400, nobr(icon("mail-reply-usr", array("size" => 16, "bg" => $strColor)) . getRealUserName($strAct))); } /** * Determine if a specified string is a valid mail address * @param $strAddr string * @return string */ function isMailAddress($strAddr) { return ((preg_match("/([a-zA-Z0-9_\-\.]*(@[a-zA-Z0-9\-\.]*)?(\s*,\s*)?)+/", $strAddr) > 0) && (preg_match("/(\s*,\s*)$/", $strAddr) == 0)); } /** * Module-specific logging function. Prefixes the log message with a * module-specific string and writes it to the logs. * @param $strLog (string) Log message * @return void */ function rrInsertLog($strLog) { log_insert($strLog, null, "Room Reservation Schedule"); } /** * Get the SQL day number from a given timestamp. * @param $ts (timestamp) * @return (int) 0-6 for Sunday to Monday */ function rrDateToSQLDayNumber($ts) { $aDays = array("Sun" => 0, "Mon" => 1, "Tue" => 2, "Wed" => 3, "Thu" => 4, "Fri" => 5, "Sat" => 6); return $aDays[date("D", $ts)]; } /** * Convert a UNIX timestamp to an SQL date string * @param $ts (timestamp) * @return string */ function dateToSql($ts) { return date("Y\-m\-d", intval($ts)); } /** * Calculate the timestamp of the monday in the current week * @param $ts (timestamp) Calculate the value relative to this date * @return timestamp */ function rrGetMonday($ts = null) { if($ts === null) { $ts = time(); } if(date("D", $ts) == "Mon") { // Today is monday return strtotime("00:00", $ts); } else { return strtotime("last monday", $ts); } } /** (array of strings) Additional CSS rules */ $GLOBALS["rrLocalCss"] = array(); /** * Add CSS rules to the page * @param $s (string) * @return void */ function rrAddCss($s) { rrDebug("rrAddCss: add \"$s\""); $GLOBALS["rrLocalCss"][] = $s; } /** * Get CSS rules that have been added with rrAddCss() * @return string */ function rrGetCss() { rrDebug("rrGetCss: Local CSS is ".var_export($GLOBALS["rrLocalCss"], true)); return implode("\n", $GLOBALS["rrLocalCss"]); } function rrDebug($s, $bReturn = false) { if(isset($_GET["debug"])) { if(!$bReturn) { echo "\n"; } else { return $s; } } } /** * sprintf with support for ordinal numbers. * This version of sprintf replaces all substrings of the type /\\d+#/ * (i.e. a decimal number with a hash sign appended) in the input string with * the corresponding english ordinal number prefices (st, nd, rd, th). * @param $str (string) Input string * @param $args (mixed) Additional parameters to be passed to sprintf() * @return (string) */ function _sprintf_ord($str, $args /*leave this parameters for doxygen*/) { $args = func_get_args(); if(preg_match_all("/%[bcdufosxX]/", $args[0], $temp) != func_num_args()-1) { trigger_error("Too few arguments", E_USER_ERROR); return false; } $str = call_user_func_array("sprintf", $args); while(preg_match("/(.*)(\d+)#(.*)/", $str, $m)) $str = $m[1]._(append_ord_suffix($m[2])).$m[3]; return $str; } ?>