public function process(Vtiger_Request $request) { $viewer = $this->getViewer($request); $moduleName = $request->getModule(); $qualifiedModuleName = $request->getModule(false); $viewer->assign('ALL_MODULES', Settings_SharingAccess_Module_Model::getAll(true)); $viewer->assign('ALL_ACTIONS', Settings_SharingAccess_Action_Model::getAll()); $viewer->assign('MODULE', $moduleName); $viewer->assign('USER_MODEL', Users_Record_Model::getCurrentUserModel()); $viewer->assign('DEPENDENT_MODULES', Settings_SharingAccess_Module_Model::getDependentModules()); $viewer->view('Index.tpl', $qualifiedModuleName); }
public function deleteRule(Vtiger_Request $request) { $forModule = $request->get('for_module'); $ruleId = $request->get('record'); $moduleModel = Settings_SharingAccess_Module_Model::getInstance($forModule); $ruleModel = Settings_SharingAccess_Rule_Model::getInstance($moduleModel, $ruleId); $response = new Vtiger_Response(); $response->setEmitType(Vtiger_Response::$EMIT_JSON); try { $ruleModel->delete(); } catch (AppException $e) { $response->setError('Deleting Sharing Access Rule failed'); } $response->emit(); }
public function process(Vtiger_Request $request) { $modulePermissions = $request->get('permissions'); $modulePermissions[4] = $modulePermissions[6]; foreach ($modulePermissions as $tabId => $permission) { $moduleModel = Settings_SharingAccess_Module_Model::getInstance($tabId); $moduleModel->set('permission', $permission); try { $moduleModel->save(); } catch (AppException $e) { } } Settings_SharingAccess_Module_Model::recalculateSharingRules(); $response = new Vtiger_Response(); $response->setEmitType(Vtiger_Response::$EMIT_JSON); $response->emit(); }
public function editRule(Vtiger_Request $request) { $viewer = $this->getViewer($request); $moduleName = $request->getModule(); $qualifiedModuleName = $request->getModule(false); $forModule = $request->get('for_module'); $ruleId = $request->get('record'); $moduleModel = Settings_SharingAccess_Module_Model::getInstance($forModule); if ($ruleId) { $ruleModel = Settings_SharingAccess_Rule_Model::getInstance($moduleModel, $ruleId); } else { $ruleModel = new Settings_SharingAccess_Rule_Model(); $ruleModel->setModuleFromInstance($moduleModel); } $viewer->assign('ALL_RULE_MEMBERS', Settings_SharingAccess_RuleMember_Model::getAll()); $viewer->assign('ALL_PERMISSIONS', Settings_SharingAccess_Rule_Model::$allPermissions); $viewer->assign('MODULE_MODEL', $moduleModel); $viewer->assign('RULE_MODEL', $ruleModel); $viewer->assign('MODULE', $moduleName); $viewer->assign('QUALIFIED_MODULE', $qualifiedModuleName); $viewer->assign('USER_MODEL', Users_Record_Model::getCurrentUserModel()); echo $viewer->view('EditRule.tpl', $qualifiedModuleName, true); }
/** * Function returns List of Accessible Users for a Module * @param <String> $module * @return <Array of Users_Record_Model> */ public function getAccessibleGroupForModule($module) { $currentUser = Users_Record_Model::getCurrentUserModel(); $curentUserPrivileges = Users_Privileges_Model::getCurrentUserPrivilegesModel(); if ($currentUser->isAdminUser() || $curentUserPrivileges->hasGlobalWritePermission()) { $groups = $this->getAccessibleGroups("", $module); } else { $sharingAccessModel = Settings_SharingAccess_Module_Model::getInstance($module); if ($sharingAccessModel && $sharingAccessModel->isPrivate()) { $groups = $this->getAccessibleGroups('private', $module); } else { $groups = $this->getAccessibleGroups("", $module); } } return $groups; }
/** * Function to get where condition query for dashboards * @param <Integer> $owner * @return <String> query */ public function getOwnerWhereConditionForDashBoards($owner) { $currentUserModel = Users_Record_Model::getCurrentUserModel(); $sharingAccessModel = Settings_SharingAccess_Module_Model::getInstance($this->getName()); $params = array(); if (!empty($owner) && $currentUserModel->isAdminUser()) { //If admin user, then allow users data $ownerSql = ' smownerid = ' . $owner; $params[] = $owner; } else { if (!empty($owner)) { //If not admin user, then check sharing access for that module if ($sharingAccessModel->isPrivate()) { $subordinateUserModels = $currentUserModel->getSubordinateUsers(); $subordinateUsers = array(); foreach ($subordinateUserModels as $id => $name) { $subordinateUsers[] = $id; } if (in_array($owner, $subordinateUsers)) { $ownerSql = ' smownerid = ' . $owner; } else { $ownerSql = ' smownerid = ' . $currentUserModel->getId(); } } else { $ownerSql = ' smownerid = ' . $owner; } } else { //If no owner filter, then check if the module access is Private if ($sharingAccessModel->isPrivate() && !$currentUserModel->isAdminUser()) { $subordinateUserModels = $currentUserModel->getSubordinateUsers(); foreach ($subordinateUserModels as $id => $name) { $subordinateUsers[] = $id; $params[] = $id; } if ($subordinateUsers) { $ownerSql = ' smownerid IN (' . implode(',', $subordinateUsers) . ')'; } else { $ownerSql = ' smownerid = ' . $currentUserModel->getId(); } } } } return $ownerSql; }
/** * Static Function to get the instance of Vtiger Module Model for all the modules * @return <Array> - List of Vtiger Module Model or sub class instances */ public static function getAll($editable = false) { $db = PearDatabase::getInstance(); $moduleModels = array(); $query = 'SELECT * FROM vtiger_def_org_share INNER JOIN vtiger_tab ON vtiger_tab.tabid = vtiger_def_org_share.tabid WHERE vtiger_tab.presence IN (0,2)'; $params = array(); if ($editable) { $query .= ' AND editstatus = ?'; array_push($params, self::EDITABLE); } $result = $db->pquery($query, $params); $noOfModules = $db->num_rows($result); for ($i = 0; $i < $noOfModules; ++$i) { $row = $db->query_result_rowdata($result, $i); $instance = new Settings_SharingAccess_Module_Model(); $instance->initialize($row); $instance->set('permission', $row['permission']); $instance->set('editstatus', $row['editstatus']); $moduleModels[$row['tabid']] = $instance; } return $moduleModels; }
public function delete() { $db = PearDatabase::getInstance(); $ruleId = $this->getId(); $relationTypeComponents = explode('::', $this->get('relationtype')); $sourceType = $relationTypeComponents[0]; $targetType = $relationTypeComponents[1]; $tableColumnInfo = self::$dataShareTableColArr[$sourceType][$targetType]; $tableName = $tableColumnInfo['table']; $db->pquery("DELETE FROM {$tableName} WHERE shareid=?", array($ruleId)); $db->pquery('DELETE FROM vtiger_datashare_module_rel WHERE shareid=?', array($ruleId)); Settings_SharingAccess_Module_Model::recalculateSharingRules(); }
public function delete() { $db = PearDatabase::getInstance(); $ruleId = $this->getId(); $relationTypeComponents = explode('::', $this->get('relationtype')); $sourceType = $relationTypeComponents[0]; $targetType = $relationTypeComponents[1]; $tableColumnInfo = self::$dataShareTableColArr[$sourceType][$targetType]; $tableName = $tableColumnInfo['table']; $db->delete($tableName, 'shareid = ?', [$ruleId]); $db->delete('vtiger_datashare_module_rel', 'shareid = ?', [$ruleId]); Settings_SharingAccess_Module_Model::recalculateSharingRules(); }