2001-11-22 06:23:56 +00:00
|
|
|
<?PHP // $Id$
|
|
|
|
|
|
|
|
// weblib.php
|
|
|
|
//
|
2002-10-10 07:26:10 +00:00
|
|
|
// Library of useful PHP functions and constants related to web pages.
|
2001-11-22 06:23:56 +00:00
|
|
|
//
|
|
|
|
//
|
|
|
|
|
2002-10-10 07:26:10 +00:00
|
|
|
/// Constants
|
|
|
|
|
2002-10-19 04:58:14 +00:00
|
|
|
/// Define text formatting types ... eventually we can add Wiki, BBcode etc
|
2002-10-10 07:26:10 +00:00
|
|
|
define("FORMAT_MOODLE", "0");
|
|
|
|
define("FORMAT_HTML", "1");
|
|
|
|
|
2002-10-12 03:53:40 +00:00
|
|
|
$SMILEY_TEXT[] = ":-)";
|
|
|
|
$SMILEY_IMAGE[] = "<IMG ALT=\":-)\" WIDTH=15 HEIGHT=15 SRC=\"$CFG->wwwroot/pix/s/smiley.gif\">";
|
|
|
|
$SMILEY_TEXT[] = ":)";
|
|
|
|
$SMILEY_IMAGE[] = "<IMG ALT=\":-)\" WIDTH=15 HEIGHT=15 SRC=\"$CFG->wwwroot/pix/s/smiley.gif\">";
|
|
|
|
$SMILEY_TEXT[] = ":-D";
|
|
|
|
$SMILEY_IMAGE[] = "<IMG ALT=\":-D\" WIDTH=15 HEIGHT=15 SRC=\"$CFG->wwwroot/pix/s/biggrin.gif\">";
|
|
|
|
$SMILEY_TEXT[] = ";-)";
|
|
|
|
$SMILEY_IMAGE[] = "<IMG ALT=\";-)\" WIDTH=15 HEIGHT=15 SRC=\"$CFG->wwwroot/pix/s/wink.gif\">";
|
|
|
|
$SMILEY_TEXT[] = ":-/";
|
|
|
|
$SMILEY_IMAGE[] = "<IMG ALT=\":-/\" WIDTH=15 HEIGHT=15 SRC=\"$CFG->wwwroot/pix/s/mixed.gif\">";
|
|
|
|
$SMILEY_TEXT[] = "V-.";
|
|
|
|
$SMILEY_IMAGE[] = "<IMG ALT=\"V-.\" WIDTH=15 HEIGHT=15 SRC=\"$CFG->wwwroot/pix/s/thoughtful.gif\">";
|
|
|
|
$SMILEY_TEXT[] = ":-P";
|
|
|
|
$SMILEY_IMAGE[] = "<IMG ALT=\":-P\" WIDTH=15 HEIGHT=15 SRC=\"$CFG->wwwroot/pix/s/tongueout.gif\">";
|
|
|
|
$SMILEY_TEXT[] = "B-)";
|
|
|
|
$SMILEY_IMAGE[] = "<IMG ALT=\"B-)\" WIDTH=15 HEIGHT=15 SRC=\"$CFG->wwwroot/pix/s/cool.gif\">";
|
|
|
|
$SMILEY_TEXT[] = "^-)";
|
|
|
|
$SMILEY_IMAGE[] = "<IMG ALT=\"^-)\" WIDTH=15 HEIGHT=15 SRC=\"$CFG->wwwroot/pix/s/approve.gif\">";
|
|
|
|
$SMILEY_TEXT[] = "8-)";
|
|
|
|
$SMILEY_IMAGE[] = "<IMG ALT=\"8-)\" WIDTH=15 HEIGHT=15 SRC=\"$CFG->wwwroot/pix/s/wideeyes.gif\">";
|
|
|
|
$SMILEY_TEXT[] = ":o)";
|
|
|
|
$SMILEY_IMAGE[] = "<IMG ALT=\":o)\" WIDTH=15 HEIGHT=15 SRC=\"$CFG->wwwroot/pix/s/clown.gif\">";
|
|
|
|
$SMILEY_TEXT[] = ":-(";
|
|
|
|
$SMILEY_IMAGE[] = "<IMG ALT=\":-(\" WIDTH=15 HEIGHT=15 SRC=\"$CFG->wwwroot/pix/s/sad.gif\">";
|
|
|
|
$SMILEY_TEXT[] = ":(";
|
|
|
|
$SMILEY_IMAGE[] = "<IMG ALT=\":-(\" WIDTH=15 HEIGHT=15 SRC=\"$CFG->wwwroot/pix/s/sad.gif\">";
|
|
|
|
$SMILEY_TEXT[] = "8-.";
|
|
|
|
$SMILEY_IMAGE[] = "<IMG ALT=\"8-.\" WIDTH=15 HEIGHT=15 SRC=\"$CFG->wwwroot/pix/s/shy.gif\">";
|
|
|
|
$SMILEY_TEXT[] = ":-I";
|
|
|
|
$SMILEY_IMAGE[] = "<IMG ALT=\":-I\" WIDTH=15 HEIGHT=15 SRC=\"$CFG->wwwroot/pix/s/blush.gif\">";
|
|
|
|
$SMILEY_TEXT[] = ":-X";
|
|
|
|
$SMILEY_IMAGE[] = "<IMG ALT=\":-X\" WIDTH=15 HEIGHT=15 SRC=\"$CFG->wwwroot/pix/s/kiss.gif\">";
|
|
|
|
$SMILEY_TEXT[] = "8-o";
|
|
|
|
$SMILEY_IMAGE[] = "<IMG ALT=\"8-o\" WIDTH=15 HEIGHT=15 SRC=\"$CFG->wwwroot/pix/s/surprise.gif\">";
|
|
|
|
$SMILEY_TEXT[] = "P-|";
|
|
|
|
$SMILEY_IMAGE[] = "<IMG ALT=\"P-|\" WIDTH=15 HEIGHT=15 SRC=\"$CFG->wwwroot/pix/s/blackeye.gif\">";
|
|
|
|
$SMILEY_TEXT[] = "8-[";
|
|
|
|
$SMILEY_IMAGE[] = "<IMG ALT=\"8-[\" WIDTH=15 HEIGHT=15 SRC=\"$CFG->wwwroot/pix/s/angry.gif\">";
|
|
|
|
$SMILEY_TEXT[] = "xx-P";
|
|
|
|
$SMILEY_IMAGE[] = "<IMG ALT=\"xx-P\" WIDTH=15 HEIGHT=15 SRC=\"$CFG->wwwroot/pix/s/dead.gif\">";
|
|
|
|
$SMILEY_TEXT[] = "|-.";
|
|
|
|
$SMILEY_IMAGE[] = "<IMG ALT=\"|-.\" WIDTH=15 HEIGHT=15 SRC=\"$CFG->wwwroot/pix/s/sleepy.gif\">";
|
|
|
|
$SMILEY_TEXT[] = "}-]";
|
|
|
|
$SMILEY_IMAGE[] = "<IMG ALT=\"}-]\" WIDTH=15 HEIGHT=15 SRC=\"$CFG->wwwroot/pix/s/evil.gif\">";
|
2002-10-10 07:26:10 +00:00
|
|
|
|
2002-10-18 09:09:19 +00:00
|
|
|
$JAVASCRIPT_TAGS = array("javascript:", "onclick=", "ondblclick=", "onkeydown=", "onkeypress=", "onkeyup=",
|
|
|
|
"onmouseover=", "onmouseout=", "onmousedown=", "onmouseup=",
|
|
|
|
"onblur=", "onfocus=", "onload=", "onselect=");
|
|
|
|
|
2002-10-21 09:16:06 +00:00
|
|
|
$ALLOWED_TAGS = "<p><br><b><i><u><font><table><tbody><span><div><tr><td><ol><ul><dl><li><dt><dd><h1><h2><h3><h4><h5><h6><hr><img><a><strong><emphasis><sup><sub><address><cite><blockquote><pre>";
|
2002-10-18 09:09:19 +00:00
|
|
|
|
|
|
|
|
2002-10-10 07:26:10 +00:00
|
|
|
/// Functions
|
|
|
|
|
2002-07-11 05:30:57 +00:00
|
|
|
function s($var) {
|
2002-10-19 04:58:14 +00:00
|
|
|
/// returns $var with HTML characters (like "<", ">", etc.) properly quoted,
|
|
|
|
/// or if $var is empty, will return an empty string.
|
2001-11-22 06:23:56 +00:00
|
|
|
|
|
|
|
return empty($var) ? "" : htmlSpecialChars(stripslashes($var));
|
|
|
|
}
|
|
|
|
|
|
|
|
function p($var) {
|
2002-10-19 04:58:14 +00:00
|
|
|
/// prints $var with HTML characters (like "<", ">", etc.) properly quoted,
|
|
|
|
/// or if $var is empty, will print an empty string.
|
2001-11-22 06:23:56 +00:00
|
|
|
|
|
|
|
echo empty($var) ? "" : htmlSpecialChars(stripslashes($var));
|
|
|
|
}
|
|
|
|
|
2002-07-11 05:30:57 +00:00
|
|
|
function nvl(&$var, $default="") {
|
2002-10-19 04:58:14 +00:00
|
|
|
/// if $var is undefined, return $default, otherwise return $var
|
2002-07-11 05:30:57 +00:00
|
|
|
|
|
|
|
return isset($var) ? $var : $default;
|
|
|
|
}
|
2001-11-22 06:23:56 +00:00
|
|
|
|
|
|
|
function strip_querystring($url) {
|
2002-10-19 04:58:14 +00:00
|
|
|
/// takes a URL and returns it without the querystring portion
|
2001-11-22 06:23:56 +00:00
|
|
|
|
|
|
|
if ($commapos = strpos($url, '?')) {
|
|
|
|
return substr($url, 0, $commapos);
|
|
|
|
} else {
|
|
|
|
return $url;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function get_referer() {
|
2002-10-19 04:58:14 +00:00
|
|
|
/// returns the URL of the HTTP_REFERER, less the querystring portion
|
2001-11-22 06:23:56 +00:00
|
|
|
|
2002-10-02 02:05:29 +00:00
|
|
|
global $HTTP_REFERER;
|
2002-10-19 04:58:14 +00:00
|
|
|
|
2002-07-11 05:30:57 +00:00
|
|
|
return strip_querystring(nvl($HTTP_REFERER));
|
2001-11-22 06:23:56 +00:00
|
|
|
}
|
|
|
|
|
2002-10-19 04:58:14 +00:00
|
|
|
|
2001-11-22 06:23:56 +00:00
|
|
|
function me() {
|
2002-10-19 04:58:14 +00:00
|
|
|
/// returns the name of the current script, WITH the querystring portion.
|
|
|
|
/// this function is necessary because PHP_SELF and REQUEST_URI and PATH_INFO
|
|
|
|
/// return different things depending on a lot of things like your OS, Web
|
|
|
|
/// server, and the way PHP is compiled (ie. as a CGI, module, ISAPI, etc.)
|
2001-11-22 06:23:56 +00:00
|
|
|
|
2002-10-02 02:05:29 +00:00
|
|
|
global $REQUEST_URI, $PATH_INFO, $PHP_SELF;
|
2001-11-22 06:23:56 +00:00
|
|
|
|
2002-10-02 02:05:29 +00:00
|
|
|
if ($REQUEST_URI) {
|
|
|
|
return $REQUEST_URI;
|
2002-10-19 04:58:14 +00:00
|
|
|
|
2002-10-02 02:05:29 +00:00
|
|
|
} else if ($PATH_INFO) {
|
|
|
|
return $PATH_INFO;
|
2002-10-19 04:58:14 +00:00
|
|
|
|
2002-10-02 02:05:29 +00:00
|
|
|
} else if ($PHP_SELF) {
|
|
|
|
return $PHP_SELF;
|
2002-10-19 04:58:14 +00:00
|
|
|
|
2002-10-02 02:05:29 +00:00
|
|
|
} else {
|
2002-10-19 04:58:14 +00:00
|
|
|
notify("Error: Could not find any of these web server variables: \$REQUEST_URI, \$PATH_INFO or \$PHP_SELF");
|
2002-10-02 02:05:29 +00:00
|
|
|
}
|
2001-11-22 06:23:56 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function qualified_me() {
|
2002-10-19 04:58:14 +00:00
|
|
|
/// like me() but returns a full URL
|
2001-11-22 06:23:56 +00:00
|
|
|
|
2002-10-19 04:58:14 +00:00
|
|
|
global $HTTPS, $HTTP_HOST;
|
|
|
|
|
|
|
|
if (!$HTTP_HOST) {
|
|
|
|
notify("Error: could not find web server variable: \$HTTP_HOST");
|
|
|
|
}
|
2001-11-22 06:23:56 +00:00
|
|
|
|
|
|
|
$protocol = (isset($HTTPS) && $HTTPS == "on") ? "https://" : "http://";
|
|
|
|
$url_prefix = "$protocol$HTTP_HOST";
|
|
|
|
return $url_prefix . me();
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function match_referer($good_referer = "") {
|
2002-10-19 04:58:14 +00:00
|
|
|
/// returns true if the referer is the same as the good_referer. If
|
2002-10-25 07:17:23 +00:00
|
|
|
/// good_referer is not specified, use qualified_me as the good_referer
|
2001-11-22 06:23:56 +00:00
|
|
|
|
2002-10-19 04:58:14 +00:00
|
|
|
if ($good_referer == "") {
|
|
|
|
$good_referer = qualified_me();
|
|
|
|
}
|
2001-11-22 06:23:56 +00:00
|
|
|
return $good_referer == get_referer();
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2002-10-18 09:09:19 +00:00
|
|
|
function stri_replace($find, $replace, $string ) {
|
2002-10-19 04:58:14 +00:00
|
|
|
/// This does a search and replace, ignoring case
|
|
|
|
/// This function is only here because one doesn't exist yet in PHP
|
|
|
|
/// Unlike str_replace(), this only works on single values (not arrays)
|
2002-10-18 09:09:19 +00:00
|
|
|
|
|
|
|
$parts = explode(strtolower($find), strtolower($string));
|
|
|
|
|
|
|
|
$pos = 0;
|
|
|
|
|
|
|
|
foreach ($parts as $key => $part) {
|
|
|
|
$parts[$key] = substr($string, $pos, strlen($part));
|
|
|
|
$pos += strlen($part) + strlen($find);
|
|
|
|
}
|
|
|
|
|
|
|
|
return (join($replace, $parts));
|
|
|
|
}
|
|
|
|
|
2001-11-22 06:23:56 +00:00
|
|
|
function read_template($filename, &$var) {
|
2002-10-19 04:58:14 +00:00
|
|
|
/// return a (big) string containing the contents of a template file with all
|
|
|
|
/// the variables interpolated. all the variables must be in the $var[] array or
|
|
|
|
/// object (whatever you decide to use).
|
|
|
|
///
|
|
|
|
/// WARNING: do not use this on big files!!
|
2001-11-22 06:23:56 +00:00
|
|
|
|
|
|
|
$temp = str_replace("\\", "\\\\", implode(file($filename), ""));
|
|
|
|
$temp = str_replace('"', '\"', $temp);
|
|
|
|
eval("\$template = \"$temp\";");
|
|
|
|
return $template;
|
|
|
|
}
|
|
|
|
|
|
|
|
function checked(&$var, $set_value = 1, $unset_value = 0) {
|
2002-10-19 04:58:14 +00:00
|
|
|
/// if variable is set, set it to the set_value otherwise set it to the
|
|
|
|
/// unset_value. used to handle checkboxes when you are expecting them from
|
|
|
|
/// a form
|
2001-11-22 06:23:56 +00:00
|
|
|
|
|
|
|
if (empty($var)) {
|
|
|
|
$var = $unset_value;
|
|
|
|
} else {
|
|
|
|
$var = $set_value;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function frmchecked(&$var, $true_value = "checked", $false_value = "") {
|
2002-10-19 04:58:14 +00:00
|
|
|
/// prints the word "checked" if a variable is true, otherwise prints nothing,
|
|
|
|
/// used for printing the word "checked" in a checkbox form input
|
2001-11-22 06:23:56 +00:00
|
|
|
|
|
|
|
if ($var) {
|
|
|
|
echo $true_value;
|
|
|
|
} else {
|
|
|
|
echo $false_value;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2002-07-21 08:34:25 +00:00
|
|
|
function link_to_popup_window ($url, $name="popup", $linkname="click here", $height=400, $width=500, $title="Popup window") {
|
2002-10-19 04:58:14 +00:00
|
|
|
/// This will create a HTML link that will work on both
|
|
|
|
/// Javascript and non-javascript browsers.
|
|
|
|
/// Relies on the Javascript function openpopup in javascript.php
|
|
|
|
/// $url must be relative to home page eg /mod/survey/stuff.php
|
2001-11-22 06:23:56 +00:00
|
|
|
|
2002-10-14 16:00:55 +00:00
|
|
|
global $CFG;
|
|
|
|
|
2001-11-22 06:23:56 +00:00
|
|
|
echo "\n<SCRIPT language=\"Javascript\">";
|
|
|
|
echo "\n<!--";
|
2002-07-21 08:34:25 +00:00
|
|
|
echo "\ndocument.write('<A TITLE=\"$title\" HREF=javascript:openpopup(\"$url\",\"$name\",\"$height\",\"$width\") >$linkname</A>');";
|
2001-11-22 06:23:56 +00:00
|
|
|
echo "\n//-->";
|
|
|
|
echo "\n</SCRIPT>";
|
2002-10-14 16:00:55 +00:00
|
|
|
echo "\n<NOSCRIPT>\n<A TARGET=\"$name\" TITLE=\"$title\" HREF=\"$CFG->wwwroot/$url\">$linkname</A>\n</NOSCRIPT>\n";
|
2001-11-22 06:23:56 +00:00
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
function close_window_button() {
|
2002-10-19 04:58:14 +00:00
|
|
|
/// Prints a simple button to close a window
|
|
|
|
|
2001-11-22 06:23:56 +00:00
|
|
|
echo "<FORM><CENTER>";
|
2002-10-21 03:00:40 +00:00
|
|
|
echo "<INPUT TYPE=button onClick=\"self.close();\" VALUE=\"".get_string("closewindow")."\">";
|
2001-11-22 06:23:56 +00:00
|
|
|
echo "</CENTER></FORM>";
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2002-09-19 14:51:49 +00:00
|
|
|
function choose_from_menu ($options, $name, $selected="", $nothing="choose", $script="", $nothingvalue="0", $return=false) {
|
2002-10-19 04:58:14 +00:00
|
|
|
/// Given an array of value, creates a popup menu to be part of a form
|
|
|
|
/// $options["value"]["label"]
|
2001-11-22 06:23:56 +00:00
|
|
|
|
2002-08-12 07:40:53 +00:00
|
|
|
if ($nothing == "choose") {
|
|
|
|
$nothing = get_string("choose")."...";
|
|
|
|
}
|
|
|
|
|
2001-11-22 06:23:56 +00:00
|
|
|
if ($script) {
|
|
|
|
$javascript = "onChange=\"$script\"";
|
|
|
|
}
|
2002-09-19 14:51:49 +00:00
|
|
|
$output = "<SELECT NAME=$name $javascript>\n";
|
2002-06-05 05:37:55 +00:00
|
|
|
if ($nothing) {
|
2002-09-19 14:51:49 +00:00
|
|
|
$output .= " <OPTION VALUE=\"$nothingvalue\"\n";
|
2002-06-05 05:37:55 +00:00
|
|
|
if ($nothingvalue == $selected) {
|
2002-09-19 14:51:49 +00:00
|
|
|
$output .= " SELECTED";
|
2002-06-05 05:37:55 +00:00
|
|
|
}
|
2002-09-19 14:51:49 +00:00
|
|
|
$output .= ">$nothing</OPTION>\n";
|
2002-06-05 03:15:30 +00:00
|
|
|
}
|
2001-11-22 06:23:56 +00:00
|
|
|
foreach ($options as $value => $label) {
|
2002-09-19 14:51:49 +00:00
|
|
|
$output .= " <OPTION VALUE=\"$value\"";
|
2001-11-22 06:23:56 +00:00
|
|
|
if ($value == $selected) {
|
2002-09-19 14:51:49 +00:00
|
|
|
$output .= " SELECTED";
|
2001-11-22 06:23:56 +00:00
|
|
|
}
|
|
|
|
if ($label) {
|
2002-09-19 14:51:49 +00:00
|
|
|
$output .= ">$label</OPTION>\n";
|
2001-11-22 06:23:56 +00:00
|
|
|
} else {
|
2002-09-19 14:51:49 +00:00
|
|
|
$output .= ">$value</OPTION>\n";
|
2001-11-22 06:23:56 +00:00
|
|
|
}
|
|
|
|
}
|
2002-09-19 14:51:49 +00:00
|
|
|
$output .= "</SELECT>\n";
|
|
|
|
|
|
|
|
if ($return) {
|
|
|
|
return $output;
|
|
|
|
} else {
|
|
|
|
echo $output;
|
|
|
|
}
|
2001-11-22 06:23:56 +00:00
|
|
|
}
|
|
|
|
|
2002-11-10 07:37:15 +00:00
|
|
|
function popup_form ($common, $options, $formname, $selected="", $nothing="choose", $help="", $helptext="", $return=false) {
|
2002-10-19 04:58:14 +00:00
|
|
|
/// Implements a complete little popup form
|
|
|
|
/// $common = the URL up to the point of the variable that changes
|
|
|
|
/// $options = A list of value-label pairs for the popup list
|
|
|
|
/// $formname = name must be unique on the page
|
|
|
|
/// $selected = the option that is already selected
|
|
|
|
/// $nothing = The label for the "no choice" option
|
2002-10-21 03:00:40 +00:00
|
|
|
/// $help = The name of a help page if help is required
|
|
|
|
/// $helptext = The name of the label for the help button
|
2001-11-22 06:23:56 +00:00
|
|
|
|
2002-08-12 07:40:53 +00:00
|
|
|
if ($nothing == "choose") {
|
|
|
|
$nothing = get_string("choose")."...";
|
|
|
|
}
|
|
|
|
|
2002-11-10 08:08:23 +00:00
|
|
|
$output = "<FORM TARGET=_top NAME=$formname>";
|
|
|
|
$output .= "<SELECT NAME=popup onChange=\"top.location=document.$formname.popup.options[document.$formname.popup.selectedIndex].value\">\n";
|
2001-11-22 06:23:56 +00:00
|
|
|
|
|
|
|
if ($nothing != "") {
|
2002-11-10 07:37:15 +00:00
|
|
|
$output .= " <OPTION VALUE=\"javascript:void(0)\">$nothing</OPTION>\n";
|
2001-11-22 06:23:56 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
foreach ($options as $value => $label) {
|
2002-11-10 07:37:15 +00:00
|
|
|
if (substr($label,0,1) == "-") {
|
|
|
|
$output .= " <OPTION VALUE=\"\"";
|
|
|
|
} else {
|
|
|
|
$output .= " <OPTION VALUE=\"$common$value\"";
|
|
|
|
if ($value == $selected) {
|
|
|
|
$output .= " SELECTED";
|
|
|
|
}
|
2001-11-22 06:23:56 +00:00
|
|
|
}
|
|
|
|
if ($label) {
|
2002-11-10 07:37:15 +00:00
|
|
|
$output .= ">$label</OPTION>\n";
|
2001-11-22 06:23:56 +00:00
|
|
|
} else {
|
2002-11-10 07:37:15 +00:00
|
|
|
$output .= ">$value</OPTION>\n";
|
2001-11-22 06:23:56 +00:00
|
|
|
}
|
|
|
|
}
|
2002-11-10 07:37:15 +00:00
|
|
|
$output .= "</SELECT>";
|
|
|
|
if (!$return and $help) {
|
2002-10-21 03:00:40 +00:00
|
|
|
helpbutton($help, $helptext);
|
|
|
|
}
|
2002-11-10 07:37:15 +00:00
|
|
|
$output .= "</FORM>\n";
|
|
|
|
|
|
|
|
if ($return) {
|
|
|
|
return $output;
|
|
|
|
} else {
|
|
|
|
echo $output;
|
|
|
|
}
|
2001-11-22 06:23:56 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function formerr($error) {
|
2002-10-19 04:58:14 +00:00
|
|
|
/// Prints some red text
|
2001-11-22 06:23:56 +00:00
|
|
|
if (!empty($error)) {
|
|
|
|
echo "<font color=#ff0000>$error</font>";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function validate_email ($address) {
|
2002-10-19 04:58:14 +00:00
|
|
|
/// Validates an email to make it makes sense.
|
2001-11-22 06:23:56 +00:00
|
|
|
return (ereg('^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+'.
|
|
|
|
'@'.
|
|
|
|
'[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.'.
|
|
|
|
'[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$',
|
|
|
|
$address));
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function get_slash_arguments($i=0) {
|
2002-10-19 04:58:14 +00:00
|
|
|
/// Extracts arguments from "/foo/bar/something"
|
|
|
|
/// eg http://mysite.com/script.php/foo/bar/something
|
|
|
|
/// Might only work on Apache
|
2001-11-22 06:23:56 +00:00
|
|
|
|
|
|
|
global $PATH_INFO;
|
|
|
|
|
|
|
|
if (!isset($PATH_INFO)) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
2002-09-05 11:53:17 +00:00
|
|
|
if (strpos($PATH_INFO, "..")) { // check for funny business
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
2001-11-22 06:23:56 +00:00
|
|
|
$args = explode("/", $PATH_INFO);
|
|
|
|
|
|
|
|
if ($i) { // return just the required argument
|
|
|
|
return $args[$i];
|
|
|
|
|
|
|
|
} else { // return the whole array
|
|
|
|
array_shift($args); // get rid of the empty first one
|
|
|
|
return $args;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2002-10-10 07:26:10 +00:00
|
|
|
function format_text_menu() {
|
2002-10-19 04:58:14 +00:00
|
|
|
/// Just returns an array of formats suitable for a popup menu
|
2002-10-10 07:26:10 +00:00
|
|
|
return array (FORMAT_MOODLE => get_string("formattext"),
|
|
|
|
FORMAT_HTML => get_string("formathtml") );
|
|
|
|
}
|
|
|
|
|
|
|
|
function format_text($text, $format, $options=NULL) {
|
2002-10-19 04:58:14 +00:00
|
|
|
/// Given text in a variety of format codings, this function returns
|
|
|
|
/// the text as safe HTML.
|
|
|
|
///
|
|
|
|
/// $text is raw text (originally from a user)
|
|
|
|
/// $format is one of the format constants, defined above
|
2002-10-10 07:26:10 +00:00
|
|
|
|
|
|
|
switch ($format) {
|
|
|
|
case FORMAT_MOODLE:
|
2002-10-12 03:53:40 +00:00
|
|
|
if (!isset($options->smiley)) {
|
|
|
|
$options->smiley=true;
|
|
|
|
}
|
|
|
|
if (!isset($options->para)) {
|
2002-10-12 05:09:49 +00:00
|
|
|
$options->para=true;
|
2002-10-12 03:53:40 +00:00
|
|
|
}
|
2002-10-10 07:26:10 +00:00
|
|
|
return text_to_html($text, $options->smiley, $options->para);
|
|
|
|
break;
|
2001-11-22 06:23:56 +00:00
|
|
|
|
2002-10-10 07:26:10 +00:00
|
|
|
case FORMAT_HTML:
|
2002-10-12 05:09:49 +00:00
|
|
|
$text = replace_smilies($text);
|
2002-10-18 09:09:19 +00:00
|
|
|
return $text;
|
2002-10-10 07:26:10 +00:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function clean_text($text, $format) {
|
2002-10-19 04:58:14 +00:00
|
|
|
/// Given raw text (eg typed in by a user), this function cleans it up
|
|
|
|
/// and removes any nasty tags that could mess up Moodle pages.
|
2002-03-26 12:58:54 +00:00
|
|
|
|
2002-10-18 09:09:19 +00:00
|
|
|
global $JAVASCRIPT_TAGS, $ALLOWED_TAGS;
|
|
|
|
|
|
|
|
switch ($format) { // Does the same thing, currently, but it's nice to have the option
|
2002-10-10 07:26:10 +00:00
|
|
|
case FORMAT_MOODLE:
|
2002-10-18 09:09:19 +00:00
|
|
|
$text = strip_tags($text, $ALLOWED_TAGS);
|
|
|
|
foreach ($JAVASCRIPT_TAGS as $tag) {
|
|
|
|
$text = stri_replace($tag, "", $text);
|
|
|
|
}
|
|
|
|
return $text;
|
2002-10-10 07:26:10 +00:00
|
|
|
|
|
|
|
case FORMAT_HTML:
|
2002-10-18 09:09:19 +00:00
|
|
|
$text = strip_tags($text, $ALLOWED_TAGS);
|
|
|
|
foreach ($JAVASCRIPT_TAGS as $tag) {
|
|
|
|
$text = stri_replace($tag, "", $text);
|
|
|
|
}
|
|
|
|
return $text;
|
2002-10-10 07:26:10 +00:00
|
|
|
}
|
2002-03-26 12:58:54 +00:00
|
|
|
}
|
2001-11-22 06:23:56 +00:00
|
|
|
|
2002-10-12 05:09:49 +00:00
|
|
|
function replace_smilies($text) {
|
2002-10-19 04:58:14 +00:00
|
|
|
/// Replaces all known smileys in the text with image equivalents
|
|
|
|
|
2002-10-12 05:09:49 +00:00
|
|
|
global $CFG, $SMILEY_TEXT, $SMILEY_IMAGE;
|
2002-03-26 12:58:54 +00:00
|
|
|
|
2002-10-12 05:09:49 +00:00
|
|
|
return str_replace($SMILEY_TEXT, $SMILEY_IMAGE, $text);
|
|
|
|
}
|
2002-10-10 07:26:10 +00:00
|
|
|
|
2002-08-12 13:45:41 +00:00
|
|
|
function text_to_html($text, $smiley=true, $para=true) {
|
2002-10-19 04:58:14 +00:00
|
|
|
/// Given plain text, makes it into HTML as nicely as possible.
|
|
|
|
/// May contain HTML tags already
|
2001-11-22 06:23:56 +00:00
|
|
|
|
2002-10-19 04:58:14 +00:00
|
|
|
/// Remove any whitespace that may be between HTML tags
|
2002-08-22 08:31:29 +00:00
|
|
|
$text = eregi_replace(">([[:space:]]+)<", "><", $text);
|
|
|
|
|
2002-10-19 04:58:14 +00:00
|
|
|
/// Remove any returns that precede or follow HTML tags
|
2002-09-02 07:41:39 +00:00
|
|
|
$text = eregi_replace("([\n\r])<", " <", $text);
|
|
|
|
$text = eregi_replace(">([\n\r])", "> ", $text);
|
2002-08-22 08:31:29 +00:00
|
|
|
|
2002-10-19 04:58:14 +00:00
|
|
|
/// Make lone URLs into links. eg http://moodle.com/
|
2002-10-18 17:05:17 +00:00
|
|
|
$text = eregi_replace("([\n\r ([])([[:alnum:]]+)://([^[:space:]]*)([[:alnum:]#?/&=])",
|
2002-10-18 09:09:19 +00:00
|
|
|
"\\1<A HREF=\"\\2://\\3\\4\" TARGET=\"newpage\">\\2://\\3\\4</A>", $text);
|
2001-11-22 06:23:56 +00:00
|
|
|
|
2002-10-19 04:58:14 +00:00
|
|
|
/// eg www.moodle.com
|
2001-11-22 06:23:56 +00:00
|
|
|
$text = eregi_replace("([[:space:]])www.([^[:space:]]*)([[:alnum:]#?/&=])",
|
|
|
|
"\\1<A HREF=\"http://www.\\2\\3\" TARGET=\"newpage\">www.\\2\\3</A>", $text);
|
|
|
|
|
2002-10-19 04:58:14 +00:00
|
|
|
/// Make returns into HTML newlines.
|
2001-11-22 06:23:56 +00:00
|
|
|
$text = nl2br($text);
|
|
|
|
|
2002-10-19 04:58:14 +00:00
|
|
|
/// Turn smileys into images.
|
2002-05-18 05:22:48 +00:00
|
|
|
if ($smiley) {
|
2002-10-12 05:09:49 +00:00
|
|
|
$text = replace_smilies($text);
|
2002-05-18 05:22:48 +00:00
|
|
|
}
|
2001-11-22 06:23:56 +00:00
|
|
|
|
2002-10-19 04:58:14 +00:00
|
|
|
/// Wrap the whole thing in a paragraph tag if required
|
2002-08-12 13:45:41 +00:00
|
|
|
if ($para) {
|
|
|
|
return "<P>".$text."</P>";
|
|
|
|
} else {
|
|
|
|
return $text;
|
|
|
|
}
|
2001-11-22 06:23:56 +00:00
|
|
|
}
|
|
|
|
|
2002-06-11 07:01:51 +00:00
|
|
|
function highlight($needle, $haystack) {
|
2002-10-19 04:58:14 +00:00
|
|
|
/// This function will highlight instances of $needle in $haystack
|
2002-06-11 07:01:51 +00:00
|
|
|
|
|
|
|
$parts = explode(strtolower($needle), strtolower($haystack));
|
|
|
|
|
|
|
|
$pos = 0;
|
|
|
|
|
|
|
|
foreach ($parts as $key => $part) {
|
|
|
|
$parts[$key] = substr($haystack, $pos, strlen($part));
|
|
|
|
$pos += strlen($part);
|
|
|
|
|
|
|
|
$parts[$key] .= "<SPAN CLASS=highlight>".substr($haystack, $pos, strlen($needle))."</SPAN>";
|
|
|
|
$pos += strlen($needle);
|
|
|
|
}
|
|
|
|
|
|
|
|
return (join('', $parts));
|
|
|
|
}
|
|
|
|
|
2001-11-22 06:23:56 +00:00
|
|
|
|
|
|
|
?>
|