summaryrefslogtreecommitdiff
path: root/includes/common.inc
diff options
context:
space:
mode:
Diffstat (limited to 'includes/common.inc')
-rw-r--r--includes/common.inc268
1 files changed, 141 insertions, 127 deletions
diff --git a/includes/common.inc b/includes/common.inc
index 72324c5f0..b138d79b5 100644
--- a/includes/common.inc
+++ b/includes/common.inc
@@ -10,10 +10,7 @@
*/
/**
- * @name Page title
- *
- * Functions to get and set the title of the current page.
- * @{
+ * Set the title of the current page, for display on the page and in the title bar.
*/
function drupal_set_title($title = NULL) {
static $stored_title;
@@ -24,6 +21,9 @@ function drupal_set_title($title = NULL) {
return $stored_title;
}
+/**
+ * Get the title of the current page, for display on the page and in the title bar.
+ */
function drupal_get_title() {
$title = drupal_set_title();
@@ -33,18 +33,13 @@ function drupal_get_title() {
return $title;
}
-/* @} */
/**
- * @name Page breadcrumbs
+ * Set the breadcrumb trail for the current page.
*
- * Functions to get and set the breadcrumb trail of the current page.
- * @{
- */
-
-/**
- * @param $breadcrumb Array of links, starting with "home" and proceeding up
- * to but not including the current page.
+ * @param $breadcrumb
+ * Array of links, starting with "home" and proceeding up to but not including
+ * the current page.
*/
function drupal_set_breadcrumb($breadcrumb = NULL) {
static $stored_breadcrumb;
@@ -55,6 +50,9 @@ function drupal_set_breadcrumb($breadcrumb = NULL) {
return $stored_breadcrumb;
}
+/**
+ * Get the breadcrumb trail for the current page.
+ */
function drupal_get_breadcrumb() {
$breadcrumb = drupal_set_breadcrumb();
@@ -64,15 +62,10 @@ function drupal_get_breadcrumb() {
return $breadcrumb;
}
-/* @} */
/**
- * @name HTML head contents
- *
- * Set and get output that should be in the \<head\> tag.
- * @{
+ * Add output to the head tag of the HTML page.
*/
-
function drupal_set_html_head($data = NULL) {
static $stored_head = '';
@@ -82,6 +75,9 @@ function drupal_set_html_head($data = NULL) {
return $stored_head;
}
+/**
+ * Retrieve output to be displayed in the head tag of the HTML page.
+ */
function drupal_get_html_head() {
global $base_url;
@@ -91,14 +87,10 @@ function drupal_get_html_head() {
return $output . drupal_set_html_head();
}
-/* @} */
/**
- * @name URL path alias
- *
- * Functions to handle path aliases.
+ * Return an array mapping path aliases to their internal Drupal paths.
*/
-
function drupal_get_path_map($action = '') {
static $map = NULL;
@@ -107,7 +99,7 @@ function drupal_get_path_map($action = '') {
}
if (is_null($map)) {
- $map = array(); // make $map non-null in case no aliases are defined
+ $map = array(); // Make $map non-null in case no aliases are defined.
$result = db_query('SELECT * FROM {url_alias}');
while ($data = db_fetch_object($result)) {
$map[$data->dst] = $data->src;
@@ -117,6 +109,9 @@ function drupal_get_path_map($action = '') {
return $map;
}
+/**
+ * Regenerate the path map from the information in the database.
+ */
function drupal_rebuild_path_map() {
drupal_get_path_map('rebuild');
}
@@ -151,17 +146,13 @@ function drupal_get_normal_path($path) {
return $path;
}
}
-/* @} */
/**
- * @name HTTP headers
- *
- * Functions to get and set the HTTP headers of the current page.
- * @{
+ * Set an HTTP response header for the current page.
*/
function drupal_set_header($header = NULL) {
// We use an array to guarantee there are no leading or trailing delimiters.
- // This can cause header("") to get called when serving the page later, which
+ // Otherwise, header('') could get called when serving the page later, which
// ends HTTP headers prematurely on some PHP versions.
static $stored_headers = array();
@@ -172,16 +163,17 @@ function drupal_set_header($header = NULL) {
return implode("\n", $stored_headers);
}
+/**
+ * Get the HTTP response headers for the current page.
+ */
function drupal_get_headers() {
return drupal_set_header();
}
-/* @} */
/**
* @name HTTP handling
- *
- * Functions to properly handle HTTP responses.
* @{
+ * Functions to properly handle HTTP responses.
*/
/**
@@ -316,7 +308,7 @@ function drupal_http_request($url, $headers = array(), $method = 'GET', $data =
$path .= '?'. $uri['query'];
}
- // Create http request.
+ // Create HTTP request.
$defaults = array(
'Host' => 'Host: '. $uri['host'],
'User-Agent' => 'User-Agent: Drupal (+http://www.drupal.org/)',
@@ -365,7 +357,7 @@ function drupal_http_request($url, $headers = array(), $method = 'GET', $data =
500 => 'Internal Server Error', 501 => 'Not Implemented', 502 => 'Bad Gateway', 503 => 'Service Unavailable', 504 => 'Gateway Time-out', 505 => 'HTTP Version not supported'
);
// RFC 2616 states that all unknown HTTP codes must be treated the same as
- // the base code in their class:
+ // the base code in their class.
if (!isset($responses[$code])) {
$code = floor($code / 100) * 100;
}
@@ -393,7 +385,9 @@ function drupal_http_request($url, $headers = array(), $method = 'GET', $data =
$result->code = $code;
return $result;
}
-/* @} */
+/**
+ * @} End of "HTTP handling".
+ */
/**
* Log errors in the database rather than displaying them to the user.
@@ -436,9 +430,8 @@ function fix_gpc_magic() {
/**
* @name Conversion
- *
- * Converts data structures to a different type.
* @{
+ * Converts data structures to different types.
*/
/**
@@ -473,13 +466,15 @@ function object2array($object) {
return $array;
}
-/* @} */
+
+/**
+ * @} End of "Conversion".
+ */
/**
* @name Messages
- *
- * Frequently used messages.
* @{
+ * Frequently used messages.
*/
/**
@@ -499,7 +494,9 @@ function message_na() {
return t('n/a');
}
-/* @} */
+/**
+ * @} End of "Messages".
+ */
/**
* Initialize the localization system.
@@ -525,23 +522,23 @@ function locale_initialize() {
* Translate strings to the current locale.
*
* When using t(), try to put entire sentences and strings in one t() call.
- * This makes it easier for translators. We are unafraid of HTML markup within
- * translation strings if necessary. The suggested syntax for a link embedded
- * within a translation string is for example:
- * @verbatim
+ * This makes it easier for translators. HTML markup within translation strings
+ * is acceptable, if necessary. The suggested syntax for a link embedded
+ * within a translation string is:
+ * @code
* $msg = t('You must log in below or <a href="%url">create a new
* account</a> before viewing the next page.', array('%url'
* => url('user/register')));
- * @endverbatim
+ * @endcode
* We suggest the same syntax for links to other sites. This makes it easy to
* change link URLs if needed (which happens often) without requiring updates
* to translations.
*
* @param $string
- * A string containing the english string to translate.
+ * A string containing the English string to translate.
* @param $args
* An associative array of replacements to make after translation. Incidences
- * of any key in this array are replaces with the corresponding value.
+ * of any key in this array are replaced with the corresponding value.
* @return
* The translated string.
*/
@@ -572,10 +569,9 @@ function drupal_specialchars($input, $quotes = ENT_NOQUOTES) {
}
/**
- * @name Validation
- *
- * Functions to validate user input.
+ * @defgroup validation Input validation
* @{
+ * Functions to validate user input.
*/
/**
@@ -603,7 +599,7 @@ function valid_email_address($mail) {
* @param $url
* The URL to verify.
* @param $absolute
- * Whether the URL is absolute (beginning with a scheme such as http).
+ * Whether the URL is absolute (beginning with a scheme such as "http:").
* @return
* TRUE if the URL is in a valid format.
*/
@@ -657,28 +653,33 @@ function valid_input_data($data) {
return TRUE;
}
-/* @} */
+/**
+ * @} End of "defgroup validation".
+ */
/**
* @defgroup search Search interface
* @{
+ * The Drupal search interface manages a global search mechanism.
+ *
+ * Modules may plug into this system to provide searches of different types of
+ * data. Most of the system is handled by search.module, so this must be enabled
+ * for all of the search features to work.
*/
/**
- * Format a single result entry of a search query:
+ * Format a single result entry of a search query.
+ *
+ * Modules may implement hook_search_item() in order to override this default
+ * function to display search results.
*
- * @param $item a single search result as returned by <i>module</i>_search of
- * type array('count' => ..., 'link' => ..., 'title' => ..., 'user' => ...,
- * 'date' => ..., 'keywords' => ...)
- * @param $type module type of this item
+ * @param $item
+ * A single search result as returned by hook_search(). The result should be
+ * an array with keys "count", "link", "title", "user", "date", and "keywords".
+ * @param $type
+ * The type of item found, such as "user" or "comment".
*/
function search_item($item, $type) {
-
- /*
- ** Modules may implement hook_search_item() hook in order to overwrite
- ** the default function to display search results.
- */
-
if (module_hook($type, 'search_item')) {
$output = module_invoke($type, 'search_item', $item);
}
@@ -693,17 +694,22 @@ function search_item($item, $type) {
/**
* Render a generic search form.
*
- * "Generic" means "universal usable" - that is, usable not only from
- * 'site.com/search', but also as a simple search box (without "Restrict search
- * to", help text, etc) from theme's header etc. This means: provide options to
- * only conditionally render certain parts of this form.
+ * This form must be usable not only within "http://example.com/search", but also
+ * as a simple search box (without "Restrict search to", help text, etc.), in the
+ * theme's header, and so forth. This means we must provide options to
+ * conditionally render certain parts of this form.
*
- * @param $action Form action. Defaults to 'site.com/search'.
- * @param $keys string containing keywords for the search.
- * @param $options != 0: Render additional form fields/text ("Restrict search
- * to", help text, etc).
+ * @param $action
+ * Form action. Defaults to "search".
+ * @param $keys
+ * The search string entered by the user, containing keywords for the search.
+ * @param $options
+ * Whether to render the optional form fields and text ("Restrict search
+ * to", help text, etc.).
+ * @return
+ * An HTML string containing the search form.
*/
-function search_form($action = NULL, $keys = NULL, $options = NULL) {
+function search_form($action = '', $keys = '', $options = FALSE) {
$edit = $_POST['edit'];
if (!$action) {
@@ -728,8 +734,8 @@ function search_form($action = NULL, $keys = NULL, $options = NULL) {
return form($output, 'post', $action);
}
-/*
- * Collect the search results:
+/**
+ * Perform a global search on the given keys, and return the formatted results.
*/
function search_data($keys = NULL) {
$edit = $_POST['edit'];
@@ -755,23 +761,28 @@ function search_data($keys = NULL) {
}
/**
- * Display the search form and the resulting data.
+ * Display a search form for a particular type of data.
*
- * @param $type If set, search only nodes of this type. Otherwise, search all
- * types.
- * @param $action Form action. Defaults to 'site.com/search'.
- * @param $keys Query string. Defaults to global $keys.
- * @param $options != 0: Render additional form fields/text ("Restrict search
- * to", help text, etc).
+ * @param $type
+ * The type of content to search within.
+ * @param $action
+ * Form action. Defaults to "search".
+ * @param $keys
+ * The search string entered by the user, containing keywords for the search.
+ * @param $options
+ * Whether to render the optional form fields and text ("Restrict search
+ * to", help text, etc.).
+ * @return
+ * An HTML string containing the search form and results.
*/
-function search_type($type, $action = NULL, $keys = NULL, $options = NULL) {
+function search_type($type, $action = '', $keys = '', $options = FALSE) {
$_POST['edit']['type'][$type] = 'on';
return search_form($action, $keys, $options) . '<br />'. search_data($keys);
}
/**
- * @} end of defgroup search
+ * @} End of "defgroup search".
*/
function check_form($text) {
@@ -783,10 +794,9 @@ function check_file($filename) {
}
/**
- * @name Formatting
- *
- * Functions to format numbers, strings, dates, etc.
+ * @defgroup format Formatting
* @{
+ * Functions to format numbers, strings, dates, etc.
*/
/**
@@ -1032,13 +1042,18 @@ function format_name($object) {
return $output;
}
-/* @} */
+/**
+ * @} End of "defgroup format".
+ */
/**
* @defgroup form Form generation
* @{
+ * Functions to enable output of HTML forms and form elements.
*
- *
+ * Drupal uses these functions to achieve consistency in its form presentation,
+ * while at the same time simplifying code and reducing the amount of HTML that
+ * must be explicily generated by modules.
*/
/**
@@ -1500,7 +1515,7 @@ function form_weight($title = NULL, $name = 'weight', $value = 0, $delta = 10, $
}
/**
- * @} end of defgroup form
+ * @} End of "defgroup form".
*/
/**
@@ -1527,11 +1542,9 @@ function url($path = NULL, $query = NULL, $fragment = NULL, $absolute = FALSE) {
static $script;
if (empty($script)) {
- /*
- ** On some webservers such as IIS we can't omit "index.php". As such we
- ** generate "index.php?q=foo" instead of "?q=foo" on anything that is not
- ** Apache.
- */
+ // On some web servers, such as IIS, we can't omit "index.php". So, we
+ // generate "index.php?q=foo" instead of "?q=foo" on anything that is not
+ // Apache.
$script = (strpos($_SERVER['SERVER_SOFTWARE'], 'Apache') === false) ? 'index.php' : '';
}
@@ -1745,10 +1758,8 @@ function drupal_xml_parser_create(&$data) {
$encoding = $match[1];
}
- /*
- * Unsupported encodings are converted here into UTF-8.
- * Requires the iconv, GNU recode or mbstring PHP extension.
- */
+ // Unsupported encodings are converted here into UTF-8.
+ // Requires the iconv, GNU recode or mbstring PHP extension.
$php_supported = array('utf-8', 'iso-8859-1', 'us-ascii');
if (!in_array(strtolower($encoding), $php_supported)) {
if (function_exists('iconv')) {
@@ -1788,7 +1799,7 @@ function drupal_xml_parser_create(&$data) {
*
* Use this function whenever you want to chop off a string at an unsure
* location. On the other hand, if you're sure that you're splitting on a
- * character boundary (e.g. after using strpos or similar), you can safely use
+ * character boundary (e.g. after using strpos() or similar), you can safely use
* substr() instead.
*
* @param $string
@@ -1811,24 +1822,21 @@ function truncate_utf8($string, $len) {
}
/**
- * Encodes MIME/HTTP header values that contain non US-ASCII
- * characters.
+ * Encodes MIME/HTTP header values that contain non US-ASCII characters.
*
- * Example: mime_header_encode('tést.txt') returns '=?UTF-8?B?dMOpc3QudHh0?='
+ * For example, mime_header_encode('tést.txt') returns "=?UTF-8?B?dMOpc3QudHh0?=".
*
- * For more info: http://www.rfc-editor.org/rfc/rfc2047.txt
+ * See http://www.rfc-editor.org/rfc/rfc2047.txt for more information.
*
+ * Notes:
+ * - Only encode strings that contain non-ASCII characters.
+ * - The chunks come in groupings of 4 bytes when using base64 encoding.
+ * - trim() is used to ensure that no extra spacing is added by chunk_split() or
+ * preg_replace().
+ * - Using \n as the chunk separator may cause problems on some systems and may
+ * have to be changed to \r\n or \r.
*/
function mime_header_encode($string, $charset = 'UTF-8') {
- // Notes:
- // - Only encode strings that contain non-ASCII characters.
- // - The chunks come in groupings of 4 bytes when using base64
- // encoded.
- // - trim() is used to ensure that no extra spacing is added by
- // chunk_split() or preg_replace().
- // - Using \n as the chunk separator may cause problems on some
- // systems and may have to be changed to \r\n or \r.
-
if (!preg_match('/^[\x20-\x7E]*$/', $string)) {
$chunk_size = 75 - 7 - strlen($charset);
$chunk_size -= $chunk_size % 4;
@@ -1839,12 +1847,18 @@ function mime_header_encode($string, $charset = 'UTF-8') {
}
/**
- * Wrapper around PHP's eval(). Uses output buffering to capture both returned
- * and printed text. Unlike eval(), we require code to be surrounded by <?php ?>
- * tags (in other words, we evaluate the code as if it were a stand-alone PHP
- * file).
+ * Evaluate a string of PHP code.
*
- * @param $code The code to evaluate
+ * This is a wrapper around PHP's eval(). It uses output buffering to capture both
+ * returned and printed text. Unlike eval(), we require code to be surrounded by
+ * <?php ?> tags; in other words, we evaluate the code as if it were a stand-alone
+ * PHP file.
+ *
+ * @param $code
+ * The code to evaluate.
+ * @return
+ * A string containing the printed output of the code, followed by the returned
+ * output of the code.
*/
function drupal_eval($code) {
ob_start();
@@ -1861,13 +1875,13 @@ include_once 'includes/tablesort.inc';
include_once 'includes/file.inc';
include_once 'includes/xmlrpc.inc';
-// set error handler:
+// Set the Drupal custom error handler.
set_error_handler('error_handler');
-// spit out the correct charset http header
+// Emit the correct charset HTTP header.
drupal_set_header('Content-Type: text/html; charset=utf-8');
-// initialize the _GET['q'] prior to loading the modules and invoking their 'init' hook:
+// Initialize $_GET['q'] prior to loading modules and invoking hook_init().
if (!empty($_GET['q'])) {
$_GET['q'] = drupal_get_normal_path(trim($_GET['q'], '/'));
}
@@ -1875,19 +1889,19 @@ else {
$_GET['q'] = drupal_get_normal_path(variable_get('site_frontpage', 'node'));
}
-// initialize installed modules:
+// Initialize all enabled modules.
module_init();
if ($_REQUEST && !user_access('bypass input data check')) {
if (!valid_input_data($_REQUEST)) {
- die('terminated request because of suspicious input data');
+ die('Terminated request because of suspicious input data.');
}
}
-// initialize localization system:
+// Initialize the localization system.
$locale = locale_initialize();
-// initialize theme:
+// Initialize the enabled theme.
$theme = init_theme();
?>