SEO Ultimate - Version 3.2

Version Description

Download this release

Release Info

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

Code changes from version 3.1 to 3.2

includes/jlfunctions/arr.php CHANGED
@@ -104,6 +104,44 @@ class suarr {
104
  }
105
  return $newarr;
106
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
107
  }
108
 
109
  ?>
104
  }
105
  return $newarr;
106
  }
107
+
108
+ function key_replace($array, $key_changes, $recursive = true, $return_replaced_only = false) {
109
+ $newarray = array();
110
+ foreach ($array as $key => $value) {
111
+ $changed = false;
112
+ if ($recursive && is_array($value)) {
113
+ $oldvalue = $value;
114
+ $value = suarr::key_replace($value, $key_changes, true, $return_replaced_only);
115
+ if ($oldvalue != $value) $changed = true;
116
+ }
117
+
118
+ if (isset($key_changes[$key])) {
119
+ $key = $key_changes[$key];
120
+ $changed = true;
121
+ }
122
+
123
+ if ($changed || !$return_replaced_only)
124
+ $newarray[$key] = $value;
125
+ }
126
+ return $newarray;
127
+ }
128
+
129
+ function value_replace($array, $value_changes, $recursive = true, $return_replaced_only = false) {
130
+ $newarray = array();
131
+ foreach ($array as $key => $value) {
132
+
133
+ $oldvalue = $value;
134
+
135
+ if ($recursive && is_array($value))
136
+ $value = suarr::value_replace($value, $value_changes, true);
137
+ elseif (isset($value_changes[$value]))
138
+ $value = $value_changes[$value];
139
+
140
+ if ($value != $oldvalue || !$return_replaced_only)
141
+ $newarray[$key] = $value;
142
+ }
143
+ return $newarray;
144
+ }
145
  }
146
 
147
  ?>
includes/jlfunctions/io.php CHANGED
@@ -23,6 +23,59 @@ class suio {
23
  return rtrim($path, '/');
24
  }
25
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
26
  }
27
 
28
  ?>
23
  return rtrim($path, '/');
24
  }
25
 
26
+ function import_csv($path) {
27
+ if (!is_readable($path)) return false;
28
+
29
+ $result = array();
30
+
31
+ //Open the CSV file
32
+ $handle = @fopen($path, 'r');
33
+ if ($handle === false) return false;
34
+
35
+ //Get the columns
36
+ $headers = fgetcsv($handle, 99999, ',');
37
+ if ($headers === false) {
38
+ fclose($handle);
39
+ return false;
40
+ }
41
+
42
+ //Get the rows
43
+ while (($row = fgetcsv($handle, 99999, ',')) !== false) {
44
+ $new = array_combine($headers, $row);
45
+ if ($new !== false) $result[] = $new;
46
+ }
47
+
48
+ //Close the CSV file
49
+ fclose($handle);
50
+
51
+ //Return
52
+ return $result;
53
+ }
54
+
55
+ function export_csv($csv) {
56
+ header("Content-Type: text/csv");
57
+ $result = suio::print_csv($csv);
58
+ if ($result) die(); else return false;
59
+ }
60
+
61
+ function print_csv($csv) {
62
+ if (!is_array($csv) || !count($csv) || !is_array($csv[0])) return false;
63
+
64
+ $headers = array_keys($csv[0]);
65
+ array_unshift($csv, array_combine($headers, $headers));
66
+
67
+ foreach ($csv as $row) {
68
+ $csv_row = array();
69
+ foreach ($headers as $header) {
70
+ $csv_row[$header] = $row[$header];
71
+ if (sustr::has($csv_row[$header], ',')) $csv_row[$header] = '"'.$csv_row[$header].'"';
72
+ }
73
+
74
+ echo implode(',', $csv_row)."\r\n";
75
+ }
76
+
77
+ return true;
78
+ }
79
  }
80
 
81
  ?>
modules/settings/install.php CHANGED
@@ -92,7 +92,7 @@ class SU_Install extends SU_Module {
92
 
93
  $versions = $this->plugin->download_changelog();
94
 
95
- if (count($versions)) {
96
 
97
  $radiobuttons = array();
98
  $first = true;
92
 
93
  $versions = $this->plugin->download_changelog();
94
 
95
+ if (is_array($versions) && count($versions)) {
96
 
97
  $radiobuttons = array();
98
  $first = true;
modules/settings/settings-data.php CHANGED
@@ -75,23 +75,120 @@ class SU_SettingsData extends SU_Module {
75
  $this->plugin->dbdata['settings'] = array();
76
  unset($this->plugin->dbdata['modules']);
77
  $this->load_default_settings();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
78
  }
79
  }
80
 
81
  function import_tab() {
82
  $this->print_messages();
83
- $this->admin_subheader(__('Import SEO Ultimate Settings File', 'seo-ultimate'));
84
  $hook = $this->plugin->key_to_hook($this->get_module_or_parent_key());
 
 
 
85
  echo "\n<p>";
86
- _e("You can use this form to upload and import an SEO Ultimate settings file stored on your computer. (Settings files can be created using the Export tool.)", 'seo-ultimate');
87
  echo "</p>\n";
88
- echo "<form enctype='multipart/form-data' method='post' action='?page=$hook&amp;action=import#su-import'>\n";
89
  echo "\t<input name='settingsfile' type='file' /> ";
90
- $confirm = __("Are you sure you want to import this settings file? This will overwrite your current settings and cannot be undone.", 'seo-ultimate');
91
- echo "<input type='submit' class='button-primary' value='".__("Import", 'seo-ultimate')."' onclick=\"javascript:return confirm('$confirm')\" />\n";
92
  wp_nonce_field($this->get_nonce_handle('su-import'));
93
  echo "</form>\n";
94
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
95
  //Import from other plugins
96
  $importmodules = array();
97
  foreach ($this->plugin->modules as $key => $x_module) {
@@ -102,9 +199,9 @@ class SU_SettingsData extends SU_Module {
102
  }
103
 
104
  if (count($importmodules)) {
105
- $this->admin_subheader(__("Import from Other Plugins", 'seo-ultimate'));
106
  echo "\n<p>";
107
- _e("You can import settings and data from these plugins. Clicking a plugin&#8217;s name will take you to the importer page, where you can customize parameters and start the import.", 'seo-ultimate');
108
  echo "</p>\n";
109
  echo "<table class='widefat'>\n";
110
 
@@ -123,14 +220,27 @@ class SU_SettingsData extends SU_Module {
123
  }
124
 
125
  function export_tab() {
 
 
126
  echo "\n<p>";
127
- _e("You can use the export tool to download an SEO Ultimate settings file to your computer.", 'seo-ultimate');
128
  echo "</p>\n<p>";
129
- _e("A settings file includes the data of every checkbox and textbox of every installed module. It does NOT include site-specific data like logged 404s or post/page title/meta data (this data would be included in a standard database backup, however).", 'seo-ultimate');
130
  echo "</p>\n<p>";
131
  $url = $this->get_nonce_url('su-export');
132
- echo "<a href='$url' class='button-primary'>".__("Download Settings File", 'seo-ultimate')."</a>";
133
  echo "</p>\n";
 
 
 
 
 
 
 
 
 
 
 
134
  }
135
 
136
  function reset_tab() {
75
  $this->plugin->dbdata['settings'] = array();
76
  unset($this->plugin->dbdata['modules']);
77
  $this->load_default_settings();
78
+
79
+ } elseif ($this->is_action('dj-export')) {
80
+ header('Content-Disposition: attachment; filename="Deeplink Juggernaut Content Links ('.date('Y-m-d').').csv"');
81
+
82
+ $djlinks = $this->get_setting('links', array(), 'autolinks');
83
+ $csv_headers = array(
84
+ 'anchor' => 'Anchor'
85
+ , 'to_type' => 'Destination Type'
86
+ , 'to_id' => 'Destination'
87
+ , 'title' => 'Title'
88
+ , 'nofollow' => 'Nofollow'
89
+ , 'target' => 'Target'
90
+ );
91
+ if (is_array($djlinks) && count($djlinks)) {
92
+ $djlinks = suarr::key_replace($djlinks, $csv_headers, true, true);
93
+ $djlinks = suarr::value_replace($djlinks, array(
94
+ 0 => 'No'
95
+ , 1 => 'Yes'
96
+ , 'url' => 'URL'
97
+ ), true, false);
98
+ } else
99
+ $djlinks = array(array_fill_keys($csv_headers, ''));
100
+
101
+ suio::export_csv($djlinks);
102
+ die();
103
+
104
+ } elseif ($this->is_action('dj-import')) {
105
+
106
+ if (strlen($_FILES['settingsfile']['name'])) {
107
+
108
+ $file = $_FILES['settingsfile']['tmp_name'];
109
+ if (is_uploaded_file($file)) {
110
+ $import = suio::import_csv($file);
111
+ if ($import === false)
112
+ $this->queue_message('error', __('The uploaded file is not in the proper format. Links could not be imported.', 'seo-ultimate'));
113
+ else {
114
+ $import = suarr::key_replace($import, array(
115
+ 'Anchor' => 'anchor'
116
+ , 'Destination Type' => 'to_type'
117
+ , 'Destination' => 'to_id'
118
+ , 'URL' => 'to_id'
119
+ , 'Title' => 'title'
120
+ , 'Nofollow' => 'nofollow'
121
+ , 'Target' => 'target'
122
+ ), true, true);
123
+ $import = suarr::value_replace($import, array(
124
+ 'No' => false
125
+ , 'Yes' => true
126
+ , 'URL' => 'url'
127
+ ), true, false);
128
+
129
+ $djlinks = array();
130
+ foreach ($import as $link) {
131
+
132
+ //Validate destination type
133
+ //Only one valid option at this time ('url'), so that makes this easy...
134
+ $link['to_type'] = 'url';
135
+
136
+ //Validate nofollow
137
+ if (!is_bool($link['nofollow']))
138
+ $link['nofollow'] = false;
139
+
140
+ //Validate target
141
+ $link['target'] = ltrim($link['target'], '_');
142
+ if (!in_array($link['target'], array('self', 'blank'))) //Only _self or _blank are supported right now
143
+ $link['target'] = 'self';
144
+
145
+ //Add link!
146
+ $djlinks[] = $link;
147
+ }
148
+
149
+ $this->update_setting('links', $djlinks, 'autolinks');
150
+
151
+ $this->queue_message('success', __('Links successfully imported.', 'seo-ultimate'));
152
+ }
153
+ } else
154
+ $this->queue_message('error', __('The CSV file could not be uploaded successfully.', 'seo-ultimate'));
155
+
156
+ } else
157
+ $this->queue_message('warning', __('Links could not be imported because no CSV file was selected. Please click the &#8220;Browse&#8221; button and select a file to import.', 'seo-ultimate'));
158
+
159
  }
160
  }
161
 
162
  function import_tab() {
163
  $this->print_messages();
 
164
  $hook = $this->plugin->key_to_hook($this->get_module_or_parent_key());
165
+
166
+ //SEO Ultimate
167
+ $this->admin_subheader(__('Import SEO Ultimate Settings File', 'seo-ultimate'));
168
  echo "\n<p>";
169
+ _e('You can use this form to upload and import an SEO Ultimate settings file stored on your computer. (These files can be created using the Export tool.) Note that importing a file will overwrite your existing settings with those in the file.', 'seo-ultimate');
170
  echo "</p>\n";
171
+ echo "<form enctype='multipart/form-data' method='post' action='?page=$hook&amp;action=su-import#su-import'>\n";
172
  echo "\t<input name='settingsfile' type='file' /> ";
173
+ $confirm = __('Are you sure you want to import this settings file? This will overwrite your current settings and cannot be undone.', 'seo-ultimate');
174
+ echo "<input type='submit' class='button-primary' value='".__('Import Settings File', 'seo-ultimate')."' onclick=\"javascript:return confirm('$confirm')\" />\n";
175
  wp_nonce_field($this->get_nonce_handle('su-import'));
176
  echo "</form>\n";
177
 
178
+ if ($this->plugin->module_exists('content-autolinks')) {
179
+ //Deeplink Juggernaut
180
+ $this->admin_subheader(__('Import Deeplink Juggernaut CSV File', 'seo-ultimate'));
181
+ echo "\n<p>";
182
+ _e('You can use this form to upload and import a Deeplink Juggernaut CSV file stored on your computer. (These files can be created using the Export tool.) Note that importing a file will overwrite your existing links with those in the file.', 'seo-ultimate');
183
+ echo "</p>\n";
184
+ echo "<form enctype='multipart/form-data' method='post' action='?page=$hook&amp;action=dj-import#su-import'>\n";
185
+ echo "\t<input name='settingsfile' type='file' /> ";
186
+ $confirm = __('Are you sure you want to import this CSV file? This will overwrite your current Deeplink Juggernaut links and cannot be undone.', 'seo-ultimate');
187
+ echo "<input type='submit' class='button-primary' value='".__('Import CSV File', 'seo-ultimate')."' onclick=\"javascript:return confirm('$confirm')\" />\n";
188
+ wp_nonce_field($this->get_nonce_handle('dj-import'));
189
+ echo "</form>\n";
190
+ }
191
+
192
  //Import from other plugins
193
  $importmodules = array();
194
  foreach ($this->plugin->modules as $key => $x_module) {
199
  }
200
 
201
  if (count($importmodules)) {
202
+ $this->admin_subheader(__('Import from Other Plugins', 'seo-ultimate'));
203
  echo "\n<p>";
204
+ _e('You can import settings and data from these plugins. Clicking a plugin&#8217;s name will take you to the importer page, where you can customize parameters and start the import.', 'seo-ultimate');
205
  echo "</p>\n";
206
  echo "<table class='widefat'>\n";
207
 
220
  }
221
 
222
  function export_tab() {
223
+ //SEO Ultimate
224
+ $this->admin_subheader(__('Export SEO Ultimate Settings File', 'seo-ultimate'));
225
  echo "\n<p>";
226
+ _e('You can use this export tool to download an SEO Ultimate settings file to your computer.', 'seo-ultimate');
227
  echo "</p>\n<p>";
228
+ _e('A settings file includes the data of every checkbox and textbox of every installed module. It does NOT include site-specific data like logged 404s or post/page title/meta data (this data would be included in a standard database backup, however).', 'seo-ultimate');
229
  echo "</p>\n<p>";
230
  $url = $this->get_nonce_url('su-export');
231
+ echo "<a href='$url' class='button-primary'>".__('Download Settings File', 'seo-ultimate')."</a>";
232
  echo "</p>\n";
233
+
234
+ if ($this->plugin->module_exists('content-autolinks')) {
235
+ //Deeplink Juggernaut
236
+ $this->admin_subheader(__('Export Deeplink Juggernaut CSV File', 'seo-ultimate'));
237
+ echo "\n<p>";
238
+ _e('You can use this export tool to download a CSV file (comma-separated values file) that contains your Deeplink Juggernaut links. Once you download this file to your computer, you can edit it using your favorite spreadsheet program. When you&#8217;re done editing, you can re-upload the file using the Import tool.', 'seo-ultimate');
239
+ echo "</p>\n<p>";
240
+ $url = $this->get_nonce_url('dj-export');
241
+ echo "<a href='$url' class='button-primary'>".__('Download CSV File', 'seo-ultimate')."</a>";
242
+ echo "</p>\n";
243
+ }
244
  }
245
 
246
  function reset_tab() {
plugin/su-functions.php CHANGED
@@ -108,7 +108,7 @@ function su_esc_attr($str) {
108
  * @since 2.1
109
  */
110
  function su_esc_html($str) {
111
- return wp_specialchars($str); //Yes, this is deprecated... will switch to esc_html later...
112
  }
113
 
114
  /**
@@ -120,7 +120,7 @@ function su_esc_html($str) {
120
  * @return string The filtered string.
121
  */
122
  function su_esc_editable_html($str) {
123
- return wp_specialchars($str, ENT_QUOTES, false, true);
124
  }
125
 
126
  ?>
108
  * @since 2.1
109
  */
110
  function su_esc_html($str) {
111
+ return esc_html($str);
112
  }
113
 
114
  /**
120
  * @return string The filtered string.
121
  */
122
  function su_esc_editable_html($str) {
123
+ return _wp_specialchars($str, ENT_QUOTES, false, true);
124
  }
125
 
126
  ?>
readme.txt CHANGED
@@ -1,9 +1,9 @@
1
  === SEO Ultimate ===
2
  Contributors: SEO Design Solutions
3
- Tags: seo, SEO Ultimate, suite, google, yahoo, bing, search engines, admin, post, page, custom post types, categories, tags, terms, custom taxonomies, title, meta, robots, noindex, nofollow, canonical, 404, robots.txt, htaccess, slugs, url, anchor, more, link, excerpt, permalink, links, autolinks, code, footer, modules, uninstallable, reinstallable, downgradable
4
  Requires at least: 2.8
5
  Tested up to: 3.0
6
- Stable tag: 3.1
7
 
8
  This all-in-one SEO plugin gives you control over titles, noindex/nofollow, meta tags, slugs, canonical tags, "more" links, 404 errors, and more.
9
 
@@ -11,11 +11,11 @@ This all-in-one SEO plugin gives you control over titles, noindex/nofollow, meta
11
 
12
  = Recent Releases =
13
 
 
14
  * Version 3.1 adds more Deeplink Juggernaut features
15
  * Version 3.0 adds the Rich Snippet Creator module
16
  * Version 2.9 adds custom taxonomy support to Title Tag Rewriter
17
  * Version 2.8 adds custom post type support to Title Tag Rewriter
18
- * Version 2.7 adds the Code Inserter module
19
 
20
  = Features =
21
 
@@ -74,13 +74,14 @@ SEO Ultimate is an all-in-one [SEO](http://www.seodesignsolutions.com/) plugin w
74
  * Determine which of your webpages Google most strongly associates with the keywords you specify.
75
  * Use the information to determine ideal targets for incoming links or ideal sources of outgoing links.
76
 
77
- * **Deeplink Juggernaut** -- UPDATED in Version 3.1
78
  * Automatically link phrases in your posts/pages to given URLs.
79
  * Use the power of anchor text to boost your internal ranking SEO paradigm.
80
  * Control the maximum number of autolinks added to each post/page.
81
  * Apply the nofollow attribute on a per-link basis. (Perfect for automatic affiliate links.)
 
82
 
83
- * **Code Inserter** -- NEW in Version 2.7
84
  * Easily insert custom HTML into your site's `<head>` tag, footer, or item content.
85
  * Use to add Google Analytics, Feedburner FeedFlare, Google AdSense section targeting, and other SEO/SEM-enhancing code snippets.
86
  * Code remains even when switching themes.
@@ -197,11 +198,18 @@ Frequently asked questions, settings help, and troubleshooting tips for SEO Ulti
197
 
198
  == Changelog ==
199
 
 
 
 
 
 
 
200
  = Version 3.1 (June 22, 2010) =
201
  * Feature: Deeplink Juggernaut now supports unlimited autolinks instead of just 20
202
  * Feature: Deeplink Juggernaut now supports custom title attributes for autolinks
203
  * Feature: Deeplink Juggernaut interface now has convenient checkboxes for deleting autolinks
204
  * Feature: Deeplink Juggernaut autolinks can now open in new windows if desired
 
205
  * Improvement: SEO Ultimate upgrade notices now use official WordPress plugin API
206
  * Bugfix: SEO Ultimate no longer slows down the "Plugins" admin page excessively
207
 
1
  === SEO Ultimate ===
2
  Contributors: SEO Design Solutions
3
+ Tags: seo, SEO Ultimate, suite, google, yahoo, bing, search engines, admin, post, page, custom post types, categories, tags, terms, custom taxonomies, title, meta, robots, noindex, nofollow, canonical, 404, robots.txt, htaccess, slugs, url, anchor, more, link, excerpt, permalink, links, autolinks, code, footer, modules, uninstallable, reinstallable, downgradable, import, export, CSV
4
  Requires at least: 2.8
5
  Tested up to: 3.0
6
+ Stable tag: 3.2
7
 
8
  This all-in-one SEO plugin gives you control over titles, noindex/nofollow, meta tags, slugs, canonical tags, "more" links, 404 errors, and more.
9
 
11
 
12
  = Recent Releases =
13
 
14
+ * Version 3.2 adds CSV import/export for Deeplink Juggernaut
15
  * Version 3.1 adds more Deeplink Juggernaut features
16
  * Version 3.0 adds the Rich Snippet Creator module
17
  * Version 2.9 adds custom taxonomy support to Title Tag Rewriter
18
  * Version 2.8 adds custom post type support to Title Tag Rewriter
 
19
 
20
  = Features =
21
 
74
  * Determine which of your webpages Google most strongly associates with the keywords you specify.
75
  * Use the information to determine ideal targets for incoming links or ideal sources of outgoing links.
76
 
77
+ * **Deeplink Juggernaut** -- UPDATED in Version 3.2
78
  * Automatically link phrases in your posts/pages to given URLs.
79
  * Use the power of anchor text to boost your internal ranking SEO paradigm.
80
  * Control the maximum number of autolinks added to each post/page.
81
  * Apply the nofollow attribute on a per-link basis. (Perfect for automatic affiliate links.)
82
+ * Import/export your links as CSV files.
83
 
84
+ * **Code Inserter**
85
  * Easily insert custom HTML into your site's `<head>` tag, footer, or item content.
86
  * Use to add Google Analytics, Feedburner FeedFlare, Google AdSense section targeting, and other SEO/SEM-enhancing code snippets.
87
  * Code remains even when switching themes.
198
 
199
  == Changelog ==
200
 
201
+ = Version 3.2 (June 23, 2010) =
202
+ * Feature: Added CSV import/export for Deeplink Juggernaut
203
+ * Improvement: When installed on an old, unsupported version of WordPress, SEO Ultimate now presents a nice error message instead of crashing like most plugins do
204
+ * Bugfix: Fixed PHP error that would appear on Upgrade/Downgrade tabs upon WordPress API error
205
+ * Bugfix: Fixed SEO Ultimate settings importer
206
+
207
  = Version 3.1 (June 22, 2010) =
208
  * Feature: Deeplink Juggernaut now supports unlimited autolinks instead of just 20
209
  * Feature: Deeplink Juggernaut now supports custom title attributes for autolinks
210
  * Feature: Deeplink Juggernaut interface now has convenient checkboxes for deleting autolinks
211
  * Feature: Deeplink Juggernaut autolinks can now open in new windows if desired
212
+ * Deeplink Juggernaut is now out of beta
213
  * Improvement: SEO Ultimate upgrade notices now use official WordPress plugin API
214
  * Bugfix: SEO Ultimate no longer slows down the "Plugins" admin page excessively
215
 
screenshot-14.png CHANGED
Binary file
seo-ultimate.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: SEO Ultimate
4
  Plugin URI: http://www.seodesignsolutions.com/wordpress-seo/
5
  Description: This all-in-one SEO plugin gives you control over title tags, noindex/nofollow, meta tags, rich snippets, slugs, canonical tags, "more" links, 404 errors, and more.
6
- Version: 3.1
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 3.1
16
  * @link http://www.seodesignsolutions.com/wordpress-seo/ SEO Ultimate Homepage
17
  */
18
 
@@ -33,15 +33,24 @@ You should have received a copy of the GNU General Public License
33
  along with this program. If not, see <http://www.gnu.org/licenses/>.
34
  */
35
 
 
 
 
 
 
 
36
  /********** CONSTANTS **********/
37
 
 
 
 
38
  //Reading plugin info from constants is faster than trying to parse it from the header above.
39
  define("SU_PLUGIN_NAME", "SEO Ultimate");
40
  define("SU_PLUGIN_URI", "http://www.seodesignsolutions.com/wordpress-seo/");
41
- define("SU_VERSION", "3.1");
42
  define("SU_AUTHOR", "SEO Design Solutions");
43
  define("SU_AUTHOR_URI", "http://www.seodesignsolutions.com/");
44
- define("SU_USER_AGENT", "SeoUltimate/3.1");
45
 
46
  /********** INCLUDES **********/
47
 
@@ -63,16 +72,18 @@ include 'modules/class.su-importmodule.php';
63
 
64
  /********** PLUGIN FILE LOAD HANDLER **********/
65
 
66
- //If we're running WordPress, then initialize the main class loaded above.
67
- //Or, show a blank page on direct load.
68
-
69
- global $seo_ultimate;
70
- if (defined('ABSPATH'))
71
  $seo_ultimate =& new SEO_Ultimate(__FILE__);
72
- else {
73
- header('Status: 403 Forbidden');
74
- header('HTTP/1.1 403 Forbidden');
75
- die();
 
 
 
 
76
  }
77
 
78
  ?>
3
  Plugin Name: SEO Ultimate
4
  Plugin URI: http://www.seodesignsolutions.com/wordpress-seo/
5
  Description: This all-in-one SEO plugin gives you control over title tags, noindex/nofollow, meta tags, rich snippets, slugs, canonical tags, "more" links, 404 errors, and more.
6
+ Version: 3.2
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 3.2
16
  * @link http://www.seodesignsolutions.com/wordpress-seo/ SEO Ultimate Homepage
17
  */
18
 
33
  along with this program. If not, see <http://www.gnu.org/licenses/>.
34
  */
35
 
36
+ if (!defined('ABSPATH')) {
37
+ header('Status: 403 Forbidden');
38
+ header('HTTP/1.1 403 Forbidden');
39
+ die();
40
+ }
41
+
42
  /********** CONSTANTS **********/
43
 
44
+ //The minimum version of WordPress required
45
+ define('SU_MINIMUM_WP_VER', '2.8');
46
+
47
  //Reading plugin info from constants is faster than trying to parse it from the header above.
48
  define("SU_PLUGIN_NAME", "SEO Ultimate");
49
  define("SU_PLUGIN_URI", "http://www.seodesignsolutions.com/wordpress-seo/");
50
+ define("SU_VERSION", "3.2");
51
  define("SU_AUTHOR", "SEO Design Solutions");
52
  define("SU_AUTHOR_URI", "http://www.seodesignsolutions.com/");
53
+ define("SU_USER_AGENT", "SeoUltimate/3.2");
54
 
55
  /********** INCLUDES **********/
56
 
72
 
73
  /********** PLUGIN FILE LOAD HANDLER **********/
74
 
75
+ global $wp_version;
76
+ if (version_compare($wp_version, SU_MINIMUM_WP_VER, '>=')) {
77
+ global $seo_ultimate;
 
 
78
  $seo_ultimate =& new SEO_Ultimate(__FILE__);
79
+ } else {
80
+ add_action('admin_notices', 'su_wp_incompat_notice');
81
+ }
82
+
83
+ function su_wp_incompat_notice() {
84
+ echo '<div class="error"><p>';
85
+ printf(__('SEO Ultimate requires WordPress %s or above. Please upgrade to the latest version of WordPress to enable SEO Ultimate on your blog, or deactivate SEO Ultimate to remove this notice.', 'seo-ultimate'), SU_MINIMUM_WP_VER);
86
+ echo "</p></div>\n";
87
  }
88
 
89
  ?>
seo-ultimate.pot CHANGED
@@ -1,4 +1,4 @@
1
- # Translation of the WordPress plugin SEO Ultimate 3.1 by SEO Design Solutions.
2
  # Copyright (C) 2010 SEO Design Solutions
3
  # This file is distributed under the same license as the SEO Ultimate package.
4
  # FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
@@ -6,9 +6,9 @@
6
  #, fuzzy
7
  msgid ""
8
  msgstr ""
9
- "Project-Id-Version: SEO Ultimate 3.1\n"
10
  "Report-Msgid-Bugs-To: http://wordpress.org/tag/seo-ultimate\n"
11
- "POT-Creation-Date: 2010-06-22 15:13+0000\n"
12
  "PO-Revision-Date: 2010-MO-DA HO:MI+ZONE\n"
13
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14
  "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -972,7 +972,7 @@ msgstr ""
972
  msgid "SEO Design Solutions Whitepapers"
973
  msgstr ""
974
 
975
- #. #-#-#-#-# plugin.pot (SEO Ultimate 3.1) #-#-#-#-#
976
  #. Author of the plugin/theme
977
  #: modules/sds-blog/sds-blog.php:49
978
  msgid "SEO Design Solutions"
@@ -1110,7 +1110,7 @@ msgstr ""
1110
  msgid "Manage Settings Data"
1111
  msgstr ""
1112
 
1113
- #: modules/settings/settings-data.php:21 modules/settings/settings-data.php:91
1114
  msgid "Import"
1115
  msgstr ""
1116
 
@@ -1138,41 +1138,91 @@ msgid ""
1138
  "click the &#8220;Browse&#8221; button and select a file to import."
1139
  msgstr ""
1140
 
1141
- #: modules/settings/settings-data.php:83
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1142
  msgid "Import SEO Ultimate Settings File"
1143
  msgstr ""
1144
 
1145
- #: modules/settings/settings-data.php:86
1146
  msgid ""
1147
  "You can use this form to upload and import an SEO Ultimate settings file "
1148
- "stored on your computer. (Settings files can be created using the Export "
1149
- "tool.)"
 
1150
  msgstr ""
1151
 
1152
- #: modules/settings/settings-data.php:90
1153
  msgid ""
1154
  "Are you sure you want to import this settings file? This will overwrite your "
1155
  "current settings and cannot be undone."
1156
  msgstr ""
1157
 
1158
- #: modules/settings/settings-data.php:105
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1159
  msgid "Import from Other Plugins"
1160
  msgstr ""
1161
 
1162
- #: modules/settings/settings-data.php:107
1163
  msgid ""
1164
  "You can import settings and data from these plugins. Clicking a plugin&#8217;"
1165
  "s name will take you to the importer page, where you can customize "
1166
  "parameters and start the import."
1167
  msgstr ""
1168
 
1169
- #: modules/settings/settings-data.php:127
 
 
 
 
1170
  msgid ""
1171
- "You can use the export tool to download an SEO Ultimate settings file to "
1172
  "your computer."
1173
  msgstr ""
1174
 
1175
- #: modules/settings/settings-data.php:129
1176
  msgid ""
1177
  "A settings file includes the data of every checkbox and textbox of every "
1178
  "installed module. It does NOT include site-specific data like logged 404s or "
@@ -1180,26 +1230,43 @@ msgid ""
1180
  "database backup, however)."
1181
  msgstr ""
1182
 
1183
- #: modules/settings/settings-data.php:132
1184
  msgid "Download Settings File"
1185
  msgstr ""
1186
 
1187
- #: modules/settings/settings-data.php:138
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1188
  msgid "All settings have been erased and defaults have been restored."
1189
  msgstr ""
1190
 
1191
- #: modules/settings/settings-data.php:140
1192
  msgid ""
1193
  "You can erase all your SEO Ultimate settings and restore them to &#8220;"
1194
  "factory defaults&#8221; by clicking the button below."
1195
  msgstr ""
1196
 
1197
- #: modules/settings/settings-data.php:143
1198
  msgid ""
1199
  "Are you sure you want to erase all module settings? This cannot be undone."
1200
  msgstr ""
1201
 
1202
- #: modules/settings/settings-data.php:144
1203
  msgid "Restore Default Settings"
1204
  msgstr ""
1205
 
@@ -1211,7 +1278,7 @@ msgstr ""
1211
  msgid "SEO Ultimate Plugin Settings"
1212
  msgstr ""
1213
 
1214
- #. #-#-#-#-# plugin.pot (SEO Ultimate 3.1) #-#-#-#-#
1215
  #. Plugin Name of the plugin/theme
1216
  #: modules/settings/settings.php:14 plugin/class.seo-ultimate.php:724
1217
  msgid "SEO Ultimate"
@@ -1600,6 +1667,14 @@ msgstr ""
1600
  msgid "Plugin upgraded successfully."
1601
  msgstr ""
1602
 
 
 
 
 
 
 
 
 
1603
  #. Plugin URI of the plugin/theme
1604
  msgid "http://www.seodesignsolutions.com/wordpress-seo/"
1605
  msgstr ""
1
+ # Translation of the WordPress plugin SEO Ultimate 3.2 by SEO Design Solutions.
2
  # Copyright (C) 2010 SEO Design Solutions
3
  # This file is distributed under the same license as the SEO Ultimate package.
4
  # FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
6
  #, fuzzy
7
  msgid ""
8
  msgstr ""
9
+ "Project-Id-Version: SEO Ultimate 3.2\n"
10
  "Report-Msgid-Bugs-To: http://wordpress.org/tag/seo-ultimate\n"
11
+ "POT-Creation-Date: 2010-06-23 15:10+0000\n"
12
  "PO-Revision-Date: 2010-MO-DA HO:MI+ZONE\n"
13
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14
  "Language-Team: LANGUAGE <LL@li.org>\n"
972
  msgid "SEO Design Solutions Whitepapers"
973
  msgstr ""
974
 
975
+ #. #-#-#-#-# plugin.pot (SEO Ultimate 3.2) #-#-#-#-#
976
  #. Author of the plugin/theme
977
  #: modules/sds-blog/sds-blog.php:49
978
  msgid "SEO Design Solutions"
1110
  msgid "Manage Settings Data"
1111
  msgstr ""
1112
 
1113
+ #: modules/settings/settings-data.php:21
1114
  msgid "Import"
1115
  msgstr ""
1116
 
1138
  "click the &#8220;Browse&#8221; button and select a file to import."
1139
  msgstr ""
1140
 
1141
+ #: modules/settings/settings-data.php:112
1142
+ msgid ""
1143
+ "The uploaded file is not in the proper format. Links could not be imported."
1144
+ msgstr ""
1145
+
1146
+ #: modules/settings/settings-data.php:151
1147
+ msgid "Links successfully imported."
1148
+ msgstr ""
1149
+
1150
+ #: modules/settings/settings-data.php:154
1151
+ msgid "The CSV file could not be uploaded successfully."
1152
+ msgstr ""
1153
+
1154
+ #: modules/settings/settings-data.php:157
1155
+ msgid ""
1156
+ "Links could not be imported because no CSV file was selected. Please click "
1157
+ "the &#8220;Browse&#8221; button and select a file to import."
1158
+ msgstr ""
1159
+
1160
+ #: modules/settings/settings-data.php:167
1161
  msgid "Import SEO Ultimate Settings File"
1162
  msgstr ""
1163
 
1164
+ #: modules/settings/settings-data.php:169
1165
  msgid ""
1166
  "You can use this form to upload and import an SEO Ultimate settings file "
1167
+ "stored on your computer. (These files can be created using the Export tool.) "
1168
+ "Note that importing a file will overwrite your existing settings with those "
1169
+ "in the file."
1170
  msgstr ""
1171
 
1172
+ #: modules/settings/settings-data.php:173
1173
  msgid ""
1174
  "Are you sure you want to import this settings file? This will overwrite your "
1175
  "current settings and cannot be undone."
1176
  msgstr ""
1177
 
1178
+ #: modules/settings/settings-data.php:174
1179
+ msgid "Import Settings File"
1180
+ msgstr ""
1181
+
1182
+ #: modules/settings/settings-data.php:180
1183
+ msgid "Import Deeplink Juggernaut CSV File"
1184
+ msgstr ""
1185
+
1186
+ #: modules/settings/settings-data.php:182
1187
+ msgid ""
1188
+ "You can use this form to upload and import a Deeplink Juggernaut CSV file "
1189
+ "stored on your computer. (These files can be created using the Export tool.) "
1190
+ "Note that importing a file will overwrite your existing links with those in "
1191
+ "the file."
1192
+ msgstr ""
1193
+
1194
+ #: modules/settings/settings-data.php:186
1195
+ msgid ""
1196
+ "Are you sure you want to import this CSV file? This will overwrite your "
1197
+ "current Deeplink Juggernaut links and cannot be undone."
1198
+ msgstr ""
1199
+
1200
+ #: modules/settings/settings-data.php:187
1201
+ msgid "Import CSV File"
1202
+ msgstr ""
1203
+
1204
+ #: modules/settings/settings-data.php:202
1205
  msgid "Import from Other Plugins"
1206
  msgstr ""
1207
 
1208
+ #: modules/settings/settings-data.php:204
1209
  msgid ""
1210
  "You can import settings and data from these plugins. Clicking a plugin&#8217;"
1211
  "s name will take you to the importer page, where you can customize "
1212
  "parameters and start the import."
1213
  msgstr ""
1214
 
1215
+ #: modules/settings/settings-data.php:224
1216
+ msgid "Export SEO Ultimate Settings File"
1217
+ msgstr ""
1218
+
1219
+ #: modules/settings/settings-data.php:226
1220
  msgid ""
1221
+ "You can use this export tool to download an SEO Ultimate settings file to "
1222
  "your computer."
1223
  msgstr ""
1224
 
1225
+ #: modules/settings/settings-data.php:228
1226
  msgid ""
1227
  "A settings file includes the data of every checkbox and textbox of every "
1228
  "installed module. It does NOT include site-specific data like logged 404s or "
1230
  "database backup, however)."
1231
  msgstr ""
1232
 
1233
+ #: modules/settings/settings-data.php:231
1234
  msgid "Download Settings File"
1235
  msgstr ""
1236
 
1237
+ #: modules/settings/settings-data.php:236
1238
+ msgid "Export Deeplink Juggernaut CSV File"
1239
+ msgstr ""
1240
+
1241
+ #: modules/settings/settings-data.php:238
1242
+ msgid ""
1243
+ "You can use this export tool to download a CSV file (comma-separated values "
1244
+ "file) that contains your Deeplink Juggernaut links. Once you download this "
1245
+ "file to your computer, you can edit it using your favorite spreadsheet "
1246
+ "program. When you&#8217;re done editing, you can re-upload the file using "
1247
+ "the Import tool."
1248
+ msgstr ""
1249
+
1250
+ #: modules/settings/settings-data.php:241
1251
+ msgid "Download CSV File"
1252
+ msgstr ""
1253
+
1254
+ #: modules/settings/settings-data.php:248
1255
  msgid "All settings have been erased and defaults have been restored."
1256
  msgstr ""
1257
 
1258
+ #: modules/settings/settings-data.php:250
1259
  msgid ""
1260
  "You can erase all your SEO Ultimate settings and restore them to &#8220;"
1261
  "factory defaults&#8221; by clicking the button below."
1262
  msgstr ""
1263
 
1264
+ #: modules/settings/settings-data.php:253
1265
  msgid ""
1266
  "Are you sure you want to erase all module settings? This cannot be undone."
1267
  msgstr ""
1268
 
1269
+ #: modules/settings/settings-data.php:254
1270
  msgid "Restore Default Settings"
1271
  msgstr ""
1272
 
1278
  msgid "SEO Ultimate Plugin Settings"
1279
  msgstr ""
1280
 
1281
+ #. #-#-#-#-# plugin.pot (SEO Ultimate 3.2) #-#-#-#-#
1282
  #. Plugin Name of the plugin/theme
1283
  #: modules/settings/settings.php:14 plugin/class.seo-ultimate.php:724
1284
  msgid "SEO Ultimate"
1667
  msgid "Plugin upgraded successfully."
1668
  msgstr ""
1669
 
1670
+ #: seo-ultimate.php:85
1671
+ #, php-format
1672
+ msgid ""
1673
+ "SEO Ultimate requires WordPress %s or above. Please upgrade to the latest "
1674
+ "version of WordPress to enable SEO Ultimate on your blog, or deactivate SEO "
1675
+ "Ultimate to remove this notice."
1676
+ msgstr ""
1677
+
1678
  #. Plugin URI of the plugin/theme
1679
  msgid "http://www.seodesignsolutions.com/wordpress-seo/"
1680
  msgstr ""