SEO Ultimate - Version 0.4

Version Description

Download this release

Release Info

Developer SEO Design Solutions
Plugin Icon 128x128 SEO Ultimate
Version 0.4
Comparing to
See all releases

Code changes from version 0.3 to 0.4

class.su-hitset.php ADDED
@@ -0,0 +1,103 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class SU_HitSet {
4
+
5
+ var $result;
6
+ var $where;
7
+ var $module_key;
8
+
9
+ function SU_HitSet($mk, $where = false) {
10
+ $this->module_key = $mk;
11
+ if ($where) $where = " WHERE $where";
12
+ $this->where = $where;
13
+ $this->query_db();
14
+ }
15
+
16
+ function query_db() {
17
+ global $wpdb;
18
+ $table = SEO_Ultimate::get_table_name('hits');
19
+ $this->result = $wpdb->get_results("SELECT * FROM {$table}{$this->where} ORDER BY id DESC", ARRAY_A);
20
+ }
21
+
22
+ function have_hits() {
23
+ return (is_array($this->result) && count($this->result) > 0);
24
+ }
25
+
26
+ function admin_table($actions_callback = false, $highlight_new = true) {
27
+
28
+ if (!$this->result || !$this->where) return;
29
+
30
+ //Initialize variables
31
+ global $wpdb;
32
+
33
+ $table = SEO_Ultimate::get_table_name('hits');
34
+
35
+ $allfields = array(
36
+ 'time' => __("Date", 'seo-ultimate')
37
+ , 'ip_address' => __("IP Address", 'seo-ultimate')
38
+ , 'user_agent' => __("Browser", 'seo-ultimate')
39
+ , 'url' => __("URL Requested", 'seo-ultimate')
40
+ , 'redirect_url' => __("Redirected To", 'seo-ultimate')
41
+ , 'status_code' => __("Status Code", 'seo-ultimate')
42
+ );
43
+
44
+ $fields = array();
45
+
46
+ foreach ($allfields as $col => $title) {
47
+ if (strpos($this->where, " $col=") === false) $fields[$col] = $title;
48
+ }
49
+
50
+ $fields = apply_filters("su_{$this->module_key}_hits_table_columns", $fields);
51
+
52
+ echo "<table class='widefat' cellspacing='0'>\n\t<thead><tr>\n";
53
+
54
+ foreach ($fields as $title) {
55
+ $class = str_replace(' ', '-', strtolower($title));
56
+ echo "\t\t<th scope='col' class='hit-$class'>$title</th>\n";
57
+ }
58
+
59
+ echo "\t</tr></thead>\n\t<tbody>\n";
60
+
61
+ foreach ($this->result as $row) {
62
+
63
+ if ($highlight_new && $row['is_new']) $class = ' class="new-hit"'; else $class='';
64
+ echo "\t\t<tr$class>\n";
65
+
66
+ foreach ($fields as $col => $title) {
67
+ $cell = htmlspecialchars($row[$col]);
68
+
69
+ switch ($col) {
70
+ case 'time':
71
+ $date = date_i18n(get_option('date_format'), $cell);
72
+ $time = date_i18n(get_option('time_format'), $cell);
73
+ $cell = sprintf(__('%1$s<br />%2$s', 'seo-ultimate'), $date, $time);
74
+ break;
75
+ case 'user_agent':
76
+ $binfo = get_browser($cell, true);
77
+ $ua = attribute_escape($cell);
78
+ $cell = '<abbr title="'.$ua.'">'.$binfo['parent'].'</abbr>';
79
+ break;
80
+ case 'url':
81
+ if (is_array($actions_callback)) {
82
+ $actions = call_user_func($actions_callback, $row);
83
+ $actions = apply_filters("su_{$this->module_key}_hits_table_actions", $actions, $row);
84
+ $cell = SU_Module::hover_row($cell, $actions);
85
+ }
86
+ break;
87
+ }
88
+
89
+ $cell = apply_filters("su_{$this->module_key}_hits_table_{$col}_cell", $cell, $row);
90
+
91
+ $class = str_replace(' ', '-', strtolower($title));
92
+ echo "\t\t\t<td class='hit-$class'>$cell</td>\n";
93
+ }
94
+ echo "\t\t</tr>\n";
95
+
96
+ $wpdb->update($table, array('is_new' => 0), array('id' => $row['id']));
97
+ }
98
+
99
+ echo "\t</tbody>\n</table>\n";
100
+ }
101
+
102
+ }
103
+ ?>
class.su-module.php CHANGED
@@ -3,7 +3,7 @@
3
  * The pseudo-abstract class upon which all modules are based.
4
  *
5
  * @abstract
6
- * @version 1.2
7
  * @since 0.1
8
  */
9
  class SU_Module {
@@ -896,97 +896,6 @@ class SU_Module {
896
  }
897
 
898
 
899
- /********** HITS LOG FUNCTIONS **********/
900
-
901
- /**
902
- * Lists logged hits in an administration table.
903
- *
904
- * @since 0.1
905
- *
906
- * @param string|false $where The WHERE portion of the SQL query to execute.
907
- * @param string|false $actions_callback The name of the module-child function from which to obtain a return value of URL-cell action link HTML.
908
- * @param bool $highlight_new Whether or not to highlight new rows. Optional.
909
- */
910
- function hits_table($where = false, $actions_callback = false, $highlight_new = true) {
911
- global $wpdb;
912
- $mk = $this->get_module_key();
913
-
914
- $table = SEO_Ultimate::get_table_name('hits');
915
- if ($where) $where = " WHERE $where";
916
- $result = $wpdb->get_results("SELECT * FROM $table$where ORDER BY id DESC", ARRAY_A);
917
-
918
- if (!$result) return false;
919
-
920
- $allfields = array(
921
- 'time' => __("Date", 'seo-ultimate')
922
- , 'ip_address' => __("IP Address", 'seo-ultimate')
923
- , 'user_agent' => __("Browser", 'seo-ultimate')
924
- , 'url' => __("URL Requested", 'seo-ultimate')
925
- , 'redirect_url' => __("Redirected To", 'seo-ultimate')
926
- , 'status_code' => __("Status Code", 'seo-ultimate')
927
- );
928
-
929
- $fields = array();
930
-
931
- foreach ($allfields as $col => $title) {
932
- if (strpos($where, " $col=") === false) $fields[$col] = $title;
933
- }
934
-
935
- $fields = apply_filters("su_{$mk}_hits_table_columns", $fields);
936
-
937
- echo "<table class='widefat' cellspacing='0'>\n\t<thead><tr>\n";
938
-
939
- foreach ($fields as $title) {
940
- $class = str_replace(' ', '-', strtolower($title));
941
- echo "\t\t<th scope='col' class='hit-$class'>$title</th>\n";
942
- }
943
-
944
- echo "\t</tr></thead>\n\t<tbody>\n";
945
-
946
- foreach ($result as $row) {
947
-
948
- if ($highlight_new && $row['is_new']) $class = ' class="new-hit"'; else $class='';
949
- echo "\t\t<tr$class>\n";
950
-
951
- foreach ($fields as $col => $title) {
952
- $cell = htmlspecialchars($row[$col]);
953
-
954
- switch ($col) {
955
- case 'time':
956
- $date = date_i18n(get_option('date_format'), $cell);
957
- $time = date_i18n(get_option('time_format'), $cell);
958
- $cell = sprintf(__('%1$s<br />%2$s', 'seo-ultimate'), $date, $time);
959
- break;
960
- case 'user_agent':
961
- $binfo = get_browser($cell, true);
962
- $ua = attribute_escape($cell);
963
- $cell = '<abbr title="'.$ua.'">'.$binfo['parent'].'</abbr>';
964
- break;
965
- case 'url':
966
- if ($actions_callback) {
967
- $actions = call_user_func(array($this, $actions_callback), $row);
968
- $actions = apply_filters("su_{$mk}_hits_table_actions", $actions, $row);
969
- $cell = $this->hover_row($cell, $actions);
970
- }
971
- break;
972
- }
973
-
974
- $cell = apply_filters("su_{$mk}_hits_table_{$col}_cell", $cell, $row);
975
-
976
- $class = str_replace(' ', '-', strtolower($title));
977
- echo "\t\t\t<td class='hit-$class'>$cell</td>\n";
978
- }
979
- echo "\t\t</tr>\n";
980
-
981
- $wpdb->update($table, array('is_new' => 0), array('id' => $row['id']));
982
- }
983
-
984
- echo "\t</tbody>\n</table>\n";
985
-
986
- return true;
987
- }
988
-
989
-
990
  /********** CRON FUNCTION **********/
991
 
992
  /**
3
  * The pseudo-abstract class upon which all modules are based.
4
  *
5
  * @abstract
6
+ * @version 1.2.1
7
  * @since 0.1
8
  */
9
  class SU_Module {
896
  }
897
 
898
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
899
  /********** CRON FUNCTION **********/
900
 
901
  /**
functions.php CHANGED
@@ -47,6 +47,19 @@ function su_debug_log($file, $class, $function, $line, $message) {
47
  }
48
  }
49
 
 
 
 
 
 
 
 
 
 
 
 
 
 
50
 
51
  /********** CLASS FUNCTION ALIASES **********/
52
 
47
  }
48
  }
49
 
50
+ /**
51
+ * Returns whether or not a given string starts with a given substring.
52
+ *
53
+ * @since 0.4
54
+ *
55
+ * @param string $str The "haystack" string.
56
+ * @param string $sub The "needle" string.
57
+ * @return bool Whether or not $str starts with $sub.
58
+ */
59
+ function su_str_startswith( $str, $sub ) {
60
+ return ( substr( $str, 0, strlen( $sub ) ) === $sub );
61
+ }
62
+
63
 
64
  /********** CLASS FUNCTION ALIASES **********/
65
 
modules/404s.php ADDED
@@ -0,0 +1,131 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * 404 Monitor Module
4
+ *
5
+ * @version 1.0
6
+ * @since 0.4
7
+ */
8
+
9
+ if (class_exists('SU_Module')) {
10
+
11
+ class SU_404s extends SU_Module {
12
+
13
+ var $hitset;
14
+
15
+ function init() {
16
+ $this->hitset = new SU_HitSet($this->get_module_key(), "status_code=404 AND redirect_url=''");
17
+ }
18
+
19
+ function get_menu_title() { return __('404 Monitor', 'seo-ultimate'); }
20
+ /*function get_menu_count() {
21
+ global $wpdb;
22
+ $table = SEO_Ultimate::get_table_name('hits');
23
+ return $wpdb->query("SELECT id FROM $table WHERE status_code=404 AND is_new=1");
24
+ }
25
+ function get_menu_count_label() { return __('New 404 Errors', 'seo-ultimate'); }*/
26
+
27
+ function admin_page_contents() {
28
+
29
+ global $wpdb;
30
+ $table = SEO_Ultimate::get_table_name('hits');
31
+
32
+ if ($this->is_action('delete')) {
33
+
34
+ if ($wpdb->query($wpdb->prepare("DELETE FROM $table WHERE id = %d LIMIT 1", $_GET['object'])))
35
+ $this->queue_message('success', __('The log entry was successfully deleted.', 'seo-ultimate'));
36
+ else
37
+ $this->queue_message('error', __('This log entry has already been deleted.', 'seo-ultimate'));
38
+
39
+ $this->hitset->query_db();
40
+
41
+ } elseif ($this->is_action('clear')) {
42
+
43
+ if ($wpdb->query("DELETE FROM $table WHERE status_code=404")) {
44
+ $this->queue_message('success', __('The log was successfully cleared.', 'seo-ultimate'));
45
+ $this->hitset->query_db();
46
+ }
47
+ }
48
+
49
+ if (!$this->hitset->have_hits())
50
+ $this->queue_message('success', __("No 404 errors in the log.", 'seo-ultimate'));
51
+
52
+ $this->print_messages();
53
+
54
+ if ($this->hitset->have_hits()) {
55
+
56
+ $this->hitset->admin_table(array($this, 'hits_table_action_links'));
57
+
58
+ $clearurl = $this->get_nonce_url('clear');
59
+ $confirm = __("Are you sure you want to delete all 404 log entries?", 'seo-ultimate');
60
+ echo "<a href=\"$clearurl\" class=\"button-secondary\" onclick=\"javascript:return confirm('$confirm')\">";
61
+ _e("Clear Log", 'seo-ultimate');
62
+ echo "</a>";
63
+ }
64
+ }
65
+
66
+ function hits_table_action_links($row) {
67
+ $url = $row['url'];
68
+
69
+ $deleteurl = $this->get_nonce_url('delete', $row['id']);
70
+ $url_encoded = urlencode($url);
71
+
72
+ $anchors = array(
73
+ __("Open", 'seo-ultimate')
74
+ , __("Google Cache", 'seo-ultimate')
75
+ , __("Delete Log Entry", 'seo-ultimate')
76
+ );
77
+
78
+ return <<<STR
79
+
80
+ <span class="open"><a href="$url" target="_blank">{$anchors[0]}</a> | </span>
81
+ <span class="cache"><a href="http://www.google.com/search?q=cache%3A$url_encoded" target="_blank">{$anchors[1]}</a> | </span>
82
+ <span class="delete"><a href="$deleteurl">{$anchors[2]}</a></span>
83
+
84
+ STR;
85
+ }
86
+
87
+ function admin_help() {
88
+
89
+ if ($this->hitset->have_hits()) {
90
+
91
+ return __(<<<STR
92
+ <p>The 404 Monitor keeps track of non-existant URLs that generated 404 errors. 404 errors are when a search engine or visitor comes to a URL on your site but nothing exists at that URL.
93
+ The 404 Monitor helps you spot 404 errors; then you can take steps to correct them (e.g. finding the broken links responsible or creating redirects).</p>
94
+ <p>Hover over a table row to access these options:</p>
95
+ <ul>
96
+ <li>The &#8220;View&#8221; link will open the URL in a new window. This is useful for testing whether or not a redirect is working.</li>
97
+ <li>The &#8220;Google Cache&#8221; link will open Google&#8217;s archived version of the URL in a new window. This is useful for determining what content, if any, used to be located at that URL.</li>
98
+ <li>Once you've taken care of a 404 error, you can click the &#8220;Delete Log Entry&#8221; link to remove it from the list. The URL will reappear on the list if it triggers a 404 error in the future.</li>
99
+ </ul>
100
+ <p>If there are any newly-logged URLs that you haven&#8217;t seen yet, these new URLs will be highlighted green in the table.</p>
101
+ <p>Notes:</p>
102
+ <ul>
103
+ <li>In order for the 404 Monitor to track 404 errors, you must have &#8220;Pretty Permalinks&#8221; enabled in your <a href="options-permalink.php">permalink options</a>.</li>
104
+ <li>Some parts of your website may not be under WordPress&#8217;s control; the 404 Monitor can&#8217;t track 404 errors on non-WordPress website areas.</li>
105
+ <li>The 404 Monitor doesn&#8217;t record 404 errors generated by logged-in users.</li>
106
+ </ul>
107
+ STR
108
+ , 'seo-ultimate');
109
+
110
+ /*<p>A numeric bubble will appear next to the &#8220;404 Monitor&#8221; item on the menu if there are any newly-logged URLs that you haven&#8217;t seen yet.
111
+ These new URLs will also be highlighted green in the table.</p>*/
112
+
113
+ } else {
114
+
115
+ return __(<<<STR
116
+ <p>Currently, the 404 Monitor doesn&#8217;t have any 404 errors in its log. This is good, and means there&#8217;s no action required on your part.
117
+ If the 404 Monitor logs any 404 errors in the future, you&#8217;ll see them on this page.</p>
118
+ <p>Notes:</p>
119
+ <ul>
120
+ <li>In order for the 404 Monitor to track 404 errors, you must have &#8220;Pretty Permalinks&#8221; enabled in your <a href="options-permalink.php">permalink options</a>.</li>
121
+ <li>Some parts of your website may not be under WordPress&#8217;s control; the 404 Monitor can&#8217;t track 404 errors on non-WordPress website areas.</li>
122
+ <li>The 404 Monitor doesn&#8217;t record 404 errors generated by logged-in users.</li>
123
+ </ul>
124
+ STR
125
+ , 'seo-ultimate');
126
+ }
127
+ }
128
+ }
129
+
130
+ }
131
+ ?>
modules/settings.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Settings Module
4
  *
5
- * @version 1.0
6
  * @since 0.2
7
  */
8
 
@@ -127,7 +127,7 @@ class SU_Settings extends SU_Module {
127
 
128
  function footer_link() {
129
  if (!$this->wp_meta_called)
130
- echo "\n<p><a href='http://www.seodesignsolutions.com/'>SEO</a> optimization provided by SEO Design Solutions</a></p>\n";
131
  }
132
 
133
  function admin_help() {
2
  /**
3
  * Settings Module
4
  *
5
+ * @version 1.0.1
6
  * @since 0.2
7
  */
8
 
127
 
128
  function footer_link() {
129
  if (!$this->wp_meta_called)
130
+ echo "\n<p>Search engine optimization by <a href='http://www.seodesignsolutions.com/'>SEO Design Solutions</a></a></p>\n";
131
  }
132
 
133
  function admin_help() {
readme.txt CHANGED
@@ -1,11 +1,11 @@
1
  === SEO Ultimate ===
2
  Contributors: SEO Design Solutions
3
- Tags: seo, title, meta, noindex, canonical, google, yahoo, bing, search engines, admin, post, page
4
  Requires at least: 2.8
5
  Tested up to: 2.8
6
- Stable tag: 0.3
7
 
8
- This all-in-one SEO plugin can rewrite title tags, noindex archives, customize meta data, and insert canonical tags (with many more features coming).
9
 
10
  == Description ==
11
 
@@ -19,6 +19,8 @@ SEO Ultimate is an all-in-one [SEO](http://www.seodesignsolutions.com/) plugin w
19
 
20
  * **Canonicalizer** - Inserts `<link rel="canonical" />` tags for your homepage and each of your posts, Pages, categories, tags, date archives, and author archives.
21
 
 
 
22
  SEO Ultimate was developed with WordPress plugin "best practices" in mind:
23
 
24
  * Integration with the contextual help system of WordPress 2.7+
@@ -27,7 +29,7 @@ SEO Ultimate was developed with WordPress plugin "best practices" in mind:
27
  * An uninstall routine
28
  * Integration with the new WordPress 2.7+ menu
29
 
30
- **NOTE:** This plugin is in beta, which means it's very feature-incomplete. We have many more features that we're working on finetuning before release, including 404 monitoring, PageRank sculpting, robots.txt editing, and more.
31
 
32
  If you install the plugin now, you can have these new features delivered to you on a regular basis via WordPress's automatic plugin upgrader.
33
 
@@ -80,6 +82,9 @@ Because of the tremendous effort put into this plugin, we ask that you please le
80
 
81
  == Release History ==
82
 
 
 
 
83
  = Version 0.3 (June 11, 2009) =
84
  * Added the Canonicalizer module
85
  * Added alerts of possible plugin conflicts
1
  === SEO Ultimate ===
2
  Contributors: SEO Design Solutions
3
+ Tags: seo, title, meta, noindex, canonical, 404, google, yahoo, bing, search engines, admin, post, page
4
  Requires at least: 2.8
5
  Tested up to: 2.8
6
+ Stable tag: 0.4
7
 
8
+ This all-in-one SEO plugin can handle titles, noindex, meta data, canonical tags, and 404 error tracking (with many more features coming soon).
9
 
10
  == Description ==
11
 
19
 
20
  * **Canonicalizer** - Inserts `<link rel="canonical" />` tags for your homepage and each of your posts, Pages, categories, tags, date archives, and author archives.
21
 
22
+ * **404 Monitor** - Logs 404 errors generated on your blog.
23
+
24
  SEO Ultimate was developed with WordPress plugin "best practices" in mind:
25
 
26
  * Integration with the contextual help system of WordPress 2.7+
29
  * An uninstall routine
30
  * Integration with the new WordPress 2.7+ menu
31
 
32
+ **NOTE:** This plugin is in beta, which means it's very feature-incomplete. We have many more features that we're working on finetuning before release, including PageRank sculpting, robots.txt editing, 301 logging, and much more.
33
 
34
  If you install the plugin now, you can have these new features delivered to you on a regular basis via WordPress's automatic plugin upgrader.
35
 
82
 
83
  == Release History ==
84
 
85
+ = Version 0.4 (June 18, 2009) =
86
+ * Added the 404 Monitor module
87
+
88
  = Version 0.3 (June 11, 2009) =
89
  * Added the Canonicalizer module
90
  * Added alerts of possible plugin conflicts
seo-ultimate.php CHANGED
@@ -2,8 +2,8 @@
2
  /*
3
  Plugin Name: SEO Ultimate
4
  Plugin URI: http://www.seodesignsolutions.com/wordpress-seo/
5
- Description: This all-in-one SEO plugin can rewrite title tags, edit meta data, add noindex to pages, and insert canonical tags (with many more features coming soon).
6
- Version: 0.3
7
  Author: SEO Design Solutions
8
  Author URI: http://www.seodesignsolutions.com/
9
  Text Domain: seo-ultimate
@@ -12,7 +12,7 @@ Text Domain: seo-ultimate
12
  /**
13
  * The main SEO Ultimate plugin file.
14
  * @package SeoUltimate
15
- * @version 0.3
16
  * @link http://www.seodesignsolutions.com/wordpress-seo/ SEO Ultimate Homepage
17
  */
18
 
@@ -38,10 +38,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
38
 
39
  define("SU_PLUGIN_NAME", "SEO Ultimate");
40
  define("SU_PLUGIN_URI", "http://www.seodesignsolutions.com/wordpress-seo/");
41
- define("SU_VERSION", "0.3");
42
  define("SU_AUTHOR", "SEO Design Solutions");
43
  define("SU_AUTHOR_URI", "http://www.seodesignsolutions.com/");
44
- define("SU_USER_AGENT", "SeoUltimate/0.3");
45
 
46
  define('SU_MODULE_ENABLED', 10);
47
  define('SU_MODULE_SILENCED', 5);
@@ -58,6 +58,7 @@ define('SU_RESULT_ERROR', -1);
58
  require('class.seo-ultimate.php');
59
  require('class.su-module.php');
60
  require('class.su-widget.php');
 
61
  require('functions.php');
62
 
63
 
2
  /*
3
  Plugin Name: SEO Ultimate
4
  Plugin URI: http://www.seodesignsolutions.com/wordpress-seo/
5
+ Description: This all-in-one SEO plugin can rewrite title tags, edit meta data, add noindex, insert canonical tags, and log 404 errors (with many more features coming soon).
6
+ Version: 0.4
7
  Author: SEO Design Solutions
8
  Author URI: http://www.seodesignsolutions.com/
9
  Text Domain: seo-ultimate
12
  /**
13
  * The main SEO Ultimate plugin file.
14
  * @package SeoUltimate
15
+ * @version 0.4
16
  * @link http://www.seodesignsolutions.com/wordpress-seo/ SEO Ultimate Homepage
17
  */
18
 
38
 
39
  define("SU_PLUGIN_NAME", "SEO Ultimate");
40
  define("SU_PLUGIN_URI", "http://www.seodesignsolutions.com/wordpress-seo/");
41
+ define("SU_VERSION", "0.4");
42
  define("SU_AUTHOR", "SEO Design Solutions");
43
  define("SU_AUTHOR_URI", "http://www.seodesignsolutions.com/");
44
+ define("SU_USER_AGENT", "SeoUltimate/0.4");
45
 
46
  define('SU_MODULE_ENABLED', 10);
47
  define('SU_MODULE_SILENCED', 5);
58
  require('class.seo-ultimate.php');
59
  require('class.su-module.php');
60
  require('class.su-widget.php');
61
+ require('class.su-hitset.php');
62
  require('functions.php');
63
 
64
 
seo-ultimate.pot CHANGED
@@ -8,7 +8,7 @@ msgid ""
8
  msgstr ""
9
  "Project-Id-Version: PACKAGE VERSION\n"
10
  "Report-Msgid-Bugs-To: http://wordpress.org/tag/seo-ultimate\n"
11
- "POT-Creation-Date: 2009-06-11 21:39+0000\n"
12
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14
  "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -54,6 +54,35 @@ msgstr ""
54
  msgid "SEO Settings"
55
  msgstr ""
56
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
57
  #: class.su-module.php:408
58
  #, php-format
59
  msgid "%1$s | %2$s %3$s by %4$s"
@@ -77,33 +106,44 @@ msgstr ""
77
  msgid "Reset"
78
  msgstr ""
79
 
80
- #: class.su-module.php:921
81
- msgid "Date"
82
  msgstr ""
83
 
84
- #: class.su-module.php:922
85
- msgid "IP Address"
86
  msgstr ""
87
 
88
- #: class.su-module.php:923
89
- msgid "Browser"
90
  msgstr ""
91
 
92
- #: class.su-module.php:924
93
- msgid "URL Requested"
94
  msgstr ""
95
 
96
- #: class.su-module.php:925
97
- msgid "Redirected To"
98
  msgstr ""
99
 
100
- #: class.su-module.php:926
101
- msgid "Status Code"
102
  msgstr ""
103
 
104
- #: class.su-module.php:958
105
- #, php-format
106
- msgid "%1$s<br />%2$s"
 
 
 
 
 
 
 
 
 
 
 
107
  msgstr ""
108
 
109
  #: modules/canonical.php:13
@@ -183,7 +223,7 @@ msgid "You&#8217;ve entered %s characters. Most search engines use up to 160."
183
  msgstr ""
184
 
185
  #: modules/meta.php:60
186
- msgid "Keywords:<br /><em>(separate with commas)"
187
  msgstr ""
188
 
189
  #: modules/meta.php:117
@@ -412,8 +452,8 @@ msgstr ""
412
  #. Description of an extension
413
  msgid ""
414
  "This all-in-one SEO plugin can rewrite title tags, edit meta data, add "
415
- "noindex to pages, and insert canonical tags (with many more features coming "
416
- "soon)."
417
  msgstr ""
418
 
419
  #. Author of an extension
8
  msgstr ""
9
  "Project-Id-Version: PACKAGE VERSION\n"
10
  "Report-Msgid-Bugs-To: http://wordpress.org/tag/seo-ultimate\n"
11
+ "POT-Creation-Date: 2009-06-18 18:04+0000\n"
12
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14
  "Language-Team: LANGUAGE <LL@li.org>\n"
54
  msgid "SEO Settings"
55
  msgstr ""
56
 
57
+ #: class.su-hitset.php:36
58
+ msgid "Date"
59
+ msgstr ""
60
+
61
+ #: class.su-hitset.php:37
62
+ msgid "IP Address"
63
+ msgstr ""
64
+
65
+ #: class.su-hitset.php:38
66
+ msgid "Browser"
67
+ msgstr ""
68
+
69
+ #: class.su-hitset.php:39
70
+ msgid "URL Requested"
71
+ msgstr ""
72
+
73
+ #: class.su-hitset.php:40
74
+ msgid "Redirected To"
75
+ msgstr ""
76
+
77
+ #: class.su-hitset.php:41
78
+ msgid "Status Code"
79
+ msgstr ""
80
+
81
+ #: class.su-hitset.php:73
82
+ #, php-format
83
+ msgid "%1$s<br />%2$s"
84
+ msgstr ""
85
+
86
  #: class.su-module.php:408
87
  #, php-format
88
  msgid "%1$s | %2$s %3$s by %4$s"
106
  msgid "Reset"
107
  msgstr ""
108
 
109
+ #: modules/404s.php:19
110
+ msgid "404 Monitor"
111
  msgstr ""
112
 
113
+ #: modules/404s.php:35
114
+ msgid "The log entry was successfully deleted."
115
  msgstr ""
116
 
117
+ #: modules/404s.php:37
118
+ msgid "This log entry has already been deleted."
119
  msgstr ""
120
 
121
+ #: modules/404s.php:44
122
+ msgid "The log was successfully cleared."
123
  msgstr ""
124
 
125
+ #: modules/404s.php:50
126
+ msgid "No 404 errors in the log."
127
  msgstr ""
128
 
129
+ #: modules/404s.php:59
130
+ msgid "Are you sure you want to delete all 404 log entries?"
131
  msgstr ""
132
 
133
+ #: modules/404s.php:61
134
+ msgid "Clear Log"
135
+ msgstr ""
136
+
137
+ #: modules/404s.php:73
138
+ msgid "Open"
139
+ msgstr ""
140
+
141
+ #: modules/404s.php:74
142
+ msgid "Google Cache"
143
+ msgstr ""
144
+
145
+ #: modules/404s.php:75
146
+ msgid "Delete Log Entry"
147
  msgstr ""
148
 
149
  #: modules/canonical.php:13
223
  msgstr ""
224
 
225
  #: modules/meta.php:60
226
+ msgid "Keywords:<br /><em>(separate with commas)</em>"
227
  msgstr ""
228
 
229
  #: modules/meta.php:117
452
  #. Description of an extension
453
  msgid ""
454
  "This all-in-one SEO plugin can rewrite title tags, edit meta data, add "
455
+ "noindex, insert canonical tags, and log 404 errors (with many more features "
456
+ "coming soon)."
457
  msgstr ""
458
 
459
  #. Author of an extension