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

Материал из Umicms
Перейти к:навигация, поиск
(Новая страница: «'''Актуально для версии 2.9.6''' == Задача == Если Вы столкнулись с данной задачей, то решить её …»)
 
 
Строка 17: Строка 17:
 
         $result = array();
 
         $result = array();
 
         $pages = new selector('pages');
 
         $pages = new selector('pages');
$pages->option('return')->value('id');
+
$pages->option('return')->value('id');
$result = $pages->result();
+
$result = $pages->result();
  
$perm_col = permissionsCollection::getInstance();
+
$perm_col = permissionsCollection::getInstance();
$guest_id = $perm_col->getGuestId();
+
$guest_id = $perm_col->getGuestId();
$t = 0;
+
$t = 0;
  
foreach($result as $page){
+
foreach($result as $page){
$perm_col->setElementPermissions($guest_id, $page['id'], 1);
+
$perm_col->setElementPermissions($guest_id, $page['id'], 1);
$t++;
+
$t++;
}
+
}
return 'Гостю даны права на просмотр ' . $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