/** * Output the trackback script and handle trackbacks. */ function trackback_script() { if (get_option('is_on_trackbacks') == '0') { return; } require_lang('trackbacks'); header('Content-type: text/xml'); $page = get_param('page'); $id = get_param_integer('id'); $mode = either_param('__mode', 'none'); $allow_trackbacks = true; $hooks = find_all_hooks('systems', 'trackback'); foreach (array_keys($hooks) as $hook) { if ($hook == $page) { require_code('hooks/systems/trackback/' . filter_naughty_harsh($hook)); $object = object_factory('Hook_trackback_' . filter_naughty_harsh($hook), true); if (is_null($object)) { continue; } $allow_trackbacks = $object->run($id); break; } } if ($mode == 'rss') { //List all the trackbacks to the specified page $xml = get_trackbacks($page, strval($id), $allow_trackbacks, 'xml'); } else { $time = get_param_integer('time'); if ($time > time() - 60 * 5) { exit; } // Trackback link intentionally goes stale after 5 minutes, so it can't be statically stored and spam hammered //Add a trackback for the specified page $output = actualise_post_trackback($allow_trackbacks, $page, strval($id)); if ($output) { $xml = do_template('TRACKBACK_XML_NO_ERROR', array()); } else { $xml = do_template('TRACKBACK_XML_ERROR', array('_GUID' => 'ac5e34aeabf92712607e62e062407861', 'TRACKBACK_ERROR' => do_lang_tempcode('TRACKBACK_ERROR'))); } } $echo = do_template('TRACKBACK_XML_WRAPPER', array('_GUID' => 'cd8d057328569803a6cca9f8d37a0ac8', 'XML' => $xml)); $echo->evaluate_echo(); }
/** * Standard modular run function. * * @param array A map of parameters. * @return tempcode The result of execution. */ function run($map) { if (!array_key_exists('page', $map)) { $map['page'] = get_page_name(); } if (array_key_exists('id', $map)) { $id = $map['id']; } else { $id = get_param('id', '0'); } require_code('feedback'); //$self_url=get_self_url(); //$self_title=$map['page']; /*$test_changed=post_param('title',''); if ($test_changed!='') { decache('main_trackbacks'); }*/ //actualise_post_trackbacks(1,'block_main_trackbacks',$map['page'].'_'.$map['param'].$extra,$self_url,$self_title); actualise_post_trackback(get_option('is_on_trackbacks') == '1', $map['page'], $id); return get_trackbacks($map['page'], $id, get_option('is_on_trackbacks') == '1'); }
/** * The UI for a "flow mode" gallery. * * @param tempcode Rating area * @param tempcode Commenting area * @param ID_TEXT Our gallery ID * @param ID_TEXT Virtual root gallery * @param tempcode The description of the gallery * @param tempcode The tempcode for our visible child galleries * @param boolean Whether may "download this gallery" * @param tempcode The URL to "edit this gallery" * @param tempcode The URL to "add a gallery" * @param tempcode The URL to "submit an image to this gallery" * @param tempcode The URL to "submit a video to this gallery" * @param tempcode The title of the page (our of get_page_title) * @param URLPATH The representative image for the gallery * @param integer The start position we are in browsing through child galleries * @param integer The maximum number of child galleries we can display per page * @param integer The number of child galleries we have * @param string The gallery title * @param tempcode Sorting UI * @return tempcode The UI */ function do_gallery_flow_mode($rating_details, $comment_details, $cat, $root, $description, $children, $may_download, $edit_url, $add_gallery_url, $submit_image_url, $submit_video_url, $title, $rep_image, $start, $max, $num_galleries, $fullname, $sorting) { list($sort, $sort_backwards, $sql_suffix_images, $sql_suffix_videos) = $this->get_sort_order(); $page_num = intval(floor(floatval($start) / floatval($max))) + 1; $num_pages = intval(ceil(floatval($num_galleries) / floatval($max))); $image_select = get_param('select', '*'); $video_select = get_param('video_select', '*'); $previous = $page_num == 1 ? new ocp_tempcode() : build_url(array('page' => '_SELF', 'start' => max($start - $max, 0) == 0 ? NULL : max($start - $max, 0), 'days' => get_param('days', '') == '' ? NULL : get_param('days'), 'sort' => $sort == 'add_date DESC' ? NULL : $sort, 'select' => $image_select == '*' ? NULL : $image_select, 'video_select' => $video_select == '*' ? NULL : $video_select), '_SELF', NULL, true); $next = $page_num == $num_pages ? new ocp_tempcode() : build_url(array('page' => '_SELF', 'start' => $start + $max, 'days' => get_param('days', '') == '' ? NULL : get_param('days'), 'sort' => $sort == 'add_date DESC' ? NULL : $sort, 'select' => $image_select == '*' ? NULL : $image_select, 'video_select' => $video_select == '*' ? NULL : $video_select), '_SELF', NULL, true); if ($num_pages < 2) { $browse = new ocp_tempcode(); } else { $browse = do_template('NEXT_BROWSER_BROWSE_NEXT', array('_GUID' => '5a01713ab670f1eb1dd17bde663e6e9f', 'PREVIOUS_LINK' => $previous, 'NEXT_LINK' => $next, 'PAGE_NUM' => integer_format($page_num), 'NUM_PAGES' => integer_format($num_pages))); } // View current entry $row = NULL; $current_entry = new ocp_tempcode(); $view_url = new ocp_tempcode(); $full_url = ''; $entry_edit_url = new ocp_tempcode(); $entry_rating_details = new ocp_tempcode(); $entry_comment_details = new ocp_tempcode(); $entry_trackback_details = new ocp_tempcode(); $entry_add_date_raw = ''; $entry_edit_date_raw = ''; $entry_views = ''; $entry_title = ''; $entry_submitter = NULL; $entry_description = new ocp_tempcode(); $probe_type = get_param('probe_type', 'first'); $probe_id = get_param_integer('probe_id', 0); if ($probe_type == 'first') { $where = db_string_equal_to('cat', $cat); if (!has_specific_permission(get_member(), 'see_unvalidated')) { $where .= ' AND validated=1'; } if (get_param('days', '') != '') { $where .= ' AND add_date>' . strval(time() - get_param_integer('days') * 60 * 60 * 24); } $first_video = $GLOBALS['SITE_DB']->query('SELECT *' . $sql_suffix_videos . ' FROM ' . get_table_prefix() . 'videos r WHERE ' . $where . ' ORDER BY ' . $sort, 1); if (array_key_exists(0, $first_video)) { $row = $first_video[0]; $probe_type = 'video'; $probe_id = $row['id']; } else { $where = db_string_equal_to('cat', $cat); if (!has_specific_permission(get_member(), 'see_unvalidated')) { $where .= ' AND validated=1'; } if (get_param('days', '') != '') { $where .= ' AND add_date>' . strval(time() - get_param_integer('days') * 60 * 60 * 24); } $first_image = $GLOBALS['SITE_DB']->query('SELECT *' . $sql_suffix_images . ' FROM ' . get_table_prefix() . 'images r WHERE ' . $where . ' ORDER BY ' . $sort, 1); if (array_key_exists(0, $first_image)) { $row = $first_image[0]; $probe_type = 'image'; $probe_id = $row['id']; } // If else, then we have no probe_type, and thus won't be able to show anything } } if (!is_null($row) && $row['validated'] == 0) { if (!has_specific_permission(get_member(), 'jump_to_unvalidated')) { access_denied('SPECIFIC_PERMISSION', 'jump_to_unvalidated'); } $warning_details = do_template('WARNING_TABLE', array('WARNING' => do_lang_tempcode(get_param_integer('redirected', 0) == 1 ? 'UNVALIDATED_TEXT_NON_DIRECT' : 'UNVALIDATED_TEXT'))); } else { $warning_details = new ocp_tempcode(); } switch ($probe_type) { case 'video': if (is_null($row)) { $map = array('cat' => $cat, 'id' => $probe_id); if (!has_specific_permission(get_member(), 'see_unvalidated')) { $map['validated'] = 1; } $rows = $GLOBALS['SITE_DB']->query_select('videos', array('*'), $map, '', 1); if (!array_key_exists(0, $rows)) { attach_message(do_lang_tempcode('MISSING_RESOURCE'), 'warn'); break; } $row = $rows[0]; } if (has_actual_page_access(NULL, 'cms_galleries', NULL, NULL) && has_edit_permission('mid', get_member(), $row['submitter'], 'cms_galleries', array('galleries', $cat))) { $entry_edit_url = build_url(array('page' => 'cms_galleries', 'type' => '_ev', 'id' => $row['id']), get_module_zone('cms_galleries')); } /*$view_url=build_url(array('page'=>'_SELF','type'=>'video','root'=>($root=='root')?NULL:$root,'wide'=>1,'id'=>$row['id']),'_SELF'); $thumb_url=$row['thumb_url']; if (($thumb_url!='') && (url_is_local($thumb_url))) $thumb_url=get_custom_base_url().'/'.$thumb_url; if ($thumb_url=='') $thumb_url=find_theme_image('na'); $thumb=do_image_thumb($thumb_url,'');*/ // Video HTML $thumb_url = $row['thumb_url']; $url = $row['url']; $video_player = show_gallery_media($url, $thumb_url, $row['video_width'], $row['video_height'], $row['video_length']); $view_url = build_url(array('page' => '_SELF', 'type' => 'video', 'id' => $row['id'], 'wide' => 1, 'days' => get_param('days', '') == '' ? NULL : get_param('days'), 'sort' => $sort == 'add_date DESC' ? NULL : $sort, 'select' => $image_select == '*' ? NULL : $image_select, 'video_select' => $video_select == '*' ? NULL : $video_select), '_SELF'); // Some extra variables relating to the currently selected entry $entry_title = get_translated_text($row['title']); $entry_rating_details = get_rating_box(get_self_url(true), $entry_title, 'videos', strval($row['id']), $row['allow_rating'] == 1, $row['submitter']); $entry_comment_details = get_comments('videos', $row['allow_comments'] == 1, strval($row['id']), false, get_value('comment_forum__videos'), NULL, NULL, false, false, $row['submitter'], $row['allow_comments'] == 2); $entry_trackback_details = get_trackbacks('videos', strval($row['id']), $row['allow_trackbacks'] == 1); $entry_add_date_raw = is_null($row['add_date']) ? '' : strval($row['add_date']); $entry_edit_date_raw = is_null($row['edit_date']) ? '' : strval($row['edit_date']); $entry_views = integer_format($row['video_views']); $current_entry = do_template('GALLERY_FLOWMODE_VIDEO', array('_GUID' => 'b6a795dc3853789df2a2951293d0fb26', '_TITLE' => get_translated_text($row['title']), 'EDIT_URL' => $entry_edit_url, 'MAIN' => true, 'RATING_DETAILS' => $entry_rating_details, 'DESCRIPTION' => get_translated_tempcode($row['comments']), 'CAT' => $cat, 'THUMB_URL' => $url, 'FULL_URL' => $full_url, 'ID' => strval($row['id']), 'VIEWS' => strval($row['video_views']), 'ADD_DATE_RAW' => strval($row['add_date']), 'EDIT_DATE_RAW' => is_null($row['edit_date']) ? '' : strval($row['edit_date']), 'SUBMITTER' => strval($row['submitter']), 'VIDEO_PLAYER' => $video_player, 'VIEW_URL' => $view_url, 'VIDEO_DETAILS' => show_video_details($row))); $GLOBALS['SITE_DB']->query_update('videos', array('video_views' => $row['video_views'] + 1), array('id' => $row['id']), '', 1, NULL, false, true); break; case 'image': if (is_null($row)) { $map = array('cat' => $cat, 'id' => $probe_id); if (!has_specific_permission(get_member(), 'see_unvalidated')) { $map['validated'] = 1; } $rows = $GLOBALS['SITE_DB']->query_select('images', array('*'), $map, '', 1); if (!array_key_exists(0, $rows)) { attach_message(do_lang_tempcode('MISSING_RESOURCE'), 'warn'); break; } $row = $rows[0]; } if (has_actual_page_access(NULL, 'cms_galleries', NULL, NULL) && has_edit_permission('mid', get_member(), $row['submitter'], 'cms_galleries', array('galleries', $cat))) { $entry_edit_url = build_url(array('page' => 'cms_galleries', 'type' => '_ed', 'id' => $row['id']), get_module_zone('cms_galleries')); } /*$view_url=build_url(array('page'=>'_SELF','type'=>'image','root'=>($root=='root')?NULL:$root,'wide'=>1,'id'=>$row['id']),'_SELF'); $thumb_url=ensure_thumbnail($row['url'],$row['thumb_url'],'galleries','images',$row['id']); $thumb=do_image_thumb($thumb_url,'');*/ $thumb_url = $row['url']; //do_image_thumb($row['url'],''); if (url_is_local($thumb_url)) { $file_size = file_exists(get_custom_file_base() . '/' . rawurldecode($thumb_url)) ? strval(filesize(get_custom_file_base() . '/' . rawurldecode($thumb_url))) : ''; $thumb_url = get_custom_base_url() . '/' . $thumb_url; } else { $file_size = ''; } $full_url = $thumb_url; $view_url = build_url(array('page' => '_SELF', 'type' => 'image', 'id' => $row['id'], 'wide' => 1, 'days' => get_param('days', '') == '' ? NULL : get_param('days'), 'sort' => $sort == 'add_date DESC' ? NULL : $sort, 'select' => $image_select == '*' ? NULL : $image_select, 'video_select' => $video_select == '*' ? NULL : $video_select), '_SELF'); // Some extra variables relatin to the currently selected entry $entry_title = get_translated_text($row['title']); $entry_rating_details = get_rating_box(get_self_url(true), $entry_title, 'images', strval($row['id']), $row['allow_rating'] == 1, $row['submitter']); $entry_comment_details = get_comments('images', $row['allow_comments'] == 1, strval($row['id']), false, get_value('comment_forum__images'), NULL, NULL, false, false, $row['submitter'], $row['allow_comments'] == 2); $entry_trackback_details = get_trackbacks('images', strval($row['id']), $row['allow_trackbacks'] == 1); $entry_add_date_raw = is_null($row['add_date']) ? '' : strval($row['add_date']); $entry_edit_date_raw = is_null($row['edit_date']) ? '' : strval($row['edit_date']); $entry_views = integer_format($row['image_views']); $current_entry = do_template('GALLERY_FLOWMODE_IMAGE', array('_GUID' => 'fd486cf9a3338bc277a7170a1961089b', '_TITLE' => get_translated_text($row['title']), 'EDIT_URL' => $entry_edit_url, 'MAIN' => true, 'RATING_DETAILS' => $entry_rating_details, 'DESCRIPTION' => get_translated_tempcode($row['comments']), 'FILE_SIZE' => $file_size, 'CAT' => $cat, 'THUMB_URL' => $thumb_url, 'FULL_URL' => $full_url, 'ID' => strval($row['id']), 'VIEWS' => strval($row['image_views']), 'ADD_DATE_RAW' => strval($row['add_date']), 'EDIT_DATE_RAW' => is_null($row['edit_date']) ? '' : strval($row['edit_date']), 'SUBMITTER' => strval($row['submitter']), 'THUMB' => $thumb_url, 'VIEW_URL' => $view_url)); $GLOBALS['SITE_DB']->query_update('images', array('image_views' => $row['image_views'] + 1), array('id' => $row['id']), '', 1, NULL, false, true); break; } $entries = new ocp_tempcode(); // Display entries $where = db_string_equal_to('cat', $cat); if (!has_specific_permission(get_member(), 'see_unvalidated')) { $where .= ' AND validated=1'; } if (get_param('days', '') != '') { $where .= ' AND add_date>' . strval(time() - get_param_integer('days') * 60 * 60 * 24); } $_max_entries = get_value('flow_mode_max'); if (is_null($_max_entries)) { $max_entries = 50; } else { $max_entries = intval($_max_entries); } $query_rows_videos = $GLOBALS['SITE_DB']->query('SELECT *' . $sql_suffix_videos . ' FROM ' . get_table_prefix() . 'videos r WHERE ' . $where . ' ORDER BY ' . $sort, $max_entries); $query_rows_images = $GLOBALS['SITE_DB']->query('SELECT *' . $sql_suffix_images . ' FROM ' . get_table_prefix() . 'images r WHERE ' . $where . ' ORDER BY ' . $sort, $max_entries); // See if there is a numbering system to sort by $all_are = NULL; foreach ($query_rows_images as $q) { $this_are = strtolower(preg_replace('#\\d#', '', $q['url'])); if (is_null($all_are)) { $all_are = $this_are; } if ($all_are != $this_are) { $all_are = NULL; break; } } if (!is_null($all_are)) { global $M_SORT_KEY; $M_SORT_KEY = mixed(); $M_SORT_KEY = 'url'; usort($query_rows_images, 'multi_sort'); } $query_rows = array_merge($query_rows_images, $query_rows_videos); foreach ($query_rows as $row) { $type = array_key_exists('video_length', $row) ? 'video' : 'image'; if ($type == $probe_type && $row['id'] == $probe_id) { continue; } $caption = get_translated_tempcode($row['comments']); $probe_url = build_url(array('page' => '_SELF', 'type' => 'misc', 'root' => $root == 'root' ? NULL : $root, 'id' => $cat, 'flow_mode_interface' => get_param_integer('flow_mode_interface', NULL), 'probe_type' => $type, 'probe_id' => $row['id'], 'days' => get_param('days', '') == '' ? NULL : get_param('days'), 'sort' => $sort == 'add_date DESC' ? NULL : $sort, 'select' => $image_select == '*' ? NULL : $image_select, 'video_select' => $video_select == '*' ? NULL : $video_select), '_SELF'); $view_url_2 = build_url(array('page' => '_SELF', 'wide' => 1, 'type' => $type, 'root' => $root == 'root' ? NULL : $root, 'id' => $row['id'], 'days' => get_param('days', '') == '' ? NULL : get_param('days'), 'sort' => $sort == 'add_date DESC' ? NULL : $sort, 'select' => $image_select == '*' ? NULL : $image_select, 'video_select' => $video_select == '*' ? NULL : $video_select), '_SELF'); if (array_key_exists('url', $row)) { $thumb_url = ensure_thumbnail($row['url'], $row['thumb_url'], 'galleries', 'images', $row['id']); } else { $thumb_url = $row['thumb_url']; if ($thumb_url == '') { $thumb_url = find_theme_image('na'); } if (url_is_local($thumb_url)) { $thumb_url = get_custom_base_url() . '/' . $thumb_url; } } $class = $type == $probe_type && $row['id'] == $probe_id ? 'currentimage' : ''; $thumb = do_image_thumb($thumb_url, $caption); $entries->attach(do_template('GALLERY_FLOW_ENTRY', array('_GUID' => 'ff75c904ba7fe857484874483ed65f5a', 'DESCRIPTION' => get_translated_tempcode($row['comments']), '_TITLE' => get_translated_text($row['title']), 'TYPE' => $type, 'ID' => strval($row['id']), 'VIEWS' => strval($row[$type . '_views']), 'ADD_DATE_RAW' => strval($row['add_date']), 'EDIT_DATE_RAW' => is_null($row['edit_date']) ? '' : strval($row['edit_date']), 'SUBMITTER' => strval($row['submitter']), 'CLASS' => $class, 'THUMB' => $thumb, 'VIEW_URL' => $probe_url, 'VIEW_URL_2' => $view_url_2))); } $member_id = get_member_id_from_gallery_name($cat, NULL, true); if (get_forum_type() == 'ocf') { require_code('ocf_members'); require_code('ocf_members2'); } $member_details = is_null($member_id) || get_forum_type() != 'ocf' ? new ocp_tempcode() : ocf_show_member_box($member_id); $rep_image_url = ''; if ($rep_image != '' && url_is_local($rep_image)) { $rep_image_url = get_custom_base_url() . '/' . $rep_image; } elseif ($rep_image != '') { $rep_image_url = $rep_image; } list(, , , $first_entry_id, , , $first_type) = $this->build_set_navigation(db_string_equal_to('cat', $cat), '', '', $probe_id, $root, $probe_type, get_param_integer('slideshow', 0), get_param_integer('wide_high', 0), $start, $max, $cat, $sort, $sort_backwards, $sql_suffix_images, $sql_suffix_videos, get_param('select', '*'), get_param('video_select', '*')); return do_template('GALLERY_FLOW_MODE_SCREEN', array('_GUID' => '73728cb94579f06ab487627101011d43', 'FIRST_ENTRY_ID' => is_null($first_entry_id) ? '' : $first_type . ':' . strval($first_entry_id), 'SORTING' => $sorting, '_TITLE' => $fullname, 'MEMBER_ID' => is_null($member_id) ? '' : strval($member_id), 'VIEW_URL' => $view_url, 'FULL_URL' => $full_url, 'PROBE_TYPE' => $probe_type, 'PROBE_ID' => is_null($probe_id) ? '' : strval($probe_id), 'ENTRY_TITLE' => $entry_title, 'ENTRY_DESCRIPTION' => $entry_description, 'ENTRY_SUBMITTER' => is_null($entry_submitter) ? '' : strval($entry_submitter), 'ENTRY_VIEWS' => $entry_views, 'ENTRY_ADD_DATE_RAW' => $entry_add_date_raw, 'ENTRY_EDIT_DATE_RAW' => $entry_edit_date_raw, 'ENTRY_TRACKBACK_DETAILS' => $entry_trackback_details, 'ENTRY_RATING_DETAILS' => $entry_rating_details, 'ENTRY_COMMENT_DETAILS' => $entry_comment_details, 'ENTRY_EDIT_URL' => $entry_edit_url, 'WARNING_DETAILS' => $warning_details, 'TAGS' => get_loaded_tags('galleries'), 'RATING_DETAILS' => $rating_details, 'COMMENT_DETAILS' => $comment_details, 'BROWSE' => $browse, 'REP_IMAGE_URL' => $rep_image_url, 'TITLE' => $title, 'MEMBER_DETAILS' => $member_details, 'DESCRIPTION' => $description, 'CHILDREN' => $children, 'CURRENT_ENTRY' => $current_entry, 'ENTRIES' => $entries, 'ADD_GALLERY_URL' => $add_gallery_url, 'EDIT_URL' => $edit_url, 'IMAGE_URL' => $submit_image_url, 'VIDEO_URL' => $submit_video_url, 'MAY_DOWNLOAD' => $may_download, 'CAT' => $cat)); }
/** * Main wrapper function to embed miscellaneous feedback systems into a module output. * * @param ID_TEXT The page name * @param ID_TEXT Content ID * @param BINARY Whether rating is allowed * @param integer Whether comments/reviews is allowed (reviews allowed=2) * @set 0 1 2 * @param BINARY Whether trackbacks are allowed * @param BINARY Whether the content is validated * @param ?MEMBER Content owner (NULL: none) * @param mixed URL to view the content * @param SHORT_TEXT Content title * @param ?string Forum to post comments in (NULL: site-wide default) * @return array Tuple: Rating details, Comment details, Trackback details */ function embed_feedback_systems($page_name, $content_id, $allow_rating, $allow_comments, $allow_trackbacks, $validated, $submitter, $content_url, $content_title, $forum) { // Sign up original poster for notifications if (get_forum_type() == 'ocf') { $auto_monitor_contrib_content = $GLOBALS['OCF_DRIVER']->get_member_row_field($submitter, 'm_auto_monitor_contrib_content'); if ($auto_monitor_contrib_content == 1) { $test = $GLOBALS['SITE_DB']->query_value_null_ok('notifications_enabled', 'l_setting', array('l_member_id' => $submitter, 'l_notification_code' => 'comment_posted', 'l_code_category' => $page_name . '_' . $content_id)); if (is_null($test)) { require_code('notifications'); enable_notifications('comment_posted', $page_name . '_' . $content_id, $submitter); } } } actualise_rating($allow_rating == 1, $page_name, $content_id, $content_url, $content_title); if (!is_null(post_param('title', NULL)) || $validated == 1) { actualise_post_comment($allow_comments >= 1, $page_name, $content_id, $content_url, $content_title, $forum); } //actualise_post_trackback($allow_trackbacks==1,$page_name,$content_id); $rating_details = get_rating_box($content_url, $content_title, $page_name, $content_id, $allow_rating == 1, $submitter); $comment_details = get_comments($page_name, $allow_comments == 1, $content_id, false, $forum, NULL, NULL, false, false, $submitter, $allow_comments == 2); $trackback_details = get_trackbacks($page_name, $content_id, $allow_trackbacks == 1); if (is_object($content_url)) { $content_url = $content_url->evaluate(); } $serialized_options = serialize(array($page_name, $content_id, $allow_comments, $submitter, $content_url, $content_title, $forum)); $hash = best_hash($serialized_options, get_site_salt()); // A little security, to ensure $serialized_options is not tampered with // AJAX support $comment_details->attach(do_template('COMMENT_AJAX_HANDLER', array('OPTIONS' => $serialized_options, 'HASH' => $hash))); return array($rating_details, $comment_details, $trackback_details); }