From 10d11e6fdca683daf9bb41d8d2c81610da1d6d2d Mon Sep 17 00:00:00 2001 From: nuxsmin Date: Mon, 4 Nov 2013 02:27:41 +0100 Subject: [PATCH] Fix message text on deleting accounts/users/groups/profiles. Fix error on retrieving profile data while closing session. Give focus to "inputs" after loading content. Update translations. --- CHANGELOG | 14 +++++ ajax/ajax_accountsave.php | 4 +- ajax/ajax_backup.php | 2 - ajax/ajax_categorymgmt.php | 4 +- ajax/ajax_configsave.php | 4 +- ajax/ajax_getFiles.php | 2 - ajax/ajax_getcontent.php | 30 ++++++----- ajax/ajax_migrate.php | 2 +- ajax/ajax_search.php | 7 ++- ajax/ajax_usersMgmt.php | 1 - ajax/ajax_usersSave.php | 52 ++++++++++-------- ajax/ajax_usrpass.php | 10 +--- inc/account.class.php | 7 ++- inc/config.class.php | 4 +- inc/locales/en_US/LC_MESSAGES/messages.mo | Bin 37382 -> 37299 bytes inc/tpl/accounts.php | 1 + inc/tpl/editpass.php | 3 +- inc/tpl/profiles.php | 8 +-- inc/tpl/search.php | 1 + inc/users.class.php | 62 +++++++++++++++++++++- inc/util.class.php | 3 +- js/functions.js | 5 +- 22 files changed, 155 insertions(+), 71 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 23aad2bb..682476e7 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,10 @@ +=== ** v1.0.1 ** === + +* [BUG] Corregido mensaje al eliminar cuentas/usuarios/grupos/perfiles. +* [BUG] Corregido fallo al obtener el perfil de usuario tras finalizar la sesión. +* [MOD] Dar el foco a los "inputs" tras cargar el contenido. +* [MOD] Revisión de traducción. + === ** v1.0 ** === * [NUEVO] Se muestran los grupos secundarios en el menú contextual de los resultados de búsqueda. @@ -126,6 +133,13 @@ --- +=== ** v1.0.1 ** === + +* [BUG] Fix message text on deleting accounts/users/groups/profiles. +* [BUG] Fix error on retrieving profile data while closing session. +* [MOD] Give focus to "inputs" after loading content. +* [MOD] Update translations. + === ** v1.0 ** === * [NEW] Secondary groups are shown on search results context menu. diff --git a/ajax/ajax_accountsave.php b/ajax/ajax_accountsave.php index 55ed56a0..2d34d268 100644 --- a/ajax/ajax_accountsave.php +++ b/ajax/ajax_accountsave.php @@ -105,7 +105,7 @@ if ($frmSaveType == 1) { SP_Common::printXML(_('Las claves no coinciden')); } } else { - $SP_Common::printXML(_('No es una acción válida')); + $SP_Common::printXML(_('Acción Inválida')); } if ($frmSaveType == 1 || $frmSaveType == 4) { @@ -228,5 +228,5 @@ switch ($frmSaveType) { SP_Common::printXML(_('Error al actualizar la clave')); break; default: - SP_Common::printXML(_('No es una acción válida')); + SP_Common::printXML(_('Acción Inválida')); } \ No newline at end of file diff --git a/ajax/ajax_backup.php b/ajax/ajax_backup.php index 20aba89e..b6698419 100644 --- a/ajax/ajax_backup.php +++ b/ajax/ajax_backup.php @@ -38,8 +38,6 @@ if (!$sk || !SP_Common::checkSessionKey($sk)) { SP_Common::printXML(_('CONSULTA INVÁLIDA')); } -SP_Users::checkUserAccess("backup") || die ('
'._('No tiene permisos para acceder a esta página').''._('No tiene permisos para acceder a esta página').'' . _('Gestión de Perfiles') . '' : ''; echo ''; - $tplvars['active'] = 0; + $tplvars['active'] = 0; if (SP_Users::checkUserAccess("users")) { $arrUsersTableProp = array( @@ -191,13 +191,14 @@ switch ($action) { } echo '
'; - + echo ''; break; @@ -255,13 +256,16 @@ switch ($action) { echo ''; - echo ''; + '; break; case "eventlog": SP_Users::checkUserAccess($action) || SP_Html::showCommonError('unavailable'); diff --git a/ajax/ajax_migrate.php b/ajax/ajax_migrate.php index 8773cfaf..49d32e1f 100644 --- a/ajax/ajax_migrate.php +++ b/ajax/ajax_migrate.php @@ -1 +1 @@ -. * */ define('APP_ROOT', '..'); include_once (APP_ROOT . "/inc/init.php"); SP_Util::checkReferer('POST'); if (!SP_Init::isLoggedIn()) { SP_Common::printXML(_('La sesión no se ha iniciado o ha caducado'), 10); } if (SP_Config::getValue('demoenabled', 0)) { SP_Common::printXML(_('Opción inválida')); } $sk = SP_Common::parseParams('p', 'sk', FALSE); if (!$sk || !SP_Common::checkSessionKey($sk)) { SP_Common::printXML(_('CONSULTA INVÁLIDA')); } $frmDBUser = SP_Common::parseParams('p', 'dbuser'); $frmDBPass = SP_Common::parseParams('p', 'dbpass'); $frmDBName = SP_Common::parseParams('p', 'dbname'); $frmDBHost = SP_Common::parseParams('p', 'dbhost'); $frmMigrateEnabled = SP_Common::parseParams('p', 'chkmigrate', 0, FALSE, 1); if (!$frmMigrateEnabled) { SP_Common::printXML(_('Confirmar la importación de cuentas')); } if (!$frmDBUser) { SP_Common::printXML(_('Es necesario un usuario de conexión')); } if (!$frmDBPass) { SP_Common::printXML(_('Es necesaria una clave de conexión')); } if (!$frmDBName) { SP_Common::printXML(_('Es necesario el nombre de la BBDD')); } if (!$frmDBHost) { SP_Common::printXML(_('Es necesario un nombre de host')); } $options['dbhost'] = $frmDBHost; $options['dbname'] = $frmDBName; $options['dbuser'] = $frmDBUser; $options['dbpass'] = $frmDBPass; $res = SP_Migrate::migrate($options); if (is_array($res['error'])) { foreach ($res['error'] as $error) { $errors [] = $error['description']; $errors [] = $error['hint']; error_log($error['hint']); } $out = implode('
', $errors); SP_Common::printXML($out); } else if (is_array($res['ok'])) { $out = implode('
', $res['ok']); SP_Common::printXML($out, 0); } \ No newline at end of file +. * */ define('APP_ROOT', '..'); include_once (APP_ROOT . "/inc/init.php"); SP_Util::checkReferer('POST'); if (!SP_Init::isLoggedIn()) { SP_Common::printXML(_('La sesión no se ha iniciado o ha caducado'), 10); } if (SP_Config::getValue('demoenabled', 0)) { SP_Common::printXML(_('Acción Inválida').'(DEMO)'); } $sk = SP_Common::parseParams('p', 'sk', FALSE); if (!$sk || !SP_Common::checkSessionKey($sk)) { SP_Common::printXML(_('CONSULTA INVÁLIDA')); } $frmDBUser = SP_Common::parseParams('p', 'dbuser'); $frmDBPass = SP_Common::parseParams('p', 'dbpass'); $frmDBName = SP_Common::parseParams('p', 'dbname'); $frmDBHost = SP_Common::parseParams('p', 'dbhost'); $frmMigrateEnabled = SP_Common::parseParams('p', 'chkmigrate', 0, FALSE, 1); if (!$frmMigrateEnabled) { SP_Common::printXML(_('Confirmar la importación de cuentas')); } if (!$frmDBUser) { SP_Common::printXML(_('Es necesario un usuario de conexión')); } if (!$frmDBPass) { SP_Common::printXML(_('Es necesaria una clave de conexión')); } if (!$frmDBName) { SP_Common::printXML(_('Es necesario el nombre de la BBDD')); } if (!$frmDBHost) { SP_Common::printXML(_('Es necesario un nombre de host')); } $options['dbhost'] = $frmDBHost; $options['dbname'] = $frmDBName; $options['dbuser'] = $frmDBUser; $options['dbpass'] = $frmDBPass; $res = SP_Migrate::migrate($options); if (is_array($res['error'])) { foreach ($res['error'] as $error) { $errors [] = $error['description']; $errors [] = $error['hint']; error_log($error['hint']); } $out = implode('
', $errors); SP_Common::printXML($out); } else if (is_array($res['ok'])) { $out = implode('
', $res['ok']); SP_Common::printXML($out, 0); } \ No newline at end of file diff --git a/ajax/ajax_search.php b/ajax/ajax_search.php index 198fcb4a..58abcafd 100644 --- a/ajax/ajax_search.php +++ b/ajax/ajax_search.php @@ -184,7 +184,12 @@ foreach ( $resQuery as $account ){ echo'
  • '; $groupsName = _('Grupos').':

    *'.$account->usergroup_name.'
    '; - $groupsName .= implode('
    ', SP_Account::getAccountGroupsName($account->account_id)); + + $secondaryGroups = SP_Account::getAccountGroupsName($account->account_id); + + if ( $secondaryGroups ){ + $groupsName .= implode('
    ', $secondaryGroups); + } echo ''; diff --git a/ajax/ajax_usersMgmt.php b/ajax/ajax_usersMgmt.php index 2a5f1b65..546d7057 100644 --- a/ajax/ajax_usersMgmt.php +++ b/ajax/ajax_usersMgmt.php @@ -32,7 +32,6 @@ if (!SP_Init::isLoggedIn()) { SP_Util::logout(); } - if ( SP_Common::parseParams('p', 'id', FALSE, TRUE) && SP_Common::parseParams('p', 'type', FALSE, TRUE) ) { $tplvars['itemid'] = SP_Common::parseParams('p', 'id', 0); $itemType = $tplvars['itemtype'] = SP_Common::parseParams('p', 'type', 0); diff --git a/ajax/ajax_usersSave.php b/ajax/ajax_usersSave.php index 97edc3f1..48a16464 100644 --- a/ajax/ajax_usersSave.php +++ b/ajax/ajax_usersSave.php @@ -44,12 +44,6 @@ $frmSaveType = SP_Common::parseParams('p', 'type', 0); $frmAction = SP_Common::parseParams('p', 'action', 0); $frmItemId = SP_Common::parseParams('p', 'id', 0); -if ($frmAction == 3) { - SP_Users::checkUserAccess("acceditpass", $frmItemId) || die('
    getUserLoginById($frmItemId); + + if ( SP_Config::getValue('demoenabled', 0) && $userLogin == 'demo'){ + SP_Common::printXML(_('Acción Inválida').'(DEMO)'); + } + if (!$frmUsrPass || !$frmUsrPassV) { SP_Common::printXML(_('La clave no puede estar en blanco'), 2); } @@ -158,7 +158,7 @@ if ($frmSaveType == 1 || $frmSaveType == 2) { if ($objUser->manageUser("updatepass")) { $message['action'] = _('Modificar Clave Usuario'); - $message['text'][] = _('Nombre') . ': ' . $frmUsrName . ' (' . $frmUsrLogin . ')'; + $message['text'][] = _('Login') . ': ' . $userLogin; SP_Common::wrLogInfo($message); SP_Common::sendEmail($message); @@ -168,8 +168,14 @@ if ($frmSaveType == 1 || $frmSaveType == 2) { SP_Common::printXML(_('Error al modificar la clave')); // Eliminar usuario - } elseif ($frmAction == 4 && !SP_Config::getValue('demoenabled', 0)) { + } elseif ($frmAction == 4) { + $userLogin = $objUser->getUserLoginById($frmItemId); + + if ( SP_Config::getValue('demoenabled', 0) && $userLogin == 'demo' ){ + SP_Common::printXML(_('Acción Inválida').'(DEMO)'); + } + $objUser->userId = $frmItemId; if ($frmItemId == $_SESSION["uid"]) { @@ -178,7 +184,7 @@ if ($frmSaveType == 1 || $frmSaveType == 2) { if ($objUser->manageUser("delete")) { $message['action'] = _('Eliminar Usuario'); - $message['text'][] = _('Login') . ': ' . $frmUsrName . ' (' . $frmUsrLogin . ')'; + $message['text'][] = _('Login') . ': ' . $userLogin; SP_Common::wrLogInfo($message); SP_Common::sendEmail($message); @@ -189,11 +195,11 @@ if ($frmSaveType == 1 || $frmSaveType == 2) { SP_Common::printXML(_('Error al eliminar el usuario')); } - SP_Common::printXML(_('No es una acción válida')); + SP_Common::printXML(_('Acción Inválida')); } elseif ($frmSaveType == 3 || $frmSaveType == 4) { // Variables POST del formulario - $frmGrpName = ( isset($_POST["name"]) ) ? SP_Html::sanitize($_POST["name"]) : ""; - $frmGrpDesc = ( isset($_POST["description"]) ) ? SP_Html::sanitize($_POST["description"]) : ""; + $frmGrpName = SP_Common::parseParams('p', 'name'); + $frmGrpDesc = SP_Common::parseParams('p', 'description'); // Nuevo grupo o editar if ($frmAction == 1 OR $frmAction == 2) { @@ -235,7 +241,7 @@ if ($frmSaveType == 1 || $frmSaveType == 2) { SP_Common::printXML(_('Error al actualizar el grupo')); } - // Eliminar grupo + // Eliminar grupo } elseif ($frmAction == 4) { $objUser->groupId = $frmItemId; @@ -244,9 +250,11 @@ if ($frmSaveType == 1 || $frmSaveType == 2) { if (is_string($resGroupUse)) { SP_Common::printXML(_('No es posible eliminar:Grupo en uso por') . ' ' . $resGroupUse); } else { + $groupName = $objUser->getGroupNameById($frmItemId); + if ($objUser->manageGroup("delete")) { $message['action'] = _('Eliminar Grupo'); - $message['text'][] = _('Nombre') . ': ' . $frmGrpName; + $message['text'][] = _('Nombre') . ': ' . $groupName; SP_Common::wrLogInfo($message); SP_Common::sendEmail($message); @@ -258,12 +266,12 @@ if ($frmSaveType == 1 || $frmSaveType == 2) { } } - SP_Common::printXML(_('No es una acción válida')); + SP_Common::printXML(_('Acción Inválida')); } elseif ($frmSaveType == 5 || $frmSaveType == 6) { $profileProp = array(); // Variables POST del formulario - $frmProfileName = ( isset($_POST["profile_name"]) ) ? SP_Html::sanitize($_POST["profile_name"]) : ""; + $frmProfileName = SP_Common::parseParams('p', 'profile_name'); $objUser->profileId = $frmItemId; // Profile properties Array @@ -322,16 +330,18 @@ if ($frmSaveType == 1 || $frmSaveType == 2) { SP_Common::printXML(_('Error al actualizar el perfil')); } - // Eliminar perfil + // Eliminar perfil } elseif ($frmAction == 4) { $resProfileUse = $objUser->checkProfileInUse(); if (is_string($resProfileUse)) { SP_Common::printXML(_('No es posible eliminar: Perfil en uso por') . ' ' . $resProfileUse); } else { + $profileName = $objUser->getProfileNameById($frmItemId); + if ($objUser->manageProfiles("delete")) { $message['action'] = _('Eliminar Perfil'); - $message['text'][] = _('Nombre') . ': ' . $frmProfileName; + $message['text'][] = _('Nombre') . ': ' . $profileName; SP_Common::wrLogInfo($message); SP_Common::sendEmail($message); @@ -343,5 +353,5 @@ if ($frmSaveType == 1 || $frmSaveType == 2) { } } - SP_Common::printXML(_('No es una acción válida')); + SP_Common::printXML(_('Acción Inválida')); } \ No newline at end of file diff --git a/ajax/ajax_usrpass.php b/ajax/ajax_usrpass.php index 7fc9ebb5..ef475bd3 100644 --- a/ajax/ajax_usrpass.php +++ b/ajax/ajax_usrpass.php @@ -42,7 +42,6 @@ $strError = '
    '._('No tiene permisos para re SP_Users::checkUserAccess("acceditpass",$userId) || die ($strError); -$isDemoMode = SP_Config::getValue('demoenabled', 0); ?>
    @@ -66,11 +65,7 @@ $isDemoMode = SP_Config::getValue('demoenabled', 0); - - - - - + @@ -88,5 +83,4 @@ $isDemoMode = SP_Config::getValue('demoenabled', 0);
  • - - \ No newline at end of file + \ No newline at end of file diff --git a/inc/account.class.php b/inc/account.class.php index 6f2d2609..3fec687e 100644 --- a/inc/account.class.php +++ b/inc/account.class.php @@ -459,7 +459,7 @@ class SP_Account { $message['action'] = _('Eliminar Cuenta'); $message['text'][] = _('Cliente').": ".$this->cacheParams['customer_name']; - $message['text'][] = _('Cuenta').": $this->accountName ($this->accountId)"; + $message['text'][] = _('Cuenta').": ".$this->cacheParams['account_name']." ($this->accountId)"; $query = "DELETE FROM accounts " . "WHERE account_id = ".(int)$this->accountId." LIMIT 1"; @@ -725,7 +725,6 @@ class SP_Account { * @return array con los nombres de los grupos ordenados */ public static function getAccountGroupsName ($accountId){ - $query = "SELECT usergroup_name FROM accGroups " . "JOIN usrGroups ON accgroup_groupId = usergroup_id " . "WHERE accgroup_accountId = ".(int)$accountId; @@ -736,6 +735,10 @@ class SP_Account { return FALSE; } + if (!is_array($queryRes)) { + return FALSE; + } + foreach ( $queryRes as $groups ){ $groupsName[] = $groups->usergroup_name; } diff --git a/inc/config.class.php b/inc/config.class.php index 33ecc35f..01f1c089 100644 --- a/inc/config.class.php +++ b/inc/config.class.php @@ -208,7 +208,7 @@ class SP_Config{ if ( ! is_dir($bakDstDir) ){ if ( ! @mkdir($bakDstDir, 0550) ){ - $arrOut['error'] = ''._('No es posible crear el directorio de backups').' ('.$bakDstDir.')'; + $arrOut['error'] = _('No es posible crear el directorio de backups').' ('.$bakDstDir.')'; $message['action'] = _('Copia BBDD'); $message['text'][] = _('No es posible crear el directorio de backups'); @@ -220,7 +220,7 @@ class SP_Config{ } if ( ! is_writable($bakDstDir) ){ - $arrOut['error'] = ''._('Compruebe los permisos del directorio de backups').''; + $arrOut['error'] = _('Compruebe los permisos del directorio de backups'); $error = 1; } diff --git a/inc/locales/en_US/LC_MESSAGES/messages.mo b/inc/locales/en_US/LC_MESSAGES/messages.mo index fbab3ce16ca4f3a46d078343d14952d9ebdbaec9..a96f804be87130cbca7f93a86610c1ebcc66c151 100644 GIT binary patch delta 11459 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 a<8uxU4ylwCx2RCg&4mepIaQZj4EaAPHbHg( delta 11480 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 gw_4Gfx%It++K-+zh$~&4$4", }); + $('input:text:visible:first').focus(); \ No newline at end of file diff --git a/inc/tpl/editpass.php b/inc/tpl/editpass.php index 444e319a..e2a7e209 100644 --- a/inc/tpl/editpass.php +++ b/inc/tpl/editpass.php @@ -83,4 +83,5 @@ if (!$account->checkAccountAccess("acceditpass") || !SP_Users::checkUserAccess(" - \ No newline at end of file + + \ No newline at end of file diff --git a/inc/tpl/profiles.php b/inc/tpl/profiles.php index 29116cb1..ae2626c3 100644 --- a/inc/tpl/profiles.php +++ b/inc/tpl/profiles.php @@ -117,10 +117,10 @@ $activeTab = $data['active']; diff --git a/inc/tpl/search.php b/inc/tpl/search.php index 02f258d7..e222c54a 100644 --- a/inc/tpl/search.php +++ b/inc/tpl/search.php @@ -83,6 +83,7 @@ $categoriesSelProp = array("name" => "category", $("#rpp").spinner({step: 5, max: 50, min: 5, numberFormat: "n", stop: function(event, ui) { accSearch(0); }}); + $('input:text:visible:first').focus();
    \ No newline at end of file diff --git a/inc/users.class.php b/inc/users.class.php index 2ab02ad1..8c99c924 100644 --- a/inc/users.class.php +++ b/inc/users.class.php @@ -512,8 +512,9 @@ class SP_Users { // Número de usuarios con el grupo $query = "SELECT user_id FROM usrData WHERE user_groupId = " . (int) $this->groupId; - if (DB::doQuery($query, __FUNCTION__) === FALSE) + if (DB::doQuery($query, __FUNCTION__) === FALSE){ return FALSE; + } $numRows = count(DB::$last_result); $txt = _('Usuarios') . " (" . $numRows . ")"; @@ -985,6 +986,57 @@ class SP_Users { return (int) $queryRes[0]->user_id; } + + /** + * @brief Obtener el login de usuario a partir del Id + * @return string con el login del usuario + */ + public static function getUserLoginById($id) { + $query = "SELECT user_login FROM usrData + WHERE user_id = " . (int)$id . " LIMIT 1"; + + $queryRes = DB::getResults($query, __FUNCTION__); + + if ($queryRes === FALSE || !is_array($queryRes)) { + return FALSE; + } + + return $queryRes[0]->user_login; + } + + /** + * @brief Obtener el nombre de un grupo por a partir del Id + * @return string con el nombre del grupo + */ + public static function getGroupNameById($id) { + $query = "SELECT usergroup_name FROM usrGroups + WHERE usergroup_id = " . (int)$id . " LIMIT 1"; + + $queryRes = DB::getResults($query, __FUNCTION__); + + if ($queryRes === FALSE || !is_array($queryRes)) { + return FALSE; + } + + return $queryRes[0]->usergroup_name; + } + + /** + * @brief Obtener el nombre de un perfil por a partir del Id + * @return string con el nombre del perfil + */ + public static function getProfileNameById($id) { + $query = "SELECT userprofile_name FROM usrProfiles + WHERE userprofile_id = " . (int)$id . " LIMIT 1"; + + $queryRes = DB::getResults($query, __FUNCTION__); + + if ($queryRes === FALSE || !is_array($queryRes)) { + return FALSE; + } + + return $queryRes[0]->userprofile_name; + } /** * @brief Autentifica al usuario con LDAP @@ -1252,6 +1304,12 @@ class SP_Users { * @return object con los permisos del perfil del usuario */ public static function getUserProfile() { + $userId = SP_Common::parseParams('s', 'uid', 0); + + if ( ! $userId ){ + return FALSE; + } + $query = "SELECT user_profileId, userProfile_pView, userProfile_pViewPass, @@ -1273,7 +1331,7 @@ class SP_Users { userProfile_pEventlog FROM usrData JOIN usrProfiles ON userProfile_Id = user_profileId - WHERE user_id = " . $_SESSION['uid'] . " LIMIT 1"; + WHERE user_id = " . $userId . " LIMIT 1"; $queryRes = DB::getResults($query, __FUNCTION__); diff --git a/inc/util.class.php b/inc/util.class.php index 56a3ff23..83947053 100644 --- a/inc/util.class.php +++ b/inc/util.class.php @@ -169,7 +169,8 @@ class SP_Util { * @return array con el número de versión */ public static function getVersion() { - return array(1, 00, 01); + //return array(1, 00, 01); + return array(1, 00, 'rc3'); } /** diff --git a/js/functions.js b/js/functions.js index 6e1af90c..ee7105f0 100644 --- a/js/functions.js +++ b/js/functions.js @@ -33,7 +33,8 @@ jQuery.extend(jQuery.fancybox.defaults, { autoHeight: 'true', minHeight: 50, padding: 0, - helpers: {overlay : { css : { 'background' : 'rgba(0, 0, 0, 0.1)'}}} + helpers: {overlay : { css : { 'background' : 'rgba(0, 0, 0, 0.1)'}}}, + afterShow: function(){$('#fancyContainer input:visible:first').focus();} }); $(document).ready(function(){ @@ -577,7 +578,7 @@ function usersMgmt(frmId, isDel, id, type, sk){ var active = frmId; alertify.confirm(atext, function (e) { - if ( e) { + if (e) { usersAjax(data, url); doAction('usersmenu','',active) }