Broken Link Checker - Version 0.9.4.4

Version Description

  • Fixed "Edit URL" and "Unlink" not working on PHP4 servers.
Download this release

Release Info

Developer whiteshadow
Plugin Icon 128x128 Broken Link Checker
Version 0.9.4.4
Comparing to
See all releases

Code changes from version 0.9.4.3 to 0.9.4.4

broken-link-checker.php CHANGED
@@ -4,7 +4,7 @@
4
  Plugin Name: Broken Link Checker
5
  Plugin URI: http://w-shadow.com/blog/2007/08/05/broken-link-checker-for-wordpress/
6
  Description: Checks your blog for broken links and missing images and notifies you on the dashboard if any are found.
7
- Version: 0.9.4.1
8
  Author: Janis Elsts
9
  Author URI: http://w-shadow.com/blog/
10
  Text Domain: broken-link-checker
@@ -86,7 +86,8 @@ $blc_config_manager = new blcConfigurationManager(
86
  'custom_fields' => array(), //List of custom fields that can contain URLs and should be checked.
87
  'check_comment_links' => true, //Whether to check links found in comments
88
 
89
- 'autoexpand_widget' => true, //Autoexpand the Dashboard widget if broken links are detected
 
90
 
91
  'need_resynch' => false, //[Internal flag] True if there are unparsed items.
92
  'current_db_version' => 0, //The currently set-up version of the plugin's tables
@@ -119,7 +120,7 @@ $blclog = new blcDummyLogger;
119
 
120
 
121
  /*
122
- if ( constant('BLC_DEBUG') ){
123
  //Load FirePHP for debug logging
124
  if ( !class_exists('FB') ) {
125
  require_once 'FirePHPCore/fb.php4';
@@ -158,7 +159,7 @@ function blc_init_containers(){
158
  require $blc_directory . '/includes/containers/custom_field.php';
159
  require $blc_directory . '/includes/containers/dummy.php';
160
 
161
- $conf = blc_get_configuration();
162
  if ( $conf->options['check_comment_links'] ){
163
  require $blc_directory . '/includes/containers/comment.php';
164
  }
@@ -237,7 +238,7 @@ function blc_init_all_components(){
237
  *
238
  * @return blcConfigurationManager
239
  */
240
- function blc_get_configuration(){
241
  return $GLOBALS['blc_config_manager'];
242
  }
243
 
@@ -248,7 +249,7 @@ function blc_get_configuration(){
248
  * @return void
249
  */
250
  function blc_got_unsynched_items(){
251
- $conf = blc_get_configuration();
252
 
253
  if ( !$conf->options['need_resynch'] ){
254
  $conf->options['need_resynch'] = true;
@@ -332,7 +333,7 @@ add_filter('cron_schedules', 'blc_cron_schedules');
332
  * @return void
333
  */
334
  function blc_print_installation_errors(){
335
- $conf = blc_get_configuration();
336
  if ( !$conf->options['installation_failed'] ){
337
  return;
338
  }
4
  Plugin Name: Broken Link Checker
5
  Plugin URI: http://w-shadow.com/blog/2007/08/05/broken-link-checker-for-wordpress/
6
  Description: Checks your blog for broken links and missing images and notifies you on the dashboard if any are found.
7
+ Version: 0.9.4.4
8
  Author: Janis Elsts
9
  Author URI: http://w-shadow.com/blog/
10
  Text Domain: broken-link-checker
86
  'custom_fields' => array(), //List of custom fields that can contain URLs and should be checked.
87
  'check_comment_links' => true, //Whether to check links found in comments
88
 
89
+ 'autoexpand_widget' => true, //Autoexpand the Dashboard widget if broken links are detected
90
+ 'show_link_count_bubble' => true, //Display a notification bubble in the menu when broken links are found
91
 
92
  'need_resynch' => false, //[Internal flag] True if there are unparsed items.
93
  'current_db_version' => 0, //The currently set-up version of the plugin's tables
120
 
121
 
122
  /*
123
+ if ( defined('BLC_DEBUG') && constant('BLC_DEBUG') ){
124
  //Load FirePHP for debug logging
125
  if ( !class_exists('FB') ) {
126
  require_once 'FirePHPCore/fb.php4';
159
  require $blc_directory . '/includes/containers/custom_field.php';
160
  require $blc_directory . '/includes/containers/dummy.php';
161
 
162
+ $conf = & blc_get_configuration();
163
  if ( $conf->options['check_comment_links'] ){
164
  require $blc_directory . '/includes/containers/comment.php';
165
  }
238
  *
239
  * @return blcConfigurationManager
240
  */
241
+ function &blc_get_configuration(){
242
  return $GLOBALS['blc_config_manager'];
243
  }
244
 
249
  * @return void
250
  */
251
  function blc_got_unsynched_items(){
252
+ $conf = & blc_get_configuration();
253
 
254
  if ( !$conf->options['need_resynch'] ){
255
  $conf->options['need_resynch'] = true;
333
  * @return void
334
  */
335
  function blc_print_installation_errors(){
336
+ $conf = & blc_get_configuration();
337
  if ( !$conf->options['installation_failed'] ){
338
  return;
339
  }
core.php CHANGED
@@ -32,10 +32,10 @@ class wsBrokenLinkChecker {
32
  * @param blcConfigurationManager $conf An instance of the configuration manager
33
  * @return void
34
  */
35
- function wsBrokenLinkChecker ( $loader, $conf ) {
36
  global $wpdb;
37
 
38
- $this->conf = $conf;
39
  $this->loader = $loader;
40
  $this->my_basename = plugin_basename( $this->loader );
41
 
@@ -476,7 +476,12 @@ class wsBrokenLinkChecker {
476
  //Use the character set and collation that's configured for WP tables
477
  $charset_collate = '';
478
  if ( !empty($wpdb->charset) ){
479
- $charset_collate = "DEFAULT CHARACTER SET {$wpdb->charset}";
 
 
 
 
 
480
  }
481
  if ( !empty($wpdb->collate) ){
482
  $charset_collate = " COLLATE {$wpdb->collate}";
@@ -527,7 +532,8 @@ EOD;
527
 
528
  PRIMARY KEY (`instance_id`),
529
  KEY `link_id` (`link_id`),
530
- KEY `source_id` (`container_id`,`container_type`)
 
531
  ) {$charset_collate};
532
  EOT;
533
  if ( $wpdb->query($q) === false ){
@@ -663,6 +669,12 @@ EOZ;
663
  $this->optimize_database();
664
  }
665
 
 
 
 
 
 
 
666
  function admin_menu(){
667
  if (current_user_can('manage_options'))
668
  add_filter('plugin_action_links', array(&$this, 'plugin_action_links'), 10, 2);
@@ -674,9 +686,24 @@ EOZ;
674
  'link-checker-settings',array(&$this, 'options_page')
675
  );
676
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
677
  $links_page_hook = add_management_page(
678
  __('View Broken Links', 'broken-link-checker'),
679
- __('Broken Links', 'broken-link-checker'),
680
  'edit_others_posts',
681
  'view-broken-links',array(&$this, 'links_page')
682
  );
@@ -832,7 +859,7 @@ EOZ;
832
  }
833
  $this->conf->options['send_email_notifications'] = $email_notifications;
834
 
835
- //Commen link checking on/off
836
  $old_setting = $this->conf->options['check_comment_links'];
837
  $this->conf->options['check_comment_links'] = !empty($_POST['check_comment_links']);
838
  //If comment link checking was just turned on we need to load the comment manager
@@ -840,7 +867,7 @@ EOZ;
840
  //TODO: More elegant handling of freshly enabled/disabled container types
841
  if ( !$old_setting && $this->conf->options['check_comment_links'] ){
842
  include $blc_directory . '/includes/containers/comment.php';
843
- $containerRegistry = blcContainerRegistry::getInstance();
844
  $comment_manager = $containerRegistry->get_manager('comment');
845
  if ( $comment_manager ){
846
  $comment_manager->resynch();
@@ -859,7 +886,7 @@ EOZ;
859
  inefficient.
860
  */
861
  if ( ( count($diff1) > 0 ) || ( count($diff2) > 0 ) ){
862
- $containerRegistry = blcContainerRegistry::getInstance();
863
  $manager = $containerRegistry->get_manager('custom_field');
864
  if ( !is_null($manager) ){
865
  $manager->resynch();
@@ -1270,7 +1297,7 @@ EOZ;
1270
 
1271
  function links_page(){
1272
  global $wpdb, $blclog;
1273
- $blc_link_query = blcLinkQuery::getInstance();
1274
 
1275
  //Sanity check : Make sure the plugin's tables are all set up.
1276
  if ( $this->db_version != $this->conf->options['current_db_version'] ) {
@@ -1390,11 +1417,12 @@ EOZ;
1390
  <script type='text/javascript'>
1391
  var blc_current_filter = '<?php echo $filter_id; ?>';
1392
  var blc_is_broken_filter = <?php
1393
- if ( ($filter_id == 'broken') || ( isset($current_filter['params']['s_filter']) && ($current_filter['params']['s_filter'] = 'broken') ) ){
1394
- echo 'true';
1395
- } else {
1396
- echo 'false';
1397
- }
 
1398
  ?>;
1399
  </script>
1400
 
@@ -1694,7 +1722,7 @@ EOZ;
1694
  $msg_class = 'error';
1695
  } else {
1696
  //Save the new filter
1697
- $blc_link_query = blcLinkQuery::getInstance();
1698
  $filter_id = $blc_link_query->create_custom_filter($_POST['name'], $_POST['params']);
1699
 
1700
  if ( $filter_id ){
@@ -1730,7 +1758,7 @@ EOZ;
1730
  $msg_class = 'error';
1731
  } else {
1732
  //Try to delete the filter
1733
- $blc_link_query = blcLinkQuery::getInstance();
1734
  if ( $blc_link_query->delete_custom_filter($_POST['filter_id']) ){
1735
  //Success
1736
  $message = __('Filter deleted', 'broken-link-checker');
@@ -1881,7 +1909,7 @@ EOZ;
1881
  * @return array Confirmation message and its CSS class.
1882
  */
1883
  function do_bulk_delete_sources($selected_links){
1884
- $blc_container_registry = blcContainerRegistry::getInstance();
1885
 
1886
  $message = '';
1887
  $msg_class = 'updated';
@@ -2461,12 +2489,12 @@ EOZ;
2461
 
2462
  //Only check links that have at least one valid instance (i.e. an instance exists and
2463
  //it corresponds to one of the currently loaded container/parser types).
2464
- $containerRegistry = blcContainerRegistry::getInstance();
2465
  $loaded_containers = array_keys($containerRegistry->get_registered_containers());
2466
  $loaded_containers = array_map(array(&$wpdb, 'escape'), $loaded_containers);
2467
  $loaded_containers = "'" . implode("', '", $loaded_containers) . "'";
2468
 
2469
- $parserRegistry = blcParserRegistry::getInstance();
2470
  $loaded_parsers = array_keys($parserRegistry->get_registered_parsers());
2471
  $loaded_parsers = array_map(array(&$wpdb, 'escape'), $loaded_parsers);
2472
  $loaded_parsers = "'" . implode("', '", $loaded_parsers) . "'";
@@ -2647,7 +2675,7 @@ EOZ;
2647
  */
2648
  function get_status(){
2649
  global $wpdb;
2650
- $blc_link_query = blcLinkQuery::getInstance();
2651
 
2652
  $check_threshold=date('Y-m-d H:i:s', strtotime('-'.$this->conf->options['check_threshold'].' hours'));
2653
  $recheck_threshold=date('Y-m-d H:i:s', time() - $this->conf->options['recheck_threshold']);
@@ -3193,6 +3221,51 @@ EOZ;
3193
  'value' => sprintf(__('%s seconds'), ini_get('max_execution_time')),
3194
  );
3195
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3196
  return $debug;
3197
  }
3198
 
32
  * @param blcConfigurationManager $conf An instance of the configuration manager
33
  * @return void
34
  */
35
+ function wsBrokenLinkChecker ( $loader, &$conf ) {
36
  global $wpdb;
37
 
38
+ $this->conf = &$conf;
39
  $this->loader = $loader;
40
  $this->my_basename = plugin_basename( $this->loader );
41
 
476
  //Use the character set and collation that's configured for WP tables
477
  $charset_collate = '';
478
  if ( !empty($wpdb->charset) ){
479
+ //Some German installs use "utf-8" (invalid) instead of "utf8" (valid). None of
480
+ //the charset ids supported by MySQL contain dashes, so we can safely strip them.
481
+ //See http://dev.mysql.com/doc/refman/5.0/en/charset-charsets.html
482
+ $charset = str_replace('-', '', $wpdb->charset);
483
+
484
+ $charset_collate = "DEFAULT CHARACTER SET {$charset}";
485
  }
486
  if ( !empty($wpdb->collate) ){
487
  $charset_collate = " COLLATE {$wpdb->collate}";
532
 
533
  PRIMARY KEY (`instance_id`),
534
  KEY `link_id` (`link_id`),
535
+ KEY `source_id` (`container_type`, `container_id`),
536
+ KEY `parser_type` (`parser_type`)
537
  ) {$charset_collate};
538
  EOT;
539
  if ( $wpdb->query($q) === false ){
669
  $this->optimize_database();
670
  }
671
 
672
+ /**
673
+ * Create the plugin's menu items and enqueue their scripts and CSS.
674
+ * Callback for the 'admin_menu' action.
675
+ *
676
+ * @return void
677
+ */
678
  function admin_menu(){
679
  if (current_user_can('manage_options'))
680
  add_filter('plugin_action_links', array(&$this, 'plugin_action_links'), 10, 2);
686
  'link-checker-settings',array(&$this, 'options_page')
687
  );
688
 
689
+ $menu_title = __('Broken Links', 'broken-link-checker');
690
+ if ( $this->conf->options['show_link_count_bubble'] ){
691
+ //To make it easier to notice when broken links appear, display the current number of
692
+ //broken links in a little bubble notification in the "Broken Links" menu.
693
+ //(Similar to how the number of plugin updates and unmoderated comments is displayed).
694
+ $blc_link_query = & blcLinkQuery::getInstance();
695
+ $broken_links = $blc_link_query->get_filter_links('broken', array('count_only' => true));
696
+ if ( $broken_links > 0 ){
697
+ //TODO: Appropriating existing CSS classes for my own purposes is hacky. Fix eventually.
698
+ $menu_title .= sprintf(
699
+ ' <span class="update-plugins"><span class="update-count blc-menu-bubble">%d</span></span>',
700
+ $broken_links
701
+ );
702
+ }
703
+ }
704
  $links_page_hook = add_management_page(
705
  __('View Broken Links', 'broken-link-checker'),
706
+ $menu_title,
707
  'edit_others_posts',
708
  'view-broken-links',array(&$this, 'links_page')
709
  );
859
  }
860
  $this->conf->options['send_email_notifications'] = $email_notifications;
861
 
862
+ //Comment link checking on/off
863
  $old_setting = $this->conf->options['check_comment_links'];
864
  $this->conf->options['check_comment_links'] = !empty($_POST['check_comment_links']);
865
  //If comment link checking was just turned on we need to load the comment manager
867
  //TODO: More elegant handling of freshly enabled/disabled container types
868
  if ( !$old_setting && $this->conf->options['check_comment_links'] ){
869
  include $blc_directory . '/includes/containers/comment.php';
870
+ $containerRegistry = & blcContainerRegistry::getInstance();
871
  $comment_manager = $containerRegistry->get_manager('comment');
872
  if ( $comment_manager ){
873
  $comment_manager->resynch();
886
  inefficient.
887
  */
888
  if ( ( count($diff1) > 0 ) || ( count($diff2) > 0 ) ){
889
+ $containerRegistry = & blcContainerRegistry::getInstance();
890
  $manager = $containerRegistry->get_manager('custom_field');
891
  if ( !is_null($manager) ){
892
  $manager->resynch();
1297
 
1298
  function links_page(){
1299
  global $wpdb, $blclog;
1300
+ $blc_link_query = & blcLinkQuery::getInstance();
1301
 
1302
  //Sanity check : Make sure the plugin's tables are all set up.
1303
  if ( $this->db_version != $this->conf->options['current_db_version'] ) {
1417
  <script type='text/javascript'>
1418
  var blc_current_filter = '<?php echo $filter_id; ?>';
1419
  var blc_is_broken_filter = <?php
1420
+ //TODO: Simplify this. Maybe overhaul the filter system to let us query the effective filter.
1421
+ $is_broken_filter =
1422
+ ($filter_id == 'broken')
1423
+ || ( isset($current_filter['params']['s_filter']) && ($current_filter['params']['s_filter'] == 'broken') )
1424
+ || ( isset($_GET['s_filter']) && ($_GET['s_filter'] == 'broken') );
1425
+ echo $is_broken_filter ? 'true' : 'false';
1426
  ?>;
1427
  </script>
1428
 
1722
  $msg_class = 'error';
1723
  } else {
1724
  //Save the new filter
1725
+ $blc_link_query = & blcLinkQuery::getInstance();
1726
  $filter_id = $blc_link_query->create_custom_filter($_POST['name'], $_POST['params']);
1727
 
1728
  if ( $filter_id ){
1758
  $msg_class = 'error';
1759
  } else {
1760
  //Try to delete the filter
1761
+ $blc_link_query = & blcLinkQuery::getInstance();
1762
  if ( $blc_link_query->delete_custom_filter($_POST['filter_id']) ){
1763
  //Success
1764
  $message = __('Filter deleted', 'broken-link-checker');
1909
  * @return array Confirmation message and its CSS class.
1910
  */
1911
  function do_bulk_delete_sources($selected_links){
1912
+ $blc_container_registry = & blcContainerRegistry::getInstance();
1913
 
1914
  $message = '';
1915
  $msg_class = 'updated';
2489
 
2490
  //Only check links that have at least one valid instance (i.e. an instance exists and
2491
  //it corresponds to one of the currently loaded container/parser types).
2492
+ $containerRegistry = & blcContainerRegistry::getInstance();
2493
  $loaded_containers = array_keys($containerRegistry->get_registered_containers());
2494
  $loaded_containers = array_map(array(&$wpdb, 'escape'), $loaded_containers);
2495
  $loaded_containers = "'" . implode("', '", $loaded_containers) . "'";
2496
 
2497
+ $parserRegistry = & blcParserRegistry::getInstance();
2498
  $loaded_parsers = array_keys($parserRegistry->get_registered_parsers());
2499
  $loaded_parsers = array_map(array(&$wpdb, 'escape'), $loaded_parsers);
2500
  $loaded_parsers = "'" . implode("', '", $loaded_parsers) . "'";
2675
  */
2676
  function get_status(){
2677
  global $wpdb;
2678
+ $blc_link_query = & blcLinkQuery::getInstance();
2679
 
2680
  $check_threshold=date('Y-m-d H:i:s', strtotime('-'.$this->conf->options['check_threshold'].' hours'));
2681
  $recheck_threshold=date('Y-m-d H:i:s', time() - $this->conf->options['recheck_threshold']);
3221
  'value' => sprintf(__('%s seconds'), ini_get('max_execution_time')),
3222
  );
3223
 
3224
+ //Resynch flag.
3225
+ $debug['Resynch. flag'] = array(
3226
+ 'state' => 'ok',
3227
+ 'value' => sprintf('%d', $this->conf->options['need_resynch']),
3228
+ );
3229
+
3230
+ //Synch records
3231
+ $synch_records = intval($wpdb->get_var("SELECT COUNT(*) FROM {$wpdb->prefix}blc_synch"));
3232
+ $data = array(
3233
+ 'state' => 'ok',
3234
+ 'value' => sprintf('%d', $synch_records),
3235
+ );
3236
+ if ( $synch_records == 0 ){
3237
+ $data['state'] = 'warning';
3238
+ $data['message'] = __('If this value is zero even after several page reloads you have probably encountered a bug.', 'broken-link-checker');
3239
+ }
3240
+ $debug['Synch. records'] = $data;
3241
+
3242
+ //Total links and instances (including invalid ones)
3243
+ $all_links = intval($wpdb->get_var("SELECT COUNT(*) FROM {$wpdb->prefix}blc_links"));
3244
+ $all_instances = intval($wpdb->get_var("SELECT COUNT(*) FROM {$wpdb->prefix}blc_instances"));
3245
+
3246
+ //Show the number of unparsed containers. Useful for debugging. For performance,
3247
+ //this is only shown when we have no links/instances yet.
3248
+ if( ($all_links == 0) && ($all_instances == 0) ){
3249
+ $unparsed_items = intval($wpdb->get_var("SELECT COUNT(*) FROM {$wpdb->prefix}blc_synch WHERE synched=0"));
3250
+ $debug['Unparsed items'] = array(
3251
+ 'state' => 'warning',
3252
+ 'value' => $unparsed_items,
3253
+ );
3254
+ }
3255
+
3256
+ //Links & instances
3257
+ if ( ($all_links > 0) && ($all_instances > 0) ){
3258
+ $debug['Link records'] = array(
3259
+ 'state' => 'ok',
3260
+ 'value' => sprintf('%d (%d)', $all_links, $all_instances),
3261
+ );
3262
+ } else {
3263
+ $debug['Link records'] = array(
3264
+ 'state' => 'warning',
3265
+ 'value' => sprintf('%d (%d)', $all_links, $all_instances),
3266
+ );
3267
+ }
3268
+
3269
  return $debug;
3270
  }
3271
 
includes/admin/links-page-js.php CHANGED
@@ -1,9 +1,23 @@
1
  <script type='text/javascript'>
2
 
3
  function alterLinkCounter(factor){
4
- cnt = parseInt(jQuery('.current-link-count').eq(0).html());
5
  cnt = cnt + factor;
6
  jQuery('.current-link-count').html(cnt);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7
  }
8
 
9
  function replaceLinkId(old_id, new_id){
@@ -385,7 +399,7 @@ jQuery(function($){
385
 
386
  //Update the checkbox depending on current settings.
387
  <?php
388
- $conf = blc_get_configuration();
389
  if ( $conf->options['highlight_permanent_failures'] ){
390
  echo 'highlight_permanent_failures_checkbox.attr("checked", "checked");';
391
  } else {
1
  <script type='text/javascript'>
2
 
3
  function alterLinkCounter(factor){
4
+ var cnt = parseInt(jQuery('.current-link-count').eq(0).html());
5
  cnt = cnt + factor;
6
  jQuery('.current-link-count').html(cnt);
7
+
8
+ if ( blc_is_broken_filter ){
9
+ //Update the broken link count displayed beside the "Broken Links" menu
10
+ var menuBubble = jQuery('span.blc-menu-bubble');
11
+ if ( menuBubble.length > 0 ){
12
+ cnt = parseInt(menuBubble.eq(0).html());
13
+ cnt = cnt + factor;
14
+ if ( cnt > 0 ){
15
+ menuBubble.html(cnt);
16
+ } else {
17
+ menuBubble.parent().hide();
18
+ }
19
+ }
20
+ }
21
  }
22
 
23
  function replaceLinkId(old_id, new_id){
399
 
400
  //Update the checkbox depending on current settings.
401
  <?php
402
+ $conf = & blc_get_configuration();
403
  if ( $conf->options['highlight_permanent_failures'] ){
404
  echo 'highlight_permanent_failures_checkbox.attr("checked", "checked");';
405
  } else {
includes/admin/search-form.php CHANGED
@@ -54,7 +54,7 @@
54
  $search_subfilter = $filter_id;
55
  }
56
 
57
- $linkQuery = blcLinkQuery::getInstance();
58
  foreach ($linkQuery->native_filters as $filter => $data){
59
  $selected = ($search_subfilter == $filter)?' selected="selected"':'';
60
  printf('<option value="%s"%s>%s</option>', $filter, $selected, $data['name']);
54
  $search_subfilter = $filter_id;
55
  }
56
 
57
+ $linkQuery = & blcLinkQuery::getInstance();
58
  foreach ($linkQuery->native_filters as $filter => $data){
59
  $selected = ($search_subfilter == $filter)?' selected="selected"':'';
60
  printf('<option value="%s"%s>%s</option>', $filter, $selected, $data['name']);
includes/checkers.php CHANGED
@@ -98,7 +98,7 @@ class blcCheckerRegistry {
98
  * @param string $url
99
  * @return blcChecker|null
100
  */
101
- function get_checker_for($url){
102
  $parsed = @parse_url($url);
103
 
104
  foreach($this->registered_checkers as $checker){
@@ -129,7 +129,7 @@ function blc_register_checker($class_name){
129
  * @param string $url The URL that needs to be checked.
130
  * @return blcChecker|null
131
  */
132
- function blc_get_checker_for($url){
133
  return $GLOBALS['blc_checker_registry']->get_checker_for($url);
134
  }
135
 
98
  * @param string $url
99
  * @return blcChecker|null
100
  */
101
+ function &get_checker_for($url){
102
  $parsed = @parse_url($url);
103
 
104
  foreach($this->registered_checkers as $checker){
129
  * @param string $url The URL that needs to be checked.
130
  * @return blcChecker|null
131
  */
132
+ function &blc_get_checker_for($url){
133
  return $GLOBALS['blc_checker_registry']->get_checker_for($url);
134
  }
135
 
includes/checkers/http.php CHANGED
@@ -81,7 +81,7 @@ class blcCurlHttp extends blcHttpChecker {
81
  $log = '';
82
 
83
  //Get the BLC configuration. It's used below to set the right timeout values and such.
84
- $conf = blc_get_configuration();
85
 
86
  //Init curl.
87
  $ch = curl_init();
@@ -235,7 +235,7 @@ class blcSnoopyHttp extends blcHttpChecker {
235
  $log = '';
236
 
237
  //Get the timeout setting from the BLC configuration.
238
- $conf = blc_get_configuration();
239
  $timeout = $conf->options['timeout'];
240
 
241
  $start_time = microtime_float();
81
  $log = '';
82
 
83
  //Get the BLC configuration. It's used below to set the right timeout values and such.
84
+ $conf = & blc_get_configuration();
85
 
86
  //Init curl.
87
  $ch = curl_init();
235
  $log = '';
236
 
237
  //Get the timeout setting from the BLC configuration.
238
+ $conf = & blc_get_configuration();
239
  $timeout = $conf->options['timeout'];
240
 
241
  $start_time = microtime_float();
includes/containers.php CHANGED
@@ -35,7 +35,12 @@ class blcContainerRegistry {
35
  $this->__construct();
36
  }
37
 
38
- function getInstance(){
 
 
 
 
 
39
  static $instance = null;
40
  if ( is_null($instance) ){
41
  $instance = new blcContainerRegistry;
@@ -89,7 +94,7 @@ class blcContainerRegistry {
89
  * @param string $fallback If there is no manager associated with $container_type, return the manager of this container type instead.
90
  * @return blcContainerManager|null
91
  */
92
- function get_manager( $container_type, $fallback = '' ){
93
  if ( isset($this->registered_managers[$container_type]) ){
94
  return $this->registered_managers[$container_type];
95
  } elseif ( !empty($fallback) && isset($this->registered_managers[$fallback]) ) {
@@ -217,7 +222,7 @@ class blcContainerRegistry {
217
 
218
  $results = array();
219
  foreach($by_type as $container_type => $entries){
220
- $manager = $this->get_manager($container_type, $fallback);
221
  if ( !is_null($manager) ){
222
  $partial_results = $manager->get_containers($entries, $purpose, $load_wrapped_objects);
223
  $results = array_merge($results, $partial_results);
@@ -274,7 +279,7 @@ class blcContainerRegistry {
274
  * @return string A delete confirmation message, e.g. "5 posts were moved to trash"
275
  */
276
  function ui_bulk_delete_message($container_type, $n){
277
- $manager = $this->get_manager($container_type);
278
  if ( is_null($manager) ){
279
  return sprintf(__("Container type '%s' not recognized", 'broken-link-checker'), $container_type);
280
  } else {
@@ -284,7 +289,7 @@ class blcContainerRegistry {
284
  }
285
 
286
  //Init the container registry & make it global
287
- $GLOBALS['blc_container_registry'] = blcContainerRegistry::getInstance();
288
 
289
 
290
 
@@ -346,7 +351,7 @@ class blcContainer {
346
  $field = $this->default_field;
347
  }
348
 
349
- $w = $this->get_wrapped_object();
350
  return $w->$field;
351
  }
352
 
@@ -362,7 +367,7 @@ class blcContainer {
362
  * @return bool|WP_Error True on success, an error object if something went wrong.
363
  */
364
  function update_field($field, $new_value, $old_value = ''){
365
- $w = $this->get_wrapped_object();
366
  $w->$field = $new_value;
367
  return $this->update_wrapped_object();
368
  }
@@ -376,7 +381,7 @@ class blcContainer {
376
  * @param bool $ensure_consistency Set this to true to ignore the cached $wrapped_object value and retrieve an up-to-date copy of the wrapped object from the DB (or WP's internal cache).
377
  * @return object The wrapped object.
378
  */
379
- function get_wrapped_object($ensure_consistency = false){
380
  trigger_error('Function blcContainer::get_wrapped_object() must be over-ridden in a sub-class', E_USER_ERROR);
381
  }
382
 
@@ -834,7 +839,7 @@ class blcContainerManager {
834
  * @return bool True if the container was successfully registered, false otherwise.
835
  */
836
  function blc_register_container( $container_type, $manager_class ){
837
- $instance = blcContainerRegistry::getInstance();
838
  return $instance->register_container($container_type, $manager_class);
839
  }
840
 
@@ -845,7 +850,7 @@ function blc_register_container( $container_type, $manager_class ){
845
  * @return blcContainer|null Returns null if the container type is unrecognized.
846
  */
847
  function blc_get_container($container){
848
- $instance = blcContainerRegistry::getInstance();
849
  return $instance->get_container($container);
850
  }
851
 
@@ -873,7 +878,7 @@ function blc_get_container($container){
873
  * @return array of blcContainer indexed by 'container_type|container_id'
874
  */
875
  function blc_get_containers( $containers, $purpose = '', $load_wrapped_objects = false ){
876
- $instance = blcContainerRegistry::getInstance();
877
  return $instance->get_containers($containers, $purpose, '', $load_wrapped_objects);
878
  }
879
 
@@ -884,7 +889,7 @@ function blc_get_containers( $containers, $purpose = '', $load_wrapped_objects =
884
  * @return array of blcContainer
885
  */
886
  function blc_get_unsynched_containers($max_results = 0){
887
- $instance = blcContainerRegistry::getInstance();
888
  return $instance->get_unsynched_containers($max_results);
889
  }
890
 
@@ -896,7 +901,7 @@ function blc_get_unsynched_containers($max_results = 0){
896
  * @return void
897
  */
898
  function blc_resynch_containers($forced = false){
899
- $instance = blcContainerRegistry::getInstance();
900
  $instance->resynch($forced);
901
  }
902
 
@@ -908,7 +913,7 @@ function blc_resynch_containers($forced = false){
908
  function blc_cleanup_containers(){
909
  global $wpdb;
910
 
911
- $containerRegistry = blcContainerRegistry::getInstance();
912
  $loaded_containers = array_keys($containerRegistry->get_registered_containers());
913
  $loaded_containers = array_map(array(&$wpdb, 'escape'), $loaded_containers);
914
  $loaded_containers = "'" . implode("', '", $loaded_containers) . "'";
35
  $this->__construct();
36
  }
37
 
38
+ /**
39
+ * Return a singleton instance of this class.
40
+ *
41
+ * @return blcContainerRegistry
42
+ */
43
+ function &getInstance(){
44
  static $instance = null;
45
  if ( is_null($instance) ){
46
  $instance = new blcContainerRegistry;
94
  * @param string $fallback If there is no manager associated with $container_type, return the manager of this container type instead.
95
  * @return blcContainerManager|null
96
  */
97
+ function &get_manager( $container_type, $fallback = '' ){
98
  if ( isset($this->registered_managers[$container_type]) ){
99
  return $this->registered_managers[$container_type];
100
  } elseif ( !empty($fallback) && isset($this->registered_managers[$fallback]) ) {
222
 
223
  $results = array();
224
  foreach($by_type as $container_type => $entries){
225
+ $manager = & $this->get_manager($container_type, $fallback);
226
  if ( !is_null($manager) ){
227
  $partial_results = $manager->get_containers($entries, $purpose, $load_wrapped_objects);
228
  $results = array_merge($results, $partial_results);
279
  * @return string A delete confirmation message, e.g. "5 posts were moved to trash"
280
  */
281
  function ui_bulk_delete_message($container_type, $n){
282
+ $manager = & $this->get_manager($container_type);
283
  if ( is_null($manager) ){
284
  return sprintf(__("Container type '%s' not recognized", 'broken-link-checker'), $container_type);
285
  } else {
289
  }
290
 
291
  //Init the container registry & make it global
292
+ $GLOBALS['blc_container_registry'] = & blcContainerRegistry::getInstance();
293
 
294
 
295
 
351
  $field = $this->default_field;
352
  }
353
 
354
+ $w = &$this->get_wrapped_object();
355
  return $w->$field;
356
  }
357
 
367
  * @return bool|WP_Error True on success, an error object if something went wrong.
368
  */
369
  function update_field($field, $new_value, $old_value = ''){
370
+ $w = &$this->get_wrapped_object();
371
  $w->$field = $new_value;
372
  return $this->update_wrapped_object();
373
  }
381
  * @param bool $ensure_consistency Set this to true to ignore the cached $wrapped_object value and retrieve an up-to-date copy of the wrapped object from the DB (or WP's internal cache).
382
  * @return object The wrapped object.
383
  */
384
+ function &get_wrapped_object($ensure_consistency = false){
385
  trigger_error('Function blcContainer::get_wrapped_object() must be over-ridden in a sub-class', E_USER_ERROR);
386
  }
387
 
839
  * @return bool True if the container was successfully registered, false otherwise.
840
  */
841
  function blc_register_container( $container_type, $manager_class ){
842
+ $instance = & blcContainerRegistry::getInstance();
843
  return $instance->register_container($container_type, $manager_class);
844
  }
845
 
850
  * @return blcContainer|null Returns null if the container type is unrecognized.
851
  */
852
  function blc_get_container($container){
853
+ $instance = & blcContainerRegistry::getInstance();
854
  return $instance->get_container($container);
855
  }
856
 
878
  * @return array of blcContainer indexed by 'container_type|container_id'
879
  */
880
  function blc_get_containers( $containers, $purpose = '', $load_wrapped_objects = false ){
881
+ $instance = & blcContainerRegistry::getInstance();
882
  return $instance->get_containers($containers, $purpose, '', $load_wrapped_objects);
883
  }
884
 
889
  * @return array of blcContainer
890
  */
891
  function blc_get_unsynched_containers($max_results = 0){
892
+ $instance = & blcContainerRegistry::getInstance();
893
  return $instance->get_unsynched_containers($max_results);
894
  }
895
 
901
  * @return void
902
  */
903
  function blc_resynch_containers($forced = false){
904
+ $instance = & blcContainerRegistry::getInstance();
905
  $instance->resynch($forced);
906
  }
907
 
913
  function blc_cleanup_containers(){
914
  global $wpdb;
915
 
916
+ $containerRegistry = & blcContainerRegistry::getInstance();
917
  $loaded_containers = array_keys($containerRegistry->get_registered_containers());
918
  $loaded_containers = array_map(array(&$wpdb, 'escape'), $loaded_containers);
919
  $loaded_containers = "'" . implode("', '", $loaded_containers) . "'";
includes/containers/blogroll.php CHANGED
@@ -54,9 +54,9 @@ class blcBookmark extends blcContainer{
54
  * @param bool $ensure_consistency Set this to true to ignore the cached $wrapped_object value and retrieve an up-to-date copy of the wrapped object from the DB (or WP's internal cache).
55
  * @return object Bookmark data.
56
  */
57
- function get_wrapped_object($ensure_consistency = false){
58
  if( $ensure_consistency || is_null($this->wrapped_object) ){
59
- $this->wrapped_object = get_bookmark($this->container_id);
60
  }
61
  return $this->wrapped_object;
62
  }
54
  * @param bool $ensure_consistency Set this to true to ignore the cached $wrapped_object value and retrieve an up-to-date copy of the wrapped object from the DB (or WP's internal cache).
55
  * @return object Bookmark data.
56
  */
57
+ function &get_wrapped_object($ensure_consistency = false){
58
  if( $ensure_consistency || is_null($this->wrapped_object) ){
59
+ $this->wrapped_object = &get_bookmark($this->container_id);
60
  }
61
  return $this->wrapped_object;
62
  }
includes/containers/comment.php CHANGED
@@ -15,9 +15,9 @@ class blcComment extends blcContainer{
15
  * @param bool $ensure_consistency
16
  * @return object The comment.
17
  */
18
- function get_wrapped_object($ensure_consistency = false){
19
  if( $ensure_consistency || is_null($this->wrapped_object) ){
20
- $this->wrapped_object = get_comment($this->container_id);
21
  }
22
  return $this->wrapped_object;
23
  }
@@ -38,6 +38,7 @@ class blcComment extends blcContainer{
38
  }
39
 
40
  $data = (array)$this->wrapped_object;
 
41
  if ( wp_update_comment($data) ){
42
  return true;
43
  } else {
15
  * @param bool $ensure_consistency
16
  * @return object The comment.
17
  */
18
+ function &get_wrapped_object($ensure_consistency = false){
19
  if( $ensure_consistency || is_null($this->wrapped_object) ){
20
+ $this->wrapped_object = &get_comment($this->container_id);
21
  }
22
  return $this->wrapped_object;
23
  }
38
  }
39
 
40
  $data = (array)$this->wrapped_object;
41
+ //FB::info($data, sprintf("Attempting to update comment %d with data", $this->container_id));
42
  if ( wp_update_comment($data) ){
43
  return true;
44
  } else {
includes/containers/custom_field.php CHANGED
@@ -347,7 +347,7 @@ class blcPostMetaManager extends blcContainerManager {
347
  //Set up the parseable fields
348
  $fields = array();
349
 
350
- $conf = blc_get_configuration();
351
  if ( is_array($conf->options['custom_fields']) ){
352
  foreach($conf->options['custom_fields'] as $meta_name){
353
  $fields[$meta_name] = 'metadata';
@@ -481,7 +481,7 @@ class blcPostMetaManager extends blcContainerManager {
481
 
482
  //Metadata changes only matter to us if the modified key
483
  //is one that the user wants checked.
484
- $conf = blc_get_configuration();
485
  if ( !is_array($conf->options['custom_fields']) ){
486
  return;
487
  }
347
  //Set up the parseable fields
348
  $fields = array();
349
 
350
+ $conf = & blc_get_configuration();
351
  if ( is_array($conf->options['custom_fields']) ){
352
  foreach($conf->options['custom_fields'] as $meta_name){
353
  $fields[$meta_name] = 'metadata';
481
 
482
  //Metadata changes only matter to us if the modified key
483
  //is one that the user wants checked.
484
+ $conf = & blc_get_configuration();
485
  if ( !is_array($conf->options['custom_fields']) ){
486
  return;
487
  }
includes/containers/post.php CHANGED
@@ -121,9 +121,9 @@ class blcPostContainer extends blcContainer {
121
  * @param bool $ensure_consistency Set this to true to ignore the cached $wrapped_object value and retrieve an up-to-date copy of the wrapped object from the DB (or WP's internal cache).
122
  * @return object Post data.
123
  */
124
- function get_wrapped_object($ensure_consistency = false){
125
  if( $ensure_consistency || is_null($this->wrapped_object) ){
126
- $this->wrapped_object = get_post($this->container_id);
127
  }
128
  return $this->wrapped_object;
129
  }
@@ -208,7 +208,7 @@ class blcPostContainerManager extends blcContainerManager {
208
  add_action('untrash_post', array(&$this,'post_saved'));
209
 
210
  //Highlight and nofollow broken links in posts & pages
211
- $this->_conf = blc_get_configuration();
212
  if ( $this->_conf->options['mark_broken_links'] || $this->_conf->options['nofollow_broken_links'] ){
213
  add_filter( 'the_content', array(&$this,'hook_the_content') );
214
  if ( $this->_conf->options['mark_broken_links'] && !empty( $this->_conf->options['broken_link_css'] ) ){
@@ -398,7 +398,7 @@ class blcPostContainerManager extends blcContainerManager {
398
  }
399
 
400
  //Iterate over all HTML links and modify the broken ones
401
- $parser = blc_get_parser('link');
402
  $content = $parser->multi_edit($content, array(&$this, 'highlight_broken_link'), $broken_link_urls);
403
 
404
  return $content;
@@ -454,7 +454,7 @@ class blcPostContainerManager extends blcContainerManager {
454
  * @return void
455
  */
456
  function hook_wp_head(){
457
- $conf = blc_get_configuration();
458
  echo '<style type="text/css">',$conf->options['broken_link_css'],'</style>';
459
  }
460
  }
121
  * @param bool $ensure_consistency Set this to true to ignore the cached $wrapped_object value and retrieve an up-to-date copy of the wrapped object from the DB (or WP's internal cache).
122
  * @return object Post data.
123
  */
124
+ function &get_wrapped_object($ensure_consistency = false){
125
  if( $ensure_consistency || is_null($this->wrapped_object) ){
126
+ $this->wrapped_object = &get_post($this->container_id);
127
  }
128
  return $this->wrapped_object;
129
  }
208
  add_action('untrash_post', array(&$this,'post_saved'));
209
 
210
  //Highlight and nofollow broken links in posts & pages
211
+ $this->_conf = & blc_get_configuration();
212
  if ( $this->_conf->options['mark_broken_links'] || $this->_conf->options['nofollow_broken_links'] ){
213
  add_filter( 'the_content', array(&$this,'hook_the_content') );
214
  if ( $this->_conf->options['mark_broken_links'] && !empty( $this->_conf->options['broken_link_css'] ) ){
398
  }
399
 
400
  //Iterate over all HTML links and modify the broken ones
401
+ $parser = &blc_get_parser('link');
402
  $content = $parser->multi_edit($content, array(&$this, 'highlight_broken_link'), $broken_link_urls);
403
 
404
  return $content;
454
  * @return void
455
  */
456
  function hook_wp_head(){
457
+ $conf = & blc_get_configuration();
458
  echo '<style type="text/css">',$conf->options['broken_link_css'],'</style>';
459
  }
460
  }
includes/instances.php CHANGED
@@ -310,9 +310,9 @@ class blcLinkInstance {
310
  *
311
  * @return blcContainer|null
312
  */
313
- function get_container(){
314
  if( is_null($this->_container) ){
315
- $this->_container = blc_get_container( array($this->container_type, $this->container_id) );
316
  }
317
 
318
  return $this->_container;
@@ -344,9 +344,9 @@ class blcLinkInstance {
344
  *
345
  * @return blcParser|null
346
  */
347
- function get_parser(){
348
  if ( is_null($this->_parser) ){
349
- $this->_parser = blc_get_parser($this->parser_type);
350
  }
351
 
352
  return $this->_parser;
@@ -373,7 +373,7 @@ class blcLinkInstance {
373
  *
374
  * @return blcLink|null
375
  */
376
- function get_link(){
377
  if ( !is_null($this->_link) ){
378
  return $this->_link;
379
  }
@@ -482,9 +482,9 @@ function blc_get_instances( $link_ids, $purpose = '', $load_containers = false,
482
 
483
  //Skip instances that reference containers or parsers that aren't currently loaded
484
  if ( !$include_invalid ){
485
- $containerRegistry = blcContainerRegistry::getInstance();
486
  $loaded_containers = array_keys($containerRegistry->get_registered_containers());
487
- $parserRegistry = blcParserRegistry::getInstance();
488
  $loaded_parsers = array_keys($parserRegistry->get_registered_parsers());
489
 
490
  $loaded_containers = array_map(array(&$wpdb, 'escape'), $loaded_containers);
@@ -550,9 +550,9 @@ function blc_get_usable_instance_count(){
550
  $q = "SELECT COUNT(instance_id) FROM {$wpdb->prefix}blc_instances WHERE 1";
551
 
552
  //Skip instances that reference containers or parsers that aren't currently loaded
553
- $containerRegistry = blcContainerRegistry::getInstance();
554
  $loaded_containers = array_keys($containerRegistry->get_registered_containers());
555
- $parserRegistry = blcParserRegistry::getInstance();
556
  $loaded_parsers = array_keys($parserRegistry->get_registered_parsers());
557
 
558
  $loaded_containers = array_map(array(&$wpdb, 'escape'), $loaded_containers);
@@ -581,9 +581,9 @@ function blc_cleanup_instances(){
581
  synch.container_id IS NULL";
582
  $rez = $wpdb->query($q);
583
 
584
- $containerRegistry = blcContainerRegistry::getInstance();
585
  $loaded_containers = array_keys($containerRegistry->get_registered_containers());
586
- $parserRegistry = blcParserRegistry::getInstance();
587
  $loaded_parsers = array_keys($parserRegistry->get_registered_parsers());
588
 
589
  $loaded_containers = array_map(array(&$wpdb, 'escape'), $loaded_containers);
310
  *
311
  * @return blcContainer|null
312
  */
313
+ function &get_container(){
314
  if( is_null($this->_container) ){
315
+ $this->_container = & blc_get_container( array($this->container_type, $this->container_id) );
316
  }
317
 
318
  return $this->_container;
344
  *
345
  * @return blcParser|null
346
  */
347
+ function &get_parser(){
348
  if ( is_null($this->_parser) ){
349
+ $this->_parser = & blc_get_parser($this->parser_type);
350
  }
351
 
352
  return $this->_parser;
373
  *
374
  * @return blcLink|null
375
  */
376
+ function &get_link(){
377
  if ( !is_null($this->_link) ){
378
  return $this->_link;
379
  }
482
 
483
  //Skip instances that reference containers or parsers that aren't currently loaded
484
  if ( !$include_invalid ){
485
+ $containerRegistry = & blcContainerRegistry::getInstance();
486
  $loaded_containers = array_keys($containerRegistry->get_registered_containers());
487
+ $parserRegistry = & blcParserRegistry::getInstance();
488
  $loaded_parsers = array_keys($parserRegistry->get_registered_parsers());
489
 
490
  $loaded_containers = array_map(array(&$wpdb, 'escape'), $loaded_containers);
550
  $q = "SELECT COUNT(instance_id) FROM {$wpdb->prefix}blc_instances WHERE 1";
551
 
552
  //Skip instances that reference containers or parsers that aren't currently loaded
553
+ $containerRegistry = & blcContainerRegistry::getInstance();
554
  $loaded_containers = array_keys($containerRegistry->get_registered_containers());
555
+ $parserRegistry = & blcParserRegistry::getInstance();
556
  $loaded_parsers = array_keys($parserRegistry->get_registered_parsers());
557
 
558
  $loaded_containers = array_map(array(&$wpdb, 'escape'), $loaded_containers);
581
  synch.container_id IS NULL";
582
  $rez = $wpdb->query($q);
583
 
584
+ $containerRegistry = & blcContainerRegistry::getInstance();
585
  $loaded_containers = array_keys($containerRegistry->get_registered_containers());
586
+ $parserRegistry = & blcParserRegistry::getInstance();
587
  $loaded_parsers = array_keys($parserRegistry->get_registered_parsers());
588
 
589
  $loaded_containers = array_map(array(&$wpdb, 'escape'), $loaded_containers);
includes/links.php CHANGED
@@ -186,7 +186,7 @@ class blcLink {
186
  );
187
 
188
 
189
- $checker = blc_get_checker_for($this->url);
190
 
191
  if ( is_null($checker) ){
192
  //Oops, there are no checker implementations that can handle this link.
@@ -823,7 +823,7 @@ class blcLinkQuery {
823
  $this->__construct();
824
  }
825
 
826
- function getInstance(){
827
  static $instance = null;
828
  if ( is_null($instance) ){
829
  $instance = new blcLinkQuery;
@@ -1011,9 +1011,9 @@ class blcLinkQuery {
1011
  if ( empty($params['include_invalid']) ){
1012
  $join_instances = true;
1013
 
1014
- $containerRegistry = blcContainerRegistry::getInstance();
1015
  $loaded_containers = array_keys($containerRegistry->get_registered_containers());
1016
- $parserRegistry = blcParserRegistry::getInstance();
1017
  $loaded_parsers = array_keys($parserRegistry->get_registered_parsers());
1018
 
1019
  if ( empty($s_parser_type) ){
@@ -1379,7 +1379,7 @@ class blcLinkQuery {
1379
  * @return int|array Either an array of blcLink objects, or the number of results for the query.
1380
  */
1381
  function blc_get_links($params = null){
1382
- $instance = blcLinkQuery::getInstance();
1383
  return $instance->get_links($params, $purpose);
1384
  }
1385
 
186
  );
187
 
188
 
189
+ $checker = & blc_get_checker_for($this->url);
190
 
191
  if ( is_null($checker) ){
192
  //Oops, there are no checker implementations that can handle this link.
823
  $this->__construct();
824
  }
825
 
826
+ function &getInstance(){
827
  static $instance = null;
828
  if ( is_null($instance) ){
829
  $instance = new blcLinkQuery;
1011
  if ( empty($params['include_invalid']) ){
1012
  $join_instances = true;
1013
 
1014
+ $containerRegistry = & blcContainerRegistry::getInstance();
1015
  $loaded_containers = array_keys($containerRegistry->get_registered_containers());
1016
+ $parserRegistry = & blcParserRegistry::getInstance();
1017
  $loaded_parsers = array_keys($parserRegistry->get_registered_parsers());
1018
 
1019
  if ( empty($s_parser_type) ){
1379
  * @return int|array Either an array of blcLink objects, or the number of results for the query.
1380
  */
1381
  function blc_get_links($params = null){
1382
+ $instance = & blcLinkQuery::getInstance();
1383
  return $instance->get_links($params, $purpose);
1384
  }
1385
 
includes/parsers.php CHANGED
@@ -20,7 +20,7 @@ class blcParserRegistry {
20
  *
21
  * @return blcParserRegistry
22
  */
23
- function getInstance(){
24
  static $instance = null;
25
  if ( is_null($instance) ){
26
  $instance = new blcParserRegistry;
@@ -61,7 +61,7 @@ class blcParserRegistry {
61
  * @param string $parser_type
62
  * @return blcParser|null
63
  */
64
- function get_parser( $parser_type ){
65
  if ( isset($this->registered_parsers[$parser_type]) ){
66
  return $this->registered_parsers[$parser_type];
67
  } else {
@@ -92,7 +92,7 @@ class blcParserRegistry {
92
  }
93
 
94
  //Create the parser registry singleton.
95
- $GLOBALS['blc_parser_registry'] = blcParserRegistry::getInstance();
96
 
97
 
98
  /**
@@ -343,7 +343,7 @@ class blcParser {
343
  * @return bool
344
  */
345
  function blc_register_parser( $parser_type, $class_name ) {
346
- $instance = blcParserRegistry::getInstance();
347
  return $instance->register_parser($parser_type, $class_name);
348
  }
349
 
@@ -355,8 +355,8 @@ function blc_register_parser( $parser_type, $class_name ) {
355
  * @param string $parser_type
356
  * @return blcParser|null
357
  */
358
- function blc_get_parser( $parser_type ){
359
- $instance = blcParserRegistry::getInstance();
360
  return $instance->get_parser($parser_type);
361
  }
362
 
@@ -370,7 +370,7 @@ function blc_get_parser( $parser_type ){
370
  * @return array of blcParser
371
  */
372
  function blc_get_parsers( $format, $container_type ){
373
- $instance = blcParserRegistry::getInstance();
374
  return $instance->get_parsers($format, $container_type);
375
  }
376
 
20
  *
21
  * @return blcParserRegistry
22
  */
23
+ function &getInstance(){
24
  static $instance = null;
25
  if ( is_null($instance) ){
26
  $instance = new blcParserRegistry;
61
  * @param string $parser_type
62
  * @return blcParser|null
63
  */
64
+ function &get_parser( $parser_type ){
65
  if ( isset($this->registered_parsers[$parser_type]) ){
66
  return $this->registered_parsers[$parser_type];
67
  } else {
92
  }
93
 
94
  //Create the parser registry singleton.
95
+ $GLOBALS['blc_parser_registry'] = & blcParserRegistry::getInstance();
96
 
97
 
98
  /**
343
  * @return bool
344
  */
345
  function blc_register_parser( $parser_type, $class_name ) {
346
+ $instance = & blcParserRegistry::getInstance();
347
  return $instance->register_parser($parser_type, $class_name);
348
  }
349
 
355
  * @param string $parser_type
356
  * @return blcParser|null
357
  */
358
+ function &blc_get_parser( $parser_type ){
359
+ $instance = & blcParserRegistry::getInstance();
360
  return $instance->get_parser($parser_type);
361
  }
362
 
370
  * @return array of blcParser
371
  */
372
  function blc_get_parsers( $format, $container_type ){
373
+ $instance = & blcParserRegistry::getInstance();
374
  return $instance->get_parsers($format, $container_type);
375
  }
376
 
includes/parsers/html_link.php CHANGED
@@ -166,7 +166,7 @@ class blcHTMLLink extends blcParser {
166
  return $link['#raw'];
167
  }
168
 
169
- $config = blc_get_configuration();
170
  if ( $config->options['mark_removed_links'] ){
171
  //Leave only the anchor text + the removed_link CSS class
172
  return '<span class="removed_link">' . $link['#link_text'] . '</span>';
166
  return $link['#raw'];
167
  }
168
 
169
+ $config = & blc_get_configuration();
170
  if ( $config->options['mark_removed_links'] ){
171
  //Leave only the anchor text + the removed_link CSS class
172
  return '<span class="removed_link">' . $link['#link_text'] . '</span>';
readme.txt CHANGED
@@ -1,9 +1,10 @@
1
  === Broken Link Checker ===
2
  Contributors: whiteshadow
 
3
  Tags: links, broken, maintenance, blogroll, custom fields, admin, comments, posts
4
  Requires at least: 2.9.0
5
  Tested up to: 3.0
6
- Stable tag: 0.9.4.1
7
 
8
  This plugin will check your posts, comments and other places for broken links and missing images and notify you if any are found.
9
 
@@ -78,6 +79,25 @@ To upgrade your installation
78
 
79
  *This is an automatically generated changelog*
80
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
81
  = 0.9.4 =
82
  * Fixed missing post and comment edit links in email notifications.
83
  * Updated Danish translation.
@@ -405,3 +425,7 @@ To upgrade your installation
405
  = 0.1 =
406
  * *There are no release notes for this version*
407
 
 
 
 
 
1
  === Broken Link Checker ===
2
  Contributors: whiteshadow
3
+ Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A6P9S6CE3SRSW
4
  Tags: links, broken, maintenance, blogroll, custom fields, admin, comments, posts
5
  Requires at least: 2.9.0
6
  Tested up to: 3.0
7
+ Stable tag: 0.9.4.4
8
 
9
  This plugin will check your posts, comments and other places for broken links and missing images and notify you if any are found.
10
 
79
 
80
  *This is an automatically generated changelog*
81
 
82
+ = 0.9.4.4 =
83
+ * Fixed "Edit URL" and "Unlink" not working on PHP4 servers.
84
+
85
+ = 0.9.4.3 =
86
+ * Another PHP 4 fix. Considering dropping support for PHP4 in light of the counterintuitive workarounds required to make perfectly valid PHP5 code work in that ghastly thing.
87
+ * Added a partial workaround for sites that have use strange DB\_CHARSET settings.
88
+
89
+ = 0.9.4.2 =
90
+ * Added more debugging data to the "Show debug info" table.
91
+ * Added missing indexes to the instance table.
92
+ * Yet more PHP4 compatibility fixes.
93
+ * Added a notification bubble with the current number of broken links to the Tools -> Broken Links menu item.
94
+
95
+ = 0.9.4.1 =
96
+ * Fixed PHP 4 incompatibilities introduced in the previous release.
97
+ * Fixed bulk unlink.
98
+ * Updated Italian translation.
99
+ * Updated Danish translation.
100
+
101
  = 0.9.4 =
102
  * Fixed missing post and comment edit links in email notifications.
103
  * Updated Danish translation.
425
  = 0.1 =
426
  * *There are no release notes for this version*
427
 
428
+ == Upgrade Notice ==
429
+
430
+ = 0.9.4.2 =
431
+ Fixes a major PHP4 compatibility problem introduced in version 0.9.4 and adds a notification bubble with the current broken link count to the "Broken Links" menu.