| 
webmaster@1
 | 
     1 <?php | 
| 
franck@19
 | 
     2 // $Id: comment.install,v 1.19.2.1 2009/01/06 15:46:36 goba Exp $ | 
| 
webmaster@1
 | 
     3  | 
| 
webmaster@1
 | 
     4 /** | 
| 
webmaster@1
 | 
     5  * Implementation of hook_enable(). | 
| 
webmaster@1
 | 
     6  */ | 
| 
webmaster@1
 | 
     7 function comment_enable() { | 
| 
webmaster@1
 | 
     8   // Insert records into the node_comment_statistics for nodes that are missing. | 
| 
webmaster@1
 | 
     9   db_query("INSERT INTO {node_comment_statistics} (nid, last_comment_timestamp, last_comment_name, last_comment_uid, comment_count) SELECT n.nid, n.changed, NULL, n.uid, 0 FROM {node} n LEFT JOIN {node_comment_statistics} c ON n.nid = c.nid WHERE c.comment_count IS NULL"); | 
| 
webmaster@1
 | 
    10 } | 
| 
webmaster@1
 | 
    11  | 
| 
webmaster@1
 | 
    12 /** | 
| 
webmaster@1
 | 
    13  * Changed node_comment_statistics to use node->changed to avoid future timestamps. | 
| 
webmaster@1
 | 
    14  */ | 
| 
webmaster@1
 | 
    15 function comment_update_1() { | 
| 
webmaster@1
 | 
    16   // Change any future last comment timestamps to now. | 
| 
webmaster@1
 | 
    17   db_query('UPDATE {node_comment_statistics} SET last_comment_timestamp = %d WHERE last_comment_timestamp > %d', time(), time()); | 
| 
webmaster@1
 | 
    18  | 
| 
webmaster@1
 | 
    19   // Unstuck node indexing timestamp if needed. | 
| 
webmaster@1
 | 
    20   if (($last = variable_get('node_cron_last', FALSE)) !== FALSE) { | 
| 
webmaster@1
 | 
    21     variable_set('node_cron_last', min(time(), $last)); | 
| 
webmaster@1
 | 
    22   } | 
| 
webmaster@1
 | 
    23   return array(); | 
| 
webmaster@1
 | 
    24 } | 
| 
webmaster@1
 | 
    25  | 
| 
webmaster@1
 | 
    26 function comment_update_6001() { | 
| 
webmaster@1
 | 
    27   $ret[] = update_sql("ALTER TABLE {comments} DROP score"); | 
| 
webmaster@1
 | 
    28   $ret[] = update_sql("ALTER TABLE {comments} DROP users"); | 
| 
webmaster@1
 | 
    29   return $ret; | 
| 
webmaster@1
 | 
    30 } | 
| 
webmaster@1
 | 
    31  | 
| 
webmaster@1
 | 
    32 /** | 
| 
webmaster@1
 | 
    33  * Changed comment settings from global to per-node -- copy global | 
| 
webmaster@1
 | 
    34  * settings to all node types. | 
| 
webmaster@1
 | 
    35  */ | 
| 
webmaster@1
 | 
    36 function comment_update_6002() { | 
| 
webmaster@1
 | 
    37   // Comment module might not be enabled when this is run, but we need the | 
| 
webmaster@1
 | 
    38   // constants defined by the module for this update. | 
| 
webmaster@1
 | 
    39   drupal_load('module', 'comment'); | 
| 
webmaster@1
 | 
    40   $settings = array( | 
| 
webmaster@1
 | 
    41     'comment_default_mode' => COMMENT_MODE_THREADED_EXPANDED, | 
| 
webmaster@1
 | 
    42     'comment_default_order' => COMMENT_ORDER_NEWEST_FIRST, | 
| 
webmaster@1
 | 
    43     'comment_default_per_page' => 50, | 
| 
webmaster@1
 | 
    44     'comment_controls' => COMMENT_CONTROLS_HIDDEN, | 
| 
webmaster@1
 | 
    45     'comment_anonymous' => COMMENT_ANONYMOUS_MAYNOT_CONTACT, | 
| 
webmaster@1
 | 
    46     'comment_subject_field' => 1, | 
| 
webmaster@1
 | 
    47     'comment_preview' => COMMENT_PREVIEW_REQUIRED, | 
| 
webmaster@1
 | 
    48     'comment_form_location' => COMMENT_FORM_SEPARATE_PAGE, | 
| 
webmaster@1
 | 
    49   ); | 
| 
webmaster@1
 | 
    50   $types = node_get_types(); | 
| 
webmaster@1
 | 
    51   foreach ($settings as $setting => $default) { | 
| 
webmaster@1
 | 
    52     $value = variable_get($setting, $default); | 
| 
webmaster@1
 | 
    53     foreach ($types as $type => $object) { | 
| 
webmaster@1
 | 
    54       variable_set($setting .'_'. $type, $value); | 
| 
webmaster@1
 | 
    55     } | 
| 
webmaster@1
 | 
    56     variable_del($setting); | 
| 
webmaster@1
 | 
    57   } | 
| 
webmaster@1
 | 
    58   return array(array('success' => TRUE, 'query' => 'Global comment settings copied to all node types.')); | 
| 
webmaster@1
 | 
    59 } | 
| 
webmaster@1
 | 
    60  | 
| 
webmaster@1
 | 
    61 /** | 
| 
webmaster@1
 | 
    62  * Add index to parent ID field. | 
| 
webmaster@1
 | 
    63  */ | 
| 
webmaster@1
 | 
    64 function comment_update_6003() { | 
| 
webmaster@1
 | 
    65   $ret = array(); | 
| 
webmaster@1
 | 
    66   db_add_index($ret, 'comments', 'pid', array('pid')); | 
| 
webmaster@1
 | 
    67   return $ret; | 
| 
webmaster@1
 | 
    68 } | 
| 
webmaster@1
 | 
    69  | 
| 
webmaster@1
 | 
    70  | 
| 
webmaster@1
 | 
    71 /** | 
| 
webmaster@1
 | 
    72  * Implementation of hook_schema(). | 
| 
webmaster@1
 | 
    73  */ | 
| 
webmaster@1
 | 
    74 function comment_schema() { | 
| 
webmaster@1
 | 
    75   $schema['comments'] = array( | 
| 
franck@19
 | 
    76     'description' => 'Stores comments and associated data.', | 
| 
webmaster@1
 | 
    77     'fields' => array( | 
| 
webmaster@1
 | 
    78       'cid' => array( | 
| 
webmaster@1
 | 
    79         'type' => 'serial', | 
| 
webmaster@1
 | 
    80         'not null' => TRUE, | 
| 
franck@19
 | 
    81         'description' => 'Primary Key: Unique comment ID.', | 
| 
webmaster@1
 | 
    82       ), | 
| 
webmaster@1
 | 
    83       'pid' => array( | 
| 
webmaster@1
 | 
    84         'type' => 'int', | 
| 
webmaster@1
 | 
    85         'not null' => TRUE, | 
| 
webmaster@1
 | 
    86         'default' => 0, | 
| 
franck@19
 | 
    87         'description' => 'The {comments}.cid to which this comment is a reply. If set to 0, this comment is not a reply to an existing comment.', | 
| 
webmaster@1
 | 
    88       ), | 
| 
webmaster@1
 | 
    89       'nid' => array( | 
| 
webmaster@1
 | 
    90         'type' => 'int', | 
| 
webmaster@1
 | 
    91         'not null' => TRUE, | 
| 
webmaster@1
 | 
    92         'default' => 0, | 
| 
franck@19
 | 
    93         'description' => 'The {node}.nid to which this comment is a reply.', | 
| 
webmaster@1
 | 
    94       ), | 
| 
webmaster@1
 | 
    95       'uid' => array( | 
| 
webmaster@1
 | 
    96         'type' => 'int', | 
| 
webmaster@1
 | 
    97         'not null' => TRUE, | 
| 
webmaster@1
 | 
    98         'default' => 0, | 
| 
franck@19
 | 
    99         'description' => 'The {users}.uid who authored the comment. If set to 0, this comment was created by an anonymous user.', | 
| 
webmaster@1
 | 
   100       ), | 
| 
webmaster@1
 | 
   101       'subject' => array( | 
| 
webmaster@1
 | 
   102         'type' => 'varchar', | 
| 
webmaster@1
 | 
   103         'length' => 64, | 
| 
webmaster@1
 | 
   104         'not null' => TRUE, | 
| 
webmaster@1
 | 
   105         'default' => '', | 
| 
franck@19
 | 
   106         'description' => 'The comment title.', | 
| 
webmaster@1
 | 
   107       ), | 
| 
webmaster@1
 | 
   108       'comment' => array( | 
| 
webmaster@1
 | 
   109         'type' => 'text', | 
| 
webmaster@1
 | 
   110         'not null' => TRUE, | 
| 
webmaster@1
 | 
   111         'size' => 'big', | 
| 
franck@19
 | 
   112         'description' => 'The comment body.', | 
| 
webmaster@1
 | 
   113       ), | 
| 
webmaster@1
 | 
   114       'hostname' => array( | 
| 
webmaster@1
 | 
   115         'type' => 'varchar', | 
| 
webmaster@1
 | 
   116         'length' => 128, | 
| 
webmaster@1
 | 
   117         'not null' => TRUE, | 
| 
webmaster@1
 | 
   118         'default' => '', | 
| 
franck@19
 | 
   119         'description' => "The author's host name.", | 
| 
webmaster@1
 | 
   120       ), | 
| 
webmaster@1
 | 
   121       'timestamp' => array( | 
| 
webmaster@1
 | 
   122         'type' => 'int', | 
| 
webmaster@1
 | 
   123         'not null' => TRUE, | 
| 
webmaster@1
 | 
   124         'default' => 0, | 
| 
franck@19
 | 
   125         'description' => 'The time that the comment was created, or last edited by its author, as a Unix timestamp.', | 
| 
webmaster@1
 | 
   126       ), | 
| 
webmaster@1
 | 
   127       'status' => array( | 
| 
webmaster@1
 | 
   128         'type' => 'int', | 
| 
webmaster@1
 | 
   129         'unsigned' => TRUE, | 
| 
webmaster@1
 | 
   130         'not null' => TRUE, | 
| 
webmaster@1
 | 
   131         'default' => 0, | 
| 
webmaster@1
 | 
   132         'size' => 'tiny', | 
| 
franck@19
 | 
   133         'description' => 'The published status of a comment. (0 = Published, 1 = Not Published)', | 
| 
webmaster@1
 | 
   134       ), | 
| 
webmaster@1
 | 
   135       'format' => array( | 
| 
webmaster@1
 | 
   136         'type' => 'int', | 
| 
webmaster@1
 | 
   137         'size' => 'small', | 
| 
webmaster@1
 | 
   138         'not null' => TRUE, | 
| 
webmaster@1
 | 
   139         'default' => 0, | 
| 
franck@19
 | 
   140         'description' => 'The {filter_formats}.format of the comment body.', | 
| 
webmaster@1
 | 
   141       ), | 
| 
webmaster@1
 | 
   142       'thread' => array( | 
| 
webmaster@1
 | 
   143         'type' => 'varchar', | 
| 
webmaster@1
 | 
   144         'length' => 255, | 
| 
webmaster@1
 | 
   145         'not null' => TRUE, | 
| 
franck@19
 | 
   146         'description' => "The vancode representation of the comment's place in a thread.", | 
| 
webmaster@1
 | 
   147       ), | 
| 
webmaster@1
 | 
   148       'name' => array( | 
| 
webmaster@1
 | 
   149         'type' => 'varchar', | 
| 
webmaster@1
 | 
   150         'length' => 60, | 
| 
webmaster@1
 | 
   151         'not null' => FALSE, | 
| 
franck@19
 | 
   152         'description' => "The comment author's name. Uses {users}.name if the user is logged in, otherwise uses the value typed into the comment form.", | 
| 
webmaster@1
 | 
   153       ), | 
| 
webmaster@1
 | 
   154       'mail' => array( | 
| 
webmaster@1
 | 
   155         'type' => 'varchar', | 
| 
webmaster@1
 | 
   156         'length' => 64, | 
| 
webmaster@1
 | 
   157         'not null' => FALSE, | 
| 
franck@19
 | 
   158         'description' => "The comment author's e-mail address from the comment form, if user is anonymous, and the 'Anonymous users may/must leave their contact information' setting is turned on.", | 
| 
webmaster@1
 | 
   159       ), | 
| 
webmaster@1
 | 
   160       'homepage' => array( | 
| 
webmaster@1
 | 
   161         'type' => 'varchar', | 
| 
webmaster@1
 | 
   162         'length' => 255, | 
| 
webmaster@1
 | 
   163         'not null' => FALSE, | 
| 
franck@19
 | 
   164         'description' => "The comment author's home page address from the comment form, if user is anonymous, and the 'Anonymous users may/must leave their contact information' setting is turned on.", | 
| 
webmaster@1
 | 
   165       ) | 
| 
webmaster@1
 | 
   166     ), | 
| 
webmaster@1
 | 
   167     'indexes' => array( | 
| 
webmaster@1
 | 
   168       'pid'    => array('pid'), | 
| 
webmaster@1
 | 
   169       'nid'    => array('nid'), | 
| 
webmaster@1
 | 
   170       'status' => array('status'), // This index is probably unused | 
| 
webmaster@1
 | 
   171     ), | 
| 
webmaster@1
 | 
   172     'primary key' => array('cid'), | 
| 
webmaster@1
 | 
   173   ); | 
| 
webmaster@1
 | 
   174  | 
| 
webmaster@1
 | 
   175   $schema['node_comment_statistics'] = array( | 
| 
franck@19
 | 
   176     'description' => 'Maintains statistics of node and comments posts to show "new" and "updated" flags.', | 
| 
webmaster@1
 | 
   177     'fields' => array( | 
| 
webmaster@1
 | 
   178       'nid' => array( | 
| 
webmaster@1
 | 
   179         'type' => 'int', | 
| 
webmaster@1
 | 
   180         'unsigned' => TRUE, | 
| 
webmaster@1
 | 
   181         'not null' => TRUE, | 
| 
webmaster@1
 | 
   182         'default' => 0, | 
| 
franck@19
 | 
   183         'description' => 'The {node}.nid for which the statistics are compiled.', | 
| 
webmaster@1
 | 
   184       ), | 
| 
webmaster@1
 | 
   185       'last_comment_timestamp' => array( | 
| 
webmaster@1
 | 
   186         'type' => 'int', | 
| 
webmaster@1
 | 
   187         'not null' => TRUE, | 
| 
webmaster@1
 | 
   188         'default' => 0, | 
| 
franck@19
 | 
   189         'description' => 'The Unix timestamp of the last comment that was posted within this node, from {comments}.timestamp.', | 
| 
webmaster@1
 | 
   190       ), | 
| 
webmaster@1
 | 
   191       'last_comment_name' => array( | 
| 
webmaster@1
 | 
   192         'type' => 'varchar', | 
| 
webmaster@1
 | 
   193         'length' => 60, | 
| 
webmaster@1
 | 
   194         'not null' => FALSE, | 
| 
franck@19
 | 
   195         'description' => 'The name of the latest author to post a comment on this node, from {comments}.name.', | 
| 
webmaster@1
 | 
   196       ), | 
| 
webmaster@1
 | 
   197       'last_comment_uid' => array( | 
| 
webmaster@1
 | 
   198         'type' => 'int', | 
| 
webmaster@1
 | 
   199         'not null' => TRUE, | 
| 
webmaster@1
 | 
   200         'default' => 0, | 
| 
franck@19
 | 
   201         'description' => 'The user ID of the latest author to post a comment on this node, from {comments}.uid.', | 
| 
webmaster@1
 | 
   202       ), | 
| 
webmaster@1
 | 
   203       'comment_count' => array( | 
| 
webmaster@1
 | 
   204         'type' => 'int', | 
| 
webmaster@1
 | 
   205         'unsigned' => TRUE, | 
| 
webmaster@1
 | 
   206         'not null' => TRUE, | 
| 
webmaster@1
 | 
   207         'default' => 0, | 
| 
franck@19
 | 
   208         'description' => 'The total number of comments on this node.', | 
| 
webmaster@1
 | 
   209       ), | 
| 
webmaster@1
 | 
   210     ), | 
| 
webmaster@1
 | 
   211     'primary key' => array('nid'), | 
| 
webmaster@1
 | 
   212     'indexes' => array( | 
| 
webmaster@1
 | 
   213       'node_comment_timestamp' => array('last_comment_timestamp') | 
| 
webmaster@1
 | 
   214     ), | 
| 
webmaster@1
 | 
   215   ); | 
| 
webmaster@1
 | 
   216  | 
| 
webmaster@1
 | 
   217   return $schema; | 
| 
webmaster@1
 | 
   218 } | 
| 
webmaster@1
 | 
   219  |