Методика обучения технологии web 2.0 на примере создания школьного сайта спортивной тематики
Рефераты >> Педагогика >> Методика обучения технологии web 2.0 на примере создания школьного сайта спортивной тематики

// если нет, то назначается роль по умолчанию (гость)

if ($this->auth->hasIdentity())

$role = $this->auth->getIdentity()->user_type;

else

$role = $this->_defaultRole;

if (!$this->acl->hasRole($role))

$role = $this->_defaultRole;

// контролируемый ресурс - имя запрашиваемого контроллера

$resource = $request->controller;

// привилегия - имя запрашиваемой операции

$privilege = $request->action;

// если ресурс не определен явно. проверить

// глобальные допуски по умолчанию

if (!$this->acl->has($resource))

$resource = null;

// в допуске отказано. Выполняется операция по умолчанию

if (!$this->acl->isAllowed($role, $resource, $privilege)) {

$request->setControllerName($this->_authController['controller']);

$request->setActionName($this->_authController['action']);

}

}

}

?>

Листинг 2.3 Первоначальная версия класса DatabaseObject_User

(файл user.php)

<?

class DatabaseObject_User extends DatabaseObject

{

static $userTypes = array('member' => 'Member',

'administrator' => 'Administrator');

public $profile = null;

public $_newPassword = null;

public function construct($db)

{

parent:: construct($db, 'users', 'user_id');

$this->add('username');

$this->add('password');

$this->add('user_type', 'member');

$this->add('ts_created', time(), self::TYPE_TIMESTAMP);

$this->add('ts_last_login', null, self::TYPE_TIMESTAMP);

}

}

?>

Листинг 2.4 Полныйтексткласса FormProcessor_UserRegistration

(файл UserRegistration.php)

<?php

class FormProcessor_UserRegistration extends FormProcessor

{

protected $db = null;

public $user = null;

public function construct($db)

{

parent:: construct();

$this->db = $db;

$this->user = new DatabaseObject_User($db);

$this->user->type = 'member';

}

public function process(Zend_Controller_Request_Abstract $request)

{

// проверка правильности имени

$this->username = trim($request->getPost('username'));

if (strlen($this->username) == 0)

$this->addError('username', 'Please enter a username');

else if (!DatabaseObject_User::IsValidUsername($this->username))

$this->addError('username', 'Please enter a valid username');

else if ($this->user->usernameExists($this->username))

$this->addError('username', 'The selected username already exists');

else

$this->user->username = $this->username;

// проверка имени и фамилии

$this->first_name = $this->sanitize($request->getPost('first_name'));

if (strlen($this->first_name) == 0)

$this->addError('first_name', 'Please enter your first name');

else

$this->user->profile->first_name = $this->first_name;

$this->last_name = $this->sanitize($request->getPost('last_name'));

if (strlen($this->last_name) == 0)

$this->addError('last_name', 'Please enter your last name');

else

$this->user->profile->last_name = $this->last_name;

// проверка адреса электронной почты

$this->email = $this->sanitize($request->getPost('email'));

$validator = new Zend_Validate_EmailAddress();

if (strlen($this->email) == 0)

$this->addError('email', 'Please enter your e-mail address');

else if (!$validator->isValid($this->email))

$this->addError('email', 'Please enter a valid e-mail address');

else

$this->user->profile->email = $this->email;

$session = new Zend_Session_Namespace('captcha');

$this->captcha = $this->sanitize($request->getPost('captcha'));

if ($this->captcha != $session->phrase)

$this->addError('captcha', 'Please enter the correct phrase');

// если ошибок нет, сохранить данные пользоваетля

if (!$this->hasError()) {

$this->user->save();

unset($session->phrase);

}

// возврат true, если нет ошибок

return !$this->hasError();

}

}

Листинг 2.5 Шаблон HTML для формы регистрации пользователей

(файл register.tpl)

{include file='header.tpl'}

<form method="post" action="/account/register">

<fieldset>

<legend>Создание аккаунта</legend>

<div class="error"{if !$fp->hasError()} >


Страница: