/**
  * Remove this page from archive
  *
  * @param void
  * @return null
  */
 function unarchive()
 {
     if ($this->active_page->isNew()) {
         $this->httpError(HTTP_ERR_NOT_FOUND);
     }
     // if
     if (!$this->active_page->canEdit($this->logged_user)) {
         $this->httpError(HTTP_ERR_FORBIDDEN);
     }
     // if
     if ($this->request->isSubmitted()) {
         $this->active_page->setIsArchived(false);
         $save = $this->active_page->save();
         if ($save && !is_error($save)) {
             if ($this->request->isApiCall()) {
                 $this->serveData($this->active_page, 'page');
             } else {
                 flash_success('Page ":name" has been archived', array('name' => $this->active_page->getName()));
             }
             // if
         } else {
             if ($this->request->isApiCall()) {
                 $this->serveData($save);
             } else {
                 flash_error('Failed to archive ":name" page', array('name' => $this->active_page->getName()));
             }
             // if
         }
         // if
         $this->redirectToUrl($this->active_page->getViewUrl());
     } else {
         $this->httpError(HTTP_ERR_BAD_REQUEST);
     }
     // if
 }
 /**
  * Shop Admins can edit
  * @param Member $member
  * @return Boolean
  */
 function canEdit($member = null)
 {
     if (Permission::checkMember($member, Config::inst()->get("EcommerceRole", "admin_permission_code"))) {
         return true;
     }
     return parent::canEdit($member);
 }
 public function testEditPermissionsOnDraftVsLive()
 {
     // Create an inherit-permission page
     $page = new Page();
     $page->write();
     $page->CanEditType = "Inherit";
     $page->doPublish();
     $pageID = $page->ID;
     // Lock down the site config
     $sc = $page->SiteConfig;
     $sc->CanEditType = 'OnlyTheseUsers';
     $sc->EditorGroups()->add($this->idFromFixture('Group', 'admins'));
     $sc->write();
     // Confirm that Member.editor can't edit the page
     $this->objFromFixture('Member', 'editor')->logIn();
     $this->assertFalse($page->canEdit());
     // Change the page to be editable by Group.editors, but do not publish
     $this->objFromFixture('Member', 'admin')->logIn();
     $page->CanEditType = 'OnlyTheseUsers';
     $page->EditorGroups()->add($this->idFromFixture('Group', 'editors'));
     $page->write();
     // Clear permission cache
     SiteTree::on_db_reset();
     // Confirm that Member.editor can now edit the page
     $this->objFromFixture('Member', 'editor')->logIn();
     $this->assertTrue($page->canEdit());
     // Publish the changes to the page
     $this->objFromFixture('Member', 'admin')->logIn();
     $page->doPublish();
     // Confirm that Member.editor can still edit the page
     $this->objFromFixture('Member', 'editor')->logIn();
     $this->assertTrue($page->canEdit());
 }
Example #4
0
 /**
  * {@inheritdoc}
  */
 public function canEdit($member = null)
 {
     $member = $this->getMember($member);
     if (parent::canEdit($member)) {
         return true;
     }
     $parent = $this->Parent();
     if (!$parent || !$parent->exists() || !$parent instanceof Blog) {
         return false;
     }
     if ($parent->isEditor($member)) {
         return true;
     }
     if (!$parent->isWriter($member) && !$parent->isContributor($member)) {
         return false;
     }
     return $this->isAuthor($member);
 }
Example #5
0
 /**
  * {@inheritdoc}
  */
 public function canEdit($member = null)
 {
     $member = $this->getMember($member);
     if ($this->isEditor($member)) {
         return true;
     }
     return parent::canEdit($member);
 }
 /**
  * Standard SS method
  **/
 function canEdit($member = null)
 {
     if (!$member) {
         $member = Member::currentUser();
     }
     if ($member) {
         if (Permission::check('ADMIN') || $this->Members('Member.ID = ' . $member->ID)) {
             return true;
         } else {
             return parent::canEdit($member);
         }
     } else {
         return false;
     }
 }
 /**
  * Returns whether or not the current user can edit this page
  *
  * If the
  */
 public function canEdit($member = null)
 {
     $can = parent::canEdit($member);
     if (!$can) {
         // see if they can via the wiki permission explicitly
         $can = Permission::check(EDIT_WIKI);
     }
     return $can;
 }
Example #8
0
 /**
  * Shop Admins can edit
  * @return Boolean
  */
 function canEdit($member = null)
 {
     if (!$member) {
         $member == Member::currentUser();
     }
     $shopAdminCode = EcommerceConfig::get("EcommerceRole", "admin_permission_code");
     if ($member && Permission::checkMember($member, $shopAdminCode)) {
         return true;
     }
     return parent::canEdit($member);
 }