diff options
Diffstat (limited to 'modules/title.module')
-rw-r--r-- | modules/title.module | 102 |
1 files changed, 0 insertions, 102 deletions
diff --git a/modules/title.module b/modules/title.module deleted file mode 100644 index 907dd007e..000000000 --- a/modules/title.module +++ /dev/null @@ -1,102 +0,0 @@ -<?php -// $Id$ - -/** - * Implementation of hook_help(). - */ -function title_help($section) { - switch ($section) { - case 'admin/modules#description': - return t('Enables users to link to stories, articles or similar content by title.'); - case 'filter#short-tip' : - return t('<a href=\"%title-help\">Link to content</a> on this site using <em>[title|text]</em>.', array("%title-help" => url('filter/tips', NULL, 'filter-title'))); - case 'filter#long-tip' : - return '<p>' . t('You may quickly link to content on the site using this syntax: <em>[title|text]</em>. This will generate a link labeled "text" to the content with the title "title". If you omit "|text", the label becomes "title".') . '</p>'; - } -} - -/** - * Implementation of hook_menu(). - */ -function title_menu() { - $items = array(); - $items[] = array('path' => 'title', 'title' => t('search'), - 'callback' => 'title_page', - 'access' => user_access('access content'), - 'type' => MENU_CALLBACK); - return $items; -} - -/** - * Menu callback; displays the matching node or a list of search results. - */ -function title_page($query) { - $title = urldecode($query); - $result = db_query("SELECT n.*, u.name, u.uid FROM {node} n INNER JOIN {users} u ON n.uid = u.uid WHERE n.title = '%s' AND n.status = 1 ORDER BY n.created DESC", $title); - - $title = trim(str_replace(array('_', '%', '*'), ' ', $title)); - if (db_num_rows($result) == 0) { - // No node with exact title found; try a substring. - $result = db_query("SELECT n.*, u.name, u.uid FROM {node} n INNER JOIN {users} u ON n.uid = u.uid WHERE n.title LIKE '%%%s%%' AND n.status = 1 ORDER BY n.created DESC", $title); - } - - if (db_num_rows($result) == 0 && module_exist('search')) { - // Still no matches, so return a full-text search. - search_view($title); - } - else if (db_num_rows($result) == 1) { - $node = db_fetch_object($result); - $node = node_load(array('nid' => $node->nid)); - print theme('page', node_show($node, NULL), $node->title); - } - else { - $header = array(t('Type'), t('Title'), t('Author')); - while ($node = db_fetch_object($result)) { - $type = ucfirst(module_invoke($node->type, 'node', 'name')); - $title = l($node->title, "node/$node->nid"); - $author = format_name($node); - $rows[] = array(array('data' => $type, 'class' => 'type'), array('data' => $title, 'class' => 'content'), array('data' => $author, 'class' => 'author')); - } - - $output = '<div id="title">'; - $output .= theme('table', $header, $rows); - $output .= '</div>'; - - drupal_set_title(t('Matching Posts')); - print theme('page', $output); - } -} - -/** - * Implementation of hook_filter(). - */ -function title_filter($op, $text = '', $node = NULL) { - switch ($op) { - case 'name': - return t('Title filter'); - case 'process': - return _title_filter_process($text); - case 'settings': - return _title_filter_settings($text); - default: - return $text; - } -} - -/** - * Filter [Node title|Description] links. '|Description' is optional. - */ -function _title_filter_process($text) { - $pattern = '\[([^\|\]\n]+)(?>\|?)([^\]\n]*)\]'; - // $1 == title: matches at least 1 char up to the first '|' or ']'. - // $2 == text: matches all after a following '|' (if there is) up to the next ']'. - // May include '|'s. - $replacement = 'l(\'$2\' ? \'$2\' : \'$1\', \'title/\'. urlencode(\'$1\'))'; - return preg_replace("/$pattern/e", $replacement, $text); -} - -function _title_filter_settings() { - return form_group(t('Title filter'), t('Wiki-like [node title|text] links are enabled. These shortcuts generate a link labeled "text" to the node with the title "node title". If you omit "|text", the label becomes "node title". You may use a substring of a node title if desired. When multiple matching titles are found, a list of matching nodes will be displayed. If no matching titles are found, a full-text search is returned.')); -} - -?> |