| [ Index ] |
Documentación de MTHPortal v1.0 Alameda |
[Summary view] [Print] [Text view]
1 <? 2 /** 3 * mthportal.class.php 4 * Última Modificación: 27 Marzo 2007 5 * @author Meth < mth at mthweb.org > 6 * @package MTHPortal 7 * @version 1.0 8 * Clase mth utilizada para llevar a cabo ciertas funciones del Portal 9 * como pueden ser administración de usuarios, del portal, etc... 10 */ 11 12 //INCLUYO LAS SUBCLASES Y LAS INICIO 13 require_once(dirname(__FILE__).'/adodb_lite/adodb.inc.php'); 14 require_once(dirname(__FILE__).'/mth/mthusuario.class.php'); 15 require_once(dirname(__FILE__).'/mth/mthfunciones.class.php'); 16 require_once(dirname(__FILE__).'/xajax/xajax.inc.php'); 17 18 class mth{ 19 /** 20 * @var string Variable que almacena los errores ocurridos 21 */ 22 var $error; 23 /** 24 * @var array Matriz con todas las variables de configuracion de la web 25 */ 26 var $configuracion; 27 /** 28 * @var class Referencia a adobd_lite para acceder a la base de datos 29 */ 30 var $db; 31 /** 32 * @var class Referencia a mth_usuarios para poder administrar todos los 33 * aspectos de los usuarios 34 */ 35 var $mth_usuarios; 36 /** 37 * @var class Referencia a mth_funciones para poder realizar ciertas 38 * funciones de la web 39 */ 40 var $mth_funciones; 41 /** 42 * @var string Prefijo para las funciones que registrará xajax 43 */ 44 var $ajaxFuncPrefix; 45 /** 46 * @var class Contendrá la clase xajax para las funciones de mthportal 47 */ 48 var $xajax; 49 /** 50 * Constructor de la clase que inicializa adodb_lite para poder conectar con 51 * la base de datos de manera correcta, más adelante conectaremos a la base de 52 * datos con los datos proporcionados por el archivo de configuración 53 * @param array Datos de acceso a la base de datos 54 */ 55 function mth($db_conf=''){ 56 /* 57 CONEXION A LA BASE DE DATOS 58 PRIMERO DEFINIMOS TIPO DE BASE DE DATOS 59 */ 60 $this->db = ADONewConnection($db_conf['type'],'extend:date:pear'); 61 /* 62 CONECTAMOS CON LAS BASES DE DATOS, SI NO HAY ERROR CONTINUAMOS, SI HAY ERROR 63 ENTONCES MOSTRAMOS QUE NO SE PUDO CONECTAR CON LA BASE DE DATOS 64 */ 65 $this->db->Connect($db_conf['server'],$db_conf['user'],$db_conf['pass'],$db_conf['name']); 66 if($this->db->IsConnected()){ 67 $this->configuracion = array(); 68 $this->configuracion = $this->obtener_configuracion(); 69 $this->mth_usuarios = new mth_usuarios(&$this->db,$this->configuracion); 70 $this->mth_funciones = new mth_funciones; 71 $this->ajaxFuncPrefix = 'ax'; 72 $this->xajax = new xajax($this->configuracion['url_sistema']); 73 $this->xajax->decodeUTF8InputOn(); 74 $this->registerFunctions(); 75 } 76 else return false; 77 }//FIN mth 78 79 /** 80 * Función que extrae la configuración general de la web 81 * el resultado es devuelto en un array cuyo índice es el nombre de la variable 82 * y el valor es el valor de la variable 83 * Esta función no recibe parámetros 84 */ 85 function obtener_configuracion($todo=false){ 86 $configuracion = array(); 87 $data = $this->db->GetAssoc('SELECT * FROM web_config'); 88 $i = 0; 89 foreach($data as $matriz){ 90 if($todo === false){ 91 $variable = $matriz['Variable']; 92 $configuracion[$variable] = $matriz['Valor']; 93 } 94 else{ 95 $configuracion[$i] = $matriz; 96 $i++; 97 } 98 } 99 return $configuracion; 100 }//FIN obtener_configuracion 101 102 /** 103 * Función para actualizar la configuración de la web 104 * @param array Matriz que almacena los valores de configuración de la web 105 */ 106 function actualizar_configuracion($datos=''){ 107 if(is_array($datos)){ 108 $this->mth_funciones->comprobar_datos_configuracion($datos,$this->configuracion); 109 foreach($datos as $key => $value){ 110 $this->db->Execute('UPDATE web_config SET Valor = ? WHERE Variable = ?',array($value,$key)); 111 } 112 return true; 113 } 114 else return false; 115 }//FIN actualizar_configuracion 116 117 /** 118 * Función que obtiene la lista de paises desde la base de datos, proporciona de 119 * salida un array cuyo índice es el código del país 120 * No recibe parámetros 121 */ 122 function lista_paises(){ 123 $data = $this->db->GetAssoc('SELECT * FROM web_countries ORDER BY country'); 124 $pais = array(); 125 foreach($data as $matriz){ 126 $variable = $matriz['code']; 127 $pais[$variable] = $matriz['country']; 128 } 129 return $pais; 130 }//FIN lista_paises 131 132 /** 133 * Función que obtiene los módulos instalados, no instalados y 134 * la lista completa 135 * @param string Tipo de módulos a obtener, hay tres opciones: 'ins' para 136 * instalados, 'des' para no instalados y 'comp' para la lista completa, 137 * cualquier otra opción hará que devuelva los módulos instalados 138 */ 139 function lista_modulos($tipo='ins'){ 140 if($tipo == 'des'){//CONSEGUIR MODULOS INSTALADOS PARA PODER DESINSTALAR 141 $retorno = array(); 142 $data = $this->db->GetAssoc('SELECT * FROM web_menu WHERE Modulo = 1'); 143 foreach($data as $key => $value){ 144 $retorno[$key] = $value['Menu']; 145 } 146 return $retorno; 147 }//FIN CONSEGUIR MODULOS INSTALADOS PARA PODER DESINSTALAR 148 else if($tipo == 'comp'){//CONSEGUIR TODOS MODULOS DISPONIBLES 149 $dir = "./modulos/"; 150 $retorno = array(); 151 if (is_dir($dir)){ 152 if ($gd = opendir($dir)) { 153 while (($archivo = readdir($gd)) !== false) { 154 if (is_dir($dir.$archivo) && $archivo != '.' && $archivo != '..') 155 $retorno[$archivo] = ucfirst($archivo); 156 } 157 closedir($gd); 158 return $retorno; 159 } 160 } 161 else return false; 162 }//FIN CONSEGUIR TODOS MODULOS DISPONIBLES 163 else{//CONSEGUIR MODULOS NO INSTALADOS PARA INSTALAR 164 //PRIMERO OBTENGO LOS MODULOS INSTALADOS 165 $ins = array(); 166 $data = $this->db->GetAssoc('SELECT * FROM web_menu WHERE Modulo = 1'); 167 foreach($data as $key => $value){ 168 $ins[$key] = $value['Menu']; 169 } 170 171 $dir = "./modulos/"; 172 $retorno = array(); 173 if (is_dir($dir)){ 174 if ($gd = opendir($dir)) { 175 while (($archivo = readdir($gd)) !== false) { 176 if (is_dir($dir.$archivo) && $archivo != '.' && $archivo != '..' && !in_array(ucfirst($archivo),$ins)) 177 $retorno[$archivo] = ucfirst($archivo); 178 } 179 closedir($gd); 180 return $retorno; 181 } 182 } 183 else return false; 184 }//FIN CONSEGUIR MODULOS NO INSTALADOS PARA INSTALAR 185 }//FIN lista_modulos 186 187 /******************************************************************************** 188 FUNCIONES DE XAJAX FUNCIONES DE XAJAX FUNCIONES DE XAJAX FUNCIONES DE XAJAX 189 FUNCIONES DE XAJAX FUNCIONES DE XAJAX FUNCIONES DE XAJAX FUNCIONES DE XAJAX 190 FUNCIONES DE XAJAX FUNCIONES DE XAJAX FUNCIONES DE XAJAX FUNCIONES DE XAJAX 191 ********************************************************************************/ 192 /** 193 * Función que registra las funciones que voy a utilizar con xajax, serán 194 * todas las funciones que comiencen por ax y la siguiente letra sea mayúsculas 195 */ 196 function registerFunctions($ad=false){ 197 $this->xajax->registerFunction(array('conectar',&$this,'axConectar')); 198 $this->xajax->registerFunction(array('comprobarNick',&$this,'axComprobarNick')); 199 $this->xajax->registerFunction(array('registroUsuario',&$this,'axRegistroUsuario')); 200 $this->xajax->registerFunction(array('verificarEmail',&$this,'axVerificarEmail')); 201 $this->xajax->registerFunction(array('recordarContrasena',&$this,'axRecordarContrasena')); 202 $this->xajax->registerFunction(array('activarCuenta',&$this,'axActivarCuenta')); 203 $this->xajax->registerFunction(array('actualizarCuenta',&$this,'axActualizarCuenta')); 204 //FUNCIONES DE ADMINISTRACION 205 if($ad == true){ 206 $this->xajax->registerFunction(array('actualizarConfiguracion',&$this,'ad_axActualizarConfiguracion')); 207 $this->xajax->registerFunction(array('buscarUsuario',&$this,'ad_axBuscarUsuario')); 208 $this->xajax->registerFunction(array('anadirUsuario',&$this,'ad_axAnadirUsuario')); 209 } 210 }//FIN registerFunctions 211 212 /** 213 * Función que recibe los datos enviados a través del formulario de conexión 214 * y decide si el usuario puede conectarse a la web o no 215 * @param array Datos recibidos desde el formulario 216 * @param string Div del html donde va a cargar los resultados 217 */ 218 function axConectar($datos='',$capa=''){ 219 global $USUARIOCONECTADO; 220 $objResponse = new xajaxResponse(); 221 if(is_array($datos)){//DATOS RECIBIDOS CORRECTAMENTE 222 if($id = $this->mth_usuarios->conectar($datos['usuariologin'],$datos['contrasenalogin'],$datos['imagenlogin'])){ 223 $_SESSION['usuario'] = $id['Id']; 224 $_SESSION['nivel'] = $id['Nivel']; 225 $USUARIOCONECTADO = $id['Nick']; 226 $desde_xajax = true; 227 include ('./templates/usuario.php'); 228 if(0 < $id['Nivel']) 229 $usuarioadmin = '1'; 230 $objResponse->addAssign($capa,'innerHTML',usuario_conectado()); 231 } 232 else{ 233 if($this->mth_usuarios->error == 'Imagen de verificación errónea'){//IMAGEN DE VERIFICACION NO VALIDA 234 $objResponse->addAlert(html_entity_decode($this->mth_usuarios->error)); 235 $objResponse->addAssign('imagenlogin','value',''); 236 $objResponse->addScript('xajax.$(\'imagenlogin\').focus()'); 237 }//FIN IMAGEN DE VERIFICACION INVALIDA 238 else{ 239 $objResponse->addAlert(html_entity_decode($this->mth_usuarios->error)); 240 if($this->configuracion['mod_rewrite'] == 1) $objResponse->addAssign('recordar_login','innerHTML','<br /><a href="'.$this->configuracion['url_sistema'].'opt-recordar/" title="Recordar Contraseña">Recordar Contraseña</a>'); 241 else $objResponse->addAssign('recordar_login','innerHTML','<br /><a href="index.php?sec=recordar" title="Recordar Contraseña">Recordar Contraseña</a>'); 242 } 243 244 } 245 }//FIN DATOS RECIBIDOS CORRECTAMENTE 246 else $objResponse->addAlert('Datos no recibidos de manera correcta'); 247 //LOS DATOS NO SE RECIBIERON CORRECTAMENTE ASI QUE MUESTRO UN MENSAJE 248 //INDICANDOLO 249 $objResponse->addAssign('cargando_login','style.display','none'); 250 return $objResponse; 251 }//FIN axConectar 252 253 /** 254 * Función que comprueba si un nick es válido 255 * @param string Nombre de usuario 256 * @param string Div del html donde va a cargar los resultados 257 */ 258 function axComprobarNick($nick='',$capa=''){ 259 $objResponse = new xajaxResponse(); 260 if($this->mth_usuarios->_usuario_valido($nick)){ 261 if(!$this->mth_usuarios->_esregistrado($nick)) $objResponse->addAssign('comprobar_nickregistro','innerHTML','<br />Nombre de Usuario válido'); 262 else $objResponse->addAssign($capa,'innerHTML','<br /><span style="color: red">Nombre de Usuario registrado, por favor escoja otro</span>'); 263 } 264 //EL NOMBRE DE USUARIO NO ES CORRECTO 265 else $objResponse->addAssign('comprobar_nickregistro','innerHTML','<br /><span style="color: red">'.$this->mth_usuarios->error.'</span>'); 266 return $objResponse; 267 }//FIN axComprobarNick$key 268 269 /** 270 * Función que realiza el registro del usuario a través de xajax 271 * @param array Datos de registro del usuario 272 * @param string Div del html donde va a cargar los resultados 273 */ 274 function axRegistroUsuario($datos='',$capa=''){ 275 $objResponse = new xajaxResponse(); 276 if(is_array($datos)){ 277 $adicional = array(); 278 $adicional['Ciudad'] = $datos['ciudadregistro']; 279 $adicional['Provincia'] = $datos['provinciaregistro']; 280 $adicional['Pais'] = $datos['paisregistro']; 281 if($this->mth_usuarios->registrar($datos['nickregistro'],$datos['contrasenaregistro'],$datos['contrasenaregistro2'],$datos['emailregistro'],$datos['imagenregistro'],$adicional)) 282 $objResponse->addAssign($capa,'innerHTML','Registro concluido satisfactoriamente'); 283 else $objResponse->addAlert(html_entity_decode($this->mth_usuarios->error)); 284 } 285 else $objResponse->addAlert('Datos recibidos incorrectos'); 286 $objResponse->addAssign('cargando_registro','style.display','none'); 287 return $objResponse; 288 }//FIN axRegistroUsuario 289 290 /** 291 * Función que comprueba si el email proporcionado es correcto 292 * @param string Email a comprobar 293 * @param string Div del html donde va a cargar los resultados 294 */ 295 function axVerificarEmail($email='',$capa=''){ 296 $objResponse = new xajaxResponse(); 297 if($this->mth_usuarios->_email_valido($email)){ 298 if(!$this->mth_usuarios->_esregistrado('',$email)) 299 $objResponse->addAssign($capa,'innerHTML','<br />Email válido'); 300 else 301 $objResponse->addAssign($capa,'innerHTML','<br /><span style="color: red">Email registrado, por favor, escoja otro</span>'); 302 } 303 else 304 $objResponse->addAssign($capa,'innerHTML','<br /><span style="color: red">'.$this->mth_usuarios->error.'</span>'); 305 return $objResponse; 306 }//FIN axVerificarEmail 307 308 /** 309 * Función que envía el recordatorio de contraseña al usuario a través de xajax 310 * @param array Datos introducidos por el usuario en el formulario 311 * @param string Div del html donde va a cargar los resultados 312 */ 313 function axRecordarContrasena($datos='',$capa=''){ 314 $objResponse = new xajaxResponse(); 315 if(strtolower($datos['imagenrecordar']) == strtolower($_SESSION['vimg'])){ 316 if($this->mth_usuarios->enviar_email_recordatorio($datos['usuariorecordar'],$datos['emailrecordar'])){ 317 $desde_xajax = true; 318 include ('./templates/usuario.php'); 319 $objResponse->addAssign($capa,'innerHTML',usuario_login()); 320 } 321 else $objResponse->addAlert(html_entity_decode($this->mth_usuarios->error)); 322 } 323 else{//IMAGEN DE VERIFICACION NO SALIO BIEN 324 $objResponse->addAlert(html_entity_decode('Imagen de verificación errónea')); 325 $objResponse->addScript('xajax.$(\'imagenrecordar\').focus()'); 326 } 327 $objResponse->addAssign('cargando_recordar','style.display','none'); 328 return $objResponse; 329 }//FIN axRecordarContrasena 330 331 /** 332 * Función que activa un usuario mediante xajax 333 * @param array Datos introducidos por el usuario para activar su cuenta 334 * @param string Div del html donde va a cargar los resultados 335 */ 336 function axActivarCuenta($datos='',$capa=''){ 337 $objResponse = new xajaxResponse(); 338 if($this->mth_usuarios->activar_usuario($datos['usuarioactivar'],$datos['emailactivar'],$datos['cadenaactivar'])){ 339 $ERROR = 'Cuenta activada, ya puede ingresar con su cuenta'; 340 $ACCIONLOGIN = $this->configuracion['url_sistema']; 341 $FORMALOGIN_USUARIO = 'Usuario'; 342 $FORMALOGIN_CONTRASENA = 'Contrasena'; 343 $desde_xajax = true; 344 include ('./templates/usuario.php'); 345 $objResponse->addAssign($capa,'innerHTML',usuario_login()); 346 $objResponse->addScript('xajax.$(\'usuariologin\').onfocus = function(){limpiar(\'usuariologin\');} 347 xajax.$(\'contrasenalogin\').onfocus = function(){limpiar(\'contrasenalogin\');} 348 xajax.$(\'formalogin\').onsubmit = function(){xajax_conectar(xajax.getFormValues(\'formalogin\'));xajax.$(\'cargando_login\').style.display = \'\';return false;}'); 349 } 350 else{ 351 $objResponse->addAlert(html_entity_decode($this->mth_usuarios->error)); 352 } 353 $objResponse->addAssign('cargando_activar','style.display','none'); 354 return $objResponse; 355 }//FIN axActivarCuenta 356 357 /** 358 * Función que actualiza los datos de un usuario dado su id, actualiza email 359 * contraseña, etc... 360 * @param array Datos introducidos por el usuario en el formulario correspondiente 361 * @param string Div del html donde va a cargar los resultados 362 */ 363 function axActualizarCuenta($datos='',$capa){ 364 $objResponse = new xajaxResponse(); 365 $adicional = array(); 366 $adicional['Ciudad'] = $datos['ciudadsucuenta']; 367 $adicional['Provincia'] = $datos['provinciasucuenta']; 368 $adicional['Pais'] = $datos['paissucuenta']; 369 if($this->mth_usuarios->editar_usuario($_SESSION['usuario'],$datos['contrasenasucuenta'],$datos['contrasenasucuenta2'],$datos['emailsucuenta'],$adicional)){ 370 $desde_xajax = true; 371 include ('./templates/usuario.php'); 372 if($row = $this->mth_usuarios->info_usuario($_SESSION['usuario'])) 373 $USUARIOCONECTADO = $row['Nick']; 374 $objResponse->addAssign($capa,'innerHTML',usuario_conectado()); 375 } 376 else 377 $objResponse->addAlert($mth->mth_usuarios->error); 378 return $objResponse; 379 }//FIN axActualizarCuenta 380 /******************************************************************************** 381 FUNCIONES DE XAJAX PARA ADMINISTRACION FUNCIONES DE XAJAX PARA ADMINISTRACION 382 FUNCIONES DE XAJAX PARA ADMINISTRACION FUNCIONES DE XAJAX PARA ADMINISTRACION 383 FUNCIONES DE XAJAX PARA ADMINISTRACION FUNCIONES DE XAJAX PARA ADMINISTRACION 384 ********************************************************************************/ 385 /** 386 * Función que actualiza la configuración de la web utilizando Xajax 387 * @param array Datos para actualizar la configuración de la web 388 */ 389 function ad_axActualizarConfiguracion($datos=''){ 390 $objResponse = new xajaxResponse(); 391 if($this->actualizar_configuracion($datos)) 392 $objResponse->addAlert('Configuración actualizada correctamente'); 393 else $objResponse->addAlert('Ocurrió un error al actualizar la configuración'); 394 $objResponse->addAssign('enviar','value','Configurar'); 395 return $objResponse; 396 }//FIN actualizarConfiguracion 397 398 /** 399 * Función que busca usuarios dados sus iniciales del nick 400 * @param string Parámetro de busqueda de nick 401 * @param string Div del html donde va a cargar los resultados 402 */ 403 function ad_axBuscarUsuario($inicial='',$capa=''){ 404 $objResponse = new xajaxResponse(); 405 if($listado = $this->mth_usuarios->buscar_usuario($inicial)){ 406 $lista = '<br />Usuarios encontrados:<ul>'; 407 foreach($listado as $key => $value){ 408 $lista .= '<li><a href="#" id="usuario-'.$key.'" onclick="xajax.$(\'user\').value = \''.$value['Nick'].'\'">'.$value['Nick'].'</a></li>'; 409 $script = 'xajax.$(\'usuario-'.$key.'\').onclick = function(){ xajax.$(\'user\').value = \''.$value['Nick'].'\' }'; 410 $objResponse->addScript($script); 411 } 412 $lista .= '</ul>'; 413 $objResponse->addAssign($capa,'innerHTML',$lista); 414 } 415 return $objResponse; 416 }//FIN buscarUsuario 417 418 /** 419 * Función que muestra el formulario para añadir usuarios, siempre que el parámetro de entrada 420 * sea vacío, si no está vacío entonces pasa a añadir al usuario 421 * @param array Datos del usuario a añadir 422 */ 423 function ad_axAnadirUsuario($datos='',$capa=''){ 424 $objResponse = new xajaxResponse(); 425 global $paisregistro; 426 if($datos == ''){ 427 $desde_xajax = 1; 428 include ('./templates/usuario.php'); 429 include ('templates/funciones.template.php'); 430 $paisregistro = $this->lista_paises(); 431 $objResponse->addAssign($capa,'innerHTML',usuario_registro()); 432 $script = 'function comprobar_nick(){ 433 xajax.$(\'comprobar_nickregistro\').innerHTML = \'<br />Comprobando Nombre de usuario...\'; 434 xajax_comprobarNick(xajax.$(\'nickregistro\').value,\'comprobar_nickregistro\'); 435 } 436 function comprobar_email(){ 437 xajax.$(\'comprobar_emailregistro\').innerHTML = \'<br />Comprobando Email...\'; 438 xajax_verificarEmail(xajax.$(\'emailregistro\').value,\'comprobar_emailregistro\'); 439 } 440 xajax.$(\'registroweb\').onsubmit = function(){ 441 xajax_registroUsuario(xajax.getFormValues(\'registroweb\'),\'registroweb\'); 442 xajax.$(\'cargando_registro\').style.display = \'\'; 443 return false; 444 } 445 addEvent(xajax.$(\'nickregistro\'),\'blur\',comprobar_nick); 446 addEvent(xajax.$(\'emailregistro\'),\'blur\',comprobar_email);'; 447 $objResponse->addScript($script); 448 } 449 return $objResponse; 450 }//FIN anadirUsuario 451 } 452 ?>
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generado: Wed Mar 28 13:27:31 2007 | Realizado con PHPXref 0.7 |