This repository has been archived on 2025-06-21. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.
suitedesk/modules/nodecomment/nodecomment.install

223 lines
6.7 KiB
Text

<?php
/**
* @file
* Install file for nodecomment
*/
function nodecomment_install() {
drupal_install_schema('nodecomment');
_nodecomment_install_type_create();
}
function _nodecomment_install_type_create() {
// During install profiles, node and user modules aren't yet loaded.
// Ensure they're loaded before calling node_get_types().
drupal_load('module', 'node');
drupal_load('module', 'user');
$types = node_get_types();
$types = array_change_key_case($types, CASE_LOWER);
if (!in_array('comment', array_keys($types))) {
// Create the comment content type.
$nodecomment_node_type = array(
'type' => 'comment',
'name' => t('Comment'),
'module' => 'node',
'description' => t('A comment for use with the nodecomment module.'),
'title_label' => t('Subject'),
'body_label' => t('Body'),
'custom' => TRUE,
'modified' => TRUE,
'locked' => FALSE,
);
$nodecomment_node_type = (object)_node_type_set_defaults($nodecomment_node_type);
node_type_save($nodecomment_node_type);
// Default to not promoted.
variable_set('node_options_comment', array('status'));
// Default to not allowing comments.
variable_set('comment_comment', 0);
cache_clear_all();
module_load_include('inc', 'system', 'system.admin');
system_modules();
menu_rebuild();
node_types_rebuild();
}
}
function nodecomment_schema() {
$schema['node_comments'] = array(
'fields' => array(
'cid' => array('type' => 'int', 'not null' => TRUE, 'default' => 0, 'disp-width' => '11'),
'pid' => array('type' => 'int', 'not null' => TRUE, 'default' => 0, 'disp-width' => '11'),
'nid' => array('type' => 'int', 'not null' => TRUE, 'default' => 0, 'disp-width' => '11'),
'hostname' => array('type' => 'varchar', 'length' => '128', 'not null' => TRUE, 'default' => ''),
'thread' => array('type' => 'varchar', 'length' => '255', 'not null' => TRUE),
'name' => array('type' => 'varchar', 'length' => '60', 'not null' => FALSE),
'uid' => array('type' => 'int', 'not null' => TRUE, 'default' => 0, 'disp-width' => '11'),
'mail' => array('type' => 'varchar', 'length' => '64', 'not null' => FALSE),
'homepage' => array('type' => 'varchar', 'length' => '255', 'not null' => FALSE)
),
'primary key' => array('cid'),
'indexes' => array(
'lid' => array('nid'),
// For quickly finding user comments.
'nid_uid' => array('nid', 'uid')
),
);
return $schema;
}
function nodecomment_uninstall() {
drupal_uninstall_schema('nodecomment');
foreach (_nodecomment_vars() as $var) {
variable_del($var);
}
}
function nodecomment_update_6000() {
// adding uid to schema. this is needed to avoid the (not verified) that theme_user now implements
$ret = array();
db_add_field($ret, 'node_comments', 'uid', array('type' => 'int', 'not null' => TRUE, 'default' => 0, 'disp-width' => '11'));
return $ret;
}
function nodecomment_update_6001() {
// the node_comments view changed to nodecomments. update any node types that
// use this view for comments.
foreach(node_get_types() as $type) {
if(variable_get('comment_view_'. $type->type, '') == 'node_comments') {
variable_set('comment_view_'. $type->type, 'nodecomments');
}
}
return array();
}
/**
* Move comment settings into per content-type settings.
*/
function nodecomment_update_6002() {
$ret = array();
$comment_anonymous = variable_get('comment_anonymous', NULL);
$comment_preview = variable_get('comment_preview', NULL);
$comment_form_location = variable_get('comment_form_location', NULL);
foreach(node_get_types() as $type) {
if (!is_null($comment_anonymous)) {
variable_set('comment_anonymous_'. $type->type, $comment_anonymous);
}
if (!is_null($comment_preview)) {
variable_set('comment_preview_'. $type->type, $comment_preview);
}
if (!is_null($comment_form_location)) {
variable_set('comment_form_location_'. $type->type, $comment_preview);
}
$ret[] = array('success' => TRUE, 'query' => t('Updated comment settings for %node_type.', array('%node_type' => $type->name)));
}
variable_del('comment_anonymous');
variable_del('comment_preview');
variable_del('comment_form_location');
return $ret;
}
/**
* Update 6001 added a uid column but didn't populate it.
*/
function nodecomment_update_6003() {
$ret = array();
$ret[] = update_sql('UPDATE {node_comments} c INNER JOIN {node} n ON c.cid = n.nid SET c.uid = n.uid');
return $ret;
}
// update 6200 needs to update settings from the old nodecomment style to the
// new style so that comment.module is not confused.
/**
* Update our variables to proper namespace.
*/
function nodecomment_update_6201() {
$ret = array();
variable_del('default_comment_type');
$types = node_get_types();
foreach ($types as $type => $info) {
foreach (array('comment_type', 'comment_view', 'comment_plural') as $var) {
$value = variable_get($var . '_' . $type, NULL);
if (isset($value)) {
variable_set('node_' . $var . '_' . $type, $value);
}
variable_del($var . '_' . $type);
}
}
drupal_install_modules(array('comment'));
return $ret;
}
/**
* Get rid of redundant variables that only create confusion.
*/
function nodecomment_update_6301() {
$ret = array();
$types = node_get_types();
foreach ($types as $type => $info) {
$oldvar = 'node_comment_' . $type;
$newvar = 'comment_' . $type;
$value = variable_get($oldvar, NULL);
if (isset($value)) {
variable_set($newvar, $value);
}
variable_del($oldvar);
}
return $ret;
}
/**
* Add an index to find user comments for a node.
*/
function nodecomment_update_6302() {
$ret = array();
db_add_index($ret, 'node_comments', 'nid_uid', array('nid', 'uid'));
return $ret;
}
/**
* Delete unused variables.
*/
function nodecomment_update_6303() {
$ret = array();
foreach (node_get_types() as $type => $info) {
variable_del('node_comment_topic_review_' . $type);
}
return $ret;
}
/**
* Disable commenting for node comments.
*/
function nodecomment_update_6304() {
$ret = array();
// Disable comment status for existing nodecomments. This is needed because
// we now allow comments for nodecomments in a separate thread, and it was
// impossible in 2.x. We need to be sure it's not a surprise but a conscious
// decision to not confuse users.
$comment_types = nodecomment_get_comment_types();
db_query(
"UPDATE {node} SET comment = 0
WHERE type IN (" . db_placeholders($comment_types, 'varchar') . ")",
$comment_types
);
// Also set default commenting to disabled.
foreach ($comment_types as $type) {
variable_set("comment_$type", 0);
}
return $ret;
}