. // It's licensed under the AFFERO GENERAL PUBLIC LICENSE unless stated otherwise. // You can get copies of the licenses here: // http://www.affero.org/oagpl.html // AFFERO GENERAL PUBLIC LICENSE is also included in the file called "COPYING". include('config.php'); include(mnminclude.'html1.php'); include(mnminclude.'link.php'); include(mnminclude.'user.php'); include(mnminclude.'avatars.php'); // We need it because we modify headers ob_start(); $user_levels = array ('disabled', 'normal', 'special', 'admin', 'god'); // User recovering her password if (!empty($_GET['login']) && !empty($_GET['t']) && !empty($_GET['k'])) { $time = intval($_GET['t']); $key = $_GET['k']; $user=new User(); $user->username=clean_input_string($_GET['login']); if($user->read()) { $now = time(); $key2 = md5($user->id.$user->pass.$time.$site_key.get_server_name()); //echo "$now, $time; $key == $key2\n"; if ($time > $now - 7200 && $time < $now && $key == $key2) { $db->query("update users set user_validated_date = now() where user_id = $user->id and user_validated_date is null"); $current_user->Authenticate($user->username, $user->pass); header('Location: '.get_user_uri($user->username)); die; } } } //// End recovery if ($current_user->user_id > 0 && $current_user->authenticated && empty($_REQUEST['login'])) { $login=$current_user->user_login; } elseif (!empty($_REQUEST['login']) && $current_user->user_level == 'god') { $login=$db->escape($_REQUEST['login']); $admin_mode = true; } else { header("Location: ./login.php"); die; } $user=new User(); $user->username = $login; if(!$user->read()) { not_found(); } $globals['ads'] = true; // Enable user AdSense // do_user_ad: 0 = noad, > 0: probability n/100 // 100 if the user is the current one if($current_user->user_id == $user->id && $globals['external_user_ads'] && !empty($user->adcode)) { $globals['user_adcode'] = $user->adcode; $globals['user_adchannel'] = $user->adchannel; $globals['do_user_ad'] = 100; } do_header(_('edición del perfil del usuario'). ': ' . $user->username); do_banner_top(); echo '
' . "\n"; show_profile(); do_footer(); function show_profile() { global $user, $admin_mode, $user_levels, $globals, $site_key, $current_user; save_profile(); echo '
'; echo '
'; echo '
'; echo ''._('opciones de usuario') . " $user->username: $user->level"; echo ''.$user->username.''; echo ''; echo ''; echo ''; if ($admin_mode) echo ''; echo '


'; echo ''; echo '  '; echo '
' . "\n"; echo '

'; echo '


'; echo ''; echo '

'; echo '


'; echo ''; echo '  '; echo '
'; echo '

'; echo '


'; echo ''; echo '

'; echo '


'; echo '' . _('necesario si te conectarás vía Jabber/Google Talk') . '
'; echo ''; echo '

'; if ($user->id == $current_user->user_id) { echo '


'; echo '' . _('sólo necesario si enviarás notas al nótame vía SMS') . '
'; echo '' . _('pon el número completo, con código de país: +34123456789') . '
'; echo ''; echo '

'; } if ($globals['external_user_ads']) { echo '


'; echo '' . _('tu código de usuario de AdSense, del tipo pub-123456789') . '
'; echo '
'; echo '' . _('canal AdSense (opcional), del tipo 1234567890') . '
'; echo ''; echo '

'; } if (is_avatars_enabled()) { echo ''; echo '


'; echo '' . _('el avatar debe ser una imagen cuadrada en jpeg, gif o png de no más de 100 KB, sin transparencias') . '
'; echo ''; echo '

'; } echo '
'._('opciones de visualización') . ''; echo '

'._('mostrar todos los comentarios').': '; print_checkbox('comment_pref', $user->comment_pref & 1); echo '

'; echo '

'._('mostrar sólo noticias amigos por defecto').': '; print_checkbox('show_friends', $user->comment_pref & 2); echo '

'; /* echo '

'._('mostrar sólo 2 columnas').': '; print_checkbox('show_2cols', $user->comment_pref & 4); echo '

'; */ echo '
'; echo '

'._('introduce la nueva clave para cambiarla -no se cambiará si la dejas en blanco-:').'

'; echo '


' . "\n"; echo '

' . "\n"; echo '


' . "\n"; echo '

' . "\n"; if ($admin_mode) { echo '


' . "\n"; echo ''; echo '


'; echo ''; echo '

'; } echo '

'; echo '
'; // Disable the account if ($user->id == $current_user->user_id) { echo '
'._('deshabilitar la cuenta') . ''; echo '

'._('atención! la cuenta será deshabilitada.').'

'; echo '

'._('se eliminarán automáticamente los datos personales.').'
'; echo _('las notas serán eliminadas, los envíos y comentarios NO se borrarán.').'

'; echo '

'._('sí, quiero deshabilitarla').': '; echo '

'; echo '

'; echo '
'; } echo "
\n"; } function save_profile() { global $db, $user, $current_user, $globals, $admin_mode, $site_key; $errors = 0; // benjami: control added (2005-12-22) $pass_changed=false; $form_hash = md5($site_key.$user->id.$globals['user_ip']); if(isset($_POST['disabledme']) && intval($_POST['disable']) == 1 && $_POST['form_hash'] == $form_hash && $_POST['user_id'] == $current_user->user_id ) { $old_user_login = $user->username; $old_user_id = $user->id; $db->query("delete from posts where post_user_id = $old_user_id"); $user->disable(); syslog(LOG_NOTICE, "Meneame, disabling $old_user_id ($old_user_login) by $current_user->user_login -> $user->username ".time()); $current_user->Logout(get_user_uri($user->username)); die; } if(!isset($_POST['save_profile']) || !isset($_POST['process']) || ($_POST['user_id'] != $current_user->user_id && !$admin_mode) ) return; if ( empty($_POST['form_hash']) || $_POST['form_hash'] != $form_hash ) { echo '

'._('Falta la clave de control').'

'; $errors++; } if(!empty($_POST['username']) && trim($_POST['username']) != $user->username) { if (strlen(trim($_POST['username']))<3) { echo '

'._('nombre demasiado corto').'

'; $errors++; } if(!check_username($_POST['username'])) { echo '

'._('nombre de usuario erróneo, caracteres no admitidos').'

'; $errors++; } elseif (user_exists(trim($_POST['username'])) ) { echo '

'._('el usuario ya existe').'

'; $errors++; } else { $user->username=trim($_POST['username']); } } if($user->email != trim($_POST['email']) && !check_email(trim($_POST['email']))) { echo '

'._('el correo electrónico no es correcto').'

'; $errors++; } elseif (!$admin_mode && trim($_POST['email']) != $current_user->user_email && email_exists(trim($_POST['email']))) { echo '

'. _('ya existe otro usuario con esa dirección de correo'). '

'; $errors++; } else { $user->email=trim($_POST['email']); } $user->url=htmlspecialchars(clean_input_url($_POST['url'])); // Check IM address if (!empty($_POST['public_info'])) { $_POST['public_info'] = htmlspecialchars(clean_input_url($_POST['public_info'])); $public = $db->escape($_POST['public_info']); $im_count = intval($db->get_var("select count(*) from users where user_id != $user->id and user_level != 'disabled' and user_public_info='$public'")); if ($im_count > 0) { echo '

'. _('ya hay otro usuario con la misma dirección de MI, no se ha grabado'). '

'; $_POST['public_info'] = ''; $errors++; } } $user->phone = $_POST['phone']; $user->public_info=htmlspecialchars(clean_input_url($_POST['public_info'])); // End check IM address if ($user->id == $current_user->user_id) { // Check phone number if (!empty($_POST['phone'])) { if ( !preg_match('/^\+[0-9]{9,16}$/', $_POST['phone'])) { echo '

'. _('número telefónico erróneo, no se ha grabado'). '

'; $_POST['phone'] = ''; $errors++; } else { $phone = $db->escape($_POST['phone']); $phone_count = intval($db->get_var("select count(*) from users where user_id != $user->id and user_level != 'disabled' and user_phone='$phone'")); if ($phone_count > 0) { echo '

'. _('ya hay otro usuario con el mismo número, no se ha grabado'). '

'; $_POST['phone'] = ''; $errors++; } } } $user->phone = $_POST['phone']; // End check phone number } // Verifies adsense code if ($globals['external_user_ads']) { $_POST['adcode'] = trim($_POST['adcode']); $_POST['adchannel'] = trim($_POST['adchannel']); if (!empty($_POST['adcode']) && $user->adcode != $_POST['adcode']) { if ( !preg_match('/^pub-[0-9]{16}$/', $_POST['adcode'])) { echo '

'. _('código AdSense incorrecto, no se ha grabado'). '

'; $_POST['adcode'] = ''; $errors++; } else { $adcode_count = intval($db->get_var("select count(*) from users where user_id != $user->id and user_level != 'disabled' and user_adcode='".$_POST['adcode']."'")); if ($adcode_count > 0) { echo '

'. _('ya hay otro usuario con la misma cuenta, no se ha grabado'). '

'; $_POST['adcode'] = ''; $errors++; } } } if (!empty($_POST['adcode']) && !empty($_POST['adchannel']) && $user->adchannel != $_POST['adchannel']) { if ( !preg_match('/^[0-9]{10,12}$/', $_POST['adchannel'])) { echo '

'. _('canal AdSense incorrecto, no se ha grabado'). '

'; $_POST['adchannel'] = ''; $errors++; } } $user->adcode = $_POST['adcode']; $user->adchannel = $_POST['adchannel']; } $user->names=clean_text($_POST['names']); if(!empty($_POST['password']) || !empty($_POST['password2'])) { if(trim($_POST['password']) !== trim($_POST['password2'])) { echo '

'._('las claves no son iguales, no se ha modificado').'

'; $errors = 1; } else { $user->pass=md5(trim($_POST['password'])); echo '

'._('La clave se ha cambiado').'

'; $pass_changed = true; } } if ($admin_mode && !empty($_POST['user_level'])) { $user->level=$db->escape($_POST['user_level']); } if ($admin_mode && !empty($_POST['karma']) && is_numeric($_POST['karma']) && $_POST['karma'] > 4 && $_POST['karma'] <= 20) { $user->karma=$_POST['karma']; } $user->comment_pref=intval($_POST['comment_pref']) + (intval($_POST['show_friends']) & 1) * 2 + (intval($_POST['show_2cols']) & 1) * 4; // Manage avatars upload if (!empty($_FILES['image']['tmp_name']) ) { if(avatars_check_upload_size('image')) { if (!avatars_manage_upload($user->id, 'image')) { echo '

'._('error guardando la imagen').'

'; $errors = 1; $user->avatar = 0; } else { $user->avatar = 1; } } else { echo '

'._('el tamaño de la imagen excede el límite').'

'; $errors = 1; $user->avatar = 0; } } if (!$errors) { // benjami: "if" added (2005-12-22) if (empty($user->ip)) { $user->ip=$globals['user_ip']; } $user->store(); $user->read(); if (!$admin_mode && ($current_user->user_login != $user->username || $current_user->user_email != $user->email || $pass_changed)) { $current_user->Authenticate($user->username, $user->pass); } echo '

'._('datos actualizados').'

'; } } function print_checkbox($name, $current_value) { echo ' 0) echo ' checked="true"'; echo '/>'; } ?>