function smart_paging_break_insert_placeholder in Smart Paging 7.2
Break HTML content and insert placeholder
Helper function to properly break HTML content and insert placeholder.
Parameters
$text: HTML text content.
$placeholder: Placeholder string to be inserted between broken page.
Return value
HTML output of properly break HTML content and insert placeholder.
1 call to smart_paging_break_insert_placeholder()
- smart_paging_field_attach_view_alter in ./
smart_paging.module - Implements hook_field_attach_view_alter().
File
- ./
smart_paging.module, line 1708 - Provides smart paging capability to Drupal contents.
Code
function smart_paging_break_insert_placeholder($text, $placeholder = NULL) {
if (empty($placeholder)) {
$placeholder = variable_get('smart_paging_pagebreak', '<!--pagebreak-->');
}
// Perform HTML correction
$text = _filter_htmlcorrector($text);
$break_map = array();
$text = str_replace($placeholder, '<smart_paging_placeholder>', $text) . '<smart_paging_placeholder>';
$struct = smart_paging_pair_tags($text);
$split = $struct['split'];
$tag_pairs_map = $struct['tag_pairs_map'];
$break_positions = array_keys($tag_pairs_map['smart_paging_placeholder']);
unset($tag_pairs_map['smart_paging_placeholder']);
foreach ($break_positions as $break_index => $break_end) {
if ($break_index) {
$break_start = $break_positions[$break_index - 1];
$break_map[$break_end] = array_slice($split, $break_start, $break_end - $break_start, TRUE);
// Remove the placeholder from the structure
unset($break_map[$break_end][$break_start]);
}
else {
$break_start = $break_index;
$break_map[$break_end] = array_slice($split, $break_start, $break_end - $break_start, TRUE);
}
foreach ($tag_pairs_map as $tag_name => $map) {
foreach ($map as $open_tag_pos => $close_tag_pos) {
if ($open_tag_pos < $break_end && $close_tag_pos > $break_end || $open_tag_pos < $break_start && $close_tag_pos > $break_start || $open_tag_pos > $break_start && $close_tag_pos < $break_end && $close_tag_pos !== NULL || $open_tag_pos > $break_start && $open_tag_pos < $break_end && $close_tag_pos === NULL) {
if (empty($close_tag_pos)) {
$break_map[$break_end][$open_tag_pos] = '<' . $split[$open_tag_pos] . '>';
}
else {
$break_map[$break_end][$open_tag_pos] = '<' . $split[$open_tag_pos] . '>';
$break_map[$break_end][$close_tag_pos] = '<' . $split[$close_tag_pos] . '>';
}
}
}
}
ksort($break_map[$break_end]);
if (isset($output)) {
$output .= $placeholder . implode('', $break_map[$break_end]);
}
else {
$output = implode('', $break_map[$break_end]);
}
}
return $output;
}