]> git.llucax.com Git - z.facultad/75.43/tp1.git/commitdiff
Se agrega una lib para el manejo de archivo de administradores.
authorLeandro Lucarella <llucax@gmail.com>
Tue, 3 May 2005 04:08:22 +0000 (04:08 +0000)
committerLeandro Lucarella <llucax@gmail.com>
Tue, 3 May 2005 04:08:22 +0000 (04:08 +0000)
src/lib/file.admins.php [new file with mode: 0644]

diff --git a/src/lib/file.admins.php b/src/lib/file.admins.php
new file mode 100644 (file)
index 0000000..650d69d
--- /dev/null
@@ -0,0 +1,85 @@
+<?php
+// vim: set binary noeol et sw=4 sts=4 :
+// Grupo 10
+//
+// Lucarella, Schein, Arena
+//
+// Creado: Leandro Lucarella (mar may  3 00:14:11 ART 2005)
+//
+// $Id$
+
+/**
+ * Indica si ya hay 2 administradores.
+ *
+ * @return true si hay 2 administradores, false si no.
+ */
+function file_admins_check()
+{
+    return count(@file('data/admins.txt', 'r')) > 1;
+}
+
+/**
+ * Indica si un usuario es administrador
+ *
+ * @return true si es administrador, false si no.
+ */
+function file_admins_es_admin($user)
+{
+    if (!($admins = @file('data/admins.txt', 'r'))) return false;
+    foreach ($admins as $admin) if (trim($admin) == $user) return true;
+    return false;
+}
+
+/**
+ * Obtiene los administradores actuales.
+ *
+ * @return array con los administradores actuales (false si hay error).
+ */
+function file_admins_get()
+{
+    if (!($admins = @file('data/admins.txt', 'r'))) return false;
+    if (array_walk($admins, '_file_admins_walk_trim')) return false;
+    return $admins;
+}
+
+/**
+ * Guarda un nuevo administrador.
+ *
+ * @return bool true si no hay error.
+ */
+function file_admins_add($user)
+{
+    if (file_admins_check()) return false; // Si ya hay 2, no se puede agregar
+    if (($f = fopen("data/admins.txt", 'a')) === false) return false;
+    fwrite($f, "$user\n");
+    fclose($f);
+    return true;
+}
+
+/**
+ * Reemplaza un administrador por otro.
+ *
+ * @return bool true si no hay error.
+ */
+function file_admins_replace($viejo, $nuevo)
+{
+    if (($admins = file_admins_get()) === false) return false; // error
+    if (array_walk($admins, '_file_admins_walk_replace', array($viejo, $nuevo)))
+        return false; //error
+    if (($f = fopen("data/admins.txt", 'w')) === false) return false; //error
+    foreach ($admins as $admin) fwrite($f, "$admin\n");
+    fclose($f);
+    return true;
+}
+
+function _file_admins_walk_trim(&$item, $clave)
+{
+    $item = trim($item);
+}
+
+function _file_admins_walk_replace(&$item, $clave, $que)
+{
+    if ($item == $que[0]) $item = $que[1];
+}
+
+?>
\ No newline at end of file