diff --git a/modules/Calendar/actions/ActivityReminder.php b/modules/Calendar/actions/ActivityReminder.php index 50597bfdcc57f6e23469ac156f36ab52963af078..b32e026552b6046a8180187fdf2140a506341565 100644 --- a/modules/Calendar/actions/ActivityReminder.php +++ b/modules/Calendar/actions/ActivityReminder.php @@ -15,16 +15,27 @@ class Calendar_ActivityReminder_Action extends Vtiger_Action_Controller{ $this->exposeMethod('postpone'); } - public function checkPermission(Vtiger_Request $request) { - $moduleName = $request->getModule(); - $moduleModel = Vtiger_Module_Model::getInstance($moduleName); + public function requiresPermission(Vtiger_Request $request){ + $mode = $request->getMode(); + if(!empty($mode)) { + switch ($mode) { + case 'getReminders': + $permission[] = array('module_parameter' => 'module', 'action' => 'DetailView'); + break; - $userPrivilegesModel = Users_Privileges_Model::getCurrentUserPrivilegesModel(); - $permission = $userPrivilegesModel->hasModulePermission($moduleModel->getId()); + case 'postpone': + $permission[] = array('module_parameter' => 'module', 'action' => 'EditView', 'record_parameter' => 'record'); + break; - if(!$permission) { - throw new AppException(vtranslate('LBL_PERMISSION_DENIED')); + default: + break; + } } + return $permission; + } + + public function checkPermission(Vtiger_Request $request) { + parent::checkPermission($request); } public function process(Vtiger_Request $request) { @@ -49,9 +60,9 @@ class Calendar_ActivityReminder_Action extends Vtiger_Action_Controller{ } function postpone(Vtiger_Request $request) { - $recordId = $request->get('record'); - $module = $request->getModule(); - $recordModel = Vtiger_Record_Model::getInstanceById($recordId, $module); - $recordModel->updateReminderStatus(0); + $recordId = $request->get('record'); + $module = $request->getModule(); + $recordModel = Vtiger_Record_Model::getInstanceById($recordId, $module); + $recordModel->updateReminderStatus(0); + } } -} \ No newline at end of file diff --git a/modules/Calendar/actions/CalendarActions.php b/modules/Calendar/actions/CalendarActions.php index d5029ea9d07528c69c4aebf30d1b133af1da38cd..7256e8b644ffc3de0fb97d694fc9997e0b873e5b 100644 --- a/modules/Calendar/actions/CalendarActions.php +++ b/modules/Calendar/actions/CalendarActions.php @@ -13,7 +13,25 @@ class Calendar_CalendarActions_Action extends Vtiger_BasicAjax_Action { function __construct() { $this->exposeMethod('fetchAgendaViewEventDetails'); } - + + public function requiresPermission(Vtiger_Request $request){ + $mode = $request->getMode(); + if(!empty($mode)) { + switch ($mode) { + case 'fetchAgendaViewEventDetails': + $permission[] = array('module_parameter' => 'module', 'action' => 'DetailView', 'record_parameter' => 'id'); + break; + default: + break; + } + } + return $permission; + } + + public function checkPermission(Vtiger_Request $request) { + parent::checkPermission($request); + } + public function process(Vtiger_Request $request) { $mode = $request->getMode(); if (!empty($mode) && $this->isMethodExposed($mode)) { @@ -23,29 +41,29 @@ class Calendar_CalendarActions_Action extends Vtiger_BasicAjax_Action { } public function fetchAgendaViewEventDetails(Vtiger_Request $request) { - $result = array(); - $eventId = $request->get('id'); - $moduleName = $request->getModule(); - $moduleModel = Vtiger_Module_Model::getInstance('Events'); - $recordModel = Events_Record_Model::getInstanceById($eventId); + $result = array(); + $eventId = $request->get('id'); + $moduleName = $request->getModule(); + $moduleModel = Vtiger_Module_Model::getInstance('Events'); + $recordModel = Events_Record_Model::getInstanceById($eventId); - $result[vtranslate('Assigned To')] = getUserFullName($recordModel->get('assigned_user_id')); - if ($recordModel->get('priority')) { - $result[vtranslate('Priority', $moduleName)] = $recordModel->get('priority'); - } - if ($recordModel->get('location')) { - $result[vtranslate('Location', $moduleName)] = $recordModel->get('location'); - } - if ($recordModel->get('contact_id')) { - $contact_id = Vtiger_Field_Model::getInstance('contact_id', $moduleModel); - $result[vtranslate($contact_id->get('label'), $moduleName)] = $contact_id->getDisplayValue($recordModel->get('contact_id')); - } - if ($recordModel->get('parent_id')) { - $parent_id = Vtiger_Field_Model::getInstance('parent_id', $moduleModel); - $result[vtranslate($parent_id->get('label'), $moduleName)] = $parent_id->getDisplayValue($recordModel->get('parent_id')); - } + $result[vtranslate('Assigned To')] = getUserFullName($recordModel->get('assigned_user_id')); + if ($recordModel->get('priority')) { + $result[vtranslate('Priority', $moduleName)] = $recordModel->get('priority'); + } + if ($recordModel->get('location')) { + $result[vtranslate('Location', $moduleName)] = $recordModel->get('location'); + } + if ($recordModel->get('contact_id')) { + $contact_id = Vtiger_Field_Model::getInstance('contact_id', $moduleModel); + $result[vtranslate($contact_id->get('label'), $moduleName)] = $contact_id->getDisplayValue($recordModel->get('contact_id')); + } + if ($recordModel->get('parent_id')) { + $parent_id = Vtiger_Field_Model::getInstance('parent_id', $moduleModel); + $result[vtranslate($parent_id->get('label'), $moduleName)] = $parent_id->getDisplayValue($recordModel->get('parent_id')); + } $response = new Vtiger_Response(); - $response->setResult($result); + $response->setResult($result); $response->emit(); } diff --git a/modules/Calendar/actions/CalendarUserActions.php b/modules/Calendar/actions/CalendarUserActions.php index 2bb40e47d8e63b63d4990876d9cbdbfb0fbb4278..41744c24e28557e44efc598e03fe91eef1bf5888 100755 --- a/modules/Calendar/actions/CalendarUserActions.php +++ b/modules/Calendar/actions/CalendarUserActions.php @@ -18,13 +18,31 @@ class Calendar_CalendarUserActions_Action extends Vtiger_Action_Controller{ $this->exposeMethod('checkDuplicateView'); } - public function checkPermission(Vtiger_Request $request) { - $moduleName = $request->getModule(); - $record = $request->get('record'); - - if(!Users_Privileges_Model::isPermitted($moduleName, 'View', $record)) { - throw new AppException(vtranslate('LBL_PERMISSION_DENIED')); + public function requiresPermission(Vtiger_Request $request){ + $mode = $request->getMode(); + if(!empty($mode)) { + switch ($mode) { + case 'deleteUserCalendar': + $permission[] = array('module_parameter' => 'module', 'action' => 'EditView'); + break; + case 'deleteCalendarView': + $permission[] = array('module_parameter' => 'module', 'action' => 'EditView'); + $permission[] = array('module_parameter' => 'module', 'action' => 'Delete'); + break; + case 'addUserCalendar': + case 'addCalendarView': + $permission[] = array('module_parameter' => 'module', 'action' => 'EditView'); + $permission[] = array('module_parameter' => 'module', 'action' => 'CreateView'); + break; + default: + break; + } } + return $permission; + } + + public function checkPermission(Vtiger_Request $request) { + parent::checkPermission($request); } public function process(Vtiger_Request $request) { @@ -44,7 +62,7 @@ class Calendar_CalendarUserActions_Action extends Vtiger_Action_Controller{ $currentUser = Users_Record_Model::getCurrentUserModel(); $userId = $currentUser->getId(); $sharedUserId = $request->get('userid'); - + $db = PearDatabase::getInstance(); $result = $db->pquery('SELECT 1 FROM vtiger_shareduserinfo WHERE userid=? AND shareduserid=?', array($userId, $sharedUserId)); if($db->num_rows($result) > 0) { @@ -52,7 +70,7 @@ class Calendar_CalendarUserActions_Action extends Vtiger_Action_Controller{ } else { $db->pquery('INSERT INTO vtiger_shareduserinfo (userid, shareduserid, visible) VALUES(?, ?, ?)', array($userId, $sharedUserId, '0')); } - + $userName = getUserFullName($sharedUserId); if(!$userName) { $userName = Vtiger_Functions::getGroupRecordLabel($sharedUserId); @@ -73,19 +91,19 @@ class Calendar_CalendarUserActions_Action extends Vtiger_Action_Controller{ $userId = $currentUser->getId(); $sharedUserId = $request->get('selectedUser'); $color = $request->get('selectedColor'); - + $db = PearDatabase::getInstance(); - + $queryResult = $db->pquery('SELECT 1 FROM vtiger_shareduserinfo WHERE userid=? AND shareduserid=?', array($userId, $sharedUserId)); - + if($db->num_rows($queryResult) > 0) { $db->pquery('UPDATE vtiger_shareduserinfo SET color=?, visible=? WHERE userid=? AND shareduserid=?', array($color, '1', $userId, $sharedUserId)); } else { $db->pquery('INSERT INTO vtiger_shareduserinfo (userid, shareduserid, color, visible) VALUES(?, ?, ?, ?)', array($userId, $sharedUserId, $color, '1')); } - + $response = new Vtiger_Response(); - $response->setResult(array('success' => true)); + $response->setResult(array('success' => true)); $response->emit(); } @@ -114,7 +132,7 @@ class Calendar_CalendarUserActions_Action extends Vtiger_Action_Controller{ */ function deleteCalendarView(Vtiger_Request $request) { Calendar_Module_Model::deleteCalendarView($request); - + $result = array('viewmodule' => $request->get('viewmodule'), 'viewfieldname' => $request->get('viewfieldname'), 'viewfieldlabel' => $request->get('viewfieldlabel')); $response = new Vtiger_Response(); $response->setResult($result); @@ -127,8 +145,8 @@ class Calendar_CalendarUserActions_Action extends Vtiger_Action_Controller{ * @return Vtiger_Response $response */ function addCalendarView(Vtiger_Request $request) { - $type = Calendar_Module_Model::addCalendarView($request); - + $type = Calendar_Module_Model::addCalendarView($request); + $response = new Vtiger_Response(); $response->setResult(array('success' => true, 'type' => $type)); $response->emit();