WordPress.org

Plugin Directory

Changeset 593418


Ignore:
Timestamp:
09/01/12 15:31:28 (20 months ago)
Author:
F J Kaiser
Message:

v0.6.1 Major refactoring

Location:
internal-link-checker/trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • internal-link-checker/trunk/LICENSE.txt

    r385970 r593418  
    1             GNU GENERAL PUBLIC LICENSE 
    2                Version 2, June 1991 
    3  
    4  Copyright (C) 1989, 1991 Free Software Foundation, Inc., 
    5  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 
    6  Everyone is permitted to copy and distribute verbatim copies 
    7  of this license document, but changing it is not allowed. 
    8  
    9                 Preamble 
     1                    GNU GENERAL PUBLIC LICENSE 
     2                       Version 2, June 1991 
     3 
     4  //----------------------------------------------------------------------\\ 
     5  |                                                                        | 
     6  |  Copyright (C) 1989, 1991 Free Software Foundation, Inc.,              | 
     7  |  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA            | 
     8  |  Everyone is permitted to copy and distribute verbatim copies          | 
     9  |  of this license document, but changing it is not allowed.             | 
     10  |                                                                        | 
     11  \\----------------------------------------------------------------------// 
     12 
     13                         *** PREAMBLE *** 
    1014 
    1115  The licenses for most software are designed to take away your 
    12 freedom to share and change it.  By contrast, the GNU General Public 
    13 License is intended to guarantee your freedom to share and change free 
    14 software--to make sure the software is free for all its users.  This 
    15 General Public License applies to most of the Free Software 
    16 Foundation's software and to any other program whose authors commit to 
    17 using it.  (Some other Free Software Foundation software is covered by 
    18 the GNU Lesser General Public License instead.)  You can apply it to 
    19 your programs, too. 
    20  
    21   When we speak of free software, we are referring to freedom, not 
    22 price.  Our General Public Licenses are designed to make sure that you 
    23 have the freedom to distribute copies of free software (and charge for 
    24 this service if you wish), that you receive source code or can get it 
    25 if you want it, that you can change the software or use pieces of it 
    26 in new free programs; and that you know you can do these things. 
    27  
    28   To protect your rights, we need to make restrictions that forbid 
    29 anyone to deny you these rights or to ask you to surrender the rights. 
    30 These restrictions translate to certain responsibilities for you if you 
    31 distribute copies of the software, or if you modify it. 
    32  
    33   For example, if you distribute copies of such a program, whether 
    34 gratis or for a fee, you must give the recipients all the rights that 
    35 you have.  You must make sure that they, too, receive or can get the 
    36 source code.  And you must show them these terms so they know their 
    37 rights. 
    38  
    39   We protect your rights with two steps: (1) copyright the software, and 
    40 (2) offer you this license which gives you legal permission to copy, 
    41 distribute and/or modify the software. 
    42  
    43   Also, for each author's protection and ours, we want to make certain 
    44 that everyone understands that there is no warranty for this free 
    45 software.  If the software is modified by someone else and passed on, we 
    46 want its recipients to know that what they have is not the original, so 
    47 that any problems introduced by others will not reflect on the original 
    48 authors' reputations. 
    49  
    50   Finally, any free program is threatened constantly by software 
    51 patents.  We wish to avoid the danger that redistributors of a free 
    52 program will individually obtain patent licenses, in effect making the 
    53 program proprietary.  To prevent this, we have made it clear that any 
    54 patent must be licensed for everyone's free use or not licensed at all. 
    55  
    56   The precise terms and conditions for copying, distribution and 
    57 modification follow. 
    58  
    59             GNU GENERAL PUBLIC LICENSE 
    60    TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 
    61  
    62   0. This License applies to any program or other work which contains 
    63 a notice placed by the copyright holder saying it may be distributed 
    64 under the terms of this General Public License.  The "Program", below, 
    65 refers to any such program or work, and a "work based on the Program" 
    66 means either the Program or any derivative work under copyright law: 
    67 that is to say, a work containing the Program or a portion of it, 
    68 either verbatim or with modifications and/or translated into another 
    69 language.  (Hereinafter, translation is included without limitation in 
    70 the term "modification".)  Each licensee is addressed as "you". 
    71  
    72 Activities other than copying, distribution and modification are not 
    73 covered by this License; they are outside its scope.  The act of 
    74 running the Program is not restricted, and the output from the Program 
    75 is covered only if its contents constitute a work based on the 
    76 Program (independent of having been made by running the Program). 
    77 Whether that is true depends on what the Program does. 
    78  
    79   1. You may copy and distribute verbatim copies of the Program's 
    80 source code as you receive it, in any medium, provided that you 
    81 conspicuously and appropriately publish on each copy an appropriate 
    82 copyright notice and disclaimer of warranty; keep intact all the 
    83 notices that refer to this License and to the absence of any warranty; 
    84 and give any other recipients of the Program a copy of this License 
    85 along with the Program. 
    86  
    87 You may charge a fee for the physical act of transferring a copy, and 
    88 you may at your option offer warranty protection in exchange for a fee. 
    89  
    90   2. You may modify your copy or copies of the Program or any portion 
    91 of it, thus forming a work based on the Program, and copy and 
    92 distribute such modifications or work under the terms of Section 1 
    93 above, provided that you also meet all of these conditions: 
    94  
    95     a) You must cause the modified files to carry prominent notices 
    96     stating that you changed the files and the date of any change. 
    97  
    98     b) You must cause any work that you distribute or publish, that in 
    99     whole or in part contains or is derived from the Program or any 
    100     part thereof, to be licensed as a whole at no charge to all third 
    101     parties under the terms of this License. 
    102  
    103     c) If the modified program normally reads commands interactively 
    104     when run, you must cause it, when started running for such 
    105     interactive use in the most ordinary way, to print or display an 
    106     announcement including an appropriate copyright notice and a 
    107     notice that there is no warranty (or else, saying that you provide 
    108     a warranty) and that users may redistribute the program under 
    109     these conditions, and telling the user how to view a copy of this 
    110     License.  (Exception: if the Program itself is interactive but 
    111     does not normally print such an announcement, your work based on 
    112     the Program is not required to print an announcement.) 
    113  
    114 These requirements apply to the modified work as a whole.  If 
    115 identifiable sections of that work are not derived from the Program, 
    116 and can be reasonably considered independent and separate works in 
    117 themselves, then this License, and its terms, do not apply to those 
    118 sections when you distribute them as separate works.  But when you 
    119 distribute the same sections as part of a whole which is a work based 
    120 on the Program, the distribution of the whole must be on the terms of 
    121 this License, whose permissions for other licensees extend to the 
    122 entire whole, and thus to each and every part regardless of who wrote it. 
    123  
    124 Thus, it is not the intent of this section to claim rights or contest 
    125 your rights to work written entirely by you; rather, the intent is to 
    126 exercise the right to control the distribution of derivative or 
    127 collective works based on the Program. 
    128  
    129 In addition, mere aggregation of another work not based on the Program 
    130 with the Program (or with a work based on the Program) on a volume of 
    131 a storage or distribution medium does not bring the other work under 
    132 the scope of this License. 
    133  
    134   3. You may copy and distribute the Program (or a work based on it, 
    135 under Section 2) in object code or executable form under the terms of 
    136 Sections 1 and 2 above provided that you also do one of the following: 
    137  
    138     a) Accompany it with the complete corresponding machine-readable 
    139     source code, which must be distributed under the terms of Sections 
    140     1 and 2 above on a medium customarily used for software interchange; or, 
    141  
    142     b) Accompany it with a written offer, valid for at least three 
    143     years, to give any third party, for a charge no more than your 
    144     cost of physically performing source distribution, a complete 
    145     machine-readable copy of the corresponding source code, to be 
    146     distributed under the terms of Sections 1 and 2 above on a medium 
    147     customarily used for software interchange; or, 
    148  
    149     c) Accompany it with the information you received as to the offer 
    150     to distribute corresponding source code.  (This alternative is 
    151     allowed only for noncommercial distribution and only if you 
    152     received the program in object code or executable form with such 
    153     an offer, in accord with Subsection b above.) 
    154  
    155 The source code for a work means the preferred form of the work for 
    156 making modifications to it.  For an executable work, complete source 
    157 code means all the source code for all modules it contains, plus any 
    158 associated interface definition files, plus the scripts used to 
    159 control compilation and installation of the executable.  However, as a 
    160 special exception, the source code distributed need not include 
    161 anything that is normally distributed (in either source or binary 
    162 form) with the major components (compiler, kernel, and so on) of the 
    163 operating system on which the executable runs, unless that component 
    164 itself accompanies the executable. 
    165  
    166 If distribution of executable or object code is made by offering 
    167 access to copy from a designated place, then offering equivalent 
    168 access to copy the source code from the same place counts as 
    169 distribution of the source code, even though third parties are not 
    170 compelled to copy the source along with the object code. 
    171  
    172   4. You may not copy, modify, sublicense, or distribute the Program 
    173 except as expressly provided under this License.  Any attempt 
    174 otherwise to copy, modify, sublicense or distribute the Program is 
    175 void, and will automatically terminate your rights under this License. 
    176 However, parties who have received copies, or rights, from you under 
    177 this License will not have their licenses terminated so long as such 
    178 parties remain in full compliance. 
    179  
    180   5. You are not required to accept this License, since you have not 
    181 signed it.  However, nothing else grants you permission to modify or 
    182 distribute the Program or its derivative works.  These actions are 
    183 prohibited by law if you do not accept this License.  Therefore, by 
    184 modifying or distributing the Program (or any work based on the 
    185 Program), you indicate your acceptance of this License to do so, and 
    186 all its terms and conditions for copying, distributing or modifying 
    187 the Program or works based on it. 
    188  
    189   6. Each time you redistribute the Program (or any work based on the 
    190 Program), the recipient automatically receives a license from the 
    191 original licensor to copy, distribute or modify the Program subject to 
    192 these terms and conditions.  You may not impose any further 
    193 restrictions on the recipients' exercise of the rights granted herein. 
    194 You are not responsible for enforcing compliance by third parties to 
    195 this License. 
    196  
    197   7. If, as a consequence of a court judgment or allegation of patent 
    198 infringement or for any other reason (not limited to patent issues), 
    199 conditions are imposed on you (whether by court order, agreement or 
    200 otherwise) that contradict the conditions of this License, they do not 
    201 excuse you from the conditions of this License.  If you cannot 
    202 distribute so as to satisfy simultaneously your obligations under this 
    203 License and any other pertinent obligations, then as a consequence you 
    204 may not distribute the Program at all.  For example, if a patent 
    205 license would not permit royalty-free redistribution of the Program by 
    206 all those who receive copies directly or indirectly through you, then 
    207 the only way you could satisfy both it and this License would be to 
    208 refrain entirely from distribution of the Program. 
    209  
    210 If any portion of this section is held invalid or unenforceable under 
    211 any particular circumstance, the balance of the section is intended to 
    212 apply and the section as a whole is intended to apply in other 
    213 circumstances. 
    214  
    215 It is not the purpose of this section to induce you to infringe any 
    216 patents or other property right claims or to contest validity of any 
    217 such claims; this section has the sole purpose of protecting the 
    218 integrity of the free software distribution system, which is 
    219 implemented by public license practices.  Many people have made 
    220 generous contributions to the wide range of software distributed 
    221 through that system in reliance on consistent application of that 
    222 system; it is up to the author/donor to decide if he or she is willing 
    223 to distribute software through any other system and a licensee cannot 
    224 impose that choice. 
    225  
    226 This section is intended to make thoroughly clear what is believed to 
    227 be a consequence of the rest of this License. 
    228  
    229   8. If the distribution and/or use of the Program is restricted in 
    230 certain countries either by patents or by copyrighted interfaces, the 
    231 original copyright holder who places the Program under this License 
    232 may add an explicit geographical distribution limitation excluding 
    233 those countries, so that distribution is permitted only in or among 
    234 countries not thus excluded.  In such case, this License incorporates 
    235 the limitation as if written in the body of this License. 
    236  
    237   9. The Free Software Foundation may publish revised and/or new versions 
    238 of the General Public License from time to time.  Such new versions will 
    239 be similar in spirit to the present version, but may differ in detail to 
    240 address new problems or concerns. 
    241  
    242 Each version is given a distinguishing version number.  If the Program 
    243 specifies a version number of this License which applies to it and "any 
    244 later version", you have the option of following the terms and conditions 
    245 either of that version or of any later version published by the Free 
    246 Software Foundation.  If the Program does not specify a version number of 
    247 this License, you may choose any version ever published by the Free Software 
    248 Foundation. 
    249  
    250   10. If you wish to incorporate parts of the Program into other free 
    251 programs whose distribution conditions are different, write to the author 
    252 to ask for permission.  For software which is copyrighted by the Free 
    253 Software Foundation, write to the Free Software Foundation; we sometimes 
    254 make exceptions for this.  Our decision will be guided by the two goals 
    255 of preserving the free status of all derivatives of our free software and 
    256 of promoting the sharing and reuse of software generally. 
    257  
    258                 NO WARRANTY 
    259  
    260   11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY 
    261 FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN 
    262 OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES 
    263 PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED 
    264 OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
    265 MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS 
    266 TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE 
    267 PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, 
    268 REPAIR OR CORRECTION. 
    269  
    270   12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 
    271 WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR 
    272 REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, 
    273 INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING 
    274 OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED 
    275 TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY 
    276 YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER 
    277 PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE 
    278 POSSIBILITY OF SUCH DAMAGES. 
    279  
    280              END OF TERMS AND CONDITIONS 
    281  
    282         How to Apply These Terms to Your New Programs 
     16  freedom to share and change it. By contrast, the GNU General Public 
     17  License is intended to guarantee your freedom to share and change free 
     18  software - to make sure the software is free for all its users. This 
     19  General Public License applies to most of the Free Software 
     20  Foundation's software and to any other program whose authors commit to 
     21  using it. (Some other Free Software Foundation software is covered by 
     22  the GNU Lesser General Public License instead.) You can apply it to 
     23  your programs, too. 
     24 
     25    When we speak of free software, we are referring to freedom, not 
     26  price. Our General Public Licenses are designed to make sure that you 
     27  have the freedom to distribute copies of free software (and charge for 
     28  this service if you wish), that you receive source code or can get it 
     29  if you want it, that you can change the software or use pieces of it 
     30  in new free programs; and that you know you can do these things. 
     31 
     32    To protect your rights, we need to make restrictions that forbid 
     33  anyone to deny you these rights or to ask you to surrender the rights. 
     34  These restrictions translate to certain responsibilities for you if you 
     35  distribute copies of the software, or if you modify it. 
     36 
     37    For example, if you distribute copies of such a program, whether 
     38  gratis or for a fee, you must give the recipients all the rights that 
     39  you have. You must make sure that they, too, receive or can get the 
     40  source code. And you must show them these terms so they know their 
     41  rights. 
     42 
     43    We protect your rights with two steps: (1) copyright the software, and 
     44  (2) offer you this license which gives you legal permission to copy, 
     45  distribute and/or modify the software. 
     46 
     47    Also, for each author's protection and ours, we want to make certain 
     48  that everyone understands that there is no warranty for this free 
     49  software. If the software is modified by someone else and passed on, we 
     50  want its recipients to know that what they have is not the original, so 
     51  that any problems introduced by others will not reflect on the original 
     52  authors' reputations. 
     53 
     54    Finally, any free program is threatened constantly by software 
     55  patents. We wish to avoid the danger that redistributors of a free 
     56  program will individually obtain patent licenses, in effect making the 
     57  program proprietary. To prevent this, we have made it clear that any 
     58  patent must be licensed for everyone's free use or not licensed at all. 
     59 
     60=========================== TERMS AND CONDITIONS =========================== 
     61 
     62The precise terms and conditions for copying, distribution and modification follow. 
     63 
     64  (0)----------------------------------------------------------------------- 
     65 
     66   This License applies to any program or other work which contains a notice  
     67   placed by the copyright holder saying it may be distributed under the terms  
     68   of this General Public License. The "Program", below, refers to any such  
     69   program or work, and a "work based on the Program" means either the Program  
     70   or any derivative work under copyright law: that is to say, a work containing 
     71   the Program or a portion of it, either verbatim or with modifications and/or 
     72   translated into another language. (Hereinafter, translation is included without 
     73   limitation in the term "modification".) Each licensee is addressed as "you". 
     74 
     75     Activities other than copying, distribution and modification are not covered 
     76   by this License; they are outside its scope. The act of running the Program is 
     77   not restricted, and the output from the Program is covered only if its contents 
     78   constitute a work based on the Program (independent of having been made by 
     79   running the Program). Whether that is true depends on what the Program does. 
     80 
     81  (1)----------------------------------------------------------------------- 
     82 
     83   You may copy and distribute verbatim copies of the Program's source code as  
     84   you receive it, in any medium, provided that you conspicuously and appropriately  
     85   publish on each copy an appropriate copyright notice and disclaimer of warranty;  
     86   keep intact all the notices that refer to this License and to the absence of any  
     87   warranty; and give any other recipients of the Program a copy of this License  
     88   along with the Program. 
     89 
     90     You may charge a fee for the physical act of transferring a copy, and you may at  
     91   your option offer warranty protection in exchange for a fee. 
     92 
     93  (2)----------------------------------------------------------------------- 
     94 
     95   You may modify your copy or copies of the Program or any portion of it, thus  
     96   forming a work based on the Program, and copy and distribute such modifications  
     97   or work under the terms of Section 1 above, provided that you also meet all of  
     98   these conditions: 
     99 
     100   a) You must cause the modified files to carry prominent notices stating  
     101      that you changed the files and the date of any change. 
     102   b) You must cause any work that you distribute or publish, that in whole or  
     103      in part contains or is derived from the Program or any part thereof, to be  
     104      licensed as a whole at no charge to all third parties under the terms of  
     105      this License. 
     106   c) If the modified program normally reads commands interactively when run,  
     107      you must cause it, when started running for such interactive use in the most  
     108      ordinary way, to print or display an announcement including an appropriate  
     109      copyright notice and a notice that there is no warranty (or else, saying  
     110      that you provide a warranty) and that users may redistribute the program  
     111      under these conditions, and telling the user how to view a copy of this  
     112      License. (Exception: if the Program itself  is interactive but does not  
     113      normally print such an announcement, your work based on the Program is not  
     114      required to print an announcement.) 
     115    
     116   These requirements apply to the modified work as a whole. If identifiable  
     117   sections of that work are not derived from the Program, and can be reasonably  
     118   considered independent and separate works in themselves, then this License,  
     119   and its terms, do not apply to those sections when you distribute them as  
     120   separate works. But when you distribute the same sections as part of a whole  
     121   which is a work based on the Program, the distribution of the whole must be  
     122   on the terms of this License, whose permissions for other licensees extend  
     123   to the entire whole, and thus to each and every part regardless of who wrote it. 
     124 
     125     Thus, it is not the intent of this section to claim rights or contest your  
     126   rights to work written entirely by you; rather, the intent is to exercise  
     127   the right to control the distribution of derivative or collective works  
     128   based on the Program. 
     129 
     130     In addition, mere aggregation of another work not based on the Program with  
     131   the Program (or with a work based on the Program) on a volume of a storage  
     132   or distribution medium does not bring the other work under the scope of  
     133   this License. 
     134 
     135  (3)----------------------------------------------------------------------- 
     136 
     137   You may copy and distribute the Program (or a work based on it, under  
     138   Section 2) in object code or executable form under the terms of Sections 1  
     139   and 2 above provided that you also do one of the following: 
     140 
     141   a) Accompany it with the complete corresponding machine-readable source code,  
     142      which must be distributed under the terms of Sections 1 and 2 above on a  
     143      medium customarily used for software interchange; or, 
     144 
     145   b) Accompany it with a written offer, valid for at least three years, to give  
     146      any third party, for a charge no more than your cost of physically performing  
     147      source distribution, a complete machine-readable copy of the corresponding  
     148      source code, to be distributed under the terms of Sections 1 and 2 above on a  
     149      medium customarily used for software interchange; or, 
     150 
     151   c) Accompany it with the information you received as to the offer to distribute  
     152      corresponding source code. (This alternative is allowed only for noncommercial  
     153      distribution and only if you received the program in object code or executable  
     154      form with such an offer, in accord with Subsection b above.) 
     155    
     156   The source code for a work means the preferred form of the work for making  
     157   modifications to it. For an executable work, complete source code means all  
     158   the source code for all modules it contains, plus any associated interface  
     159   definition files, plus the scripts used to control compilation and  
     160   installation of the executable. However, as a special exception, the source  
     161   code distributed need not include anything that is normally distributed (in  
     162   either source or binary form) with the major components (compiler, kernel,  
     163   and so on) of the operating system on which the executable runs, unless that  
     164   component itself accompanies the executable. 
     165 
     166     If distribution of executable or object code is made by offering access to  
     167   copy from a designated place, then offering equivalent access to copy the  
     168   source code from the same place counts as distribution of the source code,  
     169   even though third parties are not compelled to copy the source along with  
     170   the object code. 
     171 
     172  (4)----------------------------------------------------------------------- 
     173 
     174   You may not copy, modify, sublicense, or distribute the Program except as  
     175   expressly provided under this License. Any attempt otherwise to copy, modify,  
     176   sublicense or distribute the Program is void, and will automatically  
     177   terminate your rights under this License. However, parties who have received  
     178   copies, or rights, from you under this License will not have their licenses  
     179   terminated so long as such parties remain in full compliance. 
     180 
     181  (5)----------------------------------------------------------------------- 
     182 
     183   You are not required to accept this License, since you have not signed it.  
     184   However, nothing else grants you permission to modify or distribute the  
     185   Program or its derivative works. These actions are prohibited by law if you  
     186   do not accept this License. Therefore, by modifying or distributing the  
     187   Program (or any work based on the Program), you indicate your acceptance of  
     188   this License to do so, and all its terms and conditions for copying,  
     189   distributing or modifying the Program or works based on it. 
     190 
     191  (6)----------------------------------------------------------------------- 
     192 
     193   Each time you redistribute the Program (or any work based on the Program),  
     194   the recipient automatically receives a license from the original licensor to  
     195   copy, distribute or modify the Program subject to these terms and conditions.  
     196   You may not impose any further restrictions on the recipients' exercise of  
     197   the rights granted herein. You are not responsible for enforcing compliance  
     198   by third parties to this License. 
     199 
     200  (7)----------------------------------------------------------------------- 
     201 
     202   If, as a consequence of a court judgment or allegation of patent  
     203   infringement or for any other reason (not limited to patent issues),  
     204   conditions are imposed on you (whether by court order, agreement or  
     205   otherwise) that contradict the conditions of this License, they do not  
     206   excuse you from the conditions of this License. If you cannot distribute  
     207   so as to satisfy simultaneously your obligations under this License and any  
     208   other pertinent obligations, then as a consequence you may not distribute  
     209   the Program at all. For example, if a patent license would not permit  
     210   royalty-free redistribution of the Program by all those who receive copies  
     211   directly or indirectly through you, then the only way you could satisfy both  
     212   it and this License would be to refrain entirely from distribution of the Program. 
     213 
     214     If any portion of this section is held invalid or unenforceable under any  
     215   particular circumstance, the balance of the section is intended to apply and  
     216   the section as a whole is intended to apply in other circumstances. 
     217 
     218     It is not the purpose of this section to induce you to infringe any patents  
     219   or other property right claims or to contest validity of any such claims;  
     220   this section has the sole purpose of protecting the integrity of the free  
     221   software distribution system, which is implemented by public license  
     222   practices. Many people have made generous contributions to the wide range of  
     223   software distributed through that system in reliance on consistent  
     224   application of that system; it is up to the author/donor to decide if he or  
     225   she is willing to distribute software through any other system and a licensee  
     226   cannot impose that choice. 
     227  
     228     This section is intended to make thoroughly clear what is believed to be a  
     229   consequence of the rest of this License. 
     230 
     231  (8)----------------------------------------------------------------------- 
     232 
     233   If the distribution and/or use of the Program is restricted in certain  
     234   countries either by patents or by copyrighted interfaces, the original  
     235   copyright holder who places the Program under this License may add an  
     236   explicit geographical distribution limitation excluding those countries,  
     237   so that distribution is permitted only in or among countries not thus  
     238   excluded. In such case, this License incorporates the limitation as if  
     239   written in the body of this License. 
     240 
     241  (9)----------------------------------------------------------------------- 
     242 
     243   The Free Software Foundation may publish revised and/or new versions of  
     244   the General Public License from time to time. Such new versions will be  
     245   similar in spirit to the present version, but may differ in detail to  
     246   address new problems or concerns. 
     247 
     248     Each version is given a distinguishing version number. If the Program  
     249   specifies a version number of this License which applies to it and "any  
     250   later version", you have the option of following the terms and conditions  
     251   either of that version or of any later version published by the Free Software  
     252   Foundation. If the Program does not specify a version number of this License,  
     253   you may choose any version ever published by the Free Software Foundation. 
     254 
     255  (10)---------------------------------------------------------------------- 
     256 
     257   If you wish to incorporate parts of the Program into other free programs  
     258   whose distribution conditions are different, write to the author to ask for  
     259   permission. For software which is copyrighted by the Free Software Foundation,  
     260   write to the Free Software Foundation; we sometimes make exceptions for  
     261   this. Our decision will be guided by the two goals of preserving the free  
     262   status of all derivatives of our free software and of promoting the sharing  
     263   and reuse of software generally. 
     264 
     265  (11)---------------------------------------------------------------------- 
     266 
     267   NO WARRANTY 
     268 
     269   BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY  
     270   FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN  
     271   OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES  
     272   PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED  
     273   OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF  
     274   MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO  
     275   THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM  
     276   PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,  
     277   REPAIR OR CORRECTION. 
     278 
     279  (12)---------------------------------------------------------------------- 
     280 
     281   IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING  
     282   WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR  
     283   REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,  
     284   INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING  
     285   OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO  
     286   LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR  
     287   THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),  
     288   EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF  
     289   SUCH DAMAGES. 
     290 
     291 
     292======================== END OF TERMS AND CONDITIONS ======================= 
     293 
     294            *** How to Apply These Terms to Your New Programs *** 
    283295 
    284296  If you develop a new program, and you want it to be of the greatest 
    285 possible use to the public, the best way to achieve this is to make it 
    286 free software which everyone can redistribute and change under these terms. 
    287  
    288   To do so, attach the following notices to the program.  It is safest 
    289 to attach them to the start of each source file to most effectively 
    290 convey the exclusion of warranty; and each file should have at least 
    291 the "copyright" line and a pointer to where the full notice is found. 
    292  
    293     <one line to give the program's name and a brief idea of what it does.> 
    294     Copyright (C) <year>  <name of author> 
    295  
    296     This program is free software; you can redistribute it and/or modify 
    297     it under the terms of the GNU General Public License as published by 
    298     the Free Software Foundation; either version 2 of the License, or 
    299     (at your option) any later version. 
    300  
    301     This program is distributed in the hope that it will be useful, 
    302     but WITHOUT ANY WARRANTY; without even the implied warranty of 
    303     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
    304     GNU General Public License for more details. 
    305  
    306     You should have received a copy of the GNU General Public License along 
    307     with this program; if not, write to the Free Software Foundation, Inc., 
    308     51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 
    309  
    310 Also add information on how to contact you by electronic and paper mail. 
    311  
    312 If the program is interactive, make it output a short notice like this 
    313 when it starts in an interactive mode: 
    314  
    315     Gnomovision version 69, Copyright (C) year name of author 
    316     Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 
    317     This is free software, and you are welcome to redistribute it 
    318     under certain conditions; type `show c' for details. 
    319  
    320 The hypothetical commands `show w' and `show c' should show the appropriate 
    321 parts of the General Public License.  Of course, the commands you use may 
    322 be called something other than `show w' and `show c'; they could even be 
    323 mouse-clicks or menu items--whatever suits your program. 
    324  
    325 You should also get your employer (if you work as a programmer) or your 
    326 school, if any, to sign a "copyright disclaimer" for the program, if 
    327 necessary.  Here is a sample; alter the names: 
    328  
    329   Yoyodyne, Inc., hereby disclaims all copyright interest in the program 
    330   `Gnomovision' (which makes passes at compilers) written by James Hacker. 
    331  
    332   <signature of Ty Coon>, 1 April 1989 
    333   Ty Coon, President of Vice 
    334  
    335 This General Public License does not permit incorporating your program into 
    336 proprietary programs.  If your program is a subroutine library, you may 
    337 consider it more useful to permit linking proprietary applications with the 
    338 library.  If this is what you want to do, use the GNU Lesser General 
    339 Public License instead of this License. 
     297  possible use to the public, the best way to achieve this is to make it 
     298  free software which everyone can redistribute and change under these terms. 
     299 
     300    To do so, attach the following notices to the program. It is safest 
     301  to attach them to the start of each source file to most effectively 
     302  convey the exclusion of warranty; and each file should have at least 
     303  the "copyright" line and a pointer to where the full notice is found. 
     304 
     305  //----------------------------------------------------------------------\\ 
     306  |                                                                        | 
     307  | <one line to give the program's name and a brief idea of what it does.>| 
     308  | Copyright (C) <year> <name of author>                                  | 
     309  |                                                                        | 
     310  | This program is free software; you can redistribute it and/or modify   | 
     311  | it under the terms of the GNU General Public License as published by   | 
     312  | the Free Software Foundation; either version 2 of the License, or      | 
     313  | (at your option) any later version.                                    | 
     314  |                                                                        | 
     315  | This program is distributed in the hope that it will be useful,        | 
     316  | but WITHOUT ANY WARRANTY; without even the implied warranty of         | 
     317  | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the           | 
     318  | GNU General Public License for more details.                           | 
     319  |                                                                        | 
     320  | You should have received a copy of the GNU General Public License along| 
     321  | with this program; if not, write to the Free Software Foundation, Inc.,| 
     322  | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.            | 
     323  |                                                                        | 
     324  \\----------------------------------------------------------------------// 
     325 
     326  Also add information on how to contact you by electronic and paper mail. 
     327 
     328    If the program is interactive, make it output a short notice like this 
     329  when it starts in an interactive mode: 
     330 
     331  //----------------------------------------------------------------------\\ 
     332  |                                                                        | 
     333  | Gnomovision version 69, Copyright (C) year name of author Gnomovision  |  
     334  | comes with ABSOLUTELY NO WARRANTY; for details type `show w`.          | 
     335  | This is free software, and you are welcome to redistribute it          | 
     336  | under certain conditions; type `show c' for details.                   | 
     337  |                                                                        | 
     338  \\----------------------------------------------------------------------// 
     339 
     340  The hypothetical commands `show w` and `show c` should show the appropriate 
     341  parts of the General Public License. Of course, the commands you use may 
     342  be called something other than `show w' and `show c'; they could even be 
     343  mouse-clicks or menu items--whatever suits your program. 
     344 
     345    You should also get your employer (if you work as a programmer) or your 
     346  school, if any, to sign a "copyright disclaimer" for the program, if 
     347  necessary. Here is a sample; alter the names: 
     348 
     349  //----------------------------------------------------------------------\\ 
     350  |                                                                        | 
     351  | Yoyodyne, Inc., hereby disclaims all copyright interest in the program | 
     352  | `Gnomovision' (which makes passes at compilers) written by James Hacker| 
     353  |                                                                        | 
     354  | <signature of Ty Coon>, 1 April 1989                                   | 
     355  | Ty Coon, President of Vice                                             | 
     356  |                                                                        | 
     357  \\----------------------------------------------------------------------// 
     358 
     359  This General Public License does not permit incorporating your program into 
     360  proprietary programs. If your program is a subroutine library, you may 
     361  consider it more useful to permit linking proprietary applications with the 
     362  library. If this is what you want to do, use the GNU Lesser General 
     363  Public License instead of this License. 
  • internal-link-checker/trunk/admin_table.php

    r462778 r593418  
    11<?php 
    22// Secure: don't allow to load this file directly 
    3 if( ! class_exists( 'WP' ) )  
    4 { 
    5     header( 'Status: 403 Forbidden' ); 
    6     header( 'HTTP/1.1 403 Forbidden' ); 
    7     exit; 
    8 } 
    9  
     3! defined( 'ABSPATH' ) AND exit; 
    104 
    115 
     
    137/** 
    148 * Extension for the WP core list table class 
    15  * @author FJ Kaiser 
     9 *  
     10 * Renders the contents of the meta box 
     11 *  
     12 * @author Franz Josef Kaiser 
     13 *  
     14 * @package ILC 
     15 * @subpackage WP List Table extension 
     16 * @license GNU GPL 2 
     17 * @since 0.2.7 
     18 *  
     19 * @see /wp-admin/includes/class-wp-comments-list-table.php Comments List Table class. 
    1620 * @tutorial @link http://codex.wordpress.org/Class_Reference/WP_List_Table 
    1721 * @example @link http://wordpress.org/extend/plugins/custom-list-table-example 
     
    2024{ 
    2125    /** 
    22      * l10n translation domain 
    23      * @var (string) 
    24      */ 
    25     var $textdomain; 
     26     * Meta Box name 
     27     * Retrieved via init class 
     28     *  
     29     * @since  0.6 
     30     * @access public 
     31     * @var    string 
     32     */ 
     33    public $meta_box_name; 
     34 
     35 
     36    /** 
     37     * Order SQL results ASC/DESC 
     38     * Set by $_GET (query arg) 
     39     *  
     40     * @since  0.5 
     41     * @access public 
     42     * @var    string 
     43     */ 
     44    public $order; 
     45 
     46 
     47    /** 
     48     * Order SQL results by columns 
     49     * Set by $_GET (query arg) 
     50     *  
     51     * @since  0.5 
     52     * @access public 
     53     * @var    string 
     54     */ 
     55    public $orderby; 
    2656 
    2757 
     
    2959     * Constructor 
    3060     *  
     61     * @param  string $meta_box_name 
    3162     * @return void 
    3263     */ 
    33     public function __construct() 
    34     { 
    35         // textdomain 
    36         $trace              = debug_backtrace(); 
    37         $plugin_data        = get_plugin_data( $trace[0]['file'] ); 
    38         $this->textdomain   = $plugin_data['TextDomain']; 
    39         // screen 
    40         $screen             = get_current_screen(); 
    41         $this->screen       = $screen->id; 
    42  
     64    public function __construct( $meta_box_name ) 
     65    { 
     66        // meta box name 
     67        $this->meta_box_name = $meta_box_name; 
     68 
     69        // Args for the SQL query, based on query vars in $_GET 
     70        $this->set_order(); 
     71        $this->set_orderby(); 
     72 
     73        // Setup 
    4374        parent :: __construct( array( 
    44              'singular' => 'internal link' 
    45             ,'plural'   => 'internal links' 
    46             ,'ajax'     => false 
     75             'singular' => 'internal link' 
     76            ,'plural'   => 'internal links' 
     77            ,'ajax'     => true 
    4778        ) ); 
     79 
     80        // Display Output 
     81        $this->prepare_items(); 
     82 
     83        # echo '<form id="form-search-ilc">'; 
     84        # $this->search_box( __( 'Search', 'ilc' ), 'search-ilc' ); 
     85        $this->display(); 
     86        # echo '</form>'; 
     87    } 
     88 
     89 
     90    /** 
     91     * Sets the current order argument for the SQL Query 
     92     * based on the $_GET array 
     93     *  
     94     * @return void 
     95     */ 
     96    public function set_order() 
     97    { 
     98        $order = 'DESC'; 
     99        if ( isset( $_GET['order'] ) AND $_GET['order'] ) 
     100            $order = $_GET['order']; 
     101        $this->order = $order; 
     102    } 
     103 
     104 
     105    /** 
     106     * Sets the current orderby argument for the SQL Query 
     107     * based on the $_GET array 
     108     *  
     109     * @return void 
     110     */ 
     111    public function set_orderby() 
     112    { 
     113        $orderby = 'post_date'; 
     114        if ( isset( $_GET['orderby'] ) AND $_GET['orderby'] ) 
     115            $orderby = $_GET['orderby']; 
     116        $this->orderby = $orderby; 
     117    } 
     118 
     119 
     120    /** 
     121     * (non-PHPdoc) 
     122     * @see WP_List_Table::ajax_user_can() 
     123     */ 
     124    public function ajax_user_can()  
     125    { 
     126        return current_user_can( 'edit_posts' ); 
    48127    } 
    49128 
     
    55134    public function no_items()  
    56135    { 
    57         _e( 'No links found.', $this->textdomain ); 
    58     } 
     136        _e( 'No links found.', 'ilc' ); 
     137    } 
     138 
     139 
     140    /** 
     141     * (non-PHPdoc) 
     142     * @see WP_List_Table::get_views() 
     143     */ 
     144    public function get_views() 
     145    { 
     146        # Only needed if we're going to add bulk actions and 
     147        # want a @magic (idea) history tracking: 
     148        # "Where was/is this post linked" 
     149        # We should add some query vars to target the different views, 
     150        # that have run through some of the bulk actions 
     151        # Not sure how to target those posts: by adding some custom post_meta data maybe? 
     152        # @example: array( 'removed_link' => $post->ID ) 
     153 
     154        // @example display 
     155        #foreach ( array( 'test', 'bla', 'foo', 'bar' ) as $e ) 
     156        #   $example[] = "<a href='#'>{$e}</a>"; 
     157        #return $example; 
     158 
     159        return array(); 
     160    }  
    59161 
    60162 
     
    66168    { 
    67169        return array( 
    68              'ID'           => __( 'ID',    $this->textdomain ) 
    69             ,'post_title'   => __( 'Title', $this->textdomain ) 
    70             ,'post_date'    => __( 'Date',  $this->textdomain ) 
     170             'ID'         => __( 'ID', 'ilc' ) 
     171            ,'post_title' => __( 'Title', 'ilc' ) 
     172            ,'post_date'  => __( 'Date', 'ilc' ) 
    71173        ); 
    72174    } 
     
    77179     * @see WP_List_Table::get_sortable_columns() 
    78180     */ 
    79     public function get_sortable_columns()  
     181    public function get_sortable_columns() 
    80182    { 
    81183        return array( 
    82              'ID'           => 'ID' 
    83             ,'post_title'   => 'post_title' 
    84             ,'post_date'    => 'post_date' 
     184             'ID'         => array( 'ID', true ) 
     185            ,'post_title' => array( 'post_title', true ) 
     186            ,'post_date'  => array( 'post_date', true ) 
    85187        ); 
    86188    } 
     
    95197    public function prepare_items() 
    96198    { 
    97         $columns        = $this->get_columns(); 
    98         $hidden         = array(); 
    99         $sortable       = array(); # $this->get_sortable_columns(); 
     199        $columns  = $this->get_columns(); 
     200        $hidden   = array(); 
     201        $sortable = $this->get_sortable_columns(); 
    100202 
    101203        $this->_column_headers = array(  
     
    105207        ); 
    106208 
    107         $data           = ilcInit::the_sql_results(); 
    108         // Prepare the data 
    109         $permalink      = __( 'Edit:', $this->textdomain ); 
    110         foreach ( $data as $key => $post ) 
    111         { 
    112             $link       = get_edit_post_link( $post->ID ); 
    113  
    114             // If no title was set: we care about it 
    115             $no_title   = __( 'No title set', $this->textdomain ); 
    116             $title      = ! $post->post_title ? "<em>{$no_title}</em>" : $post->post_title; 
    117  
    118             $data[ $key ]->post_title = "<a title='{$permalink} {$title}' href='{$link}'>{$title}</a>"; 
    119         } 
    120  
    121         // Pagination Data 
    122         /* 
    123         $per_page       = 5; 
    124         $current_page   = $this->get_pagenum(); 
    125         $total_items    = count( $data ); 
     209        // SQL results 
     210        $posts = ilcInit :: the_sql_results(); 
     211        empty( $posts ) AND $posts = array(); 
     212 
     213        # >>>> Pagination 
     214        # @since 0.4 
     215        // Per Page Data 
     216        $per_page     = 5; 
     217        $current_page = $this->get_pagenum(); 
     218        $total_items  = count( $posts ); 
    126219        $this->set_pagination_args( array ( 
    127220             // Calculate the total number of items 
    128              'total_items'  => $total_items 
     221             'total_items' => $total_items 
    129222             // Determine how many items to show on a page 
    130             ,'per_page'     => $per_page 
     223            ,'per_page'    => $per_page 
    131224             // Calculate the total number of pages 
    132             ,'total_pages'  => ceil( $total_items / $per_page ) 
     225            ,'total_pages' => ceil( $total_items / $per_page ) 
    133226        ) ); 
    134         */ 
    135  
    136         /* 
    137         $this->process_bulk_action(); 
    138         */ 
    139  
    140         $this->items    = $data; 
     227 
     228        // Setup first and last post index/key for current posts array filter. 
     229        $last_post = $current_page * $per_page; 
     230        // In case the last page doesn't hold as many objects, 
     231        // as the other pages hold: set to last element. 
     232        $last_post > $total_items AND $last_post = $total_items; 
     233        // count one post up as we'd have null else 
     234        $first_post = $last_post - $per_page +1; 
     235 
     236        // Setup the range of keys/indizes that contain  
     237        // the posts on the currently displayed page(d). 
     238        // Flip keys with values as the range outputs the range in the values. 
     239        $range = array_flip( range( $first_post - 1, $last_post - 1, 1 ) ); 
     240 
     241        // Filter out the posts we're not displaying on the current page. 
     242        $posts_array = array_intersect_key( $posts, $range ); 
     243        # <<<< Pagination 
     244 
     245        // Prepare the data 
     246        $permalink = __( 'Edit:', 'ilc' ); 
     247        foreach ( $posts_array as $key => $post ) 
     248        { 
     249            $link     = get_edit_post_link( $post->ID ); 
     250            // If no title was set: we care about it 
     251            $no_title = __( 'No title set', 'ilc' ); 
     252            $title    = ! $post->post_title ? "<em>{$no_title}</em>" : $post->post_title; 
     253 
     254            $posts[ $key ]->post_title = "<a title='{$permalink} {$title}' href='{$link}'>{$title}</a>"; 
     255        } 
     256 
     257        $this->items = $posts_array; 
    141258    } 
    142259 
     
    146263     * Must get defined in extended class here 
    147264     *  
    148      * @param (object) $item 
    149      * @param (string) $column_name 
     265     * @param  object $item 
     266     * @param  string $column_name 
     267     * @return string $item->column_name 
    150268     */ 
    151269    public function column_default( $item, $column_name ) 
     
    156274 
    157275    /** 
    158      * Temp. Override of table nav to avoid gaps in UI 
     276     * Override of table nav to avoid breaking with bulk actions & according nonce field 
    159277     * (non-PHPdoc) 
    160278     * @see WP_List_Table::display_tablenav() 
    161      */ 
    162     public function display_tablenav( $which ) 
    163     { 
    164         return; 
     279     * @access public 
     280     * @return string HTML 
     281     */ 
     282    public  function display_tablenav( $which ) { 
     283        # if ( 'top' == $which ) 
     284            # wp_nonce_field( 'bulk-' . $this->_args['plural'] ); 
     285        ?> 
     286        <div class="tablenav <?php echo esc_attr( $which ); ?>"> 
     287            <!--  
     288            <div class="alignleft actions"> 
     289                <?php # $this->bulk_actions( $which ); ?> 
     290            </div> 
     291             --> 
     292            <?php 
     293            $this->extra_tablenav( $which ); 
     294            $this->pagination( $which ); 
     295            ?> 
     296            <br class="clear" /> 
     297        </div> 
     298        <?php 
     299    } 
     300 
     301 
     302    /** 
     303     * Disables the views for 'side' context as there's not enough free space in the UI 
     304     * Only displays them on screen/browser refresh. Else we'd have to do this via an AJAX DB update. 
     305     *  
     306     * @since 0.6 
     307     * (non-PHPdoc) 
     308     * @see WP_List_Table::extra_tablenav() 
     309     */ 
     310    public function extra_tablenav( $which ) 
     311    { 
     312        global $wp_meta_boxes; 
     313 
     314        // Abort for empty views array - needed during development, maybe later if settings are present 
     315        $views = $this->get_views(); 
     316        if ( empty( $views ) ) 
     317            return; 
     318 
     319        // Loop through the context/priority array 
     320        foreach ( $wp_meta_boxes[ get_current_screen()->id ] as $context => $priority ) 
     321        { 
     322            foreach ( $priority as $name => $meta_boxes ) 
     323            { 
     324                // Check if the link meta box is in the current priority 
     325                $link_box = in_array( $this->meta_box_name, array_keys( $meta_boxes ) ); 
     326                // If so: Abort 
     327                if ( $link_box AND 'side' === $context ) 
     328                    return; 
     329            } 
     330        } 
     331 
     332        // If we're not in the 'side' context, display the views 
     333        $this->views(); 
    165334    } 
    166335} 
  • internal-link-checker/trunk/internal-links.php

    r462778 r593418  
    11<?php 
     2! defined( 'ABSPATH' ) AND exit; 
    23/* 
    3 Plugin Name:    Internal links check 
    4 Plugin URI:     https://github.com/franz-josef-kaiser/Internal-Link-Check 
    5 Description:    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. 
    6 Author:         Franz Josef Kaiser, Patrick Matsumura 
    7 Author URI:     https://plus.google.com/u/0/107110219316412982437 
    8 Version:        0.3 
    9 Text Domain:    ilc 
    10 License:        GPL v2 - http://www.gnu.org/licenses/old-licenses/gpl-2.0.html 
    11  
    12     (c) Copyright 2010 - 2011 by Franz Josef Kaiser <mailto: office@unserkaiser.com> 
    13  
    14     This program is free software; you can redistribute it and/or modify 
    15     it under the terms of the GNU General Public License as published by 
    16     the Free Software Foundation; either version 2 of the License, or 
    17     (at your option) any later version. 
     4Plugin Name: Internal links check 
     5Plugin URI:  https://github.com/franz-josef-kaiser/Internal-Link-Check 
     6Description: 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. 
     7Author:      Franz Josef Kaiser, Patrick Matsumura 
     8Author URI:  https://unserkaiser.com 
     9Version:     0.6.1 
     10Text Domain: ilc 
     11License:     GPL v2 @link http://www.gnu.org/licenses/old-licenses/gpl-2.0.html 
     12 
     13    (c) Copyright 2010 - 2012 by Franz Josef Kaiser <mailto: office (a) unserkaiser.com> 
     14 
     15    This program is free software; you can redistribute it and/or 
     16    modify it under the terms of the GNU General Public License 
     17    as published by the Free Software Foundation; either version 2 
     18    of the License, or (at your option) any later version. 
    1819 
    1920    This program is distributed in the hope that it will be useful, 
    2021    but WITHOUT ANY WARRANTY; without even the implied warranty of 
    21     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
     22    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 
    2223    GNU General Public License for more details. 
    2324 
    2425    You should have received a copy of the GNU General Public License 
    2526    along with this program; if not, write to the Free Software 
    26     Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA 
     27    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 
    2728*/ 
    2829 
    29 // Secure: don't allow to load this file directly 
    30 if( ! class_exists( 'WP' ) )  
    31 { 
    32     header( 'Status: 403 Forbidden' ); 
    33     header( 'HTTP/1.1 403 Forbidden' ); 
    34     exit; 
    35 } 
    36  
    37  
    38  
    39 // init class 
    40 add_action( 'init', array( 'ilcInit', 'init' ) ); 
     30 
    4131 
    4232if ( ! class_exists( 'ilcInit' ) ) 
    4333{ 
     34    // init class 
     35    add_action( 'admin_init', array( 'ilcInit', 'init' ), 0 ); 
    4436 
    4537/** 
    4638 * Factory 
    47  * @author Franz Josef Kaiser 
    4839 *  
    49  * translation tutorial 
    50  * @link http://wordpress.stackexchange.com/questions/33312/how-to-translate-plural-forms-for-themes-plugins-with-poedit/33314#33314 
     40 * @author     Franz Josef Kaiser <wecodemore@gmail.com> 
     41 * @copyright  © Franz Josef Kaiser 2012 
     42 *  
     43 * @since      0.1 
     44 *  
     45 * @package    WordPress 
     46 * @subpackage Internal Link Checker bootstrap 
     47 *  
     48 * @license    GNU GPL 2 
    5149 */ 
    5250class ilcInit 
    5351{ 
    5452    /** 
    55      * Plugin Base directory 
    56      * @var (string) 
    57      */ 
    58     public static $dir; 
    59  
    60     /** 
    61      * Relative Path from plugin root dir 
    62      * @var (string) 
    63      */ 
    64     public static $rel_path; 
     53     * Instance 
     54     *  
     55     * @access protected 
     56     * @var    object 
     57     */ 
     58    static protected $instance; 
     59 
    6560 
    6661    /** 
     
    6863     * Fetches the readme file from the official plugin repo trunk. 
    6964     * Adds to the "in_plugin_update_message-$file" hook 
    70      * @var (string) 
     65     *  
     66     * @access public 
     67     * @var    string 
    7168     */ 
    7269    public $remote_readme = 'http://plugins.trac.wordpress.org/browser/internal-link-checker/trunk/readme.txt?format=txt'; 
    7370 
     71 
    7472    /** 
    7573     * Settings 
    76      * @var (array) 
     74     *  
     75     * @since  0.2.2 
     76     * @access public 
     77     * @var    array 
    7778     */ 
    7879    public $args = array( 
    79          'element'          => 'li' 
    80         ,'element_class'    => '' 
     80         'element'         => 'li' 
     81        ,'element_class'   => '' 
    8182         // Att.: <ol> will be auto converted to <ul>  
    82         ,'container'        => '' 
    83         ,'container_class'  => '' 
    84         ,'nofollow'         => false 
    85         ,'echo'             => true 
     83        ,'container'       => '' 
     84        ,'container_class' => '' 
     85        ,'nofollow'        => false 
     86        ,'echo'            => true 
    8687    ); 
    8788 
    88     /** 
    89      * Container for sql result 
    90      * @var (array) 
     89 
     90    /** 
     91     * Container for SQL result 
     92     *  
     93     * @since  0.2 
     94     * @access public 
     95     * @var    array 
    9196     */ 
    9297    public $sql_results; 
     98 
     99 
     100    /** 
     101     * Sets the meta box name 
     102     * Used to determin in the extended WP_List_Table class 
     103     * in which context the meta box is.  
     104     * Needed to determine if the whole UI should be shown 
     105     *  
     106     * @since  0.6 
     107     * @access public 
     108     * @var    unknown_type 
     109     */ 
     110    public $meta_box_name = 'link-check'; 
    93111 
    94112 
     
    97115     * Instantiates the class and loads translation files 
    98116     *  
     117     * @since  0.2 
    99118     * @return void 
    100119     */ 
    101120    static public function init() 
    102121    { 
    103         $class = __CLASS__ ; 
    104  
    105         // Class available in global scope 
    106         if ( empty ( $GLOBALS[ $class ] ) ) 
    107             $GLOBALS[ $class ] = new $class; 
    108  
    109         // l10n translation files 
    110         $dir        = basename( dirname( __FILE__ ) ); 
    111         // in plugins directory 
    112         $l10n_file  = load_plugin_textdomain( 'ilc', false, "{$dir}/lang" ); 
    113         // in mu-plugins directory 
    114         if ( ! $l10n_file ) 
    115             load_muplugin_textdomain( 'ilc', "{$dir}/lang" ); 
     122        null === self :: $instance AND self :: $instance = new self; 
     123        return self :: $instance; 
    116124    } 
    117125 
     
    120128     * Constructor 
    121129     *  
     130     * @since  0.2 
    122131     * @return void 
    123132     */ 
    124133    public function __construct() 
    125134    { 
    126         # >>>> Class vars 
    127         $this->dir          = plugin_dir_path( __FILE__ ); 
    128         $this->rel_path     = basename( dirname( __FILE__ ) ); 
    129         # <<<< Class vars 
     135        global $pagenow; 
     136 
     137        // Load translation file 
     138        add_action( 'admin_init', array( $this, 'load_textdomain' ) ); 
    130139 
    131140        if ( is_admin() ) 
    132141        { 
    133             global $pagenow; 
     142            // Better update message 
    134143            if ( 'plugins.php' === $pagenow ) 
    135144            { 
    136                 // Better update message 
    137                 $file   = basename( __FILE__ ); 
    138                 $folder = basename( dirname( __FILE__ ) ); 
    139                 $hook = "in_plugin_update_message-{$folder}/{$file}"; 
    140                 add_action( $hook, array( &$this, 'update_message' ), 20, 2 ); 
     145                $hook  = "in_plugin_update_message-"; 
     146                $hook .= basename( __FILE__ )."/"; 
     147                $hook .= basename( dirname( __FILE__ ) ); 
     148                add_action( $hook, array( $this, 'update_message' ), 20, 2 ); 
    141149            } 
    142150            // avoid loading on every admin $_REQUEST 
     
    144152            elseif ( 'post.php' === $pagenow ) 
    145153            { 
    146                 add_action( 'admin_init',       array( &$this, 'load_extensions' ) ); 
    147                 add_action( 'add_meta_boxes',   array( &$this, 'add_meta_box' ) ); 
     154                add_action( 'admin_init',     array( $this, 'load_extensions' ) ); 
     155                add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) ); 
    148156            } 
    149157        } 
    150158    } 
    151159 
     160    /** 
     161     * Load plugin translation 
     162     * 
     163     * @link   http://wordpress.stackexchange.com/a/33314 Translation Tutorial by the author 
     164     * @return void 
     165     */ 
     166    static function load_textdomain()  
     167    { 
     168        global $locale; 
     169 
     170        // l18n translation files 
     171        $dir    = plugin_dir_path( __FILE__ ); 
     172        $domain = 'ilc'; 
     173 
     174        // in themes/plugins/mu-plugins directory 
     175        load_textdomain(  
     176             $domain 
     177            ,"{$dir}lang/{$domain}-{$locale}.mo" 
     178        ); 
     179    } 
     180 
    152181 
    153182    /** 
    154183     * Extension/File/Class loader 
    155184     *  
     185     * @since  0.2.7 
    156186     * @return void 
    157187     */ 
    158188    public function load_extensions() 
    159189    { 
    160         foreach ( array( 'admin_table' ) as $extension ) 
    161         { 
    162             $file = "{$this->dir}/{$extension}.php"; 
     190        $files = array(  
     191             'admin_table'  
     192        ); 
     193 
     194        foreach ( $files as $extension ) 
     195        { 
     196            $file = plugin_dir_path( __FILE__ )."/{$extension}.php"; 
    163197            if ( is_readable( $file ) ) 
    164198                include_once $file; 
     
    170204     * Plugin Header Comment data 
    171205     * 
     206     * @since  0.2.8 
    172207     * @uses   get_plugin_data 
    173      * @param (string) $value | default = 'Version'; Valid: see Header Comment Block 
    174      * @return (string)  
    175      */ 
    176     private function get_plugin_data( $value = 'Version' )  
    177     { 
    178         $plugin_data = get_plugin_data( __FILE__ ); 
    179         return $plugin_data[ $value ]; 
    180     } 
    181  
    182  
    183     /** 
    184      * Wrapper for get_plugin_data() 
    185      *  
    186      * @return (string) $textdomain 
    187      */ 
    188     public function get_textdomain()  
    189     { 
    190         return $this->get_plugin_data( 'TextDomain' ); 
    191     } 
    192  
    193      
    194     /** 
    195      * Adds the meta box to the post edit screen 
    196      * 
    197      * @return void 
    198      */ 
    199     public function add_meta_box() 
    200     { 
    201         // add meta box 
    202         add_meta_box(  
    203              'link-check' 
    204             ,__( 'Internal Links', $this->get_textdomain() ) 
    205             ,array( &$this, 'load_table' ) 
    206             ,'post'  
    207         ); 
    208     } 
    209  
    210  
    211     /** 
    212      * Adds a native admin UI table 
    213      * Callback fn for add_meta_box() 
    214      *  
    215      * @return void 
    216      */ 
    217     public function load_table() 
    218     { 
    219         // Action: Overrides the content of the meta box 
    220         if ( has_action( 'internal_links_meta_box' ) ) 
    221         { 
    222             do_action( 'internal_links_meta_box', $this->the_sql_results() ); 
    223             return; 
    224         } 
    225  
    226         // Display table 
    227         $table = new ilcTable(); 
    228         $table->prepare_items(); 
    229         $table->display(); 
    230  
    231         # @todo temp until table nav in place 
    232         echo '<br class="clear" />'; 
    233  
    234         // Display number of posts 
    235         # $count = count( $GLOBALS['wpdb']->last_result ); 
    236         $count = count( $this->the_sql_results() ); 
    237         printf(  
    238              _n( 
    239                  'One post linking to this post.' 
    240                 ,'Posts linking to this post: %s' 
    241                 ,$count 
    242                 ,$this->get_textdomain()  
    243              ) 
    244             ,zeroise( number_format_i18n( $count ), 2 ) 
    245         ); 
     208     * @param  string $value default = 'Version'; Valid: see Header Comment Block 
     209     * @return string $data 
     210     */ 
     211    static private function get_plugin_data( $value = 'Version', $mark_up = true )  
     212    { 
     213        $data = get_plugin_data( __FILE__, $mark_up ); 
     214        return $data[ $value ]; 
    246215    } 
    247216 
     
    251220     * Adds content to two class vars: The resulting array & the counter 
    252221     *  
    253      * @return (object) $links  
     222     * @since  0.2 
     223     * @return object $links  
    254224     */ 
    255225    public function get_sql_results() 
    256226    { 
     227        global $wpdb; 
     228 
    257229        // get_permalink() cares about rewrite rules 
    258230        $current_link = get_permalink( $GLOBALS['post']->ID ); 
    259231        // SQL: newest first 
    260         return $GLOBALS['wpdb']->get_results( " 
    261             SELECT ID, post_title, post_date, post_content, post_type  
    262             FROM {$GLOBALS['wpdb']->prefix}posts  
    263             WHERE post_content  
    264             LIKE '%{$current_link}%'  
    265             ORDER BY post_date DESC 
    266         " ); 
     232        $sql_results = $wpdb->get_results(  
     233             $wpdb->prepare( " 
     234                SELECT ID, post_title, post_date, post_content, post_type  
     235                    FROM %s 
     236                WHERE post_content  
     237                    LIKE %s 
     238                ORDER BY %s %s 
     239             " ) 
     240            ,"{$wpdb->prefix}posts" 
     241            ,'%'.like_escape( $current_link ).'%' 
     242            ,$this->orderby 
     243            ,$this->order 
     244        ); 
     245 
     246        return $sql_results; 
    267247    } 
    268248 
     
    271251     * Wrapper to return the sql results for the admin table class 
    272252     *  
    273      * @see WP_List_Table::prepare_items() 
    274      * @return (array) $sql_results 
     253     * @since  0.2.7 
     254     * @see    WP_List_Table::prepare_items() 
     255     * @return array $sql_results 
    275256     */ 
    276257    public function the_sql_results() 
    277258    { 
    278         return isset( $this->sql_results ) ? $this->sql_results : self::get_sql_results(); 
     259        return isset( $this->sql_results ) ? $this->sql_results : self :: get_sql_results(); 
     260    } 
     261 
     262     
     263    /** 
     264     * Adds the meta box to the post edit screen 
     265     * 
     266     * @since  0.2 
     267     * @return void 
     268     */ 
     269    public function add_meta_box() 
     270    { 
     271        add_meta_box(  
     272             $this->meta_box_name 
     273            ,__( 'Internal Links', 'ilc' ) 
     274            ,array( $this, 'load_table' ) 
     275            ,'post'  
     276        ); 
     277    } 
     278 
     279 
     280    /** 
     281     * Adds a native admin UI table 
     282     * Callback fn for add_meta_box() 
     283     *  
     284     * @since  0.2 | renamed from meta_box_cb() 
     285     * @return void 
     286     */ 
     287    public function load_table() 
     288    { 
     289        // Action: Overrides the content of the meta box 
     290        if ( has_action( 'internal_links_meta_box' ) ) 
     291            return do_action( 'internal_links_meta_box', $this->the_sql_results() ); 
     292 
     293        // Display table 
     294        new ilcTable( $this->meta_box_name ); 
    279295    } 
    280296 
     
    282298    /** 
    283299     * Builds the output 
    284      * Also used as meta box callback function 
    285      *  
    286      * @uses markup() 
    287      * @return (string) $output 
     300     *  
     301     * @since  0.2 
     302     * @uses   markup() 
     303     * @return string $output 
    288304     */ 
    289305    function output() 
    290306    { 
    291307        if ( ! $this->sql_results ) 
    292             return _e( 'No posts are linking to this post.', $this->get_textdomain() ); 
     308            return _e( 'No posts are linking to this post.', 'ilc' ); 
    293309 
    294310        # >>>> build links array sorted by post type 
     
    296312        foreach( $this->sql_results as $post ) 
    297313        { 
    298             $link       = get_permalink( $post->ID ); 
     314            $link     = get_permalink( $post->ID ); 
    299315 
    300316            // If no title was set: we care about it 
    301             $no_title   = __( 'No title set', $this->get_textdomain() ); 
    302             $title      = $post->post_title ? $post->post_title : "<em>{$no_title}</em>"; 
     317            $no_title = __( 'No title set', 'ilc' ); 
     318            $title    = $post->post_title ? $post->post_title : "<em>{$no_title}</em>"; 
    303319 
    304320            $results[ $post->post_type ][ $post->ID ] = "<a href='{$link}'>{$title}</a>"; 
     
    312328        foreach ( $results as $name => $posts ) 
    313329        { 
    314             $name    = _n( ucfirst( $name ), ucfirst( $name ).'s', count( $posts ), $this->get_textdomain() ); 
     330            $name = _n( 
     331                 ucfirst( $name ) 
     332                ,ucfirst( $name ).'s' 
     333                ,count( $posts ) 
     334                ,'ilc' 
     335            ); 
    315336            $output .= $this->markup( $posts ); 
    316337        } 
     
    328349     * Builds the markup 
    329350     *  
    330      * @uses markup_filter() 
    331      * @param (array) $results | SQL Query results ordered 
    332      * @return (string) $output | Html markup 
     351     * @since  0.2 
     352     * @uses   markup_filter() 
     353     * @param  array $results SQL Query results ordered 
     354     * @return string $output Html markup 
    333355     */ 
    334356    public function markup( $results ) 
     
    337359        foreach ( $results as $link ) 
    338360        { 
    339             $output .= "<%el%%el_class%>{$link}</%el%>"; 
     361            $output .= "<%EL%%EL_CLASS%>{$link}</%EL%>"; 
    340362        } 
    341363 
    342364        // In case someone forgot to set a container if the choosen element is 'li' 
    343         if ( $this->args['container'] OR 'li' === $this->args['element'] ) 
    344         { 
    345             $output  = "<%container%%container_class%>{$output}</%container%>"; 
     365        if ( ! $this->args['container'] OR 'li' === $this->args['element'] ) 
     366        { 
     367            $output  = "<%CONTAINER%%CONTAINER_CLASS%>{$output}</%CONTAINER%>"; 
    346368        } 
    347369 
     
    356378     * Deletes placeholders if the settings array contains an empty string 
    357379     *  
    358      * @param (string) $input 
    359      * @return (string) $markup 
     380     * @since  0.2 
     381     * @param  string $input 
     382     * @return string $markup 
    360383     */ 
    361384    public function markup_filter( $input ) 
    362385    { 
    363         $markup = strtr(  
     386        return strtr(  
    364387             $input 
    365388            ,array( 
    366                  '%el%'                 => $this->args['element'] 
     389                 '%EL%'              => $this->args['element'] 
    367390                 // auto correct wrong container types for <li> elements to <ul> 
    368                 ,'%container%'          => 'li' === $this->args['element']  ? 'ul' : $this->args['container'] 
    369                 ,'%el_class%'           => $this->args['element_class']     ? " class='{$this->args['element_class']}'" : '' 
    370                 ,'%container_class%'    => $this->args['container_class']   ? " class='{$this->args['container_class']}'" : '' 
    371                 ,'%nofollow%'           => $this->args['nofollow']          ? ' rel="nofollow"' : '' 
     391                ,'%CONTAINER%'       => 'li' === $this->args['element'] ? 'ul' : $this->args['container'] 
     392                ,'%EL_CLASS%'        => $this->args['element_class']    ? " class='{$this->args['element_class']}'" : '' 
     393                ,'%CONTAINER_CLASS%' => $this->args['container_class']  ? " class='{$this->args['container_class']}'" : '' 
     394                ,'%NOFOLLOW%'        => $this->args['nofollow']         ? ' rel="nofollow"' : '' 
    372395            )  
    373396        ); 
    374  
    375         return $markup; 
    376397    } 
    377398 
     
    384405     * Shows only the version updates from the current until the newest version 
    385406     *  
    386      * @param (array) $plugin_data 
    387      * @param (object) $r 
    388      * @return (string) $output 
     407     * @since  0.2.8 
     408     * @param  array  $plugin_data 
     409     * @param  object $r 
     410     * @return string $output 
    389411     */ 
    390412    public function update_message( $plugin_data, $r ) 
     
    394416 
    395417        // readme contents 
    396         $data       = file_get_contents( $this->remote_readme ); 
    397         $changelog  = stristr( $data, '== Changelog ==' ); 
    398         $changelog  = stristr( $changelog, '== Screenshots ==', true ); 
     418        $data      = file_get_contents( $this->remote_readme ); 
     419        $changelog = stristr( $data, '== Changelog ==' ); 
     420        $changelog = stristr( $changelog, '== Screenshots ==', true ); 
    399421        // only return for the current & later versions 
    400         $curr_ver   = $this->get_plugin_data(); 
    401         $changelog  = stristr( $changelog, "= v{$curr_ver}" ); 
     422        $curr_ver  = $this->get_plugin_data(); 
     423        $changelog = stristr( $changelog, "= v{$curr_ver}" ); 
    402424 
    403425        # >>>> output 
     
    405427        $output .= sprintf( __(  
    406428                 'The Update from %1$s to %2$s brings you the following new features, bug fixes and additions.' 
    407                 ,$this->get_textdomain() ) 
     429                ,'ilc' ) 
    408430            ,$curr_ver 
    409431            ,$r->new_version  
    410432        ); 
    411433        $output .= "<pre>{$changelog}</pre>"; 
    412         $output .= sprintf( __(  
     434        $output .= sprintf(  
     435             __(  
    413436                 'You can also check the nightly builds of %1$sour development repository%2$s on GitHub. If you got ideas, feature request or want to help with pull requests, please feel free to do so on GitHub.%3$s' 
    414                 ,$this->get_textdomain() ) 
     437                ,'ilc' 
     438             ) 
    415439            ,'<a href="https://github.com/franz-josef-kaiser/Internal-Link-Check">' 
    416440            ,'</a>' 
  • internal-link-checker/trunk/lang/ilc-en_EN.po

    r462778 r593418  
    33"Project-Id-Version: Internal Link Check\n" 
    44"Report-Msgid-Bugs-To: \n" 
    5 "POT-Creation-Date: 2011-11-14 19:29+0100\n" 
    6 "PO-Revision-Date: 2011-11-14 19:29+0100\n" 
     5"POT-Creation-Date: 2011-12-09 01:26+0100\n" 
     6"PO-Revision-Date: 2011-12-09 01:26+0100\n" 
    77"Last-Translator: Franz Josef Kaiser <franzjosef@unserkaiser.at>\n" 
    88"Language-Team: \n" 
     
    1717"X-Poedit-SearchPath-0: ..\n" 
    1818 
    19 #: ../admin_table.php:57 
     19#: ../admin_table.php:163 
    2020msgid "No links found." 
    2121msgstr "" 
    2222 
    23 #: ../admin_table.php:68 
     23#: ../admin_table.php:197 
    2424msgid "ID" 
    2525msgstr "" 
    2626 
    27 #: ../admin_table.php:69 
     27#: ../admin_table.php:198 
    2828msgid "Title" 
    2929msgstr "" 
    3030 
    31 #: ../admin_table.php:70 
     31#: ../admin_table.php:199 
    3232msgid "Date" 
    3333msgstr "" 
    3434 
    35 #: ../admin_table.php:109 
     35#: ../admin_table.php:268 
    3636msgid "Edit:" 
    3737msgstr "" 
    3838 
    39 #: ../admin_table.php:115 
    40 #: ../internal-links.php:301 
     39#: ../admin_table.php:274 
     40#: ../internal-links.php:314 
    4141msgid "No title set" 
    4242msgstr "" 
    4343 
    44 #: ../internal-links.php:204 
     44#: ../internal-links.php:270 
    4545msgid "Internal Links" 
    4646msgstr "" 
    4747 
    48 #: ../internal-links.php:239 
    49 #, php-format 
    50 msgid "One post linking to this post." 
    51 msgid_plural "Posts linking to this post: %s" 
    52 msgstr[0] "" 
    53 msgstr[1] "" 
    54  
    55 #: ../internal-links.php:292 
     48#: ../internal-links.php:305 
    5649msgid "No posts are linking to this post." 
    5750msgstr "" 
    5851 
    59 #: ../internal-links.php:406 
     52#: ../internal-links.php:422 
    6053#, php-format 
    6154msgid "The Update from %1$s to %2$s brings you the following new features, bug fixes and additions." 
    6255msgstr "" 
    6356 
    64 #: ../internal-links.php:413 
     57#: ../internal-links.php:429 
    6558#, php-format 
    6659msgid "You can also check the nightly builds of %1$sour development repository%2$s on GitHub. If you got ideas, feature request or want to help with pull requests, please feel free to do so on GitHub.%3$s" 
  • internal-link-checker/trunk/readme.textile

    r462778 r593418  
    11h2. Internal Link Checker 
    22 
    3 version: _v0.3_ 
     3**Version: _v0.6_** 
    44 
    5 **Updates** available via the official "wp.org plugin repository":http://wordpress.org/extend/plugins/internal-link-checker/. 
     5> **Updates** available via the official "wp.org plugin repository":http://wordpress.org/extend/plugins/internal-link-checker/. 
    66 
    77Adds 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**! 
     
    4949 
    5050Languages included: 
    51 EN/DE (Patrick Matsumura) 
     51EN/DE ("Patrick Matsumura":https://github.com/patrickmatsumura) 
    5252 
    5353h4. Authors 
    5454 
    55 "Franz Josef Kaiser":https://github.com/franz-josef-kaiser | "G+":https://plus.google.com/u/0/107110219316412982437 
    56 "Patrick Matsumura":https://github.com/patrickmatsumura | "G+":https://plus.google.com/u/0/110601372184256601089 
     55visit "Franz Josef Kaiser":https://github.com/franz-josef-kaiser at github | or get social at "G+":https://plus.google.com/u/0/107110219316412982437 
     56visit "Patrick Matsumura":https://github.com/patrickmatsumura at github | or get social at "G+":https://plus.google.com/u/0/110601372184256601089 
    5757 
    5858---------------------------------------------------------------- 
     
    6060h4. Changelog 
    6161 
    62 * _v0.1_ First version 
    63 * _v0.1.1_ Should now work with post titles & post slugs/names 
    64 * _v0.1.2_ Meta box content now displays inside an unordered list 
    65 * _v0.1.2_ Added screenshot, readme.txt for wp.org repo & fixed not echoing that there are no links 
    66 * _v0.1.3_ Minor fixes 
    67 * _v0.2_ Moved to a class, added translation files loading fn. 
    68 * _v0.2.1_ Minor fixes, added translation - props patrickmatsumura (see authors file) 
    69 * _v0.2.2_ Added authors file, added check for unique links 
    70 * _v0.2.4_ Added markup & markup filter functions and a initial settings array for further extension 
    71 * _v0.2.5_ Added auto-correction for li elements & container 
    72 * _v0.2.6_ Added singular/plural translation strings. Grouped results by post type column. 
     62* _v0.1_     First version 
     63* _v0.1.1_   Should now work with post titles & post slugs/names 
     64* _v0.1.2_   Meta box content now displays inside an unordered list 
     65* _v0.1.2_   Added screenshot, readme.txt for wp.org repo & fixed not echoing that there are no links 
     66* _v0.1.3_   Minor fixes 
     67* _v0.2_     Moved to a class, added translation files loading fn. 
     68* _v0.2.1_   Minor fixes, added translation - props patrickmatsumura (see authors file) 
     69* _v0.2.2_   Added authors file, added check for unique links 
     70* _v0.2.4_   Added markup & markup filter functions and a initial settings array for further extension 
     71* _v0.2.5_   Added auto-correction for li elements & container 
     72* _v0.2.6_   Added singular/plural translation strings. Grouped results by post type column. 
    7373* _v0.2.6.1_ Reworked translation files. 
    7474* _v0.2.6.2_ Avoids loading on every $_REQUEST. Now only loads on post.php in admin (post/page/cpt new/edit) screens 
     
    7777* _v0.2.6.5_ Added wrapper function to call plugin data 
    7878* _v0.2.6.6_ Moved Text Domain to plugin header comment for easier maintainance and transparency  
    79 * _v0.2.7_ Added native WP admin UI table to the meta box  
     79* _v0.2.7_   Added native WP admin UI table to the meta box  
    8080* _v0.2.7.1_ Moved to admin edit post permalinks  
    81 * _v0.2.8_ Added better update messages for plugin list screen 
    82 * _v0.2.9_ Moved from a filter for the meta box to an action to override the output of the meta box content 
    83 * _v0.3_ Language & Typo fixes. Final, stable 0.3 release. 
     81* _v0.2.8_   Added better update messages for plugin list screen 
     82* _v0.2.9_   Moved from a filter for the meta box to an action to override the output of the meta box content 
     83* _v0.3_     Language & Typo fixes. Final, stable 0.3 release. 
     84* _v0.4_     Now supports pagination for the meta box to take less space in the UI in cases where there are more than just a few links 
     85* _v0.5_     Now supports sorting by column 
     86* _v0.5.1_   Separate textdomain function 
     87* _v0.5.2_   Prepared SQL 
     88* _v0.5.3_   Alignment for code in repo 
     89* _v0.5.4_   Empty posts fix 
     90* _v0.6_     Major improvements in code length 
     91* _v0.6.1_   Shortened admin table class 
  • internal-link-checker/trunk/readme.txt

    r464459 r593418  
    11=== Plugin Name === 
    22Plugin Name:        Internal Link Checker 
    3 Plugin URI:         https://github.com/franz-josef-kaiser/Internal-Link-Check 
     3Plugin URI:         http://unserkaiser.com/plugins/internal-link-checker/ 
    44Author:             Franz Josef Kaiser, Patrick Matsumura 
    5 Author URI:         https://plus.google.com/u/0/107110219316412982437 
     5Author URI:         http://unserkaiser.com/ 
    66Tags:               admin, link, links, meta, box, meta_box, missing, blogroll, broken, maintenance, posts, 404 
    77Requires at least:  3.1 
    8 Tested up to:       3.3 
    9 Stable tag:         0.3 
     8Tested up to:       3.4 
     9Stable tag:         0.6 
    1010 
    1111== Description == 
     
    134134= v0.3 = 
    135135Final stable release with new WP Admin Tables class API in use. Typo & Language fixes, fully translated 
     136 
     137= v0.4 = 
     138Now supports pagination for the meta box to take less space in the UI in cases where there are more than just a few links 
     139 
     140= v0.5 = 
     141Now supports sorting by column 
     142 
     143= v0.5.1 = 
     144Separate textdomain function 
     145 
     146= v0.5.2 = 
     147Prepare SQL 
     148 
     149= v0.5.3 = 
     150Code styling 
     151 
     152= v0.5.4 = 
     153Empty posts fix 
     154 
     155= v0.6 = 
     156Major improvements in code length 
     157 
     158= v0.6.1 = 
     159Shortened admin table class 
Note: See TracChangeset for help on using the changeset viewer.