2. Изисквания

Добавени таблици

2.1. 'role'

Поле Описание Тип
id уникален идентификато int
name кратко име на ролята varchar
fullname цялото име на ролята text
description Описание на ролятата text
timemodified времева щампа int
sortorder   int
courseid id от таблицата course int
userid id от  таблицата user- последно променяне на ролята int

Бележки:

<lang lang="en">en</lang><lang lang="de">de</lang><lang lang="ma">ma</lang>

 

2.2. role_capabilities

Поле Описание Тип
id запис с идентификатора на потребителя int
module име на модула varchar
capability име на позволението varchar

Бележки:

Добавените функции 'role_capabilities' и 'role_allocations' ще променят таблиците

 

2.3. role_allocations

Поле Описание Тип
id идентификатор на записа int
roleid id от таблицата role int
capabilitiesid id от таблицата role_capabilities int

Бележка:

 

2.4. role_users

Поле Описание Тип
id идентификатор на записа int
userid id от таблицата user int
courseid id от таблицана courses int
roleid id от таблицата role int
timestart времева щампа int
timeend времева щампа int
timemodified времева щампа int
assignerid id от таблицата user  - в смисъл кой притежава ролята int

Бележки:

 

Оптимизации и корекции в таблиците на базата данни направени във връзка с имплементацията

Наличието на потребители които сами се записват наложи въвеждането на ново поле 'default_role'.

Премахнати таблици след оптимизацията

Нови функции в BEST въведени след имплементацията

function require_capability ( $module, $capability, $courseid) {
    global $USER;
    return ( isset ($USER->capabilities["{$module}_{$capability}"][$courseid]) or isadmin () );
}

Функция на ядрото на новата система

Ако бъдат поискани позволения които не съществуват се връща логическа стойност  false. Този сценарии е предотвратен тъй като кода поддържа и двете: таблицата  'role_capabilities' както и извикванията на require_capability.

връща логическа стойност true само когато потребителя притежава всички позволения типични за дадената роля, а също така се връща логическа стойност  false във всички останали случаи

 

В процеса на работа се наложиха корекции във функциите

 

Възражения имам към функциите

 

Други промени

Позволенията заложени в глобалната за BEST променлива $USER следва да бъдат свързани с логическия оператор 'AND' с реалния потребител и с псевдо-потребителя. Това беше направено с цел да се избегне придобиването на допълнителни позволения от реалния потребител при ограничаване на позволенията на псевдо потребители.