Patch by Ax to fixe and improve to the core doxygen PHPdoc:
* fixes all doxygen warnings [#]_ in the current code base
    + changes @param style from phpDocumentor (@param type $var desc) to doxygen (@param $var desc)
    + documents all undocumented parameters
    + escapes / fixes html warnings
    + fixes @defgroup in theme.inc
  * adds more groupings [#]_
    + drupal_{set|get}_title, drupal_{set|get}_breadcrumb
    + pager.inc: pager_api (pager_query(), pager_display()), pager pieces
  * adds a new group "themeable" which contains all themeable functions.
			
			
				4.4.x
			
			
		
							parent
							
								
									af5bc7cdef
								
							
						
					
					
						commit
						06045ff7fc
					
				| 
						 | 
				
			
			@ -14,9 +14,12 @@ Drupal x.x.x, xxxx-xx-xx
 | 
			
		|||
- usability:
 | 
			
		||||
    * added breadcrumb navigation to all pages.
 | 
			
		||||
    * made it possible to add context-sensitive help to all pages.
 | 
			
		||||
    * grouped form elements using '<fieldset>' and '<legend>' tags.
 | 
			
		||||
    * replaced drop-down menus by radio buttons where appropriate.
 | 
			
		||||
    * removed the 'magic_quotes_gpc = 0' requirement.
 | 
			
		||||
- accessibility:
 | 
			
		||||
    * made themes degrade gracefully in absence of CSS.
 | 
			
		||||
    * grouped form elements using '<fieldset>' and '<legend>' tags.
 | 
			
		||||
    * added '<label>' tags to form elements.
 | 
			
		||||
- documentation:
 | 
			
		||||
    * added PHPDoc/Doxygen comments.
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,7 +2,9 @@
 | 
			
		|||
// $Id$
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @name drupal_title
 | 
			
		||||
 * Functions to get and set the title of the current page.
 | 
			
		||||
 * @{
 | 
			
		||||
 */
 | 
			
		||||
function drupal_set_title($title = NULL) {
 | 
			
		||||
  static $stored_title;
 | 
			
		||||
| 
						 | 
				
			
			@ -22,12 +24,14 @@ function drupal_get_title() {
 | 
			
		|||
 | 
			
		||||
  return $title;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// @}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @name drupal_breadcrumb
 | 
			
		||||
 * Functions to get and set the breadcrumb trail of the current page. The
 | 
			
		||||
 * breadcrumb trail is represented as an 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;
 | 
			
		||||
| 
						 | 
				
			
			@ -48,7 +52,7 @@ function drupal_get_breadcrumb() {
 | 
			
		|||
 | 
			
		||||
  return $breadcrumb;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// @}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Build the alias/path array
 | 
			
		||||
| 
						 | 
				
			
			@ -249,9 +253,9 @@ function valid_url($url) {
 | 
			
		|||
/**
 | 
			
		||||
 * Format a single result entry of a search query:
 | 
			
		||||
 *
 | 
			
		||||
 * @param $item  a single search result as returned by <module>_search of type
 | 
			
		||||
 *               array("count" => ..., "link" => ..., "title" => ...,
 | 
			
		||||
 *               "user" => ..., "date" => ..., "keywords" => ...)
 | 
			
		||||
 * @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
 | 
			
		||||
 */
 | 
			
		||||
function search_item($item, $type) {
 | 
			
		||||
| 
						 | 
				
			
			@ -344,7 +348,7 @@ function search_data($keys = NULL) {
 | 
			
		|||
 * @param $type    If set, search only nodes of this type.
 | 
			
		||||
 *                 Otherwise, search all types.
 | 
			
		||||
 * @param $action  Form action. Defaults to 'site.com/search'.
 | 
			
		||||
 * @param $query   Query string. Defaults to global $keys.
 | 
			
		||||
 * @param $keys    Query string. Defaults to global $keys.
 | 
			
		||||
 * @param $options != 0: Render additional form fields/text
 | 
			
		||||
 *                 ("Restrict search to", help text, etc).
 | 
			
		||||
 */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -21,6 +21,12 @@ function db_connect($url) {
 | 
			
		|||
  */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Runs a query in the database.
 | 
			
		||||
 *
 | 
			
		||||
 * @param   $query  SQL query, followed by a variable number of arguments which are substituted into query by sprintf.
 | 
			
		||||
 * @return  a MySQL result or FALSE if the query was not executed correctly.
 | 
			
		||||
 */
 | 
			
		||||
function db_query($query) {
 | 
			
		||||
  $args = func_get_args();
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -142,9 +148,8 @@ function db_affected_rows() {
 | 
			
		|||
/**
 | 
			
		||||
 * Runs a LIMIT query in the database.
 | 
			
		||||
 *
 | 
			
		||||
 * @param   mixed     $query  SQL query, followed by a variable number of arguments which are substituted into query by sprintf, followed by 'from' and 'count'  parameters.  'from' is the row to start fetching, 'count' the numbers of rows to fetch.
 | 
			
		||||
 * @return  resource  a MySQL result or FALSE if the query was not executed correctly.
 | 
			
		||||
 * @access  public
 | 
			
		||||
 * @param   $query  SQL query, followed by a variable number of arguments which are substituted into query by sprintf, followed by 'from' and 'count'  parameters.  'from' is the row to start fetching, 'count' the numbers of rows to fetch.
 | 
			
		||||
 * @return  a MySQL result or FALSE if the query was not executed correctly.
 | 
			
		||||
 */
 | 
			
		||||
function db_query_range($query) {
 | 
			
		||||
  $args = func_get_args();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,9 +18,8 @@ function db_connect($url) {
 | 
			
		|||
/**
 | 
			
		||||
 * Runs a query in the database.
 | 
			
		||||
 *
 | 
			
		||||
 * @param  $query SQL query
 | 
			
		||||
 * @param  $type  module type of this item
 | 
			
		||||
 * @return sql    result resource
 | 
			
		||||
 * @param   $query  SQL query, followed by a variable number of arguments which are substituted into query by sprintf.
 | 
			
		||||
 * @return  a DB_Result object or a DB_Error
 | 
			
		||||
 */
 | 
			
		||||
function db_query($query) {
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -146,9 +145,8 @@ function db_affected_rows() {
 | 
			
		|||
/**
 | 
			
		||||
 * Runs a LIMIT query in the database.
 | 
			
		||||
 *
 | 
			
		||||
 * @param   mixed   $query  SQL query followed by a variable number of arguments which are substituted into query by sprintf, followed by 'from' and 'count' parameters. 'from' is the row to start fetching, 'count' the numbers of rows to fetch.
 | 
			
		||||
 * @return  mixed   a DB_Result object or a DB_Error
 | 
			
		||||
 * @access public
 | 
			
		||||
 * @param   $query  SQL query followed by a variable number of arguments which are substituted into query by sprintf, followed by 'from' and 'count' parameters. 'from' is the row to start fetching, 'count' the numbers of rows to fetch.
 | 
			
		||||
 * @return  a DB_Result object or a DB_Error
 | 
			
		||||
 */
 | 
			
		||||
function db_query_range($query) {
 | 
			
		||||
  global $db_handle, $queries;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,24 +1,84 @@
 | 
			
		|||
<?php
 | 
			
		||||
// $Id$
 | 
			
		||||
 | 
			
		||||
/* ***************************************************
 | 
			
		||||
 *            external functions (API)
 | 
			
		||||
 * ***************************************************/
 | 
			
		||||
/**
 | 
			
		||||
  @defgroup pager_api Pager API
 | 
			
		||||
  @{
 | 
			
		||||
 | 
			
		||||
  Pager external functions (API).
 | 
			
		||||
 **/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Use this function when doing select queries you wish to be able to page.
 | 
			
		||||
 * The pager uses LIMIT-based queries to fetch only the records required
 | 
			
		||||
 * to render a certain page.  However, it has to learn the total number
 | 
			
		||||
 * of records returned by the query to (among others) compute the number
 | 
			
		||||
 * of pages (= number of all records / number of records per page).  This
 | 
			
		||||
 * is done by inserting "COUNT(*)" in the original query, ie. by rewriting
 | 
			
		||||
 * the original query, say "SELECT nid, type FROM node WHERE status = '1'
 | 
			
		||||
 * ORDER BY static DESC, created DESC" to read "SELECT COUNT(*) FROM node
 | 
			
		||||
 * WHERE status = '1' ORDER BY static DESC, created DESC".  Rewriting the
 | 
			
		||||
 * query is accomplished using a regular expression.
 | 
			
		||||
 *
 | 
			
		||||
 * Unfortunately, the rewrite rule does not always work as intended for
 | 
			
		||||
 * queries that (already) have a "COUNT(*)" or a "GROUP BY" clause, and
 | 
			
		||||
 * possibly for other complex queries.  In those cases, you can optionally
 | 
			
		||||
 * pass a query that will be used to count the records.
 | 
			
		||||
 *
 | 
			
		||||
 * For example, if you want to page this query: "SELECT COUNT(*), TYPE FROM
 | 
			
		||||
 * node GROUP BY TYPE", pager_query() would invoke the wrong query, being:
 | 
			
		||||
 * "SELECT COUNT(*) FROM node GROUP BY TYPE".  So instead, you should pass
 | 
			
		||||
 * "SELECT COUNT(DISTINCT(TYPE)) FROM node" as the optional $count_query
 | 
			
		||||
 * parameter.
 | 
			
		||||
 *
 | 
			
		||||
 * @param   $query        the SQL query that needs paging
 | 
			
		||||
 * @param   $limit        the number of rows per page
 | 
			
		||||
 * @param   $element      optional attribute to distringuish between multiple pagers on one page
 | 
			
		||||
 * @param   $count_query  an optional SQL query used to count records when rewriting the query would fail
 | 
			
		||||
 *
 | 
			
		||||
 * @return  SQL query result
 | 
			
		||||
 */
 | 
			
		||||
function pager_query($query, $limit = 10, $element = 0, $count_query = "") {
 | 
			
		||||
  global $pager_from_array, $pager_total;
 | 
			
		||||
  $from = $_GET["from"];
 | 
			
		||||
 | 
			
		||||
  // count the total number of records in this query:
 | 
			
		||||
  if ($count_query == "") {
 | 
			
		||||
    $pager_total[$element] = db_result(db_query(preg_replace(array("/SELECT.*FROM/i", "/ORDER BY .*/"), array("SELECT COUNT(*) FROM", ""), $query)));
 | 
			
		||||
 | 
			
		||||
  }
 | 
			
		||||
  else {
 | 
			
		||||
    $pager_total[$element] = db_result(db_query($count_query));
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // convert comma separated $from to an array, used by other functions:
 | 
			
		||||
  $pager_from_array = explode(",", $from);
 | 
			
		||||
 | 
			
		||||
  return db_query_range($query, (int)$pager_from_array[$element], (int)$limit);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Use this function in your module or theme to display a pager.
 | 
			
		||||
 *
 | 
			
		||||
 * @param   array   $tags     defines your buttons; text or img.
 | 
			
		||||
 * @param   int     $limit    how many nodes are displayed per page
 | 
			
		||||
 * @param   int     $element  support for multiple pagers per page (specify which this is)
 | 
			
		||||
 * @param   string  $type     allows for distinction between pagers on main page and admin page, etc.
 | 
			
		||||
 * @param   $tags     defines your buttons; text or img.
 | 
			
		||||
 * @param   $limit    how many nodes are displayed per page
 | 
			
		||||
 * @param   $element  support for multiple pagers per page (specify which this is)
 | 
			
		||||
 * @param   $type     allows for distinction between pagers on main page and admin page, etc.
 | 
			
		||||
 *   Supported types are "default", "admin" and "simple".
 | 
			
		||||
 * @param   $attributes   extra html attributes for \<a href> (eg. title, onMouseOver, etc.)
 | 
			
		||||
 *
 | 
			
		||||
 * @return  string  html of pager
 | 
			
		||||
 */
 | 
			
		||||
function pager_display($tags = "", $limit = 10, $element = 0, $type = "default", $attributes = array()) {
 | 
			
		||||
  return theme("pager_display_". $type, $tags, $limit, $element, $attributes);
 | 
			
		||||
}
 | 
			
		||||
/**  @} End of defgroup pager_api **/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @addtogroup themeable
 | 
			
		||||
 * @{
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * DEFAULT PAGER:
 | 
			
		||||
| 
						 | 
				
			
			@ -76,18 +136,24 @@ function theme_pager_display_admin($tags = "", $limit = 10, $element = 0, $attri
 | 
			
		|||
  */
 | 
			
		||||
  return theme_pager_display_default($tags, $limit, $element, $attributes);
 | 
			
		||||
}
 | 
			
		||||
/**  @} End of addtogroup themeable **/
 | 
			
		||||
 | 
			
		||||
/* *******************************************************************
 | 
			
		||||
 * PAGER PIECES:
 | 
			
		||||
 *  Use these pieces to construct your own custom pagers (i.e. in
 | 
			
		||||
 *  themes).  Note that you should NOT modify this file to customize
 | 
			
		||||
 *  your pager)
 | 
			
		||||
 * *******************************************************************/
 | 
			
		||||
/**
 | 
			
		||||
 * @name pager pieces
 | 
			
		||||
 * Use these pieces to construct your own custom pagers in your theme.  Note
 | 
			
		||||
 * that you should NOT modify this file to customize your pager.
 | 
			
		||||
 * @{
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * displays a "first-page" link
 | 
			
		||||
 *
 | 
			
		||||
 * @see pager_previous
 | 
			
		||||
 * @param   $text     defines the name (or image) of the link
 | 
			
		||||
 * @param   $limit    how many nodes are displayed per page
 | 
			
		||||
 * @param   $element  distinguish between multiple pagers on one page
 | 
			
		||||
 * @param   $attributes   extra html attributes for \<a href> (eg. title, onMouseOver, etc.)
 | 
			
		||||
 *
 | 
			
		||||
 * @return  string  html of this pager piece
 | 
			
		||||
 */
 | 
			
		||||
function pager_first($text, $limit, $element = 0, $attributes = array()) {
 | 
			
		||||
  global $pager_from_array;
 | 
			
		||||
| 
						 | 
				
			
			@ -104,10 +170,11 @@ function pager_first($text, $limit, $element = 0, $attributes = array()) {
 | 
			
		|||
/**
 | 
			
		||||
 * displays a "previous-page" link
 | 
			
		||||
 *
 | 
			
		||||
 * @param   string  $text     defines the name (or image) of the link
 | 
			
		||||
 * @param   int     $limit    how many nodes are displayed per page
 | 
			
		||||
 * @param   int     $element  distinguish between multiple pagers on one page
 | 
			
		||||
 * @param   int     $n        how many pages we move back (defaults to 1)
 | 
			
		||||
 * @param   $text     defines the name (or image) of the link
 | 
			
		||||
 * @param   $limit    how many nodes are displayed per page
 | 
			
		||||
 * @param   $element  distinguish between multiple pagers on one page
 | 
			
		||||
 * @param   $n        how many pages we move back (defaults to 1)
 | 
			
		||||
 * @param   $attributes   extra html attributes for \<a href> (eg. title, onMouseOver, etc.)
 | 
			
		||||
 *
 | 
			
		||||
 * @return  string  html of this pager piece
 | 
			
		||||
 */
 | 
			
		||||
| 
						 | 
				
			
			@ -123,7 +190,13 @@ function pager_previous($text, $limit, $element = 0, $n = 1, $attributes = array
 | 
			
		|||
/**
 | 
			
		||||
 * displays a "next-page" link
 | 
			
		||||
 *
 | 
			
		||||
 * @see pager_previous
 | 
			
		||||
 * @param   $text     defines the name (or image) of the link
 | 
			
		||||
 * @param   $limit    how many nodes are displayed per page
 | 
			
		||||
 * @param   $element  distinguish between multiple pagers on one page
 | 
			
		||||
 * @param   $n        how many pages we move back (defaults to 1)
 | 
			
		||||
 * @param   $attributes   extra html attributes for \<a href> (eg. title, onMouseOver, etc.)
 | 
			
		||||
 *
 | 
			
		||||
 * @return  string  html of this pager piece
 | 
			
		||||
 */
 | 
			
		||||
function pager_next($text, $limit, $element = 0, $n = 1, $attributes = array()) {
 | 
			
		||||
  global $pager_from_array, $pager_total;
 | 
			
		||||
| 
						 | 
				
			
			@ -137,7 +210,12 @@ function pager_next($text, $limit, $element = 0, $n = 1, $attributes = array())
 | 
			
		|||
/**
 | 
			
		||||
 * displays a "last-page" link
 | 
			
		||||
 *
 | 
			
		||||
 * @see pager_previous
 | 
			
		||||
 * @param   $text     defines the name (or image) of the link
 | 
			
		||||
 * @param   $limit    how many nodes are displayed per page
 | 
			
		||||
 * @param   $element  distinguish between multiple pagers on one page
 | 
			
		||||
 * @param   $attributes   extra html attributes for \<a href> (eg. title, onMouseOver, etc.)
 | 
			
		||||
 *
 | 
			
		||||
 * @return  string  html of this pager piece
 | 
			
		||||
 */
 | 
			
		||||
function pager_last($text, $limit, $element = 0, $attributes = array()) {
 | 
			
		||||
  global $pager_from_array, $pager_total;
 | 
			
		||||
| 
						 | 
				
			
			@ -155,8 +233,11 @@ function pager_last($text, $limit, $element = 0, $attributes = array()) {
 | 
			
		|||
/**
 | 
			
		||||
 * displays "%d through %d of $d" type detail about the cur page
 | 
			
		||||
 *
 | 
			
		||||
 * @param   string  $format   allows you to reword the format string
 | 
			
		||||
 * @see pager_previous
 | 
			
		||||
 * @param   $limit    how many nodes are displayed per page
 | 
			
		||||
 * @param   $element  distinguish between multiple pagers on one page
 | 
			
		||||
 * @param   $format   allows you to reword the format string
 | 
			
		||||
 *
 | 
			
		||||
 * @return  string  html of this pager piece
 | 
			
		||||
 */
 | 
			
		||||
function pager_detail($limit, $element = 0, $format = "%d through %d of %d.") {
 | 
			
		||||
  global $pager_from_array, $pager_total;
 | 
			
		||||
| 
						 | 
				
			
			@ -171,9 +252,13 @@ function pager_detail($limit, $element = 0, $format = "%d through %d of %d.") {
 | 
			
		|||
/**
 | 
			
		||||
 * displays a list of nearby pages with additional nodes
 | 
			
		||||
 *
 | 
			
		||||
 * @param   int     $quantity   defines the length of the page list
 | 
			
		||||
 * @param   string  $text       optional text to display before the page list
 | 
			
		||||
 * @see pager_previous
 | 
			
		||||
 * @param   $limit      how many nodes are displayed per page
 | 
			
		||||
 * @param   $element    distinguish between multiple pagers on one page
 | 
			
		||||
 * @param   $quantity   defines the length of the page list
 | 
			
		||||
 * @param   $text       optional text to display before the page list
 | 
			
		||||
 * @param   $attributes   extra html attributes for \<a href> (eg. title, onMouseOver, etc.)
 | 
			
		||||
 *
 | 
			
		||||
 * @return  string  html of this pager piece
 | 
			
		||||
 */
 | 
			
		||||
function pager_list($limit, $element = 0, $quantity = 5, $text = "", $attributes = array()) {
 | 
			
		||||
  global $pager_from_array, $pager_total;
 | 
			
		||||
| 
						 | 
				
			
			@ -243,63 +328,7 @@ function pager_list($limit, $element = 0, $quantity = 5, $text = "", $attributes
 | 
			
		|||
 | 
			
		||||
  return $output;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* ********************************************************************
 | 
			
		||||
 * QUERIES - call this instead of db_query() if you want your query to
 | 
			
		||||
 * support a pager.
 | 
			
		||||
 * ********************************************************************/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Use this function when doing select queries you wish to be able to page.
 | 
			
		||||
 * The pager uses LIMIT-based queries to fetch only the records required
 | 
			
		||||
 * to render a certain page.  However, it has to learn the total number
 | 
			
		||||
 * of records returned by the query to (among others) compute the number
 | 
			
		||||
 * of pages (= number of all records / number of records per page).  This
 | 
			
		||||
 * is done by inserting "COUNT(*)" in the original query, ie. by rewriting
 | 
			
		||||
 * the original query, say "SELECT nid, type FROM node WHERE status = '1'
 | 
			
		||||
 * ORDER BY static DESC, created DESC" to read "SELECT COUNT(*) FROM node
 | 
			
		||||
 * WHERE status = '1' ORDER BY static DESC, created DESC".  Rewriting the
 | 
			
		||||
 * query is accomplished using a regular expression.
 | 
			
		||||
 *
 | 
			
		||||
 * Unfortunately, the rewrite rule does not always work as intended for
 | 
			
		||||
 * queries that (already) have a "COUNT(*)" or a "GROUP BY" clause, and
 | 
			
		||||
 * possibly for other complex queries.  In those cases, you can optionally
 | 
			
		||||
 * pass a query that will be used to count the records.
 | 
			
		||||
 *
 | 
			
		||||
 * For example, if you want to page this query: "SELECT COUNT(*), TYPE FROM
 | 
			
		||||
 * node GROUP BY TYPE", pager_query() would invoke the wrong query, being:
 | 
			
		||||
 * "SELECT COUNT(*) FROM node GROUP BY TYPE".  So instead, you should pass
 | 
			
		||||
 * "SELECT COUNT(DISTINCT(TYPE)) FROM node" as the optional $count_query
 | 
			
		||||
 * parameter.
 | 
			
		||||
 *
 | 
			
		||||
 * @param   string  $query        the SQL query that needs paging
 | 
			
		||||
 * @param   int     $limit        the number of rows per page
 | 
			
		||||
 * @param   int     $element      optional attribute to distringuish between multiple pagers on one page
 | 
			
		||||
 * @param   string  $count_query  an optional SQL query used to count records when rewriting the query would fail
 | 
			
		||||
 *
 | 
			
		||||
 * @return  resource  SQL query result
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
function pager_query($query, $limit = 10, $element = 0, $count_query = "") {
 | 
			
		||||
  global $pager_from_array, $pager_total;
 | 
			
		||||
  $from = $_GET["from"];
 | 
			
		||||
 | 
			
		||||
  // count the total number of records in this query:
 | 
			
		||||
  if ($count_query == "") {
 | 
			
		||||
    $pager_total[$element] = db_result(db_query(preg_replace(array("/SELECT.*FROM/i", "/ORDER BY .*/"), array("SELECT COUNT(*) FROM", ""), $query)));
 | 
			
		||||
 | 
			
		||||
  }
 | 
			
		||||
  else {
 | 
			
		||||
    $pager_total[$element] = db_result(db_query($count_query));
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // convert comma separated $from to an array, used by other functions:
 | 
			
		||||
  $pager_from_array = explode(",", $from);
 | 
			
		||||
 | 
			
		||||
  return db_query_range($query, (int)$pager_from_array[$element], (int)$limit);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
/* @} End of member group pager pieces */
 | 
			
		||||
 | 
			
		||||
function pager_link($from_new, $attributes = array()) {
 | 
			
		||||
  $q = $_GET["q"];
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -128,29 +128,6 @@ function theme_node($node, $main) {
 | 
			
		|||
  return $output;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function _theme_table_cell($cell, $header = 0) {
 | 
			
		||||
  if (is_array($cell)) {
 | 
			
		||||
    $data = $cell["data"];
 | 
			
		||||
    foreach ($cell as $key => $value) {
 | 
			
		||||
      if ($key != "data")  {
 | 
			
		||||
        $attributes .= " $key=\"$value\"";
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  else {
 | 
			
		||||
    $data = $cell;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if ($header) {
 | 
			
		||||
    $output = "<th$attributes>$data</th>";
 | 
			
		||||
  }
 | 
			
		||||
  else {
 | 
			
		||||
    $output = "<td$attributes>$data</td>";
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return $output;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  Returns themed table.
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -331,7 +308,7 @@ function theme_head($main = 0) {
 | 
			
		|||
 | 
			
		||||
/**
 | 
			
		||||
  Execute hook _footer() which is run at the end of the page right
 | 
			
		||||
  before the </body> tag.
 | 
			
		||||
  before the \</body> tag.
 | 
			
		||||
 | 
			
		||||
  @param $main (optional)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -381,109 +358,28 @@ function theme_blocks($region) {
 | 
			
		|||
  }
 | 
			
		||||
  return $output;
 | 
			
		||||
}
 | 
			
		||||
/**  @} End of defgroup themeable **/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  Hook Help - returns theme specific help and information.
 | 
			
		||||
 | 
			
		||||
  @param section defines the \a section of the help to be returned.
 | 
			
		||||
 | 
			
		||||
  @return a string containing the help output.
 | 
			
		||||
**/
 | 
			
		||||
function theme_help($section) {
 | 
			
		||||
  $ouptout = "";
 | 
			
		||||
 | 
			
		||||
  switch ($section) {
 | 
			
		||||
    case 'admin/system/themes#description':
 | 
			
		||||
      $output = t("The base theme");
 | 
			
		||||
      break;
 | 
			
		||||
  }
 | 
			
		||||
  return $output;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  Provides a list of currently available themes.
 | 
			
		||||
 | 
			
		||||
  @param $refresh
 | 
			
		||||
 | 
			
		||||
  @return an array of the currently available themes.
 | 
			
		||||
**/
 | 
			
		||||
function list_themes($refresh = 0) {
 | 
			
		||||
  static $list;
 | 
			
		||||
 | 
			
		||||
  if ($refresh) {
 | 
			
		||||
    unset($list);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (!$list) {
 | 
			
		||||
    $list = array();
 | 
			
		||||
    $result = db_query("SELECT * FROM {system} where type = 'theme' AND status = '1' ORDER BY name");
 | 
			
		||||
    while ($theme = db_fetch_object($result)) {
 | 
			
		||||
      if (file_exists($theme->filename)) {
 | 
			
		||||
        $list[$theme->name] = $theme;
 | 
			
		||||
function _theme_table_cell($cell, $header = 0) {
 | 
			
		||||
  if (is_array($cell)) {
 | 
			
		||||
    $data = $cell["data"];
 | 
			
		||||
    foreach ($cell as $key => $value) {
 | 
			
		||||
      if ($key != "data")  {
 | 
			
		||||
        $attributes .= " $key=\"$value\"";
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return $list;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  Initialized the theme system.
 | 
			
		||||
 | 
			
		||||
  @return the name of the currently selected theme.
 | 
			
		||||
**/
 | 
			
		||||
function init_theme() {
 | 
			
		||||
  global $user;
 | 
			
		||||
 | 
			
		||||
  $themes = list_themes();
 | 
			
		||||
  $name = $user->theme ? $user->theme : variable_get("theme_default", 0);
 | 
			
		||||
 | 
			
		||||
  $theme->path = "";
 | 
			
		||||
  $theme->name = "";
 | 
			
		||||
 | 
			
		||||
  if (is_object($themes[$name])) {
 | 
			
		||||
    include_once($themes[$name]->filename);
 | 
			
		||||
    $theme->path = dirname($themes[$name]->filename);
 | 
			
		||||
    $theme->name = $name;
 | 
			
		||||
  else {
 | 
			
		||||
    $data = $cell;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return $theme;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  Returns the path to the currently selected theme.
 | 
			
		||||
 | 
			
		||||
  @return the path to the the currently selected theme.
 | 
			
		||||
**/
 | 
			
		||||
function path_to_theme() {
 | 
			
		||||
  global $theme;
 | 
			
		||||
  return $theme->path;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  External interface of the theme system to all other modules, and core files.
 | 
			
		||||
 | 
			
		||||
  All requests for themed functions must go through this function. It examines
 | 
			
		||||
  the request and routes it to the appropriate theme function. If the current
 | 
			
		||||
  theme does not implement the requested function, then the base theme function
 | 
			
		||||
  is called.
 | 
			
		||||
  Example: \verbatim $header_text = theme("header"); \endverbatim
 | 
			
		||||
 | 
			
		||||
  @return the path to the the currently selected theme.
 | 
			
		||||
**/
 | 
			
		||||
function theme() {
 | 
			
		||||
  global $theme;
 | 
			
		||||
 | 
			
		||||
  $args = func_get_args();
 | 
			
		||||
  $function = array_shift($args);
 | 
			
		||||
 | 
			
		||||
  if (($theme->name != "") && (function_exists($theme->name ."_". $function))) {
 | 
			
		||||
    return call_user_func_array($theme->name ."_". $function, $args);
 | 
			
		||||
  if ($header) {
 | 
			
		||||
    $output = "<th$attributes>$data</th>";
 | 
			
		||||
  }
 | 
			
		||||
  elseif (function_exists("theme_". $function)){
 | 
			
		||||
    return call_user_func_array("theme_". $function, $args);
 | 
			
		||||
  else {
 | 
			
		||||
    $output = "<td$attributes>$data</td>";
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**  @} End of defgroup theme_system **/
 | 
			
		||||
  return $output;
 | 
			
		||||
}
 | 
			
		||||
?>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -103,9 +103,9 @@ function block_admin_save($edit) {
 | 
			
		|||
/**
 | 
			
		||||
 * update blocks db table with blocks currently exported by modules
 | 
			
		||||
 *
 | 
			
		||||
 * @param   array   $order_by   php array_multisort() style sort ordering, eg. "weight", SORT_ASC, SORT_STRING. see {@link http://www.php.net/manual/en/function.array-multisort.php}
 | 
			
		||||
 * @return  array   blocks currently exported by modules, sorted by $order_by
 | 
			
		||||
 * @access  private
 | 
			
		||||
 * @param   $order_by   php <a href="http://www.php.net/manual/en/function.array-multisort.php">array_multisort()</a> style sort ordering, eg. "weight", SORT_ASC, SORT_STRING.
 | 
			
		||||
 *
 | 
			
		||||
 * @return  blocks currently exported by modules, sorted by $order_by
 | 
			
		||||
 */
 | 
			
		||||
function _block_rehash($order_by = array("weight")) {
 | 
			
		||||
  $result = db_query("SELECT * FROM {blocks} ");
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -103,9 +103,9 @@ function block_admin_save($edit) {
 | 
			
		|||
/**
 | 
			
		||||
 * update blocks db table with blocks currently exported by modules
 | 
			
		||||
 *
 | 
			
		||||
 * @param   array   $order_by   php array_multisort() style sort ordering, eg. "weight", SORT_ASC, SORT_STRING. see {@link http://www.php.net/manual/en/function.array-multisort.php}
 | 
			
		||||
 * @return  array   blocks currently exported by modules, sorted by $order_by
 | 
			
		||||
 * @access  private
 | 
			
		||||
 * @param   $order_by   php <a href="http://www.php.net/manual/en/function.array-multisort.php">array_multisort()</a> style sort ordering, eg. "weight", SORT_ASC, SORT_STRING.
 | 
			
		||||
 *
 | 
			
		||||
 * @return  blocks currently exported by modules, sorted by $order_by
 | 
			
		||||
 */
 | 
			
		||||
function _block_rehash($order_by = array("weight")) {
 | 
			
		||||
  $result = db_query("SELECT * FROM {blocks} ");
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -64,7 +64,6 @@ function search_settings() {
 | 
			
		|||
 | 
			
		||||
/**
 | 
			
		||||
 * search engine administration actions
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
function search_admin() {
 | 
			
		||||
  $op = $_POST["op"];
 | 
			
		||||
| 
						 | 
				
			
			@ -90,8 +89,7 @@ function search_admin() {
 | 
			
		|||
 | 
			
		||||
/**
 | 
			
		||||
 * perform a regularly run action across all modules that have the
 | 
			
		||||
 * <module>_update_index function in them.
 | 
			
		||||
 *
 | 
			
		||||
 * <i>module</i>_update_index function in them.
 | 
			
		||||
 */
 | 
			
		||||
function search_cron() {
 | 
			
		||||
  foreach (module_list() as $module) {
 | 
			
		||||
| 
						 | 
				
			
			@ -105,15 +103,16 @@ function search_cron() {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Perform a search on a word(s)
 | 
			
		||||
 * Perform a search on a word(s).
 | 
			
		||||
 *
 | 
			
		||||
 * Search function called by each node that supports the indexed search
 | 
			
		||||
 * Search function called by each node that supports the indexed search.
 | 
			
		||||
 *
 | 
			
		||||
 * @param $search_array  an array as returned from <module>_search
 | 
			
		||||
 *                       of type array("keys" => ...,
 | 
			
		||||
 *                       "type" => ..., "select" => ...)
 | 
			
		||||
 *                       see node_search in node.module for an
 | 
			
		||||
 *                       explanation of array items
 | 
			
		||||
 * @param $search_array  an array as returned from <i>module</i>_search
 | 
			
		||||
 *   of type array("keys" => ..., "type" => ..., "select" => ...)
 | 
			
		||||
 * @see   node_search for an explanation of array items
 | 
			
		||||
 *
 | 
			
		||||
 * @return  array of search results, each element being an array indexed with
 | 
			
		||||
 *   "count", "title", "link", "user" (name), "date", "keywords"
 | 
			
		||||
 */
 | 
			
		||||
function do_search($search_array) {
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -225,11 +224,9 @@ function do_search($search_array) {
 | 
			
		|||
/**
 | 
			
		||||
 * Update the search_index table
 | 
			
		||||
 *
 | 
			
		||||
 * @param $search_array  an array as returned from <module>_update_index
 | 
			
		||||
 *                       of type array("last_update" => ...,
 | 
			
		||||
 *                       "node_type" => ..., "select" => ...)
 | 
			
		||||
 *                       see node_update_index in node.module for an
 | 
			
		||||
 *                       explanation of array items
 | 
			
		||||
 * @param $search_array  an array as returned from <i>module</i>_update_index
 | 
			
		||||
 *   of type array("last_update" => ..., "node_type" => ..., "select" => ...)
 | 
			
		||||
 * @see   node_update_index for an explanation of array items
 | 
			
		||||
 */
 | 
			
		||||
function update_index($search_array) {
 | 
			
		||||
  $last_update = variable_get($search_array["last_update"], 1);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -64,7 +64,6 @@ function search_settings() {
 | 
			
		|||
 | 
			
		||||
/**
 | 
			
		||||
 * search engine administration actions
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
function search_admin() {
 | 
			
		||||
  $op = $_POST["op"];
 | 
			
		||||
| 
						 | 
				
			
			@ -90,8 +89,7 @@ function search_admin() {
 | 
			
		|||
 | 
			
		||||
/**
 | 
			
		||||
 * perform a regularly run action across all modules that have the
 | 
			
		||||
 * <module>_update_index function in them.
 | 
			
		||||
 *
 | 
			
		||||
 * <i>module</i>_update_index function in them.
 | 
			
		||||
 */
 | 
			
		||||
function search_cron() {
 | 
			
		||||
  foreach (module_list() as $module) {
 | 
			
		||||
| 
						 | 
				
			
			@ -105,15 +103,16 @@ function search_cron() {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Perform a search on a word(s)
 | 
			
		||||
 * Perform a search on a word(s).
 | 
			
		||||
 *
 | 
			
		||||
 * Search function called by each node that supports the indexed search
 | 
			
		||||
 * Search function called by each node that supports the indexed search.
 | 
			
		||||
 *
 | 
			
		||||
 * @param $search_array  an array as returned from <module>_search
 | 
			
		||||
 *                       of type array("keys" => ...,
 | 
			
		||||
 *                       "type" => ..., "select" => ...)
 | 
			
		||||
 *                       see node_search in node.module for an
 | 
			
		||||
 *                       explanation of array items
 | 
			
		||||
 * @param $search_array  an array as returned from <i>module</i>_search
 | 
			
		||||
 *   of type array("keys" => ..., "type" => ..., "select" => ...)
 | 
			
		||||
 * @see   node_search for an explanation of array items
 | 
			
		||||
 *
 | 
			
		||||
 * @return  array of search results, each element being an array indexed with
 | 
			
		||||
 *   "count", "title", "link", "user" (name), "date", "keywords"
 | 
			
		||||
 */
 | 
			
		||||
function do_search($search_array) {
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -225,11 +224,9 @@ function do_search($search_array) {
 | 
			
		|||
/**
 | 
			
		||||
 * Update the search_index table
 | 
			
		||||
 *
 | 
			
		||||
 * @param $search_array  an array as returned from <module>_update_index
 | 
			
		||||
 *                       of type array("last_update" => ...,
 | 
			
		||||
 *                       "node_type" => ..., "select" => ...)
 | 
			
		||||
 *                       see node_update_index in node.module for an
 | 
			
		||||
 *                       explanation of array items
 | 
			
		||||
 * @param $search_array  an array as returned from <i>module</i>_update_index
 | 
			
		||||
 *   of type array("last_update" => ..., "node_type" => ..., "select" => ...)
 | 
			
		||||
 * @see   node_update_index for an explanation of array items
 | 
			
		||||
 */
 | 
			
		||||
function update_index($search_array) {
 | 
			
		||||
  $last_update = variable_get($search_array["last_update"], 1);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -538,12 +538,12 @@ function _taxonomy_term_children($tid) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Try to map a string to existing vocabularies
 | 
			
		||||
 * Try to map a string to existing vocabularies.
 | 
			
		||||
 * Provide case insensitive and trimmed map so as to
 | 
			
		||||
 * maximize likelihood of successful mapping.
 | 
			
		||||
 *
 | 
			
		||||
 * @param   string  $name  Name of the vocabulary to search
 | 
			
		||||
 * @return  array   array of matching vocabularies, as objects
 | 
			
		||||
 * @param   $name  Name of the vocabulary to search
 | 
			
		||||
 * @return  array of matching vocabularies, as objects
 | 
			
		||||
 */
 | 
			
		||||
function taxonomy_get_vocabulary_by_name($name) {
 | 
			
		||||
  // LOWER is ANSI SQL-92
 | 
			
		||||
| 
						 | 
				
			
			@ -561,8 +561,8 @@ function taxonomy_get_vocabulary_by_name($name) {
 | 
			
		|||
 * Provide case insensitive and trimmed map so as to
 | 
			
		||||
 * maximize likelihood of successful mapping.
 | 
			
		||||
 *
 | 
			
		||||
 * @param   string  $name  Name of the term to search
 | 
			
		||||
 * @return  array   array of matching terms, as objects
 | 
			
		||||
 * @param   name  Name of the term to search
 | 
			
		||||
 * @return  rray of matching terms, as objects
 | 
			
		||||
 */
 | 
			
		||||
function taxonomy_get_term_by_name($name) {
 | 
			
		||||
  // LOWER is ANSI SQL-92
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -538,12 +538,12 @@ function _taxonomy_term_children($tid) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Try to map a string to existing vocabularies
 | 
			
		||||
 * Try to map a string to existing vocabularies.
 | 
			
		||||
 * Provide case insensitive and trimmed map so as to
 | 
			
		||||
 * maximize likelihood of successful mapping.
 | 
			
		||||
 *
 | 
			
		||||
 * @param   string  $name  Name of the vocabulary to search
 | 
			
		||||
 * @return  array   array of matching vocabularies, as objects
 | 
			
		||||
 * @param   $name  Name of the vocabulary to search
 | 
			
		||||
 * @return  array of matching vocabularies, as objects
 | 
			
		||||
 */
 | 
			
		||||
function taxonomy_get_vocabulary_by_name($name) {
 | 
			
		||||
  // LOWER is ANSI SQL-92
 | 
			
		||||
| 
						 | 
				
			
			@ -561,8 +561,8 @@ function taxonomy_get_vocabulary_by_name($name) {
 | 
			
		|||
 * Provide case insensitive and trimmed map so as to
 | 
			
		||||
 * maximize likelihood of successful mapping.
 | 
			
		||||
 *
 | 
			
		||||
 * @param   string  $name  Name of the term to search
 | 
			
		||||
 * @return  array   array of matching terms, as objects
 | 
			
		||||
 * @param   name  Name of the term to search
 | 
			
		||||
 * @return  rray of matching terms, as objects
 | 
			
		||||
 */
 | 
			
		||||
function taxonomy_get_term_by_name($name) {
 | 
			
		||||
  // LOWER is ANSI SQL-92
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue