2 // vim: set binary noeol et sw=4 sts=4 :
5 // Lucarella, Schein, Arena
7 // Creado: Leandro Lucarella (sáb abr 30 20:21:30 ART 2005)
11 require_once 'lib/file.creditos.php';
12 require_once 'lib/file.admins.php';
13 require_once 'lib/file.users.php';
14 require_once 'lib/file.int.php';
15 require_once 'lib/file.ase.php';
16 require_once 'lib/file.log.php';
19 * XXX detailed description
36 $d = file_users_get($id);
37 $this->_email = $d[2];
38 if ($this->esAsesor()) $d = file_ase_get($id);
39 else $d = file_int_get($id);
40 $this->_nombre = $d[1];
41 $this->_apellido = $d[2];
51 return $this->_nombre;
54 function getApellido()
56 return $this->_apellido;
64 function getCreditos()
66 // El asesor puede preguntar siempre
67 if ($this->esAsesor()) return 1;
68 $d = file_creditos_get($this->_id);
72 function getFotoFilename()
74 return 'fotos/'.$this->_id;
79 return file_admins_es_admin($this->_id);
84 return $this->_id{0} == 'A';
87 /// Agrega créditos al usuario (false si hay error o no aplica).
88 function addCreditos($n)
90 // El asesor puede preguntar siempre
91 if ($this->esAsesor()) return false;
92 file_log_add($this->_id, "El administrador le agrega $n créditos");
93 return file_creditos_add($this->_id, $n);
96 /// Muestra el usuario como HTML (foto + apellido)
99 return sprintf('<img src="%s" alt="Foto de %s %s" align="middle" /> %s',
100 $this->getFotoFilename(), $this->getNombre(), $this->getApellido(),
101 $this->getApellido());
104 /// Entrada al sistema.
107 file_creditos_login($this->_id); // Actualizamos créditos
108 file_log_add($this->_id, 'Ingreso al sistema');
111 /// Salida del sistema.
114 file_log_add($this->_id, 'Salida del sistema');
118 * Valida que la password del usuario sea correcta.
119 * @return bool true si es correcta.
122 function validar($id, $pass)
124 file_log_add($id, 'Intento de ingreso al sistema');
125 $user = file_users_get($id);
126 if (!$user) return false;
127 return $user[1] == $pass;
131 * Indica si un usuario está asociado.
132 * @return bool true si es correcta.
135 function asociado($id)
137 if (file_users_get($id)) return true;
142 * Chequea si existen 2 admins.
143 * @return string true si existen 2 admins, false de otra forma.
146 function checkAdmins()
148 $admins = @file('data/admins.txt');
149 if (count($admins) < 2) return false;
154 * Asocia a un integrante del grupo.
155 * @return mixed Si hubo error, retorna un string con el error, si no retorna ''.
158 function asociar($id, $pass, $email, $foto, $admin = false)
161 if (!file_int_get($id) and !($ase = file_ase_get($id)))
162 return 'El número de registro no existe! No se puede asociar al grupo!';
163 if (@file_users_get($id))
164 return 'El usuario ya está registrado!';
165 if (!file_users_add($id, $pass, $email))
166 return 'No se pudo agregar el usuario!';
169 if (Usuario::checkAdmins())
170 return 'Ya hay 2 administradores en el sistema!';
171 if (!file_admins_add($id))
172 return 'No se pudo agregar el usuario a la lista de administradores!';
174 if (!$ase) // Si no es asesor, creamos archivo de créditos
176 if (!file_creditos_crear($id))
177 return 'No se pudo crear el archivo de créditos!';
179 if (!copy($foto, "fotos/$id")) return 'No se pudo copiar la foto!';
180 file_log_add($id, 'Se asocia al usuario');
185 * Obtiene una lista de todos los usuarios asociados al sistema.
186 * @return array con los objetos de usuarios.
192 foreach (file_users_get_all() as $u)
194 $r[] = new Usuario($u[0]);