1.2. Типове и нива позволения в BEST

Присъщи (стандартни) позволения --дефинирани са във  lib/db/access.php

Пример: best/legacy:guest; best/legacy:student ; best/legacy:teacher  ... ... ...

Позволения на ниво потребител -->  best/user:readuserposts - може да чете публикуваното от потребителите на страниците на личните им профили; best/user:readuserblogs - може да чете блоговете на потребителите ; best/user:viewuseractivitiesreport- може да чете отчетите за активността на потребителите намираща се на страницата на личните им профили

Позволения на ниво модул --> добавянето на този контекст на позволенията наложи в базата данни на Moodle да бъдат направени промени описани по-долу. Сега инсталирането, деинсталирането и обновяването на модул. Сега при всяка промяна на позволенията в рамките на модул води до промяна и в неговата версия. Всеки път когато се извършва промяна в позволенията за даден модул, то това води и до промяна на неговата версия.  За разлика от Moodle стремежът ни е бил към въвеждане на единна конвенция за имената на позволенията глобално при цялата система и на всички нива. При Moodle имената на позволенията са специфични за всеки един модул. Позволенията на ниво модул са дефинирани във файла  mod/mod_name/db/access.php и носят обикновенно имена от типа: 'mod/mod_name:capability' Например: За модула задание - mod/assignment:view - позволено е четенето на описанието на заданието; За модула Изпит е mod/exercise:assess ; за модула Тест е mod/quiz:manage - позволено е добавянето и изтриването на тестови задаче и т.н.

В директорията db на всеки един модул е добавен файла access.php  в който бяха дефинирани всички позволения. В приложения архив например се намира mod/forum/db/access.php

В този файл се намира масив съдържащ записи от типа:

'mod/forum:viewforum' => array(
       'captype' => 'read',
       'contextlevel' => CONTEXT_MODULE,
       'legacy' => array(
           'guest' => CAP_PREVENT,
           'student' => CAP_ALLOW,
           'teacher' => CAP_ALLOW,
           'editingteacher' => CAP_ALLOW,
           'coursecreator' => CAP_ALLOW,
           'admin' => CAP_ALLOW
       )
   ),
 

Посредством функцията get_context_instance() на всяка една страница, лесно се открива в какъв контекст работи потребителя. Например за споменатия файл това е:

$context = get_context_instance(CONTEXT_MODULE, $cm->id);

С други думи навсякъде където искаме да проверим дали потребителя има правата да извършва дадената дейност извикваме по следния начин  has_capability() :

if (!has_capability('mod/forum:viewforum', $context))

   {
       print_error('nopermissiontoviewforum');
   }

Ако искате да се генерира съобщение като посоченото в кода по-горе при заявяване на позволение , т.е. да проведете тест, то тогава използвате require_capability()  по следния начин:

require_capability('mod/forum:viewforum', $context);
 

Разбира се могат да се използват и още допълнителни параметри за генериране на широк диапазон съобщения.