SEO Ultimate - Version 3.8

Version Description

Download this release

Release Info

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

Code changes from version 3.7.1 to 3.8

includes/jlfunctions/arr.php CHANGED
@@ -156,6 +156,12 @@ class suarr {
156
  }
157
  return $newarray;
158
  }
 
 
 
 
 
 
159
  }
160
 
161
  ?>
156
  }
157
  return $newarray;
158
  }
159
+
160
+ function simplify($arr, $keyloc, $valloc) {
161
+ $keys = suarr::flatten_values($arr, $keyloc);
162
+ $values = suarr::flatten_values($arr, $valloc);
163
+ return array_combine($keys, $values);
164
+ }
165
  }
166
 
167
  ?>
includes/jlfunctions/str.php CHANGED
@@ -129,6 +129,13 @@ class sustr {
129
  return $str;
130
  }
131
 
 
 
 
 
 
 
 
132
  function batch_replace($search, $replace, $subjects) {
133
  $subjects = array_unique((array)$subjects);
134
  $results = array();
129
  return $str;
130
  }
131
 
132
+ function ltrim_str($str, $totrim) {
133
+ if (strlen($str) > strlen($totrim) && sustr::startswith($str, $totrim))
134
+ return substr($str, strlen($totrim));
135
+
136
+ return $str;
137
+ }
138
+
139
  function batch_replace($search, $replace, $subjects) {
140
  $subjects = array_unique((array)$subjects);
141
  $results = array();
includes/jlwp/functions.php CHANGED
@@ -23,6 +23,7 @@ class suwp {
23
 
24
  function get_any_posts($args = null) {
25
  $args['post_type'] = implode(',', suwp::get_post_type_names());
 
26
  return get_posts($args);
27
  }
28
 
23
 
24
  function get_any_posts($args = null) {
25
  $args['post_type'] = implode(',', suwp::get_post_type_names());
26
+ $args['numberposts'] = -1;
27
  return get_posts($args);
28
  }
29
 
modules/autolinks/autolinks.css CHANGED
@@ -1,12 +1,21 @@
1
  #su-autolinks table.widefat,
2
- #su-autolinks table.widefat td.text input {
 
3
  width: 100%;
4
  }
5
 
6
- #su-autolinks table.widefat td.checkbox label {
7
  margin-right: 1em;
8
  }
9
 
 
 
 
 
 
 
 
 
10
  #su-autolinks table.widefat td.su-link-options {
11
  width: 17em;
12
  }
1
  #su-autolinks table.widefat,
2
+ #su-autolinks table.widefat input.textbox,
3
+ #su-autolinks table.widefat td.su-link-to_id select {
4
  width: 100%;
5
  }
6
 
7
+ #su-autolinks table.widefat td.su-link-options label {
8
  margin-right: 1em;
9
  }
10
 
11
+ #su-autolinks table.widefat td.su-link-to_type {
12
+ width: 10em;
13
+ }
14
+
15
+ #su-autolinks table.widefat td.su-link-to_id {
16
+ width: 15em;
17
+ }
18
+
19
  #su-autolinks table.widefat td.su-link-options {
20
  width: 17em;
21
  }
modules/autolinks/content-autolinks.php CHANGED
@@ -45,10 +45,18 @@ class SU_ContentAutolinks extends SU_Module {
45
 
46
  foreach ($links as $data) {
47
  $anchor = $data['anchor'];
48
- $url = su_esc_attr($data['to_id']);
49
- $type = $data['to_type'];
50
 
51
- if ($type == 'url' && strlen(trim($anchor)) && strlen(trim($url))) {
 
 
 
 
 
 
 
 
 
52
 
53
  $rel = $data['nofollow'] ? ' rel="nofollow"' : '';
54
  $target = ($data['target'] == 'blank') ? ' target="_blank"' : '';
@@ -87,7 +95,8 @@ class SU_ContentAutolinks extends SU_Module {
87
  for ($i=0; $i <= $num_links; $i++) {
88
 
89
  $anchor = stripslashes($_POST["link_{$i}_anchor"]);
90
- $url = stripslashes($_POST["link_{$i}_url"]);
 
91
  $title = stripslashes($_POST["link_{$i}_title"]);
92
 
93
  $target = stripslashes($_POST["link_{$i}_target"]);
@@ -96,16 +105,8 @@ class SU_ContentAutolinks extends SU_Module {
96
  $nofollow = intval($_POST["link_{$i}_nofollow"]) == 1;
97
  $delete = intval($_POST["link_{$i}_delete"]) == 1;
98
 
99
- if (!$delete && (strlen($anchor) || strlen($url))) {
100
- $links[] = array(
101
- 'anchor' => $anchor
102
- , 'to_type' => 'url'
103
- , 'to_id' => $url
104
- , 'title' => $title
105
- , 'nofollow' => $nofollow
106
- , 'target' => $target
107
- );
108
- }
109
  }
110
  $this->update_setting('links', $links);
111
 
@@ -123,45 +124,60 @@ class SU_ContentAutolinks extends SU_Module {
123
 
124
  function content_links_form($start_id = 0, $links, $delete_option = true) {
125
 
 
126
  $headers = array(
127
  'link-anchor' => __('Anchor Text', 'seo-ultimate')
128
- , 'link-to_id' => __('URL', 'seo-ultimate')
 
129
  , 'link-title' => __('Title Attribute', 'seo-ultimate')
130
  , 'link-options' => __('Options', 'seo-ultimate')
131
  );
132
-
133
  if ($delete_option) $headers['link-delete'] = __('Delete', 'seo-ultimate');
134
 
 
135
  $this->admin_wftable_start($headers);
136
 
 
 
 
 
 
 
 
 
 
 
 
 
 
137
  $i = $start_id;
138
  foreach ($links as $link) {
139
- $anchor = su_esc_attr($link['anchor']);
140
- $url = su_esc_attr($link['to_id']);
141
- $title = su_esc_attr($link['title']);
142
- echo "\t\t<tr>\n";
143
 
144
- $fields = array('anchor', 'to_id' => 'url', 'title');
145
- foreach ($fields as $class => $field) {
146
- if (is_numeric($class)) $class = $field;
147
- echo "\t\t\t<td class='text su-link-$class'><input type='text' id='link_{$i}_$field' name='link_{$i}_$field' value='{$$field}' autocomplete='off' /></td>\n";
148
  }
149
 
150
- echo "\t\t\t<td class='checkbox su-link-options'>";
151
- echo "<label for='link_{$i}_nofollow'><input type='checkbox' id='link_{$i}_nofollow' name='link_{$i}_nofollow' value='1'"; checked($link['nofollow']); echo " /> Nofollow</label>";
152
- echo "<label for='link_{$i}_target'><input type='checkbox' id='link_{$i}_target' name='link_{$i}_target' value='blank'"; checked($link['target'] == 'blank'); echo " /> New window</label>";
153
- echo "</td>\n";
 
 
 
 
 
 
 
 
 
 
 
 
 
 
154
 
155
- if ($delete_option) echo "\t\t\t<td class='checkbox su-link-delete'><input type='checkbox' id='link_{$i}_delete' name='link_{$i}_delete' value='1' /></td>\n";
156
- /*echo "\t\t\t<td class='dropdown'><select id='link_{$i}_target' name='link_{$i}_target'>";
157
- echo suhtml::option_tags(array(
158
- 'self' => __('Default', 'seo-ultimate')
159
- , 'blank' => __('_blank (New window)', 'seo-ultimate')
160
- , 'top' => __('_top (Same window, no frames)', 'seo-ultimate')
161
- , 'parent' => __('_parent (Same window, parent frameset)', 'seo-ultimate')
162
- ));
163
- echo "</select></td>\n";*/
164
- echo "\t\t</tr>\n";
165
  $i++;
166
  }
167
 
45
 
46
  foreach ($links as $data) {
47
  $anchor = $data['anchor'];
48
+ $to_id = su_esc_attr($data['to_id']);
 
49
 
50
+ if (strlen(trim($anchor)) && strlen(trim((string)$to_id)) && $to_id !== 0 && $to_id != 'http://') {
51
+
52
+ $type = $data['to_type'];
53
+
54
+ if ($type == 'url')
55
+ $url = $to_id;
56
+ elseif (($posttype = sustr::ltrim_str($type, 'posttype_')) != $type)
57
+ $url = get_permalink((int)$to_id);
58
+ else
59
+ continue;
60
 
61
  $rel = $data['nofollow'] ? ' rel="nofollow"' : '';
62
  $target = ($data['target'] == 'blank') ? ' target="_blank"' : '';
95
  for ($i=0; $i <= $num_links; $i++) {
96
 
97
  $anchor = stripslashes($_POST["link_{$i}_anchor"]);
98
+ $to_type= stripslashes($_POST["link_{$i}_to_type"]);
99
+ $to_id = stripslashes($_POST["link_{$i}_to_id_{$to_type}"]);
100
  $title = stripslashes($_POST["link_{$i}_title"]);
101
 
102
  $target = stripslashes($_POST["link_{$i}_target"]);
105
  $nofollow = intval($_POST["link_{$i}_nofollow"]) == 1;
106
  $delete = intval($_POST["link_{$i}_delete"]) == 1;
107
 
108
+ if (!$delete && (strlen($anchor) || $to_id))
109
+ $links[] = compact('anchor', 'to_type', 'to_id', 'title', 'nofollow', 'target');
 
 
 
 
 
 
 
 
110
  }
111
  $this->update_setting('links', $links);
112
 
124
 
125
  function content_links_form($start_id = 0, $links, $delete_option = true) {
126
 
127
+ //Set headers
128
  $headers = array(
129
  'link-anchor' => __('Anchor Text', 'seo-ultimate')
130
+ , 'link-to_type' => __('Destination Type', 'seo-ultimate')
131
+ , 'link-to_id' => __('Destination', 'seo-ultimate')
132
  , 'link-title' => __('Title Attribute', 'seo-ultimate')
133
  , 'link-options' => __('Options', 'seo-ultimate')
134
  );
 
135
  if ($delete_option) $headers['link-delete'] = __('Delete', 'seo-ultimate');
136
 
137
+ //Begin table; output headers
138
  $this->admin_wftable_start($headers);
139
 
140
+ //Get post options
141
+ $posttypeobjs = suwp::get_post_type_objects();
142
+ $posttypes = array();
143
+ $posts = array();
144
+ foreach ($posttypeobjs as $posttypeobj) {
145
+ $typeposts = get_posts('numberposts=-1&post_type='.$posttypeobj->name);
146
+ if (count($typeposts)) {
147
+ $posttypes['posttype_'.$posttypeobj->name] = $posttypeobj->labels->singular_name;
148
+ $posts['posttype_'.$posttypeobj->name] = suarr::simplify($typeposts, 'ID', 'post_title');
149
+ }
150
+ }
151
+
152
+ //Cycle through links
153
  $i = $start_id;
154
  foreach ($links as $link) {
 
 
 
 
155
 
156
+ $postdropdowns = array();
157
+ foreach ($posts as $posttype => $typeposts) {
158
+ $typeposts = array(0 => '') + $typeposts; //Maintains numeric array keys, unlike array_unshift or array_merge
159
+ $postdropdowns[$posttype] = $this->get_input_element('dropdown', "link_{$i}_to_id_$posttype", $link['to_id'], $typeposts);
160
  }
161
 
162
+ $cells = array(
163
+ 'link-anchor' => $this->get_input_element('textbox', "link_{$i}_anchor", $link['anchor'])
164
+ , 'link-to_type' => $this->get_input_element('dropdown', "link_{$i}_to_type", $link['to_type'], array(
165
+ __('Custom', 'seo-ultimate') => array('url' => __('URL', 'seo-ultimate'))
166
+ , __('Content Items', 'seo-ultimate') => $posttypes
167
+ ))
168
+ , 'link-to_id' => $this->get_admin_form_subsections("link_{$i}_to_type", $link['to_type'] ? $link['to_type'] : 'url', array_merge(array(
169
+ 'url' => $this->get_input_element('textbox', "link_{$i}_to_id_url", ($link['to_type'] == 'url') ? $link['to_id'] : '')
170
+ ), $postdropdowns))
171
+ , 'link-title' => $this->get_input_element('textbox', "link_{$i}_title", $link['title'])
172
+ , 'link-options' =>
173
+ $this->get_input_element('checkbox', "link_{$i}_nofollow", $link['nofollow'], __('Nofollow', 'seo-ultimate'))
174
+ .$this->get_input_element('checkbox', "link_{$i}_target", $link['target'], __('New window', 'seo-ultimate'))
175
+ );
176
+ if ($delete_option)
177
+ $cells['link-delete'] = $this->get_input_element('checkbox', "link_{$i}_delete");
178
+
179
+ $this->table_row($cells, $i, 'link');
180
 
 
 
 
 
 
 
 
 
 
 
181
  $i++;
182
  }
183
 
modules/class.su-module.php CHANGED
@@ -1235,31 +1235,84 @@ class SU_Module {
1235
  * @param string $type The type of input element (can be textbox, textarea, or checkbox)
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':
1243
  $value = su_esc_editable_html($value);
1244
- return "<input name='$inputid' id='$inputid' type='text' value='$value' class='regular-text' />";
1245
  break;
1246
  case 'textarea':
1247
  $value = su_esc_editable_html($value);
1248
- return "<textarea name='$inputid' id='$inputid' type='text' rows='3' cols='50' class='regular-text'>$value</textarea>";
1249
  break;
1250
  case 'checkbox':
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 '';
1261
  }
1262
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1263
 
1264
  /********** ADMIN FORM FUNCTIONS **********/
1265
 
1235
  * @param string $type The type of input element (can be textbox, textarea, or checkbox)
1236
  * @param string $inputid The name/ID of the input element
1237
  * @param string $value The current value of the field
1238
+ * @return string
1239
  */
1240
+ function get_input_element($type, $name, $value=null, $extra=false, $inputid=true) {
1241
+ if ($value === null) $value = $this->get_setting($name);
1242
+
1243
+ if ($inputid === true) $inputid = $name;
1244
+ if (strlen($inputid)) $inputid = " id='".su_esc_attr($inputid)."'";
1245
+
1246
  //Get HTML element
1247
  switch ($type) {
1248
  case 'textbox':
1249
  $value = su_esc_editable_html($value);
1250
+ return "<input name='$name'$inputid value='$value' type='text' class='textbox regular-text' />";
1251
  break;
1252
  case 'textarea':
1253
  $value = su_esc_editable_html($value);
1254
+ return "<textarea name='$name'$inputid type='text' rows='3' cols='50' class='textarea regular-text'>$value</textarea>";
1255
  break;
1256
  case 'checkbox':
1257
  $checked = $value ? " checked='checked'" : '';
1258
+ $html = "<input name='$name'$inputid value='1' type='checkbox' class='checkbox'$checked />";
1259
+ if (is_string($extra)) {
1260
+ $extra = su_esc_html($extra);
1261
+ $html = "<label>$html&nbsp;$extra</label>";
1262
+ }
1263
+ return $html;
1264
  break;
1265
  case 'dropdown':
1266
+ if (is_array($extra))
1267
+ return "<select name='$name'$inputid onchange='javascript:su_toggle_select_children(this)' class='dropdown'>".suhtml::option_tags($extra, $value)."</select>";
1268
  break;
1269
  }
1270
 
1271
  return '';
1272
  }
1273
 
1274
+ /**
1275
+ * Creates an admin form subsection.
1276
+ *
1277
+ * @since 3.8
1278
+ * @uses get_setting()
1279
+ * @see get_input_element()
1280
+ *
1281
+ * @param string $field
1282
+ * @param string|null $current_value
1283
+ * @param string $trigger_value
1284
+ * @param string $html
1285
+ * @return string
1286
+ */
1287
+ function get_admin_form_subsection($field, $current_value, $trigger_value, $html) {
1288
+ if ($current_value === null) $current_value = $this->get_setting($field);
1289
+ $hidden = ($current_value == $trigger_value) ? '' : ' hidden';
1290
+
1291
+ $field = su_esc_attr($field);
1292
+ $trigger_value = su_esc_attr($trigger_value);
1293
+ $html = "<div class='su_{$field}_{$trigger_value}_subsection$hidden'>$html</div>";
1294
+ return $html;
1295
+ }
1296
+
1297
+ /**
1298
+ * Creates multiple admin form subsections.
1299
+ *
1300
+ * @since 3.8
1301
+ * @uses get_admin_form_subsection()
1302
+ * @see get_input_element()
1303
+ *
1304
+ * @param string $field
1305
+ * @param array $subsections Array of ($field => $trigger_value)
1306
+ * @return string
1307
+ */
1308
+ function get_admin_form_subsections($field, $current_value, $subsections) {
1309
+ $allhtml = '';
1310
+ if (!in_array($current_value, $subsection_keys = array_keys($subsections))) $current_value = $subsection_keys[0];
1311
+ foreach ($subsections as $trigger_value => $html)
1312
+ $allhtml .= $this->get_admin_form_subsection($field, $current_value, $trigger_value, $html);
1313
+ return $allhtml;
1314
+ }
1315
+
1316
 
1317
  /********** ADMIN FORM FUNCTIONS **********/
1318
 
modules/settings/global-settings.php CHANGED
@@ -57,7 +57,7 @@ class SU_GlobalSettings extends SU_Module {
57
  $astyle = " style='color: inherit;'";
58
  } else $pstyle = $astyle = '';
59
 
60
- echo "\n<p id='suattr'$pstyle><a href='http://www.seodesignsolutions.com/' rel='nofollow'$astyle>Optimized by SEO Ultimate</a></p>\n";
61
  }
62
  }
63
  }
57
  $astyle = " style='color: inherit;'";
58
  } else $pstyle = $astyle = '';
59
 
60
+ echo "\n<p id='suattr'$pstyle>Optimized by <a href='http://www.seodesignsolutions.com/' rel='nofollow'$astyle>SEO</a> Ultimate</p>\n";
61
  }
62
  }
63
  }
modules/settings/settings-data.php CHANGED
@@ -49,7 +49,7 @@ class SU_SettingsData extends SU_Module {
49
  } elseif ($this->is_action('su-import')) {
50
 
51
  if (strlen($_FILES['settingsfile']['name'])) {
52
-
53
  $file = $_FILES['settingsfile']['tmp_name'];
54
  if (is_uploaded_file($file)) {
55
  $import = base64_decode(file_get_contents($file));
49
  } elseif ($this->is_action('su-import')) {
50
 
51
  if (strlen($_FILES['settingsfile']['name'])) {
52
+
53
  $file = $_FILES['settingsfile']['tmp_name'];
54
  if (is_uploaded_file($file)) {
55
  $import = base64_decode(file_get_contents($file));
plugin/class.seo-ultimate.php CHANGED
@@ -161,7 +161,7 @@ class SEO_Ultimate {
161
  $oldversion = $this->dbdata['version'];
162
  else
163
  $oldversion = get_option('su_version', false);
164
-
165
  //Or, if this is the first time the plugin is running, then install()
166
  if ($oldversion) {
167
 
@@ -1187,10 +1187,12 @@ class SEO_Ultimate {
1187
  * @since 2.1
1188
  */
1189
  function add_plugin_upgrade_notice($current) {
 
1190
  if (isset($current->response[$this->plugin_basename])) {
1191
  if (!strlen($current->response[$this->plugin_basename]->upgrade_notice)) {
1192
- $current->response[$this->plugin_basename]->upgrade_notice = $this->get_plugin_update_info($current->response[$this->plugin_basename]->new_version);
1193
- remove_filter('transient_update_plugins', array(&$this, 'add_plugin_upgrade_notice'));
 
1194
  }
1195
  }
1196
  return $current;
161
  $oldversion = $this->dbdata['version'];
162
  else
163
  $oldversion = get_option('su_version', false);
164
+
165
  //Or, if this is the first time the plugin is running, then install()
166
  if ($oldversion) {
167
 
1187
  * @since 2.1
1188
  */
1189
  function add_plugin_upgrade_notice($current) {
1190
+ static $info;
1191
  if (isset($current->response[$this->plugin_basename])) {
1192
  if (!strlen($current->response[$this->plugin_basename]->upgrade_notice)) {
1193
+ if (!$info)
1194
+ $info = $this->get_plugin_update_info($current->response[$this->plugin_basename]->new_version);
1195
+ $current->response[$this->plugin_basename]->upgrade_notice = $info;
1196
  }
1197
  }
1198
  return $current;
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.7.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, 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.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
 
@@ -76,8 +76,8 @@ SEO Ultimate is an all-in-one [SEO](http://www.seodesignsolutions.com/) plugin w
76
  * Determine which of your webpages Google most strongly associates with the keywords you specify.
77
  * Use the information to determine ideal targets for incoming links or ideal sources of outgoing links.
78
 
79
- * **Deeplink Juggernaut** -- UPDATED in Version 3.2
80
- * Automatically link phrases in your posts/pages to given URLs.
81
  * Use the power of anchor text to boost your internal ranking SEO paradigm.
82
  * Control the maximum number of autolinks added to each post/page.
83
  * Apply the nofollow attribute on a per-link basis. (Perfect for automatic affiliate links.)
@@ -204,6 +204,10 @@ Frequently asked questions, settings help, and troubleshooting tips for SEO Ulti
204
 
205
  == Changelog ==
206
 
 
 
 
 
207
  = Version 3.7.1 (July 1, 2010) =
208
  * Bugfix: Fixed fatal error on editor screens for custom post types
209
 
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.8
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.8 adds direct post/page link support to Deeplink Juggernaut
15
  * Version 3.7 adds the "SEO Settings" box to custom post type editors
16
  * Version 3.6 adds a maximum log size option to 404 Monitor
17
  * Version 3.5 adds the Sharing Facilitator module
18
  * Version 3.4 adds the option to ignore 404s from specific URLs or wildcard URL patterns
 
19
 
20
  = Features =
21
 
76
  * Determine which of your webpages Google most strongly associates with the keywords you specify.
77
  * Use the information to determine ideal targets for incoming links or ideal sources of outgoing links.
78
 
79
+ * **Deeplink Juggernaut** -- UPDATED in Version 3.8
80
+ * Automatically link phrases in your posts/pages to other posts/pages or to custom URLs.
81
  * Use the power of anchor text to boost your internal ranking SEO paradigm.
82
  * Control the maximum number of autolinks added to each post/page.
83
  * Apply the nofollow attribute on a per-link basis. (Perfect for automatic affiliate links.)
204
 
205
  == Changelog ==
206
 
207
+ = Version 3.8 (July 30, 2010) =
208
+ * Feature: Deeplink Juggernaut can now link directly to posts/pages (and custom post types) in addition to arbitrary URLs
209
+ * Bugfix: Readded SEO Ultimate upgrade info to the `Dashboard > Updates` (or `Tools > Upgrade`) page, fixing a feature regression introduced in version 3.1
210
+
211
  = Version 3.7.1 (July 1, 2010) =
212
  * Bugfix: Fixed fatal error on editor screens for custom post types
213
 
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.7.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.7.1
16
  * @link http://www.seodesignsolutions.com/wordpress-seo/ SEO Ultimate Homepage
17
  */
18
 
@@ -47,10 +47,10 @@ define('SU_MINIMUM_WP_VER', '2.8');
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.1');
51
  define('SU_AUTHOR', 'SEO Design Solutions');
52
  define('SU_AUTHOR_URI', 'http://www.seodesignsolutions.com/');
53
- define('SU_USER_AGENT', 'SeoUltimate/3.7.1');
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.8
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.8
16
  * @link http://www.seodesignsolutions.com/wordpress-seo/ SEO Ultimate Homepage
17
  */
18
 
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.8');
51
  define('SU_AUTHOR', 'SEO Design Solutions');
52
  define('SU_AUTHOR_URI', 'http://www.seodesignsolutions.com/');
53
+ define('SU_USER_AGENT', 'SeoUltimate/3.8');
54
 
55
  /********** INCLUDES **********/
56
 
seo-ultimate.pot CHANGED
@@ -1,4 +1,4 @@
1
- # Translation of the WordPress plugin SEO Ultimate 3.6 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.6\n"
10
  "Report-Msgid-Bugs-To: http://wordpress.org/tag/seo-ultimate\n"
11
- "POT-Creation-Date: 2010-06-28 13:48+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"
@@ -31,7 +31,31 @@ msgstr ""
31
  msgid "%s, and %s"
32
  msgstr ""
33
 
34
- #: includes/jlwp/functions.php:91
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
35
  msgid "backup your database"
36
  msgstr ""
37
 
@@ -43,7 +67,7 @@ msgstr ""
43
  msgid "Log"
44
  msgstr ""
45
 
46
- #: modules/404s/fofs-log.php:115 modules/class.su-module.php:1183
47
  msgid "Actions"
48
  msgstr ""
49
 
@@ -203,40 +227,64 @@ msgstr ""
203
  msgid "Content Links"
204
  msgstr ""
205
 
206
- #: modules/autolinks/content-autolinks.php:76
207
  msgid ""
208
  "The Content Links section of Deeplink Juggernaut lets you automatically link "
209
  "a certain word or phrase in your post/page content to a URL you specify."
210
  msgstr ""
211
 
212
- #: modules/autolinks/content-autolinks.php:116
213
  msgid "Edit Existing Links"
214
  msgstr ""
215
 
216
- #: modules/autolinks/content-autolinks.php:120
217
  msgid "Add a New Link"
218
  msgstr ""
219
 
220
- #: modules/autolinks/content-autolinks.php:127
221
  msgid "Anchor Text"
222
  msgstr ""
223
 
224
- #: modules/autolinks/content-autolinks.php:128
225
- msgid "URL"
226
  msgstr ""
227
 
228
- #: modules/autolinks/content-autolinks.php:129
 
 
 
 
229
  msgid "Title Attribute"
230
  msgstr ""
231
 
232
- #: modules/autolinks/content-autolinks.php:130
233
  msgid "Options"
234
  msgstr ""
235
 
236
- #: modules/autolinks/content-autolinks.php:133
237
  msgid "Delete"
238
  msgstr ""
239
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
240
  #: modules/canonical/canonical.php:12
241
  msgid "Canonicalizer"
242
  msgstr ""
@@ -292,78 +340,54 @@ msgstr ""
292
  msgid "%1$s | %2$s %3$s by %4$s"
293
  msgstr ""
294
 
295
- #: modules/class.su-module.php:1035
296
- msgid "Posts"
297
- msgstr ""
298
-
299
- #: modules/class.su-module.php:1035
300
- msgid "Post"
301
- msgstr ""
302
-
303
- #: modules/class.su-module.php:1036
304
- msgid "Pages"
305
- msgstr ""
306
-
307
- #: modules/class.su-module.php:1036
308
- msgid "Page"
309
- msgstr ""
310
-
311
- #: modules/class.su-module.php:1037
312
- msgid "Attachments"
313
- msgstr ""
314
-
315
- #: modules/class.su-module.php:1037
316
- msgid "Attachment"
317
- msgstr ""
318
-
319
- #: modules/class.su-module.php:1069
320
  msgid "Name"
321
  msgstr ""
322
 
323
- #: modules/class.su-module.php:1080
324
  msgid "Your site currently doesn&#8217;t have any public items of this type."
325
  msgstr ""
326
 
327
- #: modules/class.su-module.php:1162
328
  msgid "&laquo;"
329
  msgstr ""
330
 
331
- #: modules/class.su-module.php:1163
332
  msgid "&raquo;"
333
  msgstr ""
334
 
335
- #: modules/class.su-module.php:1170
336
  #, php-format
337
  msgid "Displaying %s&#8211;%s of %s"
338
  msgstr ""
339
 
340
- #: modules/class.su-module.php:1184
341
  msgid "ID"
342
  msgstr ""
343
 
344
- #: modules/class.su-module.php:1217
345
  msgid "View"
346
  msgstr ""
347
 
348
- #: modules/class.su-module.php:1217
349
  msgid "Edit"
350
  msgstr ""
351
 
352
- #: modules/class.su-module.php:1309
353
  msgid "Settings updated."
354
  msgstr ""
355
 
356
- #: modules/class.su-module.php:1329
357
  msgid "Save Changes"
358
  msgstr ""
359
 
360
- #: modules/class.su-module.php:1777
361
  msgid ""
362
  "Are you sure you want to replace the textbox contents with this default "
363
  "value?"
364
  msgstr ""
365
 
366
- #: modules/class.su-module.php:1792 modules/settings/settings-data.php:23
367
  msgid "Reset"
368
  msgstr ""
369
 
@@ -1026,7 +1050,7 @@ msgstr ""
1026
  msgid "SEO Design Solutions Whitepapers"
1027
  msgstr ""
1028
 
1029
- #. #-#-#-#-# plugin.pot (SEO Ultimate 3.6) #-#-#-#-#
1030
  #. Author of the plugin/theme
1031
  #: modules/sds-blog/sds-blog.php:49
1032
  msgid "SEO Design Solutions"
@@ -1332,7 +1356,7 @@ msgstr ""
1332
  msgid "SEO Ultimate Plugin Settings"
1333
  msgstr ""
1334
 
1335
- #. #-#-#-#-# plugin.pot (SEO Ultimate 3.6) #-#-#-#-#
1336
  #. Plugin Name of the plugin/theme
1337
  #: modules/settings/settings.php:14 plugin/class.seo-ultimate.php:724
1338
  msgid "SEO Ultimate"
@@ -1342,7 +1366,7 @@ msgstr ""
1342
  msgid "Uninstaller"
1343
  msgstr ""
1344
 
1345
- #: modules/settings/uninstall.php:18 plugin/class.seo-ultimate.php:1209
1346
  msgid "Uninstall"
1347
  msgstr ""
1348
 
@@ -1659,11 +1683,11 @@ msgstr ""
1659
  msgid "View changelog"
1660
  msgstr ""
1661
 
1662
- #: plugin/class.seo-ultimate.php:1229
1663
  msgid "Active Modules: "
1664
  msgstr ""
1665
 
1666
- #: plugin/class.seo-ultimate.php:1290
1667
  msgid ""
1668
  "<strong>SEO Ultimate Notice:</strong> Your blog is configured to block "
1669
  "search engine spiders. To resolve this, <a href=\"options-privacy.php\" "
@@ -1671,7 +1695,7 @@ msgid ""
1671
  "to everyone."
1672
  msgstr ""
1673
 
1674
- #: plugin/class.seo-ultimate.php:1399
1675
  msgid "SEO Settings"
1676
  msgstr ""
1677
 
1
+ # Translation of the WordPress plugin SEO Ultimate 3.8 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.8\n"
10
  "Report-Msgid-Bugs-To: http://wordpress.org/tag/seo-ultimate\n"
11
+ "POT-Creation-Date: 2010-07-30 15:44+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"
31
  msgid "%s, and %s"
32
  msgstr ""
33
 
34
+ #: includes/jlwp/functions.php:55
35
+ msgid "Posts"
36
+ msgstr ""
37
+
38
+ #: includes/jlwp/functions.php:55
39
+ msgid "Post"
40
+ msgstr ""
41
+
42
+ #: includes/jlwp/functions.php:56
43
+ msgid "Pages"
44
+ msgstr ""
45
+
46
+ #: includes/jlwp/functions.php:56
47
+ msgid "Page"
48
+ msgstr ""
49
+
50
+ #: includes/jlwp/functions.php:57
51
+ msgid "Attachments"
52
+ msgstr ""
53
+
54
+ #: includes/jlwp/functions.php:57
55
+ msgid "Attachment"
56
+ msgstr ""
57
+
58
+ #: includes/jlwp/functions.php:123
59
  msgid "backup your database"
60
  msgstr ""
61
 
67
  msgid "Log"
68
  msgstr ""
69
 
70
+ #: modules/404s/fofs-log.php:115 modules/class.su-module.php:1156
71
  msgid "Actions"
72
  msgstr ""
73
 
227
  msgid "Content Links"
228
  msgstr ""
229
 
230
+ #: modules/autolinks/content-autolinks.php:84
231
  msgid ""
232
  "The Content Links section of Deeplink Juggernaut lets you automatically link "
233
  "a certain word or phrase in your post/page content to a URL you specify."
234
  msgstr ""
235
 
236
+ #: modules/autolinks/content-autolinks.php:117
237
  msgid "Edit Existing Links"
238
  msgstr ""
239
 
240
+ #: modules/autolinks/content-autolinks.php:121
241
  msgid "Add a New Link"
242
  msgstr ""
243
 
244
+ #: modules/autolinks/content-autolinks.php:129
245
  msgid "Anchor Text"
246
  msgstr ""
247
 
248
+ #: modules/autolinks/content-autolinks.php:130
249
+ msgid "Destination Type"
250
  msgstr ""
251
 
252
+ #: modules/autolinks/content-autolinks.php:131
253
+ msgid "Destination"
254
+ msgstr ""
255
+
256
+ #: modules/autolinks/content-autolinks.php:132
257
  msgid "Title Attribute"
258
  msgstr ""
259
 
260
+ #: modules/autolinks/content-autolinks.php:133
261
  msgid "Options"
262
  msgstr ""
263
 
264
+ #: modules/autolinks/content-autolinks.php:135
265
  msgid "Delete"
266
  msgstr ""
267
 
268
+ #: modules/autolinks/content-autolinks.php:165
269
+ msgid "Custom"
270
+ msgstr ""
271
+
272
+ #: modules/autolinks/content-autolinks.php:165
273
+ msgid "URL"
274
+ msgstr ""
275
+
276
+ #: modules/autolinks/content-autolinks.php:166
277
+ msgid "Content Items"
278
+ msgstr ""
279
+
280
+ #: modules/autolinks/content-autolinks.php:173
281
+ msgid "Nofollow"
282
+ msgstr ""
283
+
284
+ #: modules/autolinks/content-autolinks.php:174
285
+ msgid "New window"
286
+ msgstr ""
287
+
288
  #: modules/canonical/canonical.php:12
289
  msgid "Canonicalizer"
290
  msgstr ""
340
  msgid "%1$s | %2$s %3$s by %4$s"
341
  msgstr ""
342
 
343
+ #: modules/class.su-module.php:1042
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
344
  msgid "Name"
345
  msgstr ""
346
 
347
+ #: modules/class.su-module.php:1053
348
  msgid "Your site currently doesn&#8217;t have any public items of this type."
349
  msgstr ""
350
 
351
+ #: modules/class.su-module.php:1135
352
  msgid "&laquo;"
353
  msgstr ""
354
 
355
+ #: modules/class.su-module.php:1136
356
  msgid "&raquo;"
357
  msgstr ""
358
 
359
+ #: modules/class.su-module.php:1143
360
  #, php-format
361
  msgid "Displaying %s&#8211;%s of %s"
362
  msgstr ""
363
 
364
+ #: modules/class.su-module.php:1157
365
  msgid "ID"
366
  msgstr ""
367
 
368
+ #: modules/class.su-module.php:1190
369
  msgid "View"
370
  msgstr ""
371
 
372
+ #: modules/class.su-module.php:1190
373
  msgid "Edit"
374
  msgstr ""
375
 
376
+ #: modules/class.su-module.php:1340
377
  msgid "Settings updated."
378
  msgstr ""
379
 
380
+ #: modules/class.su-module.php:1360
381
  msgid "Save Changes"
382
  msgstr ""
383
 
384
+ #: modules/class.su-module.php:1848
385
  msgid ""
386
  "Are you sure you want to replace the textbox contents with this default "
387
  "value?"
388
  msgstr ""
389
 
390
+ #: modules/class.su-module.php:1863 modules/settings/settings-data.php:23
391
  msgid "Reset"
392
  msgstr ""
393
 
1050
  msgid "SEO Design Solutions Whitepapers"
1051
  msgstr ""
1052
 
1053
+ #. #-#-#-#-# plugin.pot (SEO Ultimate 3.8) #-#-#-#-#
1054
  #. Author of the plugin/theme
1055
  #: modules/sds-blog/sds-blog.php:49
1056
  msgid "SEO Design Solutions"
1356
  msgid "SEO Ultimate Plugin Settings"
1357
  msgstr ""
1358
 
1359
+ #. #-#-#-#-# plugin.pot (SEO Ultimate 3.8) #-#-#-#-#
1360
  #. Plugin Name of the plugin/theme
1361
  #: modules/settings/settings.php:14 plugin/class.seo-ultimate.php:724
1362
  msgid "SEO Ultimate"
1366
  msgid "Uninstaller"
1367
  msgstr ""
1368
 
1369
+ #: modules/settings/uninstall.php:18 plugin/class.seo-ultimate.php:1211
1370
  msgid "Uninstall"
1371
  msgstr ""
1372
 
1683
  msgid "View changelog"
1684
  msgstr ""
1685
 
1686
+ #: plugin/class.seo-ultimate.php:1231
1687
  msgid "Active Modules: "
1688
  msgstr ""
1689
 
1690
+ #: plugin/class.seo-ultimate.php:1292
1691
  msgid ""
1692
  "<strong>SEO Ultimate Notice:</strong> Your blog is configured to block "
1693
  "search engine spiders. To resolve this, <a href=\"options-privacy.php\" "
1695
  "to everyone."
1696
  msgstr ""
1697
 
1698
+ #: plugin/class.seo-ultimate.php:1402
1699
  msgid "SEO Settings"
1700
  msgstr ""
1701