function print_mail_link_allowed in Printer, email and PDF versions 5.x
Same name and namespace in other branches
- 5.4 print_mail/print_mail.module \print_mail_link_allowed()
- 5.3 print_mail/print_mail.module \print_mail_link_allowed()
- 6 print_mail/print_mail.module \print_mail_link_allowed()
- 7.2 print_mail/print_mail.module \print_mail_link_allowed()
- 7 print_mail/print_mail.module \print_mail_link_allowed()
Determine a the link to send by e-mail is allowed depending on all possible settings
Parameters
$args: array containing the possible parameters: teaser, node, type, path
Return value
FALSE if not allowed PRINT_ALLOW_NORMAL_LINK if a normal link is allowed PRINT_ALLOW_BOOK_LINK if a link is allowed in a book node
2 calls to print_mail_link_allowed()
- print_mail_insert_link in print_mail/
print_mail.module - Auxiliary function to display a formatted send by e-mail link
- print_mail_link in print_mail/
print_mail.module - Implementation of hook_link().
File
- print_mail/
print_mail.module, line 454 - Displays Printer-friendly versions of Drupal pages.
Code
function print_mail_link_allowed($args) {
if (!empty($args['teaser']) && !variable_get('print_mail_link_teaser', PRINT_MAIL_LINK_TEASER_DEFAULT) || !user_access('access send to friend')) {
// If the teaser link is disabled or the user is not allowed
return FALSE;
}
$is_view = FALSE;
if (!empty($args['path'])) {
$nid = preg_replace('!^node/!', '', drupal_get_normal_path($args['path']));
if (is_numeric($nid)) {
$args['node'] = node_load($nid);
}
else {
// Not a node - is it a view?
$router_item = menu_get_item($args['path']);
$is_view = $router_item['access_callback'] == 'views_access';
}
}
if (!empty($args['node'])) {
static $node_type = FALSE;
$node = $args['node'];
if (!empty($node->view) && !variable_get('print_mail_view_contained_nodes_link_visibility', 0)) {
return FALSE;
}
if (isset($node->type)) {
$node_type = $node->type;
}
// Node
$print_mail_node_link_visibility = variable_get('print_mail_node_link_visibility', PRINT_MAIL_NODE_LINK_VISIBILITY_DEFAULT);
$print_mail_node_link_pages = variable_get('print_mail_node_link_pages', PRINT_MAIL_NODE_LINK_PAGES_DEFAULT);
if (!_print_page_match($print_mail_node_link_visibility, "node/" . $node->nid, $print_mail_node_link_pages)) {
// Page not in visibility list
return FALSE;
}
elseif (isset($args['type']) && $args['type'] == 'comment' && isset($node_type)) {
// Link is for a comment, return the configured setting
// Cache this statically to avoid duplicate queries for every comment.
static $res = array();
if (!isset($res[$node->nid])) {
$res[$node->nid] = db_fetch_object(db_query("SELECT comments FROM {print_mail_node_conf} WHERE nid = %d", $node->nid));
}
$print_display_comment = $res ? intval($res[$node->nid]->comments) : variable_get('print_mail_display_comment_' . $node_type, PRINT_TYPE_COMMENT_LINK_DEFAULT);
if ($print_display_comment) {
return PRINT_ALLOW_NORMAL_LINK;
}
}
else {
// Node link
if (empty($node->print_mail_display)) {
// Link for this node is disabled
return FALSE;
}
elseif (isset($node->book)) {
// Node is a book;
$print_mail_book_link = variable_get('print_mail_book_link', PRINT_MAIL_BOOK_LINK_DEFAULT);
switch ($print_mail_book_link) {
case 1:
if (user_access('access printer-friendly version')) {
return PRINT_ALLOW_BOOK_LINK;
}
break;
case 2:
return PRINT_ALLOW_NORMAL_LINK;
}
}
else {
return PRINT_ALLOW_NORMAL_LINK;
}
}
}
elseif ($is_view && variable_get('print_mail_views_link_visibility', 1)) {
return PRINT_ALLOW_NORMAL_LINK;
}
else {
// 'System' page
$print_mail_sys_link_visibility = variable_get('print_mail_sys_link_visibility', PRINT_MAIL_SYS_LINK_VISIBILITY_DEFAULT);
$print_mail_sys_link_pages = variable_get('print_mail_sys_link_pages', PRINT_MAIL_SYS_LINK_PAGES_DEFAULT);
return _print_page_match($print_mail_sys_link_visibility, $_GET['q'], $print_mail_sys_link_pages);
}
return FALSE;
}