users importer from file to database
authorMatteo Nastasi (mop) <nastasi@alternativeoutput.it>
Wed, 2 Feb 2011 07:21:54 +0000 (08:21 +0100)
committerMatteo Nastasi (mop) <nastasi@alternativeoutput.it>
Wed, 2 Feb 2011 07:21:54 +0000 (08:21 +0100)
TODO.txt
sql/sql.d/005-anagr.sql [deleted file]
sql/sql.d/005-anagr.sql.noinsert [new file with mode: 0644]
web/Obj/brisk.phh
web/Obj/dbase_base.phh
web/Obj/dbase_file.phh
web/Obj/dbase_pgsql.phh
web/admin.php [new file with mode: 0644]

index 6ec54cc..82cae4b 100644 (file)
--- a/TODO.txt
+++ b/TODO.txt
@@ -6,8 +6,11 @@
  ======
  DB: - initial usage
      DONE - configurabilità file o db
-     - travasatore file to pg
-     - sistema di inserimento nuovi utenti
+     DONE - travasatore file to pg
+       - travaso punteggi e gestione punteggi
+          - tab punteggi nel db
+          
+       - sistema di inserimento nuovi utenti (riversatore da form di inserimento)
 
      - modifica password
      - ripristino password
diff --git a/sql/sql.d/005-anagr.sql b/sql/sql.d/005-anagr.sql
deleted file mode 100644 (file)
index d97df09..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
---
--- Populate users db.
---
-
--- macro for user_flag bit-field
--- define(USER_FLAG_TY_ALL,   0x000f0000); // done
--- define(USER_FLAG_TY_NORM,  0x00010000); // done
--- define(USER_FLAG_TY_SUPER, 0x00020000); // done
-
-INSERT INTO #PFX#users VALUES (1, 'uno', md5('one'),   'uno@pluto.com', CAST (X'00020000' as integer));
-INSERT INTO #PFX#users VALUES (2, 'due', md5('two'),   'due@pluto.com', CAST (X'00010000' as integer));
-INSERT INTO #PFX#users VALUES (3, 'tre', md5('thr'),   'tre@pluto.com', CAST (X'00010000' as integer));
-INSERT INTO #PFX#users VALUES (4, 'qua', md5('for'),   'qua@pluto.com', CAST (X'00010000' as integer));
-INSERT INTO #PFX#users VALUES (5, 'cin', md5('fiv'),   'cin@pluto.com', CAST (X'00010000' as integer));
-
diff --git a/sql/sql.d/005-anagr.sql.noinsert b/sql/sql.d/005-anagr.sql.noinsert
new file mode 100644 (file)
index 0000000..d97df09
--- /dev/null
@@ -0,0 +1,15 @@
+--
+-- Populate users db.
+--
+
+-- macro for user_flag bit-field
+-- define(USER_FLAG_TY_ALL,   0x000f0000); // done
+-- define(USER_FLAG_TY_NORM,  0x00010000); // done
+-- define(USER_FLAG_TY_SUPER, 0x00020000); // done
+
+INSERT INTO #PFX#users VALUES (1, 'uno', md5('one'),   'uno@pluto.com', CAST (X'00020000' as integer));
+INSERT INTO #PFX#users VALUES (2, 'due', md5('two'),   'due@pluto.com', CAST (X'00010000' as integer));
+INSERT INTO #PFX#users VALUES (3, 'tre', md5('thr'),   'tre@pluto.com', CAST (X'00010000' as integer));
+INSERT INTO #PFX#users VALUES (4, 'qua', md5('for'),   'qua@pluto.com', CAST (X'00010000' as integer));
+INSERT INTO #PFX#users VALUES (5, 'cin', md5('fiv'),   'cin@pluto.com', CAST (X'00010000' as integer));
+
index 64ed2b3..f9f54f0 100644 (file)
@@ -277,7 +277,6 @@ Copyright 2006-2009 <a href=\\"mailto:brisk@alternativeoutput.it\\">Matteo Nasta
 <br><b>version '.$G_brisk_version.'</b><br><br>
 Copyright 2006-2009 <a href=\\"mailto:brisk@alternativeoutput.it\\">Matteo Nastasi</a> (aka mop)<br><br>');
 
-
 $escinp_from = array( "\""     );
 $escinp_to = array(   "&quot;" );
 
index 2db3934..097e677 100644 (file)
@@ -74,4 +74,11 @@ class LoginDBItem {
 
 }
 
+class LoginDBItemOld extends LoginDBItem {
+    function LoginDBItemOld($login, $pass, $email, $type)
+    {
+        parent::LoginDBItem(-1, $login, $pass, $email, $type);
+    }
+}
+
 ?>
\ No newline at end of file
index 2245efd..2cf1a33 100644 (file)
@@ -123,52 +123,53 @@ class LoginDB {
     }
 
     function &login_verify($login, $pass)
-        {
-            GLOBAL $G_false;
-
-            $ret = &$G_false;
-
-            log_main("login_verify: ".$login);
+    {
+        GLOBAL $G_false;
         
-            /* check the existence of the nick in the LoginDB */
-            for ($i = 0 ; $i < $this->item_n ; $i++) {
-                log_main("login_verify: LOOP");
-                if (strcasecmp($this->item[$i]->login, $login) == 0) {
-                    log_main("login[".$i."]: ".$this->item[$i]->login);
-
-                    /* if it exists check for a valid challenge */
-                    if (($a_sem = Challenges::lock_data()) != FALSE) { 
-          
-                        if (($chals = &Challenges::load_data()) != FALSE) {
-                            for ($e = 0 ; $e < $chals->item_n ; $e++) {
-              
-                                log_main("challenge[".$i."]: ".$chals->item[$e]->login);
-                                if (strcmp($login, $chals->item[$e]->login) == 0) {
-                                    log_main("login_verify [".$pass."] with [".md5($chals->item[$e]->token.$this->item[$i]->pass)."]");
-                  
-                                    if (strcmp($pass , md5($chals->item[$e]->token.$this->item[$i]->pass)) == 0) {
-                                        log_main("login_verify SUCCESS for ".$login);
-   
-                                        $chals->rem($login);
-                                        $ret = &$this->item[$i];
-                                        break;
-                                    }
+        $ret = &$G_false;
+        
+        log_main("login_verify: ".$login);
+        
+        /* check the existence of the nick in the LoginDB */
+        for ($i = 0 ; $i < $this->item_n ; $i++) {
+            log_main("login_verify: LOOP");
+            if (strcasecmp($this->item[$i]->login, $login) == 0) {
+                log_main("login[".$i."]: ".$this->item[$i]->login);
+                
+                /* if it exists check for a valid challenge */
+                if (($a_sem = Challenges::lock_data()) != FALSE) { 
+                    
+                    if (($chals = &Challenges::load_data()) != FALSE) {
+                        for ($e = 0 ; $e < $chals->item_n ; $e++) {
+                            
+                            log_main("challenge[".$i."]: ".$chals->item[$e]->login);
+                            if (strcmp($login, $chals->item[$e]->login) == 0) {
+                                log_main("login_verify [".$pass."] with [".md5($chals->item[$e]->token.$this->item[$i]->pass)."]");
+                                
+                                if (strcmp($pass , md5($chals->item[$e]->token.$this->item[$i]->pass)) == 0) {
+                                    log_main("login_verify SUCCESS for ".$login);
+                                    
+                                    $chals->rem($login);
+                                    $ret = &$this->item[$i];
+                                    break;
                                 }
-                            } // end for ($e = 0 ...
-                        }
-
-                        if ($chals->ismod()) {
-                            Challenges::save_data(&$chals);
-                        }
-          
-                        Challenges::unlock_data($a_sem);
+                            }
+                        } // end for ($e = 0 ...
                     }
-                    break;
-                } //  if (strcasecmp($this->item[$i]->login, ...
-            }
-
-            return ($ret);
+                    
+                    if ($chals->ismod()) {
+                        Challenges::save_data(&$chals);
+                    }
+                    
+                    Challenges::unlock_data($a_sem);
+                }
+                break;
+            } //  if (strcasecmp($this->item[$i]->login, ...
         }
+        
+        return ($ret);
+    }
+    
 } // End class LoginDB
 
 ?>
\ No newline at end of file
index 510987f..ff314b1 100644 (file)
 require_once("Obj/dbase_base.phh");
 
 $escsql_from = array( "\\",   "'"   );
-$escsql_to = array(   "\\\\", "\\'" );
-
+$escsql_to   = array( "\\\\", "\\'" );
 
 function escsql($s)
 {
     GLOBAL $escsql_from, $escsql_to;
-    
+
     return str_replace($escsql_from, $escsql_to, $s);
 }
 
@@ -185,8 +184,58 @@ class LoginDB
         
         return ($ret->email);
     }
+
+    function addusers_from_olddb($olddb, &$cont)
+    {
+        GLOBAL $G_dbpfx;
+
+        for ($i = 0 ; $i < $olddb->count() ; $i++) {
+            $user_sql = sprintf("INSERT INTO %susers ( login, pass, email, type) VALUES ('%s', '%s', '%s', %d);",
+                                $G_dbpfx, escsql($olddb->item[$i]->login), escsql($olddb->item[$i]->pass),
+                                escsql($olddb->item[$i]->email), $olddb->item[$i]->type & USER_FLAG_TY_ALL); 
+            
+            // if ( ! (($user_pg = pg_exec($dbconn,$order_add_sql)) != FALSE && pg_affected_rows($order_pg) == 1) ) {
+
+            if ( ! (($user_pg  = pg_query($this->dbconn->db(), $user_sql)) != FALSE && pg_affected_rows($user_pg) == 1) ) {
+                $cont .= sprintf("ERROR IN LINE: %s\n", eschtml($user_sql));
+
+                return FALSE;
+            }
+        }
+        return TRUE;
+    }
 } // End class LoginDB
 
+class LoginDBOld 
+{
+    var $item;
+    var $item_n;
+
+    function LoginDBOld($filename)
+    {
+        GLOBAL $DOCUMENT_ROOT;
+        log_main("LoginDBOld create:start");
+
+        if (file_exists("$DOCUMENT_ROOT/Etc/".$filename)) {
+            require("$DOCUMENT_ROOT/Etc/".$filename);
+        }
+        else {
+            return (FALSE);
+        }
+        $this->item_n = count($this->item);
+        log_main("LoginDBOld create:end");
+    }
+
+    function count()
+    {
+        return ($this->item_n);
+    }
+
+
+
+}
+
+
     if (0 == 1) {
         
         
@@ -255,52 +304,52 @@ class LoginDB
     }
 
     function &login_verify($login, $pass)
-        {
-            GLOBAL $G_false;
-
-            $ret = &$G_false;
-
-            log_main("login_verify: ".$login);
+    {
+        GLOBAL $G_false;
         
-            /* check the existence of the nick in the LoginDB */
-            for ($i = 0 ; $i < $this->item_n ; $i++) {
-                log_main("login_verify: LOOP");
-                if (strcasecmp($this->item[$i]->login, $login) == 0) {
-                    log_main("login[".$i."]: ".$this->item[$i]->login);
-
-                    /* if it exists check for a valid challenge */
-                    if (($a_sem = Challenges::lock_data()) != FALSE) { 
-          
-                        if (($chals = &Challenges::load_data()) != FALSE) {
-                            for ($e = 0 ; $e < $chals->item_n ; $e++) {
-              
-                                log_main("challenge[".$i."]: ".$chals->item[$e]->login);
-                                if (strcmp($login, $chals->item[$e]->login) == 0) {
-                                    log_main("login_verify [".$pass."] with [".md5($chals->item[$e]->token.$this->item[$i]->pass)."]");
-                  
-                                    if (strcmp($pass , md5($chals->item[$e]->token.$this->item[$i]->pass)) == 0) {
-                                        log_main("login_verify SUCCESS for ".$login);
-   
-                                        $chals->rem($login);
-                                        $ret = &$this->item[$i];
-                                        break;
-                                    }
+        $ret = &$G_false;
+        
+        log_main("login_verify: ".$login);
+        
+        /* check the existence of the nick in the LoginDB */
+        for ($i = 0 ; $i < $this->item_n ; $i++) {
+            log_main("login_verify: LOOP");
+            if (strcasecmp($this->item[$i]->login, $login) == 0) {
+                log_main("login[".$i."]: ".$this->item[$i]->login);
+                
+                /* if it exists check for a valid challenge */
+                if (($a_sem = Challenges::lock_data()) != FALSE) { 
+                    
+                    if (($chals = &Challenges::load_data()) != FALSE) {
+                        for ($e = 0 ; $e < $chals->item_n ; $e++) {
+                            
+                            log_main("challenge[".$i."]: ".$chals->item[$e]->login);
+                            if (strcmp($login, $chals->item[$e]->login) == 0) {
+                                log_main("login_verify [".$pass."] with [".md5($chals->item[$e]->token.$this->item[$i]->pass)."]");
+                                
+                                if (strcmp($pass , md5($chals->item[$e]->token.$this->item[$i]->pass)) == 0) {
+                                    log_main("login_verify SUCCESS for ".$login);
+                                    
+                                    $chals->rem($login);
+                                    $ret = &$this->item[$i];
+                                    break;
                                 }
-                            } // end for ($e = 0 ...
-                        }
-
-                        if ($chals->ismod()) {
-                            Challenges::save_data(&$chals);
-                        }
-          
-                        Challenges::unlock_data($a_sem);
+                            }
+                        } // end for ($e = 0 ...
                     }
-                    break;
-                } //  if (strcasecmp($this->item[$i]->login, ...
-            }
-
-            return ($ret);
+                    
+                    if ($chals->ismod()) {
+                        Challenges::save_data(&$chals);
+                    }
+                    
+                    Challenges::unlock_data($a_sem);
+                }
+                break;
+            } //  if (strcasecmp($this->item[$i]->login, ...
         }
+        
+        return ($ret);
+    }
 
  } // if (0 == 1) {
 
diff --git a/web/admin.php b/web/admin.php
new file mode 100644 (file)
index 0000000..a3857ac
--- /dev/null
@@ -0,0 +1,73 @@
+<?php
+  /*
+   *  brisk - admin.php
+   *
+   *  Copyright (C) 2006-2011 Matteo Nastasi
+   *                          mailto: nastasi@alternativeoutput.it 
+   *                                  matteo.nastasi@milug.org
+   *                          web: http://www.alternativeoutput.it
+   *
+   * This program is free software; you can redistribute it and/or modify
+   * it under the terms of the GNU General Public License as published by
+   * the Free Software Foundation; either version 2 of the License, or
+   * (at your option) any later version.
+   *
+   * This program is distributed in the hope that it will be useful, but
+   * WITHOUT ANY WARRANTY; without even the implied warranty of
+   * MERCHANTABLILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+   * General Public License for more details. You should have received a
+   * copy of the GNU General Public License along with this program; if
+   * not, write to the Free Software Foundation, Inc, 59 Temple Place -
+   * Suite 330, Boston, MA 02111-1307, USA.
+   *
+   */
+    
+require_once("Obj/brisk.phh");
+require_once("Obj/dbase_pgsql.phh");
+
+$cont = "";
+
+function main()
+{
+    GLOBAL $cont, $G_alarm_passwd, $F_pass_private, $F_ACT, $F_filename;
+
+    if ($F_ACT == "append") {
+        do {
+            if ($F_pass_private != $G_alarm_passwd) {
+                $cont .= sprintf("Wrong password, operation aborted.<br>\n");
+                break;
+            }
+            $cont .= sprintf("FILENAME: %s<br>\n", $F_filename); 
+            if (($olddb = new LoginDBOld($F_filename)) == FALSE) {
+                $cont .= sprintf("Loading failed.<br>\n"); 
+                break;
+            }
+            $newdb = new LoginDB();
+            if ($newdb->addusers_from_olddb($olddb, $cont) == FALSE) {
+                $cont .= sprintf("Insert failed.<br>\n"); 
+            }
+            $cont .= sprintf("Item number: %d<br>\n", $olddb->count());
+        } while (0);
+    }
+}
+
+main();
+
+?>
+<html>
+<body>
+<?php
+echo "$cont";
+?>
+<b>Append users from a file</b><br>
+<form accept-charset="utf-8" method="post" action="<?php echo $PHP_SELF;?>" onsubmit="return j_login_manager(this);">
+      <input type="hidden" name="F_ACT" value="append">
+      <table><tr><td>Admin Password:</td>
+      <td><input name="F_pass_private" type="password" value=""></td></tr>
+      <tr><td>Filename:</td>
+      <td><input type="text" name="F_filename"></td></tr>
+      <tr><td colspan=2><input type="submit" value="append users"></td></tr>
+      </table>
+</form>
+</body>
+</html>
\ No newline at end of file