You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

62 lines
1.7 KiB

<?php
// (c) Copyright by authors of the Tiki Wiki CMS Groupware Project
//
// All Rights Reserved. See copyright.txt for details and a complete list of authors.
// Licensed under the GNU LESSER GENERAL PUBLIC LICENSE. See license.txt for details.
// $Id$
/**
* Smarty plugin
* @package Smarty
* @subpackage plugins
*
*/
function smarty_block_permission($params, $content, $smarty, &$repeat)
{
if ($repeat) {
return;
}
// Removing and Modifying a tracker item require a special permissions check
if (! empty($params['type']) && $params['type'] == 'trackeritem') {
$removePerms = ['remove_tracker_items','remove_tracker_items_pending','remove_tracker_items_closed'];
$modifyPerms = ['modify_tracker_items','modify_tracker_items_pending','modify_tracker_items_closed'];
$trklib = TikiLib::lib('trk');
$itemInfo = $trklib->get_tracker_item($params['object']);
if (! $itemInfo) {
return ""; //invalid tracker item.
}
$itemObject = Tracker_Item::fromInfo($itemInfo);
if (in_array($params['name'], $removePerms)) {
if ($itemObject->canRemove()) {
return $content;
}
} elseif (in_array($params['name'], $modifyPerms)) {
if ($itemObject->canModify()) {
return $content;
}
}
}
//Standard permissions check
$context = [];
if (isset($params['type'], $params['object'])) {
$context['type'] = $params['type'];
$context['object'] = $params['object'];
}
$perms = Perms::get($context);
$name = $params['name'];
if ($perms->$name) {
return $content;
} else {
return '';
}
}