/** * Tries to ping a specific service showing as much as debug output as possible * @since 3.1.9 * @return null */ public function ShowPingResult() { check_admin_referer('sitemap'); if (!current_user_can("administrator")) { echo '<p>Please log in as admin</p>'; return; } $service = !empty($_GET["sm_ping_service"]) ? $_GET["sm_ping_service"] : null; $status = GoogleSitemapGeneratorStatus::Load(); if (!$status) { die("No build status yet. Write something first."); } $url = null; $services = $status->GetUsedPingServices(); if (!in_array($service, $services)) { die("Invalid service"); } $url = $status->GetPingUrl($service); if (empty($url)) { die("Invalid ping url"); } echo '<html><head><title>Ping Test</title>'; if (function_exists('wp_admin_css')) { wp_admin_css('css/global', true); } echo '</head><body><h1>Ping Test</h1>'; echo '<p>Trying to ping: <a href="' . $url . '">' . $url . '</a>. The sections below should give you an idea whats going on.</p>'; //Try to get as much as debug / error output as possible $errLevel = error_reporting(E_ALL); $errDisplay = ini_set("display_errors", 1); if (!defined('WP_DEBUG')) { define('WP_DEBUG', true); } echo '<h2>Errors, Warnings, Notices:</h2>'; if (WP_DEBUG == false) { echo "<i>WP_DEBUG was set to false somewhere before. You might not see all debug information until you remove this declaration!</i><br />"; } if (ini_get("display_errors") != 1) { echo "<i>Your display_errors setting currently prevents the plugin from showing errors here. Please check your webserver logfile instead.</i><br />"; } $res = $this->RemoteOpen($url); echo '<h2>Result (text only):</h2>'; echo wp_kses($res, array('a' => array('href' => array()), 'p' => array(), 'ul' => array(), 'ol' => array(), 'li' => array())); echo '<h2>Result (HTML):</h2>'; echo htmlspecialchars($res); //Revert back old values error_reporting($errLevel); ini_set("display_errors", $errDisplay); echo '</body></html>'; exit; }
/** * Displays the option page * * @since 3.0 * @access public * @author Arne Brachhold */ function HtmlShowOptionsPage() { global $wp_version; $this->sg->Initate(); //All output should go in this var which get printed at the end $message = ""; if (isset($_GET['sm_hidedonate'])) { $this->sg->SetOption('i_hide_donated', true); $this->sg->SaveOptions(); } if (isset($_GET['sm_donated'])) { $this->sg->SetOption('i_donated', true); $this->sg->SaveOptions(); } if (isset($_GET['sm_hide_note'])) { $this->sg->SetOption('i_hide_note', true); $this->sg->SaveOptions(); } if (isset($_GET['sm_hidedonors'])) { $this->sg->SetOption('i_hide_donors', true); $this->sg->SaveOptions(); } if (isset($_GET['sm_donated']) || $this->sg->GetOption('i_donated') === true && $this->sg->GetOption('i_hide_donated') !== true) { ?> <div class="updated"> <strong><p><?php _e('Thank you very much for your donation. You help me to continue support and development of this plugin and other free software!', 'sitemap'); ?> <a href="<?php echo $this->sg->GetBackLink() . "&sm_hidedonate=true"; ?> "><small style="font-weight:normal;"><?php _e('Hide this notice', 'sitemap'); ?> </small></a></p></strong> </div> <?php } else { if ($this->sg->GetOption('i_donated') !== true && $this->sg->GetOption('i_install_date') > 0 && $this->sg->GetOption('i_hide_note') !== true && time() > $this->sg->GetOption('i_install_date') + 60 * 60 * 24 * 30) { ?> <div class="updated"> <strong><p><?php echo str_replace("%s", $this->sg->GetRedirectLink("sitemap-donate-note"), __('Thanks for using this plugin! You\'ve installed this plugin over a month ago. If it works and your are satisfied with the results, isn\'t it worth at least one dollar? <a href="%s">Donations</a> help me to continue support and development of this <i>free</i> software! <a href="%s">Sure, no problem!</a>', 'sitemap')); ?> <a href="<?php echo $this->sg->GetBackLink() . "&sm_hide_note=true"; ?> " style="float:right; display:block; border:none;"><small style="font-weight:normal; "><?php _e('No thanks, please don\'t bug me anymore!', 'sitemap'); ?> </small></a></p></strong> <div style="clear:right;"></div> </div> <?php } } if (function_exists("wp_next_scheduled")) { $next = wp_next_scheduled('sm_build_cron'); if ($next) { $diff = (time() - $next) * -1; if ($diff <= 0) { $diffMsg = __('Your sitemap is being refreshed at the moment. Depending on your blog size this might take some time!', 'sitemap'); } else { $diffMsg = str_replace("%s", $diff, __('Your sitemap will be refreshed in %s seconds. Depending on your blog size this might take some time!', 'sitemap')); } ?> <div class="updated"> <strong><p><?php echo $diffMsg; ?> </p></strong> <div style="clear:right;"></div> </div> <?php } } if (!empty($_REQUEST["sm_rebuild"]) || !empty($_REQUEST["sm_rebuild"])) { //Clear any outstanding build cron jobs if (function_exists('wp_clear_scheduled_hook')) { wp_clear_scheduled_hook('sm_build_cron'); } } if (!empty($_REQUEST["sm_rebuild"])) { //Pressed Button: Rebuild Sitemap check_admin_referer('sitemap'); if (isset($_GET["sm_do_debug"]) && $_GET["sm_do_debug"] == "true") { //Check again, just for the case that something went wrong before if (!current_user_can("administrator")) { echo '<p>Please log in as admin</p>'; return; } $oldErr = error_reporting(E_ALL); $oldIni = ini_set("display_errors", 1); echo '<div class="wrap">'; echo '<h2>' . __('XML Sitemap Generator for WordPress', 'sitemap') . " " . $this->sg->GetVersion() . '</h2>'; echo '<p>This is the debug mode of the XML Sitemap Generator. It will show all PHP notices and warnings as well as the internal logs, messages and configuration.</p>'; echo '<p style="font-weight:bold; color:red; padding:5px; border:1px red solid; text-align:center;">DO NOT POST THIS INFORMATION ON PUBLIC PAGES LIKE SUPPORT FORUMS AS IT MAY CONTAIN PASSWORDS OR SECRET SERVER INFORMATION!</p>'; echo "<h3>WordPress and PHP Information</h3>"; echo '<p>WordPress ' . $GLOBALS['wp_version'] . ' with ' . ' DB ' . $GLOBALS['wp_db_version'] . ' on PHP ' . phpversion() . '</p>'; echo '<p>Plugin version: ' . $this->sg->GetVersion() . ' (' . $this->sg->_svnVersion . ')'; echo '<h4>Environment</h4>'; echo "<pre>"; $sc = $_SERVER; unset($sc["HTTP_COOKIE"]); print_r($sc); echo "</pre>"; echo "<h4>WordPress Config</h4>"; echo "<pre>"; $opts = array(); if (function_exists('wp_load_alloptions')) { $opts = wp_load_alloptions(); } else { global $wpdb; $os = $wpdb->get_results("SELECT option_name, option_value FROM {$wpdb->options}"); foreach ((array) $os as $o) { $opts[$o->option_name] = $o->option_value; } } $popts = array(); foreach ($opts as $k => $v) { //Try to filter out passwords etc... if (preg_match("/(pass|login|pw|secret|user|usr)/si", $v)) { continue; } $popts[$k] = htmlspecialchars($v); } print_r($popts); echo "</pre>"; echo '<h4>Sitemap Config</h4>'; echo "<pre>"; print_r($this->sg->_options); echo "</pre>"; echo '<h3>Errors, Warnings, Notices</h3>'; echo '<div>'; $status = $this->sg->BuildSitemap(); echo '</div>'; echo '<h3>MySQL Queries</h3>'; if (defined('SAVEQUERIES') && SAVEQUERIES) { echo '<pre>'; var_dump($GLOBALS['wpdb']->queries); echo '</pre>'; $total = 0; foreach ($GLOBALS['wpdb']->queries as $q) { $total += $q[1]; } echo '<h4>Total Query Time</h4>'; echo '<pre>' . count($GLOBALS['wpdb']->queries) . ' queries in ' . round($total, 2) . ' seconds.</pre>'; } else { echo '<p>Please edit wp-db.inc.php in wp-includes and set SAVEQUERIES to true if you want to see the queries.</p>'; } echo "<h3>Build Process Results</h3>"; echo "<pre>"; print_r($status); echo "</pre>"; echo '<p>Done. <a href="' . wp_nonce_url($this->sg->GetBackLink() . "&sm_rebuild=true&sm_do_debug=true", 'sitemap') . '">Rebuild</a> or <a href="' . $this->sg->GetBackLink() . '">Return</a></p>'; echo '<p style="font-weight:bold; color:red; padding:5px; border:1px red solid; text-align:center;">DO NOT POST THIS INFORMATION ON PUBLIC PAGES LIKE SUPPORT FORUMS AS IT MAY CONTAIN PASSWORDS OR SECRET SERVER INFORMATION!</p>'; echo '</div>'; @error_reporting($oldErr); @ini_set("display_errors", $oldIni); return; } else { $this->sg->BuildSitemap(); $redirURL = $this->sg->GetBackLink() . '&sm_fromrb=true'; //Redirect so the sm_rebuild GET parameter no longer exists. @header("location: " . $redirURL); //If there was already any other output, the header redirect will fail echo '<script type="text/javascript">location.replace("' . $redirUrl . '");</script>'; echo '<noscript><a href="' . $redirURL . '">Click here to continue</a></noscript>'; exit; } } else { if (!empty($_POST['sm_update'])) { //Pressed Button: Update Config check_admin_referer('sitemap'); if (isset($_POST['sm_b_style']) && $_POST['sm_b_style'] == $this->sg->getDefaultStyle()) { $_POST['sm_b_style_default'] = true; $_POST['sm_b_style'] = ''; } foreach ($this->sg->_options as $k => $v) { //Check vor values and convert them into their types, based on the category they are in if (!isset($_POST[$k])) { $_POST[$k] = ""; } // Empty string will get false on 2bool and 0 on 2float //Options of the category "Basic Settings" are boolean, except the filename and the autoprio provider if (substr($k, 0, 5) == "sm_b_") { if ($k == "sm_b_filename" || $k == "sm_b_fileurl_manual" || $k == "sm_b_filename_manual" || $k == "sm_b_prio_provider" || $k == "sm_b_manual_key" || $k == "sm_b_yahookey" || $k == "sm_b_style" || $k == "sm_b_memory") { if ($k == "sm_b_filename_manual" && strpos($_POST[$k], "\\") !== false) { $_POST[$k] = stripslashes($_POST[$k]); } $this->sg->_options[$k] = (string) $_POST[$k]; } else { if ($k == "sm_b_location_mode") { $tmp = (string) $_POST[$k]; $tmp = strtolower($tmp); if ($tmp == "auto" || ($tmp = "manual")) { $this->sg->_options[$k] = $tmp; } else { $this->sg->_options[$k] = "auto"; } } else { if ($k == "sm_b_time" || $k == "sm_b_max_posts") { if ($_POST[$k] == '') { $_POST[$k] = -1; } $this->sg->_options[$k] = intval($_POST[$k]); } else { if ($k == "sm_i_install_date") { if ($this->sg->GetOption('i_install_date') <= 0) { $this->sg->_options[$k] = time(); } } else { if ($k == "sm_b_exclude") { $IDss = array(); $IDs = explode(",", $_POST[$k]); for ($x = 0; $x < count($IDs); $x++) { $ID = intval(trim($IDs[$x])); if ($ID > 0) { $IDss[] = $ID; } } $this->sg->_options[$k] = $IDss; } else { if ($k == "sm_b_exclude_cats") { $exCats = array(); if (isset($_POST["post_category"])) { foreach ((array) $_POST["post_category"] as $vv) { if (!empty($vv) && is_numeric($vv)) { $exCats[] = intval($vv); } } } $this->sg->_options[$k] = $exCats; } else { $this->sg->_options[$k] = (bool) $_POST[$k]; } } } } } } //Options of the category "Includes" are boolean } else { if (substr($k, 0, 6) == "sm_in_") { $this->sg->_options[$k] = (bool) $_POST[$k]; //Options of the category "Change frequencies" are string } else { if (substr($k, 0, 6) == "sm_cf_") { $this->sg->_options[$k] = (string) $_POST[$k]; //Options of the category "Priorities" are float } else { if (substr($k, 0, 6) == "sm_pr_") { $this->sg->_options[$k] = (double) $_POST[$k]; } } } } } //No Mysql unbuffered query for WP < 2.2 if (floatval($wp_version) < 2.2) { $this->sg->SetOption('b_safemode', true); } //No Wp-Cron for WP < 2.1 if (floatval($wp_version) < 2.1) { $this->sg->SetOption('b_auto_delay', false); } //Apply page changes from POST $this->sg->_pages = $this->sg->HtmlApplyPages(); if ($this->sg->SaveOptions()) { $message .= __('Configuration updated', 'sitemap') . "<br />"; } else { $message .= __('Error while saving options', 'sitemap') . "<br />"; } if ($this->sg->SavePages()) { $message .= __("Pages saved", 'sitemap') . "<br />"; } else { $message .= __('Error while saving pages', 'sitemap') . "<br />"; } } else { if (!empty($_POST["sm_reset_config"])) { //Pressed Button: Reset Config check_admin_referer('sitemap'); $this->sg->InitOptions(); $this->sg->SaveOptions(); $message .= __('The default configuration was restored.', 'sitemap'); } } } //Print out the message to the user, if any if ($message != "") { ?> <div class="updated"><strong><p><?php echo $message; ?> </p></strong></div><?php } ?> <style type="text/css"> li.sm_hint { color:green; } li.sm_optimize { color:orange; } li.sm_error { color:red; } input.sm_warning:hover { background: #ce0000; color: #fff; } a.sm_button { padding:4px; display:block; padding-left:25px; background-repeat:no-repeat; background-position:5px 50%; text-decoration:none; border:none; } a.sm_button:hover { border-bottom-width:1px; } a.sm_donatePayPal { background-image:url(<?php echo $this->sg->GetPluginUrl(); ?> img/icon-paypal.gif); } a.sm_donateAmazon { background-image:url(<?php echo $this->sg->GetPluginUrl(); ?> img/icon-amazon.gif); } a.sm_pluginHome { background-image:url(<?php echo $this->sg->GetPluginUrl(); ?> img/icon-arne.gif); } a.sm_pluginList { background-image:url(<?php echo $this->sg->GetPluginUrl(); ?> img/icon-email.gif); } a.sm_pluginSupport { background-image:url(<?php echo $this->sg->GetPluginUrl(); ?> img/icon-wordpress.gif); } a.sm_pluginBugs { background-image:url(<?php echo $this->sg->GetPluginUrl(); ?> img/icon-trac.gif); } a.sm_resGoogle { background-image:url(<?php echo $this->sg->GetPluginUrl(); ?> img/icon-google.gif); } a.sm_resYahoo { background-image:url(<?php echo $this->sg->GetPluginUrl(); ?> img/icon-yahoo.gif); } a.sm_resBing { background-image:url(<?php echo $this->sg->GetPluginUrl(); ?> img/icon-bing.gif); } div.sm-update-nag p { margin:5px; } </style> <?php if ($this->mode == 27) { ?> <style type="text/css"> .sm-padded .inside { margin:12px!important; } .sm-padded .inside ul { margin:6px 0 12px 0; } .sm-padded .inside input { padding:1px; margin:0; } </style> <?php } elseif (version_compare($wp_version, "2.5", ">=")) { ?> <style type="text/css"> div#moremeta { float:right; width:200px; margin-left:10px; } div#advancedstuff { width:770px; } div#poststuff { margin-top:10px; } fieldset.dbx-box { margin-bottom:5px; } div.sm-update-nag { margin-top:10px!important; } </style> <!--[if lt IE 7]> <style type="text/css"> div#advancedstuff { width:735px; } </style> <![endif]--> <?php } else { ?> <style type="text/css"> div.updated-message { margin-left:0; margin-right:0; } </style> <?php } ?> <div class="wrap" id="sm_div"> <form method="post" action="<?php echo $this->sg->GetBackLink(); ?> "> <h2><?php _e('XML Sitemap Generator for WordPress', 'sitemap'); echo " " . $this->sg->GetVersion(); ?> </h2> <?php if (function_exists("wp_update_plugins") && (!defined('SM_NO_UPDATE') || SM_NO_UPDATE == false)) { wp_update_plugins(); $file = GoogleSitemapGeneratorLoader::GetBaseName(); $plugin_data = get_plugin_data(GoogleSitemapGeneratorLoader::GetPluginFile()); $current = get_option('update_plugins'); if (isset($current->response[$file])) { $r = $current->response[$file]; ?> <div id="update-nag" class="sm-update-nag"><?php if (!current_user_can('edit_plugins') || version_compare($wp_version, "2.5", "<")) { printf(__('There is a new version of %1$s available. <a href="%2$s">Download version %3$s here</a>.', 'default'), $plugin_data['Name'], $r->url, $r->new_version); } else { if (empty($r->package)) { printf(__('There is a new version of %1$s available. <a href="%2$s">Download version %3$s here</a> <em>automatic upgrade unavailable for this plugin</em>.', 'default'), $plugin_data['Name'], $r->url, $r->new_version); } else { printf(__('There is a new version of %1$s available. <a href="%2$s">Download version %3$s here</a> or <a href="%4$s">upgrade automatically</a>.', 'default'), $plugin_data['Name'], $r->url, $r->new_version, wp_nonce_url("update.php?action=upgrade-plugin&plugin={$file}", 'upgrade-plugin_' . $file)); } } ?> </div><?php } } ?> <?php if (version_compare($wp_version, "2.5", "<")) { ?> <script type="text/javascript" src="../wp-includes/js/dbx.js"></script> <script type="text/javascript"> //<![CDATA[ addLoadEvent( function() { var manager = new dbxManager('sm_sitemap_meta_33'); //create new docking boxes group var meta = new dbxGroup( 'grabit', // container ID [/-_a-zA-Z0-9/] 'vertical', // orientation ['vertical'|'horizontal'] '10', // drag threshold ['n' pixels] 'no', // restrict drag movement to container axis ['yes'|'no'] '10', // animate re-ordering [frames per transition, or '0' for no effect] 'yes', // include open/close toggle buttons ['yes'|'no'] 'open', // default state ['open'|'closed'] <?php echo "'" . js_escape(__('open')); ?> ', // word for "open", as in "open this box" <?php echo "'" . js_escape(__('close')); ?> ', // word for "close", as in "close this box" <?php echo "'" . js_escape(__('click-down and drag to move this box')); ?> ', // sentence for "move this box" by mouse <?php echo "'" . js_escape(__('click to %toggle% this box')); ?> ', // pattern-match sentence for "(open|close) this box" by mouse <?php echo "'" . js_escape(__('use the arrow keys to move this box')); ?> ', // sentence for "move this box" by keyboard <?php echo "'" . js_escape(__(', or press the enter key to %toggle% it')); ?> ', // pattern-match sentence-fragment for "(open|close) this box" by keyboard '%mytitle% [%dbxtitle%]' // pattern-match syntax for title-attribute conflicts ); var advanced = new dbxGroup( 'advancedstuff', // container ID [/-_a-zA-Z0-9/] 'vertical', // orientation ['vertical'|'horizontal'] '10', // drag threshold ['n' pixels] 'yes', // restrict drag movement to container axis ['yes'|'no'] '10', // animate re-ordering [frames per transition, or '0' for no effect] 'yes', // include open/close toggle buttons ['yes'|'no'] 'open', // default state ['open'|'closed'] <?php echo "'" . js_escape(__('open')); ?> ', // word for "open", as in "open this box" <?php echo "'" . js_escape(__('close')); ?> ', // word for "close", as in "close this box" <?php echo "'" . js_escape(__('click-down and drag to move this box')); ?> ', // sentence for "move this box" by mouse <?php echo "'" . js_escape(__('click to %toggle% this box')); ?> ', // pattern-match sentence for "(open|close) this box" by mouse <?php echo "'" . js_escape(__('use the arrow keys to move this box')); ?> ', // sentence for "move this box" by keyboard <?php echo "'" . js_escape(__(', or press the enter key to %toggle% it')); ?> ', // pattern-match sentence-fragment for "(open|close) this box" by keyboard '%mytitle% [%dbxtitle%]' // pattern-match syntax for title-attribute conflicts ); }); //]]> </script> <?php } ?> <?php if ($this->mode == 27) { ?> <div id="poststuff" class="metabox-holder has-right-sidebar"> <div class="inner-sidebar"> <div id="side-sortables" class="meta-box-sortabless ui-sortable" style="position:relative;"> <?php } else { ?> <div id="poststuff"> <div id="moremeta"> <div id="grabit" class="dbx-group"> <?php } ?> <?php $this->HtmlPrintBoxHeader('sm_pnres', __('About this Plugin:', 'sitemap'), true); ?> <a class="sm_button sm_pluginHome" href="<?php echo $this->sg->GetRedirectLink('sitemap-home'); ?> "><?php _e('Plugin Homepage', 'sitemap'); ?> </a> <a class="sm_button sm_pluginHome" href="<?php echo $this->sg->GetRedirectLink('sitemap-feedback'); ?> "><?php _e('Suggest a Feature', 'sitemap'); ?> </a> <a class="sm_button sm_pluginList" href="<?php echo $this->sg->GetRedirectLink('sitemap-list'); ?> "><?php _e('Notify List', 'sitemap'); ?> </a> <a class="sm_button sm_pluginSupport" href="<?php echo $this->sg->GetRedirectLink('sitemap-support'); ?> "><?php _e('Support Forum', 'sitemap'); ?> </a> <a class="sm_button sm_pluginBugs" href="<?php echo $this->sg->GetRedirectLink('sitemap-bugs'); ?> "><?php _e('Report a Bug', 'sitemap'); ?> </a> <a class="sm_button sm_donatePayPal" href="<?php echo $this->sg->GetRedirectLink('sitemap-paypal'); ?> "><?php _e('Donate with PayPal', 'sitemap'); ?> </a> <a class="sm_button sm_donateAmazon" href="<?php echo $this->sg->GetRedirectLink('sitemap-amazon'); ?> "><?php _e('My Amazon Wish List', 'sitemap'); ?> </a> <?php if (__('translator_name', 'sitemap') != 'translator_name') { ?> <a class="sm_button sm_pluginSupport" href="<?php _e('translator_url', 'sitemap'); ?> "><?php _e('translator_name', 'sitemap'); ?> </a><?php } ?> <?php $this->HtmlPrintBoxFooter(true); ?> <?php $this->HtmlPrintBoxHeader('sm_smres', __('Sitemap Resources:', 'sitemap'), true); ?> <a class="sm_button sm_resGoogle" href="<?php echo $this->sg->GetRedirectLink('sitemap-gwt'); ?> "><?php _e('Webmaster Tools', 'sitemap'); ?> </a> <a class="sm_button sm_resGoogle" href="<?php echo $this->sg->GetRedirectLink('sitemap-gwb'); ?> "><?php _e('Webmaster Blog', 'sitemap'); ?> </a> <a class="sm_button sm_resYahoo" href="<?php echo $this->sg->GetRedirectLink('sitemap-yse'); ?> "><?php _e('Site Explorer', 'sitemap'); ?> </a> <a class="sm_button sm_resYahoo" href="<?php echo $this->sg->GetRedirectLink('sitemap-ywb'); ?> "><?php _e('Search Blog', 'sitemap'); ?> </a> <a class="sm_button sm_resBing" href="<?php echo $this->sg->GetRedirectLink('sitemap-lwt'); ?> "><?php _e('Webmaster Tools', 'sitemap'); ?> </a> <a class="sm_button sm_resBing" href="<?php echo $this->sg->GetRedirectLink('sitemap-lswcb'); ?> "><?php _e('Webmaster Center Blog', 'sitemap'); ?> </a> <br /> <a class="sm_button sm_resGoogle" href="<?php echo $this->sg->GetRedirectLink('sitemap-prot'); ?> "><?php _e('Sitemaps Protocol', 'sitemap'); ?> </a> <a class="sm_button sm_resGoogle" href="<?php echo $this->sg->GetRedirectLink('sitemap-ofaq'); ?> "><?php _e('Official Sitemaps FAQ', 'sitemap'); ?> </a> <a class="sm_button sm_pluginHome" href="<?php echo $this->sg->GetRedirectLink('sitemap-afaq'); ?> "><?php _e('My Sitemaps FAQ', 'sitemap'); ?> </a> <?php $this->HtmlPrintBoxFooter(true); ?> <?php $this->HtmlPrintBoxHeader('dm_donations', __('Recent Donations:', 'sitemap'), true); ?> <?php if ($this->sg->GetOption('i_hide_donors') !== true) { ?> <iframe border="0" frameborder="0" scrolling="no" allowtransparency="yes" style="width:100%; height:80px;" src="<?php echo $this->sg->GetRedirectLink('sitemap-donorlist'); ?> "> <?php _e('List of the donors', 'sitemap'); ?> </iframe><br /> <a href="<?php echo $this->sg->GetBackLink() . "&sm_hidedonors=true"; ?> "><small><?php _e('Hide this list', 'sitemap'); ?> </small></a><br /><br /> <?php } ?> <a style="float:left; margin-right:5px; border:none;" href="javascript:document.getElementById('sm_donate_form').submit();"><img style="vertical-align:middle; border:none; margin-top:2px;" src="<?php echo $this->sg->GetPluginUrl(); ?> img/icon-donate.gif" border="0" alt="PayPal" title="Help me to continue support of this plugin :)" /></a> <span><small><?php _e('Thanks for your support!', 'sitemap'); ?> </small></span> <div style="clear:left; height:1px;"></div> <?php $this->HtmlPrintBoxFooter(true); ?> </div> </div> <?php if ($this->mode == 27) { ?> <div class="has-sidebar sm-padded" > <div id="post-body-content" class="has-sidebar-content"> <div class="meta-box-sortabless"> <?php } else { ?> <div id="advancedstuff" class="dbx-group" > <?php } ?> <!-- Rebuild Area --> <?php $this->HtmlPrintBoxHeader('sm_rebuild', __('Status', 'sitemap')); ?> <ul> <?php //#type $status GoogleSitemapGeneratorStatus $status = GoogleSitemapGeneratorStatus::Load(); if ($status == null) { echo "<li>" . str_replace("%s", wp_nonce_url($this->sg->GetBackLink() . "&sm_rebuild=true", 'sitemap'), __('The sitemap wasn\'t built yet. <a href="%s">Click here</a> to build it the first time.', 'sitemap')) . "</li>"; } else { if ($status->_endTime !== 0) { if ($status->_usedXml) { if ($status->_xmlSuccess) { $ft = filemtime($status->_xmlPath); echo "<li>" . str_replace("%url%", $status->_xmlUrl, str_replace("%date%", date(get_option('date_format'), $ft) . " " . date(get_option('time_format'), $ft), __("Your <a href=\"%url%\">sitemap</a> was last built on <b>%date%</b>.", 'sitemap'))) . "</li>"; } else { echo "<li class=\"sm_error\">" . str_replace("%url%", $this->sg->GetRedirectLink('sitemap-help-files'), __("There was a problem writing your sitemap file. Make sure the file exists and is writable. <a href=\"%url%\">Learn more</a", 'sitemap')) . "</li>"; } } if ($status->_usedZip) { if ($status->_zipSuccess) { $ft = filemtime($status->_zipPath); echo "<li>" . str_replace("%url%", $status->_zipUrl, str_replace("%date%", date(get_option('date_format'), $ft) . " " . date(get_option('time_format'), $ft), __("Your sitemap (<a href=\"%url%\">zipped</a>) was last built on <b>%date%</b>.", 'sitemap'))) . "</li>"; } else { echo "<li class=\"sm_error\">" . str_replace("%url%", $this->sg->GetRedirectLink('sitemap-help-files'), __("There was a problem writing your zipped sitemap file. Make sure the file exists and is writable. <a href=\"%url%\">Learn more</a", 'sitemap')) . "</li>"; } } if ($status->_usedGoogle) { if ($status->_gooogleSuccess) { echo "<li>" . __("Google was <b>successfully notified</b> about changes.", 'sitemap') . "</li>"; $gt = $status->GetGoogleTime(); if ($gt > 4) { echo "<li class=\\sm_optimize\">" . str_replace("%time%", $gt, __("It took %time% seconds to notify Google, maybe you want to disable this feature to reduce the building time.", 'sitemap')) . "</li>"; } } else { echo "<li class=\"sm_error\">" . str_replace("%s", $status->_googleUrl, __('There was a problem while notifying Google. <a href="%s">View result</a>', 'sitemap')) . "</li>"; } } if ($status->_usedYahoo) { if ($status->_yahooSuccess) { echo "<li>" . __("YAHOO was <b>successfully notified</b> about changes.", 'sitemap') . "</li>"; $yt = $status->GetYahooTime(); if ($yt > 4) { echo "<li class=\\sm_optimize\">" . str_replace("%time%", $yt, __("It took %time% seconds to notify YAHOO, maybe you want to disable this feature to reduce the building time.", 'sitemap')) . "</li>"; } } else { echo "<li class=\"sm_error\">" . str_replace("%s", $status->_yahooUrl, __('There was a problem while notifying YAHOO. <a href="%s">View result</a>', 'sitemap')) . "</li>"; } } if ($status->_usedMsn) { if ($status->_msnSuccess) { echo "<li>" . __("Bing was <b>successfully notified</b> about changes.", 'sitemap') . "</li>"; $at = $status->GetMsnTime(); if ($at > 4) { echo "<li class=\\sm_optimize\">" . str_replace("%time%", $at, __("It took %time% seconds to notify Bing, maybe you want to disable this feature to reduce the building time.", 'sitemap')) . "</li>"; } } else { echo "<li class=\"sm_error\">" . str_replace("%s", $status->_msnUrl, __('There was a problem while notifying Bing. <a href="%s">View result</a>', 'sitemap')) . "</li>"; } } if ($status->_usedAsk) { if ($status->_askSuccess) { echo "<li>" . __("Ask.com was <b>successfully notified</b> about changes.", 'sitemap') . "</li>"; $at = $status->GetAskTime(); if ($at > 4) { echo "<li class=\\sm_optimize\">" . str_replace("%time%", $at, __("It took %time% seconds to notify Ask.com, maybe you want to disable this feature to reduce the building time.", 'sitemap')) . "</li>"; } } else { echo "<li class=\"sm_error\">" . str_replace("%s", $status->_askUrl, __('There was a problem while notifying Ask.com. <a href="%s">View result</a>', 'sitemap')) . "</li>"; } } $et = $status->GetTime(); $mem = $status->GetMemoryUsage(); if ($mem > 0) { echo "<li>" . str_replace(array("%time%", "%memory%"), array($et, $mem), __("The building process took about <b>%time% seconds</b> to complete and used %memory% MB of memory.", 'sitemap')) . "</li>"; } else { echo "<li>" . str_replace("%time%", $et, __("The building process took about <b>%time% seconds</b> to complete.", 'sitemap')) . "</li>"; } if (!$status->_hasChanged) { echo "<li>" . __("The content of your sitemap <strong>didn't change</strong> since the last time so the files were not written and no search engine was pinged.", 'sitemap') . "</li>"; } } else { if ($this->sg->GetOption("b_auto_delay")) { $st = ($status->GetStartTime() - time()) * -1; //If the building process runs in background and was started within the last 45 seconds, the sitemap might not be completed yet... if ($st < 45) { echo '<li class="">' . __("The building process might still be active! Reload the page in a few seconds and check if something has changed.", 'sitemap') . '</li>'; } } echo '<li class="sm_error">' . str_replace("%url%", $this->sg->GetRedirectLink('sitemap-help-memtime'), __("The last run didn't finish! Maybe you can raise the memory or time limit for PHP scripts. <a href=\"%url%\">Learn more</a>", 'sitemap')) . '</li>'; if ($status->_memoryUsage > 0) { echo '<li class="sm_error">' . str_replace(array("%memused%", "%memlimit%"), array($status->GetMemoryUsage(), ini_get('memory_limit')), __("The last known memory usage of the script was %memused%MB, the limit of your server is %memlimit%.", 'sitemap')) . '</li>'; } if ($status->_lastTime > 0) { echo '<li class="sm_error">' . str_replace(array("%timeused%", "%timelimit%"), array($status->GetLastTime(), ini_get('max_execution_time')), __("The last known execution time of the script was %timeused% seconds, the limit of your server is %timelimit% seconds.", 'sitemap')) . '</li>'; } if ($status->GetLastPost() > 0) { echo '<li class="sm_optimize">' . str_replace("%lastpost%", $status->GetLastPost(), __("The script stopped around post number %lastpost% (+/- 100)", 'sitemap')) . '</li>'; } } echo "<li>" . str_replace("%s", wp_nonce_url($this->sg->GetBackLink() . "&sm_rebuild=true&noheader=true", 'sitemap'), __('If you changed something on your server or blog, you should <a href="%s">rebuild the sitemap</a> manually.', 'sitemap')) . "</li>"; } echo "<li>" . str_replace("%d", wp_nonce_url($this->sg->GetBackLink() . "&sm_rebuild=true&sm_do_debug=true", 'sitemap'), __('If you encounter any problems with the build process you can use the <a href="%d">debug function</a> to get more information.', 'sitemap')) . "</li>"; ?> </ul> <?php $this->HtmlPrintBoxFooter(); ?> <!-- Basic Options --> <?php $this->HtmlPrintBoxHeader('sm_basic_options', __('Basic Options', 'sitemap')); ?> <b><?php _e('Sitemap files:', 'sitemap'); ?> </b> <a href="<?php echo $this->sg->GetRedirectLink('sitemap-help-options-files'); ?> "><?php _e('Learn more', 'sitemap'); ?> </a> <ul> <li> <label for="sm_b_xml"> <input type="checkbox" id="sm_b_xml" name="sm_b_xml" <?php echo $this->sg->GetOption("b_xml") == true ? "checked=\"checked\"" : ""; ?> /> <?php _e('Write a normal XML file (your filename)', 'sitemap'); ?> </label> </li> <li> <label for="sm_b_gzip"> <input type="checkbox" id="sm_b_gzip" name="sm_b_gzip" <?php if (function_exists("gzencode")) { echo $this->sg->GetOption("b_gzip") == true ? "checked=\"checked\"" : ""; } else { echo "disabled=\"disabled\""; } ?> /> <?php _e('Write a gzipped file (your filename + .gz)', 'sitemap'); ?> </label> </li> </ul> <b><?php _e('Building mode:', 'sitemap'); ?> </b> <a href="<?php echo $this->sg->GetRedirectLink('sitemap-help-options-process'); ?> "><?php _e('Learn more', 'sitemap'); ?> </a> <ul> <li> <label for="sm_b_auto_enabled"> <input type="checkbox" id="sm_b_auto_enabled" name="sm_b_auto_enabled" <?php echo $this->sg->GetOption("b_auto_enabled") == true ? "checked=\"checked\"" : ""; ?> /> <?php _e('Rebuild sitemap if you change the content of your blog', 'sitemap'); ?> </label> </li> <li> <label for="sm_b_manual_enabled"> <input type="hidden" name="sm_b_manual_key" value="<?php echo $this->sg->GetOption("b_manual_key"); ?> " /> <input type="checkbox" id="sm_b_manual_enabled" name="sm_b_manual_enabled" <?php echo $this->sg->GetOption("b_manual_enabled") == true ? "checked=\"checked\"" : ""; ?> /> <?php _e('Enable manual sitemap building via GET Request', 'sitemap'); ?> </label> <a href="javascript:void(document.getElementById('sm_manual_help').style.display='');">[?]</a> <span id="sm_manual_help" style="display:none;"><br /> <?php echo str_replace("%1", trailingslashit(get_bloginfo('siteurl')) . "?sm_command=build&sm_key=" . $this->sg->GetOption("b_manual_key"), __('This will allow you to refresh your sitemap if an external tool wrote into the WordPress database without using the WordPress API. Use the following URL to start the process: <a href="%1">%1</a> Please check the logfile above to see if sitemap was successfully built.', 'sitemap')); ?> </span> </li> </ul> <b><?php _e('Update notification:', 'sitemap'); ?> </b> <a href="<?php echo $this->sg->GetRedirectLink('sitemap-help-options-ping'); ?> "><?php _e('Learn more', 'sitemap'); ?> </a> <ul> <li> <input type="checkbox" id="sm_b_ping" name="sm_b_ping" <?php echo $this->sg->GetOption("b_ping") == true ? "checked=\"checked\"" : ""; ?> /> <label for="sm_b_ping"><?php _e('Notify Google about updates of your Blog', 'sitemap'); ?> </label><br /> <small><?php echo str_replace("%s", $this->sg->GetRedirectLink('sitemap-gwt'), __('No registration required, but you can join the <a href="%s">Google Webmaster Tools</a> to check crawling statistics.', 'sitemap')); ?> </small> </li> <li> <input type="checkbox" id="sm_b_pingmsn" name="sm_b_pingmsn" <?php echo $this->sg->GetOption("b_pingmsn") == true ? "checked=\"checked\"" : ""; ?> /> <label for="sm_b_pingmsn"><?php _e('Notify Bing (formerly MSN Live Search) about updates of your Blog', 'sitemap'); ?> </label><br /> <small><?php echo str_replace("%s", $this->sg->GetRedirectLink('sitemap-lwt'), __('No registration required, but you can join the <a href="%s">Bing Webmaster Tools</a> to check crawling statistics.', 'sitemap')); ?> </small> </li> <li> <input type="checkbox" id="sm_b_pingask" name="sm_b_pingask" <?php echo $this->sg->GetOption("b_pingask") == true ? "checked=\"checked\"" : ""; ?> /> <label for="sm_b_pingask"><?php _e('Notify Ask.com about updates of your Blog', 'sitemap'); ?> </label><br /> <small><?php _e('No registration required.', 'sitemap'); ?> </small> </li> <li> <input type="checkbox" id="sm_b_pingyahoo" name="sm_b_pingyahoo" <?php echo $this->sg->GetOption("b_pingyahoo") == true ? "checked=\"checked\"" : ""; ?> /> <label for="sm_b_pingyahoo"><?php _e('Notify YAHOO about updates of your Blog', 'sitemap'); ?> </label><br /> <label for="sm_b_yahookey"><?php _e('Your Application ID:', 'sitemap'); ?> <input type="text" name="sm_b_yahookey" id="sm_b_yahookey" value="<?php echo $this->sg->GetOption("b_yahookey"); ?> " /></label><br /> <small><?php echo str_replace(array("%s1", "%s2"), array($this->sg->GetRedirectLink('sitemap-ykr'), ' (<a href="http://developer.yahoo.net/about/">Web Services by Yahoo!</a>)'), __('Don\'t you have such a key? <a href="%s1">Request one here</a>! %s2', 'sitemap')); ?> </small> </li> <li> <label for="sm_b_robots"> <input type="checkbox" id="sm_b_robots" name="sm_b_robots" <?php echo $this->sg->GetOption("b_robots") == true ? "checked=\"checked\"" : ""; ?> /> <?php _e("Add sitemap URL to the virtual robots.txt file.", 'sitemap'); ?> </label> <br /> <small><?php _e('The virtual robots.txt generated by WordPress is used. A real robots.txt file must NOT exist in the blog directory!', 'sitemap'); ?> </small> </li> </ul> <b><?php _e('Advanced options:', 'sitemap'); ?> </b> <a href="<?php echo $this->sg->GetRedirectLink('sitemap-help-options-adv'); ?> "><?php _e('Learn more', 'sitemap'); ?> </a> <ul> <li> <label for="sm_b_max_posts"><?php _e('Limit the number of posts in the sitemap:', 'sitemap'); ?> <input type="text" name="sm_b_max_posts" id="sm_b_max_posts" style="width:40px;" value="<?php echo $this->sg->GetOption("b_max_posts") <= 0 ? "" : $this->sg->GetOption("b_max_posts"); ?> " /></label> (<?php echo __('Newer posts will be included first', 'sitemap'); ?> ) </li> <li> <label for="sm_b_memory"><?php _e('Try to increase the memory limit to:', 'sitemap'); ?> <input type="text" name="sm_b_memory" id="sm_b_memory" style="width:40px;" value="<?php echo $this->sg->GetOption("b_memory"); ?> " /></label> (<?php echo htmlspecialchars(__('e.g. "4M", "16M"', 'sitemap')); ?> ) </li> <li> <label for="sm_b_time"><?php _e('Try to increase the execution time limit to:', 'sitemap'); ?> <input type="text" name="sm_b_time" id="sm_b_time" style="width:40px;" value="<?php echo $this->sg->GetOption("b_time") === -1 ? '' : $this->sg->GetOption("b_time"); ?> " /></label> (<?php echo htmlspecialchars(__('in seconds, e.g. "60" or "0" for unlimited', 'sitemap')); ?> ) </li> <li> <?php $useDefStyle = $this->sg->GetDefaultStyle() && $this->sg->GetOption('b_style_default') === true; ?> <label for="sm_b_style"><?php _e('Include a XSLT stylesheet:', 'sitemap'); ?> <input <?php echo $useDefStyle ? 'disabled="disabled" ' : ''; ?> type="text" name="sm_b_style" id="sm_b_style" value="<?php echo $this->sg->GetOption("b_style"); ?> " /></label> (<?php _e('Full or relative URL to your .xsl file', 'sitemap'); ?> ) <?php if ($this->sg->GetDefaultStyle()) { ?> <label for="sm_b_style_default"><input <?php echo $useDefStyle ? 'checked="checked" ' : ''; ?> type="checkbox" id="sm_b_style_default" name="sm_b_style_default" onclick="document.getElementById('sm_b_style').disabled = this.checked;" /> <?php _e('Use default', 'sitemap'); ?> <?php } ?> </li> <li> <label for="sm_b_safemode"> <?php $forceSafeMode = floatval($wp_version) < 2.2; ?> <input type="checkbox" <?php if ($forceSafeMode) { ?> disabled="disabled"<?php } ?> id="sm_b_safemode" name="sm_b_safemode" <?php echo $this->sg->GetOption("b_safemode") == true || $forceSafeMode ? "checked=\"checked\"" : ""; ?> /> <?php _e('Enable MySQL standard mode. Use this only if you\'re getting MySQL errors. (Needs much more memory!)', 'sitemap'); ?> <?php if ($forceSafeMode) { ?> <br /><small><?php _e("Upgrade WordPress at least to 2.2 to enable the faster MySQL access", 'sitemap'); ?> </small><?php } ?> </label> </li> <li> <label for="sm_b_auto_delay"> <?php $forceDirect = floatval($wp_version) < 2.1; ?> <input type="checkbox" <?php if ($forceDirect) { ?> disabled="disabled"<?php } ?> id="sm_b_auto_delay" name="sm_b_auto_delay" <?php echo $this->sg->GetOption("b_auto_delay") == true && !$forceDirect ? "checked=\"checked\"" : ""; ?> /> <?php _e('Build the sitemap in a background process (You don\'t have to wait when you save a post)', 'sitemap'); ?> <?php if ($forceDirect) { ?> <br /><small><?php _e("Upgrade WordPress at least to 2.1 to enable background building", 'sitemap'); ?> </small><?php } ?> </label> </li> </ul> <?php $this->HtmlPrintBoxFooter(); ?> <?php $this->HtmlPrintBoxHeader('sm_pages', __('Additional pages', 'sitemap')); ?> <?php _e('Here you can specify files or URLs which should be included in the sitemap, but do not belong to your Blog/WordPress.<br />For example, if your domain is www.foo.com and your blog is located on www.foo.com/blog you might want to include your homepage at www.foo.com', 'sitemap'); echo "<ul><li>"; echo "<strong>" . __('Note', 'sitemap') . "</strong>: "; _e("If your blog is in a subdirectory and you want to add pages which are NOT in the blog directory or beneath, you MUST place your sitemap file in the root directory (Look at the "Location of your sitemap file" section on this page)!", 'sitemap'); echo "</li><li>"; echo "<strong>" . __('URL to the page', 'sitemap') . "</strong>: "; _e("Enter the URL to the page. Examples: http://www.foo.com/index.html or www.foo.com/home ", 'sitemap'); echo "</li><li>"; echo "<strong>" . __('Priority', 'sitemap') . "</strong>: "; _e("Choose the priority of the page relative to the other pages. For example, your homepage might have a higher priority than your imprint.", 'sitemap'); echo "</li><li>"; echo "<strong>" . __('Last Changed', 'sitemap') . "</strong>: "; _e("Enter the date of the last change as YYYY-MM-DD (2005-12-31 for example) (optional).", 'sitemap'); echo "</li></ul>"; ?> <script type="text/javascript"> //<![CDATA[ <?php $freqVals = "'" . implode("','", array_keys($this->sg->_freqNames)) . "'"; $freqNames = "'" . implode("','", array_values($this->sg->_freqNames)) . "'"; ?> var changeFreqVals = new Array( <?php echo $freqVals; ?> ); var changeFreqNames= new Array( <?php echo $freqNames; ?> ); var priorities= new Array(0 <?php for ($i = 0.1; $i < 1; $i += 0.1) { echo "," . number_format($i, 1, ".", ""); } ?> ); var pages = [ <?php if (count($this->sg->_pages) > 0) { for ($i = 0; $i < count($this->sg->_pages); $i++) { $v =& $this->sg->_pages[$i]; if ($i > 0) { echo ","; } echo '{url:"' . $v->getUrl() . '", priority:"' . number_format($v->getPriority(), 1, ".", "") . '", changeFreq:"' . $v->getChangeFreq() . '", lastChanged:"' . ($v != null && $v->getLastMod() > 0 ? date("Y-m-d", $v->getLastMod()) : "") . '"}'; } } ?> ]; //]]> </script> <script type="text/javascript" src="<?php echo $this->sg->GetPluginUrl(); ?> img/sitemap.js"></script> <table width="100%" cellpadding="3" cellspacing="3" id="sm_pageTable"> <tr> <th scope="col"><?php _e('URL to the page', 'sitemap'); ?> </th> <th scope="col"><?php _e('Priority', 'sitemap'); ?> </th> <th scope="col"><?php _e('Change Frequency', 'sitemap'); ?> </th> <th scope="col"><?php _e('Last Changed', 'sitemap'); ?> </th> <th scope="col"><?php _e('#', 'sitemap'); ?> </th> </tr> <?php if (count($this->sg->_pages) <= 0) { ?> <tr> <td colspan="5" align="center"><?php _e('No pages defined.', 'sitemap'); ?> </td> </tr><?php } ?> </table> <a href="javascript:void(0);" onclick="sm_addPage();"><?php _e("Add new page", 'sitemap'); ?> </a> <?php $this->HtmlPrintBoxFooter(); ?> <!-- AutoPrio Options --> <?php $this->HtmlPrintBoxHeader('sm_postprio', __('Post Priority', 'sitemap')); ?> <p><?php _e('Please select how the priority of each post should be calculated:', 'sitemap'); ?> </p> <ul> <li><p><input type="radio" name="sm_b_prio_provider" id="sm_b_prio_provider__0" value="" <?php echo $this->sg->HtmlGetChecked($this->sg->GetOption("b_prio_provider"), ""); ?> /> <label for="sm_b_prio_provider__0"><?php _e('Do not use automatic priority calculation', 'sitemap'); ?> </label><br /><?php _e('All posts will have the same priority which is defined in "Priorities"', 'sitemap'); ?> </p></li> <?php for ($i = 0; $i < count($this->sg->_prioProviders); $i++) { echo "<li><p><input type=\"radio\" id=\"sm_b_prio_provider_{$i}\" name=\"sm_b_prio_provider\" value=\"" . $this->sg->_prioProviders[$i] . "\" " . $this->sg->HtmlGetChecked($this->sg->GetOption("b_prio_provider"), $this->sg->_prioProviders[$i]) . " /> <label for=\"sm_b_prio_provider_{$i}\">" . call_user_func(array(&$this->sg->_prioProviders[$i], 'getName')) . "</label><br />" . call_user_func(array(&$this->sg->_prioProviders[$i], 'getDescription')) . "</p></li>"; } ?> </ul> <?php $this->HtmlPrintBoxFooter(); ?> <!-- Location Options --> <?php $this->HtmlPrintBoxHeader('sm_location', __('Location of your sitemap file', 'sitemap')); ?> <div> <b><label for="sm_location_useauto"><input type="radio" id="sm_location_useauto" name="sm_b_location_mode" value="auto" <?php echo $this->sg->GetOption("b_location_mode") == "auto" ? "checked=\"checked\"" : ""; ?> /> <?php _e('Automatic detection', 'sitemap'); ?> </label></b> <ul> <li> <label for="sm_b_filename"> <?php _e('Filename of the sitemap file', 'sitemap'); ?> <input type="text" id="sm_b_filename" name="sm_b_filename" value="<?php echo $this->sg->GetOption("b_filename"); ?> " /> </label><br /> <?php _e('Detected Path', 'sitemap'); ?> : <?php echo $this->sg->getXmlPath(true); ?> <br /><?php _e('Detected URL', 'sitemap'); ?> : <a href="<?php echo $this->sg->getXmlUrl(true); ?> "><?php echo $this->sg->getXmlUrl(true); ?> </a> </li> </ul> </div> <div> <b><label for="sm_location_usemanual"><input type="radio" id="sm_location_usemanual" name="sm_b_location_mode" value="manual" <?php echo $this->sg->GetOption("b_location_mode") == "manual" ? "checked=\"checked\"" : ""; ?> /> <?php _e('Custom location', 'sitemap'); ?> </label></b> <ul> <li> <label for="sm_b_filename_manual"> <?php _e('Absolute or relative path to the sitemap file, including name.', 'sitemap'); echo "<br />"; _e('Example', 'sitemap'); echo ": /var/www/htdocs/wordpress/sitemap.xml"; ?> <br /> <input style="width:70%" type="text" id="sm_b_filename_manual" name="sm_b_filename_manual" value="<?php echo !$this->sg->GetOption("b_filename_manual") ? $this->sg->getXmlPath() : $this->sg->GetOption("b_filename_manual"); ?> " /> </label> </li> <li> <label for="sm_b_fileurl_manual"> <?php _e('Complete URL to the sitemap file, including name.', 'sitemap'); echo "<br />"; _e('Example', 'sitemap'); echo ": http://www.yourdomain.com/sitemap.xml"; ?> <br /> <input style="width:70%" type="text" id="sm_b_fileurl_manual" name="sm_b_fileurl_manual" value="<?php echo !$this->sg->GetOption("b_fileurl_manual") ? $this->sg->getXmlUrl() : $this->sg->GetOption("b_fileurl_manual"); ?> " /> </label> </li> </ul> </div> <?php $this->HtmlPrintBoxFooter(); ?> <!-- Includes --> <?php $this->HtmlPrintBoxHeader('sm_includes', __('Sitemap Content', 'sitemap')); ?> <ul> <li> <label for="sm_in_home"> <input type="checkbox" id="sm_in_home" name="sm_in_home" <?php echo $this->sg->GetOption("in_home") == true ? "checked=\"checked\"" : ""; ?> /> <?php _e('Include homepage', 'sitemap'); ?> </label> </li> <li> <label for="sm_in_posts"> <input type="checkbox" id="sm_in_posts" name="sm_in_posts" <?php echo $this->sg->GetOption("in_posts") == true ? "checked=\"checked\"" : ""; ?> /> <?php _e('Include posts', 'sitemap'); ?> </label> </li> <li> <label for="sm_in_posts_sub"> <input type="checkbox" id="sm_in_posts_sub" name="sm_in_posts_sub" <?php echo $this->sg->GetOption("in_posts_sub") == true ? "checked=\"checked\"" : ""; ?> /> <?php _e('Include following pages of multi-page posts (Increases build time and memory usage!)', 'sitemap'); ?> </label> </li> <li> <label for="sm_in_pages"> <input type="checkbox" id="sm_in_pages" name="sm_in_pages" <?php echo $this->sg->GetOption("in_pages") == true ? "checked=\"checked\"" : ""; ?> /> <?php _e('Include static pages', 'sitemap'); ?> </label> </li> <li> <label for="sm_in_cats"> <input type="checkbox" id="sm_in_cats" name="sm_in_cats" <?php echo $this->sg->GetOption("in_cats") == true ? "checked=\"checked\"" : ""; ?> /> <?php _e('Include categories', 'sitemap'); ?> </label> </li> <li> <label for="sm_in_arch"> <input type="checkbox" id="sm_in_arch" name="sm_in_arch" <?php echo $this->sg->GetOption("in_arch") == true ? "checked=\"checked\"" : ""; ?> /> <?php _e('Include archives', 'sitemap'); ?> </label> </li> <?php if ($this->sg->IsTaxonomySupported()) { ?> <li> <label for="sm_in_tags"> <input type="checkbox" id="sm_in_tags" name="sm_in_tags" <?php echo $this->sg->GetOption("in_tags") == true ? "checked=\"checked\"" : ""; ?> /> <?php _e('Include tag pages', 'sitemap'); ?> </label> </li> <?php } ?> <li> <label for="sm_in_auth"> <input type="checkbox" id="sm_in_auth" name="sm_in_auth" <?php echo $this->sg->GetOption("in_auth") == true ? "checked=\"checked\"" : ""; ?> /> <?php _e('Include author pages', 'sitemap'); ?> </label> </li> </ul> <?php $this->HtmlPrintBoxFooter(); ?> <!-- Excluded Items --> <?php $this->HtmlPrintBoxHeader('sm_excludes', __('Excluded items', 'sitemap')); ?> <b><?php _e('Excluded categories', 'sitemap'); ?> :</b> <?php if (version_compare($wp_version, "2.5.1", ">=")) { ?> <cite style="display:block; margin-left:40px;"><?php _e("Note", "sitemap"); ?> : <?php _e("Using this feature will increase build time and memory usage!", "sitemap"); ?> </cite> <div style="border-color:#CEE1EF; border-style:solid; border-width:2px; height:10em; margin:5px 0px 5px 40px; overflow:auto; padding:0.5em 0.5em;"> <ul> <?php wp_category_checklist(0, 0, $this->sg->GetOption("b_exclude_cats"), false); ?> </ul> </div> <?php } else { ?> <ul><li><?php echo sprintf(__("This feature requires at least WordPress 2.5.1, you are using %s", "sitemap"), $wp_version); ?> </li></ul> <?php } ?> <b><?php _e("Exclude posts", "sitemap"); ?> :</b> <div style="margin:5px 0 13px 40px;"> <label for="sm_b_exclude"><?php _e('Exclude the following posts or pages:', 'sitemap'); ?> <small><?php _e('List of IDs, separated by comma', 'sitemap'); ?> </small><br /> <input name="sm_b_exclude" id="sm_b_exclude" type="text" style="width:400px;" value="<?php echo implode(",", $this->sg->GetOption("b_exclude")); ?> " /></label><br /> <cite><?php _e("Note", "sitemap"); ?> : <?php _e("Child posts won't be excluded automatically!", "sitemap"); ?> </cite> </div> <?php $this->HtmlPrintBoxFooter(); ?> <!-- Change frequencies --> <?php $this->HtmlPrintBoxHeader('sm_change_frequencies', __('Change frequencies', 'sitemap')); ?> <p> <b><?php _e('Note', 'sitemap'); ?> :</b> <?php _e('Please note that the value of this tag is considered a hint and not a command. Even though search engine crawlers consider this information when making decisions, they may crawl pages marked "hourly" less frequently than that, and they may crawl pages marked "yearly" more frequently than that. It is also likely that crawlers will periodically crawl pages marked "never" so that they can handle unexpected changes to those pages.', 'sitemap'); ?> </p> <ul> <li> <label for="sm_cf_home"> <select id="sm_cf_home" name="sm_cf_home"><?php $this->sg->HtmlGetFreqNames($this->sg->GetOption("cf_home")); ?> </select> <?php _e('Homepage', 'sitemap'); ?> </label> </li> <li> <label for="sm_cf_posts"> <select id="sm_cf_posts" name="sm_cf_posts"><?php $this->sg->HtmlGetFreqNames($this->sg->GetOption("cf_posts")); ?> </select> <?php _e('Posts', 'sitemap'); ?> </label> </li> <li> <label for="sm_cf_pages"> <select id="sm_cf_pages" name="sm_cf_pages"><?php $this->sg->HtmlGetFreqNames($this->sg->GetOption("cf_pages")); ?> </select> <?php _e('Static pages', 'sitemap'); ?> </label> </li> <li> <label for="sm_cf_cats"> <select id="sm_cf_cats" name="sm_cf_cats"><?php $this->sg->HtmlGetFreqNames($this->sg->GetOption("cf_cats")); ?> </select> <?php _e('Categories', 'sitemap'); ?> </label> </li> <li> <label for="sm_cf_arch_curr"> <select id="sm_cf_arch_curr" name="sm_cf_arch_curr"><?php $this->sg->HtmlGetFreqNames($this->sg->GetOption("cf_arch_curr")); ?> </select> <?php _e('The current archive of this month (Should be the same like your homepage)', 'sitemap'); ?> </label> </li> <li> <label for="sm_cf_arch_old"> <select id="sm_cf_arch_old" name="sm_cf_arch_old"><?php $this->sg->HtmlGetFreqNames($this->sg->GetOption("cf_arch_old")); ?> </select> <?php _e('Older archives (Changes only if you edit an old post)', 'sitemap'); ?> </label> </li> <?php if ($this->sg->IsTaxonomySupported()) { ?> <li> <label for="sm_cf_tags"> <select id="sm_cf_tags" name="sm_cf_tags"><?php $this->sg->HtmlGetFreqNames($this->sg->GetOption("cf_tags")); ?> </select> <?php _e('Tag pages', 'sitemap'); ?> </label> </li> <?php } ?> <li> <label for="sm_cf_auth"> <select id="sm_cf_auth" name="sm_cf_auth"><?php $this->sg->HtmlGetFreqNames($this->sg->GetOption("cf_auth")); ?> </select> <?php _e('Author pages', 'sitemap'); ?> </label> </li> </ul> <?php $this->HtmlPrintBoxFooter(); ?> <!-- Priorities --> <?php $this->HtmlPrintBoxHeader('sm_priorities', __('Priorities', 'sitemap')); ?> <ul> <li> <label for="sm_pr_home"> <select id="sm_pr_home" name="sm_pr_home"><?php $this->sg->HtmlGetPriorityValues($this->sg->GetOption("pr_home")); ?> </select> <?php _e('Homepage', 'sitemap'); ?> </label> </li> <li> <label for="sm_pr_posts"> <select id="sm_pr_posts" name="sm_pr_posts"><?php $this->sg->HtmlGetPriorityValues($this->sg->GetOption("pr_posts")); ?> </select> <?php _e('Posts (If auto calculation is disabled)', 'sitemap'); ?> </label> </li> <li> <label for="sm_pr_posts_min"> <select id="sm_pr_posts_min" name="sm_pr_posts_min"><?php $this->sg->HtmlGetPriorityValues($this->sg->GetOption("pr_posts_min")); ?> </select> <?php _e('Minimum post priority (Even if auto calculation is enabled)', 'sitemap'); ?> </label> </li> <li> <label for="sm_pr_pages"> <select id="sm_pr_pages" name="sm_pr_pages"><?php $this->sg->HtmlGetPriorityValues($this->sg->GetOption("pr_pages")); ?> </select> <?php _e('Static pages', 'sitemap'); ?> </label> </li> <li> <label for="sm_pr_cats"> <select id="sm_pr_cats" name="sm_pr_cats"><?php $this->sg->HtmlGetPriorityValues($this->sg->GetOption("pr_cats")); ?> </select> <?php _e('Categories', 'sitemap'); ?> </label> </li> <li> <label for="sm_pr_arch"> <select id="sm_pr_arch" name="sm_pr_arch"><?php $this->sg->HtmlGetPriorityValues($this->sg->GetOption("pr_arch")); ?> </select> <?php _e('Archives', 'sitemap'); ?> </label> </li> <?php if ($this->sg->IsTaxonomySupported()) { ?> <li> <label for="sm_pr_tags"> <select id="sm_pr_tags" name="sm_pr_tags"><?php $this->sg->HtmlGetPriorityValues($this->sg->GetOption("pr_tags")); ?> </select> <?php _e('Tag pages', 'sitemap'); ?> </label> </li> <?php } ?> <li> <label for="sm_pr_auth"> <select id="sm_pr_auth" name="sm_pr_auth"><?php $this->sg->HtmlGetPriorityValues($this->sg->GetOption("pr_auth")); ?> </select> <?php _e('Author pages', 'sitemap'); ?> </label> </li> </ul> <?php $this->HtmlPrintBoxFooter(); ?> </div> <div> <p class="submit"> <?php wp_nonce_field('sitemap'); ?> <input type="submit" name="sm_update" value="<?php _e('Update options', 'sitemap'); ?> " /> <input type="submit" onclick='return confirm("Do you really want to reset your configuration?");' class="sm_warning" name="sm_reset_config" value="<?php _e('Reset options', 'sitemap'); ?> " /> </p> </div> <?php if ($this->mode == 27) { ?> </div> </div> <?php } ?> </div> <script type="text/javascript">if(typeof(sm_loadPages)=='function') addLoadEvent(sm_loadPages); </script> </form> <form action="https://www.paypal.com/cgi-bin/webscr" method="post" id="sm_donate_form"> <?php $lc = array("en" => array("cc" => "USD", "lc" => "US"), "en-GB" => array("cc" => "GBP", "lc" => "GB"), "de" => array("cc" => "EUR", "lc" => "DE")); $myLc = $lc["en"]; $wpl = get_bloginfo('language'); if (!empty($wpl)) { if (array_key_exists($wpl, $lc)) { $myLc = $lc[$wpl]; } else { $wpl = substr($wpl, 0, 2); if (array_key_exists($wpl, $lc)) { $myLc = $lc[$wpl]; } } } ?> <input type="hidden" name="cmd" value="_xclick" /> <input type="hidden" name="business" value="<?php echo "donate" . "@" . "arnebra" . "chhold.de"; ?> " /> <input type="hidden" name="item_name" value="Sitemap Generator for WordPress. Please tell me if if you don't want to be listed on the donator list." /> <input type="hidden" name="no_shipping" value="1" /> <input type="hidden" name="return" value="<?php echo 'http://' . $_SERVER['HTTP_HOST'] . $this->sg->GetBackLink(); ?> &sm_donated=true" /> <input type="hidden" name="item_number" value="0001" /> <input type="hidden" name="currency_code" value="<?php echo $myLc["cc"]; ?> " /> <input type="hidden" name="bn" value="PP-BuyNowBF" /> <input type="hidden" name="lc" value="<?php echo $myLc["lc"]; ?> " /> <input type="hidden" name="rm" value="2" /> <input type="hidden" name="on0" value="Your Website" /> <input type="hidden" name="os0" value="<?php echo get_bloginfo("home"); ?> "/> </form> </div> <?php }
/** * Builds the sitemap and writes it into a xml file. * * @since 3.0 * @access public * @author Arne Brachhold <himself [at] arnebrachhold [dot] de> * @return array An array with messages such as failed writes etc. */ function BuildSitemap() { global $wpdb, $posts, $wp_version; $this->Initate(); if ($this->GetOption("b_memory") != '') { @ini_set("memory_limit", $this->GetOption("b_memory")); } if ($this->GetOption("b_time") != -1) { @set_time_limit($this->GetOption("b_time")); } //This object saves the status information of the script directly to the database $status = new GoogleSitemapGeneratorStatus(); //Other plugins can detect if the building process is active $this->_isActive = true; //$this->AddElement(new GoogleSitemapGeneratorXmlEntry()); //Debug mode? $debug = $this->GetOption("b_debug"); if ($this->GetOption("b_xml")) { $fileName = $this->GetXmlPath(); $status->StartXml($this->GetXmlPath(), $this->GetXmlUrl()); if ($this->IsFileWritable($fileName)) { $this->_fileHandle = fopen($fileName, "w"); if (!$this->_fileHandle) { $status->EndXml(false, "Not openable"); } } else { $status->EndXml(false, "not writable"); } } //Write gzipped sitemap file if ($this->IsGzipEnabled()) { $fileName = $this->GetZipPath(); $status->StartZip($this->GetZipPath(), $this->GetZipUrl()); if ($this->IsFileWritable($fileName)) { $this->_fileZipHandle = gzopen($fileName, "w1"); if (!$this->_fileZipHandle) { $status->EndZip(false, "Not openable"); } } else { $status->EndZip(false, "not writable"); } } if (!$this->_fileHandle && !$this->_fileZipHandle) { $status->End(); return; } //Content of the XML file $this->AddElement(new GoogleSitemapGeneratorXmlEntry('<?xml version="1.0" encoding="UTF-8"' . '?' . '>')); $styleSheet = $this->GetDefaultStyle() && $this->GetOption('b_style_default') === true ? $this->GetDefaultStyle() : $this->GetOption('b_style'); if (!empty($styleSheet)) { $this->AddElement(new GoogleSitemapGeneratorXmlEntry('<' . '?xml-stylesheet type="text/xsl" href="' . $styleSheet . '"?' . '>')); } $this->AddElement(new GoogleSitemapGeneratorDebugEntry("generator=\"wordpress/" . get_bloginfo('version') . "\"")); $this->AddElement(new GoogleSitemapGeneratorDebugEntry("sitemap-generator-url=\"http://www.arnebrachhold.de\" sitemap-generator-version=\"" . $this->GetVersion() . "\"")); $this->AddElement(new GoogleSitemapGeneratorDebugEntry("generated-on=\"" . date(get_option("date_format") . " " . get_option("time_format")) . "\"")); //All comments as an asso. Array (postID=>commentCount) $comments = $this->GetOption("b_prio_provider") != "" ? $this->GetComments() : array(); //Full number of comments $commentCount = count($comments) > 0 ? $this->GetCommentCount($comments) : 0; if ($debug && $this->GetOption("b_prio_provider") != "") { $this->AddElement(new GoogleSitemapGeneratorDebugEntry("Debug: Total comment count: " . $commentCount)); } //Go XML! $this->AddElement(new GoogleSitemapGeneratorXmlEntry('<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">')); $home = get_bloginfo('url'); //Add the home page (WITH a slash!) if ($this->GetOption("in_home")) { $this->AddUrl(trailingslashit($home), $this->GetTimestampFromMySql(get_lastpostmodified('GMT')), $this->GetOption("cf_home"), $this->GetOption("pr_home")); } //Add the posts if ($this->GetOption("in_posts") || $this->GetOption("in_pages")) { if ($debug) { $this->AddElement(new GoogleSitemapGeneratorDebugEntry("Debug: Start Postings")); } //Pre 2.1 compatibility. 2.1 introduced 'future' as post_status so we don't need to check post_date $wpCompat = floatval($wp_version) < 2.1; $useQTransLate = false; //function_exists('qtrans_convertURL') && function_exists('qtrans_getEnabledLanguages'); Not really working yet $excludes = $this->GetOption('b_exclude'); //Excluded posts $exclCats = $this->GetOption("b_exclude_cats"); // Excluded cats if ($exclCats && count($exclCats) > 0 && $this->IsTaxonomySupported()) { $exPosts = get_objects_in_term($exclCats, "category"); // Get all posts in excl. cats if (is_array($exPosts) && count($exPosts) > 0) { //Merge it with the list of user excluded posts $excludes = array_merge($excludes, $exPosts); } } $contentStmt = ''; if ($useQTransLate) { $contentStmt .= ', post_content '; } $postPageStmt = ''; $inSubPages = $this->GetOption('in_posts_sub') === true; if ($inSubPages && $this->GetOption('in_posts') === true) { $pageDivider = '<!--nextpage-->'; $postPageStmt = ", (character_length(`post_content`) - character_length(REPLACE(`post_content`, '{$pageDivider}', ''))) / " . strlen($pageDivider) . " as postPages"; } $sql = "SELECT `ID`, `post_author`, `post_date`, `post_date_gmt`, `post_status`, `post_name`, `post_modified`, `post_modified_gmt`, `post_parent`, `post_type` {$postPageStmt} {$contentStmt} FROM `" . $wpdb->posts . "` WHERE "; $where = '('; if ($this->GetOption('in_posts')) { //WP < 2.1: posts are post_status = publish //WP >= 2.1: post_type must be 'post', no date check required because future posts are post_status='future' if ($wpCompat) { $where .= "(post_status = 'publish' AND post_date_gmt <= '" . gmdate('Y-m-d H:i:59') . "')"; } else { $where .= " (post_status = 'publish' AND (post_type = 'post' OR post_type = '')) "; } } if ($this->GetOption('in_pages')) { if ($this->GetOption('in_posts')) { $where .= " OR "; } if ($wpCompat) { //WP < 2.1: posts have post_status = published, pages have post_status = static $where .= " post_status='static' "; } else { //WP >= 2.1: posts have post_type = 'post' and pages have post_type = 'page'. Both must be published. $where .= " (post_status = 'publish' AND post_type = 'page') "; } } $where .= ") "; if (is_array($excludes) && count($excludes) > 0) { $where .= " AND ID NOT IN ('" . implode("','", $excludes) . "')"; } $where .= " AND post_password='' ORDER BY post_modified DESC"; $sql .= $where; if ($this->GetOption("b_max_posts") > 0) { $sql .= " LIMIT 0," . $this->GetOption("b_max_posts"); } $postCount = intval($wpdb->get_var("SELECT COUNT(*) AS cnt FROM `" . $wpdb->posts . "` WHERE " . $where, 0, 0)); //Create a new connection because we are using mysql_unbuffered_query and don't want to disturb the WP connection //Safe Mode for other plugins which use mysql_query() without a connection handler and will destroy our resultset :( $con = $postRes = null; //In 2.2, a bug which prevented additional DB connections was fixed if (floatval($wp_version) < 2.2) { $this->SetOption("b_safemode", true); } if ($this->GetOption("b_safemode") === true) { $postRes = mysql_query($sql, $wpdb->dbh); if (!$postRes) { trigger_error("MySQL query failed: " . mysql_error(), E_USER_NOTICE); //E_NOTE will be displayed on our debug mode return; } } else { $con = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD, true); if (!$con) { trigger_error("MySQL Connection failed: " . mysql_error(), E_USER_NOTICE); return; } if (!mysql_select_db(DB_NAME, $con)) { trigger_error("MySQL DB Select failed: " . mysql_error(), E_USER_NOTICE); return; } $postRes = mysql_unbuffered_query($sql, $con); if (!$postRes) { trigger_error("MySQL unbuffered query failed: " . mysql_error(), E_USER_NOTICE); return; } } if ($postRes) { //#type $prioProvider GoogleSitemapGeneratorPrioProviderBase $prioProvider = NULL; if ($this->GetOption("b_prio_provider") != '') { $providerClass = $this->GetOption('b_prio_provider'); $prioProvider = new $providerClass($commentCount, $postCount); } //$posts is used by Alex King's Popularity Contest plugin //if($posts == null || !is_array($posts)) { // $posts = &$postRes; //} $z = 1; $zz = 1; //Default priorities $default_prio_posts = $this->GetOption('pr_posts'); $default_prio_pages = $this->GetOption('pr_pages'); //Change frequencies $cf_pages = $this->GetOption('cf_pages'); $cf_posts = $this->GetOption('cf_posts'); $minPrio = $this->GetOption('pr_posts_min'); //Cycle through all posts and add them while ($post = mysql_fetch_object($postRes)) { //Fill the cache with our DB result. Since it's incomplete (no text-content for example), we will clean it later. $cache = array(&$post); update_post_cache($cache); //Set the current working post for other plugins which depend on "the loop" $GLOBALS['post'] =& $post; $permalink = get_permalink($post->ID); if ($permalink != $home) { $isPage = false; if ($wpCompat) { $isPage = $post->post_status == 'static'; } else { $isPage = $post->post_type == 'page'; } //Default Priority if auto calc is disabled $prio = 0; if ($isPage) { //Priority for static pages $prio = $default_prio_pages; } else { //Priority for normal posts $prio = $default_prio_posts; } //If priority calc. is enabled, calculate (but only for posts, not pages)! if ($prioProvider !== null && !$isPage) { //Comment count for this post $cmtcnt = isset($comments[$post->ID]) ? $comments[$post->ID] : 0; $prio = $prioProvider->GetPostPriority($post->ID, $cmtcnt, $post); if ($debug) { $this->AddElement(new GoogleSitemapGeneratorDebugEntry('Debug: Priority report of postID ' . $post->ID . ': Comments: ' . $cmtcnt . ' of ' . $commentCount . ' = ' . $prio . ' points')); } } if (!$isPage && $minPrio > 0 && $prio < $minPrio) { $prio = $minPrio; } //Add it $this->AddUrl($permalink, $this->GetTimestampFromMySql($post->post_modified_gmt && $post->post_modified_gmt != '0000-00-00 00:00:00' ? $post->post_modified_gmt : $post->post_date_gmt), $isPage ? $cf_pages : $cf_posts, $prio); if ($inSubPages) { $subPage = ''; for ($p = 1; $p <= $post->postPages; $p++) { if (get_option('permalink_structure') == '') { $subPage = $permalink . '&page=' . $p; } else { $subPage = trailingslashit($permalink) . user_trailingslashit($p, 'single_paged'); } $this->AddUrl($subPage, $this->GetTimestampFromMySql($post->post_modified_gmt && $post->post_modified_gmt != '0000-00-00 00:00:00' ? $post->post_modified_gmt : $post->post_date_gmt), $isPage ? $cf_pages : $cf_posts, $prio); } } // Multilingual Support with qTranslate, thanks to Qian Qin if ($useQTransLate) { global $q_config; foreach (qtrans_getEnabledLanguages($post->post_content) as $language) { if ($language != $q_config['default_language']) { $this->AddUrl(qtrans_convertURL($permalink, $language), $this->GetTimestampFromMySql($post->post_modified_gmt && $post->post_modified_gmt != '0000-00-00 00:00:00' ? $post->post_modified_gmt : $post->post_date_gmt), $isPage ? $cf_pages : $cf_posts, $prio); } } } } //Update the status every 100 posts and at the end. //If the script breaks because of memory or time limit, //we have a "last reponded" value which can be compared to the server settings if ($zz == 100 || $z == $postCount) { $status->SaveStep($z); $zz = 0; } else { $zz++; } $z++; //Clean cache because it's incomplete if (version_compare($wp_version, "2.5", ">=")) { //WP 2.5 makes a mysql query for every clean_post_cache to clear the child cache //so I've copied the function here until a patch arrives... wp_cache_delete($post->ID, 'posts'); wp_cache_delete($post->ID, 'post_meta'); clean_object_term_cache($post->ID, 'post'); } else { clean_post_cache($post->ID); } } unset($postRes); unset($prioProvider); if ($this->GetOption("b_safemode") !== true && $con) { mysql_close($con); } } if ($debug) { $this->AddElement(new GoogleSitemapGeneratorDebugEntry("Debug: End Postings")); } } //Add the cats if ($this->GetOption("in_cats")) { if ($debug) { $this->AddElement(new GoogleSitemapGeneratorDebugEntry("Debug: Start Cats")); } $exclCats = $this->GetOption("b_exclude_cats"); // Excluded cats if ($exclCats == null) { $exclCats = array(); } if (!$this->IsTaxonomySupported()) { $catsRes = $wpdb->get_results("\n\t\t\t\t\t\t\tSELECT\n\t\t\t\t\t\t\t\tc.cat_ID AS ID,\n\t\t\t\t\t\t\t\tMAX(p.post_modified_gmt) AS last_mod\n\t\t\t\t\t\t\tFROM\n\t\t\t\t\t\t\t\t`" . $wpdb->categories . "` c,\n\t\t\t\t\t\t\t\t`" . $wpdb->post2cat . "` pc,\n\t\t\t\t\t\t\t\t`" . $wpdb->posts . "` p\n\t\t\t\t\t\t\tWHERE\n\t\t\t\t\t\t\t\tpc.category_id = c.cat_ID\n\t\t\t\t\t\t\t\tAND p.ID = pc.post_id\n\t\t\t\t\t\t\t\tAND p.post_status = 'publish'\n\t\t\t\t\t\t\t\tAND p.post_type='post'\n\t\t\t\t\t\t\tGROUP\n\t\t\t\t\t\t\t\tBY c.cat_id\n\t\t\t\t\t\t\t"); if ($catsRes) { foreach ($catsRes as $cat) { if ($cat && $cat->ID && $cat->ID > 0 && !in_array($cat->ID, $exclCats)) { if ($debug) { if ($debug) { $this->AddElement(new GoogleSitemapGeneratorDebugEntry("Cat-ID:" . $cat->ID)); } } $this->AddUrl(get_category_link($cat->ID), $this->GetTimestampFromMySql($cat->last_mod), $this->GetOption("cf_cats"), $this->GetOption("pr_cats")); } } } } else { $cats = get_terms("category", array("hide_empty" => true, "hierarchical" => false)); if ($cats && is_array($cats) && count($cats) > 0) { foreach ($cats as $cat) { if (!in_array($cat->term_id, $exclCats)) { $this->AddUrl(get_category_link($cat->term_id), 0, $this->GetOption("cf_cats"), $this->GetOption("pr_cats")); } } } } if ($debug) { $this->AddElement(new GoogleSitemapGeneratorDebugEntry("Debug: End Cats")); } } //Add the archives if ($this->GetOption("in_arch")) { if ($debug) { $this->AddElement(new GoogleSitemapGeneratorDebugEntry("Debug: Start Archive")); } $now = current_time('mysql'); //WP2.1 introduced post_status='future', for earlier WP versions we need to check the post_date_gmt $arcresults = $wpdb->get_results("\n\t\t\t\t\t\tSELECT DISTINCT\n\t\t\t\t\t\t\tYEAR(post_date_gmt) AS `year`,\n\t\t\t\t\t\t\tMONTH(post_date_gmt) AS `month`,\n\t\t\t\t\t\t\tMAX(post_date_gmt) as last_mod,\n\t\t\t\t\t\t\tcount(ID) as posts\n\t\t\t\t\t\tFROM\n\t\t\t\t\t\t\t{$wpdb->posts}\n\t\t\t\t\t\tWHERE\n\t\t\t\t\t\t\tpost_date < '{$now}'\n\t\t\t\t\t\t\tAND post_status = 'publish'\n\t\t\t\t\t\t\tAND post_type = 'post'\n\t\t\t\t\t\t\t" . (floatval($wp_version) < 2.1 ? "AND {$wpdb->posts}.post_date_gmt <= '" . gmdate('Y-m-d H:i:59') . "'" : "") . "\n\t\t\t\t\t\tGROUP BY\n\t\t\t\t\t\t\tYEAR(post_date_gmt),\n\t\t\t\t\t\t\tMONTH(post_date_gmt)\n\t\t\t\t\t\tORDER BY\n\t\t\t\t\t\t\tpost_date_gmt DESC"); if ($arcresults) { foreach ($arcresults as $arcresult) { $url = get_month_link($arcresult->year, $arcresult->month); $changeFreq = ""; //Archive is the current one if ($arcresult->month == date("n") && $arcresult->year == date("Y")) { $changeFreq = $this->GetOption("cf_arch_curr"); } else { // Archive is older $changeFreq = $this->GetOption("cf_arch_old"); } $this->AddUrl($url, $this->GetTimestampFromMySql($arcresult->last_mod), $changeFreq, $this->GetOption("pr_arch")); } } if ($debug) { $this->AddElement(new GoogleSitemapGeneratorDebugEntry("Debug: End Archive")); } } //Add the author pages if ($this->GetOption("in_auth")) { if ($debug) { $this->AddElement(new GoogleSitemapGeneratorDebugEntry("Debug: Start Author pages")); } $linkFunc = null; //get_author_link is deprecated in WP 2.1, try to use get_author_posts_url first. if (function_exists('get_author_posts_url')) { $linkFunc = 'get_author_posts_url'; } else { if (function_exists('get_author_link')) { $linkFunc = 'get_author_link'; } } //Who knows what happens in later WP versions, so check again if it worked if ($linkFunc !== null) { //Unfortunately there is no API function to get all authors, so we have to do it the dirty way... //We retrieve only users with published and not password protected posts (and not pages) //WP2.1 introduced post_status='future', for earlier WP versions we need to check the post_date_gmt $sql = "SELECT DISTINCT\n\t\t\t\t\t\t\t{$wpdb->users}.ID,\n\t\t\t\t\t\t\t{$wpdb->users}.user_nicename,\n\t\t\t\t\t\t\tMAX({$wpdb->posts}.post_modified_gmt) AS last_post\n\t\t\t\t\t\tFROM\n\t\t\t\t\t\t\t{$wpdb->users},\n\t\t\t\t\t\t\t{$wpdb->posts}\n\t\t\t\t\t\tWHERE\n\t\t\t\t\t\t\t{$wpdb->posts}.post_author = {$wpdb->users}.ID\n\t\t\t\t\t\t\tAND {$wpdb->posts}.post_status = 'publish'\n\t\t\t\t\t\t\tAND {$wpdb->posts}.post_type = 'post'\n\t\t\t\t\t\t\tAND {$wpdb->posts}.post_password = ''\n\t\t\t\t\t\t\t" . (floatval($wp_version) < 2.1 ? "AND {$wpdb->posts}.post_date_gmt <= '" . gmdate('Y-m-d H:i:59') . "'" : "") . "\n\t\t\t\t\t\tGROUP BY\n\t\t\t\t\t\t\t{$wpdb->users}.ID,\n\t\t\t\t\t\t\t{$wpdb->users}.user_nicename"; $authors = $wpdb->get_results($sql); if ($authors && is_array($authors)) { foreach ($authors as $author) { if ($debug) { if ($debug) { $this->AddElement(new GoogleSitemapGeneratorDebugEntry("Author-ID:" . $author->ID)); } } $url = $linkFunc == 'get_author_posts_url' ? get_author_posts_url($author->ID, $author->user_nicename) : get_author_link(false, $author->ID, $author->user_nicename); $this->AddUrl($url, $this->GetTimestampFromMySql($author->last_post), $this->GetOption("cf_auth"), $this->GetOption("pr_auth")); } } } else { //Too bad, no author pages for you :( if ($debug) { $this->AddElement(new GoogleSitemapGeneratorDebugEntry("Debug: No valid author link function found")); } } if ($debug) { $this->AddElement(new GoogleSitemapGeneratorDebugEntry("Debug: End Author pages")); } } //Add tag pages if ($this->GetOption("in_tags") && $this->IsTaxonomySupported()) { if ($debug) { $this->AddElement(new GoogleSitemapGeneratorDebugEntry("Debug: Start Tags")); } $tags = get_terms("post_tag", array("hide_empty" => true, "hierarchical" => false)); if ($tags && is_array($tags) && count($tags) > 0) { foreach ($tags as $tag) { $this->AddUrl(get_tag_link($tag->term_id), 0, $this->GetOption("cf_tags"), $this->GetOption("pr_tags")); } } if ($debug) { $this->AddElement(new GoogleSitemapGeneratorDebugEntry("Debug: End Tags")); } } //Add the custom pages if ($debug) { $this->AddElement(new GoogleSitemapGeneratorDebugEntry("Debug: Start Custom Pages")); } if ($this->_pages && is_array($this->_pages) && count($this->_pages) > 0) { //#type $page GoogleSitemapGeneratorPage foreach ($this->_pages as $page) { $this->AddUrl($page->GetUrl(), $page->getLastMod(), $page->getChangeFreq(), $page->getPriority()); } } if ($debug) { $this->AddElement(new GoogleSitemapGeneratorDebugEntry("Debug: End Custom Pages")); } if ($debug) { $this->AddElement(new GoogleSitemapGeneratorDebugEntry("Debug: Start additional URLs")); } do_action("sm_buildmap"); if ($debug) { $this->AddElement(new GoogleSitemapGeneratorDebugEntry("Debug: End additional URLs")); } $this->AddElement(new GoogleSitemapGeneratorXmlEntry("</urlset>")); $pingUrl = ''; if ($this->GetOption("b_xml")) { if ($this->_fileHandle && fclose($this->_fileHandle)) { $this->_fileHandle = null; $status->EndXml(true); $pingUrl = $this->GetXmlUrl(); } else { $status->EndXml(false, "Could not close the sitemap file."); } } if ($this->IsGzipEnabled()) { if ($this->_fileZipHandle && fclose($this->_fileZipHandle)) { $this->_fileZipHandle = null; $status->EndZip(true); $pingUrl = $this->GetZipUrl(); } else { $status->EndZip(false, "Could not close the zipped sitemap file"); } } //Ping Google if ($this->GetOption("b_ping") && !empty($pingUrl)) { $sPingUrl = "http://www.google.com/webmasters/sitemaps/ping?sitemap=" . urlencode($pingUrl); $status->StartGooglePing($sPingUrl); $pingres = $this->RemoteOpen($sPingUrl); if ($pingres == NULL || $pingres === false) { $status->EndGooglePing(false, $this->_lastError); trigger_error("Failed to ping Google: " . htmlspecialchars(strip_tags($pingres)), E_USER_NOTICE); } else { $status->EndGooglePing(true); } } //Ping Ask.com if ($this->GetOption("b_pingask") && !empty($pingUrl)) { $sPingUrl = "http://submissions.ask.com/ping?sitemap=" . urlencode($pingUrl); $status->StartAskPing($sPingUrl); $pingres = $this->RemoteOpen($sPingUrl); if ($pingres == NULL || $pingres === false || strpos($pingres, "successfully received and added") === false) { //Ask.com returns 200 OK even if there was an error, so we need to check the content. $status->EndAskPing(false, $this->_lastError); trigger_error("Failed to ping Ask.com: " . htmlspecialchars(strip_tags($pingres)), E_USER_NOTICE); } else { $status->EndAskPing(true); } } //Ping YAHOO if ($this->GetOption("b_pingyahoo") === true && $this->GetOption("b_yahookey") != "" && !empty($pingUrl)) { $sPingUrl = "http://search.yahooapis.com/SiteExplorerService/V1/updateNotification?appid=" . $this->GetOption("b_yahookey") . "&url=" . urlencode($pingUrl); $status->StartYahooPing($sPingUrl); $pingres = $this->RemoteOpen($sPingUrl); if ($pingres == NULL || $pingres === false || strpos(strtolower($pingres), "success") === false) { trigger_error("Failed to ping YAHOO: " . htmlspecialchars(strip_tags($pingres)), E_USER_NOTICE); $status->EndYahooPing(false, $this->_lastError); } else { $status->EndYahooPing(true); } } //Ping Bing if ($this->GetOption("b_pingmsn") && !empty($pingUrl)) { $sPingUrl = "http://www.bing.com/webmaster/ping.aspx?siteMap=" . urlencode($pingUrl); $status->StartMsnPing($sPingUrl); $pingres = $this->RemoteOpen($sPingUrl); if ($pingres == NULL || $pingres === false || strpos($pingres, "Thanks for submitting your sitemap") === false) { trigger_error("Failed to ping Bing: " . htmlspecialchars(strip_tags($pingres)), E_USER_NOTICE); $status->EndMsnPing(false, $this->_lastError); } else { $status->EndMsnPing(true); } } $status->End(); $this->_isActive = false; //done... return $status; }
/** * Displays the option page * * @since 3.0 * @access public * @author Arne Brachhold */ public function HtmlShowOptionsPage() { global $wp_version; //Hopefully this fixes the caching issues after upgrade. Redirect incl. the versions, but only if no POST data. if (count($_POST) == 0 && count($_GET) == 1 && isset($_GET["page"])) { $redirURL = $this->sg->GetBackLink() . '&sm_fromidx=true'; //Redirect so the sm_rebuild GET parameter no longer exists. @header("location: " . $redirURL); //If there was already any other output, the header redirect will fail echo '<script type="text/javascript">location.replace("' . $redirURL . '");</script>'; echo '<noscript><a href="' . $redirURL . '">Click here to continue</a></noscript>'; exit; } $snl = false; //SNL $this->sg->Initate(); $message = ""; $is_ms = $this->sg->IsMultiSite(); if (!empty($_REQUEST["sm_rebuild"])) { //Pressed Button: Rebuild Sitemap check_admin_referer('sitemap'); if (isset($_GET["sm_do_debug"]) && $_GET["sm_do_debug"] == "true") { //Check again, just for the case that something went wrong before if (!current_user_can("administrator")) { echo '<p>Please log in as admin</p>'; return; } $oldErr = error_reporting(E_ALL); $oldIni = ini_set("display_errors", 1); echo '<div class="wrap">'; echo '<h2>' . __('XML Sitemap Generator for WordPress', 'sitemap') . " " . $this->sg->GetVersion() . '</h2>'; echo '<p>This is the debug mode of the XML Sitemap Generator. It will show all PHP notices and warnings as well as the internal logs, messages and configuration.</p>'; echo '<p style="font-weight:bold; color:red; padding:5px; border:1px red solid; text-align:center;">DO NOT POST THIS INFORMATION ON PUBLIC PAGES LIKE SUPPORT FORUMS AS IT MAY CONTAIN PASSWORDS OR SECRET SERVER INFORMATION!</p>'; echo "<h3>WordPress and PHP Information</h3>"; echo '<p>WordPress ' . $GLOBALS['wp_version'] . ' with ' . ' DB ' . $GLOBALS['wp_db_version'] . ' on PHP ' . phpversion() . '</p>'; echo '<p>Plugin version: ' . $this->sg->GetVersion() . ' (' . $this->sg->GetSvnVersion() . ')'; echo '<h4>Environment</h4>'; echo "<pre>"; $sc = $_SERVER; unset($sc["HTTP_COOKIE"]); print_r($sc); echo "</pre>"; echo "<h4>WordPress Config</h4>"; echo "<pre>"; $opts = array(); if (function_exists('wp_load_alloptions')) { $opts = wp_load_alloptions(); } else { global $wpdb; $os = $wpdb->get_results("SELECT option_name, option_value FROM {$wpdb->options}"); foreach ((array) $os as $o) { $opts[$o->option_name] = $o->option_value; } } $popts = array(); foreach ($opts as $k => $v) { //Try to filter out passwords etc... if (preg_match("/pass|login|pw|secret|user|usr|key|auth|token/si", $k)) { continue; } $popts[$k] = htmlspecialchars($v); } print_r($popts); echo "</pre>"; echo '<h4>Sitemap Config</h4>'; echo "<pre>"; print_r($this->sg->GetOptions()); echo "</pre>"; echo '<h3>Sitemap Content and Errors, Warnings, Notices</h3>'; echo '<div>'; $sitemaps = $this->sg->SimulateIndex(); foreach ($sitemaps as $sitemap) { echo "<h4>Sitemap: <a href=\"" . $sitemap["data"]->GetUrl() . "\">" . $sitemap["type"] . "/" . ($sitemap["params"] ? $sitemap["params"] : "(No parameters)") . "</a> by " . $sitemap["caller"]["class"] . "</h4>"; $res = $this->sg->SimulateSitemap($sitemap["type"], $sitemap["params"]); echo "<ul style='padding-left:10px;'>"; foreach ($res as $s) { echo "<li>" . $s["data"]->GetUrl() . "</li>"; } echo "</ul>"; } $status = GoogleSitemapGeneratorStatus::Load(); echo '</div>'; echo '<h3>MySQL Queries</h3>'; if (defined('SAVEQUERIES') && SAVEQUERIES) { echo '<pre>'; var_dump($GLOBALS['wpdb']->queries); echo '</pre>'; $total = 0; foreach ($GLOBALS['wpdb']->queries as $q) { $total += $q[1]; } echo '<h4>Total Query Time</h4>'; echo '<pre>' . count($GLOBALS['wpdb']->queries) . ' queries in ' . round($total, 2) . ' seconds.</pre>'; } else { echo '<p>Please edit wp-db.inc.php in wp-includes and set SAVEQUERIES to true if you want to see the queries.</p>'; } echo "<h3>Build Process Results</h3>"; echo "<pre>"; print_r($status); echo "</pre>"; echo '<p>Done. <a href="' . wp_nonce_url($this->sg->GetBackLink() . "&sm_rebuild=true&sm_do_debug=true", 'sitemap') . '">Rebuild</a> or <a href="' . $this->sg->GetBackLink() . '">Return</a></p>'; echo '<p style="font-weight:bold; color:red; padding:5px; border:1px red solid; text-align:center;">DO NOT POST THIS INFORMATION ON PUBLIC PAGES LIKE SUPPORT FORUMS AS IT MAY CONTAIN PASSWORDS OR SECRET SERVER INFORMATION!</p>'; echo '</div>'; @error_reporting($oldErr); @ini_set("display_errors", $oldIni); return; } else { $redirURL = $this->sg->GetBackLink() . '&sm_fromrb=true'; //Redirect so the sm_rebuild GET parameter no longer exists. @header("location: " . $redirURL); //If there was already any other output, the header redirect will fail echo '<script type="text/javascript">location.replace("' . $redirURL . '");</script>'; echo '<noscript><a href="' . $redirURL . '">Click here to continue</a></noscript>'; exit; } } else { if (!empty($_POST['sm_update'])) { //Pressed Button: Update Config check_admin_referer('sitemap'); if (isset($_POST['sm_b_style']) && $_POST['sm_b_style'] == $this->sg->getDefaultStyle()) { $_POST['sm_b_style_default'] = true; $_POST['sm_b_style'] = ''; } foreach ($this->sg->GetOptions() as $k => $v) { //Check vor values and convert them into their types, based on the category they are in if (!isset($_POST[$k])) { $_POST[$k] = ""; } // Empty string will get false on 2bool and 0 on 2float //Options of the category "Basic Settings" are boolean, except the filename and the autoprio provider if (substr($k, 0, 5) == "sm_b_") { if ($k == "sm_b_prio_provider" || $k == "sm_b_yahookey" || $k == "sm_b_style" || $k == "sm_b_memory") { if ($k == "sm_b_filename_manual" && strpos($_POST[$k], "\\") !== false) { $_POST[$k] = stripslashes($_POST[$k]); } $this->sg->SetOption($k, (string) $_POST[$k]); } else { if ($k == "sm_b_time") { if ($_POST[$k] == '') { $_POST[$k] = -1; } $this->sg->SetOption($k, intval($_POST[$k])); } else { if ($k == "sm_i_install_date") { if ($this->sg->GetOption('i_install_date') <= 0) { $this->sg->SetOption($k, time()); } } else { if ($k == "sm_b_exclude") { $IDss = array(); $IDs = explode(",", $_POST[$k]); for ($x = 0; $x < count($IDs); $x++) { $ID = intval(trim($IDs[$x])); if ($ID > 0) { $IDss[] = $ID; } } $this->sg->SetOption($k, $IDss); } else { if ($k == "sm_b_exclude_cats") { $exCats = array(); if (isset($_POST["post_category"])) { foreach ((array) $_POST["post_category"] as $vv) { if (!empty($vv) && is_numeric($vv)) { $exCats[] = intval($vv); } } } $this->sg->SetOption($k, $exCats); } else { $this->sg->SetOption($k, (bool) $_POST[$k]); } } } } } //Options of the category "Includes" are boolean } else { if (substr($k, 0, 6) == "sm_in_") { if ($k == 'sm_in_tax') { $enabledTaxonomies = array(); foreach (array_keys((array) $_POST[$k]) as $taxName) { if (empty($taxName) || !(function_exists('taxonomy_exists') ? taxonomy_exists($taxName) : is_taxonomy($taxName))) { continue; } $enabledTaxonomies[] = $taxName; } $this->sg->SetOption($k, $enabledTaxonomies); } else { if ($k == 'sm_in_customtypes') { $enabledPostTypes = array(); foreach (array_keys((array) $_POST[$k]) as $postTypeName) { if (empty($postTypeName) || !post_type_exists($postTypeName)) { continue; } $enabledPostTypes[] = $postTypeName; } $this->sg->SetOption($k, $enabledPostTypes); } else { $this->sg->SetOption($k, (bool) $_POST[$k]); } } //Options of the category "Change frequencies" are string } else { if (substr($k, 0, 6) == "sm_cf_") { $this->sg->SetOption($k, (string) $_POST[$k]); //Options of the category "Priorities" are float } else { if (substr($k, 0, 6) == "sm_pr_") { $this->sg->SetOption($k, (double) $_POST[$k]); } } } } } //Apply page changes from POST $this->sg->SetPages($this->HtmlApplyPages()); if ($this->sg->SaveOptions()) { $message .= __('Configuration updated', 'sitemap') . "<br />"; } else { $message .= __('Error while saving options', 'sitemap') . "<br />"; } if ($this->sg->SavePages()) { $message .= __("Pages saved", 'sitemap') . "<br />"; } else { $message .= __('Error while saving pages', 'sitemap') . "<br />"; } } else { if (!empty($_POST["sm_reset_config"])) { //Pressed Button: Reset Config check_admin_referer('sitemap'); $this->sg->InitOptions(); $this->sg->SaveOptions(); $message .= __('The default configuration was restored.', 'sitemap'); } else { if (!empty($_GET["sm_delete_old"])) { //Delete old sitemap files check_admin_referer('sitemap'); //Check again, just for the case that something went wrong before if (!current_user_can("administrator")) { echo '<p>Please log in as admin</p>'; return; } if (!$this->sg->DeleteOldFiles()) { $message = __("The old files could NOT be deleted. Please use an FTP program and delete them by yourself.", "sitemap"); } else { $message = __("The old files were successfully deleted.", "sitemap"); } } } } } //Print out the message to the user, if any if ($message != "") { ?> <div class="updated"><strong><p><?php echo $message; ?> </p></strong></div><?php } if (!$snl) { if (isset($_GET['sm_hidedonate'])) { $this->sg->SetOption('i_hide_donated', true); $this->sg->SaveOptions(); } if (isset($_GET['sm_donated'])) { $this->sg->SetOption('i_donated', true); $this->sg->SaveOptions(); } if (isset($_GET['sm_hide_note'])) { $this->sg->SetOption('i_hide_note', true); $this->sg->SaveOptions(); } if (isset($_GET['sm_hidedonors'])) { $this->sg->SetOption('i_hide_donors', true); $this->sg->SaveOptions(); } if (isset($_GET['sm_hide_works'])) { $this->sg->SetOption('i_hide_works', true); $this->sg->SaveOptions(); } if (isset($_GET['sm_donated']) || $this->sg->GetOption('i_donated') === true && $this->sg->GetOption('i_hide_donated') !== true) { ?> <div class="updated"> <strong><p><?php _e('Thank you very much for your donation. You help me to continue support and development of this plugin and other free software!', 'sitemap'); ?> <a href="<?php echo $this->sg->GetBackLink() . "&sm_hidedonate=true"; ?> "><small style="font-weight:normal;"><?php _e('Hide this notice', 'sitemap'); ?> </small></a></p></strong> </div> <?php } else { if ($this->sg->GetOption('i_donated') !== true && $this->sg->GetOption('i_install_date') > 0 && $this->sg->GetOption('i_hide_note') !== true && time() > $this->sg->GetOption('i_install_date') + 60 * 60 * 24 * 30) { ?> <div class="updated"> <strong><p><?php echo str_replace("%s", $this->sg->GetRedirectLink("sitemap-donate-note"), __('Thanks for using this plugin! You\'ve installed this plugin over a month ago. If it works and you are satisfied with the results, isn\'t it worth at least a few dollar? <a href="%s">Donations</a> help me to continue support and development of this <i>free</i> software! <a href="%s">Sure, no problem!</a>', 'sitemap')); ?> <a href="<?php echo $this->sg->GetBackLink() . "&sm_donated=true"; ?> " style="float:right; display:block; border:none; margin-left:10px;"><small style="font-weight:normal; "><?php _e('Sure, but I already did!', 'sitemap'); ?> </small></a> <a href="<?php echo $this->sg->GetBackLink() . "&sm_hide_note=true"; ?> " style="float:right; display:block; border:none;"><small style="font-weight:normal; "><?php _e('No thanks, please don\'t bug me anymore!', 'sitemap'); ?> </small></a></p></strong> <div style="clear:right;"></div> </div> <?php } else { if ($this->sg->GetOption('i_install_date') > 0 && $this->sg->GetOption('i_hide_works') !== true && time() > $this->sg->GetOption('i_install_date') + 60 * 60 * 24 * 15) { ?> <div class="updated"> <strong><p><?php echo str_replace("%s", $this->sg->GetRedirectLink("sitemap-works-note"), __('Thanks for using this plugin! You\'ve installed this plugin some time ago. If it works and your are satisfied, why not <a href="%s">rate it</a> and <a href="%s">recommend it</a> to others? :-)', 'sitemap')); ?> <a href="<?php echo $this->sg->GetBackLink() . "&sm_hide_works=true"; ?> " style="float:right; display:block; border:none;"><small style="font-weight:normal; "><?php _e('Don\'t show this anymore', 'sitemap'); ?> </small></a></p></strong> <div style="clear:right;"></div> </div> <?php } } } } ?> <style type="text/css"> li.sm_hint { color:green; } li.sm_optimize { color:orange; } li.sm_error { color:red; } input.sm_warning:hover { background: #ce0000; color: #fff; } a.sm_button { padding:4px; display:block; padding-left:25px; background-repeat:no-repeat; background-position:5px 50%; text-decoration:none; border:none; } a.sm_button:hover { border-bottom-width:1px; } a.sm_donatePayPal { background-image:url(<?php echo $this->sg->GetPluginUrl(); ?> img/icon-paypal.gif); } a.sm_donateAmazon { background-image:url(<?php echo $this->sg->GetPluginUrl(); ?> img/icon-amazon.gif); } a.sm_pluginHome { background-image:url(<?php echo $this->sg->GetPluginUrl(); ?> img/icon-arne.gif); } a.sm_pluginList { background-image:url(<?php echo $this->sg->GetPluginUrl(); ?> img/icon-email.gif); } a.sm_pluginSupport { background-image:url(<?php echo $this->sg->GetPluginUrl(); ?> img/icon-wordpress.gif); } a.sm_pluginBugs { background-image:url(<?php echo $this->sg->GetPluginUrl(); ?> img/icon-trac.gif); } a.sm_resGoogle { background-image:url(<?php echo $this->sg->GetPluginUrl(); ?> img/icon-google.gif); } a.sm_resYahoo { background-image:url(<?php echo $this->sg->GetPluginUrl(); ?> img/icon-yahoo.gif); } a.sm_resBing { background-image:url(<?php echo $this->sg->GetPluginUrl(); ?> img/icon-bing.gif); } div.sm-update-nag p { margin:5px; } </style> <style type="text/css"> .sm-padded .inside { margin:12px!important; } .sm-padded .inside ul { margin:6px 0 12px 0; } .sm-padded .inside input { padding:1px; margin:0; } </style> <div class="wrap" id="sm_div"> <form method="post" action="<?php echo $this->sg->GetBackLink(); ?> "> <h2><?php _e('XML Sitemap Generator for WordPress', 'sitemap'); echo " " . $this->sg->GetVersion(); ?> </h2> <?php if (function_exists("wp_update_plugins") && (!defined('SM_NO_UPDATE') || SM_NO_UPDATE == false)) { wp_update_plugins(); $file = GoogleSitemapGeneratorLoader::GetBaseName(); $plugin_data = get_plugin_data(GoogleSitemapGeneratorLoader::GetPluginFile()); $current = function_exists('get_transient') ? get_transient('update_plugins') : get_option('update_plugins'); if (isset($current->response[$file])) { $r = $current->response[$file]; ?> <div id="update-nag" class="sm-update-nag"><?php if (!current_user_can('edit_plugins')) { printf(__('There is a new version of %1$s available. <a href="%2$s">Download version %3$s here</a>.', 'default'), $plugin_data['Name'], $r->url, $r->new_version); } else { if (empty($r->package)) { printf(__('There is a new version of %1$s available. <a href="%2$s">Download version %3$s here</a> <em>automatic upgrade unavailable for this plugin</em>.', 'default'), $plugin_data['Name'], $r->url, $r->new_version); } else { printf(__('There is a new version of %1$s available. <a href="%2$s">Download version %3$s here</a> or <a href="%4$s">upgrade automatically</a>.', 'default'), $plugin_data['Name'], $r->url, $r->new_version, wp_nonce_url("update.php?action=upgrade-plugin&plugin={$file}", 'upgrade-plugin_' . $file)); } } ?> </div><?php } } if (get_option('blog_public') != 1) { ?> <div class="error"><p><?php echo str_replace("%s", "options-privacy.php", __('Your blog is currently blocking search engines! Visit the <a href="%s">privacy settings</a> to change this.', 'sitemap')); ?> </p></div><?php } ?> <?php if (!$snl) { ?> <div id="poststuff" class="metabox-holder has-right-sidebar"> <div class="inner-sidebar"> <div id="side-sortables" class="meta-box-sortabless ui-sortable" style="position:relative;"> <?php } else { ?> <div id="poststuff" class="metabox-holder"> <?php } ?> <?php if (!$snl) { ?> <?php $this->HtmlPrintBoxHeader('sm_pnres', __('About this Plugin:', 'sitemap'), true); ?> <a class="sm_button sm_pluginHome" href="<?php echo $this->sg->GetRedirectLink('sitemap-home'); ?> "><?php _e('Plugin Homepage', 'sitemap'); ?> </a> <a class="sm_button sm_pluginHome" href="<?php echo $this->sg->GetRedirectLink('sitemap-feedback'); ?> "><?php _e('Suggest a Feature', 'sitemap'); ?> </a> <a class="sm_button sm_pluginList" href="<?php echo $this->sg->GetRedirectLink('sitemap-list'); ?> "><?php _e('Notify List', 'sitemap'); ?> </a> <a class="sm_button sm_pluginSupport" href="<?php echo $this->sg->GetRedirectLink('sitemap-support'); ?> "><?php _e('Support Forum', 'sitemap'); ?> </a> <a class="sm_button sm_pluginBugs" href="<?php echo $this->sg->GetRedirectLink('sitemap-bugs'); ?> "><?php _e('Report a Bug', 'sitemap'); ?> </a> <a class="sm_button sm_donatePayPal" href="<?php echo $this->sg->GetRedirectLink('sitemap-paypal'); ?> "><?php _e('Donate with PayPal', 'sitemap'); ?> </a> <a class="sm_button sm_donateAmazon" href="<?php echo $this->sg->GetRedirectLink('sitemap-amazon'); ?> "><?php _e('My Amazon Wish List', 'sitemap'); ?> </a> <?php if (__('translator_name', 'sitemap') != 'translator_name') { ?> <a class="sm_button sm_pluginSupport" href="<?php _e('translator_url', 'sitemap'); ?> "><?php _e('translator_name', 'sitemap'); ?> </a><?php } ?> <?php $this->HtmlPrintBoxFooter(true); ?> <?php $this->HtmlPrintBoxHeader('sm_smres', __('Sitemap Resources:', 'sitemap'), true); ?> <a class="sm_button sm_resGoogle" href="<?php echo $this->sg->GetRedirectLink('sitemap-gwt'); ?> "><?php _e('Webmaster Tools', 'sitemap'); ?> </a> <a class="sm_button sm_resGoogle" href="<?php echo $this->sg->GetRedirectLink('sitemap-gwb'); ?> "><?php _e('Webmaster Blog', 'sitemap'); ?> </a> <a class="sm_button sm_resYahoo" href="<?php echo $this->sg->GetRedirectLink('sitemap-yse'); ?> "><?php _e('Site Explorer', 'sitemap'); ?> </a> <a class="sm_button sm_resYahoo" href="<?php echo $this->sg->GetRedirectLink('sitemap-ywb'); ?> "><?php _e('Search Blog', 'sitemap'); ?> </a> <a class="sm_button sm_resBing" href="<?php echo $this->sg->GetRedirectLink('sitemap-lwt'); ?> "><?php _e('Webmaster Tools', 'sitemap'); ?> </a> <a class="sm_button sm_resBing" href="<?php echo $this->sg->GetRedirectLink('sitemap-lswcb'); ?> "><?php _e('Webmaster Center Blog', 'sitemap'); ?> </a> <br /> <a class="sm_button sm_resGoogle" href="<?php echo $this->sg->GetRedirectLink('sitemap-prot'); ?> "><?php _e('Sitemaps Protocol', 'sitemap'); ?> </a> <a class="sm_button sm_resGoogle" href="<?php echo $this->sg->GetRedirectLink('sitemap-ofaq'); ?> "><?php _e('Official Sitemaps FAQ', 'sitemap'); ?> </a> <a class="sm_button sm_pluginHome" href="<?php echo $this->sg->GetRedirectLink('sitemap-afaq'); ?> "><?php _e('My Sitemaps FAQ', 'sitemap'); ?> </a> <?php $this->HtmlPrintBoxFooter(true); ?> <?php $this->HtmlPrintBoxHeader('dm_donations', __('Recent Donations:', 'sitemap'), true); ?> <?php if ($this->sg->GetOption('i_hide_donors') !== true) { ?> <iframe border="0" frameborder="0" scrolling="no" allowtransparency="yes" style="width:100%; height:80px;" src="<?php echo $this->sg->GetRedirectLink('sitemap-donorlist'); ?> "> <?php _e('List of the donors', 'sitemap'); ?> </iframe><br /> <a href="<?php echo $this->sg->GetBackLink() . "&sm_hidedonors=true"; ?> "><small><?php _e('Hide this list', 'sitemap'); ?> </small></a><br /><br /> <?php } ?> <a style="float:left; margin-right:5px; border:none;" href="javascript:document.getElementById('sm_donate_form').submit();"><img style="vertical-align:middle; border:none; margin-top:2px;" src="<?php echo $this->sg->GetPluginUrl(); ?> img/icon-donate.gif" border="0" alt="PayPal" title="Help me to continue support of this plugin :)" /></a> <span><small><?php _e('Thanks for your support!', 'sitemap'); ?> </small></span> <div style="clear:left; height:1px;"></div> <?php $this->HtmlPrintBoxFooter(true); ?> </div> </div> <?php } ?> <div class="has-sidebar sm-padded" > <div id="post-body-content" class="<?php if (!$snl) { ?> has-sidebar-content<?php } ?> "> <div class="meta-box-sortabless"> <!-- beta note --> <?php $this->HtmlPrintBoxHeader('sm_rebuild', __('Beta-version', 'sitemap')); ?> <p><strong><?php _e('Thanks for trying out the latest beta release of the sitemap generator plugin!', 'sitemap'); ?> </strong></p> <p><?php printf(__('Please let me know if you experience any problems or if you have any suggestions by posting <a href="%s">here</a>. Your feedback is very important for me!', 'sitemap'), $this->sg->GetRedirectLink('sitemap-beta-feedback')); ?> </p> <?php $this->HtmlPrintBoxFooter(); ?> <!-- Rebuild Area --> <?php $status = GoogleSitemapGeneratorStatus::Load(); $head = __('Search engines haven\'t been notified yet', 'sitemap'); if ($status != null && $status->GetStartTime() > 0) { $st = $status->GetStartTime() + get_option('gmt_offset') * 3600; $head = str_replace("%date%", date_i18n(get_option('date_format'), $st) . " " . date_i18n(get_option('time_format'), $st), __("Result of the last ping, started on %date%.", 'sitemap')); } $this->HtmlPrintBoxHeader('sm_rebuild', $head); ?> <ul> <?php if ($this->sg->OldFileExists()) { echo "<li class=\"sm_error\">" . str_replace("%s", wp_nonce_url($this->sg->GetBackLink() . "&sm_delete_old=true", 'sitemap'), __('There is still a sitemap.xml or sitemap.xml.gz file in your blog directory. Please delete them as no static files are used anymore or <a href="%s">try to delete them automatically</a>.', 'sitemap')) . "</li>"; } echo "<li>" . str_replace("%s", $this->sg->getXmlUrl(), __('The URL to your sitemap index file is: <a href="%s">%s</a>.', 'sitemap')) . "</li>"; if ($status == null) { echo "<li>" . __('Search engines haven\'t been notified yet. Write a post to let them know about your sitemap.', 'sitemap') . "</li>"; } else { $services = $status->GetUsedPingServices(); foreach ($services as $service) { $name = $status->GetServiceName($service); if ($status->GetPingResult($service)) { echo "<li>" . sprintf(__("%s was <b>successfully notified</b> about changes.", 'sitemap'), $name) . "</li>"; $dur = $status->GetPingDuration($service); if ($dur > 4) { echo "<li class=\\sm_optimize\">" . str_replace(array("%time%", "%name%"), array($dur, $name), __("It took %time% seconds to notify %name%, maybe you want to disable this feature to reduce the building time.", 'sitemap')) . "</li>"; } } else { echo "<li class=\"sm_error\">" . str_replace(array("%s", "%name%"), array(wp_nonce_url($this->sg->GetBackLink() . "&sm_ping_service=" . $service . "&noheader=true", 'sitemap'), $name), __('There was a problem while notifying %name%. <a href="%s">View result</a>', 'sitemap')) . "</li>"; } } } echo "<li>" . str_replace("%d", wp_nonce_url($this->sg->GetBackLink() . "&sm_rebuild=true&sm_do_debug=true", 'sitemap'), __('If you encounter any problems with your sitemap you can use the <a href="%d">debug function</a> to get more information.', 'sitemap')) . "</li>"; ?> </ul> <?php $this->HtmlPrintBoxFooter(); ?> <!-- Basic Options --> <?php $this->HtmlPrintBoxHeader('sm_basic_options', __('Basic Options', 'sitemap')); ?> <b><?php _e('Update notification:', 'sitemap'); ?> </b> <a href="<?php echo $this->sg->GetRedirectLink('sitemap-help-options-ping'); ?> "><?php _e('Learn more', 'sitemap'); ?> </a> <ul> <li> <input type="checkbox" id="sm_b_ping" name="sm_b_ping" <?php echo $this->sg->GetOption("b_ping") == true ? "checked=\"checked\"" : ""; ?> /> <label for="sm_b_ping"><?php _e('Notify Google about updates of your Blog', 'sitemap'); ?> </label><br /> <small><?php echo str_replace("%s", $this->sg->GetRedirectLink('sitemap-gwt'), __('No registration required, but you can join the <a href="%s">Google Webmaster Tools</a> to check crawling statistics.', 'sitemap')); ?> </small> </li> <li> <input type="checkbox" id="sm_b_pingmsn" name="sm_b_pingmsn" <?php echo $this->sg->GetOption("b_pingmsn") == true ? "checked=\"checked\"" : ""; ?> /> <label for="sm_b_pingmsn"><?php _e('Notify Bing (formerly MSN Live Search) about updates of your Blog', 'sitemap'); ?> </label><br /> <small><?php echo str_replace("%s", $this->sg->GetRedirectLink('sitemap-lwt'), __('No registration required, but you can join the <a href="%s">Bing Webmaster Tools</a> to check crawling statistics.', 'sitemap')); ?> </small> </li> <li> <input type="checkbox" id="sm_b_pingask" name="sm_b_pingask" <?php echo $this->sg->GetOption("b_pingask") == true ? "checked=\"checked\"" : ""; ?> /> <label for="sm_b_pingask"><?php _e('Notify Ask.com about updates of your Blog', 'sitemap'); ?> </label><br /> <small><?php _e('No registration required.', 'sitemap'); ?> </small> </li> <li> <input type="checkbox" id="sm_b_pingyahoo" name="sm_b_pingyahoo" <?php echo $this->sg->GetOption("b_pingyahoo") == true ? "checked=\"checked\"" : ""; ?> /> <label for="sm_b_pingyahoo"><?php _e('Notify YAHOO about updates of your Blog', 'sitemap'); ?> </label><br /> <label for="sm_b_yahookey"><?php _e('Your Application ID:', 'sitemap'); ?> <input type="text" name="sm_b_yahookey" id="sm_b_yahookey" value="<?php echo esc_attr($this->sg->GetOption("b_yahookey")); ?> " /></label><br /> <small><?php echo str_replace(array("%s1", "%s2"), array($this->sg->GetRedirectLink('sitemap-ykr'), ' (<a href="http://developer.yahoo.net/about/">Web Services by Yahoo!</a>)'), __('Don\'t you have such a key? <a href="%s1">Request one here</a>! %s2', 'sitemap')); ?> </small> </li> <li> <label for="sm_b_robots"> <input type="checkbox" id="sm_b_robots" name="sm_b_robots" <?php echo $this->sg->GetOption("b_robots") == true ? "checked=\"checked\"" : ""; ?> /> <?php _e("Add sitemap URL to the virtual robots.txt file.", 'sitemap'); ?> </label> <br /> <small><?php _e('The virtual robots.txt generated by WordPress is used. A real robots.txt file must NOT exist in the blog directory!', 'sitemap'); ?> </small> </li> </ul> <b><?php _e('Advanced options:', 'sitemap'); ?> </b> <a href="<?php echo $this->sg->GetRedirectLink('sitemap-help-options-adv'); ?> "><?php _e('Learn more', 'sitemap'); ?> </a> <ul> <li> <label for="sm_b_memory"><?php _e('Try to increase the memory limit to:', 'sitemap'); ?> <input type="text" name="sm_b_memory" id="sm_b_memory" style="width:40px;" value="<?php echo esc_attr($this->sg->GetOption("b_memory")); ?> " /></label> (<?php echo htmlspecialchars(__('e.g. "4M", "16M"', 'sitemap')); ?> ) </li> <li> <label for="sm_b_time"><?php _e('Try to increase the execution time limit to:', 'sitemap'); ?> <input type="text" name="sm_b_time" id="sm_b_time" style="width:40px;" value="<?php echo esc_attr($this->sg->GetOption("b_time") === -1 ? '' : $this->sg->GetOption("b_time")); ?> " /></label> (<?php echo htmlspecialchars(__('in seconds, e.g. "60" or "0" for unlimited', 'sitemap')); ?> ) </li> <li> <?php $useDefStyle = $this->sg->GetDefaultStyle() && $this->sg->GetOption('b_style_default') === true; ?> <label for="sm_b_style"><?php _e('Include a XSLT stylesheet:', 'sitemap'); ?> <input <?php echo $useDefStyle ? 'disabled="disabled" ' : ''; ?> type="text" name="sm_b_style" id="sm_b_style" value="<?php echo esc_attr($this->sg->GetOption("b_style")); ?> " /></label> (<?php _e('Full or relative URL to your .xsl file', 'sitemap'); ?> ) <?php if ($this->sg->GetDefaultStyle()) { ?> <label for="sm_b_style_default"><input <?php echo $useDefStyle ? 'checked="checked" ' : ''; ?> type="checkbox" id="sm_b_style_default" name="sm_b_style_default" onclick="document.getElementById('sm_b_style').disabled = this.checked;" /> <?php _e('Use default', 'sitemap'); ?> <?php } ?> </li> <li> <label for="sm_b_html"> <input type="checkbox" id="sm_b_html" name="sm_b_html" <?php echo $this->sg->GetOption("b_html") == true ? "checked=\"checked\"" : ""; ?> /> <?php _e('Include sitemap in HTML format', 'sitemap'); ?> </label> </li> </ul> <?php $this->HtmlPrintBoxFooter(); ?> <?php $this->HtmlPrintBoxHeader('sm_pages', __('Additional pages', 'sitemap')); ?> <?php _e('Here you can specify files or URLs which should be included in the sitemap, but do not belong to your Blog/WordPress.<br />For example, if your domain is www.foo.com and your blog is located on www.foo.com/blog you might want to include your homepage at www.foo.com', 'sitemap'); echo "<ul><li>"; echo "<strong>" . __('Note', 'sitemap') . "</strong>: "; _e("If your blog is in a subdirectory and you want to add pages which are NOT in the blog directory or beneath, you MUST place your sitemap file in the root directory (Look at the "Location of your sitemap file" section on this page)!", 'sitemap'); echo "</li><li>"; echo "<strong>" . __('URL to the page', 'sitemap') . "</strong>: "; _e("Enter the URL to the page. Examples: http://www.foo.com/index.html or www.foo.com/home ", 'sitemap'); echo "</li><li>"; echo "<strong>" . __('Priority', 'sitemap') . "</strong>: "; _e("Choose the priority of the page relative to the other pages. For example, your homepage might have a higher priority than your imprint.", 'sitemap'); echo "</li><li>"; echo "<strong>" . __('Last Changed', 'sitemap') . "</strong>: "; _e("Enter the date of the last change as YYYY-MM-DD (2005-12-31 for example) (optional).", 'sitemap'); echo "</li></ul>"; ?> <script type="text/javascript"> //<![CDATA[ <?php $freqVals = "'" . implode("','", array_keys($this->sg->GetFreqNames())) . "'"; $freqNames = "'" . implode("','", array_values($this->sg->GetFreqNames())) . "'"; ?> var changeFreqVals = new Array( <?php echo $freqVals; ?> ); var changeFreqNames= new Array( <?php echo $freqNames; ?> ); var priorities= new Array(0 <?php for ($i = 0.1; $i < 1; $i += 0.1) { echo "," . number_format($i, 1, ".", ""); } ?> ); var pages = [ <?php $pages = $this->sg->GetPages(); if (count($pages) > 0) { for ($i = 0; $i < count($this->sg->GetPages()); $i++) { $v = $pages[$i]; if ($i > 0) { echo ","; } echo '{url:"' . esc_js($v->getUrl()) . '", priority:' . esc_js(number_format($v->getPriority(), 1, ".", "")) . ', changeFreq:"' . esc_js($v->getChangeFreq()) . '", lastChanged:"' . esc_js($v != null && $v->getLastMod() > 0 ? date("Y-m-d", $v->getLastMod()) : "") . '"}'; } } ?> ]; //]]> </script> <script type="text/javascript" src="<?php echo $this->sg->GetPluginUrl(); ?> img/sitemap.js"></script> <table width="100%" cellpadding="3" cellspacing="3" id="sm_pageTable"> <tr> <th scope="col"><?php _e('URL to the page', 'sitemap'); ?> </th> <th scope="col"><?php _e('Priority', 'sitemap'); ?> </th> <th scope="col"><?php _e('Change Frequency', 'sitemap'); ?> </th> <th scope="col"><?php _e('Last Changed', 'sitemap'); ?> </th> <th scope="col"><?php _e('#', 'sitemap'); ?> </th> </tr> <?php if (count($pages) <= 0) { ?> <tr> <td colspan="5" align="center"><?php _e('No pages defined.', 'sitemap'); ?> </td> </tr><?php } ?> </table> <a href="javascript:void(0);" onclick="sm_addPage();"><?php _e("Add new page", 'sitemap'); ?> </a> <?php $this->HtmlPrintBoxFooter(); ?> <!-- AutoPrio Options --> <?php $this->HtmlPrintBoxHeader('sm_postprio', __('Post Priority', 'sitemap')); ?> <p><?php _e('Please select how the priority of each post should be calculated:', 'sitemap'); ?> </p> <ul> <li><p><input type="radio" name="sm_b_prio_provider" id="sm_b_prio_provider__0" value="" <?php echo $this->HtmlGetChecked($this->sg->GetOption("b_prio_provider"), ""); ?> /> <label for="sm_b_prio_provider__0"><?php _e('Do not use automatic priority calculation', 'sitemap'); ?> </label><br /><?php _e('All posts will have the same priority which is defined in "Priorities"', 'sitemap'); ?> </p></li> <?php $provs = $this->sg->GetPrioProviders(); for ($i = 0; $i < count($provs); $i++) { echo "<li><p><input type=\"radio\" id=\"sm_b_prio_provider_{$i}\" name=\"sm_b_prio_provider\" value=\"" . $provs[$i] . "\" " . $this->HtmlGetChecked($this->sg->GetOption("b_prio_provider"), $provs[$i]) . " /> <label for=\"sm_b_prio_provider_{$i}\">" . call_user_func(array($provs[$i], 'getName')) . "</label><br />" . call_user_func(array($provs[$i], 'getDescription')) . "</p></li>"; } ?> </ul> <?php $this->HtmlPrintBoxFooter(); ?> <!-- Includes --> <?php $this->HtmlPrintBoxHeader('sm_includes', __('Sitemap Content', 'sitemap')); ?> <b><?php _e('WordPress standard content', 'sitemap'); ?> :</b> <ul> <li> <label for="sm_in_home"> <input type="checkbox" id="sm_in_home" name="sm_in_home" <?php echo $this->sg->GetOption("in_home") == true ? "checked=\"checked\"" : ""; ?> /> <?php _e('Include homepage', 'sitemap'); ?> </label> </li> <li> <label for="sm_in_posts"> <input type="checkbox" id="sm_in_posts" name="sm_in_posts" <?php echo $this->sg->GetOption("in_posts") == true ? "checked=\"checked\"" : ""; ?> /> <?php _e('Include posts', 'sitemap'); ?> </label> </li> <li> <label for="sm_in_pages"> <input type="checkbox" id="sm_in_pages" name="sm_in_pages" <?php echo $this->sg->GetOption("in_pages") == true ? "checked=\"checked\"" : ""; ?> /> <?php _e('Include static pages', 'sitemap'); ?> </label> </li> <li> <label for="sm_in_cats"> <input type="checkbox" id="sm_in_cats" name="sm_in_cats" <?php echo $this->sg->GetOption("in_cats") == true ? "checked=\"checked\"" : ""; ?> /> <?php _e('Include categories', 'sitemap'); ?> </label> </li> <li> <label for="sm_in_arch"> <input type="checkbox" id="sm_in_arch" name="sm_in_arch" <?php echo $this->sg->GetOption("in_arch") == true ? "checked=\"checked\"" : ""; ?> /> <?php _e('Include archives', 'sitemap'); ?> </label> </li> <li> <label for="sm_in_auth"> <input type="checkbox" id="sm_in_auth" name="sm_in_auth" <?php echo $this->sg->GetOption("in_auth") == true ? "checked=\"checked\"" : ""; ?> /> <?php _e('Include author pages', 'sitemap'); ?> </label> </li> <?php if ($this->sg->IsTaxonomySupported()) { ?> <li> <label for="sm_in_tags"> <input type="checkbox" id="sm_in_tags" name="sm_in_tags" <?php echo $this->sg->GetOption("in_tags") == true ? "checked=\"checked\"" : ""; ?> /> <?php _e('Include tag pages', 'sitemap'); ?> </label> </li> <?php } ?> </ul> <?php if ($this->sg->IsTaxonomySupported()) { $taxonomies = $this->sg->GetCustomTaxonomies(); $enabledTaxonomies = $this->sg->GetOption('in_tax'); if (count($taxonomies) > 0) { ?> <b><?php _e('Custom taxonomies', 'sitemap'); ?> :</b><ul><?php foreach ($taxonomies as $taxName) { $taxonomy = get_taxonomy($taxName); $selected = in_array($taxonomy->name, $enabledTaxonomies); ?> <li> <label for="sm_in_tax[<?php echo $taxonomy->name; ?> ]"> <input type="checkbox" id="sm_in_tax[<?php echo $taxonomy->name; ?> ]" name="sm_in_tax[<?php echo $taxonomy->name; ?> ]" <?php echo $selected ? "checked=\"checked\"" : ""; ?> /> <?php echo str_replace('%s', $taxonomy->label, __('Include taxonomy pages for %s', 'sitemap')); ?> </label> </li> <?php } ?> </ul><?php } } if ($this->sg->IsCustomPostTypesSupported()) { $custom_post_types = $this->sg->GetCustomPostTypes(); $enabledPostTypes = $this->sg->GetOption('in_customtypes'); if (count($custom_post_types) > 0) { ?> <b><?php _e('Custom post types', 'sitemap'); ?> :</b><ul><?php foreach ($custom_post_types as $post_type) { $post_type_object = get_post_type_object($post_type); if (is_array($enabledPostTypes)) { $selected = in_array($post_type_object->name, $enabledPostTypes); } ?> <li> <label for="sm_in_customtypes[<?php echo $post_type_object->name; ?> ]"> <input type="checkbox" id="sm_in_customtypes[<?php echo $post_type_object->name; ?> ]" name="sm_in_customtypes[<?php echo $post_type_object->name; ?> ]" <?php echo $selected ? "checked=\"checked\"" : ""; ?> /> <?php echo str_replace('%s', $post_type_object->label, __('Include custom post type %s', 'sitemap')); ?> </label> </li> <?php } ?> </ul><?php } } ?> <b><?php _e('Further options', 'sitemap'); ?> :</b> <ul> <li> <label for="sm_in_lastmod"> <input type="checkbox" id="sm_in_lastmod" name="sm_in_lastmod" <?php echo $this->sg->GetOption("in_lastmod") == true ? "checked=\"checked\"" : ""; ?> /> <?php _e('Include the last modification time.', 'sitemap'); ?> </label><br /> <small><?php _e('This is highly recommended and helps the search engines to know when your content has changed. This option affects <i>all</i> sitemap entries.', 'sitemap'); ?> </small> </li> </ul> <?php $this->HtmlPrintBoxFooter(); ?> <!-- Excluded Items --> <?php $this->HtmlPrintBoxHeader('sm_excludes', __('Excluded items', 'sitemap')); ?> <b><?php _e('Excluded categories', 'sitemap'); ?> :</b> <cite style="display:block; margin-left:40px;"><?php _e("Note", "sitemap"); ?> : <?php _e("Using this feature will increase build time and memory usage!", "sitemap"); ?> </cite> <div style="border-color:#CEE1EF; border-style:solid; border-width:2px; height:10em; margin:5px 0px 5px 40px; overflow:auto; padding:0.5em 0.5em;"> <ul> <?php wp_category_checklist(0, 0, $this->sg->GetOption("b_exclude_cats"), false); ?> </ul> </div> <b><?php _e("Exclude posts", "sitemap"); ?> :</b> <div style="margin:5px 0 13px 40px;"> <label for="sm_b_exclude"><?php _e('Exclude the following posts or pages:', 'sitemap'); ?> <small><?php _e('List of IDs, separated by comma', 'sitemap'); ?> </small><br /> <input name="sm_b_exclude" id="sm_b_exclude" type="text" style="width:400px;" value="<?php echo esc_attr(implode(",", $this->sg->GetOption("b_exclude"))); ?> " /></label><br /> <cite><?php _e("Note", "sitemap"); ?> : <?php _e("Child posts won't be excluded automatically!", "sitemap"); ?> </cite> </div> <?php $this->HtmlPrintBoxFooter(); ?> <!-- Change frequencies --> <?php $this->HtmlPrintBoxHeader('sm_change_frequencies', __('Change frequencies', 'sitemap')); ?> <p> <b><?php _e('Note', 'sitemap'); ?> :</b> <?php _e('Please note that the value of this tag is considered a hint and not a command. Even though search engine crawlers consider this information when making decisions, they may crawl pages marked "hourly" less frequently than that, and they may crawl pages marked "yearly" more frequently than that. It is also likely that crawlers will periodically crawl pages marked "never" so that they can handle unexpected changes to those pages.', 'sitemap'); ?> </p> <ul> <li> <label for="sm_cf_home"> <select id="sm_cf_home" name="sm_cf_home"><?php $this->HtmlGetFreqNames($this->sg->GetOption("cf_home")); ?> </select> <?php _e('Homepage', 'sitemap'); ?> </label> </li> <li> <label for="sm_cf_posts"> <select id="sm_cf_posts" name="sm_cf_posts"><?php $this->HtmlGetFreqNames($this->sg->GetOption("cf_posts")); ?> </select> <?php _e('Posts', 'sitemap'); ?> </label> </li> <li> <label for="sm_cf_pages"> <select id="sm_cf_pages" name="sm_cf_pages"><?php $this->HtmlGetFreqNames($this->sg->GetOption("cf_pages")); ?> </select> <?php _e('Static pages', 'sitemap'); ?> </label> </li> <li> <label for="sm_cf_cats"> <select id="sm_cf_cats" name="sm_cf_cats"><?php $this->HtmlGetFreqNames($this->sg->GetOption("cf_cats")); ?> </select> <?php _e('Categories', 'sitemap'); ?> </label> </li> <li> <label for="sm_cf_arch_curr"> <select id="sm_cf_arch_curr" name="sm_cf_arch_curr"><?php $this->HtmlGetFreqNames($this->sg->GetOption("cf_arch_curr")); ?> </select> <?php _e('The current archive of this month (Should be the same like your homepage)', 'sitemap'); ?> </label> </li> <li> <label for="sm_cf_arch_old"> <select id="sm_cf_arch_old" name="sm_cf_arch_old"><?php $this->HtmlGetFreqNames($this->sg->GetOption("cf_arch_old")); ?> </select> <?php _e('Older archives (Changes only if you edit an old post)', 'sitemap'); ?> </label> </li> <?php if ($this->sg->IsTaxonomySupported()) { ?> <li> <label for="sm_cf_tags"> <select id="sm_cf_tags" name="sm_cf_tags"><?php $this->HtmlGetFreqNames($this->sg->GetOption("cf_tags")); ?> </select> <?php _e('Tag pages', 'sitemap'); ?> </label> </li> <?php } ?> <li> <label for="sm_cf_auth"> <select id="sm_cf_auth" name="sm_cf_auth"><?php $this->HtmlGetFreqNames($this->sg->GetOption("cf_auth")); ?> </select> <?php _e('Author pages', 'sitemap'); ?> </label> </li> </ul> <?php $this->HtmlPrintBoxFooter(); ?> <!-- Priorities --> <?php $this->HtmlPrintBoxHeader('sm_priorities', __('Priorities', 'sitemap')); ?> <ul> <li> <label for="sm_pr_home"> <select id="sm_pr_home" name="sm_pr_home"><?php $this->HtmlGetPriorityValues($this->sg->GetOption("pr_home")); ?> </select> <?php _e('Homepage', 'sitemap'); ?> </label> </li> <li> <label for="sm_pr_posts"> <select id="sm_pr_posts" name="sm_pr_posts"><?php $this->HtmlGetPriorityValues($this->sg->GetOption("pr_posts")); ?> </select> <?php _e('Posts (If auto calculation is disabled)', 'sitemap'); ?> </label> </li> <li> <label for="sm_pr_posts_min"> <select id="sm_pr_posts_min" name="sm_pr_posts_min"><?php $this->HtmlGetPriorityValues($this->sg->GetOption("pr_posts_min")); ?> </select> <?php _e('Minimum post priority (Even if auto calculation is enabled)', 'sitemap'); ?> </label> </li> <li> <label for="sm_pr_pages"> <select id="sm_pr_pages" name="sm_pr_pages"><?php $this->HtmlGetPriorityValues($this->sg->GetOption("pr_pages")); ?> </select> <?php _e('Static pages', 'sitemap'); ?> </label> </li> <li> <label for="sm_pr_cats"> <select id="sm_pr_cats" name="sm_pr_cats"><?php $this->HtmlGetPriorityValues($this->sg->GetOption("pr_cats")); ?> </select> <?php _e('Categories', 'sitemap'); ?> </label> </li> <li> <label for="sm_pr_arch"> <select id="sm_pr_arch" name="sm_pr_arch"><?php $this->HtmlGetPriorityValues($this->sg->GetOption("pr_arch")); ?> </select> <?php _e('Archives', 'sitemap'); ?> </label> </li> <?php if ($this->sg->IsTaxonomySupported()) { ?> <li> <label for="sm_pr_tags"> <select id="sm_pr_tags" name="sm_pr_tags"><?php $this->HtmlGetPriorityValues($this->sg->GetOption("pr_tags")); ?> </select> <?php _e('Tag pages', 'sitemap'); ?> </label> </li> <?php } ?> <li> <label for="sm_pr_auth"> <select id="sm_pr_auth" name="sm_pr_auth"><?php $this->HtmlGetPriorityValues($this->sg->GetOption("pr_auth")); ?> </select> <?php _e('Author pages', 'sitemap'); ?> </label> </li> </ul> <?php $this->HtmlPrintBoxFooter(); ?> </div> <div> <p class="submit"> <?php wp_nonce_field('sitemap'); ?> <input type="submit" class="button-primary" name="sm_update" value="<?php _e('Update options', 'sitemap'); ?> " /> <input type="submit" onclick='return confirm("Do you really want to reset your configuration?");' class="sm_warning" name="sm_reset_config" value="<?php _e('Reset options', 'sitemap'); ?> " /> </p> </div> </div> </div> </div> <script type="text/javascript">if(typeof(sm_loadPages)=='function') addLoadEvent(sm_loadPages); </script> </form> <form action="https://www.paypal.com/cgi-bin/webscr" method="post" id="sm_donate_form"> <?php $lc = array("en" => array("cc" => "USD", "lc" => "US"), "en-GB" => array("cc" => "GBP", "lc" => "GB"), "de" => array("cc" => "EUR", "lc" => "DE")); $myLc = $lc["en"]; $wpl = get_bloginfo('language'); if (!empty($wpl)) { if (array_key_exists($wpl, $lc)) { $myLc = $lc[$wpl]; } else { $wpl = substr($wpl, 0, 2); if (array_key_exists($wpl, $lc)) { $myLc = $lc[$wpl]; } } } ?> <input type="hidden" name="cmd" value="_xclick" /> <input type="hidden" name="business" value="<?php echo "donate" . "@" . "arnebra" . "chhold.de"; ?> " /> <input type="hidden" name="item_name" value="Sitemap Generator for WordPress. Please tell me if if you don't want to be listed on the donator list." /> <input type="hidden" name="no_shipping" value="1" /> <input type="hidden" name="return" value="<?php echo 'http://' . $_SERVER['HTTP_HOST'] . $this->sg->GetBackLink(); ?> &sm_donated=true" /> <input type="hidden" name="item_number" value="0001" /> <input type="hidden" name="currency_code" value="<?php echo $myLc["cc"]; ?> " /> <input type="hidden" name="bn" value="PP-BuyNowBF" /> <input type="hidden" name="lc" value="<?php echo $myLc["lc"]; ?> " /> <input type="hidden" name="rm" value="2" /> <input type="hidden" name="on0" value="Your Website" /> <input type="hidden" name="os0" value="<?php echo get_bloginfo("url"); ?> "/> </form> </div> <?php }
/** * Displays the option page * * @since 3.0 * @access public * @author Arne Brachhold */ function HtmlShowOptionsPage() { global $wp_version; $this->Initate(); //All output should go in this var which get printed at the end $message = ""; if (isset($_GET['sm_donated'])) { $this->SetOption('i_donated', true); $this->SaveOptions(); } if (isset($_GET['sm_hide_note'])) { $this->SetOption('i_hide_note', true); $this->SaveOptions(); } if (isset($_GET['sm_hidedonors'])) { $this->SetOption('i_hide_donors', true); $this->SaveOptions(); } if (isset($_GET['sm_donated']) || $this->GetOption('i_donated') === true && $this->GetOption('i_hide_donated') !== true) { ?> <div class="updated"> <strong><p><?php _e('Thank you very much for your donation. You help me to continue support and development of this plugin and other free software!', 'sitemap'); ?> <a href="<?php echo $this->GetBackLink() . "&sm_hidedonate=true"; ?> "><small style="font-weight:normal;"><?php _e('Hide this notice', 'sitemap'); ?> </small></a></p></strong> </div> <?php } else { if ($this->GetOption('i_donated') !== true && $this->GetOption('i_install_date') > 0 && $this->GetOption('i_hide_note') !== true && time() > $this->GetOption('i_install_date') + 60 * 60 * 24 * 30) { ?> <div class="updated"> <strong><p><?php echo str_replace("%s", $this->GetRedirectLink("sitemap-donate-note"), __('Thanks for using this plugin! You\'ve installed this plugin over a month ago. If it works and your are satisfied with the results, isn\'t it worth at least one dollar? <a href="%s">Donations</a> help me to continue support and development of this <i>free</i> software! <a href="%s">Sure, no problem!</a>', 'sitemap')); ?> <a href="<?php echo $this->GetBackLink() . "&sm_hide_note=true"; ?> " style="float:right; display:block; border:none;"><small style="font-weight:normal; "><?php _e('No thanks, please don\'t bug me anymore!', 'sitemap'); ?> </small></a></p></strong> <div style="clear:right;"></div> </div> <?php } } if (!empty($_REQUEST["sm_rebuild"])) { //Pressed Button: Rebuild Sitemap if (isset($_GET["sm_do_debug"]) && $_GET["sm_do_debug"] == "true") { //Check again, just for the case that something went wrong before if (!current_user_can("administrator")) { echo '<p>Please log in as admin</p>'; return; } $oldErr = error_reporting(E_ALL); $oldIni = ini_set("display_errors", 1); echo '<div class="wrap">'; echo '<h2>' . __('XML Sitemap Generator for WordPress', 'sitemap') . " " . $this->GetVersion() . '</h2>'; echo '<p>This is the debug mode of the XML Sitemap Generator. It will show all PHP notices and warnings as well as the internal logs, messages and configuration.</p>'; echo '<p style="font-weight:bold; color:red; padding:5px; border:1px red solid; text-align:center;">DO NOT POST THIS INFORMATION ON PUBLIC PAGES LIKE SUPPORT FORUMS AS IT MAY CONTAIN PASSWORDS OR SECRET SERVER INFORMATION!</p>'; echo "<h3>WordPress and PHP Information</h3>"; echo '<p>WordPress ' . $GLOBALS['wp_version'] . ' with ' . ' DB ' . $GLOBALS['wp_db_version'] . ' on PHP ' . phpversion() . '</p>'; echo '<p>Plugin version: ' . $this->_version . ' (' . $this->_svnVersion . ')'; echo '<h4>Environment</h4>'; echo "<pre>"; $sc = $_SERVER; unset($sc["HTTP_COOKIE"]); print_r($sc); echo "</pre>"; echo "<h4>WordPress Config</h4>"; echo "<pre>"; $opts = wp_load_alloptions(); $popts = array(); foreach ($opts as $k => $v) { //Try to filter out passwords etc... if (preg_match("/(pass|login|pw|secret|user|usr)/si", $v)) { continue; } $popts[$k] = htmlspecialchars($v); } print_r($popts); echo "</pre>"; echo '<h4>Sitemap Config</h4>'; echo "<pre>"; print_r($this->_options); echo "</pre>"; echo '<h3>Errors, Warnings, Notices</h3>'; echo '<div>'; $status = $this->BuildSitemap(); echo '</div>'; echo '<h3>MySQL Queries</h3>'; if (defined('SAVEQUERIES') && SAVEQUERIES) { echo '<pre>'; var_dump($GLOBALS['wpdb']->queries); echo '</pre>'; $total = 0; foreach ($GLOBALS['wpdb']->queries as $q) { $total += $q[1]; } echo '<h4>Total Query Time</h4>'; echo '<pre>' . count($GLOBALS['wpdb']->queries) . ' queries in ' . round($total, 2) . ' seconds.</pre>'; } else { echo '<p>Please edit wp-db.inc.php in wp-includes and set SAVEQUERIES to true if you want to see the queries.</p>'; } echo "<h3>Build Process Results</h3>"; echo "<pre>"; print_r($status); echo "</pre>"; echo '<p>Done. <a href="' . $this->GetBackLink() . '&sm_rebuild=true&sm_do_debug=true">Rebuild</a> or <a href="' . $this->GetBackLink() . '">Return</a></p>'; echo '<p style="font-weight:bold; color:red; padding:5px; border:1px red solid; text-align:center;">DO NOT POST THIS INFORMATION ON PUBLIC PAGES LIKE SUPPORT FORUMS AS IT MAY CONTAIN PASSWORDS OR SECRET SERVER INFORMATION!</p>'; echo '</div>'; @error_reporting($oldErr); @ini_set("display_errors", $oldIni); return; } else { $this->BuildSitemap(); //Redirect so the sm_rebuild GET parameter no longer exists. @header("location: " . $this->GetBackLink()); //If there was already any other output, the header redirect will fail echo '<script type="text/javascript">location.replace("' . $this->GetBackLink() . '");</script>'; echo '<noscript><a href="' . $this->GetBackLink() . '">Click here to continue</a></noscript>'; exit; } } else { if (!empty($_POST['sm_update'])) { //Pressed Button: Update Config foreach ($this->_options as $k => $v) { //Check vor values and convert them into their types, based on the category they are in if (!isset($_POST[$k])) { $_POST[$k] = ""; } // Empty string will get false on 2bool and 0 on 2float //Options of the category "Basic Settings" are boolean, except the filename and the autoprio provider if (substr($k, 0, 5) == "sm_b_") { if ($k == "sm_b_filename" || $k == "sm_b_fileurl_manual" || $k == "sm_b_filename_manual" || $k == "sm_b_prio_provider" || $k == "sm_b_manual_key" || $k == "sm_b_yahookey" || $k == "sm_b_style" || $k == "sm_b_memory") { if ($k == "sm_b_filename_manual" && strpos($_POST[$k], "\\") !== false) { $_POST[$k] = stripslashes($_POST[$k]); } $this->_options[$k] = (string) $_POST[$k]; } else { if ($k == "sm_b_location_mode") { $tmp = (string) $_POST[$k]; $tmp = strtolower($tmp); if ($tmp == "auto" || ($tmp = "manual")) { $this->_options[$k] = $tmp; } else { $this->_options[$k] = "auto"; } } else { if ($k == "sm_b_time" || $k == "sm_b_max_posts") { if ($_POST[$k] == '') { $_POST[$k] = -1; } $this->_options[$k] = intval($_POST[$k]); } else { if ($k == "sm_i_install_date") { if ($this->GetOption('i_install_date') <= 0) { $this->_options[$k] = time(); } } else { if ($k == "sm_b_exclude") { $IDss = array(); $IDs = explode(",", $_POST[$k]); for ($x = 0; $x < count($IDs); $x++) { $ID = intval(trim($IDs[$x])); if ($ID > 0) { $IDss[] = $ID; } } $this->_options[$k] = $IDss; } else { $this->_options[$k] = (bool) $_POST[$k]; } } } } } //Options of the category "Includes" are boolean } else { if (substr($k, 0, 6) == "sm_in_") { $this->_options[$k] = (bool) $_POST[$k]; //Options of the category "Change frequencies" are string } else { if (substr($k, 0, 6) == "sm_cf_") { $this->_options[$k] = (string) $_POST[$k]; //Options of the category "Priorities" are float } else { if (substr($k, 0, 6) == "sm_pr_") { $this->_options[$k] = (double) $_POST[$k]; } } } } } //Apply page changes from POST $this->_pages = $this->HtmlApplyPages(); if ($this->SaveOptions()) { $message .= __('Configuration updated', 'sitemap') . "<br />"; } else { $message .= __('Error while saving options', 'sitemap') . "<br />"; } if ($this->SavePages()) { $message .= __("Pages saved", 'sitemap') . "<br />"; } else { $message .= __('Error while saving pages', 'sitemap') . "<br />"; } if ($this->GetOption('sm_b_robots') === true) { if ($this->WriteRobotsFile()) { $message .= str_replace("%s", $this->GetRobotsFileUrl(), __("<a href=\"%s\">Robots.txt</a> file saved", 'sitemap')) . "<br />"; } else { $message .= __("Error while saving Robots.txt file", 'sitemap') . "<br />"; } } } else { if (!empty($_POST["sm_reset_config"])) { //Pressed Button: Reset Config $this->InitOptions(); $this->SaveOptions(); $message .= __('The default configuration was restored.', 'sitemap'); } } } //Print out the message to the user, if any if ($message != "") { ?> <div class="updated"><strong><p><?php echo $message; ?> </p></strong></div><?php } ?> <style type="text/css"> li.sm_hint { color:green; } li.sm_optimize { color:orange; } li.sm_error { color:red; } input.sm_warning:hover { background: #ce0000; color: #fff; } a.sm_button { padding:4px; display:block; padding-left:25px; background-repeat:no-repeat; background-position:5px 50%; text-decoration:none; border:none; } a.sm_button:hover { border-bottom-width:1px; } a.sm_donatePayPal { background-image:url(<?php echo $this->GetResourceLink("{8C0BAD8C-77FA-4842-956E-CDEF7635F2C7}"); ?> ); } a.sm_donateAmazon { background-image:url(<?php echo $this->GetResourceLink("{9866EAFC-3F85-44df-8A72-4CD1566E2D4F}"); ?> ); } a.sm_pluginHome { background-image:url(<?php echo $this->GetResourceLink("{AD59B831-BF3D-49b1-A649-9DD8EDA1798A}"); ?> ); } a.sm_pluginList { background-image:url(<?php echo $this->GetResourceLink("{FFA3E2B1-D2B1-4c66-B8A4-5F6E7D8781F2}"); ?> ); } a.sm_pluginSupport { background-image:url(<?php echo $this->GetResourceLink("{234C74C9-3DF4-4ae2-A12E-C157C67059D8}"); ?> ); } a.sm_resGoogle { background-image:url(<?php echo $this->GetResourceLink("{7E5622AF-0DE3-4e43-99F9-33EC61308376}"); ?> ); } a.sm_resYahoo { background-image:url(<?php echo $this->GetResourceLink("{BC853F21-410E-47ff-BB6D-2B89C9D7E76B}"); ?> ); } a.sm_resLive { background-image:url(<?php echo $this->GetResourceLink("{E36B4B70-BFF0-4792-B08F-3FA90501E8BB}"); ?> ); } </style> <?php if (version_compare($wp_version, "2.5", ">=")) { ?> <style type="text/css"> div#moremeta { float:right; width:200px; margin-left:10px; } div#advancedstuff { width:770px; } div#poststuff { margin-top:10px; } fieldset.dbx-box { margin-bottom:5px; } </style> <!--[if lt IE 7]> <style type="text/css"> div#advancedstuff { width:735px; } </style> <![endif]--> <?php } ?> <div class="wrap" id="sm_div"> <form method="post" action="<?php echo $this->GetBackLink(); ?> "> <h2><?php _e('XML Sitemap Generator for WordPress', 'sitemap'); echo " " . $this->GetVersion(); ?> </h2> <?php if (version_compare($wp_version, "2.5", "<")) { ?> <script type="text/javascript" src="../wp-includes/js/dbx.js"></script> <script type="text/javascript"> //<![CDATA[ addLoadEvent( function() { var manager = new dbxManager('sm_sitemap_meta_33'); //create new docking boxes group var meta = new dbxGroup( 'grabit', // container ID [/-_a-zA-Z0-9/] 'vertical', // orientation ['vertical'|'horizontal'] '10', // drag threshold ['n' pixels] 'no', // restrict drag movement to container axis ['yes'|'no'] '10', // animate re-ordering [frames per transition, or '0' for no effect] 'yes', // include open/close toggle buttons ['yes'|'no'] 'open', // default state ['open'|'closed'] <?php echo "'" . js_escape(__('open')); ?> ', // word for "open", as in "open this box" <?php echo "'" . js_escape(__('close')); ?> ', // word for "close", as in "close this box" <?php echo "'" . js_escape(__('click-down and drag to move this box')); ?> ', // sentence for "move this box" by mouse <?php echo "'" . js_escape(__('click to %toggle% this box')); ?> ', // pattern-match sentence for "(open|close) this box" by mouse <?php echo "'" . js_escape(__('use the arrow keys to move this box')); ?> ', // sentence for "move this box" by keyboard <?php echo "'" . js_escape(__(', or press the enter key to %toggle% it')); ?> ', // pattern-match sentence-fragment for "(open|close) this box" by keyboard '%mytitle% [%dbxtitle%]' // pattern-match syntax for title-attribute conflicts ); var advanced = new dbxGroup( 'advancedstuff', // container ID [/-_a-zA-Z0-9/] 'vertical', // orientation ['vertical'|'horizontal'] '10', // drag threshold ['n' pixels] 'yes', // restrict drag movement to container axis ['yes'|'no'] '10', // animate re-ordering [frames per transition, or '0' for no effect] 'yes', // include open/close toggle buttons ['yes'|'no'] 'open', // default state ['open'|'closed'] <?php echo "'" . js_escape(__('open')); ?> ', // word for "open", as in "open this box" <?php echo "'" . js_escape(__('close')); ?> ', // word for "close", as in "close this box" <?php echo "'" . js_escape(__('click-down and drag to move this box')); ?> ', // sentence for "move this box" by mouse <?php echo "'" . js_escape(__('click to %toggle% this box')); ?> ', // pattern-match sentence for "(open|close) this box" by mouse <?php echo "'" . js_escape(__('use the arrow keys to move this box')); ?> ', // sentence for "move this box" by keyboard <?php echo "'" . js_escape(__(', or press the enter key to %toggle% it')); ?> ', // pattern-match sentence-fragment for "(open|close) this box" by keyboard '%mytitle% [%dbxtitle%]' // pattern-match syntax for title-attribute conflicts ); }); //]]> </script> <?php } ?> <div id="poststuff"> <div id="moremeta"> <div id="grabit" class="dbx-group"> <fieldset id="sm_pnres" class="dbx-box"> <h3 class="dbx-handle"><?php _e('About this Plugin:', 'sitemap'); ?> </h3> <div class="dbx-content"> <a class="sm_button sm_pluginHome" href="<?php echo $this->GetRedirectLink('sitemap-home'); ?> "><?php _e('Plugin Homepage', 'sitemap'); ?> </a> <a class="sm_button sm_pluginList" href="<?php echo $this->GetRedirectLink('sitemap-list'); ?> "><?php _e('Notify List', 'sitemap'); ?> </a> <a class="sm_button sm_pluginSupport" href="<?php echo $this->GetRedirectLink('sitemap-support'); ?> "><?php _e('Support Forum', 'sitemap'); ?> </a> <a class="sm_button sm_donatePayPal" href="<?php echo $this->GetRedirectLink('sitemap-paypal'); ?> "><?php _e('Donate with PayPal', 'sitemap'); ?> </a> <a class="sm_button sm_donateAmazon" href="<?php echo $this->GetRedirectLink('sitemap-amazon'); ?> "><?php _e('My Amazon Wish List', 'sitemap'); ?> </a> <?php if (__('translator_name', 'sitemap') != 'translator_name') { ?> <a class="sm_button sm_pluginSupport" href="<?php _e('translator_url', 'sitemap'); ?> "><?php _e('translator_name', 'sitemap'); ?> </a><?php } ?> </div> </fieldset> <fieldset id="sm_smres" class="dbx-box"> <h3 class="dbx-handle"><?php _e('Sitemap Resources:', 'sitemap'); ?> </h3> <div class="dbx-content"> <a class="sm_button sm_resGoogle" href="<?php echo $this->GetRedirectLink('sitemap-gwt'); ?> "><?php _e('Webmaster Tools', 'sitemap'); ?> </a> <a class="sm_button sm_resGoogle" href="<?php echo $this->GetRedirectLink('sitemap-gwb'); ?> "><?php _e('Webmaster Blog', 'sitemap'); ?> </a> <a class="sm_button sm_resYahoo" href="<?php echo $this->GetRedirectLink('sitemap-yse'); ?> "><?php _e('Site Explorer', 'sitemap'); ?> </a> <a class="sm_button sm_resYahoo" href="<?php echo $this->GetRedirectLink('sitemap-ywb'); ?> "><?php _e('Search Blog', 'sitemap'); ?> </a> <a class="sm_button sm_resLive" href="<?php echo $this->GetRedirectLink('sitemap-lwt'); ?> "><?php _e('Webmaster Tools', 'sitemap'); ?> </a> <a class="sm_button sm_resLive" href="<?php echo $this->GetRedirectLink('sitemap-lswcb'); ?> "><?php _e('Webmaster Center Blog', 'sitemap'); ?> </a> <br /> <a class="sm_button sm_resGoogle" href="<?php echo $this->GetRedirectLink('sitemap-prot'); ?> "><?php _e('Sitemaps Protocol', 'sitemap'); ?> </a> <a class="sm_button sm_resGoogle" href="<?php echo $this->GetRedirectLink('sitemap-ofaq'); ?> "><?php _e('Official Sitemaps FAQ', 'sitemap'); ?> </a> <a class="sm_button sm_pluginHome" href="<?php echo $this->GetRedirectLink('sitemap-afaq'); ?> "><?php _e('My Sitemaps FAQ', 'sitemap'); ?> </a> </div> </fieldset> <fieldset id="dm_donations" class="dbx-box"> <h3 class="dbx-handle"><?php _e('Recent Donations:', 'sitemap'); ?> </h3> <div class="dbx-content"> <?php if ($this->GetOption('i_hide_donors') !== true) { ?> <iframe border="0" frameborder="0" scrolling="no" allowtransparency="yes" style="width:100%; height:80px;" src="<?php echo $this->GetRedirectLink('sitemap-donorlist'); ?> "> <?php _e('List of the donors', 'sitemap'); ?> </iframe><br /> <a href="<?php echo $this->GetBackLink() . "&sm_hidedonors=true"; ?> "><small><?php _e('Hide this list', 'sitemap'); ?> </small></a><br /><br /> <?php } ?> <a style="float:left; margin-right:5px; border:none;" href="javascript:document.getElementById('sm_donate_form').submit();"><img style="vertical-align:middle; border:none; margin-top:2px;" src="<?php echo $this->GetResourceLink("{6E89EFD4-A853-4321-B5CF-3E36C60B268D}"); ?> " border="0" alt="PayPal" title="Help me to continue support of this plugin :)" /></a> <span><small><?php _e('Thanks for your support!', 'sitemap'); ?> </small></span> </div> </fieldset> </div> </div> <div id="advancedstuff" class="dbx-group" > <!-- Rebuild Area --> <div class="dbx-b-ox-wrapper"> <fieldset id="sm_rebuild" class="dbx-box"> <div class="dbx-h-andle-wrapper"> <h3 class="dbx-handle"><?php _e('Status', 'sitemap'); ?> </h3> </div> <div class="dbx-c-ontent-wrapper"> <div class="dbx-content"> <ul> <?php //#type $status GoogleSitemapGeneratorStatus $status = GoogleSitemapGeneratorStatus::Load(); if ($status == null) { echo "<li>" . str_replace("%s", $this->GetBackLink() . "&sm_rebuild=true", __('The sitemap wasn\'t built yet. <a href="%s">Click here</a> to build it the first time.', 'sitemap')) . "</li>"; } else { if ($status->_endTime !== 0) { if ($status->_usedXml) { if ($status->_xmlSuccess) { $ft = filemtime($status->_xmlPath); echo "<li>" . str_replace("%url%", $status->_xmlUrl, str_replace("%date%", date(get_option('date_format'), $ft) . " " . date(get_option('time_format'), $ft), __("Your <a href=\"%url%\">sitemap</a> was last built on <b>%date%</b>.", 'sitemap'))) . "</li>"; } else { echo "<li class=\"sm_error\">" . str_replace("%url%", $this->GetRedirectLink('sitemap-help-files'), __("There was a problem writing your sitemap file. Make sure the file exists and is writable. <a href=\"%url%\">Learn more</a", 'sitemap')) . "</li>"; } } if ($status->_usedZip) { if ($status->_zipSuccess) { $ft = filemtime($status->_zipPath); echo "<li>" . str_replace("%url%", $status->_zipUrl, str_replace("%date%", date(get_option('date_format'), $ft) . " " . date(get_option('time_format'), $ft), __("Your sitemap (<a href=\"%url%\">zipped</a>) was last built on <b>%date%</b>.", 'sitemap'))) . "</li>"; } else { echo "<li class=\"sm_error\">" . str_replace("%url%", $this->GetRedirectLink('sitemap-help-files'), __("There was a problem writing your zipped sitemap file. Make sure the file exists and is writable. <a href=\"%url%\">Learn more</a", 'sitemap')) . "</li>"; } } if ($status->_usedGoogle) { if ($status->_gooogleSuccess) { echo "<li>" . __("Google was <b>successfully notified</b> about changes.", 'sitemap') . "</li>"; $gt = $status->GetGoogleTime(); if ($gt > 4) { echo "<li class=\\sm_optimize\">" . str_replace("%time%", $gt, __("It took %time% seconds to notify Google, maybe you want to disable this feature to reduce the building time.", 'sitemap')) . "</li>"; } } else { echo "<li class=\"sm_error\">" . str_replace("%s", $status->_googleUrl, __('There was a problem while notifying Google. <a href="%s">View result</a>', 'sitemap')) . "</li>"; } } if ($status->_usedYahoo) { if ($status->_yahooSuccess) { echo "<li>" . __("YAHOO was <b>successfully notified</b> about changes.", 'sitemap') . "</li>"; $yt = $status->GetYahooTime(); if ($yt > 4) { echo "<li class=\\sm_optimize\">" . str_replace("%time%", $yt, __("It took %time% seconds to notify YAHOO, maybe you want to disable this feature to reduce the building time.", 'sitemap')) . "</li>"; } } else { echo "<li class=\"sm_error\">" . str_replace("%s", $status->_yahooUrl, __('There was a problem while notifying YAHOO. <a href="%s">View result</a>', 'sitemap')) . "</li>"; } } if ($status->_usedMsn) { if ($status->_msnSuccess) { echo "<li>" . __("MSN was <b>successfully notified</b> about changes.", 'sitemap') . "</li>"; $at = $status->GetMsnTime(); if ($at > 4) { echo "<li class=\\sm_optimize\">" . str_replace("%time%", $at, __("It took %time% seconds to notify MSN.com, maybe you want to disable this feature to reduce the building time.", 'sitemap')) . "</li>"; } } else { echo "<li class=\"sm_error\">" . str_replace("%s", $status->_msnUrl, __('There was a problem while notifying MSN.com. <a href="%s">View result</a>', 'sitemap')) . "</li>"; } } if ($status->_usedAsk) { if ($status->_askSuccess) { echo "<li>" . __("Ask.com was <b>successfully notified</b> about changes.", 'sitemap') . "</li>"; $at = $status->GetAskTime(); if ($at > 4) { echo "<li class=\\sm_optimize\">" . str_replace("%time%", $at, __("It took %time% seconds to notify Ask.com, maybe you want to disable this feature to reduce the building time.", 'sitemap')) . "</li>"; } } else { echo "<li class=\"sm_error\">" . str_replace("%s", $status->_askUrl, __('There was a problem while notifying Ask.com. <a href="%s">View result</a>', 'sitemap')) . "</li>"; } } $et = $status->GetTime(); $mem = $status->GetMemoryUsage(); if ($mem > 0) { echo "<li>" . str_replace(array("%time%", "%memory%"), array($et, $mem), __("The building process took about <b>%time% seconds</b> to complete and used %memory% MB of memory.", 'sitemap')) . "</li>"; } else { echo "<li>" . str_replace("%time%", $et, __("The building process took about <b>%time% seconds</b> to complete.", 'sitemap')) . "</li>"; } if (!$status->_hasChanged) { echo "<li>" . __("The content of your sitemap <strong>didn't change</strong> since the last time so the files were not written and no search engine was pinged.", 'sitemap') . "</li>"; } } else { echo '<li class="sm_error">' . str_replace("%url%", $this->GetRedirectLink('sitemap-help-memtime'), __("The last run didn't finish! Maybe you can raise the memory or time limit for PHP scripts. <a href=\"%url%\">Learn more</a>", 'sitemap')) . '</li>'; if ($status->_memoryUsage > 0) { echo '<li class="sm_error">' . str_replace(array("%memused%", "%memlimit%"), array($status->GetMemoryUsage(), ini_get('memory_limit')), __("The last known memory usage of the script was %memused%MB, the limit of your server is %memlimit%.", 'sitemap')) . '</li>'; } if ($status->_lastTime > 0) { echo '<li class="sm_error">' . str_replace(array("%timeused%", "%timelimit%"), array($status->GetLastTime(), ini_get('max_execution_time')), __("The last known execution time of the script was %timeused% seconds, the limit of your server is %timelimit% seconds.", 'sitemap')) . '</li>'; } if ($status->GetLastPost() > 0) { echo '<li class="sm_optimize">' . str_replace("%lastpost%", $status->GetLastPost(), __("The script stopped around post number %lastpost% (+/- 100)", 'sitemap')) . '</li>'; } } echo "<li>" . str_replace("%s", $this->GetBackLink() . "&sm_rebuild=true", __('If you changed something on your server or blog, you should <a href="%s">rebuild the sitemap</a> manually.', 'sitemap')) . "</li>"; } echo "<li>" . str_replace("%d", $this->GetBackLink() . "&sm_rebuild=true&sm_do_debug=true", __('If you encounter any problems with the build process you can use the <a href="%d">debug function</a> to get more information.', 'sitemap')) . "</li>"; ?> </ul> </div> </div> </fieldset> </div> <!-- Basic Options --> <div class="dbx-b-ox-wrapper"> <fieldset id="sm_basic_options" class="dbx-box"> <div class="dbx-h-andle-wrapper"> <h3 class="dbx-handle"><?php _e('Basic Options', 'sitemap'); ?> </h3> </div> <div class="dbx-c-ontent-wrapper"> <div class="dbx-content"> <b><?php _e('Sitemap files:', 'sitemap'); ?> </b> <a href="<?php echo $this->GetRedirectLink('sitemap-help-options-files'); ?> "><?php _e('Learn more', 'sitemap'); ?> </a> <ul> <li> <label for="sm_b_xml"> <input type="checkbox" id="sm_b_xml" name="sm_b_xml" <?php echo $this->GetOption("b_xml") == true ? "checked=\"checked\"" : ""; ?> /> <?php _e('Write a normal XML file (your filename)', 'sitemap'); ?> </label> </li> <li> <label for="sm_b_gzip"> <input type="checkbox" id="sm_b_gzip" name="sm_b_gzip" <?php if (function_exists("gzencode")) { echo $this->GetOption("b_gzip") == true ? "checked=\"checked\"" : ""; } else { echo "disabled=\"disabled\""; } ?> /> <?php _e('Write a gzipped file (your filename + .gz)', 'sitemap'); ?> </label> </li> </ul> <b><?php _e('Building mode:', 'sitemap'); ?> </b> <a href="<?php echo $this->GetRedirectLink('sitemap-help-options-process'); ?> "><?php _e('Learn more', 'sitemap'); ?> </a> <ul> <li> <label for="sm_b_auto_enabled"> <input type="checkbox" id="sm_b_auto_enabled" name="sm_b_auto_enabled" <?php echo $this->GetOption("sm_b_auto_enabled") == true ? "checked=\"checked\"" : ""; ?> /> <?php _e('Rebuild sitemap if you change the content of your blog', 'sitemap'); ?> </label> </li> <li> <label for="sm_b_manual_enabled"> <input type="hidden" name="sm_b_manual_key" value="<?php echo $this->GetOption("b_manual_key"); ?> " /> <input type="checkbox" id="sm_b_manual_enabled" name="sm_b_manual_enabled" <?php echo $this->GetOption("b_manual_enabled") == true ? "checked=\"checked\"" : ""; ?> /> <?php _e('Enable manual sitemap building via GET Request', 'sitemap'); ?> </label> <a href="javascript:void(document.getElementById('sm_manual_help').style.display='');">[?]</a> <span id="sm_manual_help" style="display:none;"><br /> <?php echo str_replace("%1", trailingslashit(get_bloginfo('siteurl')) . "?sm_command=build&sm_key=" . $this->GetOption("b_manual_key"), __('This will allow you to refresh your sitemap if an external tool wrote into the WordPress database without using the WordPress API. Use the following URL to start the process: <a href="%1">%1</a> Please check the logfile above to see if sitemap was successfully built.', 'sitemap')); ?> </span> </li> </ul> <b><?php _e('Update notification:', 'sitemap'); ?> </b> <a href="<?php echo $this->GetRedirectLink('sitemap-help-options-ping'); ?> "><?php _e('Learn more', 'sitemap'); ?> </a> <ul> <li> <input type="checkbox" id="sm_b_ping" name="sm_b_ping" <?php echo $this->GetOption("b_ping") == true ? "checked=\"checked\"" : ""; ?> /> <label for="sm_b_ping"><?php _e('Notify Google about updates of your Blog', 'sitemap'); ?> </label><br /> <small><?php echo str_replace("%s", $this->GetRedirectLink('sitemap-gwt'), __('No registration required, but you can join the <a href="%s">Google Webmaster Tools</a> to check crawling statistics.', 'sitemap')); ?> </small> </li> <li> <input type="checkbox" id="sm_b_pingmsn" name="sm_b_pingmsn" <?php echo $this->GetOption("b_pingmsn") == true ? "checked=\"checked\"" : ""; ?> /> <label for="sm_b_pingmsn"><?php _e('Notify MSN Live Search about updates of your Blog', 'sitemap'); ?> </label><br /> <small><?php echo str_replace("%s", $this->GetRedirectLink('sitemap-lwt'), __('No registration required, but you can join the <a href="%s">MSN Live Webmaster Tools</a> to check crawling statistics.', 'sitemap')); ?> </small> </li> <li> <input type="checkbox" id="sm_b_pingask" name="sm_b_pingask" <?php echo $this->GetOption("b_pingask") == true ? "checked=\"checked\"" : ""; ?> /> <label for="sm_b_pingask"><?php _e('Notify Ask.com about updates of your Blog', 'sitemap'); ?> </label><br /> <small><?php _e('No registration required.', 'sitemap'); ?> </small> </li> <li> <input type="checkbox" id="sm_b_pingyahoo" name="sm_b_pingyahoo" <?php echo $this->GetOption("sm_b_pingyahoo") == true ? "checked=\"checked\"" : ""; ?> /> <label for="sm_b_pingyahoo"><?php _e('Notify YAHOO about updates of your Blog', 'sitemap'); ?> </label><br /> <label for="sm_b_yahookey"><?php _e('Your Application ID:', 'sitemap'); ?> <input type="text" name="sm_b_yahookey" id="sm_b_yahookey" value="<?php echo $this->GetOption("sm_b_yahookey"); ?> " /></label><br /> <small><?php echo str_replace(array("%s1", "%s2"), array($this->GetRedirectLink('sitemap-ykr'), ' (<a href="http://developer.yahoo.net/about/">Web Services by Yahoo!</a>)'), __('Don\'t you have such a key? <a href="%s1">Request one here</a>!</a> %s2', 'sitemap')); ?> </small> </li> <li> <input type="checkbox" id="sm_b_robots" name="sm_b_robots" <?php echo $this->GetOption("sm_b_robots") == true ? "checked=\"checked\"" : ""; ?> /> <?php echo str_replace('%s', file_exists($this->GetRobotsFilePath()) ? '<a href="' . $this->GetRobotsFileUrl() . '">robots.txt</a>' : 'robots.txt', __("Modify or create %s file in blog root which contains the sitemap location.", 'sitemap')); ?> <br /> <?php _e("File permissions: ", 'sitemap'); $f = $this->GetRobotsFilePath(); $link = ' <a href="' . $this->GetRedirectLink("sitemap-help-options-robots", 'sitemap') . '">' . __("Learn more", 'sitemap') . '</a>'; if (file_exists($f)) { if (is_writable($f)) { _e("OK, robots.txt is writable.", 'sitemap'); } else { echo __("Error, robots.txt is not writable.", 'sitemap') . $link; } } else { if (is_writable(dirname($f))) { _e("OK, robots.txt doesn't exist but the directory is writable.", 'sitemap'); } else { echo __("Error, robots.txt doesn't exist and the directory is not writable", 'sitemap') . $link; } } ?> </li> </ul> <b><?php _e('Advanced options:', 'sitemap'); ?> </b> <a href="<?php echo $this->GetRedirectLink('sitemap-help-options-adv'); ?> "><?php _e('Learn more', 'sitemap'); ?> </a> <ul> <li> <label for="sm_b_max_posts"><?php _e('Limit the number of posts in the sitemap:', 'sitemap'); ?> <input type="text" name="sm_b_max_posts" id="sm_b_max_posts" style="width:40px;" value="<?php echo $this->GetOption("sm_b_max_posts") <= 0 ? "" : $this->GetOption("sm_b_max_posts"); ?> " /></label> (<?php echo __('Newer posts will be included first', 'sitemap'); ?> ) </li> <li> <label for="sm_b_memory"><?php _e('Try to increase the memory limit to:', 'sitemap'); ?> <input type="text" name="sm_b_memory" id="sm_b_memory" style="width:40px;" value="<?php echo $this->GetOption("sm_b_memory"); ?> " /></label> (<?php echo htmlspecialchars(__('e.g. "4M", "16M"', 'sitemap')); ?> ) </li> <li> <label for="sm_b_time"><?php _e('Try to increase the execution time limit to:', 'sitemap'); ?> <input type="text" name="sm_b_time" id="sm_b_time" style="width:40px;" value="<?php echo $this->GetOption("sm_b_time") === -1 ? '' : $this->GetOption("sm_b_time"); ?> " /></label> (<?php echo htmlspecialchars(__('in seconds, e.g. "60" or "0" for unlimited', 'sitemap')); ?> ) </li> <li> <label for="sm_b_style"><?php _e('Include a XSLT stylesheet:', 'sitemap'); ?> <input type="text" name="sm_b_style" id="sm_b_style" value="<?php echo $this->GetOption("sm_b_style"); ?> " /></label> <?php if ($this->GetDefaultStyle()) { echo ' <a href="javascript:void(0);" onclick="document.getElementById(\'sm_b_style\').value=\'' . $this->GetDefaultStyle() . '\';">' . __('Use Default', 'sitemap') . '</a>'; } ?> (<?php _e('Full or relative URL to your .xsl file', 'sitemap'); ?> ) </li> <li> <label for="sm_b_safemode"> <input type="checkbox" id="sm_b_safemode" name="sm_b_safemode" <?php echo $this->GetOption("sm_b_safemode") == true ? "checked=\"checked\"" : ""; ?> /> <?php _e('Enable MySQL standard mode. Use this only if you\'re getting MySQL errors. (Needs much more memory!)', 'sitemap'); ?> </label> </li> <li> <label for="sm_b_auto_delay"> <input type="checkbox" id="sm_b_auto_delay" name="sm_b_auto_delay" <?php echo $this->GetOption("sm_b_auto_delay") == true ? "checked=\"checked\"" : ""; ?> /> <?php _e('Build the sitemap in a background process (You don\'t have to wait when you save a post)', 'sitemap'); ?> </label> </li> <li> <label for="sm_b_exclude"><?php _e('Exclude the following posts or pages:', 'sitemap'); ?> <small><?php _e('List of IDs, separated by comma', 'sitemap'); ?> </small><br /> <input name="sm_b_exclude" id="sm_b_exclude" type="text" style="width:400px;" value="<?php echo implode(",", $this->GetOption("sm_b_exclude")); ?> " /></label> </li> </ul> </div> </div> </fieldset> </div> <div class="dbx-b-ox-wrapper"> <fieldset id="sm_pages" class="dbx-box"> <div class="dbx-h-andle-wrapper"> <h3 class="dbx-handle"><?php _e('Additional pages', 'sitemap'); ?> </h3> </div> <div class="dbx-c-ontent-wrapper"> <div class="dbx-content"> <?php _e('Here you can specify files or URLs which should be included in the sitemap, but do not belong to your Blog/WordPress.<br />For example, if your domain is www.foo.com and your blog is located on www.foo.com/blog you might want to include your homepage at www.foo.com', 'sitemap'); echo "<ul><li>"; echo "<strong>" . __('Note', 'sitemap') . "</strong>: "; _e("If your blog is in a subdirectory and you want to add pages which are NOT in the blog directory or beneath, you MUST place your sitemap file in the root directory (Look at the "Location of your sitemap file" section on this page)!", 'sitemap'); echo "</li><li>"; echo "<strong>" . __('URL to the page', 'sitemap') . "</strong>: "; _e("Enter the URL to the page. Examples: http://www.foo.com/index.html or www.foo.com/home ", 'sitemap'); echo "</li><li>"; echo "<strong>" . __('Priority', 'sitemap') . "</strong>: "; _e("Choose the priority of the page relative to the other pages. For example, your homepage might have a higher priority than your imprint.", 'sitemap'); echo "</li><li>"; echo "<strong>" . __('Last Changed', 'sitemap') . "</strong>: "; _e("Enter the date of the last change as YYYY-MM-DD (2005-12-31 for example) (optional).", 'sitemap'); echo "</li></ul>"; ?> <script type="text/javascript"> //<![CDATA[ <?php $freqVals = "'" . implode("','", $this->_freqNames) . "'"; $transUpper = create_function('&$s', ' return ucfirst(__($s,"sitemap"));'); $freqNamesArr = array_map($transUpper, $this->_freqNames); $freqNames = "'" . implode("','", $freqNamesArr) . "'"; ?> var changeFreqVals = new Array( <?php echo $freqVals; ?> ); var changeFreqNames= new Array( <?php echo $freqNames; ?> ); var priorities= new Array(0 <?php for ($i = 0.1; $i < 1; $i += 0.1) { echo "," . $i; } ?> ); var pages = [ <?php if (count($this->_pages) > 0) { for ($i = 0; $i < count($this->_pages); $i++) { $v =& $this->_pages[$i]; if ($i > 0) { echo ","; } echo '{url:"' . $v->getUrl() . '", priority:"' . $v->getPriority() . '", changeFreq:"' . $v->getChangeFreq() . '", lastChanged:"' . ($v != null && $v->getLastMod() > 0 ? date("Y-m-d", $v->getLastMod()) : "") . '"}'; } } ?> ]; function sm_addPage(url,priority,changeFreq,lastChanged) { var table = document.getElementById('sm_pageTable').getElementsByTagName('TBODY')[0]; var ce = function(ele) { return document.createElement(ele) }; var tr = ce('TR'); var td = ce('TD'); var iUrl = ce('INPUT'); iUrl.type="text"; iUrl.style.width='95%'; iUrl.name="sm_pages_ur[]"; if(url) iUrl.value=url; td.appendChild(iUrl); tr.appendChild(td); td = ce('TD'); td.style.width='150px'; var iPrio = ce('SELECT'); iPrio.style.width='95%'; iPrio.name="sm_pages_pr[]"; for(var i=0; i <priorities.length; i++) { var op = ce('OPTION'); op.text = priorities[i]; op.value = priorities[i]; try { iPrio.add(op, null); // standards compliant; doesn't work in IE } catch(ex) { iPrio.add(op); // IE only } if(priority && priority == op.value) { iPrio.selectedIndex = i; } } td.appendChild(iPrio); tr.appendChild(td); td = ce('TD'); td.style.width='150px'; var iFreq = ce('SELECT'); iFreq.name="sm_pages_cf[]"; iFreq.style.width='95%'; for(var i=0; i<changeFreqVals.length; i++) { var op = ce('OPTION'); op.text = changeFreqNames[i]; op.value = changeFreqVals[i]; try { iFreq.add(op, null); // standards compliant; doesn't work in IE } catch(ex) { iFreq.add(op); // IE only } if(changeFreq && changeFreq == op.value) { iFreq.selectedIndex = i; } } td.appendChild(iFreq); tr.appendChild(td); var td = ce('TD'); td.style.width='150px'; var iChanged = ce('INPUT'); iChanged.type="text"; iChanged.name="sm_pages_lm[]"; iChanged.style.width='95%'; if(lastChanged) iChanged.value=lastChanged; td.appendChild(iChanged); tr.appendChild(td); var td = ce('TD'); td.style.textAlign="center"; td.style.width='5px'; var iAction = ce('A'); iAction.innerHTML = 'X'; iAction.href="javascript:void(0);" iAction.onclick = function() { table.removeChild(tr); }; td.appendChild(iAction); tr.appendChild(td); var mark = ce('INPUT'); mark.type="hidden"; mark.name="sm_pages_mark[]"; mark.value="true"; tr.appendChild(mark); var firstRow = table.getElementsByTagName('TR')[1]; if(firstRow) { var firstCol = (firstRow.childNodes[1]?firstRow.childNodes[1]:firstRow.childNodes[0]); if(firstCol.colSpan>1) { firstRow.parentNode.removeChild(firstRow); } } var cnt = table.getElementsByTagName('TR').length; if(cnt%2) tr.className="alternate"; table.appendChild(tr); } function sm_loadPages() { for(var i=0; i<pages.length; i++) { sm_addPage(pages[i].url,pages[i].priority,pages[i].changeFreq,pages[i].lastChanged); } } //]]> </script> <table width="100%" cellpadding="3" cellspacing="3" id="sm_pageTable"> <tr> <th scope="col"><?php _e('URL to the page', 'sitemap'); ?> </th> <th scope="col"><?php _e('Priority', 'sitemap'); ?> </th> <th scope="col"><?php _e('Change Frequency', 'sitemap'); ?> </th> <th scope="col"><?php _e('Last Changed', 'sitemap'); ?> </th> <th scope="col"><?php _e('#', 'sitemap'); ?> </th> </tr> <?php if (count($this->_pages) <= 0) { ?> <tr> <td colspan="5" align="center"><?php _e('No pages defined.', 'sitemap'); ?> </td> </tr><?php } ?> </table> <a href="javascript:void(0);" onclick="sm_addPage();"><?php _e("Add new page", 'sitemap'); ?> </a> </div> </div> </fieldset> </div> <!-- AutoPrio Options --> <div class="dbx-b-ox-wrapper"> <fieldset id="sm_postprio" class="dbx-box"> <div class="dbx-h-andle-wrapper"> <h3 class="dbx-handle"><?php _e('Post Priority', 'sitemap'); ?> </h3> </div> <div class="dbx-c-ontent-wrapper"> <div class="dbx-content"> <p><?php _e('Please select how the priority of each post should be calculated:', 'sitemap'); ?> </p> <ul> <li><p><input type="radio" name="sm_b_prio_provider" id="sm_b_prio_provider__0" value="" <?php echo $this->HtmlGetChecked($this->GetOption("b_prio_provider"), ""); ?> /> <label for="sm_b_prio_provider__0"><?php _e('Do not use automatic priority calculation', 'sitemap'); ?> </label><br /><?php _e('All posts will have the same priority which is defined in "Priorities"', 'sitemap'); ?> </p></li> <?php for ($i = 0; $i < count($this->_prioProviders); $i++) { echo "<li><p><input type=\"radio\" id=\"sm_b_prio_provider_{$i}\" name=\"sm_b_prio_provider\" value=\"" . $this->_prioProviders[$i] . "\" " . $this->HtmlGetChecked($this->GetOption("b_prio_provider"), $this->_prioProviders[$i]) . " /> <label for=\"sm_b_prio_provider_{$i}\">" . call_user_func(array(&$this->_prioProviders[$i], 'getName')) . "</label><br />" . call_user_func(array(&$this->_prioProviders[$i], 'getDescription')) . "</p></li>"; } ?> </ul> </div> </div> </fieldset> </div> <!-- Location Options --> <div class="dbx-b-ox-wrapper"> <fieldset id="sm_location" class="dbx-box"> <div class="dbx-h-andle-wrapper"> <h3 class="dbx-handle"><?php _e('Location of your sitemap file', 'sitemap'); ?> </h3> </div> <div class="dbx-c-ontent-wrapper"> <div class="dbx-content"> <div> <b><label for="sm_location_useauto"><input type="radio" id="sm_location_useauto" name="sm_b_location_mode" value="auto" <?php echo $this->GetOption("b_location_mode") == "auto" ? "checked=\"checked\"" : ""; ?> /> <?php _e('Automatic detection', 'sitemap'); ?> </label></b> <ul> <li> <label for="sm_b_filename"> <?php _e('Filename of the sitemap file', 'sitemap'); ?> <input type="text" id="sm_b_filename" name="sm_b_filename" value="<?php echo $this->GetOption("b_filename"); ?> " /> </label><br /> <?php _e('Detected Path', 'sitemap'); ?> : <?php echo $this->getXmlPath(true); ?> <br /><?php _e('Detected URL', 'sitemap'); ?> : <a href="<?php echo $this->getXmlUrl(true); ?> "><?php echo $this->getXmlUrl(true); ?> </a> </li> </ul> </div> <div> <b><label for="sm_location_usemanual"><input type="radio" id="sm_location_usemanual" name="sm_b_location_mode" value="manual" <?php echo $this->GetOption("b_location_mode") == "manual" ? "checked=\"checked\"" : ""; ?> /> <?php _e('Custom location', 'sitemap'); ?> </label></b> <ul> <li> <label for="sm_b_filename_manual"> <?php _e('Absolute or relative path to the sitemap file, including name.', 'sitemap'); echo "<br />"; _e('Example', 'sitemap'); echo ": /var/www/htdocs/wordpress/sitemap.xml"; ?> <br /> <input style="width:70%" type="text" id="sm_b_filename_manual" name="sm_b_filename_manual" value="<?php echo !$this->GetOption("b_filename_manual") ? $this->getXmlPath() : $this->GetOption("b_filename_manual"); ?> " /> </label> </li> <li> <label for="sm_b_fileurl_manual"> <?php _e('Complete URL to the sitemap file, including name.', 'sitemap'); echo "<br />"; _e('Example', 'sitemap'); echo ": http://www.yourdomain.com/sitemap.xml"; ?> <br /> <input style="width:70%" type="text" id="sm_b_fileurl_manual" name="sm_b_fileurl_manual" value="<?php echo !$this->GetOption("b_fileurl_manual") ? $this->getXmlUrl() : $this->GetOption("b_fileurl_manual"); ?> " /> </label> </li> </ul> </div> </div> </div> </fieldset> </div> <!-- Includes --> <div class="dbx-b-ox-wrapper"> <fieldset id="sm_includes" class="dbx-box"> <div class="dbx-h-andle-wrapper"> <h3 class="dbx-handle"><?php _e('Sitemap Content', 'sitemap'); ?> </h3> </div> <div class="dbx-c-ontent-wrapper"> <div class="dbx-content"> <ul> <li> <label for="sm_in_home"> <input type="checkbox" id="sm_in_home" name="sm_in_home" <?php echo $this->GetOption("in_home") == true ? "checked=\"checked\"" : ""; ?> /> <?php _e('Include homepage', 'sitemap'); ?> </label> </li> <li> <label for="sm_in_posts"> <input type="checkbox" id="sm_in_posts" name="sm_in_posts" <?php echo $this->GetOption("in_posts") == true ? "checked=\"checked\"" : ""; ?> /> <?php _e('Include posts', 'sitemap'); ?> </label> </li> <li> <label for="sm_in_pages"> <input type="checkbox" id="sm_in_pages" name="sm_in_pages" <?php echo $this->GetOption("in_pages") == true ? "checked=\"checked\"" : ""; ?> /> <?php _e('Include static pages', 'sitemap'); ?> </label> </li> <li> <label for="sm_in_cats"> <input type="checkbox" id="sm_in_cats" name="sm_in_cats" <?php echo $this->GetOption("in_cats") == true ? "checked=\"checked\"" : ""; ?> /> <?php _e('Include categories', 'sitemap'); ?> </label> </li> <li> <label for="sm_in_arch"> <input type="checkbox" id="sm_in_arch" name="sm_in_arch" <?php echo $this->GetOption("in_arch") == true ? "checked=\"checked\"" : ""; ?> /> <?php _e('Include archives', 'sitemap'); ?> </label> </li> <?php if ($this->IsTaxonomySupported()) { ?> <li> <label for="sm_in_tags"> <input type="checkbox" id="sm_in_tags" name="sm_in_tags" <?php echo $this->GetOption("in_tags") == true ? "checked=\"checked\"" : ""; ?> /> <?php _e('Include tag pages', 'sitemap'); ?> </label> </li> <?php } ?> <li> <label for="sm_in_auth"> <input type="checkbox" id="sm_in_auth" name="sm_in_auth" <?php echo $this->GetOption("in_auth") == true ? "checked=\"checked\"" : ""; ?> /> <?php _e('Include author pages', 'sitemap'); ?> </label> </li> </ul> </div> </div> </fieldset> </div> <!-- Change frequencies --> <div class="dbx-b-ox-wrapper"> <fieldset id="sm_change_frequencies" class="dbx-box"> <div class="dbx-h-andle-wrapper"> <h3 class="dbx-handle"><?php _e('Change frequencies', 'sitemap'); ?> </h3> </div> <div class="dbx-c-ontent-wrapper"> <div class="dbx-content"> <p> <b><?php _e('Note', 'sitemap'); ?> :</b> <?php _e('Please note that the value of this tag is considered a hint and not a command. Even though search engine crawlers consider this information when making decisions, they may crawl pages marked "hourly" less frequently than that, and they may crawl pages marked "yearly" more frequently than that. It is also likely that crawlers will periodically crawl pages marked "never" so that they can handle unexpected changes to those pages.', 'sitemap'); ?> </p> <ul> <li> <label for="sm_cf_home"> <select id="sm_cf_home" name="sm_cf_home"><?php $this->HtmlGetFreqNames($this->GetOption("cf_home")); ?> </select> <?php _e('Homepage', 'sitemap'); ?> </label> </li> <li> <label for="sm_cf_posts"> <select id="sm_cf_posts" name="sm_cf_posts"><?php $this->HtmlGetFreqNames($this->GetOption("cf_posts")); ?> </select> <?php _e('Posts', 'sitemap'); ?> </label> </li> <li> <label for="sm_cf_pages"> <select id="sm_cf_pages" name="sm_cf_pages"><?php $this->HtmlGetFreqNames($this->GetOption("cf_pages")); ?> </select> <?php _e('Static pages', 'sitemap'); ?> </label> </li> <li> <label for="sm_cf_cats"> <select id="sm_cf_cats" name="sm_cf_cats"><?php $this->HtmlGetFreqNames($this->GetOption("cf_cats")); ?> </select> <?php _e('Categories', 'sitemap'); ?> </label> </li> <li> <label for="sm_cf_arch_curr"> <select id="sm_cf_arch_curr" name="sm_cf_arch_curr"><?php $this->HtmlGetFreqNames($this->GetOption("cf_arch_curr")); ?> </select> <?php _e('The current archive of this month (Should be the same like your homepage)', 'sitemap'); ?> </label> </li> <li> <label for="sm_cf_arch_old"> <select id="sm_cf_arch_old" name="sm_cf_arch_old"><?php $this->HtmlGetFreqNames($this->GetOption("cf_arch_old")); ?> </select> <?php _e('Older archives (Changes only if you edit an old post)', 'sitemap'); ?> </label> </li> <?php if ($this->IsTaxonomySupported()) { ?> <li> <label for="sm_cf_tags"> <select id="sm_cf_tags" name="sm_cf_tags"><?php $this->HtmlGetFreqNames($this->GetOption("cf_tags")); ?> </select> <?php _e('Tag pages', 'sitemap'); ?> </label> </li> <?php } ?> <li> <label for="sm_cf_auth"> <select id="sm_cf_auth" name="sm_cf_auth"><?php $this->HtmlGetFreqNames($this->GetOption("cf_auth")); ?> </select> <?php _e('Author pages', 'sitemap'); ?> </label> </li> </ul> </div> </div> </fieldset> </div> <!-- Priorities --> <div class="dbx-b-ox-wrapper"> <fieldset id="sm_priorities" class="dbx-box"> <div class="dbx-h-andle-wrapper"> <h3 class="dbx-handle"><?php _e('Priorities', 'sitemap'); ?> </h3> </div> <div class="dbx-c-ontent-wrapper"> <div class="dbx-content"> <ul> <li> <label for="sm_pr_home"> <select id="sm_pr_home" name="sm_pr_home"><?php $this->HtmlGetPriorityValues($this->GetOption("pr_home")); ?> </select> <?php _e('Homepage', 'sitemap'); ?> </label> </li> <li> <label for="sm_pr_posts"> <select id="sm_pr_posts" name="sm_pr_posts"><?php $this->HtmlGetPriorityValues($this->GetOption("pr_posts")); ?> </select> <?php _e('Posts (If auto calculation is disabled)', 'sitemap'); ?> </label> </li> <li> <label for="sm_pr_posts_min"> <select id="sm_pr_posts_min" name="sm_pr_posts_min"><?php $this->HtmlGetPriorityValues($this->GetOption("pr_posts_min")); ?> </select> <?php _e('Minimum post priority (Even if auto calculation is enabled)', 'sitemap'); ?> </label> </li> <li> <label for="sm_pr_pages"> <select id="sm_pr_pages" name="sm_pr_pages"><?php $this->HtmlGetPriorityValues($this->GetOption("pr_pages")); ?> </select> <?php _e('Static pages', 'sitemap'); ?> </label> </li> <li> <label for="sm_pr_cats"> <select id="sm_pr_cats" name="sm_pr_cats"><?php $this->HtmlGetPriorityValues($this->GetOption("pr_cats")); ?> </select> <?php _e('Categories', 'sitemap'); ?> </label> </li> <li> <label for="sm_pr_arch"> <select id="sm_pr_arch" name="sm_pr_arch"><?php $this->HtmlGetPriorityValues($this->GetOption("pr_arch")); ?> </select> <?php _e('Archives', 'sitemap'); ?> </label> </li> <?php if ($this->IsTaxonomySupported()) { ?> <li> <label for="sm_pr_tags"> <select id="sm_pr_tags" name="sm_pr_tags"><?php $this->HtmlGetPriorityValues($this->GetOption("pr_tags")); ?> </select> <?php _e('Tag pages', 'sitemap'); ?> </label> </li> <?php } ?> <li> <label for="sm_pr_auth"> <select id="sm_pr_auth" name="sm_pr_auth"><?php $this->HtmlGetPriorityValues($this->GetOption("pr_auth")); ?> </select> <?php _e('Author pages', 'sitemap'); ?> </label> </li> </ul> </div> </div> </fieldset> </div> </div> <div> <p class="submit"> <input type="submit" name="sm_update" value="<?php _e('Update options', 'sitemap'); ?> " /> <input type="submit" onclick='return confirm("Do you really want to reset your configuration?");' class="sm_warning" name="sm_reset_config" value="<?php _e('Reset options', 'sitemap'); ?> " /> </p> </div> </div> <script type="text/javascript">if(typeof(sm_loadPages)=='function') addLoadEvent(sm_loadPages); </script> </form> <form action="https://www.paypal.com/cgi-bin/webscr" method="post" id="sm_donate_form"> <input type="hidden" name="cmd" value="_xclick" /> <input type="hidden" name="business" value="<?php echo "donate" . "@" . "arnebra" . "chhold.de"; ?> " /> <input type="hidden" name="item_name" value="Sitemap Generator for WordPress. Please tell me if if you don't want to be listed on the donator list." /> <input type="hidden" name="no_shipping" value="1" /> <input type="hidden" name="return" value="<?php echo 'http://' . $_SERVER['HTTP_HOST'] . $this->GetBackLink(); ?> &sm_donated=true" /> <input type="hidden" name="item_number" value="0001" /> <input type="hidden" name="currency_code" value="USD" /> <input type="hidden" name="bn" value="PP-BuyNowBF" /> <input type="hidden" name="rm" value="2" /> <input type="hidden" name="on0" value="Your Website" /> <input type="hidden" name="os0" value="<?php echo get_bloginfo("home"); ?> "/> </form> </div> <?php }