$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); }
/** 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(); } }