SEO Ultimate - Version 3.7

Version Description

Download this release

Release Info

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

Code changes from version 3.6 to 3.7

includes/jlfunctions/arr.php CHANGED
@@ -79,6 +79,20 @@ class suarr {
79
  return false;
80
  }
81
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
82
  function vklrsort(&$arr, $valuekey) {
83
  $valuekey = sustr::preg_filter('A-Za-z0-9', $valuekey);
84
  uksort($arr, create_function('$a,$b', 'return strlen($b["'.$valuekey.'"]) - strlen($a["'.$valuekey.'"]);'));
79
  return false;
80
  }
81
 
82
+ function recursive_get($array, $key) {
83
+ if (is_array($array)) {
84
+ if (isset($array[$key]))
85
+ return $array[$key];
86
+
87
+ foreach ($array as $subarray) {
88
+ if ($value = suarr::recursive_get($subarray, $key))
89
+ return $value;
90
+ }
91
+ }
92
+
93
+ return false;
94
+ }
95
+
96
  function vklrsort(&$arr, $valuekey) {
97
  $valuekey = sustr::preg_filter('A-Za-z0-9', $valuekey);
98
  uksort($arr, create_function('$a,$b', 'return strlen($b["'.$valuekey.'"]) - strlen($a["'.$valuekey.'"]);'));
includes/jlfunctions/html.php CHANGED
@@ -12,9 +12,14 @@ class suhtml {
12
  function option_tags($options, $current = true) {
13
  $html = '';
14
  foreach ($options as $value => $label) {
15
- $html .= "<option value='$value'";
16
- if ($value == $current) $html .= " selected='selected'";
17
- $html .= ">$label</option>";
 
 
 
 
 
18
  }
19
  return $html;
20
  }
12
  function option_tags($options, $current = true) {
13
  $html = '';
14
  foreach ($options as $value => $label) {
15
+ if (is_array($label)) {
16
+ $html .= "<optgroup label='$value'>\n".suhtml::option_tags($label, $current)."</optgroup>\n";
17
+ } else {
18
+ //if (is_numeric($value)) $value = '';
19
+ $html .= "\t<option value='$value'";
20
+ if ($value == $current) $html .= " selected='selected'";
21
+ $html .= ">$label</option>\n";
22
+ }
23
  }
24
  return $html;
25
  }
includes/jlfunctions/str.php CHANGED
@@ -179,6 +179,14 @@ class sustr {
179
 
180
  return preg_replace($search_regex, $replace, $subject, $limit, $count);
181
  }
 
 
 
 
 
 
 
 
182
  }
183
 
184
  ?>
179
 
180
  return preg_replace($search_regex, $replace, $subject, $limit, $count);
181
  }
182
+
183
+ function upto($str, $sub) {
184
+ $end = strpos($str, $sub);
185
+ if ($end === false)
186
+ return $str;
187
+ else
188
+ return substr($str, 0, $end);
189
+ }
190
  }
191
 
192
  ?>
includes/jlwp/functions.php CHANGED
@@ -27,14 +27,45 @@ class suwp {
27
  }
28
 
29
  function get_post_type_names() {
30
- if (function_exists('get_post_types')) {
31
- if ($types = get_post_types(array('public' => true), 'names'))
32
- return $types;
33
- else
34
- return array('post', 'page', 'attachment');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
35
  }
36
 
37
- return array();
38
  }
39
 
40
  function get_taxonomies() {
27
  }
28
 
29
  function get_post_type_names() {
30
+ //If WP 2.9+ && WP 3.0+...
31
+ if (function_exists('get_post_types') && $types = get_post_types(array('public' => true), 'names'))
32
+ return $types;
33
+
34
+ //WP 2.9 or less
35
+ return array('post', 'page', 'attachment');
36
+ }
37
+
38
+ function get_post_type_objects() {
39
+ $types = array();
40
+
41
+ //Custom post type support - requires WordPress 3.0 or above (won't work with 2.9 custom post types)
42
+ if (function_exists('get_post_types'))
43
+ $types = get_post_types(array('public' => true), 'objects');
44
+
45
+ /*
46
+ if (function_exists('get_post_types'))
47
+ $types = suarr::flatten_values(get_post_types(array('public' => true), 'objects'), array('labels', 'name'));
48
+ */
49
+
50
+ //Legacy support for WordPress 2.9 and below
51
+ if (!count($types)) {
52
+
53
+ $_types = array(
54
+ array('post', __('Posts'), __('Post'))
55
+ , array('page', __('Pages'), __('Page'))
56
+ , array('attachment', __('Attachments'), __('Attachment'))
57
+ );
58
+ $types = array();
59
+ foreach ($_types as $_type) {
60
+ $type = new stdClass();
61
+ $type->name = $_type[0];
62
+ $type->labels->name = $_type[1];
63
+ $type->labels->singular_name = $_type[2];
64
+ $types[] = $type;
65
+ }
66
  }
67
 
68
+ return $types;
69
  }
70
 
71
  function get_taxonomies() {
modules/class.su-module.php CHANGED
@@ -847,7 +847,7 @@ class SU_Module {
847
  * @param string $title The text to output.
848
  */
849
  function admin_form_subheader($title) {
850
- echo "<th><strong>$title</strong></th>\n";
851
  }
852
 
853
  /**
@@ -1017,34 +1017,7 @@ class SU_Module {
1017
  */
1018
  function get_postmeta_edit_tabs($fields) {
1019
 
1020
- $types = array();
1021
-
1022
- //Custom post type support - requires WordPress 3.0 or above (won't work with 2.9 custom post types)
1023
- if (function_exists('get_post_types'))
1024
- $types = get_post_types(array('public' => true), 'objects');
1025
-
1026
- /*
1027
- if (function_exists('get_post_types'))
1028
- $types = suarr::flatten_values(get_post_types(array('public' => true), 'objects'), array('labels', 'name'));
1029
- */
1030
-
1031
- //Legacy support for WordPress 2.9 and below
1032
- if (!count($types)) {
1033
-
1034
- $_types = array(
1035
- array('post', __('Posts'), __('Post'))
1036
- , array('page', __('Pages'), __('Page'))
1037
- , array('attachment', __('Attachments'), __('Attachment'))
1038
- );
1039
- $types = array();
1040
- foreach ($_types as $_type) {
1041
- $type = new stdClass();
1042
- $type->name = $_type[0];
1043
- $type->labels->name = $_type[1];
1044
- $type->labels->singular_name = $_type[2];
1045
- $types[] = $type;
1046
- }
1047
- }
1048
 
1049
  //Turn the types array into a tabs array
1050
  $tabs = array();
@@ -1236,6 +1209,7 @@ class SU_Module {
1236
  $field['type'] //Type
1237
  , $inputid
1238
  , $value
 
1239
  );
1240
  }
1241
 
@@ -1262,7 +1236,7 @@ class SU_Module {
1262
  * @param string $inputid The name/ID of the input element
1263
  * @param string $value The current value of the field
1264
  */
1265
- function get_input_element($type, $inputid, $value) {
1266
  //Get HTML element
1267
  switch ($type) {
1268
  case 'textbox':
@@ -1277,6 +1251,10 @@ class SU_Module {
1277
  $checked = $value ? " checked='checked'" : '';
1278
  return "<input name='$inputid' id='$inputid' type='checkbox' value='1'$checked />";
1279
  break;
 
 
 
 
1280
  }
1281
 
1282
  return '';
@@ -1707,6 +1685,46 @@ class SU_Module {
1707
  $this->radiobuttons($name, array($value => $label));
1708
  }
1709
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1710
  /**
1711
  * @since 3.0
1712
  */
@@ -2076,7 +2094,7 @@ class SU_Module {
2076
  register_setting('seo-ultimate', $id);
2077
  $value = su_esc_editable_html($this->get_postmeta($id));
2078
  $id = "_su_".su_esc_attr($id);
2079
- $title = str_replace(' ', '&nbsp;', $title);
2080
 
2081
  $html .= "<tr class='textbox' valign='middle'>\n<th scope='row'><label for='$id'>$title</label></th>\n"
2082
  ."<td><input name='$id' id='$id' type='text' value='$value' class='regular-text' tabindex='2' /></td>\n</tr>\n";
@@ -2167,7 +2185,7 @@ class SU_Module {
2167
  $name = "_su_".su_esc_attr($name);
2168
 
2169
  $html = "<tr class='dropdown' valign='middle'>\n<th scope='row'><label for='$name'>$grouptext</label></th>\n<td><fieldset><legend class='hidden'>$grouptext</legend>\n";
2170
- $html .= "<select name='$name' id='$name' onchange='javascript:su_toggle_select_children(this)'>";
2171
  $html .= suhtml::option_tags($options, $current);
2172
  $html .= "</select>\n";
2173
  $html .= "</fieldset></td>\n</tr>\n";
847
  * @param string $title The text to output.
848
  */
849
  function admin_form_subheader($title) {
850
+ echo "<tr><th colspan='2'><strong>$title</strong></th></tr>\n";
851
  }
852
 
853
  /**
1017
  */
1018
  function get_postmeta_edit_tabs($fields) {
1019
 
1020
+ $types = suwp::get_post_type_objects();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1021
 
1022
  //Turn the types array into a tabs array
1023
  $tabs = array();
1209
  $field['type'] //Type
1210
  , $inputid
1211
  , $value
1212
+ , isset($field['options']) ? $field['options'] : false
1213
  );
1214
  }
1215
 
1236
  * @param string $inputid The name/ID of the input element
1237
  * @param string $value The current value of the field
1238
  */
1239
+ function get_input_element($type, $inputid, $value, $options=false) {
1240
  //Get HTML element
1241
  switch ($type) {
1242
  case 'textbox':
1251
  $checked = $value ? " checked='checked'" : '';
1252
  return "<input name='$inputid' id='$inputid' type='checkbox' value='1'$checked />";
1253
  break;
1254
+ case 'dropdown':
1255
+ if (is_array($options))
1256
+ return "<select name='$inputid' id='$inputid'>".suhtml::option_tags($options, $value)."</select>";
1257
+ break;
1258
  }
1259
 
1260
  return '';
1685
  $this->radiobuttons($name, array($value => $label));
1686
  }
1687
 
1688
+ /**
1689
+ * Outputs a dropdown into an admin form and saves the set's value into the database after form submission.
1690
+ *
1691
+ * @since 3.7
1692
+ * @uses is_action()
1693
+ * @uses update_setting()
1694
+ * @uses admin_form_group_start()
1695
+ * @uses admin_form_group_end()
1696
+ * @uses su_esc_attr()
1697
+ * @uses get_setting()
1698
+ *
1699
+ * @param string $name The name of the set of radio buttons.
1700
+ * @param array $values The keys of this array are the radio button values, and the array values are the label strings.
1701
+ * @param string|false $grouptext The text to display in a table cell to the left of the one containing the radio buttons. Optional.
1702
+ */
1703
+ function dropdown($name, $values, $grouptext=false) {
1704
+
1705
+ //Save dropdown setting after form submission
1706
+ if ($this->is_action('update'))
1707
+ $this->update_setting($name, $_POST[$name]);
1708
+
1709
+ if ($grouptext)
1710
+ $this->admin_form_group_start($grouptext, false);
1711
+ else
1712
+ echo "<tr valign='top' class='su-admin-form-dropdown'>\n<td colspan='2'>\n";
1713
+
1714
+ if (is_array($values)) {
1715
+
1716
+ register_setting($this->get_module_key(), $name);
1717
+
1718
+ $name = su_esc_attr($name);
1719
+ echo "<select name='$name' id='$name'>\n";
1720
+ echo suhtml::option_tags($values, $this->get_setting($name));
1721
+ echo "</select>";
1722
+ }
1723
+
1724
+ if ($grouptext) echo "</fieldset>";
1725
+ echo "</td>\n</tr>\n";
1726
+ }
1727
+
1728
  /**
1729
  * @since 3.0
1730
  */
2094
  register_setting('seo-ultimate', $id);
2095
  $value = su_esc_editable_html($this->get_postmeta($id));
2096
  $id = "_su_".su_esc_attr($id);
2097
+ //$title = str_replace(' ', '&nbsp;', $title);
2098
 
2099
  $html .= "<tr class='textbox' valign='middle'>\n<th scope='row'><label for='$id'>$title</label></th>\n"
2100
  ."<td><input name='$id' id='$id' type='text' value='$value' class='regular-text' tabindex='2' /></td>\n</tr>\n";
2185
  $name = "_su_".su_esc_attr($name);
2186
 
2187
  $html = "<tr class='dropdown' valign='middle'>\n<th scope='row'><label for='$name'>$grouptext</label></th>\n<td><fieldset><legend class='hidden'>$grouptext</legend>\n";
2188
+ $html .= "<select name='$name' id='$name' onchange='javascript:su_toggle_select_children(this)'>\n";
2189
  $html .= suhtml::option_tags($options, $current);
2190
  $html .= "</select>\n";
2191
  $html .= "</fieldset></td>\n</tr>\n";
modules/modules.css CHANGED
@@ -10,7 +10,7 @@ div.su-module h2 {
10
 
11
  div.su-module h4.su-subheader {
12
  font-size: 1.17em;
13
- margin: 3em 0 2em;
14
  padding-top: 1em;
15
  border-top: 3px solid #ccc;
16
  }
10
 
11
  div.su-module h4.su-subheader {
12
  font-size: 1.17em;
13
+ margin: 3em 0 1em;
14
  padding-top: 1em;
15
  border-top: 3px solid #ccc;
16
  }
plugin/class.seo-ultimate.php CHANGED
@@ -987,7 +987,7 @@ class SEO_Ultimate {
987
 
988
  //If we're on the post or page editor...
989
  if (strcmp($screen, 'post') == 0 || strcmp($screen, 'page') == 0) {
990
-
991
  //Gather post meta help content
992
  $helparray = apply_filters('su_postmeta_help', array());
993
 
@@ -1392,8 +1392,9 @@ class SEO_Ultimate {
1392
  function add_postmeta_box() {
1393
 
1394
  //Add the metabox to posts and pages.
1395
- foreach (array('post', 'page') as $screen) {
1396
-
 
1397
  //Only show the meta box if there are fields to show.
1398
  if ($this->get_postmeta_fields($screen))
1399
  add_meta_box('su_postmeta', __('SEO Settings', 'seo-ultimate'), array(&$this, "show_{$screen}_postmeta_box"), $screen, 'normal', 'high');
@@ -1457,14 +1458,20 @@ class SEO_Ultimate {
1457
 
1458
  //Run preliminary permissions checks
1459
  if ( !wp_verify_nonce($_REQUEST['_su_wpnonce'], 'su-update-postmeta') ) return;
1460
- if ( 'page' == $_POST['post_type'] ) {
1461
- if ( !current_user_can( 'edit_page', $post_id )) return;
1462
- } elseif ( 'post' == $_POST['post_type'] ) {
1463
- if ( !current_user_can( 'edit_post', $post_id )) return;
1464
- } else return;
 
 
 
 
 
 
1465
 
1466
  //Get an array of the postmeta fields
1467
- $keys = array_keys($this->get_postmeta_array($_POST['post_type']));
1468
  $fields = array();
1469
 
1470
  foreach ($keys as $key) {
987
 
988
  //If we're on the post or page editor...
989
  if (strcmp($screen, 'post') == 0 || strcmp($screen, 'page') == 0) {
990
+
991
  //Gather post meta help content
992
  $helparray = apply_filters('su_postmeta_help', array());
993
 
1392
  function add_postmeta_box() {
1393
 
1394
  //Add the metabox to posts and pages.
1395
+ $posttypes = suwp::get_post_type_names();
1396
+ foreach ($posttypes as $screen) {
1397
+
1398
  //Only show the meta box if there are fields to show.
1399
  if ($this->get_postmeta_fields($screen))
1400
  add_meta_box('su_postmeta', __('SEO Settings', 'seo-ultimate'), array(&$this, "show_{$screen}_postmeta_box"), $screen, 'normal', 'high');
1458
 
1459
  //Run preliminary permissions checks
1460
  if ( !wp_verify_nonce($_REQUEST['_su_wpnonce'], 'su-update-postmeta') ) return;
1461
+ $post_type = isset($_POST['post_type']) ? $_POST['post_type'] : 'post';
1462
+ if (function_exists('get_post_type_object')) { //If WP3.0+...
1463
+ $post_type_object = get_post_type_object($post_type);
1464
+ if (!current_user_can($post_type_object->cap->edit_posts)) return;
1465
+ } else { //WP2.9 or below
1466
+ if ( 'page' == $_POST['post_type'] ) {
1467
+ if ( !current_user_can( 'edit_page', $post_id )) return;
1468
+ } elseif ( 'post' == $_POST['post_type'] ) {
1469
+ if ( !current_user_can( 'edit_post', $post_id )) return;
1470
+ } else return;
1471
+ }
1472
 
1473
  //Get an array of the postmeta fields
1474
+ $keys = array_keys($this->get_postmeta_array($post_type));
1475
  $fields = array();
1476
 
1477
  foreach ($keys as $key) {
plugin/global.css CHANGED
@@ -135,6 +135,16 @@ div.su-help h6 {
135
  width: 12em;
136
  }
137
 
 
 
 
 
 
 
 
 
 
 
138
  /* PLUGIN NOTICES */
139
 
140
  #wpwrap .su-plugin-notice .update-message, #wpwrap .su-plugin-update-info {
135
  width: 12em;
136
  }
137
 
138
+ #su-postmeta-box select optgroup,
139
+ div.su-module select optgroup {
140
+ margin-top: 1em;
141
+ }
142
+
143
+ #su-postmeta-box select optgroup option,
144
+ div.su-module select optgroup option {
145
+ margin-left: 1em;
146
+ }
147
+
148
  /* PLUGIN NOTICES */
149
 
150
  #wpwrap .su-plugin-notice .update-message, #wpwrap .su-plugin-update-info {
readme.txt CHANGED
@@ -3,7 +3,7 @@ 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.6
7
 
8
  This all-in-one SEO plugin gives you control over titles, noindex/nofollow, meta tags, slugs, canonical tags, "more" links, 404 errors, rich snippets, 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.6 adds a maximum log size option to 404 Monitor
15
  * Version 3.5 adds the Sharing Facilitator module
16
  * Version 3.4 adds the option to ignore 404s from specific URLs or wildcard URL patterns
17
  * Version 3.3 adds the option to only log 404s from search engines and/or referrers
18
- * Version 3.2 adds CSV import/export for Deeplink Juggernaut
19
 
20
  = Features =
21
 
@@ -204,11 +204,15 @@ Frequently asked questions, settings help, and troubleshooting tips for SEO Ulti
204
 
205
  == Changelog ==
206
 
 
 
 
 
207
  = Version 3.6 (June 28, 2010) =
208
  * Feature: Users can now set the maximum number of log entries that 404 Monitor will keep at a time
209
  * Improvement: Fixed aesthetic issue that appeared in SEO Settings box under certain configurations
210
  * Bugfix: Browsers will no longer jump to the top of the screen when expanding/collapsing the Referer/User Agent lists in 404 Monitor
211
- * Bugfix: Fixed invalid HTML in 404 Monitor
212
  * Bugfix: Fixed PHP4 error by removing usage of PHP5-only str_split function
213
 
214
  = Version 3.5 (June 26, 2010) =
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.7
7
 
8
  This all-in-one SEO plugin gives you control over titles, noindex/nofollow, meta tags, slugs, canonical tags, "more" links, 404 errors, rich snippets, and more.
9
 
11
 
12
  = Recent Releases =
13
 
14
+ * Version 3.7 adds the "SEO Settings" box to custom post type editors
15
  * Version 3.6 adds a maximum log size option to 404 Monitor
16
  * Version 3.5 adds the Sharing Facilitator module
17
  * Version 3.4 adds the option to ignore 404s from specific URLs or wildcard URL patterns
18
  * Version 3.3 adds the option to only log 404s from search engines and/or referrers
 
19
 
20
  = Features =
21
 
204
 
205
  == Changelog ==
206
 
207
+ = Version 3.7 (June 30, 2010) =
208
+ * Feature: "SEO Settings" box now added to editing screens for custom post types
209
+ * Bugfix: Fixed invalid HTML in the admin interfaces of Noindex Manager and Sharing Facilitator
210
+
211
  = Version 3.6 (June 28, 2010) =
212
  * Feature: Users can now set the maximum number of log entries that 404 Monitor will keep at a time
213
  * Improvement: Fixed aesthetic issue that appeared in SEO Settings box under certain configurations
214
  * Bugfix: Browsers will no longer jump to the top of the screen when expanding/collapsing the Referer/User Agent lists in 404 Monitor
215
+ * Bugfix: Fixed invalid HTML in the admin interface of 404 Monitor
216
  * Bugfix: Fixed PHP4 error by removing usage of PHP5-only str_split function
217
 
218
  = Version 3.5 (June 26, 2010) =
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, rich snippets, and more.
6
- Version: 3.6
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.6
16
  * @link http://www.seodesignsolutions.com/wordpress-seo/ SEO Ultimate Homepage
17
  */
18
 
@@ -45,12 +45,12 @@ if (!defined('ABSPATH')) {
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.6");
51
- define("SU_AUTHOR", "SEO Design Solutions");
52
- define("SU_AUTHOR_URI", "http://www.seodesignsolutions.com/");
53
- define("SU_USER_AGENT", "SeoUltimate/3.6");
54
 
55
  /********** INCLUDES **********/
56
 
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, rich snippets, and more.
6
+ Version: 3.7
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.7
16
  * @link http://www.seodesignsolutions.com/wordpress-seo/ SEO Ultimate Homepage
17
  */
18
 
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.7');
51
+ define('SU_AUTHOR', 'SEO Design Solutions');
52
+ define('SU_AUTHOR_URI', 'http://www.seodesignsolutions.com/');
53
+ define('SU_USER_AGENT', 'SeoUltimate/3.7');
54
 
55
  /********** INCLUDES **********/
56