function _print_generate_node in Printer, email and PDF versions 5.x
Same name and namespace in other branches
- 5.4 print.pages.inc \_print_generate_node()
- 5.3 print.pages.inc \_print_generate_node()
- 6 print.pages.inc \_print_generate_node()
- 7.2 print.pages.inc \_print_generate_node()
- 7 print.pages.inc \_print_generate_node()
Prepare a Printer-friendly-ready node body for content nodes
Parameters
$nid: node ID of the node to be rendered into a printer-friendly page
$cid: comment ID of the individual comment to be rendered
$format: format of the page being generated
$teaser: if set to TRUE, outputs only the node's teaser
$message: optional sender's message (used by the send e-mail module)
Return value
filled array ready to be used in the template
1 call to _print_generate_node()
- print_controller in ./
print.pages.inc - Select the print generator function based on the page type
File
- ./
print.pages.inc, line 471
Code
function _print_generate_node($nid, $cid = NULL, $format = PRINT_HTML_FORMAT, $teaser = FALSE, $message = NULL) {
global $_print_urls;
//use the proper build_mode
$node->build_mode = NODE_BUILD_PRINT;
// We can take a node id
$node = node_load($nid);
if (!$node) {
// Node not found
drupal_not_found();
return FALSE;
}
elseif (!node_access('view', $node)) {
// Access is denied
drupal_access_denied();
return FALSE;
}
drupal_set_title(check_plain($node->title));
//alert other modules that we are generating a printer-friendly page, so they can choose to show/hide info
$node->printing = TRUE;
// Turn off Pagination by the Paging module
unset($node->pages);
unset($node->page_count);
// Make this page a member of the original page's organic group
if (function_exists('og_set_group_context') && isset($node->og_groups)) {
og_set_group_context($node->og_groups);
}
if ($cid === NULL) {
// Adapted (simplified) version of node_view
//Render the node content
$node = node_build_content($node, $teaser, TRUE);
// Disable fivestar widget output
unset($node->content['fivestar_widget']);
// Disable service links module output
unset($node->content['service_links']);
$content = drupal_render($node->content);
// Disable the AdSense module ads
$content = preg_replace('!<div class=[\'"]adsense[\'"].*?</div>!sim', '', $content);
if ($teaser) {
$node->teaser = $content;
unset($node->body);
}
else {
$node->body = $content;
unset($node->teaser);
}
}
$print_comments = variable_get('print_comments', PRINT_COMMENTS_DEFAULT);
if (function_exists('comment_render') && ($cid != NULL || $print_comments)) {
//Print only the requested comment (or if $cid is NULL, all of them)
$comments = comment_render($node, $cid);
//Remove the comment forms
$comments = preg_replace('!<form.*?id="comment-.*?">.*?</form>!sim', '', $comments);
//Remove the 'Post new comment' title
$comments = preg_replace('!<h2.*?>' . t('Post new comment') . '</h2>!', '', $comments);
//Remove the comment title hyperlink
$comments = preg_replace('!(<h3.*?>.*?)<a.*?>(.*?)</a>(.*?</h3>)!i', '$1$2$3', $comments);
//Remove the comment author link
$pattern = '!(<(?:span|div) class="submitted">.*?)<a.*?>(.*?)</a>(.*?</(?:span|div)>)!sim';
if (preg_match($pattern, $comments)) {
$comments = preg_replace($pattern, '$1$2$3', $comments);
}
//Remove the comment links
$comments = preg_replace('!\\s*<ul class="links">.*?</ul>!sim', '', $comments);
if ($cid != NULL) {
// Single comment requested, output only the comment
unset($node->body);
}
$node->body .= $comments;
}
node_invoke_nodeapi($node, 'alter', $teaser, TRUE);
$content = theme('print_node', $node, $teaser, TRUE, $format);
if ($teaser) {
$content = $node->teaser;
}
//Check URL list settings
$_print_urls = _print_url_list_enabled($node, $format);
// Convert the a href elements
$pattern = '!<(a\\s[^>]*?)>(.*?)(</a>)!is';
$content = preg_replace_callback($pattern, '_print_rewrite_urls', $content);
$print = _print_var_generator($node, $message, $cid);
$print['content'] = $content;
return $print;
}