Как проставить на все страницы права на просмотр гостю — различия между версиями
Материал из Umicms
Mad grant (обсуждение | вклад) (Новая страница: «'''Актуально для версии 2.9.6''' == Задача == Если Вы столкнулись с данной задачей, то решить её …») |
Mad grant (обсуждение | вклад) |
||
Строка 17: | Строка 17: | ||
$result = array(); | $result = array(); | ||
$pages = new selector('pages'); | $pages = new selector('pages'); | ||
− | + | $pages->option('return')->value('id'); | |
− | + | $result = $pages->result(); | |
− | + | $perm_col = permissionsCollection::getInstance(); | |
− | + | $guest_id = $perm_col->getGuestId(); | |
− | + | $t = 0; | |
− | + | foreach($result as $page){ | |
− | + | $perm_col->setElementPermissions($guest_id, $page['id'], 1); | |
− | + | $t++; | |
− | + | } | |
− | + | return 'Гостю даны права на просмотр ' . $t . ' страниц'; | |
} | } | ||
</source> | </source> |
Текущая версия на 15:40, 6 мая 2014
Актуально для версии 2.9.6
Задача
Если Вы столкнулись с данной задачей, то решить её стандартными средствами нельзя. Необходимо написать кастомный макрос, пример оного дан ниже.
Решение
%custom makePermissions()% — проставляет всем страницам права на просмотр гостю (группа 'все').
Для применения этого макроса скопируйте код макроса в файл /classes/modules/custom.php.
Код макроса
public function makePermissions(){
$result = array();
$pages = new selector('pages');
$pages->option('return')->value('id');
$result = $pages->result();
$perm_col = permissionsCollection::getInstance();
$guest_id = $perm_col->getGuestId();
$t = 0;
foreach($result as $page){
$perm_col->setElementPermissions($guest_id, $page['id'], 1);
$t++;
}
return 'Гостю даны права на просмотр ' . $t . ' страниц';
}
Для вызова макроса перейдите по ссылке вида: http://домен_вашего_сайта/udata://custom/makePermissions