updated core to 7.73
This commit is contained in:
@@ -9,8 +9,7 @@ files[] = comment.test
|
||||
configure = admin/content/comment
|
||||
stylesheets[all][] = comment.css
|
||||
|
||||
; Information added by drupal.org packaging script on 2013-04-03
|
||||
version = "7.22"
|
||||
; Information added by Drupal.org packaging script on 2020-09-16
|
||||
version = "7.73"
|
||||
project = "drupal"
|
||||
datestamp = "1365027012"
|
||||
|
||||
datestamp = "1600272641"
|
||||
|
||||
@@ -9,9 +9,6 @@
|
||||
* Implements hook_uninstall().
|
||||
*/
|
||||
function comment_uninstall() {
|
||||
// Delete comment_body field.
|
||||
field_delete_field('comment_body');
|
||||
|
||||
// Remove variables.
|
||||
variable_del('comment_block_count');
|
||||
$node_types = array_keys(node_type_get_types());
|
||||
|
||||
@@ -152,7 +152,7 @@ function comment_node_type_load($name) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Entity URI callback.
|
||||
* Implements callback_entity_info_uri().
|
||||
*/
|
||||
function comment_uri($comment) {
|
||||
return array(
|
||||
@@ -490,7 +490,7 @@ function comment_permalink($cid) {
|
||||
// Return the node view, this will show the correct comment in context.
|
||||
return menu_execute_active_handler('node/' . $node->nid, FALSE);
|
||||
}
|
||||
drupal_not_found();
|
||||
return MENU_NOT_FOUND;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -993,12 +993,7 @@ function comment_build_content($comment, $node, $view_mode = 'full', $langcode =
|
||||
$comment->content = array();
|
||||
|
||||
// Allow modules to change the view mode.
|
||||
$context = array(
|
||||
'entity_type' => 'comment',
|
||||
'entity' => $comment,
|
||||
'langcode' => $langcode,
|
||||
);
|
||||
drupal_alter('entity_view_mode', $view_mode, $context);
|
||||
$view_mode = key(entity_view_mode_prepare('comment', array($comment->cid => $comment), $view_mode, $langcode));
|
||||
|
||||
// Build fields content.
|
||||
field_attach_prepare_view('comment', array($comment->cid => $comment), $view_mode, $langcode);
|
||||
@@ -1108,17 +1103,26 @@ function comment_links($comment, $node) {
|
||||
* An array in the format expected by drupal_render().
|
||||
*/
|
||||
function comment_view_multiple($comments, $node, $view_mode = 'full', $weight = 0, $langcode = NULL) {
|
||||
field_attach_prepare_view('comment', $comments, $view_mode, $langcode);
|
||||
entity_prepare_view('comment', $comments, $langcode);
|
||||
$build = array();
|
||||
$entities_by_view_mode = entity_view_mode_prepare('comment', $comments, $view_mode, $langcode);
|
||||
foreach ($entities_by_view_mode as $entity_view_mode => $entities) {
|
||||
field_attach_prepare_view('comment', $entities, $entity_view_mode, $langcode);
|
||||
entity_prepare_view('comment', $entities, $langcode);
|
||||
|
||||
foreach ($entities as $entity) {
|
||||
$build[$entity->cid] = comment_view($entity, $node, $entity_view_mode, $langcode);
|
||||
}
|
||||
}
|
||||
|
||||
$build = array(
|
||||
'#sorted' => TRUE,
|
||||
);
|
||||
foreach ($comments as $comment) {
|
||||
$build[$comment->cid] = comment_view($comment, $node, $view_mode, $langcode);
|
||||
$build[$comment->cid]['#weight'] = $weight;
|
||||
$weight++;
|
||||
}
|
||||
// Sort here, to preserve the input order of the entities that were passed to
|
||||
// this function.
|
||||
uasort($build, 'element_sort');
|
||||
$build['#sorted'] = TRUE;
|
||||
|
||||
return $build;
|
||||
}
|
||||
|
||||
@@ -2304,7 +2308,7 @@ function template_preprocess_comment(&$variables) {
|
||||
$variables['signature'] = $comment->signature;
|
||||
|
||||
$uri = entity_uri('comment', $comment);
|
||||
$uri['options'] += array('attributes' => array('class' => 'permalink', 'rel' => 'bookmark'));
|
||||
$uri['options'] += array('attributes' => array('class' => array('permalink'), 'rel' => 'bookmark'));
|
||||
|
||||
$variables['title'] = l($comment->subject, $uri['path'], $uri['options']);
|
||||
$variables['permalink'] = l(t('Permalink'), $uri['path'], $uri['options']);
|
||||
@@ -2603,7 +2607,7 @@ function comment_unpublish_action($comment, $context = array()) {
|
||||
/**
|
||||
* Unpublishes a comment if it contains certain keywords.
|
||||
*
|
||||
* @param $comment
|
||||
* @param object $comment
|
||||
* Comment object to modify.
|
||||
* @param array $context
|
||||
* Array with components:
|
||||
@@ -2615,10 +2619,13 @@ function comment_unpublish_action($comment, $context = array()) {
|
||||
* @see comment_unpublish_by_keyword_action_submit()
|
||||
*/
|
||||
function comment_unpublish_by_keyword_action($comment, $context) {
|
||||
$node = node_load($comment->nid);
|
||||
$build = comment_view($comment, $node);
|
||||
$text = drupal_render($build);
|
||||
foreach ($context['keywords'] as $keyword) {
|
||||
$text = drupal_render($comment);
|
||||
if (strpos($text, $keyword) !== FALSE) {
|
||||
$comment->status = COMMENT_NOT_PUBLISHED;
|
||||
comment_save($comment);
|
||||
watchdog('action', 'Unpublished comment %subject.', array('%subject' => $comment->subject));
|
||||
break;
|
||||
}
|
||||
|
||||
+115
-19
@@ -6,14 +6,22 @@
|
||||
*/
|
||||
|
||||
class CommentHelperCase extends DrupalWebTestCase {
|
||||
protected $super_user;
|
||||
protected $admin_user;
|
||||
protected $web_user;
|
||||
protected $node;
|
||||
|
||||
function setUp() {
|
||||
parent::setUp('comment', 'search');
|
||||
$modules = func_get_args();
|
||||
if (isset($modules[0]) && is_array($modules[0])) {
|
||||
$modules = $modules[0];
|
||||
}
|
||||
$modules[] = 'comment';
|
||||
parent::setUp($modules);
|
||||
|
||||
// Create users and test node.
|
||||
$this->admin_user = $this->drupalCreateUser(array('administer content types', 'administer comments', 'administer blocks'));
|
||||
$this->super_user = $this->drupalCreateUser(array('access administration pages', 'administer modules'));
|
||||
$this->admin_user = $this->drupalCreateUser(array('administer content types', 'administer comments', 'administer blocks', 'administer actions', 'administer fields'));
|
||||
$this->web_user = $this->drupalCreateUser(array('access comments', 'post comments', 'create article content', 'edit own comments'));
|
||||
$this->node = $this->drupalCreateNode(array('type' => 'article', 'promote' => 1, 'uid' => $this->web_user->uid));
|
||||
}
|
||||
@@ -155,7 +163,7 @@ class CommentHelperCase extends DrupalWebTestCase {
|
||||
$mode_text = 'required';
|
||||
break;
|
||||
}
|
||||
$this->setCommentSettings('comment_preview', $mode, 'Comment preview ' . $mode_text . '.');
|
||||
$this->setCommentSettings('comment_preview', $mode, format_string('Comment preview @mode_text.', array('@mode_text' => $mode_text)));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -175,7 +183,7 @@ class CommentHelperCase extends DrupalWebTestCase {
|
||||
* Anonymous level.
|
||||
*/
|
||||
function setCommentAnonymous($level) {
|
||||
$this->setCommentSettings('comment_anonymous', $level, 'Anonymous commenting set to level ' . $level . '.');
|
||||
$this->setCommentSettings('comment_anonymous', $level, format_string('Anonymous commenting set to level @level.', array('@level' => $level)));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -185,7 +193,7 @@ class CommentHelperCase extends DrupalWebTestCase {
|
||||
* Comments per page value.
|
||||
*/
|
||||
function setCommentsPerPage($number) {
|
||||
$this->setCommentSettings('comment_default_per_page', $number, 'Number of comments per page set to ' . $number . '.');
|
||||
$this->setCommentSettings('comment_default_per_page', $number, format_string('Number of comments per page set to @number.', array('@number' => $number)));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -201,7 +209,7 @@ class CommentHelperCase extends DrupalWebTestCase {
|
||||
function setCommentSettings($name, $value, $message) {
|
||||
variable_set($name . '_article', $value);
|
||||
// Display status message.
|
||||
$this->assertTrue(TRUE, $message);
|
||||
$this->pass($message);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -273,7 +281,7 @@ class CommentInterfaceTest extends CommentHelperCase {
|
||||
$this->setCommentPreview(DRUPAL_DISABLED);
|
||||
$this->setCommentForm(TRUE);
|
||||
$this->setCommentSubject(FALSE);
|
||||
$this->setCommentSettings('comment_default_mode', COMMENT_MODE_THREADED, t('Comment paging changed.'));
|
||||
$this->setCommentSettings('comment_default_mode', COMMENT_MODE_THREADED, 'Comment paging changed.');
|
||||
$this->drupalLogout();
|
||||
|
||||
// Post comment #1 without subject or preview.
|
||||
@@ -583,7 +591,7 @@ class CommentInterfaceTest extends CommentHelperCase {
|
||||
$this->setCommentPreview(DRUPAL_DISABLED);
|
||||
$this->setCommentForm(TRUE);
|
||||
$this->setCommentSubject(FALSE);
|
||||
$this->setCommentSettings('comment_default_mode', COMMENT_MODE_THREADED, t('Comment paging changed.'));
|
||||
$this->setCommentSettings('comment_default_mode', COMMENT_MODE_THREADED, 'Comment paging changed.');
|
||||
$this->drupalLogout();
|
||||
|
||||
// Creates a second user to post comments.
|
||||
@@ -954,7 +962,7 @@ class CommentPreviewTest extends CommentHelperCase {
|
||||
$this->setCommentPreview(DRUPAL_OPTIONAL);
|
||||
$this->setCommentForm(TRUE);
|
||||
$this->setCommentSubject(TRUE);
|
||||
$this->setCommentSettings('comment_default_mode', COMMENT_MODE_THREADED, t('Comment paging changed.'));
|
||||
$this->setCommentSettings('comment_default_mode', COMMENT_MODE_THREADED, 'Comment paging changed.');
|
||||
$this->drupalLogout();
|
||||
|
||||
// Login as web user and add a signature and a user picture.
|
||||
@@ -1000,7 +1008,7 @@ class CommentPreviewTest extends CommentHelperCase {
|
||||
$this->setCommentPreview(DRUPAL_OPTIONAL);
|
||||
$this->setCommentForm(TRUE);
|
||||
$this->setCommentSubject(TRUE);
|
||||
$this->setCommentSettings('comment_default_mode', COMMENT_MODE_THREADED, t('Comment paging changed.'));
|
||||
$this->setCommentSettings('comment_default_mode', COMMENT_MODE_THREADED, 'Comment paging changed.');
|
||||
|
||||
$edit = array();
|
||||
$edit['subject'] = $this->randomName(8);
|
||||
@@ -1238,7 +1246,7 @@ class CommentPagerTest extends CommentHelperCase {
|
||||
$comments[] = $this->postComment($node, $this->randomName(), $this->randomName(), TRUE);
|
||||
$comments[] = $this->postComment($node, $this->randomName(), $this->randomName(), TRUE);
|
||||
|
||||
$this->setCommentSettings('comment_default_mode', COMMENT_MODE_FLAT, t('Comment paging changed.'));
|
||||
$this->setCommentSettings('comment_default_mode', COMMENT_MODE_FLAT, 'Comment paging changed.');
|
||||
|
||||
// Set comments to one per page so that we are able to test paging without
|
||||
// needing to insert large numbers of comments.
|
||||
@@ -1279,7 +1287,7 @@ class CommentPagerTest extends CommentHelperCase {
|
||||
// If we switch to threaded mode, the replies on the oldest comment
|
||||
// should be bumped to the first page and comment 6 should be bumped
|
||||
// to the second page.
|
||||
$this->setCommentSettings('comment_default_mode', COMMENT_MODE_THREADED, t('Switched to threaded mode.'));
|
||||
$this->setCommentSettings('comment_default_mode', COMMENT_MODE_THREADED, 'Switched to threaded mode.');
|
||||
$this->drupalGet('node/' . $node->nid, array('query' => array('page' => 0)));
|
||||
$this->assertTrue($this->commentExists($reply, TRUE), 'In threaded mode, reply appears on page 1.');
|
||||
$this->assertFalse($this->commentExists($comments[1]), 'In threaded mode, comment 2 has been bumped off of page 1.');
|
||||
@@ -1339,7 +1347,7 @@ class CommentPagerTest extends CommentHelperCase {
|
||||
// - 2
|
||||
// - 5
|
||||
|
||||
$this->setCommentSettings('comment_default_mode', COMMENT_MODE_FLAT, t('Comment paging changed.'));
|
||||
$this->setCommentSettings('comment_default_mode', COMMENT_MODE_FLAT, 'Comment paging changed.');
|
||||
|
||||
$expected_order = array(
|
||||
0,
|
||||
@@ -1353,7 +1361,7 @@ class CommentPagerTest extends CommentHelperCase {
|
||||
$this->drupalGet('node/' . $node->nid);
|
||||
$this->assertCommentOrder($comments, $expected_order);
|
||||
|
||||
$this->setCommentSettings('comment_default_mode', COMMENT_MODE_THREADED, t('Switched to threaded mode.'));
|
||||
$this->setCommentSettings('comment_default_mode', COMMENT_MODE_THREADED, 'Switched to threaded mode.');
|
||||
|
||||
$expected_order = array(
|
||||
0,
|
||||
@@ -1435,7 +1443,7 @@ class CommentPagerTest extends CommentHelperCase {
|
||||
// - 2
|
||||
// - 5
|
||||
|
||||
$this->setCommentSettings('comment_default_mode', COMMENT_MODE_FLAT, t('Comment paging changed.'));
|
||||
$this->setCommentSettings('comment_default_mode', COMMENT_MODE_FLAT, 'Comment paging changed.');
|
||||
|
||||
$expected_pages = array(
|
||||
1 => 5, // Page of comment 5
|
||||
@@ -1453,7 +1461,7 @@ class CommentPagerTest extends CommentHelperCase {
|
||||
$this->assertIdentical($expected_page, $returned_page, format_string('Flat mode, @new replies: expected page @expected, returned page @returned.', array('@new' => $new_replies, '@expected' => $expected_page, '@returned' => $returned_page)));
|
||||
}
|
||||
|
||||
$this->setCommentSettings('comment_default_mode', COMMENT_MODE_THREADED, t('Switched to threaded mode.'));
|
||||
$this->setCommentSettings('comment_default_mode', COMMENT_MODE_THREADED, 'Switched to threaded mode.');
|
||||
|
||||
$expected_pages = array(
|
||||
1 => 5, // Page of comment 5
|
||||
@@ -1490,7 +1498,7 @@ class CommentNodeAccessTest extends CommentHelperCase {
|
||||
}
|
||||
|
||||
function setUp() {
|
||||
DrupalWebTestCase::setUp('comment', 'search', 'node_access_test');
|
||||
parent::setUp('search', 'node_access_test');
|
||||
node_access_rebuild();
|
||||
|
||||
// Create users and test node.
|
||||
@@ -1509,7 +1517,7 @@ class CommentNodeAccessTest extends CommentHelperCase {
|
||||
$this->setCommentPreview(DRUPAL_DISABLED);
|
||||
$this->setCommentForm(TRUE);
|
||||
$this->setCommentSubject(TRUE);
|
||||
$this->setCommentSettings('comment_default_mode', COMMENT_MODE_THREADED, t('Comment paging changed.'));
|
||||
$this->setCommentSettings('comment_default_mode', COMMENT_MODE_THREADED, 'Comment paging changed.');
|
||||
$this->drupalLogout();
|
||||
|
||||
// Post comment.
|
||||
@@ -1973,6 +1981,41 @@ class CommentActionsTestCase extends CommentHelperCase {
|
||||
$this->clearWatchdog();
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests the unpublish comment by keyword action.
|
||||
*/
|
||||
public function testCommentUnpublishByKeyword() {
|
||||
$this->drupalLogin($this->admin_user);
|
||||
$callback = 'comment_unpublish_by_keyword_action';
|
||||
$hash = drupal_hash_base64($callback);
|
||||
$comment_text = $keywords = $this->randomName();
|
||||
$edit = array(
|
||||
'actions_label' => $callback,
|
||||
'keywords' => $keywords,
|
||||
);
|
||||
|
||||
$this->drupalPost("admin/config/system/actions/configure/$hash", $edit, t('Save'));
|
||||
|
||||
$action = db_query("SELECT aid, type, callback, parameters, label FROM {actions} WHERE callback = :callback", array(':callback' => $callback))->fetchObject();
|
||||
|
||||
$this->assertTrue($action, 'The action could be loaded.');
|
||||
|
||||
$comment = $this->postComment($this->node, $comment_text, $this->randomName());
|
||||
|
||||
// Load the full comment so that status is available.
|
||||
$comment = comment_load($comment->id);
|
||||
|
||||
$this->assertTrue($comment->status == COMMENT_PUBLISHED, 'The comment status was set to published.');
|
||||
|
||||
comment_unpublish_by_keyword_action($comment, array('keywords' => array($keywords)));
|
||||
|
||||
// We need to make sure that the comment has been saved with status
|
||||
// unpublished.
|
||||
$this->assertEqual(comment_load($comment->cid)->status, COMMENT_NOT_PUBLISHED, 'Comment was unpublished.');
|
||||
$this->assertWatchdogMessage('Unpublished comment %subject.', array('%subject' => $comment->subject), 'Found watchdog message.');
|
||||
$this->clearWatchdog();
|
||||
}
|
||||
|
||||
/**
|
||||
* Verify that a watchdog message has been entered.
|
||||
*
|
||||
@@ -2126,7 +2169,7 @@ class CommentThreadingTestCase extends CommentHelperCase {
|
||||
$this->setCommentPreview(DRUPAL_DISABLED);
|
||||
$this->setCommentForm(TRUE);
|
||||
$this->setCommentSubject(TRUE);
|
||||
$this->setCommentSettings('comment_default_mode', COMMENT_MODE_THREADED, t('Comment paging changed.'));
|
||||
$this->setCommentSettings('comment_default_mode', COMMENT_MODE_THREADED, 'Comment paging changed.');
|
||||
$this->drupalLogout();
|
||||
|
||||
// Create a node.
|
||||
@@ -2223,3 +2266,56 @@ class CommentNodeChangesTestCase extends CommentHelperCase {
|
||||
$this->assertFalse(comment_load($comment->id), 'The comment could not be loaded after the node was deleted.');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests uninstalling the comment module.
|
||||
*/
|
||||
class CommentUninstallTestCase extends CommentHelperCase {
|
||||
|
||||
public static function getInfo() {
|
||||
return array(
|
||||
'name' => 'Comment module uninstallation',
|
||||
'description' => 'Tests that the comments module can be properly uninstalled.',
|
||||
'group' => 'Comment',
|
||||
);
|
||||
}
|
||||
|
||||
function testCommentUninstall() {
|
||||
$this->drupalLogin($this->super_user);
|
||||
|
||||
// Disable comment module.
|
||||
$edit['modules[Core][comment][enable]'] = FALSE;
|
||||
$this->drupalPost('admin/modules', $edit, t('Save configuration'));
|
||||
$this->assertText(t('The configuration options have been saved.'), 'Comment module was disabled.');
|
||||
|
||||
// Uninstall comment module.
|
||||
$edit = array('uninstall[comment]' => 'comment');
|
||||
$this->drupalPost('admin/modules/uninstall', $edit, t('Uninstall'));
|
||||
$this->drupalPost(NULL, NULL, t('Uninstall'));
|
||||
$this->assertText(t('The selected modules have been uninstalled.'), 'Comment module was uninstalled.');
|
||||
|
||||
// Run cron and clear field cache so that comment fields and instances
|
||||
// marked for deletion are actually removed.
|
||||
$this->cronRun();
|
||||
field_cache_clear();
|
||||
|
||||
// Verify that comment fields have been removed.
|
||||
$all_fields = array_keys(field_info_field_map());
|
||||
$this->assertFalse(in_array('comment_body', $all_fields), 'Comment fields were removed by uninstall.');
|
||||
|
||||
// Verify that comment field instances have been removed (or at least marked
|
||||
// for deletion).
|
||||
// N.B. field_read_instances does an INNER JOIN on field_config so if the
|
||||
// comment_body row has been removed successfully from there no instances
|
||||
// will be returned, but that does not guarantee that no rows are left over
|
||||
// in the field_config_instance table.
|
||||
$count = db_select('field_config_instance', 'fci')
|
||||
->condition('entity_type', 'comment')
|
||||
->condition('field_name', 'comment_body')
|
||||
->condition('deleted', 0)
|
||||
->countQuery()
|
||||
->execute()
|
||||
->fetchField();
|
||||
$this->assertTrue($count == 0, 'Comment field instances were removed by uninstall.');
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user