WordPress.org

Plugin Directory

Changeset 460386


Ignore:
Timestamp:
11/07/11 23:26:43 (2 years ago)
Author:
F J Kaiser
Message:
 
Location:
internal-link-checker/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • internal-link-checker/trunk/internal-links.php

    r385970 r460386  
    66Author:         Franz Josef Kaiser 
    77Author URI:     https://github.com/franz-josef-kaiser 
    8 Version:        0.1.3. 
     8Version:        0.2 
    99License:        GPL v2 - http://www.gnu.org/licenses/old-licenses/gpl-2.0.html 
    1010 
    11     (c) Copyright 2012 - 201X by AUTHOR 
     11    (c) Copyright 2010 - 2011 by Franz Josef Kaiser 
    1212 
    1313    This program is free software; you can redistribute it and/or modify 
     
    2626*/ 
    2727 
    28 // Secure: doesn't allow to load this file directly 
    29 if( ! class_exists('WP') )  
     28// Secure: don't allow to load this file directly 
     29if( ! class_exists( 'WP' ) )  
    3030{ 
    3131    header( 'Status: 403 Forbidden' ); 
     
    3434} 
    3535 
    36 if ( ! defined ( 'LINKCHECKER_TEXTDOMAIN' ) ) 
    37     define( 'LINKCHECKER_TEXTDOMAIN', 'linkchecker_textdomain' ); 
     36 
     37 
     38// init class 
     39if ( is_admin() ) 
     40    add_action( 'init', array( 'oxoLinkCheck', 'init' ) ); 
     41 
     42if ( ! class_exists( 'oxoLinkCheck' ) ) 
     43{ 
     44/** 
     45 * @author Franz Josef Kaiser 
     46 */ 
     47class oxoLinkCheck 
     48{ 
     49    // Counter var for linkin posts 
     50    public $counter; 
     51 
     52    // Container for sql result 
     53    public $sql_result; 
     54 
     55    // Constant for translation .po/.mo files 
     56    const TEXTDOMAIN = 'linkchecker_textdomain'; 
     57 
     58    /** 
     59     * Init - calls the class 
     60     * @return void 
     61     */ 
     62    static public function init() 
     63    { 
     64        $class = __CLASS__ ; 
     65 
     66        // Class available in global scope 
     67        if ( empty ( $GLOBALS[ $class ] ) ) 
     68            $GLOBALS[ $class ] = new $class; 
     69    } 
     70 
     71 
     72    /** 
     73     * Constructor 
     74     */ 
     75    public function __construct() 
     76    { 
     77        add_action( 'admin_init', array( &$this, 'lang' ) ); 
     78        add_action( 'add_meta_boxes', array( &$this, 'add_meta_box' ) ); 
     79    } 
     80 
     81    /** 
     82     * Loads the translation files 
     83     *  
     84     * @return void 
     85     */ 
     86    function lang() 
     87    { 
     88        $dir    = get_stylesheet_directory(); 
     89        $locale = get_locale(); 
     90        $file   = "{$dir}/lang/{$locale}.php"; 
     91 
     92        // Translation 
     93        load_theme_textdomain( 'LANG', "{$dir}/lang" ); 
     94 
     95        locate_template( $file, true ); 
     96    } 
     97 
    3898 
    3999    /** 
    40100     * Adds the meta box to the post edit screen 
     101      
     102     * @return void 
    41103     */ 
    42     function check_post_links_meta_box() 
     104    function add_meta_box() 
    43105    { 
     106        // do math first 
     107        $this->get_sql_result(); 
     108 
     109        // add meta box 
    44110        add_meta_box(  
    45111            '', 
    46             __( 'Posts linking to this posts internally:', LINKCHECKER_TEXTDOMAIN ), 
    47             'check_post_links_meta_box_cb', 
     112            sprintf( __( 'Posts linking to this posts internally: %d', self::TEXTDOMAIN ), $this->counter ), 
     113            array( &$this, 'meta_box_cb' ), 
    48114            'post'  
    49115        ); 
    50116    } 
    51     add_action( 'add_meta_boxes', 'check_post_links_meta_box' ); 
     117 
    52118 
    53119    /** 
    54      * Adds the meta box content that displays the post links 
     120     * SQL Query 
     121     * Adds content to two class vars: The resulting array & the counter 
     122     * @return (object) $links  
    55123     */ 
    56     function check_post_links_meta_box_cb() 
     124    public function get_sql_result() 
    57125    { 
    58         global $wpdb, $post; 
    59  
    60         $links = $wpdb->get_results( " 
     126        // get_permalink() cares about rewrite rules 
     127        $current_link = get_permalink( $GLOBALS['post']->ID ); 
     128        // sql 
     129        $links = $GLOBALS['wpdb']->get_results( " 
    61130            SELECT ID, post_title, post_date, post_content  
    62             FROM wp_posts  
     131            FROM {$GLOBALS['wpdb']->prefix}posts  
    63132            WHERE post_content  
    64             LIKE '%".$post->post_title."%' OR '%".$post->post_name."%'  
     133            LIKE '%{$current_link}%'  
    65134            ORDER BY post_date 
    66135        " ); 
     136 
     137        // Counter for meta box title 
     138        $this->counter = count( $links ); 
     139 
     140        return $this->sql_result = $links; 
     141    } 
     142 
     143 
     144    /** 
     145     * Meta Box callback function 
     146     *  
     147     * @return (string) $output 
     148     */ 
     149    function meta_box_cb() 
     150    { 
     151        $links = $this->sql_result; 
    67152 
    68153        $result = array(); 
    69154        if ( $links ) 
    70155        { 
    71             foreach( $links as $link ) 
     156            foreach( $links as $linkin_post ) 
    72157            { 
    73                 $result[] = '<a href="'.get_permalink( $post->ID ).'">'.$link->post_title.'</a>'; 
     158                # @todo Make links unique 
     159                $link = get_permalink( $linkin_post->ID ); 
     160                $result[] = "<a href='$link'>{$linkin_post->post_title}</a>"; 
    74161            } 
    75162        } 
    76163        else  
    77164        { 
    78             return _e( 'No posts are linking to this post.', LINKCHECKER_TEXTDOMAIN ); 
     165            return _e( 'No posts are linking to this post.', self::TEXTDOMAIN ); 
    79166        } 
    80167 
     
    87174                foreach ( $result as $link ) 
    88175                { 
    89                     $output .= '<li>'.$link.'</li>'; 
     176                    $output .= "<li>{$link}</li>"; 
    90177                } 
    91178            $output .= '</ul>'; 
     
    94181        return print $output; 
    95182    } 
    96     add_action( 'add_meta_boxes', 'check_post_links_meta_box' ); 
    97 ?> 
     183} // END Class oxoLinkCheck 
     184 
     185} // endif; 
  • internal-link-checker/trunk/readme.textile

    r385970 r460386  
    11h2. Internal Link Checker 
    22 
    3 version: _v0.1.3._ 
     3version: _v0.2_ 
    44 
    5 Adds a meta box to the post edit screen that shows all internal links from other posts to the currently displayed post. This way you can easily check if you should fix links before deleting a post. There are no options needed. The plugin works out of the box. 
     5**Updates** available via the wp.org plugin repository. 
     6 
     7Adds a meta box to the post edit screen that shows all internal links from other posts to the currently displayed post. This way you can easily check if you should fix links before deleting a post. There are no options needed. The plugin works out of the box - **just activate**! 
    68 
    79---------------------------------------------------------------- 
     
    4547h3. Languages 
    4648 
    47 Translation ready 
     49Translation ready - So far the translation files don't exist. If you want to help, please contact me. 
    4850 
    4951---------------------------------------------------------------- 
     
    5153h4. Changelog 
    5254 
    53 * _v0.1._ first version 
    54 * _v0.1.1._ should now work with post titles & post slugs/names 
    55 * _v0.1.2._ meta box content now displays inside an unordered list 
    56 * _v0.1.2._ added screenshot, readme.txt for wp.org repo & fixed not echoing that there are no links 
     55* _v0.1._ First version 
     56* _v0.1.1._ Should now work with post titles & post slugs/names 
     57* _v0.1.2._ Meta box content now displays inside an unordered list 
     58* _v0.1.2._ Added screenshot, readme.txt for wp.org repo & fixed not echoing that there are no links 
     59* _v0.1.3._ Minor fixes 
     60* _v0.2._ Moved to a class, added translation files loading fn. 
  • internal-link-checker/trunk/readme.txt

    r386027 r460386  
    66Tags:               admin, link, links, meta, box, meta_box, missing, 404  
    77Requires at least:  0.x 
    8 Tested up to:       3.1.1 
    9 Stable tag:         0.1.3. 
     8Tested up to:       3.3 
     9Stable tag:         0.2 
    1010 
    1111== Description == 
     
    5151= Languages = 
    5252 
    53 Translation ready 
     53Translation ready - If you want to help translating, please contact me. 
    5454 
    5555== Changelog == 
    5656 
    5757= v0.1. = 
    58 first version 
     58First version 
    5959 
    6060= v0.1.1. = 
    61 should now work with post titles & post slugs/names. 
     61Should now work with post titles & post slugs/names. 
    6262 
    6363= v0.1.2. = 
    64 meta box content now displays inside an unordered list. 
     64Meta box content now displays inside an unordered list. 
    6565 
    6666= v0.1.3. = 
    67 added screenshot, readme.txt for wp.org repo & fixed not echoing if there are no links. 
     67Added screenshot, readme.txt for wp.org repo & fixed not echoing if there are no links. 
     68 
     69= v0.2. = 
     70Moved to class to clean up global namespace. 
     71Added next step for translations. 
    6872 
    6973== Screenshots == 
Note: See TracChangeset for help on using the changeset viewer.