function applyOrgPermission($smarty, $module_name, $local_templates_dir, &$pDB, $arrConf, $arrCredentiasls) { $pACL = new paloACL($pDB); $pORGZ = new paloSantoOrganization($pDB); $arrGroups = array(); $arrOrgz = array(); $idOrgFil = getParameter("idOrganization"); $filter_resource = getParameter("resource_apply"); $error = false; $orgTmp = $pORGZ->getOrganizationById($idOrgFil); //valido exista una organizacion con dicho id if ($orgTmp === false) { $error = true; $msg_error = _tr($pORGZ->errMsg); } elseif (count($orgTmp) == 0) { $error = true; $msg_error = _tr("Organization doesn't exist"); } if ($idOrgFil == 1) { $error = true; $msg_error = _tr("Invalid Organization"); } //obtenemos las traducciones del parametro filtrado $filter_resource = htmlentities($filter_resource); $lang = get_language(); //lenguage que esta siendo usado $parameter_to_find = null; if (isset($filter_resource)) { if (trim($filter_resource) != "") { if ($lang != "en") { global $arrLang; $filter_value = strtolower(trim($filter_resource)); $parameter_to_find[] = $filter_value; //parametro de busqueda sin traduccion foreach ($arrLang as $key => $value) { $langValue = strtolower(trim($value)); if (preg_match("/^[[:alnum:]| ]*\$/", $filter_value)) { if (strpos($langValue, $filter_value) !== FALSE) { $parameter_to_find[] = $key; } } } } else { $parameter_to_find[] = $filter_resource; } } } if (isset($filter_resource)) { $parameter_to_find[] = $filter_resource; } else { $parameter_to_find = null; } $pACL->_DB->beginTransaction(); if (!$error) { $oGrid = new paloSantoGrid($smarty); $total = $pACL->getNumResources($parameter_to_find); $limit = 25; $oGrid->setLimit($limit); $oGrid->setTotal($total); $offset = $oGrid->calculateOffset(); $tmpResource = $pACL->getListResources($limit, $offset, $parameter_to_find, 'yes'); //todos los recursos $tmpResourceOrg = $pACL->getResourcesByOrg($idOrgFil, $parameter_to_find); //los recuros a los que tiene permiso actualmente la organizacion if ($tmpResourceOrg === false || $tmpResource === false) { $error = true; $msg_error = $msg_error . "" . _tr($pACL->errMsg); } else { $arrPermissionAct = array(); //los recursos seleccionados a los que se le va a dar acceso $selectedResource = isset($_POST['resource']) ? array_keys($_POST['resource']) : array(); //validamos que los recursos seleccionados realmente existan foreach ($tmpResourceOrg as $value) { $arrPermissionAct[] = $value["id"]; } $selectedResource[] = 'usermgr'; $selectedResource[] = 'grouplist'; $selectedResource[] = 'userlist'; $selectedResource[] = 'group_permission'; $selectedResource[] = 'organization'; //hacemos una lista de los permisos que debemos eliminar y de los que debemos añadir $saveAcc = array_diff($selectedResource, $arrPermissionAct); //permisos que debemos añadir $delAcc = array_diff($arrPermissionAct, $selectedResource); //permisos que debemos eliminar $arrSave = array(); $arrDelete = array(); $arrSelected = array(); //nos aseguramos que los recursos existan y cogemos los que se visualizan en el modulo al dar click en save foreach ($tmpResource as $resource) { if (in_array($resource["id"], $saveAcc)) { $arrSave[] = $resource["id"]; } if (in_array($resource["id"], $delAcc)) { $arrDelete[] = $resource["id"]; } if (in_array($resource["id"], $selectedResource)) { $arrSelected[] = $resource["id"]; } } if (!$pACL->saveOrgPermission($idOrgFil, $arrSave) || !$pACL->deleteOrgPermissions($idOrgFil, $arrDelete)) { $error = true; $msg_error = _tr($pACL->errMsg); } } } //verificamos si todo salio bien if ($error) { $pACL->_DB->rollBAck(); $smarty->assign("mb_title", _tr("ERROR")); $smarty->assign("mb_message", _tr("Error saving changes.") . " " . $msg_error); } else { $pACL->_DB->commit(); $smarty->assign("mb_title", _tr("MESSAGE")); $smarty->assign("mb_message", _tr("Changes were applied successfully")); } unset($_SESSION['elastix_user_permission']); return reportOrgPermission($smarty, $module_name, $local_templates_dir, $pDB, $arrConf, $arrCredentiasls); }