当前位置: 首页>>代码示例>>PHP>>正文


PHP user_role_change_permissions函数代码示例

本文整理汇总了PHP中user_role_change_permissions函数的典型用法代码示例。如果您正苦于以下问题:PHP user_role_change_permissions函数的具体用法?PHP user_role_change_permissions怎么用?PHP user_role_change_permissions使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。


在下文中一共展示了user_role_change_permissions函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: testApprovalNodeInterface

 /**
  * Tests comment approval functionality through the node interface.
  */
 function testApprovalNodeInterface()
 {
     // Set anonymous comments to require approval.
     user_role_change_permissions(DRUPAL_ANONYMOUS_RID, array('access comments' => TRUE, 'post comments' => TRUE, 'skip comment approval' => FALSE));
     $this->drupalLogin($this->admin_user);
     $this->setCommentAnonymous('0');
     // Ensure that doesn't require contact info.
     $this->drupalLogout();
     // Post anonymous comment without contact info.
     $subject = $this->randomMachineName();
     $body = $this->randomMachineName();
     $this->postComment($this->node, $body, $subject, TRUE);
     // Set $contact to true so that it won't check for id and message.
     $this->assertText(t('Your comment has been queued for review by site administrators and will be published after approval.'), 'Comment requires approval.');
     // Get unapproved comment id.
     $this->drupalLogin($this->admin_user);
     $anonymous_comment4 = $this->getUnapprovedComment($subject);
     $anonymous_comment4 = entity_create('comment', array('cid' => $anonymous_comment4, 'subject' => $subject, 'comment_body' => $body, 'entity_id' => $this->node->id(), 'entity_type' => 'node', 'field_name' => 'comment'));
     $this->drupalLogout();
     $this->assertFalse($this->commentExists($anonymous_comment4), 'Anonymous comment was not published.');
     // Approve comment.
     $this->drupalLogin($this->admin_user);
     $this->drupalGet('comment/1/approve');
     $this->assertResponse(403, 'Forged comment approval was denied.');
     $this->drupalGet('comment/1/approve', array('query' => array('token' => 'forged')));
     $this->assertResponse(403, 'Forged comment approval was denied.');
     $this->drupalGet('comment/1/edit');
     $this->assertFieldChecked('edit-status-0');
     $this->drupalGet('node/' . $this->node->id());
     $this->clickLink(t('Approve'));
     $this->drupalLogout();
     $this->drupalGet('node/' . $this->node->id());
     $this->assertTrue($this->commentExists($anonymous_comment4), 'Anonymous comment visible.');
 }
开发者ID:davidsoloman,项目名称:drupalconsole.com,代码行数:37,代码来源:CommentAdminTest.php

示例2: testResponsiveImageFieldFormattersPrivate

 /**
  * Tests responsive image formatters on node display for private files.
  */
 public function testResponsiveImageFieldFormattersPrivate()
 {
     $this->addTestImageStyleMappings();
     // Remove access content permission from anonymous users.
     user_role_change_permissions(RoleInterface::ANONYMOUS_ID, array('access content' => FALSE));
     $this->doTestResponsiveImageFieldFormatters('private');
 }
开发者ID:eigentor,项目名称:tommiblog,代码行数:10,代码来源:ResponsiveImageFieldDisplayTest.php

示例3: testCommentNodeCommentStatistics

 /**
  * Tests the node comment statistics.
  */
 function testCommentNodeCommentStatistics()
 {
     $node_storage = $this->container->get('entity.manager')->getStorage('node');
     // Set comments to have subject and preview disabled.
     $this->drupalLogin($this->adminUser);
     $this->setCommentPreview(DRUPAL_DISABLED);
     $this->setCommentForm(TRUE);
     $this->setCommentSubject(FALSE);
     $this->setCommentSettings('default_mode', CommentManagerInterface::COMMENT_MODE_THREADED, 'Comment paging changed.');
     $this->drupalLogout();
     // Checks the initial values of node comment statistics with no comment.
     $node = $node_storage->load($this->node->id());
     $this->assertEqual($node->get('comment')->last_comment_timestamp, $this->node->getCreatedTime(), 'The initial value of node last_comment_timestamp is the node created date.');
     $this->assertEqual($node->get('comment')->last_comment_name, NULL, 'The initial value of node last_comment_name is NULL.');
     $this->assertEqual($node->get('comment')->last_comment_uid, $this->webUser->id(), 'The initial value of node last_comment_uid is the node uid.');
     $this->assertEqual($node->get('comment')->comment_count, 0, 'The initial value of node comment_count is zero.');
     // Post comment #1 as web_user2.
     $this->drupalLogin($this->webUser2);
     $comment_text = $this->randomMachineName();
     $this->postComment($this->node, $comment_text);
     // Checks the new values of node comment statistics with comment #1.
     // The node cache needs to be reset before reload.
     $node_storage->resetCache(array($this->node->id()));
     $node = $node_storage->load($this->node->id());
     $this->assertEqual($node->get('comment')->last_comment_name, NULL, 'The value of node last_comment_name is NULL.');
     $this->assertEqual($node->get('comment')->last_comment_uid, $this->webUser2->id(), 'The value of node last_comment_uid is the comment #1 uid.');
     $this->assertEqual($node->get('comment')->comment_count, 1, 'The value of node comment_count is 1.');
     // Prepare for anonymous comment submission (comment approval enabled).
     $this->drupalLogin($this->adminUser);
     user_role_change_permissions(RoleInterface::ANONYMOUS_ID, array('access comments' => TRUE, 'post comments' => TRUE, 'skip comment approval' => FALSE));
     // Ensure that the poster can leave some contact info.
     $this->setCommentAnonymous('1');
     $this->drupalLogout();
     // Post comment #2 as anonymous (comment approval enabled).
     $this->drupalGet('comment/reply/node/' . $this->node->id() . '/comment');
     $anonymous_comment = $this->postComment($this->node, $this->randomMachineName(), '', TRUE);
     // Checks the new values of node comment statistics with comment #2 and
     // ensure they haven't changed since the comment has not been moderated.
     // The node needs to be reloaded with the cache reset.
     $node_storage->resetCache(array($this->node->id()));
     $node = $node_storage->load($this->node->id());
     $this->assertEqual($node->get('comment')->last_comment_name, NULL, 'The value of node last_comment_name is still NULL.');
     $this->assertEqual($node->get('comment')->last_comment_uid, $this->webUser2->id(), 'The value of node last_comment_uid is still the comment #1 uid.');
     $this->assertEqual($node->get('comment')->comment_count, 1, 'The value of node comment_count is still 1.');
     // Prepare for anonymous comment submission (no approval required).
     $this->drupalLogin($this->adminUser);
     user_role_change_permissions(RoleInterface::ANONYMOUS_ID, array('access comments' => TRUE, 'post comments' => TRUE, 'skip comment approval' => TRUE));
     $this->drupalLogout();
     // Post comment #3 as anonymous.
     $this->drupalGet('comment/reply/node/' . $this->node->id() . '/comment');
     $anonymous_comment = $this->postComment($this->node, $this->randomMachineName(), '', array('name' => $this->randomMachineName()));
     $comment_loaded = Comment::load($anonymous_comment->id());
     // Checks the new values of node comment statistics with comment #3.
     // The node needs to be reloaded with the cache reset.
     $node_storage->resetCache(array($this->node->id()));
     $node = $node_storage->load($this->node->id());
     $this->assertEqual($node->get('comment')->last_comment_name, $comment_loaded->getAuthorName(), 'The value of node last_comment_name is the name of the anonymous user.');
     $this->assertEqual($node->get('comment')->last_comment_uid, 0, 'The value of node last_comment_uid is zero.');
     $this->assertEqual($node->get('comment')->comment_count, 2, 'The value of node comment_count is 2.');
 }
开发者ID:nstielau,项目名称:drops-8,代码行数:63,代码来源:CommentStatisticsTest.php

示例4: setUp

 public function setUp()
 {
     parent::setUp();
     // Enables anonymous user comments.
     user_role_change_permissions(DRUPAL_ANONYMOUS_RID, array('access comments' => TRUE, 'post comments' => TRUE, 'skip comment approval' => TRUE));
     // Allows anonymous to leave their contact information.
     $this->setCommentAnonymous(COMMENT_ANONYMOUS_MAY_CONTACT);
     $this->setCommentPreview(DRUPAL_OPTIONAL);
     $this->setCommentForm(TRUE);
     $this->setCommentSubject(TRUE);
     $this->setCommentSettings('comment_default_mode', CommentManagerInterface::COMMENT_MODE_THREADED, 'Comment paging changed.');
     // Prepares commonly used URIs.
     $this->base_uri = url('<front>', array('absolute' => TRUE));
     $this->node_uri = url('node/' . $this->node->id(), array('absolute' => TRUE));
     // Set relation between node and comment.
     $article_mapping = rdf_get_mapping('node', 'article');
     $comment_count_mapping = array('properties' => array('sioc:num_replies'), 'datatype' => 'xsd:integer', 'datatype_callback' => array('callable' => 'Drupal\\rdf\\CommonDataConverter::rawValue'));
     $article_mapping->setFieldMapping('comment_count', $comment_count_mapping)->save();
     // Save user mapping.
     $user_mapping = rdf_get_mapping('user', 'user');
     $username_mapping = array('properties' => array('foaf:name'));
     $user_mapping->setFieldMapping('name', $username_mapping)->save();
     $user_mapping->setFieldMapping('homepage', array('properties' => array('foaf:page'), 'mapping_type' => 'rel'))->save();
     // Save comment mapping.
     $mapping = rdf_get_mapping('comment', 'comment');
     $mapping->setBundleMapping(array('types' => array('sioc:Post', 'sioct:Comment')))->save();
     $field_mappings = array('subject' => array('properties' => array('dc:title')), 'created' => array('properties' => array('dc:date', 'dc:created'), 'datatype' => 'xsd:dateTime', 'datatype_callback' => array('callable' => 'date_iso8601')), 'changed' => array('properties' => array('dc:modified'), 'datatype' => 'xsd:dateTime', 'datatype_callback' => array('callable' => 'date_iso8601')), 'comment_body' => array('properties' => array('content:encoded')), 'pid' => array('properties' => array('sioc:reply_of'), 'mapping_type' => 'rel'), 'uid' => array('properties' => array('sioc:has_creator'), 'mapping_type' => 'rel'), 'name' => array('properties' => array('foaf:name')));
     // Iterate over shared field mappings and save.
     foreach ($field_mappings as $field_name => $field_mapping) {
         $mapping->setFieldMapping($field_name, $field_mapping)->save();
     }
 }
开发者ID:alnutile,项目名称:drunatra,代码行数:32,代码来源:CommentAttributesTest.php

示例5: testCommentLinks

 /**
  * Tests that comment links are output and can be hidden.
  */
 public function testCommentLinks()
 {
     // Bartik theme alters comment links, so use a different theme.
     \Drupal::service('theme_handler')->install(array('stark'));
     \Drupal::config('system.theme')->set('default', 'stark')->save();
     // Remove additional user permissions from $this->web_user added by setUp(),
     // since this test is limited to anonymous and authenticated roles only.
     $roles = $this->web_user->getRoles();
     entity_delete_multiple('user_role', array(reset($roles)));
     // Create a comment via CRUD API functionality, since
     // $this->postComment() relies on actual user permissions.
     $comment = entity_create('comment', array('cid' => NULL, 'entity_id' => $this->node->id(), 'entity_type' => 'node', 'field_name' => 'comment', 'pid' => 0, 'uid' => 0, 'status' => CommentInterface::PUBLISHED, 'subject' => $this->randomMachineName(), 'hostname' => '127.0.0.1', 'langcode' => LanguageInterface::LANGCODE_NOT_SPECIFIED, 'comment_body' => array(LanguageInterface::LANGCODE_NOT_SPECIFIED => array($this->randomMachineName()))));
     $comment->save();
     $this->comment = $comment;
     // Change comment settings.
     $this->setCommentSettings('form_location', CommentItemInterface::FORM_BELOW, 'Set comment form location');
     $this->setCommentAnonymous(TRUE);
     $this->node->comment = CommentItemInterface::OPEN;
     $this->node->save();
     // Change user permissions.
     $perms = array('access comments' => 1, 'post comments' => 1, 'skip comment approval' => 1, 'edit own comments' => 1);
     user_role_change_permissions(DRUPAL_ANONYMOUS_RID, $perms);
     $nid = $this->node->id();
     // Assert basic link is output, actual functionality is unit-tested in
     // \Drupal\comment\Tests\CommentLinkBuilderTest.
     foreach (array('node', "node/{$nid}") as $path) {
         $this->drupalGet($path);
         // In teaser view, a link containing the comment count is always
         // expected.
         if ($path == 'node') {
             $this->assertLink(t('1 comment'));
         }
         $this->assertLink('Add new comment');
     }
     // Make sure we can hide node links.
     entity_get_display('node', $this->node->bundle(), 'default')->removeComponent('links')->save();
     $this->drupalGet($this->node->url());
     $this->assertNoLink('1 comment');
     $this->assertNoLink('Add new comment');
     // Visit the full node, make sure there are links for the comment.
     $this->drupalGet('node/' . $this->node->id());
     $this->assertText($comment->getSubject());
     $this->assertLink('Reply');
     // Make sure we can hide comment links.
     entity_get_display('comment', 'comment', 'default')->removeComponent('links')->save();
     $this->drupalGet('node/' . $this->node->id());
     $this->assertText($comment->getSubject());
     $this->assertNoLink('Reply');
 }
开发者ID:davidsoloman,项目名称:drupalconsole.com,代码行数:52,代码来源:CommentLinksTest.php

示例6: testAuthorize

 /**
  * Tests authorization.
  */
 public function testAuthorize()
 {
     // Create a user with limited permissions. We can't use
     // $this->drupalCreateUser here because we need to to set a specific user
     // name.
     $edit = array('name' => 'Poor user', 'mail' => 'poor@example.com', 'pass' => user_password(), 'status' => 1);
     $account = user_save(drupal_anonymous_user(), $edit);
     // // Adding a mapping to the user_name will invoke authorization.
     $this->addMappings('comment', array(5 => array('source' => 'mail', 'target' => 'user_mail')));
     $url = $GLOBALS['base_url'] . '/' . drupal_get_path('module', 'feeds_comment_processor') . '/tests/test.csv';
     $nid = $this->createFeedNode('comment', $url, 'Comment test');
     $this->assertText('Failed importing 1 comment');
     $this->assertText('User ' . $account->name . ' is not permitted to post comments.');
     $this->assertEqual(0, db_query("SELECT COUNT(*) FROM {comment}")->fetchField());
     user_role_change_permissions(2, array('post comments' => TRUE));
     $this->drupalPost("node/{$nid}/import", array(), 'Import');
     $this->assertText('Created 1 comment.');
     $this->assertEqual(1, db_query("SELECT COUNT(*) FROM {comment}")->fetchField());
     $comment = comment_load(1);
     $this->assertEqual(0, $comment->status);
 }
开发者ID:redponey,项目名称:openatrium-7.x-2.51,代码行数:24,代码来源:ProcessorWebTest.php

示例7: testCommentFunctionality

 /**
  * Tests anonymous comment functionality.
  */
 function testCommentFunctionality()
 {
     $limited_user = $this->drupalCreateUser(array('administer entity_test fields'));
     $this->drupalLogin($limited_user);
     // Test that default field exists.
     $this->drupalGet('entity_test/structure/entity_test/fields');
     $this->assertText(t('Comments'));
     $this->assertLinkByHref('entity_test/structure/entity_test/fields/entity_test.entity_test.comment');
     // Test widget hidden option is not visible when there's no comments.
     $this->drupalGet('entity_test/structure/entity_test/fields/entity_test.entity_test.comment');
     $this->assertResponse(200);
     $this->assertNoField('edit-default-value-input-comment-und-0-status-0');
     // Test that field to change cardinality is not available.
     $this->drupalGet('entity_test/structure/entity_test/fields/entity_test.entity_test.comment/storage');
     $this->assertResponse(200);
     $this->assertNoField('cardinality_number');
     $this->assertNoField('cardinality');
     $this->drupalLogin($this->adminUser);
     // Test breadcrumb on comment add page.
     $this->drupalGet('comment/reply/entity_test/' . $this->entity->id() . '/comment');
     $xpath = '//nav[@class="breadcrumb"]/ol/li[last()]/a';
     $this->assertEqual(current($this->xpath($xpath)), $this->entity->label(), 'Last breadcrumb item is equal to node title on comment reply page.');
     // Post a comment.
     /** @var \Drupal\comment\CommentInterface $comment1 */
     $comment1 = $this->postComment($this->entity, $this->randomMachineName(), $this->randomMachineName());
     $this->assertTrue($this->commentExists($comment1), 'Comment on test entity exists.');
     // Test breadcrumb on comment reply page.
     $this->drupalGet('comment/reply/entity_test/' . $this->entity->id() . '/comment/' . $comment1->id());
     $xpath = '//nav[@class="breadcrumb"]/ol/li[last()]/a';
     $this->assertEqual(current($this->xpath($xpath)), $comment1->getSubject(), 'Last breadcrumb item is equal to comment title on comment reply page.');
     // Test breadcrumb on comment edit page.
     $this->drupalGet('comment/' . $comment1->id() . '/edit');
     $xpath = '//nav[@class="breadcrumb"]/ol/li[last()]/a';
     $this->assertEqual(current($this->xpath($xpath)), $comment1->getSubject(), 'Last breadcrumb item is equal to comment subject on edit page.');
     // Test breadcrumb on comment delete page.
     $this->drupalGet('comment/' . $comment1->id() . '/delete');
     $xpath = '//nav[@class="breadcrumb"]/ol/li[last()]/a';
     $this->assertEqual(current($this->xpath($xpath)), $comment1->getSubject(), 'Last breadcrumb item is equal to comment subject on delete confirm page.');
     // Unpublish the comment.
     $this->performCommentOperation($comment1, 'unpublish');
     $this->drupalGet('admin/content/comment/approval');
     $this->assertRaw('comments[' . $comment1->id() . ']', 'Comment was unpublished.');
     // Publish the comment.
     $this->performCommentOperation($comment1, 'publish', TRUE);
     $this->drupalGet('admin/content/comment');
     $this->assertRaw('comments[' . $comment1->id() . ']', 'Comment was published.');
     // Delete the comment.
     $this->performCommentOperation($comment1, 'delete');
     $this->drupalGet('admin/content/comment');
     $this->assertNoRaw('comments[' . $comment1->id() . ']', 'Comment was deleted.');
     // Post another comment.
     $comment1 = $this->postComment($this->entity, $this->randomMachineName(), $this->randomMachineName());
     $this->assertTrue($this->commentExists($comment1), 'Comment on test entity exists.');
     // Check that the comment was found.
     $this->drupalGet('admin/content/comment');
     $this->assertRaw('comments[' . $comment1->id() . ']', 'Comment was published.');
     // Check that entity access applies to administrative page.
     $this->assertText($this->entity->label(), 'Name of commented account found.');
     $limited_user = $this->drupalCreateUser(array('administer comments'));
     $this->drupalLogin($limited_user);
     $this->drupalGet('admin/content/comment');
     $this->assertNoText($this->entity->label(), 'No commented account name found.');
     $this->drupalLogout();
     // Deny anonymous users access to comments.
     user_role_change_permissions(RoleInterface::ANONYMOUS_ID, array('access comments' => FALSE, 'post comments' => FALSE, 'skip comment approval' => FALSE, 'view test entity' => TRUE));
     // Attempt to view comments while disallowed.
     $this->drupalGet('entity-test/' . $this->entity->id());
     $this->assertNoPattern('@<h2[^>]*>Comments</h2>@', 'Comments were not displayed.');
     $this->assertNoLink('Add new comment', 'Link to add comment was found.');
     // Attempt to view test entity comment form while disallowed.
     $this->drupalGet('comment/reply/entity_test/' . $this->entity->id() . '/comment');
     $this->assertResponse(403);
     $this->assertNoFieldByName('subject[0][value]', '', 'Subject field not found.');
     $this->assertNoFieldByName('comment_body[0][value]', '', 'Comment field not found.');
     user_role_change_permissions(RoleInterface::ANONYMOUS_ID, array('access comments' => TRUE, 'post comments' => FALSE, 'view test entity' => TRUE, 'skip comment approval' => FALSE));
     $this->drupalGet('entity_test/' . $this->entity->id());
     $this->assertPattern('@<h2[^>]*>Comments</h2>@', 'Comments were displayed.');
     $this->assertLink('Log in', 0, 'Link to log in was found.');
     $this->assertLink('register', 0, 'Link to register was found.');
     $this->assertNoFieldByName('subject[0][value]', '', 'Subject field not found.');
     $this->assertNoFieldByName('comment_body[0][value]', '', 'Comment field not found.');
     // Test the combination of anonymous users being able to post, but not view
     // comments, to ensure that access to post comments doesn't grant access to
     // view them.
     user_role_change_permissions(RoleInterface::ANONYMOUS_ID, array('access comments' => FALSE, 'post comments' => TRUE, 'skip comment approval' => TRUE, 'view test entity' => TRUE));
     $this->drupalGet('entity_test/' . $this->entity->id());
     $this->assertNoPattern('@<h2[^>]*>Comments</h2>@', 'Comments were not displayed.');
     $this->assertFieldByName('subject[0][value]', '', 'Subject field found.');
     $this->assertFieldByName('comment_body[0][value]', '', 'Comment field found.');
     $this->drupalGet('comment/reply/entity_test/' . $this->entity->id() . '/comment/' . $comment1->id());
     $this->assertResponse(403);
     $this->assertNoText($comment1->getSubject(), 'Comment not displayed.');
     // Test comment field widget changes.
     $limited_user = $this->drupalCreateUser(array('administer entity_test fields', 'view test entity', 'administer entity_test content'));
     $this->drupalLogin($limited_user);
     $this->drupalGet('entity_test/structure/entity_test/fields/entity_test.entity_test.comment');
     $this->assertNoFieldChecked('edit-default-value-input-comment-0-status-0');
//.........这里部分代码省略.........
开发者ID:RealLukeMartin,项目名称:drupal8tester,代码行数:101,代码来源:CommentNonNodeTest.php

示例8: setEnvironment

 /**
  * Re-configures the environment, module settings, and user permissions.
  *
  * @param $info
  *   An associative array describing the environment to setup:
  *   - Environment conditions:
  *     - authenticated: Boolean whether to test with $this->web_user or
  *       anonymous.
  *     - comment count: Boolean whether to test with a new/unread comment on
  *       $this->node or no comments.
  *   - Configuration settings:
  *     - form: COMMENT_FORM_BELOW or COMMENT_FORM_SEPARATE_PAGE.
  *     - user_register: USER_REGISTER_ADMINISTRATORS_ONLY or
  *       USER_REGISTER_VISITORS.
  *     - contact: COMMENT_ANONYMOUS_MAY_CONTACT or
  *       COMMENT_ANONYMOUS_MAYNOT_CONTACT.
  *     - comments: CommentItemInterface::OPEN, CommentItemInterface::CLOSED or
  *       CommentItemInterface::HIDDEN.
  *   - User permissions:
  *     These are granted or revoked for the user, according to the
  *     'authenticated' flag above. Pass 0 or 1 as parameter values. See
  *     user_role_change_permissions().
  *     - access comments
  *     - post comments
  *     - skip comment approval
  *     - edit own comments
  */
 function setEnvironment(array $info)
 {
     static $current;
     // Apply defaults to initial environment.
     if (!isset($current)) {
         $current = array('authenticated' => FALSE, 'comment count' => FALSE, 'form' => COMMENT_FORM_BELOW, 'user_register' => USER_REGISTER_VISITORS, 'contact' => COMMENT_ANONYMOUS_MAY_CONTACT, 'comments' => CommentItemInterface::OPEN, 'access comments' => 0, 'post comments' => 0, 'skip comment approval' => 1, 'edit own comments' => 0);
     }
     // Complete new environment with current environment.
     $info = array_merge($current, $info);
     // Change environment conditions.
     if ($current['authenticated'] != $info['authenticated']) {
         if ($this->loggedInUser) {
             $this->drupalLogout();
         } else {
             $this->drupalLogin($this->web_user);
         }
     }
     if ($current['comment count'] != $info['comment count']) {
         if ($info['comment count']) {
             // Create a comment via CRUD API functionality, since
             // $this->postComment() relies on actual user permissions.
             $comment = entity_create('comment', array('cid' => NULL, 'entity_id' => $this->node->id(), 'entity_type' => 'node', 'field_name' => 'comment', 'pid' => 0, 'uid' => 0, 'status' => CommentInterface::PUBLISHED, 'subject' => $this->randomMachineName(), 'hostname' => '127.0.0.1', 'langcode' => LanguageInterface::LANGCODE_NOT_SPECIFIED, 'comment_body' => array(LanguageInterface::LANGCODE_NOT_SPECIFIED => array($this->randomMachineName()))));
             $comment->save();
             $this->comment = $comment;
         } else {
             $cids = db_query("SELECT cid FROM {comment}")->fetchCol();
             entity_delete_multiple('comment', $cids);
             unset($this->comment);
         }
     }
     // Change comment settings.
     $this->setCommentSettings('form_location', $info['form'], 'Set comment form location');
     $this->setCommentAnonymous($info['contact']);
     if ($this->node->comment->status != $info['comments']) {
         $this->node->comment = $info['comments'];
         $this->node->save();
     }
     // Change user settings.
     \Drupal::config('user.settings')->set('register', $info['user_register'])->save();
     // Change user permissions.
     $rid = $this->loggedInUser ? DRUPAL_AUTHENTICATED_RID : DRUPAL_ANONYMOUS_RID;
     $perms = array_intersect_key($info, array('access comments' => 1, 'post comments' => 1, 'skip comment approval' => 1, 'edit own comments' => 1));
     user_role_change_permissions($rid, $perms);
     // Output verbose debugging information.
     // @see \Drupal\simpletest\TestBase::error()
     $t_form = array(COMMENT_FORM_BELOW => 'below', COMMENT_FORM_SEPARATE_PAGE => 'separate page');
     $t_contact = array(COMMENT_ANONYMOUS_MAY_CONTACT => 'optional', COMMENT_ANONYMOUS_MAYNOT_CONTACT => 'disabled', COMMENT_ANONYMOUS_MUST_CONTACT => 'required');
     $t_comments = array(CommentItemInterface::OPEN => 'open', CommentItemInterface::CLOSED => 'closed', CommentItemInterface::HIDDEN => 'hidden');
     $verbose = $info;
     $verbose['form'] = $t_form[$info['form']];
     $verbose['contact'] = $t_contact[$info['contact']];
     $verbose['comments'] = $t_comments[$info['comments']];
     $message = t('Changed environment:<pre>@verbose</pre>', array('@verbose' => var_export($verbose, TRUE)));
     $this->assert('debug', $message, 'Debug');
     // Update current environment.
     $current = $info;
     return $info;
 }
开发者ID:anatalsceo,项目名称:en-classe,代码行数:85,代码来源:CommentLinksTest.php

示例9: postSave

 /**
  * {@inheritdoc}
  */
 public function postSave(EntityStorageInterface $storage_controller, $update = TRUE)
 {
     parent::postSave($storage_controller, $update);
     // Set bypass permissions.
     $roles = $this->getBypassRoles();
     $permission = $this->getPermissionName();
     if ($roles && $permission) {
         foreach (user_roles() as $rid => $name) {
             $enabled = in_array($rid, $roles, TRUE);
             user_role_change_permissions($rid, array($permission => $enabled));
         }
     }
 }
开发者ID:augustpascual-mse,项目名称:job-searching-network,代码行数:16,代码来源:ProtectionRule.php

示例10: setRolePermissions

 /**
  * Set permissions for role.
  */
 function setRolePermissions($rid, $access_comments = FALSE, $search_content = TRUE)
 {
     $permissions = array('access comments' => $access_comments, 'search content' => $search_content);
     user_role_change_permissions($rid, $permissions);
 }
开发者ID:ddrozdik,项目名称:dmaps,代码行数:8,代码来源:SearchCommentTest.php

示例11: postSave

 /**
  * {@inheritdoc}
  */
 public function postSave(EntityStorageInterface $storage, $update = TRUE)
 {
     parent::postSave($storage, $update);
     // Clear the static caches of filter_formats() and others.
     filter_formats_reset();
     if (!$update && !$this->isSyncing()) {
         // Default configuration of modules and installation profiles is allowed
         // to specify a list of user roles to grant access to for the new format;
         // apply the defined user role permissions when a new format is inserted
         // and has a non-empty $roles property.
         // Note: user_role_change_permissions() triggers a call chain back into
         // \Drupal\filter\FilterPermissions::permissions() and lastly
         // filter_formats(), so its cache must be reset upfront.
         if (($roles = $this->get('roles')) && ($permission = $this->getPermissionName())) {
             foreach (user_roles() as $rid => $name) {
                 $enabled = in_array($rid, $roles, TRUE);
                 user_role_change_permissions($rid, array($permission => $enabled));
             }
         }
     }
 }
开发者ID:anyforsoft,项目名称:csua_d8,代码行数:24,代码来源:FilterFormat.php

示例12: testContentTranslationOverviewAccess

 /**
  * @see content_translation_translate_access()
  */
 public function testContentTranslationOverviewAccess()
 {
     $access_control_handler = \Drupal::entityManager()->getAccessControlHandler('node');
     $user = $this->createUser(['create content translations', 'access content']);
     $this->drupalLogin($user);
     $node = $this->drupalCreateNode(['status' => FALSE, 'type' => 'article']);
     $this->assertFalse(content_translation_translate_access($node)->isAllowed());
     $access_control_handler->resetCache();
     $node->setPublished(TRUE);
     $node->save();
     $this->assertTrue(content_translation_translate_access($node)->isAllowed());
     $access_control_handler->resetCache();
     user_role_change_permissions(Role::AUTHENTICATED_ID, ['access content' => FALSE]);
     $user = $this->createUser(['create content translations']);
     $this->drupalLogin($user);
     $this->assertFalse(content_translation_translate_access($node)->isAllowed());
     $access_control_handler->resetCache();
 }
开发者ID:ddrozdik,项目名称:dmaps,代码行数:21,代码来源:ContentTranslationOperationsTest.php

示例13: _testImageFieldFormatters

 /**
  * Test image formatters on node display.
  */
 function _testImageFieldFormatters($scheme)
 {
     /** @var \Drupal\Core\Render\RendererInterface $renderer */
     $renderer = $this->container->get('renderer');
     $node_storage = $this->container->get('entity.manager')->getStorage('node');
     $field_name = strtolower($this->randomMachineName());
     $field_settings = array('alt_field_required' => 0);
     $instance = $this->createImageField($field_name, 'article', array('uri_scheme' => $scheme), $field_settings);
     // Go to manage display page.
     $this->drupalGet("admin/structure/types/manage/article/display");
     // Test for existence of link to image styles configuration.
     $this->drupalPostAjaxForm(NULL, array(), "{$field_name}_settings_edit");
     $this->assertLinkByHref(\Drupal::url('entity.image_style.collection'), 0, 'Link to image styles configuration is found');
     // Remove 'administer image styles' permission from testing admin user.
     $admin_user_roles = $this->adminUser->getRoles(TRUE);
     user_role_change_permissions(reset($admin_user_roles), array('administer image styles' => FALSE));
     // Go to manage display page again.
     $this->drupalGet("admin/structure/types/manage/article/display");
     // Test for absence of link to image styles configuration.
     $this->drupalPostAjaxForm(NULL, array(), "{$field_name}_settings_edit");
     $this->assertNoLinkByHref(\Drupal::url('entity.image_style.collection'), 'Link to image styles configuration is absent when permissions are insufficient');
     // Restore 'administer image styles' permission to testing admin user
     user_role_change_permissions(reset($admin_user_roles), array('administer image styles' => TRUE));
     // Create a new node with an image attached.
     $test_image = current($this->drupalGetTestFiles('image'));
     // Ensure that preview works.
     $this->previewNodeImage($test_image, $field_name, 'article');
     // After previewing, make the alt field required. It cannot be required
     // during preview because the form validation will fail.
     $instance->setSetting('alt_field_required', 1);
     $instance->save();
     // Create alt text for the image.
     $alt = $this->randomMachineName();
     // Save node.
     $nid = $this->uploadNodeImage($test_image, $field_name, 'article', $alt);
     $node_storage->resetCache(array($nid));
     $node = $node_storage->load($nid);
     // Test that the default formatter is being used.
     $file = $node->{$field_name}->entity;
     $image_uri = $file->getFileUri();
     $image = array('#theme' => 'image', '#uri' => $image_uri, '#width' => 40, '#height' => 20, '#alt' => $alt);
     $default_output = str_replace("\n", NULL, $renderer->renderRoot($image));
     $this->assertRaw($default_output, 'Default formatter displaying correctly on full node view.');
     // Test the image linked to file formatter.
     $display_options = array('type' => 'image', 'settings' => array('image_link' => 'file'));
     $display = entity_get_display('node', $node->getType(), 'default');
     $display->setComponent($field_name, $display_options)->save();
     $image = array('#theme' => 'image', '#uri' => $image_uri, '#width' => 40, '#height' => 20, '#alt' => $alt);
     $default_output = '<a href="' . file_create_url($image_uri) . '">' . $renderer->renderRoot($image) . '</a>';
     $this->drupalGet('node/' . $nid);
     $this->assertCacheTag($file->getCacheTags()[0]);
     $cache_tags_header = $this->drupalGetHeader('X-Drupal-Cache-Tags');
     $this->assertTrue(!preg_match('/ image_style\\:/', $cache_tags_header), 'No image style cache tag found.');
     $this->assertRaw($default_output, 'Image linked to file formatter displaying correctly on full node view.');
     // Verify that the image can be downloaded.
     $this->assertEqual(file_get_contents($test_image->uri), $this->drupalGet(file_create_url($image_uri)), 'File was downloaded successfully.');
     if ($scheme == 'private') {
         // Only verify HTTP headers when using private scheme and the headers are
         // sent by Drupal.
         $this->assertEqual($this->drupalGetHeader('Content-Type'), 'image/png', 'Content-Type header was sent.');
         $this->assertTrue(strstr($this->drupalGetHeader('Cache-Control'), 'private') !== FALSE, 'Cache-Control header was sent.');
         // Log out and try to access the file.
         $this->drupalLogout();
         $this->drupalGet(file_create_url($image_uri));
         $this->assertResponse('403', 'Access denied to original image as anonymous user.');
         // Log in again.
         $this->drupalLogin($this->adminUser);
     }
     // Test the image linked to content formatter.
     $display_options['settings']['image_link'] = 'content';
     $display->setComponent($field_name, $display_options)->save();
     $image = array('#theme' => 'image', '#uri' => $image_uri, '#width' => 40, '#height' => 20);
     $this->drupalGet('node/' . $nid);
     $this->assertCacheTag($file->getCacheTags()[0]);
     $cache_tags_header = $this->drupalGetHeader('X-Drupal-Cache-Tags');
     $this->assertTrue(!preg_match('/ image_style\\:/', $cache_tags_header), 'No image style cache tag found.');
     $elements = $this->xpath('//a[@href=:path]/img[@src=:url and @alt=:alt and @width=:width and @height=:height]', array(':path' => $node->url(), ':url' => file_create_url($image['#uri']), ':width' => $image['#width'], ':height' => $image['#height'], ':alt' => $alt));
     $this->assertEqual(count($elements), 1, 'Image linked to content formatter displaying correctly on full node view.');
     // Test the image style 'thumbnail' formatter.
     $display_options['settings']['image_link'] = '';
     $display_options['settings']['image_style'] = 'thumbnail';
     $display->setComponent($field_name, $display_options)->save();
     // Ensure the derivative image is generated so we do not have to deal with
     // image style callback paths.
     $this->drupalGet(ImageStyle::load('thumbnail')->buildUrl($image_uri));
     $image_style = array('#theme' => 'image_style', '#uri' => $image_uri, '#width' => 40, '#height' => 20, '#style_name' => 'thumbnail', '#alt' => $alt);
     $default_output = $renderer->renderRoot($image_style);
     $this->drupalGet('node/' . $nid);
     $image_style = ImageStyle::load('thumbnail');
     $this->assertCacheTag($image_style->getCacheTags()[0]);
     $this->assertRaw($default_output, 'Image style thumbnail formatter displaying correctly on full node view.');
     if ($scheme == 'private') {
         // Log out and try to access the file.
         $this->drupalLogout();
         $this->drupalGet(ImageStyle::load('thumbnail')->buildUrl($image_uri));
         $this->assertResponse('403', 'Access denied to image style thumbnail as anonymous user.');
     }
//.........这里部分代码省略.........
开发者ID:dmyerson,项目名称:d8ecs,代码行数:101,代码来源:ImageFieldDisplayTest.php

示例14: testTemporaryFileRemovalExploitAnonymous

 /**
  * Tests exploiting the temporary file removal for anonymous users using fid.
  */
 public function testTemporaryFileRemovalExploitAnonymous()
 {
     // Set up an anonymous victim user.
     $victim_user = User::getAnonymousUser();
     // Set up an anonymous attacker user.
     $attacker_user = User::getAnonymousUser();
     // Set up permissions for anonymous attacker user.
     user_role_change_permissions(RoleInterface::ANONYMOUS_ID, array('access content' => TRUE, 'create article content' => TRUE, 'edit any article content' => TRUE));
     // Log out so as to be the anonymous attacker user.
     $this->drupalLogout();
     // Perform tests using the newly set up anonymous users.
     $this->doTestTemporaryFileRemovalExploit($victim_user, $attacker_user);
 }
开发者ID:frankcr,项目名称:sftw8,代码行数:16,代码来源:FileFieldWidgetTest.php

示例15: testCommentFunctionality

 /**
  * Tests anonymous comment functionality.
  */
 function testCommentFunctionality()
 {
     $limited_user = $this->drupalCreateUser(array('administer entity_test fields'));
     $this->drupalLogin($limited_user);
     // Test that default field exists.
     $this->drupalGet('entity_test/structure/entity_test/fields');
     $this->assertText(t('Comment settings'));
     $this->assertLinkByHref('entity_test/structure/entity_test/fields/entity_test.entity_test.comment');
     // Test widget hidden option is not visible when there's no comments.
     $this->drupalGet('entity_test/structure/entity_test/entity-test/fields/entity_test.entity_test.comment');
     $this->assertNoField('edit-default-value-input-comment-und-0-status-0');
     $this->drupalLogin($this->admin_user);
     // Post a comment.
     $comment1 = $this->postComment($this->entity, $this->randomName(), $this->randomName());
     $this->assertTrue($this->commentExists($comment1), 'Comment on test entity exists.');
     // Assert the breadcrumb is valid.
     $this->drupalGet('comment/reply/entity_test/' . $this->entity->id() . '/comment');
     $this->assertLink($this->entity->label());
     // Unpublish the comment.
     $this->performCommentOperation($comment1, 'unpublish');
     $this->drupalGet('admin/content/comment/approval');
     $this->assertRaw('comments[' . $comment1->id() . ']', 'Comment was unpublished.');
     // Publish the comment.
     $this->performCommentOperation($comment1, 'publish', TRUE);
     $this->drupalGet('admin/content/comment');
     $this->assertRaw('comments[' . $comment1->id() . ']', 'Comment was published.');
     // Delete the comment.
     $this->performCommentOperation($comment1, 'delete');
     $this->drupalGet('admin/content/comment');
     $this->assertNoRaw('comments[' . $comment1->id() . ']', 'Comment was deleted.');
     // Post another comment.
     $comment1 = $this->postComment($this->entity, $this->randomName(), $this->randomName());
     $this->assertTrue($this->commentExists($comment1), 'Comment on test entity exists.');
     // Check that the comment was found.
     $this->drupalGet('admin/content/comment');
     $this->assertRaw('comments[' . $comment1->id() . ']', 'Comment was published.');
     // Check that entity access applies to administrative page.
     $this->assertText($this->entity->label(), 'Name of commented account found.');
     $limited_user = $this->drupalCreateUser(array('administer comments'));
     $this->drupalLogin($limited_user);
     $this->drupalGet('admin/content/comment');
     $this->assertNoText($this->entity->label(), 'No commented account name found.');
     $this->drupalLogout();
     // Deny anonymous users access to comments.
     user_role_change_permissions(DRUPAL_ANONYMOUS_RID, array('access comments' => FALSE, 'post comments' => FALSE, 'skip comment approval' => FALSE, 'view test entity' => TRUE));
     // Attempt to view comments while disallowed.
     $this->drupalGet('entity-test/' . $this->entity->id());
     $this->assertNoPattern('@<h2[^>]*>Comments</h2>@', 'Comments were not displayed.');
     $this->assertNoLink('Add new comment', 'Link to add comment was found.');
     // Attempt to view test entity comment form while disallowed.
     $this->drupalGet('comment/reply/entity_test/' . $this->entity->id() . '/comment');
     $this->assertText('You are not authorized to post comments', 'Error attempting to post comment.');
     $this->assertNoFieldByName('subject[0][value]', '', 'Subject field not found.');
     $this->assertNoFieldByName('comment_body[0][value]', '', 'Comment field not found.');
     user_role_change_permissions(DRUPAL_ANONYMOUS_RID, array('access comments' => TRUE, 'post comments' => FALSE, 'view test entity' => TRUE, 'skip comment approval' => FALSE));
     $this->drupalGet('entity_test/' . $this->entity->id());
     $this->assertPattern('@<h2[^>]*>Comments</h2>@', 'Comments were displayed.');
     $this->assertLink('Log in', 0, 'Link to log in was found.');
     $this->assertLink('register', 0, 'Link to register was found.');
     $this->assertNoFieldByName('subject[0][value]', '', 'Subject field not found.');
     $this->assertNoFieldByName('comment_body[0][value]', '', 'Comment field not found.');
     // Test the combination of anonymous users being able to post, but not view
     // comments, to ensure that access to post comments doesn't grant access to
     // view them.
     user_role_change_permissions(DRUPAL_ANONYMOUS_RID, array('access comments' => FALSE, 'post comments' => TRUE, 'skip comment approval' => TRUE, 'view test entity' => TRUE));
     $this->drupalGet('entity_test/' . $this->entity->id());
     $this->assertNoPattern('@<h2[^>]*>Comments</h2>@', 'Comments were not displayed.');
     $this->assertFieldByName('subject[0][value]', '', 'Subject field found.');
     $this->assertFieldByName('comment_body[0][value]', '', 'Comment field found.');
     $this->drupalGet('comment/reply/entity_test/' . $this->entity->id() . '/comment/' . $comment1->id());
     $this->assertText('You are not authorized to view comments');
     $this->assertNoText($comment1->getSubject(), 'Comment not displayed.');
     // Test comment field widget changes.
     $limited_user = $this->drupalCreateUser(array('administer entity_test fields', 'view test entity', 'administer entity_test content'));
     $this->drupalLogin($limited_user);
     $this->drupalGet('entity_test/structure/entity_test/fields/entity_test.entity_test.comment');
     $this->assertNoFieldChecked('edit-default-value-input-comment-0-status-0');
     $this->assertNoFieldChecked('edit-default-value-input-comment-0-status-1');
     $this->assertFieldChecked('edit-default-value-input-comment-0-status-2');
     // Test comment option change in field settings.
     $edit = array('default_value_input[comment][0][status]' => CommentItemInterface::CLOSED);
     $this->drupalPostForm(NULL, $edit, t('Save settings'));
     $this->drupalGet('entity_test/structure/entity_test/fields/entity_test.entity_test.comment');
     $this->assertNoFieldChecked('edit-default-value-input-comment-0-status-0');
     $this->assertFieldChecked('edit-default-value-input-comment-0-status-1');
     $this->assertNoFieldChecked('edit-default-value-input-comment-0-status-2');
     // Add a new comment-type.
     $bundle = CommentType::create(array('id' => 'foobar', 'label' => 'Foobar', 'description' => '', 'target_entity_type_id' => 'entity_test'));
     $bundle->save();
     // Add a new comment field.
     $this->drupalGet('entity_test/structure/entity_test/fields');
     $edit = array('fields[_add_new_field][label]' => 'Foobar', 'fields[_add_new_field][field_name]' => 'foobar', 'fields[_add_new_field][type]' => 'comment');
     $this->drupalPostForm(NULL, $edit, t('Save'));
     $this->drupalPostForm(NULL, array('field[settings][comment_type]' => 'foobar'), t('Save field settings'));
     $this->drupalPostForm(NULL, array(), t('Save settings'));
     $this->assertRaw(t('Saved %name configuration', array('%name' => 'Foobar')));
     // Add a third comment field.
//.........这里部分代码省略.........
开发者ID:alnutile,项目名称:drunatra,代码行数:101,代码来源:CommentNonNodeTest.php


注:本文中的user_role_change_permissions函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。