From 0355caac417d92973f4913efbb19342ae352bf2e Mon Sep 17 00:00:00 2001 From: Angie Byron <webchick@24967.no-reply.drupal.org> Date: Sat, 8 Aug 2009 22:52:59 +0000 Subject: [PATCH] #537654 by catch: Tidy up comment links, and remove hook_link() in favour of hook_page_alter(). --- modules/comment/comment.module | 134 +++++++++++++++------------------ modules/node/node.module | 21 ------ modules/system/system.api.php | 65 ---------------- 3 files changed, 60 insertions(+), 160 deletions(-) diff --git a/modules/comment/comment.module b/modules/comment/comment.module index de26cb31ab4e..6b54c49612f8 100644 --- a/modules/comment/comment.module +++ b/modules/comment/comment.module @@ -838,6 +838,66 @@ function comment_build_content($comment, $build_mode = 'full') { return $comment; } +/** + * Helper function, build links for an individual comment. + * + * Adds reply, edit, delete etc. depending on the current user permissions. + * + * @param $comment + * The comment object. + * @return + * A structured array of links. + */ +function comment_links($comment) { + $links = array(); + $node = node_load($comment->nid); + if ($node->comment == COMMENT_NODE_OPEN) { + if (user_access('administer comments') && user_access('post comments')) { + $links['comment_delete'] = array( + 'title' => t('delete'), + 'href' => "comment/delete/$comment->cid", + 'html' => TRUE, + ); + $links['comment_edit'] = array( + 'title' => t('edit'), + 'href' => "comment/edit/$comment->cid", + 'html' => TRUE, + ); + $links['comment_reply'] = array( + 'title' => t('reply'), + 'href' => "comment/reply/$comment->nid/$comment->cid", + 'html' => TRUE, + ); + if ($comment->status == COMMENT_NOT_PUBLISHED) { + $links['comment_approve'] = array( + 'title' => t('approve'), + 'href' => "comment/approve/$comment->cid", + 'html' => TRUE, + ); + } + } + elseif (user_access('post comments')) { + if (comment_access('edit', $comment)) { + $links['comment_edit'] = array( + 'title' => t('edit'), + 'href' => "comment/edit/$comment->cid", + 'html' => TRUE, + ); + } + $links['comment_reply'] = array( + 'title' => t('reply'), + 'href' => "comment/reply/$comment->nid/$comment->cid", + 'html' => TRUE, + ); + } + else { + $links['comment_forbidden']['title'] = theme('comment_post_forbidden', $node); + $links['comment_forbidden']['html'] = TRUE; + } + } + return $links; +} + /** * Construct a drupal_render() style array from an array of loaded comments. * @@ -1323,80 +1383,6 @@ function comment_delete_multiple($cids) { } } -/** - * Implement hook_link(). - */ -function comment_link($type, $object, $build_mode) { - if ($type == 'comment') { - $links = comment_links($object, FALSE); - return $links; - } -} - -/** - * Build command links for a comment (e.g.\ edit, reply, delete) with respect to the current user's access permissions. - * - * @param $comment - * The comment to which the links will be related. - * @return - * An associative array containing the links. - */ -function comment_links(&$comment) { - global $user; - $links = array(); - - $node = node_load($comment->nid); - if ($node->comment == COMMENT_NODE_OPEN) { - if (user_access('administer comments') && user_access('post comments')) { - $links['comment_delete'] = array( - 'title' => t('delete'), - 'href' => "comment/delete/$comment->cid", - 'html' => TRUE, - ); - $links['comment_edit'] = array( - 'title' => t('edit'), - 'href' => "comment/edit/$comment->cid", - 'html' => TRUE, - ); - $links['comment_reply'] = array( - 'title' => t('reply'), - 'href' => "comment/reply/$comment->nid/$comment->cid", - 'html' => TRUE, - ); - if ($comment->status == COMMENT_NOT_PUBLISHED) { - $links['comment_approve'] = array( - 'title' => t('approve'), - 'href' => "comment/approve/$comment->cid", - 'html' => TRUE, - ); - } - } - elseif (user_access('post comments')) { - if (comment_access('edit', $comment)) { - $links['comment_edit'] = array( - 'title' => t('edit'), - 'href' => "comment/edit/$comment->cid", - 'html' => TRUE, - ); - } - $links['comment_reply'] = array( - 'title' => t('reply'), - 'href' => "comment/reply/$comment->nid/$comment->cid", - 'html' => TRUE, - ); - } - else { - $node = node_load($comment->nid); - $links['comment_forbidden']['title'] = theme('comment_post_forbidden', $node); - $links['comment_forbidden']['html'] = TRUE; - } - } - - - - return $links; -} - /** * Comment operations. Offer different update operations depending on * which comment administration page is being viewed. diff --git a/modules/node/node.module b/modules/node/node.module index 725891d9f33a..b66b423f01e9 100644 --- a/modules/node/node.module +++ b/modules/node/node.module @@ -1594,27 +1594,6 @@ function theme_node_search_admin($form) { return $output; } -/** - * Implement hook_link(). - */ -function node_link($type, $node, $build_mode) { - $links = array(); - - if ($type == 'node') { - if ($build_mode == 'teaser') { - $links['node_read_more'] = array( - 'title' => t('Read more'), - 'href' => "node/$node->nid", - // The title attribute gets escaped when the links are processed, so - // there is no need to escape here. - 'attributes' => array('title' => t('Read the rest of !title.', array('!title' => $node->title))) - ); - } - } - - return $links; -} - function _node_revision_access($node, $op = 'view') { static $access = array(); if (!isset($access[$node->vid])) { diff --git a/modules/system/system.api.php b/modules/system/system.api.php index 9c543527551c..37d37ea1559e 100644 --- a/modules/system/system.api.php +++ b/modules/system/system.api.php @@ -511,71 +511,6 @@ function hook_image_toolkits() { ); } -/** - * Define internal Drupal links. - * - * This hook enables modules to add links to many parts of Drupal. Links - * may be added in the navigation block, for example. - * - * The returned array should be a keyed array of link entries. Each link can - * be in one of two formats. - * - * The first format will use the l() function to render the link: - * - attributes: Optional. See l() for usage. - * - fragment: Optional. See l() for usage. - * - href: Required. The URL of the link. - * - html: Optional. See l() for usage. - * - query: Optional. See l() for usage. - * - title: Required. The name of the link. - * - * The second format can be used for non-links. Leaving out the href index will - * select this format: - * - title: Required. The text or HTML code to display. - * - attributes: Optional. An associative array of HTML attributes to apply to the span tag. - * - html: Optional. If not set to true, check_plain() will be run on the title before it is displayed. - * - * @param $type - * An identifier declaring what kind of link is being requested. - * Possible values: - * - comment: Links to be placed below a comment being viewed. - * @param $object - * A comment object. - * @param $build_mode - * Build mode for the node, e.g. 'full', 'teaser'... - * @return - * An array of the requested links. - * - */ -function hook_link($type, $object, $build_mode) { - $links = array(); - - if ($type == 'comment') { - $links = comment_links($object, FALSE); - return $links; - } - - return $links; -} - -/** - * Perform alterations before links on a comment are rendered. One popular use of - * this hook is to modify/remove links from other modules. If you want to add a link - * to the links section of a node, use hook_link instead. - * - * @param $links - * Nested array of links for the node keyed by providing module. - * @param $node - * A node object that contains the links. - */ -function hook_link_alter(array &$links, $node) { - foreach ($links as $module => $link) { - if (strpos($module, 'taxonomy_term') !== FALSE) { - // Link back to the forum and not the taxonomy term page - $links[$module]['href'] = str_replace('taxonomy/term', 'forum', $link['href']); - } - } -} - /** * Perform alterations profile items before they are rendered. You may omit/add/re-sort/re-categorize, etc. * -- GitLab