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

{

$this->_engine->clear_assign($key);

}

public function assign($spec, $value = null)

{

if (is_array($spec)) {

$this->_engine->assign($spec);

return;

}

$this->_engine->assign($spec, $value);

}

public function clearVars()

{

$this->_engine->clear_all_assign();

}

public function render($name)

{

return $this-

>_engine->fetch(strtolower($name));

}

public function _run()

{ }

}

?>

Листинг 1.7 Новый контроллер, выводящий файл index.tpl

(файл IndexController.php)

<?

class IndexController extends CustomControllerAction

{

public function indexAction()

{

}

}

?>

Листинг 1.8 Шаблон для операции index контроллера index

(файл index.tpl)

{include file='header.tpl'}

Будущий спортивный сайт школы

{include file='footer.tpl'}

Листинг 1.9 Файл заголовка HTML-страницы

(файл header.tpl)

<!DOCTYPE html

PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">

<head>

<title>Title</title>

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251 " />

</head>

<body>

<div>

Листинг 1.10 Файл конца страницы, в котором закрываются тэги, открытые в заголовке(файл footer.tpl)

</div>

</body>

</html>

Листинг 2.1 Загрузочный файл приложения с использованием компонента Zend_Auth (файл index.php)

// настройка утентификации пользователей

$auth = Zend_Auth::getInstance();

$auth->setStorage(new Zend_Auth_Storage_Session());

$controller->registerPlugin(new CustomControllerAclManager($auth));

Листинг 2.2 Подключаемый модуль CustomControllerAclManager, проверяющий допуски перед отправкой запроса на обработку

(файл CustomControllerAclManager.php)

<?php

class CustomControllerAclManager extends Zend_Controller_Plugin_Abstract

{

// роль по умолчанию, если не вошел (или роль не определена)

private $_defaultRole = 'guest';

// выполнить операцию, если у пользователя не хватает привилегий

private $_authController = array('controller' => 'account',

'action' => 'login');

public function construct(Zend_Auth $auth)

{

$this->auth = $auth;

$this->acl = new Zend_Acl();

// добаляем новые роли

$this->acl->addRole(new Zend_Acl_Role($this->_defaultRole));

$this->acl->addRole(new Zend_Acl_Role('member'));

$this->acl->addRole(new Zend_Acl_Role('administrator'), 'member');

// добавляем контролируемые ресурсы

$this->acl->add(new Zend_Acl_Resource('account'));

$this->acl->add(new Zend_Acl_Resource('admin'));

// по умолчанию даем всемпользователям доступ ко всему

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

$this->acl->allow();

$this->acl->deny(null, 'account');

$this->acl->deny(null, 'admin');

// добавляем исключение. чтобы гости могли войти или

// зарегистрироваться, если нет привилегий

$this->acl->allow('guest', 'account', array('login',

'fetchpassword',

'register',

'registercomplete'));

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

$this->acl->allow('member', 'account');

// даем администраторам доступ в область администрирования

$this->acl->allow('administrator', 'admin');

}

/**

* preDispatch

*

* Прежде, чем отправлять запрос на обработку, проверяет есть ли у пользователя

* нужные привелегии. Если нет, инициирует операцию по умолчанию

*

*

* @param Zend_Controller_Request_Abstract $request

*/

public function preDispatch(Zend_Controller_Request_Abstract $request)

{

// проверка, вошел ли пользователь и имеет ли нужную роль

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

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;

Страница:  1  2  3  4  5  6  7  8  9  10  11  12  13  14  15 
 16 


Другие рефераты на тему «Педагогика»:

Поиск рефератов

Последние рефераты раздела

Copyright © 2010-2024 - www.refsru.com - рефераты, курсовые и дипломные работы