示例#1
0
$ari->t->assign("arrIdModulo", $arrIdModulo);
$ari->t->assign("modSelect", $modSelect);
if (!isset($_POST['guardar'])) {
    $ari->t->assign("newName", "");
    $ari->t->assign("newNiceName", "");
} else {
    //verificar datos enviados duplicados
    if (!$sp->Validar()) {
        $ari->error->addError('seguridad_permission', 'SENT_DUPLICATE_DATA');
    }
    $permiso = new seguridad_permission();
    $permiso->set('modulename', $_POST['cboModulo']);
    $permiso->set('name', $_POST['txtName']);
    $permiso->set('nicename', $_POST['txtNiceName']);
    //stores?
    if ($permiso->store()) {
        header("Location: " . $ari->get("adminaddress") . '/seguridad/permission/new');
        exit;
    } else {
        $ari->t->assign("form", true);
        $ari->t->assign("error", true);
        $errores = $ari->error->getErrorsfor("seguridad_permission");
        foreach ($errores as $error) {
            $ari->t->assign($error, true);
        }
        //refrescar template
        $name = OOB_validatetext::inputHTML($_POST['txtName']);
        $ari->t->assign("newName", $name);
        $niceName = OOB_validatetext::inputHTML($_POST['txtNiceName']);
        $ari->t->assign("newNiceName", $niceName);
    }
示例#2
0
 /**	Sincroniza las tablas de permisos y acciones
  */
 public static function synchronizePermissions($arrayModules = false)
 {
     global $ari;
     $clause = "";
     if ($arrayModules) {
         if (!is_array($arrayModules)) {
             //es un solo modulo
             $moduleName = $ari->db->qMagic($arrayModules);
             $clause = " AND origen.modulename = {$moduleName} ";
         } else {
             //es un array con los nombres de los modulos de los permisos a sincronizar
             $first = true;
             $lista = false;
             foreach ($arrayModules as $moduleName) {
                 $moduleName = $ari->db->qMagic($moduleName);
                 if ($first) {
                     $lista = $moduleName;
                     $first = false;
                 } else {
                     $lista = $lista . "," . $moduleName;
                 }
             }
             if ($lista) {
                 $clause = " AND origen.modulename IN ({$lista}) ";
             }
         }
     }
     //consultar los permisos que estan en la tabla security_permission_other
     //pero que no estan en la tabla security_permission
     //ID, ModuleName, Name, NiceName
     $sql = "SELECT origen.* \n\t\t\t\tFROM security_permission_other origen\n\t\t\t\tWHERE 1=1 \n\t\t\t\t{$clause}\n\t\t\t\tAND NOT EXISTS\n\t\t\t\t\t\t\t\t(\tSELECT 1\n\t\t\t\t\t\t\t\t\tFROM security_permission destino\n\t\t\t\t\t\t\t\t\tWHERE destino.name = origen.name \n\t\t\t\t\t\t\t\t\tAND destino.modulename = origen.modulename\n\t\t\t\t\t\t\t\t)\n\t\t\t\t";
     //echo $sql;
     //exit;
     $savem = $ari->db->SetFetchMode(ADODB_FETCH_ASSOC);
     $rs = $ari->db->Execute($sql);
     $ari->db->SetFetchMode($savem);
     if ($rs && !$rs->EOF) {
         while (!$rs->EOF) {
             $permission = new seguridad_permission(ID_UNDEFINED);
             $permission->set("name", $rs->fields["Name"]);
             $permission->set("nicename", $rs->fields["NiceName"]);
             $permission->set("modulename", $rs->fields["ModuleName"]);
             $permission->store();
             $permissionID = $ari->db->qMagic($rs->fields["ID"]);
             //consultar las acciones del permiso actual
             //ID, PermissionID, Name, NiceName, inMenu
             $sql = "SELECT ID, Name, NiceName, InMenu\n\t\t\t\t\t\tFROM security_action_other \n\t\t\t\t\t\tWHERE PermissionID = {$permissionID} \n\t\t\t\t\t   ";
             $savem = $ari->db->SetFetchMode(ADODB_FETCH_ASSOC);
             $rs2 = $ari->db->Execute($sql);
             $ari->db->SetFetchMode($savem);
             if ($rs2 && !$rs2->EOF) {
                 while (!$rs2->EOF) {
                     $action = new seguridad_action(ID_UNDEFINED);
                     $action->set('name', $rs2->fields["Name"]);
                     $action->set('nicename', $rs2->fields["NiceName"]);
                     $action->set('inmenu', $rs2->fields["InMenu"]);
                     $action->set('permission', $permission);
                     $action->store();
                     $rs2->MoveNext();
                 }
                 //end while actions
                 $rs2->Close();
             }
             $rs->MoveNext();
         }
         //end while permissions
         $rs->Close();
     }
 }