Пример #1
0
function applyGroupPermission($smarty, $module_name, $local_templates_dir, &$pDB, $arrConf)
{
    $pGroupPermission = new paloSantoGroupPermission();
    $filter_resource = getParameter("resource_apply");
    $limit = getParameter("limit_apply");
    $offset = getParameter("offset_apply");
    $action_apply = getParameter("action_apply");
    $start_apply = getParameter("start_apply");
    $arrResources = $pGroupPermission->ObtainResources($limit, $offset, $filter_resource);
    //****************************************************************************************************
    // ACTION -> access
    //****************************************************************************************************
    //permisos recursos seleccionados en el grid
    // Array ( [0] => build_module [1] => delete_module [2] => language_admin ...
    $selectedAccess = isset($_POST['groupPermission']) ? array_keys($_POST['groupPermission']) : array();
    $idGroup = getParameter("filter_group");
    $isAdministrator = $idGroup == 1 ? true : false;
    if ($isAdministrator) {
        $selectedAccess[] = "usermgr";
        $selectedAccess[] = "grouplist";
        $selectedAccess[] = "userlist";
        $selectedAccess[] = "group_permission";
    }
    $listaPermisos = OrderResourceGroupPermissions($pGroupPermission->loadResourceGroupPermissions("access", $idGroup));
    $listaPermisosNuevos = array_diff($selectedAccess, $listaPermisos);
    $listaPermisosAusentes = array_diff($listaPermisos, $selectedAccess);
    $listaPermisosNuevosGrupo = array();
    $listaPermisosAusentesGrupo = array();
    foreach ($arrResources as $resource) {
        if (in_array($resource["name"], $listaPermisosNuevos)) {
            $listaPermisosNuevosGrupo[] = $resource["id"];
        }
        if (in_array($resource["name"], $listaPermisosAusentes)) {
            $listaPermisosAusentesGrupo[] = $resource["id"];
        }
    }
    if (count($listaPermisosAusentesGrupo) > 0) {
        $bExito = $pGroupPermission->deleteGroupPermissions("access", $idGroup, $listaPermisosAusentesGrupo);
        if (!$bExito) {
            $msgError = "ERROR";
        }
    }
    if (count($listaPermisosNuevosGrupo) > 0) {
        $bExito = $pGroupPermission->saveGroupPermissions("access", $idGroup, $listaPermisosNuevosGrupo);
        if (!$bExito) {
            $msgError = "ERROR";
        }
    }
    if (!empty($msgError)) {
        $smarty->assign("mb_message", $msgError);
    }
    //TODO: Las acciones de view, delete, create y update no existen en la base de datos en la tabla acl_action (sólo está la acción access), por lo tanto se generaba un error al no existir dichas acciones. Queda para un futuro la implementación de estas acciones.
    //****************************************************************************************************
    // ACTION -> view
    //****************************************************************************************************
    /*
        //permisos recursos seleccionados en el grid
        // Array ( [0] => build_module [1] => delete_module [2] => language_admin ...
        $selectedViews = isset($_POST['viewPermission']) ? array_keys($_POST['viewPermission']) : array();
        if( $isAdministrator ){
            $selectedViews[] = "usermgr";
            $selectedViews[] = "grouplist";
            $selectedViews[] = "userlist";
            $selectedViews[] = "group_permission";
        }
    
        $listaPermisos = OrderResourceGroupPermissions( $pGroupPermission->loadResourceGroupPermissions("view", $idGroup) );
    
        $listaPermisosNuevos = array_diff( $selectedViews, $listaPermisos);
        $listaPermisosAusentes = array_diff( $listaPermisos, $selectedViews);
        $listaPermisosNuevosGrupo = array();
        $listaPermisosAusentesGrupo = array();
    
        foreach($arrResources as $resource) { print_r("<br/>".$resource["name"]);
            if( in_array( $resource["name"], $listaPermisosNuevos) )    $listaPermisosNuevosGrupo[]   = $resource["id"];
            if( in_array( $resource["name"], $listaPermisosAusentes) )  $listaPermisosAusentesGrupo[] = $resource["id"];
        }
    
        if( count($listaPermisosAusentesGrupo) > 0 ){
            $bExito = $pGroupPermission->deleteGroupPermissions("view", $idGroup, $listaPermisosAusentesGrupo);
            if (!$bExito)
                $msgError = "ERROR";
        }
    print_r($listaPermisosNuevosGrupo);
        if( count($listaPermisosNuevosGrupo) > 0 ){
            $bExito = $pGroupPermission->saveGroupPermissions("view", $idGroup, $listaPermisosNuevosGrupo);
            if (!$bExito)
                $msgError = "ERROR";
        }
        if (!empty($msgError))
                $smarty->assign("mb_message", $msgError);
    
        //****************************************************************************************************
        // ACTION -> create
        //****************************************************************************************************
    
        //permisos recursos seleccionados en el grid
        // Array ( [0] => build_module [1] => delete_module [2] => language_admin ...
        $selectedCreates = isset($_POST['createPermission']) ? array_keys($_POST['createPermission']) : array();
    
        if( $isAdministrator ){
            $selectedCreates[] = "usermgr";
            $selectedCreates[] = "grouplist";
            $selectedCreates[] = "userlist";
            $selectedCreates[] = "group_permission";
        }
    
        $listaPermisos = OrderResourceGroupPermissions( $pGroupPermission->loadResourceGroupPermissions("create", $idGroup) );
    
        $listaPermisosNuevos = array_diff( $selectedCreates, $listaPermisos);
        $listaPermisosAusentes = array_diff( $listaPermisos, $selectedCreates);
        $listaPermisosNuevosGrupo = array();
        $listaPermisosAusentesGrupo = array();
    
        foreach($arrResources as $resource) {
            if( in_array( $resource["name"], $listaPermisosNuevos) )    $listaPermisosNuevosGrupo[]   = $resource["id"];
            if( in_array( $resource["name"], $listaPermisosAusentes) )  $listaPermisosAusentesGrupo[] = $resource["id"];
        }
    
        if( count($listaPermisosAusentesGrupo) > 0 ){
            $bExito = $pGroupPermission->deleteGroupPermissions("create", $idGroup, $listaPermisosAusentesGrupo);
            if (!$bExito)
                $msgError = "ERROR";
        }
    
        if( count($listaPermisosNuevosGrupo) > 0 ){
            $bExito = $pGroupPermission->saveGroupPermissions("create", $idGroup, $listaPermisosNuevosGrupo);
            if (!$bExito)
                $msgError = "ERROR";
        }
        if (!empty($msgError))
                $smarty->assign("mb_message", $msgError);
    
        //****************************************************************************************************
        // ACTION -> delete
        //****************************************************************************************************
    
        $selectedDeletes = isset($_POST['deletePermission']) ? array_keys($_POST['deletePermission']) : array();
    
        if( $isAdministrator ){
            $selectedDeletes[] = "usermgr";
            $selectedDeletes[] = "grouplist";
            $selectedDeletes[] = "userlist";
            $selectedDeletes[] = "group_permission";
        }
    
        $listaPermisos = OrderResourceGroupPermissions( $pGroupPermission->loadResourceGroupPermissions("delete", $idGroup) );
    
        $listaPermisosNuevos = array_diff( $selectedDeletes, $listaPermisos);
        $listaPermisosAusentes = array_diff( $listaPermisos, $selectedDeletes);
        $listaPermisosNuevosGrupo = array();
        $listaPermisosAusentesGrupo = array();
    
        foreach($arrResources as $resource) {
            if( in_array( $resource["name"], $listaPermisosNuevos) )    $listaPermisosNuevosGrupo[]   = $resource["id"];
            if( in_array( $resource["name"], $listaPermisosAusentes) )  $listaPermisosAusentesGrupo[] = $resource["id"];
        }
    
        if( count($listaPermisosAusentesGrupo) > 0 ){
            $bExito = $pGroupPermission->deleteGroupPermissions("delete", $idGroup, $listaPermisosAusentesGrupo);
            if (!$bExito)
                $msgError = "ERROR";
        }
    
        if( count($listaPermisosNuevosGrupo) > 0 ){
            $bExito = $pGroupPermission->saveGroupPermissions("delete", $idGroup, $listaPermisosNuevosGrupo);
            if (!$bExito)
                $msgError = "ERROR";
        }
        if (!empty($msgError))
                $smarty->assign("mb_message", $msgError);
    
        //****************************************************************************************************
        // ACTION -> update
        //****************************************************************************************************
    
        $selectedUpdates = isset($_POST['updatePermission']) ? array_keys($_POST['updatePermission']) : array();
    
        if( $isAdministrator ){
            $selectedUpdates[] = "usermgr";
            $selectedUpdates[] = "grouplist";
            $selectedUpdates[] = "userlist";
            $selectedUpdates[] = "group_permission";
        }
    
        $listaPermisos = OrderResourceGroupPermissions( $pGroupPermission->loadResourceGroupPermissions("update", $idGroup) );
    
        $listaPermisosNuevos = array_diff( $selectedUpdates, $listaPermisos);
        $listaPermisosAusentes = array_diff( $listaPermisos, $selectedUpdates);
        $listaPermisosNuevosGrupo = array();
        $listaPermisosAusentesGrupo = array();
    
        foreach($arrResources as $resource) {
            if( in_array( $resource["name"], $listaPermisosNuevos) )    $listaPermisosNuevosGrupo[]   = $resource["id"];
            if( in_array( $resource["name"], $listaPermisosAusentes) )  $listaPermisosAusentesGrupo[] = $resource["id"];
        }
    
        if( count($listaPermisosAusentesGrupo) > 0 ){
            $bExito = $pGroupPermission->deleteGroupPermissions("update", $idGroup, $listaPermisosAusentesGrupo);
            if (!$bExito)
                $msgError = "ERROR";
        }
    
        if( count($listaPermisosNuevosGrupo) > 0 ){
            $bExito = $pGroupPermission->saveGroupPermissions("update", $idGroup, $listaPermisosNuevosGrupo);
            if (!$bExito)
                $msgError = "ERROR";
        }
        if (!empty($msgError))
                $smarty->assign("mb_message", $msgError);*/
    //borra los menus q tiene de permisos que estan guardados en la session, el index.php principal (html) volvera a generar esta arreglo de permisos.
    unset($_SESSION['elastix_user_permission']);
    return reportGroupPermission($smarty, $module_name, $local_templates_dir, $pDB, $arrConf, true, $action_apply, $start_apply);
}