Configuration Page
Version: 3.1.6
Author: Arne Brachhold
Author URI: http://www.arnebrachhold.de/
*/
/**
* Loader class for the Google Sitemap Generator
*
* This class takes care of the sitemap plugin and tries to load the different parts as late as possible.
* On normal requests, only this small class is loaded. When the sitemap needs to be rebuild, the generator itself is loaded.
* The last stage is the user interface which is loaded when the administration page is requested.
*/
class GoogleSitemapGeneratorLoader {
/**
* Enabled the sitemap plugin with registering all required hooks
*
* If the sm_command and sm_key GET params are given, the function will init the generator to rebuild the sitemap.
*/
function Enable() {
//Register the sitemap creator to wordpress...
add_action('admin_menu', array('GoogleSitemapGeneratorLoader', 'RegisterAdminPage'));
//Nice icon for Admin Menu (requires Ozh Admin Drop Down Plugin)
add_filter('ozh_adminmenu_icon', array('GoogleSitemapGeneratorLoader', 'RegisterAdminIcon'));
//Additional links on the plugin page
add_filter('plugin_row_meta', array('GoogleSitemapGeneratorLoader', 'RegisterPluginLinks'),10,2);
//Existing posts was deleted
add_action('delete_post', array('GoogleSitemapGeneratorLoader', 'CallCheckForAutoBuild'),9999,1);
//Existing post was published
add_action('publish_post', array('GoogleSitemapGeneratorLoader', 'CallCheckForAutoBuild'),9999,1);
//Existing page was published
add_action('publish_page', array('GoogleSitemapGeneratorLoader', 'CallCheckForAutoBuild'),9999,1);
//WP Cron hook
add_action('sm_build_cron', array('GoogleSitemapGeneratorLoader', 'CallBuildSitemap'),1,0);
//Robots.txt request
add_action('do_robots', array('GoogleSitemapGeneratorLoader', 'CallDoRobots'),100,0);
//Help topics for context sensitive help
add_filter('contextual_help_list', array('GoogleSitemapGeneratorLoader', 'CallHtmlShowHelpList'),9999,2);
//Check if this is a BUILD-NOW request (key will be checked later)
if(!empty($_GET["sm_command"]) && !empty($_GET["sm_key"])) {
GoogleSitemapGeneratorLoader::CallCheckForManualBuild();
}
}
/**
* Registers the plugin in the admin menu system
*/
function RegisterAdminPage() {
if (function_exists('add_options_page')) {
add_options_page(__('XML-Sitemap Generator','sitemap'), __('XML-Sitemap','sitemap'), 10, 'sitemap.php', array('GoogleSitemapGeneratorLoader','CallHtmlShowOptionsPage'));
}
}
function RegisterAdminIcon($hook) {
if ( $hook == 'sitemap.php' && function_exists('plugins_url')) {
return plugins_url('img/icon-arne.gif',GoogleSitemapGeneratorLoader::GetBaseName());
}
return $hook;
}
function RegisterPluginLinks($links, $file) {
$base = GoogleSitemapGeneratorLoader::GetBaseName();
if ($file == $base) {
$links[] = '' . __('Settings') . '';
$links[] = '' . __('FAQ') . '';
$links[] = '' . __('Support') . '';
$links[] = '' . __('Donate') . '';
}
return $links;
}
/**
* Invokes the HtmlShowOptionsPage method of the generator
*/
function CallHtmlShowOptionsPage() {
if(GoogleSitemapGeneratorLoader::LoadPlugin()) {
$gs = GoogleSitemapGenerator::GetInstance();
$gs->HtmlShowOptionsPage();
}
}
/**
* Invokes the CheckForAutoBuild method of the generator
*/
function CallCheckForAutoBuild($args) {
if(GoogleSitemapGeneratorLoader::LoadPlugin()) {
$gs = GoogleSitemapGenerator::GetInstance();
$gs->CheckForAutoBuild($args);
}
}
/**
* Invokes the BuildSitemap method of the generator
*/
function CallBuildSitemap() {
if(GoogleSitemapGeneratorLoader::LoadPlugin()) {
$gs = GoogleSitemapGenerator::GetInstance();
$gs->BuildSitemap();
}
}
/**
* Invokes the CheckForManualBuild method of the generator
*/
function CallCheckForManualBuild() {
if(GoogleSitemapGeneratorLoader::LoadPlugin()) {
$gs = GoogleSitemapGenerator::GetInstance();
$gs->CheckForManualBuild();
}
}
function CallHtmlShowHelpList($filterVal,$screen) {
if($screen == "settings_page_sitemap") {
$links = array(
__('Plugin Homepage','sitemap')=>'http://www.arnebrachhold.de/redir/sitemap-help-home/',
__('Sitemap FAQ')=>'http://www.arnebrachhold.de/redir/sitemap-help-faq/'
);
$filterVal["settings_page_sitemap"] = '';
$i=0;
foreach($links AS $text=>$url) {
$filterVal["settings_page_sitemap"].='' . $text . '' . ($i < (count($links)-1)?'
':'') ;
$i++;
}
}
return $filterVal;
}
function CallDoRobots() {
if(GoogleSitemapGeneratorLoader::LoadPlugin()) {
$gs = GoogleSitemapGenerator::GetInstance();
$gs->DoRobots();
}
}
/**
* Loads the actual generator class and tries to raise the memory and time limits if not already done by WP
*
* @return boolean true if run successfully
*/
function LoadPlugin() {
$mem = abs(intval(@ini_get('memory_limit')));
if($mem && $mem < 32) {
@ini_set('memory_limit', '32M');
}
$time = abs(intval(@ini_get("max_execution_time")));
if($time != 0 && $time < 120) {
@set_time_limit(120);
}
if(!class_exists("GoogleSitemapGenerator")) {
$path = trailingslashit(dirname(__FILE__));
if(!file_exists( $path . 'sitemap-core.php')) return false;
require_once($path. 'sitemap-core.php');
}
GoogleSitemapGenerator::Enable();
return true;
}
/**
* Returns the plugin basename of the plugin (using __FILE__)
*
* @return string The plugin basename, "sitemap" for example
*/
function GetBaseName() {
return plugin_basename(__FILE__);
}
/**
* Returns the name of this loader script, using __FILE__
*
* @return string The __FILE__ value of this loader script
*/
function GetPluginFile() {
return __FILE__;
}
/**
* Returns the plugin version
*
* Uses the WP API to get the meta data from the top of this file (comment)
*
* @return string The version like 3.1.1
*/
function GetVersion() {
if(!function_exists('get_plugin_data')) {
if(file_exists(ABSPATH . 'wp-admin/includes/plugin.php')) require_once(ABSPATH . 'wp-admin/includes/plugin.php'); //2.3+
else if(file_exists(ABSPATH . 'wp-admin/admin-functions.php')) require_once(ABSPATH . 'wp-admin/admin-functions.php'); //2.1
else return "0.ERROR";
}
$data = get_plugin_data(__FILE__);
return $data['Version'];
}
}
//Enable the plugin for the init hook, but only if WP is loaded. Calling this php file directly will do nothing.
if(defined('ABSPATH') && defined('WPINC')) {
add_action("init",array("GoogleSitemapGeneratorLoader","Enable"),1000,0);
}
?>