', cleanXml($context['message']), ' '; } /** * This defines the XML for the AJAX quote feature */ function template_quotefast() { global $context; echo '<', '?xml version="1.0" encoding="', $context['character_set'], '"?', '> ', cleanXml($context['quote']['xml']), ' '; } /** * This defines the XML for the inline edit feature */ function template_modifyfast() { global $context; echo '<', '?xml version="1.0" encoding="', $context['character_set'], '"?', '> '; } /** * The XML for handling things when you're done editing a post inline */ function template_modifydone() { global $context, $txt; echo '<', '?xml version="1.0" encoding="', $context['character_set'], '"?', '> '; if (empty($context['message']['errors'])) { // Build our string of info about when and why it was modified $modified = empty($context['message']['modified']['time']) ? '' : sprintf($txt['last_edit_by'], $context['message']['modified']['time'], $context['message']['modified']['name']); $modified .= empty($context['message']['modified']['reason']) ? '' : ' ' . sprintf($txt['last_edit_reason'], $context['message']['modified']['reason']); echo ' '; } else echo ' ', $context['message']['errors']), ']]>'; echo ' '; } /** * This handles things when editing a topic's subject from the messageindex. */ function template_modifytopicdone() { global $context, $txt; echo '<', '?xml version="1.0" encoding="', $context['character_set'], '"?', '> '; if (empty($context['message']['errors'])) { // Build our string of info about when and why it was modified $modified = empty($context['message']['modified']['time']) ? '' : sprintf($txt['last_edit_by'], $context['message']['modified']['time'], $context['message']['modified']['name']); $modified .= empty($context['message']['modified']['reason']) ? '' : sprintf($txt['last_edit_reason'], $context['message']['modified']['reason']); echo ' ' . $modified . ''), ']]>'; if (!empty($context['message']['subject'])) echo ' '; } else echo ' ', $context['message']['errors'])), ']]>'; echo ' '; } /** * The massive XML for previewing posts. */ function template_post() { global $context; echo '<', '?xml version="1.0" encoding="', $context['character_set'], '"?', '> '; if (!empty($context['post_error'])) foreach ($context['post_error'] as $message) echo ' '; echo ' ', isset($context['post_error']['no_message']) || isset($context['post_error']['long_message']) ? ' ' : '', ' ', isset($context['topic_last_message']) ? $context['topic_last_message'] : '0', ''; if (!empty($context['previous_posts'])) { echo ' '; foreach ($context['previous_posts'] as $post) echo ' ', $post['is_ignored'] ? '1' : '0', ' '; echo ' '; } echo ' '; } /** * All the XML for previewing a PM */ function template_pm() { global $context, $txt; // @todo something could be removed...otherwise it can be merged again with template_post echo '<', '?xml version="1.0" encoding="', $context['character_set'], '"?', '> '; if (!empty($context['post_error']['messages'])) foreach ($context['post_error']['messages'] as $message) echo ' '; echo ' ', isset($context['post_error']['no_message']) || isset($context['post_error']['long_message']) ? ' ' : '', ' '; echo ' '; } /** * The XML for previewing a warning */ function template_warning() { global $context; // @todo something could be removed...otherwise it can be merged again with template_post echo '<', '?xml version="1.0" encoding="', $context['character_set'], '"?', '> '; if (!empty($context['post_error']['messages'])) foreach ($context['post_error']['messages'] as $message) echo ' '; echo ' '; echo ' '; } /** * The XML for hiding/showing stats sections via AJAX */ function template_stats() { global $context, $modSettings; if (empty($context['yearly'])) return; echo '<', '?xml version="1.0" encoding="', $context['character_set'], '"?', '> '; foreach ($context['yearly'] as $year) foreach ($year['months'] as $month) { echo ' '; foreach ($month['days'] as $day) echo ' '; echo ' '; } echo ' '; } /** * The XML for selecting items to split */ function template_split() { global $context; echo '<', '?xml version="1.0" encoding="', $context['character_set'], '"?', '> '; foreach ($context['changes'] as $change) { if ($change['type'] == 'remove') echo ' '; else echo ' '; } echo ' '; } /** * This is just to hold off some errors if people are stupid. */ if (!function_exists('template_button_strip')) { function template_button_strip($button_strip, $direction = 'top', $strip_options = array()) { } function template_menu() { } function theme_linktree() { } } /** * XML for search results */ function template_results() { global $context, $txt; echo '<', '?xml version="1.0" encoding="', $context['character_set'], '"?', '> '; if (empty($context['topics'])) echo ' ', $txt['search_no_results'], ''; else { echo ' '; while ($topic = $context['get_topics']()) { echo ' ', $topic['id'], ' ', $topic['relevance'], ' ', $topic['board']['id'], ' ', cleanXml($topic['board']['name']), ' ', $topic['board']['href'], ' ', $topic['category']['id'], ' ', cleanXml($topic['category']['name']), ' ', $topic['category']['href'], ' '; foreach ($topic['matches'] as $message) { echo ' ', $message['id'], ' ', $message['timestamp'], ' ', $message['start'], ' ', $message['member']['id'], ' ', cleanXml($message['member']['name']), ' ', $message['member']['href'], ' '; } echo ' '; } echo ' '; } echo ' '; } /** * The XML for the Jump To box */ function template_jump_to() { global $context; echo '<', '?xml version="1.0" encoding="', $context['character_set'], '"?', '> '; foreach ($context['jump_to'] as $category) { echo ' '; foreach ($category['boards'] as $board) echo ' '; } echo ' '; } /** * The XML for displaying a column of message icons and selecting one via AJAX */ function template_message_icons() { global $context; echo '<', '?xml version="1.0" encoding="', $context['character_set'], '"?', '> '; foreach ($context['icons'] as $icon) echo ' '; echo ' '; } /** * The XML for instantly showing whether a username is valid on the registration page */ function template_check_username() { global $context; echo '<', '?xml version="1.0" encoding="', $context['character_set'], '"?', '> ', cleanXml($context['checked_username']), ' '; } /** * This prints XML in its most generic form. */ function template_generic_xml() { global $context; echo '<', '?xml version="1.0" encoding="', $context['character_set'], '"?', '>'; // Show the data. template_generic_xml_recursive($context['xml_data'], 'smf', '', -1); } /** * Recursive function for displaying generic XML data. * * @param array $xml_data An array of XML data * @param string $parent_ident The parent tag * @param string $child_ident The child tag * @param int $level How many levels to indent the code */ function template_generic_xml_recursive($xml_data, $parent_ident, $child_ident, $level) { // This is simply for neat indentation. $level++; echo "\n" . str_repeat("\t", $level), '<', $parent_ident, '>'; foreach ($xml_data as $key => $data) { // A group? if (is_array($data) && isset($data['identifier'])) template_generic_xml_recursive($data['children'], $key, $data['identifier'], $level); // An item... elseif (is_array($data) && isset($data['value'])) { echo "\n", str_repeat("\t", $level), '<', $child_ident; if (!empty($data['attributes'])) foreach ($data['attributes'] as $k => $v) echo ' ' . $k . '="' . $v . '"'; echo '>'; } } echo "\n", str_repeat("\t", $level), ''; } ?>