/**
  * Creates a PermissionsEditor
  *
  * @param SiteSettings $settings
  * @param DataEditControl $controlling_editor
  * @param string $s_id
  * @param string $s_title
  */
 public function __construct(SiteSettings $settings, DataEditControl $controlling_editor, $s_id, $s_title)
 {
     $this->SetDataObjectClass('IdValue');
     $this->SetDataObjectMethods('GetId', '', '');
     parent::__construct($settings, $controlling_editor, $s_id, $s_title, array("Permission", "Resource URI"));
     # initialise arrays
     $this->permissions = array(new IdValue(PermissionType::ViewPage(), ucfirst(PermissionType::Text(PermissionType::ViewPage()))), new IdValue(PermissionType::ForumAddMessage(), ucfirst(PermissionType::Text(PermissionType::ForumAddMessage()))), new IdValue(PermissionType::EditPersonalInfo(), ucfirst(PermissionType::Text(PermissionType::EditPersonalInfo()))), new IdValue(PermissionType::MANAGE_CATEGORIES, ucfirst(PermissionType::Text(PermissionType::MANAGE_CATEGORIES))), new IdValue(PermissionType::MANAGE_USERS_AND_PERMISSIONS, ucfirst(PermissionType::Text(PermissionType::MANAGE_USERS_AND_PERMISSIONS))), new IdValue(PermissionType::PageSubscribe(), ucfirst(PermissionType::Text(PermissionType::PageSubscribe()))), new IdValue(PermissionType::MANAGE_URLS, ucfirst(PermissionType::Text(PermissionType::MANAGE_URLS))), new IdValue(PermissionType::MANAGE_SEARCH, ucfirst(PermissionType::Text(PermissionType::MANAGE_SEARCH))), new IdValue(PermissionType::VIEW_ADMINISTRATION_PAGE, ucfirst(PermissionType::Text(PermissionType::VIEW_ADMINISTRATION_PAGE))), new IdValue(PermissionType::VIEW_WORDPRESS_LOGIN, ucfirst(PermissionType::Text(PermissionType::VIEW_WORDPRESS_LOGIN))), new IdValue(PermissionType::EXCLUDE_FROM_ANALYTICS, ucfirst(PermissionType::Text(PermissionType::EXCLUDE_FROM_ANALYTICS))), new IdValue(PermissionType::MANAGE_TEAMS, ucfirst(PermissionType::Text(PermissionType::MANAGE_TEAMS))), new IdValue(PermissionType::MANAGE_COMPETITIONS, ucfirst(PermissionType::Text(PermissionType::MANAGE_COMPETITIONS))), new IdValue(PermissionType::MANAGE_GROUNDS, ucfirst(PermissionType::Text(PermissionType::MANAGE_GROUNDS))), new IdValue(PermissionType::ADD_MATCH, ucfirst(PermissionType::Text(PermissionType::ADD_MATCH))), new IdValue(PermissionType::EDIT_MATCH, ucfirst(PermissionType::Text(PermissionType::EDIT_MATCH))), new IdValue(PermissionType::DELETE_MATCH, ucfirst(PermissionType::Text(PermissionType::DELETE_MATCH))), new IdValue(PermissionType::MANAGE_MATCHES, ucfirst(PermissionType::Text(PermissionType::MANAGE_MATCHES))), new IdValue(PermissionType::MANAGE_PLAYERS, ucfirst(PermissionType::Text(PermissionType::MANAGE_PLAYERS))), new IdValue(PermissionType::MANAGE_STATISTICS, ucfirst(PermissionType::Text(PermissionType::MANAGE_STATISTICS))));
 }
 /**
  * Gets a description of a permission
  * @param int $type
  * @return string
  */
 public static function Text($type)
 {
     switch ($type) {
         case PermissionType::ViewPage():
             return 'view a page';
         case PermissionType::ForumAddMessage():
             return "post a forum message";
         case PermissionType::EditPersonalInfo():
             return "edit own profile";
         case PermissionType::MANAGE_CATEGORIES:
             return "manage categories";
         case PermissionType::MANAGE_USERS_AND_PERMISSIONS:
             return "manage users and permissions";
         case PermissionType::PageSubscribe():
             return "subscribe to alerts for comments on pages";
         case PermissionType::MANAGE_URLS:
             return "manage URLs";
         case PermissionType::MANAGE_SEARCH:
             return "manage search";
         case PermissionType::VIEW_ADMINISTRATION_PAGE:
             return "view the admin menu";
         case PermissionType::VIEW_WORDPRESS_LOGIN:
             return "view the WordPress login link";
         case PermissionType::EXCLUDE_FROM_ANALYTICS:
             return "opt out of Google Analytics";
         case PermissionType::MANAGE_TEAMS:
             return "manage teams and clubs";
         case PermissionType::MANAGE_COMPETITIONS:
             return "manage competitions and seasons";
         case PermissionType::MANAGE_GROUNDS:
             return "manage grounds";
         case PermissionType::ADD_MATCH:
             return 'add matches';
         case PermissionType::EDIT_MATCH:
             return "edit own matches, and results of any match";
         case PermissionType::DELETE_MATCH:
             return "delete own matches";
         case PermissionType::MANAGE_MATCHES:
             return "manage matches";
         case PermissionType::MANAGE_PLAYERS:
             return "manage players";
         case PermissionType::MANAGE_STATISTICS:
             return "manage match statistics";
     }
 }
<?php

ini_set('include_path', ini_get('include_path') . PATH_SEPARATOR . $_SERVER['DOCUMENT_ROOT'] . '/../classes/');
require_once 'page/stoolball-page.class.php';
class EditProfilePage extends StoolballPage
{
    function OnPrePageLoad()
    {
        $this->SetPageTitle('Edit profile for ' . AuthenticationManager::GetUser()->GetName());
    }
    function OnPageLoad()
    {
        echo '<h1>' . htmlentities($this->GetPageTitle(), ENT_QUOTES, "UTF-8", false) . '</h1>';
        echo '<div class="nav">' . '<h2><a href="' . $this->GetSettings()->GetUrl('AccountEssential') . '">Essential information</a></h2>' . '<p>Change your name, email address or password.</p>' . '<h2><a href="personal.php">More about you</a></h2>' . "<p>Tell others where you're from, who you are and what you like.</p>" . '<h2><a href="' . $this->GetSettings()->GetUrl('EmailAlerts') . '">Email alerts</a></h2>' . "<p>Change the email alerts you get when someone adds a comment.</p>" . "</div>";
    }
}
new EditProfilePage(new StoolballSettings(), PermissionType::EditPersonalInfo(), false);
 /**
  * @return bool
  * @desc Gets whether the person is currently signed in to the site
  */
 function IsSignedIn()
 {
     return $this->Permissions()->HasPermission(PermissionType::EditPersonalInfo());
 }
            }
            # success - redirect to edit profile home
            $this->Redirect($this->GetSettings()->GetUrl('AccountEdit'));
        }
    }
    function OnPrePageLoad()
    {
        $this->SetPageTitle('Essential information for ' . AuthenticationManager::GetUser()->GetName());
        $this->SetContentConstraint($this->ConstrainText());
    }
    function OnPageLoad()
    {
        if ($this->show_changed_email_message) {
            ?>
<h1>Just one more thing&#8230;</h1>
<p>There's one more step before we update your email address.</p>
<p>Please check your email inbox, and within the next few minutes you should see something from us asking you to confirm your email address. 
    Click on the link in the email, and we'll update your account.</p>
			<?php 
            echo '<p><a href="' . Html::Encode($this->GetSettings()->GetUrl('AccountEdit')) . '">Back to your profile</a></p>';
        } else {
            echo new XhtmlElement('h1', Html::Encode($this->GetPageTitle()));
            if (!is_null($this->error)) {
                echo $this->error;
            }
            echo $this->form;
        }
    }
}
new CurrentPage(new StoolballSettings(), PermissionType::EditPersonalInfo(), false);