[wp-testers] Akismet 1.12 on IIS
Owen Winkler
ringmaster at midnightcircus.com
Thu Dec 22 02:36:45 GMT 2005
James Johnson wrote:
> The Akismet Configuration under Plugins works -- I believe this has always
> worked, even pre changeset 3025 -- but no luck with Akismet Spam under
> Manage. Its giving the same cannot redeclare error.
It's like I was saying...
The value passed in as the $file parameter to add_management_page() can
have absolutely nothing to do with the plugin's filename, as long as you:
1) Pass a unique value among all active plugins.
2) Also supply the $function parameter.
3) Remain consistent with whatever value you pass for the sake of
linking to those pages.
Either of the attached diffs to akismet.php both work. One uses
basename(__FILE__), which is sensible. The other uses the word
"squidoo" to illustrate my point.
Either of these solutions could cause a problem if you have two active
plugins using the same filename/identifier located in different
directories, which is the best reason to use plugin_basename(__FILE__)
or just "__FILE__" (which is reduced in add_submenu_page() using
plugin_basename() anyway), since it creates a unique index for plugin
files in different locations.
The solution would then be to apply the patch to admin.php, which fixes
a fairly simple forehead-slapping bug and makes all of these issues go
away. :)
Owen
-------------- next part --------------
Index: admin.php
===================================================================
--- admin.php (revision 3336)
+++ admin.php (working copy)
@@ -45,7 +45,7 @@
// Handle plugin admin pages.
if (isset($_GET['page'])) {
$plugin_page = stripslashes($_GET['page']);
- $plugin_page = plugin_basename($_GET['page']);
+ $plugin_page = plugin_basename($plugin_page);
$page_hook = get_plugin_page_hook($plugin_page, $pagenow);
if ( $page_hook ) {
-------------- next part --------------
Index: akismet.php
===================================================================
--- akismet.php (revision 4227)
+++ akismet.php (working copy)
@@ -13,7 +13,7 @@
function ksd_config_page() {
global $wpdb;
if ( function_exists('add_submenu_page') )
- add_submenu_page('plugins.php', 'Akismet Configuration', 'Akismet Configuration', 1, __FILE__, 'akismet_conf');
+ add_submenu_page('plugins.php', 'Akismet Configuration', 'Akismet Configuration', 1, 'squidoo', 'akismet_conf');
}
function akismet_conf() {
@@ -57,9 +57,9 @@
if ( !get_option('wordpress_api_key') && !isset($_POST['submit']) ) {
function akismet_warning() {
- $path = plugin_basename(__FILE__);
+ $path = basename(__FILE__);
echo "
- <div id='akismet-warning' class='updated fade-ff0000'><p><strong>".__('Akismet is not active.')."</strong> ".sprintf(__('You must <a href="%1$s">enter your WordPress.com API key</a> for it to work.'), "plugins.php?page=$path")."</p></div>
+ <div id='akismet-warning' class='updated fade-ff0000'><p><strong>".__('Akismet is not active.')."</strong> ".sprintf(__('You must <a href="%1$s">enter your WordPress.com API key</a> for it to work.'), "plugins.php?page=squidoo")."</p></div>
<style type='text/css'>
#adminmenu { margin-bottom: 5em; }
#akismet-warning { position: absolute; top: 7em; }
@@ -185,7 +185,7 @@
global $wpdb;
$count = sprintf(__('Akismet Spam (%s)'), ksd_spam_count());
if ( function_exists('add_management_page') )
- add_management_page(__('Akismet Spam'), $count, 1, __FILE__, 'ksd_caught');
+ add_management_page(__('Akismet Spam'), $count, 1, 'squidoo', 'ksd_caught');
}
function ksd_caught() {
@@ -284,9 +284,9 @@
$count = get_option('akismet_spam_count');
if ( !$count )
return;
- $path = plugin_basename(__FILE__);
+ $path = basename(__FILE__);
echo '<h3>'.__('Spam').'</h3>';
- echo '<p>'.sprintf(__('<a href="%1$s">Akismet</a> has protected your site from <a href="%2$s">%3$s spam comments</a>.'), 'http://akismet.com/', "edit.php?page=$path", $count).'</p>';
+ echo '<p>'.sprintf(__('<a href="%1$s">Akismet</a> has protected your site from <a href="%2$s">%3$s spam comments</a>.'), 'http://akismet.com/', "edit.php?page=squidoo", $count).'</p>';
}
add_action('activity_box_end', 'akismet_stats');
-------------- next part --------------
Index: akismet.php
===================================================================
--- akismet.php (revision 4227)
+++ akismet.php (working copy)
@@ -13,7 +13,7 @@
function ksd_config_page() {
global $wpdb;
if ( function_exists('add_submenu_page') )
- add_submenu_page('plugins.php', 'Akismet Configuration', 'Akismet Configuration', 1, __FILE__, 'akismet_conf');
+ add_submenu_page('plugins.php', 'Akismet Configuration', 'Akismet Configuration', 1, basename(__FILE__), 'akismet_conf');
}
function akismet_conf() {
@@ -57,7 +57,7 @@
if ( !get_option('wordpress_api_key') && !isset($_POST['submit']) ) {
function akismet_warning() {
- $path = plugin_basename(__FILE__);
+ $path = basename(__FILE__);
echo "
<div id='akismet-warning' class='updated fade-ff0000'><p><strong>".__('Akismet is not active.')."</strong> ".sprintf(__('You must <a href="%1$s">enter your WordPress.com API key</a> for it to work.'), "plugins.php?page=$path")."</p></div>
<style type='text/css'>
@@ -185,7 +185,7 @@
global $wpdb;
$count = sprintf(__('Akismet Spam (%s)'), ksd_spam_count());
if ( function_exists('add_management_page') )
- add_management_page(__('Akismet Spam'), $count, 1, __FILE__, 'ksd_caught');
+ add_management_page(__('Akismet Spam'), $count, 1, basename(__FILE__), 'ksd_caught');
}
function ksd_caught() {
@@ -284,7 +284,7 @@
$count = get_option('akismet_spam_count');
if ( !$count )
return;
- $path = plugin_basename(__FILE__);
+ $path = basename(__FILE__);
echo '<h3>'.__('Spam').'</h3>';
echo '<p>'.sprintf(__('<a href="%1$s">Akismet</a> has protected your site from <a href="%2$s">%3$s spam comments</a>.'), 'http://akismet.com/', "edit.php?page=$path", $count).'</p>';
}
More information about the wp-testers
mailing list