Development

Changeset 10773

You must first sign up to be able to contribute.

Changeset 10773

Show
Ignore:
Timestamp:
08/11/08 12:16:33 (11 months ago)
Author:
xavier
Message:

sfPropelActAsCommentableBehaviorPlugin: published new version of the plugin, with bugfixes and new features

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • plugins/sfPropelActAsCommentableBehaviorPlugin/trunk/README

    r7534 r10773  
    1 = sfPropelActAsCommentableBehaviorPlugin = 
    2  
    3 == Introduction == 
    4 This behavior permits to attach comments to Propel objects. It provides a  
     1# sfPropelActAsCommentableBehaviorPlugin 
     2 
     3## Introduction 
     4 
     5This behavior permits to attach comments to Propel objects. It provides a 
    56module for enabling comments in your application in less than 3 minutes. 
    67 
    7 == Features == 
    8  
    9  * add/remove comment(s) on an object 
    10  * unit-tested 
    11  * comment module, with ajax support and layout customization 
    12  * comment namespaces (separate comments for the front-office and the  
     8## Features 
     9 
     10  * add/remove comment(s) on an object 
     11  * unit-tested 
     12  * comment module, with ajax support and layout customization 
     13  * comment namespaces (separate comments for the front-office and the 
    1314 back-office, for instance) 
    14  * comment admin-module 
    15  
    16 == Screenshots == 
    17 [[Image(sfPropelActAsCommentableBehaviorPlugin_comment_1.png, 25%)]] 
    18 [[Image(sfPropelActAsCommentableBehaviorPlugin_comment_2.png, 25%)]] 
    19 [[Image(sfPropelActAsCommentableBehaviorPlugin_comment_3.png, 25%)]] 
    20  
    21  
    22 == Philosophy of the stuff == 
    23  
    24  * commentable objects must have a primary key 
    25  * comments can only be attached on objects that have already been saved 
    26  * comments are saved when applied 
    27  
    28 == Get it installed == 
    29  
    30  * go to your project's root 
    31  
    32  * Install the plugin: 
    33    {{{ 
    34      ./symfony plugin-install http://plugins.symfony-project.com/sfPropelActAsCommentableBehaviorPlugin 
    35    }}} 
    36  
    37  * if not already done, enabled behaviors in config/propel.ini: 
    38    {{{ 
    39      propel.builder.addBehaviors = true 
    40    }}} 
    41  
    42  * edit the classes that you want to make commentable. For instance, for lib/model/Post.php: 
    43    {{{ 
    44    #!php 
    45    <?php 
    46      class Post extends BasePost 
    47      { 
    48      } 
    49  
    50      sfPropelBehavior::add('Post', array('sfPropelActAsCommentableBehavior')); 
    51    }}} 
    52  
    53  * rebuild the model: 
    54    {{{ 
    55      ./symfony propel-build-all 
    56    }}} 
    57  
    58  * clear the cache: 
    59    {{{ 
    60      ./symfony cc 
    61    }}} 
    62  
    63 If you want to take profit of the included comment module, you should also  
     15  * comment admin-module 
     16  * gravatar support 
     17  * comments validation and formatting support 
     18 
     19## Screenshots 
     20 
     21![sfPropelActAsCommentableBehaviorPlugin_comment_1.png](http://trac.symfony-project.org/attachment/wiki/sfPropelActAsCommentableBehaviorPlugin/sfPropelActAsCommentableBehaviorPlugin_comment_1.png?format=raw) 
     22![sfPropelActAsCommentableBehaviorPlugin_comment_2.png](http://trac.symfony-project.org/attachment/wiki/sfPropelActAsCommentableBehaviorPlugin/sfPropelActAsCommentableBehaviorPlugin_comment_2.png?format=raw) 
     23![sfPropelActAsCommentableBehaviorPlugin_comment_3.png](http://trac.symfony-project.org/attachment/wiki/sfPropelActAsCommentableBehaviorPlugin/sfPropelActAsCommentableBehaviorPlugin_comment_3.png?format=raw) 
     24 
     25 
     26## Philosophy of the stuff 
     27 
     28  * commentable objects must have a primary key 
     29  * comments can only be attached on objects that have already been saved 
     30  * comments are saved when applied 
     31 
     32## Get it installed 
     33 
     34  * go to your project's root 
     35 
     36  * Install the plugin: 
     37 
     38        ./symfony plugin-install http://plugins.symfony-project.com/sfPropelActAsCommentableBehaviorPlugin 
     39 
     40  * if not already done, enabled behaviors in config/propel.ini: 
     41 
     42        propel.builder.addBehaviors = true 
     43 
     44  * edit the classes that you want to make taggable. For instance, for lib/model/Post.php: 
     45 
     46        class Post extends BasePost 
     47        { 
     48        } 
     49 
     50        sfPropelBehavior::add('Post', array('sfPropelActAsCommentableBehavior')); 
     51 
     52  * rebuild the model: 
     53 
     54        ./symfony propel-build-all 
     55 
     56  * clear the cache: 
     57 
     58        ./symfony cc 
     59 
     60 
     61If you want to take profit of the included comment module, you should also 
    6462complete the following steps: 
    65  * activate the "sfComment" module in your app's settings.yml: 
    66    {{{ 
    67       enabled_modules:   [default, sfComment] 
    68    }}} 
    69  
    70  * add the following lines in your app.yml: 
    71    {{{ 
    72 all: 
    73   sfPropelActAsCommentableBehaviorPlugin: 
    74     use_ajax:         true 
    75     css:              true 
    76     anonymous: 
    77       enabled:        true 
    78       layout: 
    79         name:         required 
    80         email:        required 
    81         title:        optional 
    82         comment:      required 
    83       name:           Anonymous User 
    84     user: 
    85       enabled:        true 
    86       layout: 
    87         title:        optional 
    88         comment:      required 
    89       table:          sf_guard_user 
    90       id:             id 
    91       class:          sfGuardUser 
    92       id_method:      getId 
    93       toString:       __toString 
    94     namespaces: 
    95       backend:        administrator 
    96     count: 
    97       enabled:        true 
    98       method:         setSfCommentCount 
    99       namespace:      frontend 
    100    }}} 
    101  
    102 === Optional settings === 
    103 The plugin has been designed to allow comments from authenticated users, as  
    104 well as anonymous users. But in general, you will want to adapt the layout of  
    105 the form, depending on whether the user is authenticated or not. In the app.yml  
     63 
     64  * activate the "sfComment" module in your app's settings.yml: 
     65 
     66        enabled_modules:   [default, sfComment] 
     67 
     68 
     69  * add the following lines in your app.yml: 
     70 
     71        all: 
     72          sfPropelActAsCommentableBehaviorPlugin: 
     73            allowed_tags: 
     74              a:              <a> 
     75              blockquote:     <blockquote> 
     76              code:           <code> 
     77              em:             <em> 
     78              i:              <i> 
     79              p:              <p> 
     80              strong:         <strong> 
     81            anonymous: 
     82              enabled:        true 
     83              layout: 
     84                name:         required 
     85                email:        required 
     86                website:      optional 
     87                title:        optional 
     88                comment:      required 
     89              name:           Anonymous User 
     90            css:              false 
     91            count: 
     92              enabled:        true 
     93              method:         setSfCommentCount 
     94              namespace:      frontend 
     95            date_format:      words 
     96            hide_form:        true 
     97            namespaces: 
     98              backend:        administrator 
     99            use_ajax:         true 
     100            use_gravatar:     true 
     101            user: 
     102              enabled:        true 
     103              layout: 
     104                title:        optional 
     105                comment:      required 
     106              table:          sf_guard_user 
     107              id:             id 
     108              class:          sfGuardUser 
     109              id_method:      getId 
     110              toString:       __toString 
     111 
     112 
     113### Optional settings 
     114 
     115The plugin has been designed to allow comments from authenticated users, as 
     116well as anonymous users. But in general, you will want to adapt the layout of 
     117the form, depending on whether the user is authenticated or not. In the app.yml 
    106118file, you can tweak the default setup: 
    107  * the '''use_ajax''' rule indicates whether or not the comment system must use  
     119 
     120  * the **allowed_tags** rule fixes the list of allowed html tags in the comment 
     121 field. All the other html tags will be removed by HTMLPurifier. 
     122  * the **anonymous** rules will tweak the way the plugin handles anonymous 
     123 comments: 
     124   * **enabled** : enables or disables anonymous comments. 
     125   * **layout** : defines the layout of the comment form. Required fields will 
     126 get a "required class" and will get validated. If you want a field 
     127 not to appear (for instance, the "title" field), simply remove the 
     128 associated line. 
     129   * **name** : the default name of the user, in case the anonymous comment 
     130   form does not as for an author name. 
     131  * the **css** rule tells the plugin whether or not to include the default CSS 
     132 file of the plugin 
     133  * the **count** rules are useful for optimizing objects sorting on their 
     134  comments count. See the paragraph "Retrieving one object's comments number" 
     135  for more details. 
     136  * the **date_format** option tells the plugin in which format the date of one 
     137 comment should be displayed. This can be "words" (the default tweak), or any 
     138 Symfony-compliant formatting string 
     139  * the **hide_form** option lets the plugin hide the comment form when there 
     140 is no comment. The comment form can then be displayed by clicking on a "add 
     141 comment" link 
     142  * the **namespaces** parameter lists the namespaces for which a security 
     143 check must be made: 
     144   * when a namespace is listed under the **namespaces** parameter, its value 
     145   represents the required credentials for writing in it. 
     146   * If you use namespaces in your comments, please make sure  that you fill 
     147   this parameter accordingly to your needs. For instance, if your application 
     148   provide back-office internal comments, you won't want a normal front-office 
     149   user being able to add comments on the back-office. 
     150   * You can of course use your own namespaces names (ie., "backend" 
     151 and "frontend" are not compulsory names). 
     152  * the **use_ajax** rule indicates whether or not the comment system must use 
    108153 ajax. 
    109  * the '''css''' rule indicates whether or not to load the supplied styles. 
    110  * the '''anonymous''' rules will tweak the way the plugin handles anonymous  
    111  comments: 
    112    * '''enabled''' : enables or disables anonymous comments. 
    113    * '''layout''' : defines the layout of the comment form. Required fields  
    114    will get a "required class" and will get validated. If you want a field not  
    115    to appear (for instance, the "title" field), simply remove the associated  
     154  * the **use_gravatar** rule indicates whether or not the comment system must 
     155 display gravatar. This option uses the [sfGravatarPlugin](http://www.symfony-project.org/plugins/sfGravatarPlugin). 
     156  * the **user** rules will tweak the way the plugin handles comments from 
     157 authenticated users: 
     158   * **enabled** : enables or disables comments from authenticated users. 
     159   * **layout** : defines the layout of the comment form. Required fields 
     160   will get a "required class" and will get validated. If you want a field not 
     161   to appear (for instance, the "title" field), simply remove the associated 
    116162   line. 
    117    * '''name''' : the default name of the user, in case the anonymous comment  
    118    form does not as for an author name. 
    119  * the '''user''' rules will tweak the way the plugin handles comments from  
    120  authenticated users: 
    121    * '''enabled''' : enables or disables comments from authenticated users. 
    122    * '''layout''' : defines the layout of the comment form. Required fields  
    123    will get a "required class" and will get validated. If you want a field not  
    124    to appear (for instance, the "title" field), simply remove the associated  
    125    line. 
    126    * '''table''' : name of the table that stores the users data. 
    127    * '''id''' : name of the primary key of a user in the users table. 
    128    * '''class''' : class associated to the users. 
    129    * '''id_method''' : name of a method of your user's class, that permits to  
    130    get the authenticated user id. Usually, you will have to define this method  
     163   * **table** : name of the table that stores the users data. 
     164   * **id** : name of the primary key of a user in the users table. 
     165   * **class** : class associated to the users. 
     166   * **id_method** : name of a method of your user's class, that permits to 
     167   get the authenticated user id. Usually, you will have to define this method 
    131168   in the myUser.class.php file. 
    132    * '''toString''' : name of a method that outputs the name of a user (an  
     169   * **toString** : name of a method that outputs the name of a user (an 
    133170   instance of the class defined two lines before) 
    134  * the '''namespaces''' parameter lists the namespaces for which a security  
    135  check must be made: 
    136    * when a namespace is listed under the '''namespaces''' parameter, its value  
    137    represents the required credentials for writing in it. 
    138    * If you use namespaces in your comments, please make sure  that you fill  
    139    this parameter accordingly to your needs. For instance, if your application  
    140    provide back-office internal comments, you won't want a normal front-office  
    141    user being able to add comments on the back-office. 
    142    * You can of course use your own namespaces names (ie., "backend" and  
    143    "frontend" are not compulsory names). 
    144  * the '''count''' rules are useful for optimizing objects sorting on their  
    145  comments count. See the paragraph  
    146  [#Retrievingoneobjectscommentsnumber Retrieving one object's comments number]  
    147  for more details. 
    148  
    149 == Usage == 
    150  
    151 === How to use the comments module === 
    152 You do not have to know the plugin internals in order to get started with the  
     171 
     172## Usage 
     173 
     174### How to use the comments module 
     175 
     176You do not have to know the plugin internals in order to get started with the 
    153177behavior. You simply have to include two components: 
    154  * one for displaying the comments associated to an object 
    155  * an other for displaying the comment form 
     178 
     179  * one for displaying the comments associated to an object 
     180  * an other for displaying the comment form 
    156181 
    157182For instance, when displaying a blog post, add in the view PHP file: 
    158 {{{ 
    159 #!php 
    160 <h2><?php echo $post->getTitle(); ?></h2> 
    161  
    162 <p><?php echo $post->getText(); ?></p> 
    163  
    164 <h3>Comments</h3> 
    165 <?php 
    166 include_component('sfComment', 'commentList', array('object' => $post)); 
    167 include_component('sfComment', 'commentForm', array('object' => $post)); 
    168 ?> 
    169 }}} 
    170  
    171 By default, the comment list displays all the comments, whatever their  
    172 namespace. If you want to display comments for the namespace "gerard", then  
    173 simply pass this optionnal parameter to the component. Comment namespaces are  
    174 particularly useful when you want to use the comments system for both  
    175 front-office and back-office environnements, with separate comment lists: 
    176  
    177 {{{ 
    178 #!php 
    179 <?php 
    180 include_component('sfComment', 'commentList', array('object' => $post, 'namespace' => 'gerard')); 
    181 ?> 
    182 }}} 
    183  
    184 This also works for the comment-form component. This way, the following form  
     183 
     184    <h2><?php echo $post->getTitle(); ?></h2> 
     185 
     186    <p><?php echo $post->getText(); ?></p> 
     187 
     188    <?php 
     189    include_component('sfComment', 'commentList', array('object' => $post)); 
     190    include_component('sfComment', 'commentForm', array('object' => $post)); 
     191    ?> 
     192 
     193By default, the comment list displays all the comments that do not belong to 
     194one namespace. If you want to display comments for the namespace "gerard", then 
     195simply pass this optionnal parameter to the component: 
     196 
     197    include_component('sfComment', 'commentList', array('object' => $post, 'namespace' => 'gerard')); 
     198 
     199This also works for the comment-form component. This way, the following form 
    185200will add the comment to the namespace "gerard": 
    186 {{{ 
    187 #!php 
    188 <?php 
    189 include_component('sfComment', 'commentList', array('object' => $post, 'namespace' => 'gerard')); 
    190 ?> 
    191 }}} 
    192  
    193 You can protect namespaces from being accessed when the current user does not  
    194 have some credentials ; have a look at [#Optionalsettings the configuration file]  
     201 
     202    include_component('sfComment', 'commentList', array('object' => $post, 'namespace' => 'gerard')); 
     203 
     204You can protect namespaces from being accessed when the current user does not 
     205have some credentials ; have a look at [the configuration file](#Optionalsettings) 
    195206for further informations. 
    196207 
    197 === Attaching comments to a commentable object === 
     208### Attaching comments to a commentable object 
     209 
    198210Consider a Propel "Post" class: 
    199211 
    200 {{{ 
    201 #!php 
    202 <?php 
    203 class Post extends BasePost 
    204 
    205 
    206  
    207 sfPropelBehavior::add('Post', array('sfPropelActAsCommentableBehavior')); 
    208 }}} 
    209  
    210 When the sfPropelActAsCommentableBehaviorPlugin is applied to the Post class,  
     212    class Post extends BasePost 
     213    { 
     214    } 
     215 
     216    sfPropelBehavior::add('Post', array('sfPropelActAsCommentableBehavior')); 
     217 
     218When the sfPropelActAsCommentableBehaviorPlugin is applied to the Post class, 
    211219that class automagically gets commentable: 
    212 {{{ 
    213 #!php 
    214 <?php 
    215 $post = new Post(); 
    216 // blah 
    217 $post->save(); 
    218 $post->addComment('This is a cool comment.'); 
    219 $post->addComment(array('title' => 'this is a cool title', 'text' => 'this is a cool comment', 'author_id' => sfContext::getInstance()->getUser()->getUserId())); 
    220 $post->addComment(array('This is a cool comment.', 'this is one other comment')); 
    221 }}} 
    222  
    223 === Retrieving one object's comments === 
     220 
     221    $post = new Post(); 
     222    // blah 
     223    $post->save(); 
     224    $post->addComment('This is a cool comment.'); 
     225    $post->addComment(array('title' => 'this is a cool title', 'text' => 'this is a cool comment', 'author_id' => sfContext::getInstance()->getUser()->getUserId())); 
     226    $post->addComment(array('This is a cool comment.', 'this is one other comment')); 
     227 
     228 
     229### Retrieving one object's comments 
     230 
    224231It is possible to retrieve comments from a commentable object: 
    225 {{{ 
    226 #!php 
    227 <?php 
    228 $post = PostPeer::retrieveByPk(1); 
    229 $comments = $post->getComments(); 
    230  
    231 foreach ($comments as $comment) 
    232 
    233   echo '<p>'.$comment->getText().'</p>'; 
    234 
    235 }}} 
    236  
    237 === Removing one object's comment === 
     232 
     233    $post = PostPeer::retrieveByPk(1); 
     234    $comments = $post->getComments(); 
     235 
     236    foreach ($comments as $comment) 
     237    { 
     238      echo '<p>'.$comment->getText().'</p>'; 
     239    } 
     240 
     241### Removing one object's comment 
     242 
    238243Of course, comments can also be removed: 
    239 {{{ 
    240 #!php 
    241 <?php 
    242 $post = PostPeer::retrieveByPk(1); 
    243 $post->removeComment(12); 
    244 $post->clearComments(); 
    245 }}} 
    246  
    247 === Retrieving one object's comments number === 
     244 
     245    $post = PostPeer::retrieveByPk(1); 
     246    $post->removeComment(12); 
     247    $post->clearComments(); 
     248 
     249### Retrieving one object's comments number 
    248250It is rather easy to retrieve the number of comments attached to one object: 
    249 {{{ 
    250 #!php 
    251 <?php 
    252 $post = PostPeer::retrieveByPk(1); 
    253 $nb_comments = $post->getNbComments(); 
    254 }}} 
    255  
    256 In order to retrieve all the comments in one specific namespace, simply add a  
     251 
     252    $post = PostPeer::retrieveByPk(1); 
     253    $nb_comments = $post->getNbComments(); 
     254 
     255In order to retrieve all the comments in one specific namespace, simply add a 
    257256"namespace" parameter: 
    258 {{{ 
    259 #!php 
    260 <?php 
    261 $post = PostPeer::retrieveByPk(1); 
    262 $nb_comments = $post->getNbComments(array('namespace' => 'frontend')); 
    263 }}} 
    264  
    265 One common problem is about sorting objects by their number of comments. For  
    266 the moment, the plugin does not propose any immediate solution, so you will have  
     257 
     258    $post = PostPeer::retrieveByPk(1); 
     259    $nb_comments = $post->getNbComments(array('namespace' => 'frontend')); 
     260 
     261One common problem is about sorting objects by their number of comments. For 
     262the moment, the plugin does not propose any immediate solution, so you will have 
    267263to join with the comments table: 
    268 {{{ 
    269 SELECT `post.title`, 
    270        `post.text`, 
    271        COUNT(`sf_comment.id`) as `count` 
    272 FROM `post`, `sf_comment` 
    273 WHERE `sf_comment.commentable_id`=`post.id` 
    274       AND `sf_comment.commentable_model`='post' 
    275       GROUP BY (`sf_comment.commentable_id`) 
    276 SORT BY `count` DESC; 
    277 }}} 
    278  
    279 However, a trick is available in the plugin: if you create a column named  
    280 "sf_comment_count" (or something else, depending on your app.yml configuration)  
    281 in the commentable model, its value will be updated each time a new comment is  
    282 added using the {{{addComment()}}} method. 
    283  
    284 Several app.yml parameters are involved in this trick: 
    285 {{{    
     264 
     265    SELECT `post.title`, 
     266           `post.text`, 
     267           COUNT(`sf_comment.id`) as `count` 
     268    FROM `post`, `sf_comment` 
     269    WHERE `sf_comment.commentable_id`=`post.id` 
     270          AND `sf_comment.commentable_model`='post' 
     271          GROUP BY (`sf_comment.commentable_id`) 
     272    SORT BY `count` DESC; 
     273 
     274However, a trick is available in the plugin: if you create a column named 
     275"sf_comment_count" (or something else, depending on your app.yml configuration) 
     276in the commentable model, its value will be updated each time a new comment is 
     277added using the ``addComment()`` method. 
     278 
     279Several ``app.yml`` parameters are involved in this trick: 
     280 
    286281    count: 
    287282      enabled:        true               # whether or not the method must be called for updating the comments count 
    288283      method:         setSfCommentCount  # name of the method to call in order to update the comments count. If you call the comments count column "gerard", simply put "setGerard" on this line 
    289284      namespace:      frontend           # namespaces of the comments that have to be counted (usefull for frontend counts). If you don't use namespaces, don't fill this line. 
    290 }}} 
     285 
    291286 
    292287With this trick, sorting objects by their comment numbers is rather straightforward: 
    293 {{{ 
    294 $c = new Criteria(); 
    295 $c->addDescendingOrderByColumn(PostPeer::SF_COMMENT_COUNT); 
    296 $posts = PostPeer::doSelect($c); 
    297 }}} 
    298  
    299 == API == 
     288 
     289    $c = new Criteria(); 
     290    $c->addDescendingOrderByColumn(PostPeer::SF_COMMENT_COUNT); 
     291    $posts = PostPeer::doSelect($c); 
     292 
     293 
     294## API 
     295 
    300296The behavior implement the following methods: 
    301  * '''addComment($comment)''' - Adds a comment to the object. The "comment"  
    302  param can be an associative array (in which each element represents one of the  
    303  comment properties), or an array of associative arrays. In this case, it adds  
     297 
     298  * **addComment($comment)** - Adds a comment to the object. The "comment" 
     299 param can be an associative array (in which each element represents one of the 
     300 comment properties), or an array of associative arrays. In this case, it adds 
    304301 all the comments to the object. 
    305  * '''clearComments($namespace = null)''' - Deletes all the comments attached to the object 
    306  * '''getComments($options = array(), Criteria $criteria = null)''' - Returns  
    307  the list of the comments attached to the object. The options array may contain  
    308  several restriction options: namespace, order. The Criteria may be used to  
    309  programmatically restrict the results. 
    310  * '''getNbComments($options = array(), Criteria $criteria = null)''' - Returns  
    311  the number of the comments attached to the object.The options array may contain  
    312  several restriction options: namespace, order. The Criteria may be used to  
    313  programmatically restrict the results
    314  * '''removeComment($comment_id)''' - Removes one comment from the object. 
    315  
    316 == Unit testing == 
     302  * **clearComments()** - Deletes all the comments attached to the object 
     303  * **getComments($options = array())** - Returns the list of the comments 
     304 attached to the object. The options array may contain several restriction 
     305 options: namespace, order. The Criteria may be used to programmatically 
     306 restrict the results. 
     307  * **getNbComments()** - Returns the number of the comments attached to the 
     308  object. The options array may contain several restriction options: namespace, 
     309  order. The Criteria may be used to programmatically restrict the results. 
     310  * **removeComment($comment_id)** - Removes one comment from the object
     311 
     312## Unit testing 
     313 
    317314The plugin has been deeply unit-tested. The tests are located in test/unit/sfPropelActAsCommentableBehaviorTest.php. If you want to run them: 
    318  * install the plugin 
    319  * configure a model for using it, for instance "Post" 
    320  * edit this file and, if required, modify the application name and the TEST_CLASS constant, line 3: 
    321    {{{ 
    322      define('TEST_CLASS', 'Post'); 
    323    }}} 
    324  * run the tests: 
    325    {{{ 
    326      php plugins/sfPropelActAsCommentableBehaviorPlugin/test/unit/sfPropelActAsCommentableBehaviorTest.php 
    327    }}} 
    328  
    329 == In-depth usage tutorial == 
    330 This part is a complete tutorial for using the plugin both in front and  
     315 
     316  * install the plugin 
     317  * configure a model for using it, for instance "Post" 
     318  * edit this file and, if required, modify the application name and the TEST_CLASS constant, line 3: 
     319 
     320        define('TEST_CLASS', 'Post'); 
     321 
     322  * run the tests: 
     323 
     324        php plugins/sfPropelActAsCommentableBehaviorPlugin/test/unit/sfPropelActAsCommentableBehaviorTest.php 
     325 
     326 
     327## In-depth usage tutorial 
     328 
     329This part is a complete tutorial for using the plugin both in front and 
    331330back-office. 
    332331 
    333 === Install the plugin === 
    334  * go to your project's root 
    335  
    336  * Install the plugin: 
    337    {{{ 
    338      ./symfony plugin-install http://plugins.symfony-project.com/sfPropelActAsCommentableBehaviorPlugin 
    339    }}} 
    340  
    341  * if not already done, enabled behaviors in config/propel.ini: 
    342    {{{ 
    343      propel.builder.addBehaviors = true 
    344    }}} 
    345  
    346  * edit the classes that you want to make commentable. For instance, for lib/model/Post.php: 
    347    {{{ 
    348    #!php 
    349    <?php 
    350      class Post extends BasePost 
    351      { 
    352      } 
    353  
    354      sfPropelBehavior::add('Post', array('sfPropelActAsCommentableBehavior')); 
    355    }}} 
    356  
    357  * rebuild the model: 
    358    {{{ 
    359      ./symfony propel-build-all 
    360    }}} 
    361  
    362  * clear the cache: 
    363    {{{ 
    364      ./symfony cc 
    365    }}} 
    366  
    367 === Set up the plugin === 
    368  * activate the "sfComment" module in the settings.yml of the frontend application: 
    369    {{{ 
    370       enabled_modules:   [default, sfComment] 
    371    }}} 
    372  
    373  * activate both the "sfComment" and the "sfCommentAdmin" modules in the settings.yml of the backend application: 
    374    {{{ 
    375       enabled_modules:   [default, sfComment, sfCommentAdmin] 
    376    }}} 
    377  
    378  * add the following lines in the app.yml of both '''applications''': 
    379    {{{ 
    380 all: 
    381   sfPropelActAsCommentableBehaviorPlugin: 
    382     use_ajax:         true 
    383     css:              true 
    384     anonymous: 
    385       enabled:        true 
    386       layout: 
    387         name:         required 
    388         email:        required 
    389         title:        optional 
    390         comment:      required 
    391       name:           Anonymous User 
    392     user: 
    393       enabled:        true 
    394       layout: 
    395         title:        optional 
    396         comment:      required 
    397       table:          sf_guard_user 
    398       id:             id 
    399       class:          sfGuardUser 
    400       id_method:      getId 
    401       toString:       __toString 
    402     namespaces: 
    403       backend:        administrator 
    404    }}} 
    405  
    406  * tweak these values accordingly to the  
    407  [#Optionalsettings previously  explained settings]. Please note that only  
    408  administrator can add comments in the comments "backend" namespace. 
    409  
    410 === Add comments in front-office === 
    411 Include the sfComment components where the comments and the commentform should appear: 
    412 {{{ 
    413 #!php 
    414 <h2><?php echo $post->getTitle(); ?></h2> 
    415  
    416 <p><?php echo $post->getText(); ?></p> 
    417  
    418 <h3>Comments</h3> 
    419 <?php 
    420 include_component('sfComment', 'commentList', array('object' => $post, 'namespace' => 'frontend')); 
    421 include_component('sfComment', 'commentForm', array('object' => $post, 'namespace' => 'frontend')); 
    422 ?> 
    423 }}} 
    424 The use of a "namespace" is not required in this case; but it is advised, as it  
    425 makes it easier to find the comments back. 
    426  
    427 === Add comments in back-office === 
    428 Include the sfComment components where the comments and the commentform shoumd appear: 
    429 {{{ 
    430 #!php 
    431 <?php 
    432 include_component('sfComment', 'commentList', array('object' => $post, 'namespace' => 'backend')); 
    433 include_component('sfComment', 'commentForm', array('object' => $post, 'namespace' => 'backend')); 
    434 ?> 
    435 }}} 
    436  
    437  * you're done! Only users with "administrator" credential are able to add  
    438  comments to objects in the back-office, while everyone can add comments in the  
    439  front-office. You can tweak the required credentials by modifying the app.yml  
    440  file. 
    441  
    442 === Comments administration === 
    443  * optionnaly, have a look at the sfCommentAdmin module, that uses the  
     332### Install the plugin 
     333 
     334  * go to your project's root 
     335 
     336  * Install the plugin: 
     337 
     338        ./symfony plugin-install http://plugins.symfony-project.com/sfPropelActAsCommentableBehaviorPlugin 
     339 
     340 
     341  * if not already done, enabled behaviors in config/propel.ini: 
     342 
     343        propel.builder.addBehaviors = true 
     344 
     345 
     346  * edit the classes that you want to make taggable. For instance, for lib/model/Post.php: 
     347 
     348        <?php 
     349        class Post extends BasePost 
     350        { 
     351        } 
     352 
     353        sfPropelBehavior::add('Post', array('sfPropelActAsCommentableBehavior')); 
     354 
     355 
     356  * rebuild the model: 
     357 
     358        ./symfony propel-build-all 
     359 
     360 
     361  * clear the cache: 
     362 
     363        ./symfony cc 
     364 
     365 
     366### Set up the plugin 
     367 
     368  * activate the "sfComment" module in the settings.yml of the frontend application: 
     369 
     370        enabled_modules:   [default, sfComment] 
     371 
     372 
     373  * activate both the "sfComment" and the "sfCommentAdmin" modules in the settings.yml of the backend application: 
     374 
     375        enabled_modules:   [default, sfComment, sfCommentAdmin] 
     376 
     377 
     378  * add the following lines in the app.yml **of both applications**, or in the 
     379 project's app.yml: 
     380 
     381        all: 
     382          sfPropelActAsCommentableBehaviorPlugin: 
     383            allowed_tags: 
     384              a:              <a> 
     385              blockquote:     <blockquote> 
     386              code:           <code> 
     387              em:             <em> 
     388              i:              <i> 
     389              p:              <p> 
     390              strong:         <strong> 
     391            anonymous: 
     392              enabled:        true 
     393              layout: 
     394                name:         required 
     395                email:        required 
     396                website:      optional 
     397                comment:      required 
     398              name:           Anonymous User 
     399            css:              false 
     400            count: 
     401              enabled:        false 
     402              method:         setSfCommentCount 
     403              namespace:      frontend 
     404            date_format:      words 
     405            hide_form:        true 
     406            namespaces: 
     407              backend:        administrator 
     408            use_ajax:         true 
     409            use_gravatar:     true 
     410            user: 
     411              enabled:        false 
     412              layout: 
     413                title:        optional 
     414                comment:      required 
     415              table:          sf_guard_user 
     416              id:             id 
     417              class:          sfGuardUser 
     418              id_method:      getId 
     419              toString:       __toString 
     420 
     421 
     422  * tweak these values accordingly to the "Optional settings" paragraph. In 
     423 this example, please note that only administrators can add comments in the 
     424 comments "backend" namespace. 
     425 
     426### Add comments in front-office 
     427 
     428Include the ``sfComment`` components where the comments and the comment form 
     429should appear: 
     430 
     431    <h2><?php echo $post->getTitle(); ?></h2> 
     432 
     433    <p><?php echo $post->getText(); ?></p> 
     434 
     435    <?php 
     436    include_component('sfComment', 'commentList', array('object' => $post, 'namespace' => 'frontend')); 
     437    include_component('sfComment', 'commentForm', array('object' => $post, 'namespace' => 'frontend')); 
     438    ?> 
     439 
     440The use of a "namespace" is not required in this case; but it is 
     441advised, as it makes it easier to find the comments back. 
     442 
     443### Add comments in back-office 
     444 
     445Include the ``sfComment`` components where the comments and the commentform 
     446should appear: 
     447 
     448    <?php 
     449    include_component('sfComment', 'commentList', array('object' => $post, 'namespace' => 'backend')); 
     450    include_component('sfComment', 'commentForm', array('object' => $post, 'namespace' => 'backend')); 
     451    ?> 
     452 
     453  * you're done! Only users with "administrator" credential are able to add 
     454  comments to objects in the back-office, while everyone can add comments in the 
     455  front-office. You can tweak the required credentials by modifying the 
     456 ``app.yml`` file. 
     457 
     458### Comments administration 
     459 
     460  * optionnaly, have a look at the ``sfCommentAdmin`` module, that uses the 
    444461 admin-generator for providing a view of all comments. 
    445462 
    446 == License and credits == 
    447 This plugin is licensed under the MIT license. You can contact the maintainer  
    448 at [http://lacot.org/ xavier@lacot.org] 
    449  
    450 == Changelog == 
    451  
    452 === Version 0.4 - 2007-12-10 === 
    453  * compatibility with escaping=both mode 
    454  * Added unique DOM id for each comment, in the form {{{sf_comment_$id}}}  
    455  (Nicolas Perriault) 
    456  * use a session token instead of passing the object id and model in the request  
    457  (Nicolas Perriault) 
    458  * bugfixes, based on a patch from Michael Nolan (closes #2595): 
    459    * fix anonymous posting (use the token) 
    460    * pre and post addition hooks 
    461  
    462 === version 0.3 - 2007-10-08 === 
    463  * added namespaces support 
    464  * fixed bad index names (thanks to francois) 
    465  * made getComments() more flexible (closes #2312, thanks to FrankStelzer) 
    466  
    467 === version 0.2 - 2007-09-26 === 
    468  * added a Symfony module for posting and displaying comments 
     463## Tweaking the plugin's default module 
     464 
     465  * As every plugin module, the modules bundled in this plugin can be 
     466 overloaded. You simply have to create a module called ``sfComment`` in your 
     467 application, and it will override the plugin's module. 
     468  * the ``sfPropelActAsCommentableStripper`` can also be overloaded. Simply 
     469 create your own class somewhere in your project. This class must be named 
     470 "``sfPropelActAsCommentableStripper``", and must implement a "``clean()``" 
     471 method. For instance, the following stripper won't strip anything (nor validate 
     472 the user's entry): 
     473 
     474 
     475        <?php 
     476        class sfPropelActAsCommentableStripper 
     477        { 
     478          static public function clean($text) 
     479          { 
     480            return $text; 
     481          } 
     482        } 
     483 
     484## License and credits 
     485 
     486This plugin is licensed under the MIT license. You can contact the maintainer 
     487at [xavier@lacot.org](http://lacot.org/). 
     488 
     489## Changelog 
     490 
     491### Version 0.5 - 2008-08-11 
     492 
     493  * fixed XSS bug (closes #3745) 
     494  * switched documentation to the markdown syntax 
     495  * added a "website" field 
     496  * fixed "duplication of DOM id sf_comment_list" bug (closes #3258) 
     497  * allowed formatting in comments (closes #2900): 
     498    * introduced a ``sfPropelActAsCommentableStripper`` class 
     499    * use of [HTMLPurifier](http://htmlpurifier.org/) 
     500  * fixed "title not saved" bug (closes #3086) 
     501 
     502### Version 0.4 - 2007-12-10 
     503 
     504  * compatibility with escaping=both mode 
     505  * added unique DOM id for each comment, in the form `sf_comment_$id` (Nicolas Perriault) 
     506  * use a session token instead of passing the object id and model in the request  (Nicolas Perriault) 
     507  * bugfixes, based on a patch from Michael Nolan (closes #2595): 
     508    * fix anonymous posting (use the token) 
     509    * pre and post addition hooks 
     510 
     511### version 0.3 - 2007-10-08 
     512 
     513  * added namespaces support 
     514  * fixed bad index names (thanks to francois) 
     515  * made ``getComments()`` more flexible (closes #2312, thanks to FrankStelzer) 
     516 
     517### version 0.2 - 2007-09-26 
     518 
     519  * added a Symfony module for posting and displaying comments 
    469520   * ajax support 
    470521   * authenticated users support 
    471522   * form customization 
    472  * added an administration module 
    473  
    474 === version 0.1 - 2007-09-13 === 
    475 Initial public release. Features comments attachment to heterogene Propel  
    476 objects. 
    477  
    478 == Roadmap / Wishlist == 
    479  * have custom configurations for specific comment-forms (and not only app-wide  
     523  * added an administration module 
     524 
     525### version 0.1 - 2007-09-13 
     526 
     527Initial public release. Features comments attachment to heterogene Propel objects. 
     528 
     529## Roadmap / Wishlist 
     530 
     531  * have custom configurations for specific comment-forms (and not only app-wide 
    480532 configurations) 
    481  * make use of a captcha plugin, when a clean one will be available. 
    482  * handle other custom fields in comments. 
     533  * make use of a captcha plugin, when a clean one will be available. 
  • plugins/sfPropelActAsCommentableBehaviorPlugin/trunk/config/schema.yml

    r5427 r10773  
    2020    author_name:       varchar(50) 
    2121    author_email:      varchar(100) 
     22    author_website:    varchar(255) 
    2223    created_at: 
    2324    _indexes: 
  • plugins/sfPropelActAsCommentableBehaviorPlugin/trunk/lib/sfPropelActAsCommentableBehavior.class.php

    r7686 r10773  
    33 * This file is part of the sfPropelActAsCommentableBehavior package. 
    44 * 
    5  * (c) 2007 Xavier Lacot <xavier@lacot.org> 
     5 * (c) 2008 Xavier Lacot <xavier@lacot.org> 
    66 * 
    77 * For the full copyright and license information, please view the LICENSE 
     
    5252        if (strlen($comment['text']) > 0) 
    5353        { 
    54           $comment['text'] = strip_tags($comment['text']); 
     54          if (isset($comment['title'])) 
     55          { 
     56            $comment['title'] = strip_tags($comment['title']); 
     57          } 
     58 
     59          if (isset($comment['title'])) 
     60          { 
     61            $comment['author_name']  = strip_tags($comment['author_name']); 
     62          } 
     63 
     64          $comment['text'] = sfPropelActAsCommentableStripper::clean($comment['text']); 
    5565          $comment['created_at'] = time(); 
    5666 
  • plugins/sfPropelActAsCommentableBehaviorPlugin/trunk/lib/sfPropelActAsCommentableToolkit.class.php

    r6693 r10773  
    22/* 
    33 * This file is part of the sfPropelActAsCommentableBehavior package. 
    4  *  
    5  * (c) 2007 Xavier Lacot <xavier@lacot.org> 
    6  *  
     4 * 
     5 * (c) 2008 Xavier Lacot <xavier@lacot.org> 
     6 * 
    77 * For the full copyright and license information, please view the LICENSE 
    88 * file that was distributed with this source code. 
     
    1111/** 
    1212 * sfPropelActAsCommentableBehavior toolkit class 
    13  *  
     13 * 
    1414 * @author Xavier Lacot 
    1515 * @author Nicolas Perriault 
     
    1717class sfPropelActAsCommentableToolkit 
    1818{ 
    19    
    2019  /** 
    2120   * Add a token to available ones in the user session 
    2221   * and return generated token 
    23    *  
     22   * 
    2423   * @author Nicolas Perriault 
    2524   * @param  string  $object_model 
     
    3736    return $token; 
    3837  } 
    39    
     38 
    4039  /** 
    4140   * Generates token representing a commentable object from its model and its id 
    42    *  
     41   * 
    4342   * @author Nicolas Perriault 
    4443   * @param  string  $object_model 
     
    5049    return md5(sprintf('%s-%s-%s', $object_model, $object_id, sfConfig::get('app_sfPropelActAsCommentableBehaviorPlugin_salt', 'c0mm3nt4bl3'))); 
    5150  } 
    52    
     51 
    5352  /** 
    5453   * Returns true if the passed model name is commentable 
    55    *  
     54   * 
    5655   * @author     Xavier Lacot 
    5756   * @param      string  $object_name 
     
    8180  /** 
    8281   * Retrieve a commentable object 
    83    *  
     82   * 
    8483   * @param  string  $object_model 
    8584   * @param  int     $object_id 
     
    115114    } 
    116115  } 
    117    
     116 
    118117  /** 
    119118   * Retrieve commentable object instance from token 
    120    *  
     119   * 
    121120   * @author Nicolas Perriault 
    122121   * @param  string  $token 
     
    127126    $session = sfContext::getInstance()->getUser(); 
    128127    $tokens = $session->getAttribute('tokens', array(), 'sf_commentables'); 
    129     if (array_key_exists($token, $tokens) && is_array($tokens[$token]) && class_exists($tokens[$token][0])) 
     128 
     129    if (array_key_exists($token, $tokens) 
     130        && is_array($tokens[$token]) 
     131        && class_exists($tokens[$token][0])) 
    130132    { 
    131133      $object_model = $tokens[$token][0]; 
     
    134136    } else return null; 
    135137  } 
    136    
    137138} 
  • plugins/sfPropelActAsCommentableBehaviorPlugin/trunk/modules/sfComment/config/cache.yml

    r7028 r10773  
    22  enabled:    on 
    33  lifetime:   86400 
     4_gravatar: 
     5  enabled:    on 
     6  lifetime:   86400 
  • plugins/sfPropelActAsCommentableBehaviorPlugin/trunk/modules/sfComment/lib/BasesfCommentActions.class.php

    r7192 r10773  
    22/** 
    33 * sfPropelActAsCommentableBehaviorPlugin base actions. 
    4  *  
     4 * 
    55 * @package    plugins 
    6  * @subpackage comment  
     6 * @subpackage comment 
    77 * @author     Xavier Lacot <xavier@lacot.org> 
    88 * @link       http://trac.symfony-project.com/trac/wiki/sfPropelActAsCommentableBehaviorPlugin 
     
    1717    $this->getConfig(); 
    1818 
    19     if ((sfContext::getInstance()->getUser()->isAuthenticated()  
     19    if ((sfContext::getInstance()->getUser()->isAuthenticated() 
    2020         && $this->config_user['enabled']) 
    2121         && $this->getRequest()->getMethod() == sfRequest::POST) 
     
    2323      $token = $this->getRequestParameter('sf_comment_object_token'); 
    2424      $object = sfPropelActAsCommentableToolkit::retrieveFromToken($token); 
    25        
    26       $comment = array('text' => $this->getRequestParameter('sf_comment')); 
     25 
     26      $comment = array('title' => $this->getRequestParameter('sf_comment_title'), 
     27                       'text'  => $this->getRequestParameter('sf_comment')); 
    2728      $id_method = $this->config_user['id_method']; 
    2829      $namespace = $this->getRequestParameter('sf_comment_namespace', null); 
     
    8384      $this->validateNamespace($namespace); 
    8485 
    85       $comment = array('text'         => $this->getRequestParameter('sf_comment'), 
    86                        'author_name'  => $this->getRequestParameter('sf_comment_name'), 
    87                        'author_email' => $this->getRequestParameter('sf_comment_email'),  
    88                        'namespace'    => $namespace); 
     86      $comment = array('title'          => $this->getRequestParameter('sf_comment_title'), 
     87                       'text'           => $this->getRequestParameter('sf_comment'), 
     88                       'author_name'    => $this->getRequestParameter('sf_comment_name'), 
     89                       'author_email'   => $this->getRequestParameter('sf_comment_email'), 
     90                       'author_website' => $this->getRequestParameter('sf_comment_website'), 
     91                       'namespace'      => $namespace); 
    8992 
    9093      foreach (sfMixer::getCallables('sfCommentActions:addComment:pre') as $callable) 
     
    106109        $this->redirect($this->getRequestParameter('sf_comment_referer')); 
    107110      } 
     111    } 
     112    else 
     113    { 
     114      $this->forward404(); 
    108115    } 
    109116 
     
    123130  protected function getConfig() 
    124131  { 
    125     $config_anonymous = array('enabled' => true,  
    126                               'layout'  => array('name' => 'required',  
    127                                                  'email' => 'required',  
    128                                                  'title' => 'optional',  
    129                                                  'comment' => 'required'),  
     132    $config_anonymous = array('enabled' => true, 
     133                              'layout'  => array('name'    => 'required', 
     134                                                 'email'   => 'required', 
     135                                                 'title'   => 'optional', 
     136                                                 'website' => 'optional', 
     137                                                 'comment' => 'required'), 
    130138                              'name'    => 'Anonymous User'); 
    131     $config_user = array('enabled'   => true,  
    132                          'layout'    => array('title' => 'optional',  
    133                                               'comment' => 'required'),  
    134                          'table'     => 'sf_guard_user',  
    135                          'id'        => 'id',  
    136                          'class'     => 'sfGuardUser',  
    137                          'id_method' => 'getUserId',  
    138                          'toString'  => 'toString',  
     139    $config_user = array('enabled'   => true, 
     140                         'layout'    => array('title' => 'optional', 
     141                                              'comment' => 'required'), 
     142                         'table'     => 'sf_guard_user', 
     143                         'id'        => 'id', 
     144                         'class'     => 'sfGuardUser', 
     145                         'id_method' => 'getUserId', 
     146                         'toString'  => 'toString', 
    139147                         'save_name' => false); 
    140148 
  • plugins/sfPropelActAsCommentableBehaviorPlugin/trunk/modules/sfComment/lib/BasesfCommentComponents.class.php

    r7395 r10773  
    1212  public function executeAuthor() 
    1313  { 
    14     $this->getConfig(); 
    15     $class = $this->config_user['class']; 
    16     $toString = $this->config_user['toString']; 
    17     $peer = sprintf('%sPeer', $class); 
    18     $author = call_user_func(array($peer, 'retrieveByPk'), $this->author_id); 
    19     $this->author = (!is_null($author)) ? $author->$toString() : ''; 
     14    if (isset($this->author_id)) 
     15    { 
     16      $this->getConfig(); 
     17      $class = $this->config_user['class']; 
     18      $toString = $this->config_user['toString']; 
     19      $peer = sprintf('%sPeer', $class); 
     20      $author = call_user_func(array($peer, 'retrieveByPk'), $this->author_id); 
     21      $this->author = (!is_null($author)) ? $author->$toString() : ''; 
     22    } 
     23    else 
     24    { 
     25      $this->author = $this->author_name; 
     26    } 
    2027  } 
    2128 
     
    4552    if ($this->getUser()->isAuthenticated() && $this->config_user['enabled']) 
    4653    { 
    47       $this->action = 'authenticated_comment'; 
     54      $this->action = 'authenticatedComment'; 
    4855      $this->config_used = $this->config_user; 
    4956    } 
    5057    else 
    5158    { 
    52       $this->action = 'anonymous_comment'; 
     59      $this->action = 'anonymousComment'; 
    5360      $this->config_used = $this->config_anonymous; 
    5461    } 
     
    8592  } 
    8693 
     94  public function executeGravatar() 
     95  { 
     96    if (isset($this->author_id)) 
     97    { 
     98      $this->getConfig(); 
     99      $class = $this->config_user['class']; 
     100      $toString = $this->config_user['toString']; 
     101      $toEmail = $this->config_user['toEmail']; 
     102      $peer = sprintf('%sPeer', $class); 
     103      $author = call_user_func(array($peer, 'retrieveByPk'), $this->author_id); 
     104      $this->author_name = (!is_null($author)) ? $author->$toString() : ''; 
     105      $this->author_email = (!is_null($author)) ? $author->$toEmail() : ''; 
     106    } 
     107  } 
     108 
    87109  protected function getConfig() 
    88110  { 
     
    91113                                                 'email' => 'required', 
    92114                                                 'title' => 'optional', 
     115                                                 'website' => 'optional', 
    93116                                                 'comment' => 'required'), 
    94117                              'name'    => 'Anonymous User'); 
  • plugins/sfPropelActAsCommentableBehaviorPlugin/trunk/modules/sfComment/templates/_author.php

    r7028 r10773  
    1 <?php echo $author; ?> 
     1<?php if (isset($author_website) && !is_null($author_website) && ('' != $author_website)): ?> 
     2  <?php echo link_to(trim(rtrim($author)), $author_website); ?> 
     3<?php else: ?> 
     4  <?php echo trim(rtrim($author)); ?> 
     5<?php endif; ?> 
  • plugins/sfPropelActAsCommentableBehaviorPlugin/trunk/modules/sfComment/templates/_commentForm.php

    r7378 r10773  
    88          || $config_anonymous['enabled']): ?> 
    99  <?php 
    10   echo form_tag('sfComment/'.$action, 
    11                 array('class' => 'sf_comment_form', 
    12                       'id'    => 'sf_comment_form')); 
     10  $options = array('class' => 'sf_comment_form', 
     11                   'id'    => 'sf_comment_form'); 
     12 
     13  if (sfConfig::get('app_sfPropelActAsCommentableBehaviorPlugin_hide_form', true) 
     14      &&($object->getNbComments() == 0)) 
     15  { 
     16    $options['style'] = 'display: none'; 
     17  } 
     18 
     19  echo form_tag('sfComment/'.$action, $options); 
    1320  ?> 
    1421    <fieldset> 
     
    2128      <?php if (isset($config_used['layout']['name'])): ?> 
    2229        <div class="<?php echo $config_used['layout']['name']; ?>"> 
     30          <label for="sf_comment_name"><?php echo __('Name') ?></label> 
    2331          <?php echo form_error('sf_comment_name') ?> 
    24           <label for="sf_comment_name"><?php echo __('Name') ?></label> 
    2532          <?php echo input_tag('sf_comment_name') ?> 
    2633        </div> 
     
    2936      <?php if (isset($config_used['layout']['email'])): ?> 
    3037        <div class="<?php echo $config_used['layout']['email']; ?>"> 
     38          <label for="sf_comment_email"><?php echo __('Email') ?></label> 
    3139          <?php echo form_error('sf_comment_email') ?> 
    32           <label for="sf_comment_email"><?php echo __('Email') ?></label> 
    3340          <?php echo input_tag('sf_comment_email') ?> 
     41        </div> 
     42      <?php endif; ?> 
     43 
     44      <?php if (isset($config_used['layout']['website'])): ?> 
     45        <div class="<?php echo $config_used['layout']['website']; ?>"> 
     46          <label for="sf_comment_email"><?php echo __('Website') ?></label> 
     47          <?php echo form_error('sf_comment_website') ?> 
     48          <?php echo input_tag('sf_comment_website') ?> 
    3449        </div> 
    3550      <?php endif; ?> 
     
    3752      <?php if (isset($config_used['layout']['title'])): ?> 
    3853        <div class="<?php echo $config_used['layout']['title']; ?>"> 
     54          <label for="sf_comment_title"><?php echo __('Title') ?></label> 
    3955          <?php echo form_error('sf_comment_title') ?> 
    40           <label for="sf_comment_title"><?php echo __('Title') ?></label> 
    4156          <?php echo input_tag('sf_comment_title') ?> 
    4257        </div> 
     
    4459 
    4560      <div class="required"> 
     61        <label for="sf_comment"><?php echo __('Write a comment') ?></label> 
    4662        <?php echo form_error('sf_comment') ?> 
    47         <label for="sf_comment"><?php echo __('Write a comment') ?></label> 
    4863        <?php echo textarea_tag('sf_comment', '', array('cols' => 40, 'rows' => 8)) ?> 
    4964      </div> 
     65 
     66      <?php 
     67      $allowed_html_tags = sfConfig::get('app_sfPropelActAsCommentableBehaviorPlugin_allowed_tags', array()); 
     68      sort($allowed_html_tags); 
     69 
     70      if (count($allowed_html_tags) > 0): 
     71      ?> 
     72        <div> 
     73          <?php echo __('Allowed HTML tags are: %1%', array('%1%' => htmlspecialchars(implode(', ', $allowed_html_tags)))) ?> 
     74        </div> 
     75      <?php endif; ?> 
    5076 
    5177      <?php 
  • plugins/sfPropelActAsCommentableBehaviorPlugin/trunk/modules/sfComment/templates/_commentList.php

    r6694 r10773  
    11<?php use_helper('I18N'); ?> 
    2 <div id="sf_comment_list"> 
     2<?php if (!sfContext::getInstance()->getRequest()->isXmlHttpRequest()): ?> 
     3  <h2 class="sf_comments_title"><?php echo __('Comments') ?></h2> 
     4  <div id="sf_comment_list"> 
     5<?php endif; ?> 
    36  <?php if (count($comments) > 0): ?> 
    47    <?php foreach ($comments as $comment): ?> 
     
    69    <?php endforeach; ?> 
    710  <?php else: ?> 
    8     <p><?php __('There is no comment for the moment.') ?></p> 
     11    <p> 
     12      <?php echo __('There is no comment for the moment.') ?> 
     13      <?php if (sfConfig::get('app_sfPropelActAsCommentableBehaviorPlugin_hide_form', true)): ?> 
     14        <?php echo link_to_function(__('Add a new comment'), visual_effect('appear', 'sf_comment_form')) ?> 
     15      <?php endif; ?> 
     16    </p> 
    917  <?php endif; ?> 
    10 </div> 
     18<?php if (!sfContext::getInstance()->getRequest()->isXmlHttpRequest()): ?> 
     19  </div> 
     20<?php endif; ?> 
  • plugins/sfPropelActAsCommentableBehaviorPlugin/trunk/modules/sfComment/templates/_commentView.php

    r7379 r10773  
    22<?php use_helper('Date'); ?> 
    33<div class="sf_comment" id="sf_comment_<?php echo $comment['Id'] ?>"> 
     4  <?php if (sfConfig::get('app_sfPropelActAsCommentableBehaviorPlugin_use_gravatar', true)): ?> 
     5    <?php if (!is_null($comment['AuthorId'])): ?> 
     6      <?php 
     7      include_component('sfComment', 
     8                        'gravatar', 
     9                        array('author_id'    => $comment['AuthorId'], 
     10                              'sf_cache_key' => $comment['AuthorId'])); 
     11      ?> 
     12    <?php else: ?> 
     13      <?php 
     14      include_component('sfComment', 
     15                        'gravatar', 
     16                        array('author_name'    => $comment['AuthorName'], 
     17                              'author_email' => $comment['AuthorEmail'], 
     18                              'sf_cache_key'   => $comment['AuthorEmail'])); 
     19      ?> 
     20    <?php endif; ?> 
     21  <?php endif; ?> 
    422  <p class="sf_comment_info"> 
    5     <a href="#sf_comment_<?php echo $comment['Id'] ?>"><span class="sf_comment_author"> 
    6       <?php if (!is_null($comment['AuthorId'])): ?> 
    7         <?php 
    8         include_component('sfComment', 
    9                           'author', 
    10                           array('author_id'    => $comment['AuthorId'], 
    11                                 'sf_cache_key' => $comment['AuthorId'])); 
    12         ?><?php else: ?><?php echo $comment['AuthorName'] ?><?php endif; ?></span>, 
    13     <?php echo __('%1% ago', array('%1%' => distance_of_time_in_words(strtotime($comment['CreatedAt'])))) ?></a> 
     23    <?php 
     24    if (!is_null($comment['AuthorId'])) 
     25    { 
     26      $author = get_component('sfComment', 
     27                              'author', 
     28                              array('author_id'    => $comment['AuthorId'], 
     29                                    'sf_cache_key' => $comment['AuthorId'])); 
     30    } 
     31    else 
     32    { 
     33      $author = get_component('sfComment', 
     34                              'author', 
     35                              array('author_name'    => $comment['AuthorName'], 
     36                                    'author_website' => $comment['AuthorWebsite'])); 
     37    } 
     38 
     39    $date_format = sfConfig::get('app_sfPropelActAsCommentableBehaviorPlugin_date_format', 'words'); 
     40    if ('words' == $date_format) 
     41    { 
     42      $date = __('%1% ago', array('%1%' => distance_of_time_in_words(strtotime($comment['CreatedAt'])))); 
     43    } 
     44    else 
     45    { 
     46      $date = format_date(strtotime($comment['CreatedAt']), $date_format); 
     47    } 
     48    ?> 
     49    <?php 
     50    echo __('<span class="sf_comment_author">%1%</span>, <a href="#sf_comment_%2%">%3%</a>', 
     51            array('%1%' => $author, 
     52                  '%2%' => $comment['Id'], 
     53                  '%3%' => $date)) 
     54    ?> 
    1455  </p> 
    15   <p class="sf_comment_text"> 
     56  <div class="sf_comment_text"> 
    1657    <?php echo $comment['Text']; ?> 
    17   </p
     58  </div
    1859</div> 
  • plugins/sfPropelActAsCommentableBehaviorPlugin/trunk/modules/sfComment/validate/anonymousComment.yml

    r7378 r10773  
    11<?php 
    2 $config_anonymous = array('enabled' => true,  
    3                           'layout'  => array('name'    => 'required',  
    4                                              'email'   => 'required',  
    5                                              'title'   => 'optionnal',  
    6                                              'comment' => 'required'),  
     2$config_anonymous = array('enabled' => true, 
     3                          'layout'  => array('name'    => 'required', 
     4                                             'email'   => 'required', 
     5                                             'title'   => 'optionnal', 
     6                                             'website' => 'optionnal', 
     7                                             'comment' => 'required'), 
    78                          'name'    => 'Anonymous User'); 
    89 
     
    2021  sf_comment_email: 
    2122    required: 
    22       msg:             Your email is required 
     23      msg:             Your email is required (it won't be published) 
    2324    sfEmailValidator: 
    2425      strict:          true 
    2526      email_error:     This email address is invalid 
     27<?php endif; ?> 
     28 
     29<?php if (isset($config_anonymous['layout']['website'])): ?> 
     30  sf_comment_website: 
     31    sfUrlValidator: 
     32      url_error:       This url is invalid 
    2633<?php endif; ?> 
    2734 
     
    4047  param: 
    4148    id:               sf_comment_form 
     49    content_type:     xhtml 
  • plugins/sfPropelActAsCommentableBehaviorPlugin/trunk/modules/sfComment/validate/authenticatedComment.yml

    r7378 r10773  
    11<?php 
    2 $config_user = array('enabled'   => true,  
    3                      'layout'    => array('title' => 'optionnal',  
    4                                           'comment' => 'required'),  
    5                      'table'     => 'sf_guard_user',  
    6                      'id'        => 'id',  
    7                      'class'     => 'sfGuardUser',  
    8                      'id_method' => 'getUserId',  
    9                      'toString'  => '__toString',  
     2$config_user = array('enabled'   => true, 
     3                     'layout'    => array('title'   => 'optionnal', 
     4                                          'email'   => 'optionnal', 
     5                                          'name'    => 'optionnal', 
     6                                          'website' => 'optionnal', 
     7                                          'comment' => 'required'), 
     8                     'table'     => 'sf_guard_user', 
     9                     'id'        => 'id', 
     10                     'class'     => 'sfGuardUser', 
     11                     'id_method' => 'getUserId', 
     12                     'toString'  => '__toString', 
    1013                     'save_name' => false); 
    1114 
     
    2326  sf_comment_email: 
    2427    required: 
    25       msg:             Your email is required 
     28      msg:             Your email is required (it won't be published) 
    2629    sfEmailValidator: 
    2730      strict:          true 
    2831      email_error:     This email address is invalid 
     32<?php endif; ?> 
     33 
     34<?php if (isset($config_anonymous['layout']['website'])): ?> 
     35  sf_comment_website: 
     36    sfUrlValidator: 
     37      url_error:       This url is invalid 
    2938<?php endif; ?> 
    3039 
     
    4352  param: 
    4453    id:               sf_comment_form 
     54    content_type:     xhtml 
  • plugins/sfPropelActAsCommentableBehaviorPlugin/trunk/modules/sfCommentAdmin/actions/actions.class.php

    r6943 r10773  
    33 * sfPropelActAsCommentableBehaviorPlugin actions. Feel free to override this 
    44 * class in your dedicated app module. 
    5  *  
     5 * 
    66 * @package    plugins 
    7  * @subpackage comment  
     7 * @subpackage comment 
    88 * @author     Xavier Lacot <xavier@lacot.org> 
    99 * @link       http://trac.symfony-project.com/trac/wiki/sfPropelActAsCommentableBehaviorPlugin 
  • plugins/sfPropelActAsCommentableBehaviorPlugin/trunk/modules/sfCommentAdmin/config/generator.yml

    r5427 r10773  
    88      commentable_model:   { name: Model } 
    99      commentable_id:      { name: Id } 
     10      _commented:          { name: Commented item } 
     11      _author:             { name: Author } 
    1012      author:              { name: Author } 
    1113      created_at:          { name: Date } 
     
    1315    list: 
    1416      title:          List of the comments 
    15       filters:        [commentable_model, commentable_id, author_id, namespace] 
     17      filters:        [commentable_model, commentable_id, namespace] 
    1618      sort:           [created_at, desc] 
    17       display:        [=id, namespace, commentable_model, commentable_id, author_id, created_at] 
     19      display:        [namespace, _commented, _author, created_at, title, text] 
    1820      object_actions: 
    1921        _edit:        - 
  • plugins/sfPropelActAsCommentableBehaviorPlugin/trunk/package.xml

    r6426 r10773  
    11<?xml version="1.0" encoding="UTF-8"?> 
    2 <package version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd"> 
     2<package packagerversion="1.7.2" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 
     3    http://pear.php.net/dtd/tasks-1.0.xsd 
     4    http://pear.php.net/dtd/package-2.0 
     5    http://pear.php.net/dtd/package-2.0.xsd"> 
    36 <name>sfPropelActAsCommentableBehaviorPlugin</name> 
    47 <channel>pear.symfony-project.com</channel> 
     
    1114  <active>yes</active> 
    1215 </lead> 
    13  <date>2007-12-10</date> 
    14  <time>12:40:25</time> 
     16 <date>2008-08-11</date> 
     17 <time>07:58:01</time> 
    1518 <version> 
    16   <release>0.4.0</release> 
    17   <api>0.4.0</api> 
     19  <release>0.5.0</release> 
     20  <api>0.5.0</api> 
    1821 </version> 
    1922 <stability> 
     
    2124  <api>beta</api> 
    2225 </stability> 
    23  <license uri="http://www.symfony-project.com/license">MIT license</license> 
    24  <notes> 
    25  * compatibility with escaping=both mode 
    26  * Added unique DOM id for each comment, in the form {{{sf_comment_$id}}}  
    27  (Nicolas Perriault) 
    28  * use a session token instead of passing the object id and model in the request  
    29  (Nicolas Perriault) 
    30  * bugfixes, based on a patch from Michael Nolan (closes #2595): 
    31    * fix anonymous posting (use the token) 
    32    * pre and post addition hooks 
    33  </notes> 
     26 <license uri="http://www.opensource.org/licenses/mit-license.html">MIT</license> 
     27 <notes>  * fixed XSS bug (closes #3745) 
     28  * switched documentation to the markdown syntax 
     29  * added a &quot;website&quot; field 
     30  * fixed &quot;duplication of DOM id sf_comment_list&quot; bug (closes #3258) 
     31  * allowed formatting in comments (closes #2900): 
     32    * introduced a ``sfPropelActAsCommentableStripper`` class 
     33    * use of [HTMLPurifier](http://htmlpurifier.org/) 
     34  * fixed &quot;title not saved&quot; bug (closes #3086)</notes> 
    3435 <contents> 
    35   <dir name="/"> 
    36    <dir name="config"> 
    37     <file name="app.yml.sample" role="data" /> 
    38     <file name="config.php" role="data" /> 
    39     <file name="schema.yml" role="data" /> 
    40     <file name="schemaConfig.php" role="data" /> 
    41     <file name="sfPropelActAsCommentableBehaviorPlugin.yml.sample" role="data" /> 
    42    </dir> 
    43    <dir name="lib"> 
    44     <dir name="model"> 
    45      <dir name="map" /> 
    46      <dir name="om" /> 
    47      <file name="sfComment.php" role="data" /> 
    48      <file name="sfCommentPeer.php" role="data" /> 
    49     </dir> 
    50      <file name="sfPropelActAsCommentableBehavior.class.php" role="data" /> 
    51      <file name="sfPropelActAsCommentableToolkit.class.php" role="data" /> 
    52    </dir> 
    53    <dir name="modules"> 
    54     <dir name="sfComment"> 
    55      <dir name="actions"> 
    56     <file name="actions.class.php" role="data" /> 
    57     <file name="components.class.php" role="data" /> 
    58      </dir> 
    59      <dir name="config" /> 
    60      <dir name="i18n" /> 
    61      <dir name="lib"> 
    62     <file name="BasesfCommentActions.class.php" role="data" /> 
    63     <file name="BasesfCommentComponents.class.php" role="data" /> 
    64      </dir> 
    65      <dir name="templates"> 
    66     <file name="_commentForm.php" role="data" /> 
    67     <file name="_commentList.php" role="data" /> 
    68     <file name="_commentView.php" role="data" /> 
    69     <file name="commentFormSuccess.php" role="data" /> 
    70     <file name="commentSuccess.php" role="data" /> 
    71      </dir> 
    72      <dir name="validate"> 
    73     <file name="anonymousComment.yml" role="data" /> 
    74     <file name="authenticatedComment.yml" role="data" /> 
    75      </dir> 
    76     </dir> 
    77     <dir name="sfCommentAdmin"> 
    78      <dir name="actions"> 
    79     <file name="actions.class.php" role="data" /> 
    80      </dir> 
    81      <dir name="config"> 
    82     <file name="generator.yml" role="data" /> 
    83    </dir> 
    84      <dir name="lib" /> 
    85      <dir name="templates" /> 
    86     </dir> 
    87    </dir> 
    88    <dir name="test"> 
    89     <dir name="unit"> 
    90      <!-- unit tests --> 
    91      <file name="sfPropelActAsCommentableBehaviorTest.php" role="data" /> 
    92     </dir> 
    93    </dir> 
    94    <dir name="web"> 
    95    <!-- assets --> 
    96     <dir name="css"> 
    97      <file name="sf_comment.css" role="data" /> 
    98     </dir> 
    99     <dir name="images"> 
    100      <file name="indicator.gif" role="data" /> 
    101    <file name="input-shadow.gif" role="data" /> 
    102    <file name="input-shadow-required.gif" role="data" /> 
    103     </dir> 
    104    </dir> 
    105    <file name="README" role="data" /> 
    106    <file name="LICENSE" role="data" /> 
     36  <dir baseinstalldir="." name="/"> 
     37   <file baseinstalldir="." md5sum="94933d9fb369f6b53cdd6e4b36086363" name="config/app.yml.sample" role="data" /> 
     38   <file baseinstalldir="." md5sum="55621acf05238f8c159286edff4d9313" name="config/config.php" role="php" /> 
     39   <file baseinstalldir="." md5sum="c54a28534d7c06ece57acc301f7b2dda" name="config/schema.yml" role="data" /> 
     40   <file baseinstalldir="." md5sum="340f5718d693bec98fe8ad0378f692c3" name="config/schemaConfig.php" role="php" /> 
     41   <file baseinstalldir="." md5sum="5a6bfdc57261b27b3164dcf0ce50d3c6" name="config/sfPropelActAsCommentableBehaviorPlugin.yml.sample" role="data" /> 
     42   <file baseinstalldir="." md5sum="c75f3c5c5ce0b4226fe2b80d307653fd" name="lib/sfPropelActAsCommentableBehavior.class.php" role="php" /> 
     43   <file baseinstalldir="." md5sum="6db839cd5e9b5e2868086dc74cbd34f5" name="lib/sfPropelActAsCommentableStripper.class.php" role="php" /> 
     44   <file baseinstalldir="." md5sum="a7a6956d71edef332baa006e775f9c26" name="lib/sfPropelActAsCommentableToolkit.class.php" role="php" /> 
     45   <file baseinstalldir="." md5sum="ba0583d2f9b0495f9560cd434d187ea4" name="lib/htmlpurifier-3.1.1-lite/CREDITS" role="data" /> 
     46   <file baseinstalldir="." md5sum="c282e480b6c868fa6548cc2f2e211359" name="lib/htmlpurifier-3.1.1-lite/INSTALL" role="data" /> 
     47   <file baseinstalldir="." md5sum="fbc093901857fcd118f065f900982c24" name="lib/htmlpurifier-3.1.1-lite/LICENSE" role="data" /> 
     48   <file baseinstalldir="." md5sum="30bf3faf14c885c633f8d52f25d8a04a" name="lib/htmlpurifier-3.1.1-lite/NEWS" role="data" /> 
     49   <file baseinstalldir="." md5sum="c186edb49d49e88597423c7b5951482e" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier.auto.php" role="php" /> 
     50   <file baseinstalldir="." md5sum="17e5aeedd795cf7b27fd6f5bd4bce3fc" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier.autoload.php" role="php" /> 
     51   <file baseinstalldir="." md5sum="db62167a162c6292df27507983821c34" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier.func.php" role="php" /> 
     52   <file baseinstalldir="." md5sum="caf1c6809fdeafd82014a518685b7be1" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier.includes.php" role="php" /> 
     53   <file baseinstalldir="." md5sum="8acb3e46566fb1e8ba23f7fafe2690ff" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier.kses.php" role="php" /> 
     54   <file baseinstalldir="." md5sum="75f89c1f6ab1fdbf38bf956d1081c68a" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier.path.php" role="php" /> 
     55   <file baseinstalldir="." md5sum="eb34224d1b1bed23cfbb0d87e0d7ff68" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier.php" role="php" /> 
     56   <file baseinstalldir="." md5sum="753b2793fa7e845b15a7531aac837ad5" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier.safe-includes.php" role="php" /> 
     57   <file baseinstalldir="." md5sum="2e3a8697e6b957f5c8c1033cafb2a2f0" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/AttrCollections.php" role="php" /> 
     58   <file baseinstalldir="." md5sum="2a543228c976e6af505b803b62f8d4ea" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/AttrDef.php" role="php" /> 
     59   <file baseinstalldir="." md5sum="165623079bf36e069b990b43bb6c2bd1" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/AttrTransform.php" role="php" /> 
     60   <file baseinstalldir="." md5sum="d1e8684915c3b59fcd970233acff1267" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/AttrTypes.php" role="php" /> 
     61   <file baseinstalldir="." md5sum="68013e175ca47bdd9229aebabb9d70a4" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/AttrValidator.php" role="php" /> 
     62   <file baseinstalldir="." md5sum="3712f9f0bb900b892bdae1217a3ef675" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/Bootstrap.php" role="php" /> 
     63   <file baseinstalldir="." md5sum="dc0d8eeabba260facc43423b7e3c2bde" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ChildDef.php" role="php" /> 
     64   <file baseinstalldir="." md5sum="a671ceddfabcb413289f6a626d78d91d" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/Config.php" role="php" /> 
     65   <file baseinstalldir="." md5sum="9f4aaa04c5c0f3c61c4f39fb4d2aada5" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema.php" role="php" /> 
     66   <file baseinstalldir="." md5sum="b33ffbb3a5e24a4131eb8717df2e6738" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ContentSets.php" role="php" /> 
     67   <file baseinstalldir="." md5sum="64b2c5dc5ff38aa969e64055cf542440" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/Context.php" role="php" /> 
     68   <file baseinstalldir="." md5sum="cfbd2e9d94e8290ed3af40a55d9e11c1" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/CSSDefinition.php" role="php" /> 
     69   <file baseinstalldir="." md5sum="a63cde42c6721d3c045d7743474ec20e" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/Definition.php" role="php" /> 
     70   <file baseinstalldir="." md5sum="679b1c584c93bb155e42b65d2dadc192" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/DefinitionCache.php" role="php" /> 
     71   <file baseinstalldir="." md5sum="9aa4f92e9d5b4f8040559f8e0773f9e4" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/DefinitionCacheFactory.php" role="php" /> 
     72   <file baseinstalldir="." md5sum="a98079030581e7431f373a32266e1dbe" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/Doctype.php" role="php" /> 
     73   <file baseinstalldir="." md5sum="1335bb80305bcc4a0329a86fae69b370" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/DoctypeRegistry.php" role="php" /> 
     74   <file baseinstalldir="." md5sum="06f1a70a19e91626533a26bb25eb75e3" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ElementDef.php" role="php" /> 
     75   <file baseinstalldir="." md5sum="e9cbd1dbf5997a9ace3505db3ed5e358" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/Encoder.php" role="php" /> 
     76   <file baseinstalldir="." md5sum="89249bcc6452811428547fda785c00be" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/EntityLookup.php" role="php" /> 
     77   <file baseinstalldir="." md5sum="7c7f39c26c43bb301f71b7ebb8c408f2" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/EntityParser.php" role="php" /> 
     78   <file baseinstalldir="." md5sum="b486b5284a9feed11033dc116c02a76e" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ErrorCollector.php" role="php" /> 
     79   <file baseinstalldir="." md5sum="30336a4c95bad6e8d6aebc58b9b962d5" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/Exception.php" role="php" /> 
     80   <file baseinstalldir="." md5sum="7e9cbf729216384b3dc8e7cbe8e8d590" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/Filter.php" role="php" /> 
     81   <file baseinstalldir="." md5sum="9d61bca6a07445d2ec624c345f5b957b" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/Generator.php" role="php" /> 
     82   <file baseinstalldir="." md5sum="099e7e4730b2eedf2422198352168148" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/HTMLDefinition.php" role="php" /> 
     83   <file baseinstalldir="." md5sum="67dd9db56e8f34aa6a4ebd103b0bd80b" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/HTMLModule.php" role="php" /> 
     84   <file baseinstalldir="." md5sum="06c76a97c05da22ec4cb025e2ce3ec04" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/HTMLModuleManager.php" role="php" /> 
     85   <file baseinstalldir="." md5sum="5c9243a21350e8bd88b478e4d3c64893" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/IDAccumulator.php" role="php" /> 
     86   <file baseinstalldir="." md5sum="4a2b20176351fffdd6a3f26adac85b4d" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/Injector.php" role="php" /> 
     87   <file baseinstalldir="." md5sum="15c18754aa3d899bd43f853eafa54fab" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/Language.php" role="php" /> 
     88   <file baseinstalldir="." md5sum="27f90191fb9f580e55c4a5988d0223ec" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/LanguageFactory.php" role="php" /> 
     89   <file baseinstalldir="." md5sum="d8617c2bb13b67c752ff5d5963f47841" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/Length.php" role="php" /> 
     90   <file baseinstalldir="." md5sum="381b5df36d9f3b0a7b28f4dbd16dcaed" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/Lexer.php" role="php" /> 
     91   <file baseinstalldir="." md5sum="e9412657f788f59cc793df29adf85816" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/PercentEncoder.php" role="php" /> 
     92   <file baseinstalldir="." md5sum="7bc372b4f976d26bc529359cc5d248ee" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/Printer.php" role="php" /> 
     93   <file baseinstalldir="." md5sum="4d9d59d5235855f4fe1782ab4fdd20d7" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/Strategy.php" role="php" /> 
     94   <file baseinstalldir="." md5sum="482d0b439e55adc868839a1bb9e07858" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/StringHash.php" role="php" /> 
     95   <file baseinstalldir="." md5sum="c8472e35958a4f7207451ca5692393da" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/StringHashParser.php" role="php" /> 
     96   <file baseinstalldir="." md5sum="0e3c9beca44b8d5bdc4d54a91a40d770" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/TagTransform.php" role="php" /> 
     97   <file baseinstalldir="." md5sum="e0fd42580f0759ea9a5026052ccb79f9" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/Token.php" role="php" /> 
     98   <file baseinstalldir="." md5sum="ce5c3720c04d4739de1646d8a16eca56" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/TokenFactory.php" role="php" /> 
     99   <file baseinstalldir="." md5sum="e782fa147656a70996b1aa09c20b5b4d" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/UnitConverter.php" role="php" /> 
     100   <file baseinstalldir="." md5sum="8c448ea2133474c3315f5b6fc221bf74" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/URI.php" role="php" /> 
     101   <file baseinstalldir="." md5sum="b3a22b97f4e50d666801dc7ae6c2c47c" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/URIDefinition.php" role="php" /> 
     102   <file baseinstalldir="." md5sum="bb67bf8fbfeba1ac6a5cbc8c898731c6" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/URIFilter.php" role="php" /> 
     103   <file baseinstalldir="." md5sum="e285e47d580fbebda68ae26533be8b2b" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/URIParser.php" role="php" /> 
     104   <file baseinstalldir="." md5sum="76d263fdff907d0df9d9d88837ea4232" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/URIScheme.php" role="php" /> 
     105   <file baseinstalldir="." md5sum="f3891b526632f7a5a23cf3bb5a2edacd" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/URISchemeRegistry.php" role="php" /> 
     106   <file baseinstalldir="." md5sum="4a9ff4cb0a4b450c6a22f44abc042e87" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/VarParser.php" role="php" /> 
     107   <file baseinstalldir="." md5sum="7e1874e1be2dbcd4e9d8fc7daf443fe8" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/VarParserException.php" role="php" /> 
     108   <file baseinstalldir="." md5sum="7ea23d84475ebaf3106b3d0591d11a6c" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/AttrDef/CSS.php" role="php" /> 
     109   <file baseinstalldir="." md5sum="e3b495aee1131b1270c34fa52f52e763" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/AttrDef/Enum.php" role="php" /> 
     110   <file baseinstalldir="." md5sum="eeac0f7786122a98810b68d752fb3c9d" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/AttrDef/Integer.php" role="php" /> 
     111   <file baseinstalldir="." md5sum="5496529ed90e9488cfe397eda1094a43" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/AttrDef/Lang.php" role="php" /> 
     112   <file baseinstalldir="." md5sum="554d1afa48075b82016c1c5db0fb5e05" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/AttrDef/Switch.php" role="php" /> 
     113   <file baseinstalldir="." md5sum="c8985d4363e2afaf4f3adb14b4d6a77b" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/AttrDef/Text.php" role="php" /> 
     114   <file baseinstalldir="." md5sum="bdc6d3ce70f4573560e5635ec6e6a0ed" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/AttrDef/URI.php" role="php" /> 
     115   <file baseinstalldir="." md5sum="003f90ee145510d32d08b99912ab5cf6" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/AttrDef/CSS/AlphaValue.php" role="php" /> 
     116   <file baseinstalldir="." md5sum="3df912dc35fceed60656a6ebb4efe7e1" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/AttrDef/CSS/Background.php" role="php" /> 
     117   <file baseinstalldir="." md5sum="090a752012711a25b1cfa9f719c94026" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/AttrDef/CSS/BackgroundPosition.php" role="php" /> 
     118   <file baseinstalldir="." md5sum="deb726718bef700e8b3024b5ad687015" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/AttrDef/CSS/Border.php" role="php" /> 
     119   <file baseinstalldir="." md5sum="dc8debdd26d688050dcd3c570c46f8e3" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/AttrDef/CSS/Color.php" role="php" /> 
     120   <file baseinstalldir="." md5sum="d90e00e48898af16c71cebb1c8a6fb52" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/AttrDef/CSS/Composite.php" role="php" /> 
     121   <file baseinstalldir="." md5sum="219c789b1fd1d26c83a21bc2dab1de5e" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/AttrDef/CSS/DenyElementDecorator.php" role="php" /> 
     122   <file baseinstalldir="." md5sum="543cbd3c5906973cd3a5bcdccc27131b" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/AttrDef/CSS/Filter.php" role="php" /> 
     123   <file baseinstalldir="." md5sum="1cb0b4f95aae057773366e9e8e3b2f96" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/AttrDef/CSS/Font.php" role="php" /> 
     124   <file baseinstalldir="." md5sum="85b5e2f1dfdbccc6b19bd0892039da82" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/AttrDef/CSS/FontFamily.php" role="php" /> 
     125   <file baseinstalldir="." md5sum="95b08e1e31bc6e59eb8db33d4ba8b666" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/AttrDef/CSS/ImportantDecorator.php" role="php" /> 
     126   <file baseinstalldir="." md5sum="b2d9d8ff79f2a3c027a7a4cb7f072798" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/AttrDef/CSS/Length.php" role="php" /> 
     127   <file baseinstalldir="." md5sum="41f98d7c310513c125497439f918ffbc" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/AttrDef/CSS/ListStyle.php" role="php" /> 
     128   <file baseinstalldir="." md5sum="078300d8a3d57b67fa0e359ee1507513" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/AttrDef/CSS/Multiple.php" role="php" /> 
     129   <file baseinstalldir="." md5sum="202dfc9728dacf86164c2d5dabb33ef7" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/AttrDef/CSS/Number.php" role="php" /> 
     130   <file baseinstalldir="." md5sum="ef02712d0ab74683b77ecfee02740d95" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/AttrDef/CSS/Percentage.php" role="php" /> 
     131   <file baseinstalldir="." md5sum="e50ec62900a2b2837941079e8e023f2b" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/AttrDef/CSS/TextDecoration.php" role="php" /> 
     132   <file baseinstalldir="." md5sum="f167314a8eaf95ca334d5b754137e91f" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/AttrDef/CSS/URI.php" role="php" /> 
     133   <file baseinstalldir="." md5sum="0d612f5bee1186ae4ff21d9e8bd91571" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/AttrDef/HTML/Bool.php" role="php" /> 
     134   <file baseinstalldir="." md5sum="ba65e3a3658f6fba641931a449752135" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/AttrDef/HTML/Color.php" role="php" /> 
     135   <file baseinstalldir="." md5sum="7ce2e1e8e2a6ab0e256b1f545a4ccb62" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/AttrDef/HTML/FrameTarget.php" role="php" /> 
     136   <file baseinstalldir="." md5sum="3a5f9b43b95486b35c4f07e6e6e7cc90" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/AttrDef/HTML/ID.php" role="php" /> 
     137   <file baseinstalldir="." md5sum="4a5eec96d398ccfdda1638d3f1f9cf88" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/AttrDef/HTML/Length.php" role="php" /> 
     138   <file baseinstalldir="." md5sum="498dac0bea2bcd8df073d294c1807c18" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/AttrDef/HTML/LinkTypes.php" role="php" /> 
     139   <file baseinstalldir="." md5sum="94c374a48e5164b6da3c1418caf3ceea" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/AttrDef/HTML/MultiLength.php" role="php" /> 
     140   <file baseinstalldir="." md5sum="cfca148b8b0734da3fb2ba8f123a2e9e" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/AttrDef/HTML/Nmtokens.php" role="php" /> 
     141   <file baseinstalldir="." md5sum="166eb76a918bb871120528222b039925" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/AttrDef/HTML/Pixels.php" role="php" /> 
     142   <file baseinstalldir="." md5sum="34b3c54a42288a9f6b82cf6b571973cb" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/AttrDef/URI/Email.php" role="php" /> 
     143   <file baseinstalldir="." md5sum="b62fb30b16c47999f508fd4e5ca64631" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/AttrDef/URI/Host.php" role="php" /> 
     144   <file baseinstalldir="." md5sum="25d83d992f0287629c33e994bae38787" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/AttrDef/URI/IPv4.php" role="php" /> 
     145   <file baseinstalldir="." md5sum="37ae98b0e050fb1670f86d3c8a445a39" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/AttrDef/URI/IPv6.php" role="php" /> 
     146   <file baseinstalldir="." md5sum="5bb519ae5887072a0831ae9fb117eb27" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/AttrDef/URI/Email/SimpleCheck.php" role="php" /> 
     147   <file baseinstalldir="." md5sum="c325b00299f09196db650e63bc3359da" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/AttrTransform/BdoDir.php" role="php" /> 
     148   <file baseinstalldir="." md5sum="2971f93190e864259e3f3eccf735dd7a" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/AttrTransform/BgColor.php" role="php" /> 
     149   <file baseinstalldir="." md5sum="a0a4e4004988d57a1caf92f03effec42" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/AttrTransform/BoolToCSS.php" role="php" /> 
     150   <file baseinstalldir="." md5sum="dabe0840b074296794dc9120ad2f6f6c" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/AttrTransform/Border.php" role="php" /> 
     151   <file baseinstalldir="." md5sum="6e076dd6328068922d3ed0722bb6e7ce" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/AttrTransform/EnumToCSS.php" role="php" /> 
     152   <file baseinstalldir="." md5sum="1621a434bc64480c54c6a554d389aeb5" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/AttrTransform/ImgRequired.php" role="php" /> 
     153   <file baseinstalldir="." md5sum="cb747ede4e63188a687be268a0035ae2" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/AttrTransform/ImgSpace.php" role="php" /> 
     154   <file baseinstalldir="." md5sum="33ecf612368bd8fddc56d3e8bac81c49" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/AttrTransform/Lang.php" role="php" /> 
     155   <file baseinstalldir="." md5sum="450673694884d0618adbc27ba8223b8f" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/AttrTransform/Length.php" role="php" /> 
     156   <file baseinstalldir="." md5sum="bbce9e096d83b44dadfb41a3e81b7bce" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/AttrTransform/Name.php" role="php" /> 
     157   <file baseinstalldir="." md5sum="7a41e2309562a872c78f4263d2dc055e" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/AttrTransform/SafeEmbed.php" role="php" /> 
     158   <file baseinstalldir="." md5sum="d35b8583d487f1721ea5784352273dfb" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/AttrTransform/SafeObject.php" role="php" /> 
     159   <file baseinstalldir="." md5sum="702e941920a5ca3d741406f4a6edac4f" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/AttrTransform/SafeParam.php" role="php" /> 
     160   <file baseinstalldir="." md5sum="312bed188409818bbee9b3df055215ab" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/AttrTransform/ScriptRequired.php" role="php" /> 
     161   <file baseinstalldir="." md5sum="c91d7dcd576e0cd1ba38628ab5190298" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ChildDef/Chameleon.php" role="php" /> 
     162   <file baseinstalldir="." md5sum="255469ceb1b35ae03036fb6b0ad6ed5c" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ChildDef/Custom.php" role="php" /> 
     163   <file baseinstalldir="." md5sum="efc446d6addcdc6469f622b08e6b6798" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ChildDef/Empty.php" role="php" /> 
     164   <file baseinstalldir="." md5sum="44f940625a3d64b85389fc7396746a09" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ChildDef/Optional.php" role="php" /> 
     165   <file baseinstalldir="." md5sum="02a9d39f3210eb5bf3b0641fd4c7092b" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ChildDef/Required.php" role="php" /> 
     166   <file baseinstalldir="." md5sum="9d0289a232f2110c645e7086aa6b448c" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ChildDef/StrictBlockquote.php" role="php" /> 
     167   <file baseinstalldir="." md5sum="ca4ce4e69bb730b2c52f7e94b39b942f" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ChildDef/Table.php" role="php" /> 
     168   <file baseinstalldir="." md5sum="d2a449ee759083730df6111eddf1cd88" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/Exception.php" role="php" /> 
     169   <file baseinstalldir="." md5sum="b08a628a77b77f4a47155c1eba7e9551" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/Interchange.php" role="php" /> 
     170   <file baseinstalldir="." md5sum="162a78aa8a4ebcf1b08559c7d71418b8" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/InterchangeBuilder.php" role="php" /> 
     171   <file baseinstalldir="." md5sum="05b8a93cbb27be20d81cbb9320c8a354" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema.ser" role="data" /> 
     172   <file baseinstalldir="." md5sum="8dfc82498a46b1a1a00a28c2f5f02197" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/Validator.php" role="php" /> 
     173   <file baseinstalldir="." md5sum="b77b33040315780fbe418fb8c468127b" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/ValidatorAtom.php" role="php" /> 
     174   <file baseinstalldir="." md5sum="90e7f5c0c78cc68f0b69f77527e6bb8b" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/Builder/ConfigSchema.php" role="php" /> 
     175   <file baseinstalldir="." md5sum="54481cc765d70c46c01eb6a684252071" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/Builder/Xml.php" role="php" /> 
     176   <file baseinstalldir="." md5sum="bc895b6973da28c173622331b31169b7" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/Interchange/Directive.php" role="php" /> 
     177   <file baseinstalldir="." md5sum="3558e6c004fdaa1547b8ffdd1760356c" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/Interchange/Id.php" role="php" /> 
     178   <file baseinstalldir="." md5sum="82f9619cb514f56ed6dc820f432152b2" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/Interchange/Namespace.php" role="php" /> 
     179   <file baseinstalldir="." md5sum="4cd22904033d381af369bcb6afb6fa5f" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/Attr.AllowedFrameTargets.txt" role="data" /> 
     180   <file baseinstalldir="." md5sum="66c3e394bb822d02109438bd1a31add2" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/Attr.AllowedRel.txt" role="data" /> 
     181   <file baseinstalldir="." md5sum="465ece8bc908b826773065b2bc232545" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/Attr.AllowedRev.txt" role="data" /> 
     182   <file baseinstalldir="." md5sum="6d1006a942222b06eab28ec273c96b55" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/Attr.DefaultInvalidImage.txt" role="data" /> 
     183   <file baseinstalldir="." md5sum="2e5497345cb34de1a09bfda2fe4527aa" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/Attr.DefaultInvalidImageAlt.txt" role="data" /> 
     184   <file baseinstalldir="." md5sum="d7fa66866f11ac7214223f509dc7f470" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/Attr.DefaultTextDir.txt" role="data" /> 
     185   <file baseinstalldir="." md5sum="e19a08e4f0ca6f4545b2c29333046ac8" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/Attr.EnableID.txt" role="data" /> 
     186   <file baseinstalldir="." md5sum="a4f24e4ad3d9961e16aeec2e061b12fb" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/Attr.IDBlacklist.txt" role="data" /> 
     187   <file baseinstalldir="." md5sum="6bf615aca3343dc5eb375951ced8aebe" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/Attr.IDBlacklistRegexp.txt" role="data" /> 
     188   <file baseinstalldir="." md5sum="97ef49c3ed0c864e7091045e60bfc177" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/Attr.IDPrefix.txt" role="data" /> 
     189   <file baseinstalldir="." md5sum="8854331d905f173671feb362ac72900e" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/Attr.IDPrefixLocal.txt" role="data" /> 
     190   <file baseinstalldir="." md5sum="7c0a9242dcee031bf3585f6fa2cfdc72" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/Attr.txt" role="data" /> 
     191   <file baseinstalldir="." md5sum="d8995524042a7bb82de7ad09470a3f23" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/AutoFormat.AutoParagraph.txt" role="data" /> 
     192   <file baseinstalldir="." md5sum="1b7ce52e465c5c3dba3fef6d6e3d9eef" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/AutoFormat.Custom.txt" role="data" /> 
     193   <file baseinstalldir="." md5sum="e718a05098bddffb64d70a1d8ab22f06" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/AutoFormat.Linkify.txt" role="data" /> 
     194   <file baseinstalldir="." md5sum="21a356df817a8ed21339328e87db70ff" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/AutoFormat.PurifierLinkify.txt" role="data" /> 
     195   <file baseinstalldir="." md5sum="f09ec4c01f8987328983b17c8b8e09f7" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/AutoFormat.txt" role="data" /> 
     196   <file baseinstalldir="." md5sum="4632cfaced99e81e41c2b8f8154f3a90" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/AutoFormatParam.PurifierLinkifyDocURL.txt" role="data" /> 
     197   <file baseinstalldir="." md5sum="93ac70bcf968724948d7418f841c8101" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/AutoFormatParam.txt" role="data" /> 
     198   <file baseinstalldir="." md5sum="b173c916aad5eca0a6896c3cce6c5036" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/Cache.DefinitionImpl.txt" role="data" /> 
     199   <file baseinstalldir="." md5sum="a7b382bcbc7ec67b14556393310a42bc" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/Cache.SerializerPath.txt" role="data" /> 
     200   <file baseinstalldir="." md5sum="88294ee98ed70b6a6d7374cb91b63286" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/Cache.txt" role="data" /> 
     201   <file baseinstalldir="." md5sum="7e658f535ed9797a8aa2e598940fb5a4" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/Core.AggressivelyFixLt.txt" role="data" /> 
     202   <file baseinstalldir="." md5sum="7c6815b15b3add0e20db01b6f814b1e3" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/Core.CollectErrors.txt" role="data" /> 
     203   <file baseinstalldir="." md5sum="96b70d04afa7394d2bf838e0f1181931" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/Core.ColorKeywords.txt" role="data" /> 
     204   <file baseinstalldir="." md5sum="658452bf460b6e910ec3f1a3c2d586e2" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/Core.ConvertDocumentToFragment.txt" role="data" /> 
     205   <file baseinstalldir="." md5sum="6fc0a91695d9689332cc27eeb91b26ea" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/Core.DirectLexLineNumberSyncInterval.txt" role="data" /> 
     206   <file baseinstalldir="." md5sum="2ad601ef2ef321cdd0ac9cfa97f9376c" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/Core.Encoding.txt" role="data" /> 
     207   <file baseinstalldir="." md5sum="b8892e387e7a813a836ab8cffc89639a" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/Core.EscapeInvalidChildren.txt" role="data" /> 
     208   <file baseinstalldir="." md5sum="7e2896009dfa530a7900722c04425401" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/Core.EscapeInvalidTags.txt" role="data" /> 
     209   <file baseinstalldir="." md5sum="e402b618fd3ed7cd88487a95babb2280" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/Core.EscapeNonASCIICharacters.txt" role="data" /> 
     210   <file baseinstalldir="." md5sum="82b8472a9ffc041b114970aab7a874a9" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/Core.HiddenElements.txt" role="data" /> 
     211   <file baseinstalldir="." md5sum="70065bd6843f3dbfca32d8d93eea2664" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/Core.Language.txt" role="data" /> 
     212   <file baseinstalldir="." md5sum="271c96c312efc4c3c3d7d605cd9184b9" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/Core.LexerImpl.txt" role="data" /> 
     213   <file baseinstalldir="." md5sum="5d5888dffcfb80843938cc5dfedfb6c6" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/Core.MaintainLineNumbers.txt" role="data" /> 
     214   <file baseinstalldir="." md5sum="7030164700b69a0378ed63a72664798a" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/Core.RemoveInvalidImg.txt" role="data" /> 
     215   <file baseinstalldir="." md5sum="d89925560aac873503f695411cf728e5" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/Core.RemoveScriptContents.txt" role="data" /> 
     216   <file baseinstalldir="." md5sum="980cb5777fa3766b254da082cbead579" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/Core.txt" role="data" /> 
     217   <file baseinstalldir="." md5sum="526132d697a03650b71079f268688b5d" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/CSS.AllowedProperties.txt" role="data" /> 
     218   <file baseinstalldir="." md5sum="2a549c69bce5c40b35c43668b52140b2" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/CSS.AllowImportant.txt" role="data" /> 
     219   <file baseinstalldir="." md5sum="4b00c92f62c0fd8b5dbb4fda496dff95" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/CSS.AllowTricky.txt" role="data" /> 
     220   <file baseinstalldir="." md5sum="c1b669e36431660d464dae3a3ec96094" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/CSS.DefinitionRev.txt" role="data" /> 
     221   <file baseinstalldir="." md5sum="ea65a2b0cc8f8a558f6a8fc8d433cbb1" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/CSS.MaxImgLength.txt" role="data" /> 
     222   <file baseinstalldir="." md5sum="02adf56b6e4af579c5ceb82f629c9e53" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/CSS.Proprietary.txt" role="data" /> 
     223   <file baseinstalldir="." md5sum="42b4f97fbbecce4c5dd688cc221c9416" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/CSS.txt" role="data" /> 
     224   <file baseinstalldir="." md5sum="f31a84811081f6d39bfe1053ba91b763" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/Filter.Custom.txt" role="data" /> 
     225   <file baseinstalldir="." md5sum="53481f4c972351defae8ef73231f8e83" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/Filter.ExtractStyleBlocks.txt" role="data" /> 
     226   <file baseinstalldir="." md5sum="79efe513ee723bfcfd4d30c4ecdc03ec" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/Filter.txt" role="data" /> 
     227   <file baseinstalldir="." md5sum="ba313ee1e19b7714f968e84482b6eb7e" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/Filter.YouTube.txt" role="data" /> 
     228   <file baseinstalldir="." md5sum="758b8c28bf5c4b9bbbc04c8a25188387" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/FilterParam.ExtractStyleBlocksEscaping.txt" role="data" /> 
     229   <file baseinstalldir="." md5sum="61dbaf4197dfeb146e913e9cc9ae7ac7" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/FilterParam.ExtractStyleBlocksScope.txt" role="data" /> 
     230   <file baseinstalldir="." md5sum="73c0e7a8e6a63facab4d41b83123f819" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/FilterParam.ExtractStyleBlocksTidyImpl.txt" role="data" /> 
     231   <file baseinstalldir="." md5sum="d3abda1b34ce655bab4f93776d40097a" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/FilterParam.txt" role="data" /> 
     232   <file baseinstalldir="." md5sum="5e0ab1c7214b72ed30787f7e59f88ea7" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/HTML.Allowed.txt" role="data" /> 
     233   <file baseinstalldir="." md5sum="63e9a4eaa59610d3ac1d92cef67df1b1" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/HTML.AllowedAttributes.txt" role="data" /> 
     234   <file baseinstalldir="." md5sum="86301e668632410ee10d14be11473e64" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/HTML.AllowedElements.txt" role="data" /> 
     235   <file baseinstalldir="." md5sum="83d331780d79a092f39c3ffc501c0a04" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/HTML.AllowedModules.txt" role="data" /> 
     236   <file baseinstalldir="." md5sum="736175bdedd42b69a06e20ae73c50a9b" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/HTML.BlockWrapper.txt" role="data" /> 
     237   <file baseinstalldir="." md5sum="914e4cf44d211fb904ba61c683e3b4c8" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/HTML.CoreModules.txt" role="data" /> 
     238   <file baseinstalldir="." md5sum="0ab4c18bcaf2d178c64763ca94800b6a" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/HTML.CustomDoctype.txt" role="data" /> 
     239   <file baseinstalldir="." md5sum="4a58dd12097a5d7a2672ae6033464cb4" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/HTML.DefinitionID.txt" role="data" /> 
     240   <file baseinstalldir="." md5sum="c0f551cf5a907109374d8cde33c76b74" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/HTML.DefinitionRev.txt" role="data" /> 
     241   <file baseinstalldir="." md5sum="0a47211a77e93ff4ff8290c2073e1d02" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/HTML.Doctype.txt" role="data" /> 
     242   <file baseinstalldir="." md5sum="ac4e2748f657492d62022284f40c3e64" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/HTML.ForbiddenAttributes.txt" role="data" /> 
     243   <file baseinstalldir="." md5sum="4c0522482da5949cb419a9e6d93ba19e" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/HTML.ForbiddenElements.txt" role="data" /> 
     244   <file baseinstalldir="." md5sum="7b3c5373952d7fd49f8698a105427aae" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/HTML.MaxImgLength.txt" role="data" /> 
     245   <file baseinstalldir="." md5sum="7207d85e0301b5d157c07db7a2d9d018" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/HTML.Parent.txt" role="data" /> 
     246   <file baseinstalldir="." md5sum="fe0f4c63b4da814d7f67808a3326cf77" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/HTML.Proprietary.txt" role="data" /> 
     247   <file baseinstalldir="." md5sum="4ed9c1ae1fcd792028ac0b86b2da3fac" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/HTML.SafeEmbed.txt" role="data" /> 
     248   <file baseinstalldir="." md5sum="5b3531ba6c977cd7827c7462e2f247e3" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/HTML.SafeObject.txt" role="data" /> 
     249   <file baseinstalldir="." md5sum="4fc17a4e87147129444c50b06c4519f2" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/HTML.Strict.txt" role="data" /> 
     250   <file baseinstalldir="." md5sum="9d3e82034f1484e9252d5e54334b9658" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/HTML.TidyAdd.txt" role="data" /> 
     251   <file baseinstalldir="." md5sum="413f3e78079e45ad4c42080b5ed31051" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/HTML.TidyLevel.txt" role="data" /> 
     252   <file baseinstalldir="." md5sum="b7cec98c24eec55aa0d0c74206233c49" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/HTML.TidyRemove.txt" role="data" /> 
     253   <file baseinstalldir="." md5sum="4f99bfd4564a4c0375b2914a1d1c4db8" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/HTML.Trusted.txt" role="data" /> 
     254   <file baseinstalldir="." md5sum="3f98ee383023f84c67c91718a53be3fa" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/HTML.txt" role="data" /> 
     255   <file baseinstalldir="." md5sum="f9ee690dc8b6fb760a18783c08d70573" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/HTML.XHTML.txt" role="data" /> 
     256   <file baseinstalldir="." md5sum="4e132e554a109384a0cd3fca4fb931d5" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/info.ini" role="data" /> 
     257   <file baseinstalldir="." md5sum="70fe380ced2da88f0024e78c73719fae" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/Output.CommentScriptContents.txt" role="data" /> 
     258   <file baseinstalldir="." md5sum="ad7520af7a6ad01d3aefb880b899776b" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/Output.Newline.txt" role="data" /> 
     259   <file baseinstalldir="." md5sum="1b5ab885e3bf9429d259f4d24c93dfef" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/Output.TidyFormat.txt" role="data" /> 
     260   <file baseinstalldir="." md5sum="fe070e99c236158c1b6915218d2bcdb6" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/Output.txt" role="data" /> 
     261   <file baseinstalldir="." md5sum="42c2b97dfa7ed9c19db9d8160d301fda" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/Test.ForceNoIconv.txt" role="data" /> 
     262   <file baseinstalldir="." md5sum="cb1f091b05094086f2f489e23a64c969" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/Test.txt" role="data" /> 
     263   <file baseinstalldir="." md5sum="c0ac2e464c0cd1a80c30c4c1b2c57e7e" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/URI.AllowedSchemes.txt" role="data" /> 
     264   <file baseinstalldir="." md5sum="97e5fda13377c8fb3c1898c1ea21bce6" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/URI.Base.txt" role="data" /> 
     265   <file baseinstalldir="." md5sum="82851a6ef1bb51cc123d576e473273ae" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/URI.DefaultScheme.txt" role="data" /> 
     266   <file baseinstalldir="." md5sum="19b260674ac508e1b6f68f80b033bca0" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/URI.DefinitionID.txt" role="data" /> 
     267   <file baseinstalldir="." md5sum="a83d2318b72a115b359ff6fec1797720" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/URI.DefinitionRev.txt" role="data" /> 
     268   <file baseinstalldir="." md5sum="191ebb86e122cfb502fae345b2871bde" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/URI.Disable.txt" role="data" /> 
     269   <file baseinstalldir="." md5sum="872a39b45367455bebc1b82d9edc3a6a" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/URI.DisableExternal.txt" role="data" /> 
     270   <file baseinstalldir="." md5sum="6590bf45b0c51b29282a0ef373415b5d" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/URI.DisableExternalResources.txt" role="data" /> 
     271   <file baseinstalldir="." md5sum="e3a25847e2623f5776d20b37a537e655" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/URI.DisableResources.txt" role="data" /> 
     272   <file baseinstalldir="." md5sum="fb016f6b3ccf11b43c70d5665b12f740" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/URI.Host.txt" role="data" /> 
     273   <file baseinstalldir="." md5sum="69a70086102a2ba22ffa283875291a6a" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/URI.HostBlacklist.txt" role="data" /> 
     274   <file baseinstalldir="." md5sum="534c965be8190439630e26f82e40a8f0" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/URI.MakeAbsolute.txt" role="data" /> 
     275   <file baseinstalldir="." md5sum="992e93e77925cf04f00a1c713481e057" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/URI.Munge.txt" role="data" /> 
     276   <file baseinstalldir="." md5sum="1c562e33633ee9dc4c5f83370e2c8ab5" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/URI.MungeResources.txt" role="data" /> 
     277   <file baseinstalldir="." md5sum="517ab521d4d19e5f634b1ae50725cf6b" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/URI.MungeSecretKey.txt" role="data" /> 
     278   <file baseinstalldir="." md5sum="01414d36614359a805eece93a0def5b1" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/URI.OverrideAllowedSchemes.txt" role="data" /> 
     279   <file baseinstalldir="." md5sum="02f6203a2764688e04ce88822df3ea2c" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/ConfigSchema/schema/URI.txt" role="data" /> 
     280   <file baseinstalldir="." md5sum="3ed2338a73cec33298c088e78f644c01" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/DefinitionCache/Decorator.php" role="php" /> 
     281   <file baseinstalldir="." md5sum="daec60d4d35a6e176fb5f365dccc2b8c" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/DefinitionCache/Null.php" role="php" /> 
     282   <file baseinstalldir="." md5sum="baa1ff94406984347b6e5e21c3c50a22" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/DefinitionCache/Serializer.php" role="php" /> 
     283   <file baseinstalldir="." md5sum="9cce7a2496854a943ca024af415065af" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/DefinitionCache/Decorator/Cleanup.php" role="php" /> 
     284   <file baseinstalldir="." md5sum="f50c630cbe2bdd0dcaa0304af19acdb6" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/DefinitionCache/Decorator/Memory.php" role="php" /> 
     285   <file baseinstalldir="." md5sum="5230beaee6aa31ee2dec758e90a38286" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/DefinitionCache/Decorator/Template.php.in" role="data" /> 
     286   <file baseinstalldir="." md5sum="3ce1be31ae8cd406cbbadff7c2cfc0e9" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/DefinitionCache/Serializer/HTML/3.1.1,6ee9e3e1bc054fba46c4a2a3c9f32027,1.ser" role="data" /> 
     287   <file baseinstalldir="." md5sum="0664b6ddec6c0d3cd1564ed056824560" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/DefinitionCache/Serializer/HTML/3.1.1,7e24b6c823c43d3b0969f913e2b415c1,1.ser" role="data" /> 
     288   <file baseinstalldir="." md5sum="0664b6ddec6c0d3cd1564ed056824560" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/DefinitionCache/Serializer/HTML/3.1.1,9b0a0ddd7a641e12ca0a2f60a0b0edfb,1.ser" role="data" /> 
     289   <file baseinstalldir="." md5sum="6c3fcb14ff5848753eda34a9c2cf274a" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/DefinitionCache/Serializer/HTML/3.1.1,caac08c8e18e263ea8ff896ceaf324b5,1.ser" role="data" /> 
     290   <file baseinstalldir="." md5sum="03e60b4bae4886f3a5572111af34c920" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/DefinitionCache/Serializer/HTML/3.1.1,f11a6edac655a4a753b1ed99a430721c,1.ser" role="data" /> 
     291   <file baseinstalldir="." md5sum="16d8667fd3f43be80ba36d318acba4c9" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/DefinitionCache/Serializer/URI/3.1.1,05c766101e813c246917b022f97b5e6e,1.ser" role="data" /> 
     292   <file baseinstalldir="." md5sum="5e2066baba7c0c0de8ff0ecc38ce2a5c" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/EntityLookup/entities.ser" role="data" /> 
     293   <file baseinstalldir="." md5sum="cef8d423ec4338034df27b761a55b65d" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/Filter/ExtractStyleBlocks.php" role="php" /> 
     294   <file baseinstalldir="." md5sum="b204bd1af6cac961f73d8fae2e383452" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/Filter/YouTube.php" role="php" /> 
     295   <file baseinstalldir="." md5sum="7cf628ce2e7647ad2a0536672a0400f5" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/HTMLModule/Bdo.php" role="php" /> 
     296   <file baseinstalldir="." md5sum="b783bec6b06467b80ddb7b5a24f9dc21" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/HTMLModule/CommonAttributes.php" role="php" /> 
     297   <file baseinstalldir="." md5sum="abef0c1adbe7378227ba26eb3ff45989" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/HTMLModule/Edit.php" role="php" /> 
     298   <file baseinstalldir="." md5sum="6eebb4eaf7a9fde8994c0c3ac3357a3c" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/HTMLModule/Hypertext.php" role="php" /> 
     299   <file baseinstalldir="." md5sum="0875a7958188337a38cbb217924117d2" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/HTMLModule/Image.php" role="php" /> 
     300   <file baseinstalldir="." md5sum="2dfcd9d933b0f17504e09adf08b1dacb" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/HTMLModule/Legacy.php" role="php" /> 
     301   <file baseinstalldir="." md5sum="aa952c4f2ed2dc9c9f53048f2205acc1" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/HTMLModule/List.php" role="php" /> 
     302   <file baseinstalldir="." md5sum="f43c43702656ccb8cbb3a0e2bfb9ea72" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/HTMLModule/NonXMLCommonAttributes.php" role="php" /> 
     303   <file baseinstalldir="." md5sum="e5619e029a921d7ff91c69a10268a49e" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/HTMLModule/Object.php" role="php" /> 
     304   <file baseinstalldir="." md5sum="010a7b58e60f3dbf25f572922279ef8e" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/HTMLModule/Presentation.php" role="php" /> 
     305   <file baseinstalldir="." md5sum="83f50fc6b0890ef052edcf0b1ac6888a" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/HTMLModule/Proprietary.php" role="php" /> 
     306   <file baseinstalldir="." md5sum="3e1d07248d375754587c3d08d22f6da6" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/HTMLModule/Ruby.php" role="php" /> 
     307   <file baseinstalldir="." md5sum="def7621fafbeffc9b39d130b8a4b5977" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/HTMLModule/SafeEmbed.php" role="php" /> 
     308   <file baseinstalldir="." md5sum="fec302effa75efe36376641561a5a988" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/HTMLModule/SafeObject.php" role="php" /> 
     309   <file baseinstalldir="." md5sum="c9256e251e9bef8f9be7ace2dd98f5cc" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/HTMLModule/Scripting.php" role="php" /> 
     310   <file baseinstalldir="." md5sum="66d008a0f8cf02a6bd7f34131da9705c" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/HTMLModule/StyleAttribute.php" role="php" /> 
     311   <file baseinstalldir="." md5sum="934bb3bf105d6fb5e13f98ef28b9b4b8" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/HTMLModule/Tables.php" role="php" /> 
     312   <file baseinstalldir="." md5sum="8a672f676488d0d5932761494165a8e0" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/HTMLModule/Target.php" role="php" /> 
     313   <file baseinstalldir="." md5sum="381e19fbda0cece87ccf1258b82517ce" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/HTMLModule/Text.php" role="php" /> 
     314   <file baseinstalldir="." md5sum="e2b16b96274c8581e3c4f3421c1b3b42" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/HTMLModule/Tidy.php" role="php" /> 
     315   <file baseinstalldir="." md5sum="6ded768c70390702bd3963f48411e93b" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/HTMLModule/XMLCommonAttributes.php" role="php" /> 
     316   <file baseinstalldir="." md5sum="30f173a6451f7f03ff2282ee842665bb" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/HTMLModule/Tidy/Proprietary.php" role="php" /> 
     317   <file baseinstalldir="." md5sum="92872d8e385b59b9e4cbf729e7e61759" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/HTMLModule/Tidy/Strict.php" role="php" /> 
     318   <file baseinstalldir="." md5sum="09c9337421ba36247d1b2fc57bb478e0" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/HTMLModule/Tidy/Transitional.php" role="php" /> 
     319   <file baseinstalldir="." md5sum="65b50bace4072bb36ef2faadae5ac4dc" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/HTMLModule/Tidy/XHTML.php" role="php" /> 
     320   <file baseinstalldir="." md5sum="e6285c3e6f8acfbec6cdddb561ce49c6" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/HTMLModule/Tidy/XHTMLAndHTML4.php" role="php" /> 
     321   <file baseinstalldir="." md5sum="3cd9b711b37c9e7ccf515bd7a5507c81" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/Injector/AutoParagraph.php" role="php" /> 
     322   <file baseinstalldir="." md5sum="147a0fe4b205db964b717c68c81c37e6" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/Injector/Linkify.php" role="php" /> 
     323   <file baseinstalldir="." md5sum="0a1c6db671fcd82a7d8dd75261a6792b" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/Injector/PurifierLinkify.php" role="php" /> 
     324   <file baseinstalldir="." md5sum="116cf5c43653519161f69cc3d45d6740" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/Injector/SafeObject.php" role="php" /> 
     325   <file baseinstalldir="." md5sum="671e1a13f9d884d0cbf65efee418eb92" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/Language/classes/en-x-test.php" role="php" /> 
     326   <file baseinstalldir="." md5sum="a36e86692502b90805052e80cdf8d75f" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/Language/messages/en-x-test.php" role="php" /> 
     327   <file baseinstalldir="." md5sum="f37237fb6460245c203f9e3a876f097f" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/Language/messages/en-x-testmini.php" role="php" /> 
     328   <file baseinstalldir="." md5sum="6e9bc6b9a652df5969276cff9386ace8" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/Language/messages/en.php" role="php" /> 
     329   <file baseinstalldir="." md5sum="60babe6545abe10664346725c457e8a6" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/Lexer/DirectLex.php" role="php" /> 
     330   <file baseinstalldir="." md5sum="830e948aede5aa3ee9f6816c5815ec27" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/Lexer/DOMLex.php" role="php" /> 
     331   <file baseinstalldir="." md5sum="a66db63fa3d338850843febf30f7d262" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/Lexer/PEARSax3.php" role="php" /> 
     332   <file baseinstalldir="." md5sum="e1c7111c1e383c2e590bf16531bec211" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/Lexer/PH5P.php" role="php" /> 
     333   <file baseinstalldir="." md5sum="c59416405ed36f436cf79b24c0a92d11" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/Printer/ConfigForm.css" role="data" /> 
     334   <file baseinstalldir="." md5sum="fe4d12358a17a9b317d1eb90b6e7cf94" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/Printer/ConfigForm.js" role="data" /> 
     335   <file baseinstalldir="." md5sum="d63cf2f11a9c8f1d80ec847d7e2798cc" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/Printer/ConfigForm.php" role="php" /> 
     336   <file baseinstalldir="." md5sum="94d9b2c8d6eb4956a4c3a988fe504dbc" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/Printer/CSSDefinition.php" role="php" /> 
     337   <file baseinstalldir="." md5sum="ad980092c80f40f28e656b2b2f215849" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/Printer/HTMLDefinition.php" role="php" /> 
     338   <file baseinstalldir="." md5sum="c10747616c9701af3323bf606eeaac30" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/Strategy/Composite.php" role="php" /> 
     339   <file baseinstalldir="." md5sum="357531a7d08cc6789197bc3991dec7a6" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/Strategy/Core.php" role="php" /> 
     340   <file baseinstalldir="." md5sum="67c174a1f8e5bfc3e48e64742d9e2727" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/Strategy/FixNesting.php" role="php" /> 
     341   <file baseinstalldir="." md5sum="a2b48ace08b51d6799021158b58f98f0" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/Strategy/MakeWellFormed.php" role="php" /> 
     342   <file baseinstalldir="." md5sum="9dc36ad3d65f70bcd9a08ae9d2a8438e" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/Strategy/RemoveForeignElements.php" role="php" /> 
     343   <file baseinstalldir="." md5sum="f6a166358ba1665f9131bd9d4a5a8f36" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/Strategy/ValidateAttributes.php" role="php" /> 
     344   <file baseinstalldir="." md5sum="1e14b08be9b10d035b95347641293d3c" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/TagTransform/Font.php" role="php" /> 
     345   <file baseinstalldir="." md5sum="50d1e1bac13437fa3f07335ca0218251" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/TagTransform/Simple.php" role="php" /> 
     346   <file baseinstalldir="." md5sum="4a0835b8a234b73395d61cebf8de0133" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/Token/Comment.php" role="php" /> 
     347   <file baseinstalldir="." md5sum="ffa22c6f811bf2d2345484956a3c005c" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/Token/Empty.php" role="php" /> 
     348   <file baseinstalldir="." md5sum="19adae0928ed3c99e227c9bfdd6048f2" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/Token/End.php" role="php" /> 
     349   <file baseinstalldir="." md5sum="9a162743dd6d296ecf8db4b856c72410" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/Token/Start.php" role="php" /> 
     350   <file baseinstalldir="." md5sum="7e6d9aa29c72510582fad1187ecba831" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/Token/Tag.php" role="php" /> 
     351   <file baseinstalldir="." md5sum="6947497170c716c8922410bc47563cc1" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/Token/Text.php" role="php" /> 
     352   <file baseinstalldir="." md5sum="8222093e0f3a9b30c77018ff9d02ef23" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/URIFilter/DisableExternal.php" role="php" /> 
     353   <file baseinstalldir="." md5sum="57fbc3b9cd1411f357a32b6f915edc29" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/URIFilter/DisableExternalResources.php" role="php" /> 
     354   <file baseinstalldir="." md5sum="c8c6424e96f5ffc98c669d39f75a622c" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/URIFilter/HostBlacklist.php" role="php" /> 
     355   <file baseinstalldir="." md5sum="3a1919059f3e427e0508bbaac46d039b" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/URIFilter/MakeAbsolute.php" role="php" /> 
     356   <file baseinstalldir="." md5sum="9d9696c6a65acecb3692b68b4bb6cae1" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/URIFilter/Munge.php" role="php" /> 
     357   <file baseinstalldir="." md5sum="278c7c41fecb3a8a6596ae9b897d4408" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/URIScheme/ftp.php" role="php" /> 
     358   <file baseinstalldir="." md5sum="ecb20fc1cd945e06c421f9f820eee5d4" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/URIScheme/http.php" role="php" /> 
     359   <file baseinstalldir="." md5sum="e14ea66a8e126a6afe5d7646d36f9a12" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/URIScheme/https.php" role="php" /> 
     360   <file baseinstalldir="." md5sum="1e6fca170ac5f4da8120d245f65c0940" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/URIScheme/mailto.php" role="php" /> 
     361   <file baseinstalldir="." md5sum="fb0621b1597248f72996b5e74435af6c" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/URIScheme/news.php" role="php" /> 
     362   <file baseinstalldir="." md5sum="3f8eeff3941bd828007a4f7cf169dcff" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/URIScheme/nntp.php" role="php" /> 
     363   <file baseinstalldir="." md5sum="20a0d151f59cc787aa5cb4f17ef3d231" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/VarParser/Flexible.php" role="php" /> 
     364   <file baseinstalldir="." md5sum="27f43f68c1bc5d1cefdd9649925f5c1f" name="lib/htmlpurifier-3.1.1-lite/library/HTMLPurifier/VarParser/Native.php" role="php" /> 
     365   <file baseinstalldir="." md5sum="0da8fccf48560a7ce30b461d72ad384d" name="lib/model/sfComment.php" role="php" /> 
     366   <file baseinstalldir="." md5sum="1634eef57f3d899d34bf39a2cd29fe2c" name="lib/model/sfCommentPeer.php" role="php" /> 
     367   <file baseinstalldir="." md5sum="67833d72080b2c42d7edf23df5fc0c87" name="lib/model/map/sfCommentMapBuilder.php" role="php" /> 
     368   <file baseinstalldir="." md5sum="434a97f4758facf8aa5f5eeb53b92724" name="lib/model/om/BasesfComment.php" role="php" /> 
     369   <file baseinstalldir="." md5sum="aa4326c59686a70e02df35661926fa96" name="lib/model/om/BasesfCommentPeer.php" role="php" /> 
     370   <file baseinstalldir="." md5sum="41b7f0e7341e528de95678d0f52af6e0" name="modules/sfComment/actions/actions.class.php" role="php" /> 
     371   <file baseinstalldir="." md5sum="f54862faf395098ada1fd42330811e13" name="modules/sfComment/actions/components.class.php" role="php" /> 
     372   <file baseinstalldir="." md5sum="0a268942a76f301c5b791e1149dac13f" name="modules/sfComment/config/cache.yml" role="data" /> 
     373   <file baseinstalldir="." md5sum="df94ba7d6e0c7c31a849af53aa13d6cf" name="modules/sfComment/i18n/messages.fr.xml" role="data" /> 
     374   <file baseinstalldir="." md5sum="9419dd39267ef12af9ef06fca637e6c1" name="modules/sfComment/lib/BasesfCommentActions.class.php" role="php" /> 
     375   <file baseinstalldir="." md5sum="1a8653ab33c5b7395743480d9e1090f0" name="modules/sfComment/lib/BasesfCommentComponents.class.php" role="php" /> 
     376   <file baseinstalldir="." md5sum="6c55d7419a456dc54a89c3e1660ba8d4" name="modules/sfComment/templates/commentFormSuccess.php" role="php" /> 
     377   <file baseinstalldir="." md5sum="27596eba98ac87c8025b70d44698fcc4" name="modules/sfComment/templates/commentSuccess.php" role="php" /> 
     378   <file baseinstalldir="." md5sum="464da84e7e4d4124ebf47c144bcfb377" name="modules/sfComment/templates/_author.php" role="php" /> 
     379   <file baseinstalldir="." md5sum="a684d04c990fce8236827fc805e58a26" name="modules/sfComment/templates/_commentForm.php" role="php" /> 
     380   <file baseinstalldir="." md5sum="41996cc5f3d0c2b179885ceeb5ccd456" name="modules/sfComment/templates/_commentList.php" role="php" /> 
     381   <file baseinstalldir="." md5sum="23b3a31147fe2404fea08a3be6da1355" name="modules/sfComment/templates/_commentView.php" role="php" /> 
     382   <file baseinstalldir="." md5sum="700032fe7b3b549982d9c8ceed7251a9" name="modules/sfComment/templates/_gravatar.php" role="php" /> 
     383   <file baseinstalldir="." md5sum="0283fa8bb5daf8478ec1cfeeeb95a3b3" name="modules/sfComment/validate/anonymousComment.yml" role="data" /> 
     384   <file baseinstalldir="." md5sum="3dde2917066e218af1de3599c26ce6d5" name="modules/sfComment/validate/authenticatedComment.yml" role="data" /> 
     385   <file baseinstalldir="." md5sum="d73d5ef2fb9560d895811319e3057148" name="modules/sfCommentAdmin/actions/actions.class.php" role="php" /> 
     386   <file baseinstalldir="." md5sum="b43945bd828d31069104b11d3bb236b4" name="modules/sfCommentAdmin/config/generator.yml" role="data" /> 
     387   <file baseinstalldir="." md5sum="01ffe521fd27ba9b2bd6e9d0ce1e17bf" name="modules/sfCommentAdmin/templates/_author.php" role="php" /> 
     388   <file baseinstalldir="." md5sum="dece173425232a376a63a8528fddae94" name="modules/sfCommentAdmin/templates/_commented.php" role="php" /> 
     389   <file baseinstalldir="." md5sum="c70f5fc1270838a09365207699e6e46a" name="test/unit/sfPropelActAsCommentableBehaviorTest.php" role="php" /> 
     390   <file baseinstalldir="." md5sum="97517cccd8f393e234ae798c270fb047" name="web/css/sf_comment.css" role="data" /> 
     391   <file baseinstalldir="." md5sum="dd6b7b0bf5c3af22499abc0a9ee1e1b2" name="web/images/indicator.gif" role="data" /> 
     392   <file baseinstalldir="." md5sum="607d2943e105b0b1457ba1dba0a4d4f4" name="web/images/input-shadow-required.gif" role="data" /> 
     393   <file baseinstalldir="." md5sum="2684f279c42945c11e4ed306bc7d3b24" name="web/images/input-shadow.gif" role="data" /> 
     394   <file baseinstalldir="." md5sum="f0d1cdb1d90e5110c31218971607cc2b" name="LICENSE" role="data" /> 
     395   <file baseinstalldir="." md5sum="daa4b2a4f6f104ee3b477080966d1de5" name="README" role="data" /> 
    107396  </dir> 
    108397 </contents> 
     
    110399  <required> 
    111400   <php> 
    112     <min>5.0.0</min> 
     401    <min>5</min> 
    113402   </php> 
    114403   <pearinstaller> 
     
    128417  <release> 
    129418   <version> 
     419    <release>0.5.0</release> 
     420    <api>0.5.0</api> 
     421   </version> 
     422   <stability> 
     423    <release>beta</release> 
     424    <api>beta</api> 
     425   </stability> 
     426   <date>2008-08-11</date> 
     427   <license uri="http://www.opensource.org/licenses/mit-license.html">MIT</license> 
     428   <notes>  * fixed XSS bug (closes #3745) 
     429  * switched documentation to the markdown syntax 
     430  * added a &quot;website&quot; field 
     431  * fixed &quot;duplication of DOM id sf_comment_list&quot; bug (closes #3258) 
     432  * allowed formatting in comments (closes #2900): 
     433    * introduced a ``sfPropelActAsCommentableStripper`` class 
     434    * use of [HTMLPurifier](http://htmlpurifier.org/) 
     435  * fixed &quot;title not saved&quot; bug (closes #3086)</notes> 
     436  </release> 
     437  <release> 
     438   <version> 
    130439    <release>0.4.0</release> 
    131440    <api>0.4.0</api> 
     
    139448   <notes> 
    140449 * compatibility with escaping=both mode 
    141  * Added unique DOM id for each comment, in the form {{{sf_comment_$id}}}  
     450 * Added unique DOM id for each comment, in the form {{{sf_comment_$id}}} 
    142451 (Nicolas Perriault) 
    143  * use a session token instead of passing the object id and model in the request  
     452 * use a session token instead of passing the object id and model in the request 
    144453 (Nicolas Perriault) 
    145454 * bugfixes, based on a patch from Michael Nolan (closes #2595): 

The Sensio Labs Network

Since 1998, Sensio Labs has been promoting the Open-Source software movement by providing quality web application development, training, consulting, and supporting several large Open-Source projects.