Pārlūkot izejas kodu

Versione @0.2.1

gine 8 gadi atpakaļ
vecāks
revīzija
43493faeab
47 mainītis faili ar 2551 papildinājumiem un 0 dzēšanām
  1. 6 0
      config/db.php
  2. 399 0
      include/Database.c.php
  3. 381 0
      include/Database.php
  4. 79 0
      include/OExceptions.php
  5. 11 0
      include/apteryx_text.php
  6. 112 0
      include/localization.php
  7. 64 0
      include/randomimg.php
  8. 68 0
      include/template.php
  9. 85 0
      include/util.php
  10. 111 0
      index.php
  11. 15 0
      res/css/apteryx.css
  12. 10 0
      res/file/CHANGELOG
  13. 2 0
      res/file/TODO
  14. BIN
      res/images/orologio1.png
  15. BIN
      res/images/orologio10.png
  16. BIN
      res/images/orologio11.png
  17. BIN
      res/images/orologio12.png
  18. BIN
      res/images/orologio13.png
  19. BIN
      res/images/orologio14.png
  20. BIN
      res/images/orologio15.png
  21. BIN
      res/images/orologio2.png
  22. BIN
      res/images/orologio3.png
  23. BIN
      res/images/orologio4.png
  24. BIN
      res/images/orologio5.png
  25. BIN
      res/images/orologio6.png
  26. BIN
      res/images/orologio7.png
  27. BIN
      res/images/orologio8.png
  28. BIN
      res/images/orologio9.png
  29. 53 0
      res/locale/apteryx.pot
  30. 54 0
      res/locale/en_US/LC_MESSAGES/apteryx.po
  31. BIN
      res/locale/en_US/LC_MESSAGES/messages.mo
  32. 111 0
      res/locale/en_US/LC_MESSAGES/messages.po
  33. 76 0
      res/locale/en_US/LC_MESSAGES/otdblib.po
  34. 54 0
      res/locale/eo/LC_MESSAGES/apteryx.po
  35. BIN
      res/locale/eo/LC_MESSAGES/messages.mo
  36. 112 0
      res/locale/eo/LC_MESSAGES/messages.po
  37. 74 0
      res/locale/eo/LC_MESSAGES/otdblib.po
  38. 54 0
      res/locale/eo_EO/LC_MESSAGES/apteryx.po
  39. BIN
      res/locale/eo_EO/LC_MESSAGES/messages.mo
  40. 112 0
      res/locale/eo_EO/LC_MESSAGES/messages.po
  41. 74 0
      res/locale/eo_EO/LC_MESSAGES/otdblib.po
  42. 54 0
      res/locale/it_IT/LC_MESSAGES/apteryx.po
  43. BIN
      res/locale/it_IT/LC_MESSAGES/messages.mo
  44. 112 0
      res/locale/it_IT/LC_MESSAGES/messages.po
  45. 76 0
      res/locale/it_IT/LC_MESSAGES/otdblib.po
  46. 117 0
      res/locale/messages.pot
  47. 75 0
      res/locale/otdblib.pot

+ 6 - 0
config/db.php

@@ -0,0 +1,6 @@
+<?php
+	$dbms_server="10.42.1.61";
+//	$dbms_server="127.0.0.1";
+	$dbms_port="3306";
+//	$dbms_port="33306";
+?>

+ 399 - 0
include/Database.c.php

@@ -0,0 +1,399 @@
+<?php
+define('ERR_DB_RES','0');
+define('ERR_DB_ERR','1');
+
+require_once 'OExceptions.php';
+
+/**
+ * Wrapper per le funzioni di libreria php mysqli
+ * 
+ * @author gine
+ * @original author: Micah Carrick
+ * @version: 1.1.1
+ * @licence: GPL 2
+ *
+ */
+class Database {
+	/**
+	 * Ricordati di settarla a FALSE per tutti i programmi  
+	 * in cui usi questa classe.
+	 */
+	private $debug=FALSE;
+	
+	private static $m_pInstance = array();
+    private $last_query;     // last query executed.
+    var $row_count;          // last number of rows
+	var $db_link;            // current/last database link identifier
+    private $auto_slashes;       // the class will add/strip slashes when it can
+    private $host, $user, $pw, $db, $port;
+    /**
+     * Costruttore della classe che si interfaccia con il dbms. Privata per via del Singleton.
+     * 
+     * @param string $db
+     */
+    private function Database($db) {
+    	$dbConfPath=dirname(__FILE__).'/../config/';
+    	
+    	include($dbConfPath.'db.php');
+    	if ($db == "dns")
+    		include($dbConfPath.'smdns_db.php');
+    	elseif ($db == "db") {
+    		include($dbConfPath.'mysql_db.php');
+    		require_once dirname(__FILE__).'/../lib/terminal.php';
+    		$dbms_password=prompt_silent();
+    	} elseif ($db == "ot") 
+    	    include($dbConfPath.'ot_db.php');
+    	elseif($db == "std") 
+    		include($dbConfPath.'config.php');
+    	
+
+        $this->host = $dbms_server;
+        $this->user = $dbms_user;
+        $this->pw = $dbms_password;
+        $this->db = $dbms_db;
+        $this->port = $dbms_port;
+
+        $this->auto_slashes = true;
+        
+        self::connect();
+    }
+    
+    /**
+     * Singleton multiplo del costruttore della classe Database. Ritorna un istanza della classe.
+     * $db può essere: ot, dns, db, ftp. Default: ot
+     * 
+     * @param string $db
+     * @return Mysqli_link $m_pInstance
+     */
+    public static function getInstance($db='ot'){
+    	if (!isset(self::$m_pInstance[$db])){
+    		self::$m_pInstance[$db] = new Database($db);
+    	}
+    	
+    	return self::$m_pInstance[$db];
+    }
+    
+    /**
+     * Esegue la connect al dbms. 
+     * I parametri, se configurato il costruttore correttamente, sono opzionali. Ritorna un mysqli_link. 
+     * 
+     * Solleva un eccezione se ci sono problemi di connessione.
+     * 
+     * @param url $host
+     * @param string $user
+     * @param string $pw
+     * @param string $db
+     * @param int $port
+     * @throws DbErrException
+     * @return Mysqli_link $db_link
+	 *    
+     */
+    function connect($host='', $user='', $pw='', $db='', $port='') {
+        if (!empty($host)) $this->host = $host;
+        if (!empty($user)) $this->user = $user;
+        if (!empty($pw)) $this->pw = $pw;
+        if (!empty($pw)) $this->port = $port;
+
+        $this->db_link = mysqli_init();
+		mysqli_real_connect($this->db_link , $this->host, $this->user, $this->pw, $this->db, $this->port);
+        if (!$this->db_link)
+            $this->callException(_("Database connection problem"),E_DB_ERR);
+
+        return $this->db_link;
+    }
+    
+    private function setDebugErr($msg){
+    	$err['text']=$msg;
+    	$err['code']=0;
+    
+    	if($this->debug){
+    		$err['text'].="\n".$this->last_query;
+    		$err['code']=mysqli_errno($this->db_link);
+    	}
+    	
+    	return $err;
+    }
+    
+    private function callException($msg,$e_type){
+    	$err=$this->setDebugErr($msg);
+    	if($e_type == ERR_DB_RES)
+    		throw new DbResException($err['text'],$err['code']);
+    	elseif($e_type == ERR_DB_ERR)
+    		throw new DbErrException($err['text'],$err['code']);
+    	else {
+    		die(_("what shit!"));
+    		exit;
+    	}
+    }
+    
+    /**
+     * Selezioziona il database ritorna TRUE se selezionato correttamente.
+     * Solleva una Exception in caso di fallimento.
+     * 
+     * @param string $db
+     * @throws DbErrException
+     * @return boolean
+     */
+    function selectDb($db='') {
+        if (!empty($db)) $this->db = $db;
+
+        if (!mysqli_select_db($this->db_link,$this->db))
+        	$this->callException(_("Database selection problem"),E_DB_ERR);	
+
+        return true;
+    }
+    
+    /**
+     * Esegue una SELECT espressa con una SqlQuery. 
+     * Utile quando non si conosce in numero di righe o colonne che potrebbero tornare. 
+     * Ritorna un oggetto mysqli_result. Solleva una eccezione sul fallimento.
+     * 
+     * @param SqlQuery $sql
+     * @throws DbErrException
+     * @return mixed
+     */
+    function select($sql) {
+        $this->last_query = $sql;
+
+        $r = mysqli_query($this->db_link,$sql);
+        if (!$r)
+            $this->callException(_("Query select error"),E_DB_ERR);
+
+        $this->row_count = mysqli_num_rows($r);
+
+        return $r;
+    }
+    
+    /**
+     * Esegue una SELECT il cui risultato deve essere 1 sola riga.
+     * Ritorna la riga. Solleva un eccezzione DbResException altrimenti.
+     *
+     * @param SqlQuery $sql
+     * @param [String cMsg] : customMessage
+     * @throws DbResException
+     * @return mixed
+     */
+    function selectOneRow($sql,$cMsg=NULL) {
+    	$msg=$sMsg=NULL;
+    	
+    	$r = self::select($sql);
+    	if ($this->row_count > 1) 
+    		$sMsg=_(" more than one result.");
+		elseif ($this->row_count < 1) 
+    		$sMsg=_(" query returned less than one result.");
+    	
+    	if($sMsg!=NULL && $cMsg==NULL)
+    		$msg=_("Your query returned").$sMsg;
+    	elseif ($sMsg!=NULL && $cMsg != NULL)
+    		$msg=$cMsg;
+    	
+    	if($msg!=NULL)
+    		$this->callException($msg,ERR_DB_RES);
+    	
+    	return mysqli_fetch_row($r);
+    }
+
+    /**
+     * Esegue una SELECT il cui risultato deve essere 1 sola cella. 
+     * Ritorna la cella. Solleva un eccezzione DbResException altrimenti.
+     * 
+     * @param SqlQuery $sql
+     * @throws DbResException
+     * @return mixed
+     */
+    function selectFirstRowFirstCell($sql) {
+        $r = $this->select($sql);
+
+        if ($this->row_count > 1 or $this->row_count < 1)
+            $this->callException(_("Your query returned more or less that one result."),ERR_DB_RES);
+
+        $ret = mysqli_fetch_row($r);
+
+        if ($this->auto_slashes)
+            return stripslashes($ret[0]);
+        else
+            return $ret[0];
+    }
+
+    /**
+     * Esegue una select il cui risultato deve essere un array composto da
+     * una sola cella per riga. Solleva un eccezzione DbResException altrimenti.
+     * 
+     * @param SqlQuery $sql
+     * @throws DbResException
+     * @return array
+     */
+    function selectArrayOneElem($sql) {
+    	$arr=array();
+    	
+    	$r= $this->select($sql); 
+    	for ($i=0; $i<$this->row_count;$i++){
+    		$row=mysqli_fetch_row($r);
+    		if (isset($row[1]))
+    			$this->callException(_("Your query return more than 1 element for row."),ERR_DB_RES);
+    			
+    		$arr[$i]=$row[0];
+    	}
+    
+    	return $arr;
+    }
+    
+    /**
+     * Esegue una select il cui risultato deve essere un array composto da
+     * una $n celle per riga. Solleva un eccezzione DbResException altrimenti.
+     * Se $n non è specificato non viene effettuato nessun controllo sul 
+     * numero di elementi per riga.
+     *
+     * @param SqlQuery $sql
+     * @throws DbResException
+     * @return array
+     */
+    function selectArrayNElem($sql,$n=NULL) {
+    	$arr=array();
+    	 
+    	$r= $this->select($sql);
+    	for ($i=0; $i<$this->row_count;$i++){
+    		$row=mysqli_fetch_row($r);
+    		if($n!=NULL){
+    			if (isset($row[$n]))
+    				$this->callException(sprintf(_("Your query return more than %s element for row."),$n),ERR_RES);
+    		}
+    		$arr[$i]=$row;
+    	}
+    
+    	return $arr;
+    }
+    
+    /**
+     * Torna il numero di righe affette dalla query.
+     * Da utilizzare con INSERT DELETE e UPDATE 
+     * 
+     * @param SqlQuery $sql
+     * @throws DbResException
+     * @return int
+     */
+    function execQuery($sql) {
+		$this->last_query = $sql;
+
+    	$r = mysqli_query($this->db_link,$sql);
+    	if (!$r)
+    		$this->callException(_("Query error"),ERR_DB_ERR);
+    	
+    	return $this->row_count = mysqli_affected_rows($this->db_link);
+    }
+
+    /**
+     * Eseque una SqlQuery il cui risultato deve aver avuto effetto su 1 sola riga. 
+     * Ritorna TRUE o solleva una eccezione altrimenti.
+     * 
+     * @param SqlQuery $sql
+     * @param [String cMsg] : customMessage
+     * @throws DbResException
+     * @return boolean
+     */
+    function execQueryOneRow($sql,$cMsg=NULL) {
+    	$msg=$sMsg=NULL;
+    	
+        self::execQuery($sql);
+        if ($this->row_count == 0)
+            $sMsg=_("No row affected");
+        elseif($this->row_count > 1)
+             $sMsg=_("More than 1 row are affected");
+        
+        if($sMsg!=NULL && $cMsg==NULL)
+    		$msg=$sMsg;
+    	elseif ($sMsg!=NULL && $cMsg != NULL)
+    		$msg=$cMsg;
+    	
+    	if($msg!=NULL)
+    		$this->callException($msg,ERR_DB_RES);
+    }
+
+    /**
+     *  Eseque una execQueryOneRow e ritorna l'ID della riga inserita. 
+     *  Ottenuto tramite AUTOINCREMENT; comoda per le INSERT.
+     *  
+     * @param SqlQuery $sql
+     */
+    function execQueryRetId($sql) {
+        $this->execQueryOneRow($sql);
+        
+        return mysqli_insert_id($this->db_link);
+    }
+
+    /**
+     * Esegue una SELECT con $sql per verificare la presenza di un "id", se non esiste torna FALSE.
+     * Altrimenti torna l'ID cercato con la select. 
+     * Se ritornano più risultati solleva un DbResException.
+     *
+     * @param SelectSqlQuery $sql
+     * @return mixed
+     */
+    function isThereAlready($sql){
+    	$id=FALSE;
+    	
+    	$res=self::select($sql);
+    	if($this->row_count == 1){
+    		$row=mysqli_fetch_row($res);
+    		$id=$row[0];
+    	} elseif($this->row_count > 1 ) {
+    		$this->callException(_("Are present more than 1 row"),ERR_DB_RES);
+    	}
+    	
+    	return $id;
+    }
+    
+    function escapeString($string){
+    	return mysqli_real_escape_string($this->db_link,$string);
+    }
+    
+    /**
+     * Esegue un flush dei privilegi degli utenti mysql. 
+     * Serve per assicurare  che le operazioni effettuate con altre funzioni, 
+		 * come la creazione o la eliminazione di un utente, siano attive. 
+     */
+    function flushPrivileges(){
+    	self::execQuery("FLUSH PRIVILEGES");
+    }
+    /**
+     * Se $debug è TRUE stampa la query $sql altrimenti tramite reflection esegue il metodo $action sulla query.
+     * 
+     * @param boolean $debug TRUE|FALSE
+     * @param String $action Metodi della Classe Database
+     * @param SqlQuery $sql
+     */
+    function sqlOrDebug($debug,$action,$sql){
+    	if (! $debug)
+    		self::$action($sql);
+    	else
+    		echo "DEBUG:OR: ".str_replace(array("\n","\r","\t","/\s\s+/"),"",$sql)."\n";
+    }
+    /**
+     * Se $debug è FALSE esegue tramite reflection il metodo $action sulla query $sql, altrimenti stampa anche la query.
+     *
+     * @param boolean $debug TRUE|FALSE
+     * @param String $action Metodi della Classe Database
+     * @param SqlQuery $sql
+     */
+    function sqlAndDebug($debug,$action,$sql){
+    	if ($debug)
+    		echo "DEBUG:AND: ".str_replace(array("\n","\r","\t","/\s\s+/"),"",$sql)."\n";
+    	
+    	return self::$action($sql);
+    }
+    
+    /**
+     * Ritorna l'ultimo errore ottenuto durante le azioni precedenti sul database.
+     */
+    public function getLastError() {
+        return $this->last_error;
+    }
+    
+    /**
+    * Ritorna l'ultima query effettuata
+    */
+    public function getLastQuery() {
+        return $this->last_query;
+    }
+} 
+?>

+ 381 - 0
include/Database.php

@@ -0,0 +1,381 @@
+<?php
+require_once 'OExceptions.php';
+
+define('E_DB_RES','0');
+define('E_DB_ERR','1');
+
+/**
+ * Wrapper per le funzioni di libreria php mysqli
+ * 
+ * @author gine
+ * @original author: Micah Carrick
+ * @version: 1.1
+ * @licence: GPL 2
+ *
+ */
+class Database {
+	/**
+	 * Ricordati di settarla a FALSE per tutti i programmi  
+	 * in cui usi questa classe.
+	 */
+	private $debug=FALSE;
+	
+	private static $m_pInstance = array();
+    private $last_query;     // last query executed.
+    var $row_count;          // last number of rows
+	var $db_link;            // current/last database link identifier
+    private $auto_slashes;       // the class will add/strip slashes when it can
+    private $host, $user, $pw, $db, $port;
+
+    /**
+     * Costruttore della classe che si interfaccia con il dbms. Privata per via del Singleton.
+     * 
+     * @param string $db
+     */
+    private function Database($db) {
+    	$dbConfPath=dirname(__FILE__).'/../config/';
+    	
+    	include($dbConfPath.'db.php');
+    	if ($db == "dns")
+    		include($dbConfPath.'smdns_db.php');
+    	elseif ($db == "db") {
+    		include($dbConfPath.'mysql_db.php');
+    		require_once dirname(__FILE__).'/../lib/terminal.php';
+    		$dbms_password=prompt_silent();
+    	} elseif ($db == "ot") 
+    	    include($dbConfPath.'ot_db.php');
+    	elseif($db == "std") 
+    		include($dbConfPath.'config.php');
+    	
+
+        $this->host = $dbms_server;
+        $this->user = $dbms_user;
+        $this->pw = $dbms_password;
+        $this->db = $dbms_db;
+        $this->port = $dbms_port;
+
+        $this->auto_slashes = true;
+        
+        self::connect();
+    }
+    
+    /**
+     * Singleton multiplo del costruttore della classe Database. Ritorna un istanza della classe.
+     * $db può essere: ot, dns, db, ftp. Default: ot
+     * 
+     * @param string $db
+     * @return Mysqli_link $m_pInstance
+     */
+    public static function getInstance($db='ot'){
+    	if (!isset(self::$m_pInstance[$db])){
+    		self::$m_pInstance[$db] = new Database($db);
+    	}
+    	
+    	return self::$m_pInstance[$db];
+    }
+    
+    /**
+     * Esegue la connect al dbms. 
+     * I parametri, se configurato il costruttore correttamente, sono opzionali. Ritorna un mysqli_link. 
+     * 
+     * Solleva un eccezione se ci sono problemi di connessione.
+     * 
+     * @param url $host
+     * @param string $user
+     * @param string $pw
+     * @param string $db
+     * @param int $port
+     * @throws DbErrException
+     * @return Mysqli_link $db_link
+	 *    
+     */
+    function connect($host='', $user='', $pw='', $db='', $port='') {
+        if (!empty($host)) $this->host = $host;
+        if (!empty($user)) $this->user = $user;
+        if (!empty($pw)) $this->pw = $pw;
+        if (!empty($pw)) $this->port = $port;
+
+        $this->db_link = mysqli_init();
+		mysqli_real_connect($this->db_link , $this->host, $this->user, $this->pw, $this->db, $this->port);
+        if (!$this->db_link)
+            $this->callException(_("Database connection problem."),E_DB_ERR);
+        return $this->db_link;
+    }
+    
+    private function setDebugErr($msg){
+    	$err['text']=$msg;
+    	$err['code']=0;
+    
+    	if($this->debug){
+    		$err['text'].="\n".$this->last_query;
+    		$err['code']=mysqli_errno($this->db_link);
+    	}
+    	
+    	return $err;
+    }
+    
+    private function callException($msg,$e_type){
+    	$err=$this->setDebugErr($msg);
+    	if($e_type == E_DB_RES)
+    		throw new DbResException($err['text'],$err['code']);
+    	elseif($e_type == E_DB_ERR)
+    		throw new DbErrException($err['text'],$err['code']);
+    	else {
+    		die(_("what shit?!"));
+    		exit;
+    	}
+    }
+    
+    /**
+     * Selezioziona il database ritorna TRUE se selezionato correttamente.
+     * Solleva una Exception in caso di fallimento.
+     * 
+     * @param string $db
+     * @throws DbErrException
+     * @return boolean
+     */
+    function selectDb($db='') {
+        if (!empty($db)) $this->db = $db;
+
+        if (!mysqli_select_db($this->db_link,$this->db))
+        	$this->callException(_("Database selection problem."),E_DB_ERR);	
+
+        return true;
+    }
+    
+    /**
+     * Esegue una SELECT espressa con una SqlQuery. 
+     * Utile quando non si conosce in numero di righe o colonne che potrebbero tornare. 
+     * Ritorna un oggetto mysqli_result. Solleva una eccezione sul fallimento.
+     * 
+     * @param SqlQuery $sql
+     * @throws DbErrException
+     * @return mixed
+     */
+    function select($sql) {
+        $this->last_query = $sql;
+
+        $r = mysqli_query($this->db_link,$sql);
+        if (!$r)
+            $this->callException(_("Query select error."),E_DB_ERR);
+
+        $this->row_count = mysqli_num_rows($r);
+
+        return $r;
+    }
+    
+    /**
+     * Esegue una SELECT il cui risultato deve essere 1 sola riga.
+     * Ritorna la riga. Solleva un eccezzione DbResException altrimenti.
+     *
+     * @param SqlQuery $sql
+     * @throws DbResException
+     * @return mixed
+     */
+    function selectOneRow($sql) {
+    	$oi=_("Your query returned ");
+    	$r = self::select($sql);
+    
+    	if ($this->row_count > 1)
+    		$this->callException($oi._("more than one result."),ERR_DB_RES);
+    	elseif ($this->row_count < 1)	
+    		$this->callException($oi._("less than one result."),ERR_DB_RES);
+    
+    	return mysqli_fetch_row($r);
+    }
+
+    /**
+     * Esegue una SELECT il cui risultato deve essere 1 sola cella. 
+     * Ritorna la cella. Solleva un eccezzione DbResException altrimenti.
+     * 
+     * @param SqlQuery $sql
+     * @throws DbResException
+     * @return mixed
+     */
+    function selectFirstRowFirstCell($sql) {
+        $r = $this->select($sql);
+
+        if ($this->row_count > 1 or $this->row_count < 1)
+            $this->callException(_("Your query returned more or less that one result."),ERR_DB_RES);
+
+        $ret = mysqli_fetch_row($r);
+
+        if ($this->auto_slashes)
+            return stripslashes($ret[0]);
+        else
+            return $ret[0];
+    }
+
+    /**
+     * Esegue una select il cui risultato deve essere un array composto da
+     * una sola cella per riga. Solleva un eccezzione DbResException altrimenti.
+     * 
+     * @param SqlQuery $sql
+     * @throws DbResException
+     * @return array
+     */
+    function selectArrayOneElem($sql) {
+    	$arr=array();
+    	
+    	$r= $this->select($sql); 
+    	for ($i=0; $i<$this->row_count;$i++){
+    		$row=mysqli_fetch_row($r);
+    		if (isset($row[1]))
+    			$this->callException(_("Your query return more than 1 element for row."),ERR_DB_RES);
+    			
+    		$arr[$i]=$row[0];
+    	}
+    
+    	return $arr;
+    }
+    
+    /**
+     * Esegue una select il cui risultato deve essere un array composto da
+     * una $n celle per riga. Solleva un eccezzione DbResException altrimenti.
+     * Se $n non è specificato non viene effettuato nessun controllo sul 
+     * numero di elementi per riga.
+     *
+     * @param SqlQuery $sql
+     * @throws DbResException
+     * @return array
+     */
+    function selectArrayNElem($sql,$n=NULL) {
+    	$arr=array();
+    	 
+    	$r= $this->select($sql);
+    	for ($i=0; $i<$this->row_count;$i++){
+    		$row=mysqli_fetch_row($r);
+    		if($n!=NULL){
+    			if (isset($row[$n]))
+    				$this->callException(sprintf(_("Your query return more than %s element for row."),$n),ERR_RES);
+    		}
+    		$arr[$i]=$row;
+    	}
+    
+    	return $arr;
+    }
+    
+    /**
+     * Torna il numero di righe affette dalla query.
+     * Da utilizzare con INSERT DELETE e UPDATE 
+     * 
+     * @param SqlQuery $sql
+     * @throws DbResException
+     * @return int
+     */
+    function execQuery($sql) {
+		$this->last_query = $sql;
+
+    	$r = mysqli_query($this->db_link,$sql);
+    	if (!$r)
+    		$this->callException(_("Query error."),E_DB_ERR);
+    	
+    	return $this->row_count = mysqli_affected_rows($this->db_link);
+    }
+
+    /**
+     * Eseque una SqlQuery il cui risultato deve aver avuto effetto su 1 sola riga. 
+     * Ritorna TRUE o solleva una eccezione altrimenti.
+     * 
+     * @param SqlQuery $sql
+     * @throws DbResException
+     * @return boolean
+     */
+    function execQueryOneRow($sql) {
+        self::execQuery($sql);
+        if ($this->row_count == 0)
+            $this->callException(_("No row affected."),ERR_RES);
+        elseif($this->row_count > 1)
+            $this->callException(_("More than 1 row are affected."),ERR_DB_RES);
+    }
+
+    /**
+     *  Eseque una execQueryOneRow e ritorna l'ID della riga inserita. 
+     *  Ottenuto tramite AUTOINCREMENT; comoda per le INSERT.
+     *  
+     * @param SqlQuery $sql
+     */
+    function execQueryRetId($sql) {
+        $this->execQueryOneRow($sql);
+        
+        return mysqli_insert_id($this->db_link);
+    }
+
+    /**
+     * Esegue una SELECT con $sql per verificare la presenza di un "id", se non esiste torna FALSE.
+     * Altrimenti torna l'ID cercato con la select. 
+     * Se ritornano più risultati solleva un DbResException.
+     *
+     * @param SelectSqlQuery $sql
+     * @return mixed
+     */
+    function isThereAlready($sql){
+    	$id=FALSE;
+    	
+    	$res=self::select($sql);
+    	if($this->row_count == 1){
+    		$row=mysqli_fetch_row($res);
+    		$id=$row[0];
+    	} elseif($this->row_count > 1 ) {
+    		$this->callException(_("Are present more than 1 row."),ERR_DB_RES);
+    	}
+    	
+    	return $id;
+    }
+    
+    function escapeString($string){
+    	return mysqli_real_escape_string($this->db_link,$string);
+    }
+    
+    /**
+     * Esegue un flush dei privilegi degli utenti mysql. 
+     * Serve per assicurare  che le operazioni effettuate con altre funzioni, 
+		 * come la creazione o la eliminazione di un utente, siano attive. 
+     */
+    function flushPrivileges(){
+    	self::execQuery("FLUSH PRIVILEGES");
+    }
+    /**
+     * Se $debug è TRUE stampa la query $sql altrimenti tramite reflection esegue il metodo $action sulla query.
+     * 
+     * @param boolean $debug TRUE|FALSE
+     * @param String $action Metodi della Classe Database
+     * @param SqlQuery $sql
+     */
+    function sqlOrDebug($debug,$action,$sql){
+	$debug=true;
+    	if (! $debug)
+    		return self::$action($sql);
+    	else
+    		echo "DEBUG:OR: ".str_replace(array("\n","\r","\t","/\s\s+/"),"",$sql)."\n";
+    }
+    /**
+     * Se $debug è FALSE esegue tramite reflection il metodo $action sulla query $sql, altrimenti stampa anche la query.
+     *
+     * @param boolean $debug TRUE|FALSE
+     * @param String $action Metodi della Classe Database
+     * @param SqlQuery $sql
+     */
+    function sqlAndDebug($debug,$action,$sql){
+	$debug=true;
+    	if ($debug)
+    		echo "DEBUG:AND: ".str_replace(array("\n","\r","\t","/\s\s+/"),"",$sql)."\n";
+    	
+    	return self::$action($sql);
+    }
+    
+    /**
+     * Ritorna l'ultimo errore ottenuto durante le azioni precedenti sul database.
+     */
+    public function getLastError() {
+        return $this->last_error;
+    }
+    
+    /**
+    * Ritorna l'ultima query effettuata
+    */
+    public function getLastQuery() {
+        return $this->last_query;
+    }
+} 
+?>

+ 79 - 0
include/OExceptions.php

@@ -0,0 +1,79 @@
+<?php
+
+interface IException
+{
+    /* Protected methods inherited from Exception class */
+    public function getMessage();                 // Exception message
+    public function getCode();                    // User-defined Exception code
+    public function getFile();                    // Source filename
+    public function getLine();                    // Source line
+    public function getTrace();                   // An array of the backtrace()
+    public function getTraceAsString();           // Formated string of trace
+
+    /* Overrideable methods inherited from Exception class */
+    public function __toString();                 // formated string for display
+    public function __construct($message = null, $code = 0);
+}
+
+abstract class CustomException extends Exception implements IException
+{
+    private   $trace;                             // Unknown
+    private   $string;                            // Unknown
+    protected $message = 'Unknown exception';     // Exception message
+    protected $code = 0;                       	   // User-defined exception code
+    protected $file;                              // Source filename of exception
+    protected $line;                              // Source line of exception
+
+
+    public function __construct($message = null, $code = 0)
+    {
+        if (!$message) {
+            throw new $this('Unknown '. get_class($this));
+        }
+        parent::__construct("Err: ".$message."\n", $code);
+    }
+
+    public function __toString() {
+    	$err=$this->message;
+    	if($this->code!=0)
+    		$err= get_class($this). 
+    				" '{$this->message}' in {$this->file}({$this->line})\n".
+    				"{$this->getTraceAsString()}";
+    	
+    	return $err;
+    }
+}
+
+class DbErrException extends CustomException{};
+
+class DbResException extends DbErrException{};
+
+class UsageException extends CustomException{
+    public function __construct($message = null, $code = 0)
+    {
+        if (!$message and $code == 0) {
+            throw new $this('Unknown '. get_class($this));
+        } elseif ($message != null and $code > 0) {
+            $argv="Err: ".$message."\n";
+            $message="Bad arg: ".$argv." is not a valid command, with ".$code." arguments\n";
+            $code=0;
+        }
+
+        parent::__construct($message, $code);
+    }
+
+    public function __toString() {
+        return $this->message;
+    }
+
+}
+
+class OtConfException  extends CustomException{};
+
+class FileException  extends CustomException{
+	public function __toString() {
+		return $this->message;
+	}
+};
+
+?>

+ 11 - 0
include/apteryx_text.php

@@ -0,0 +1,11 @@
+<?php
+	$title_page = _("Accrocchio per creare alias di 24h per una propria email");
+	$form_goto_email = _("email:");
+	$title      = _("Creatore di alias email giornalieri (24 ore)");
+	$msgAliasDonePart1 = _("Per le prossime 24 ore tutte le mail che arriveranno a:");
+	$msgAliasDonePart2 = _("verranno redirette a:");
+	$msgAliasErr  = _("Creazione dell'alias fallita. Forse hai scritto male i dati, riprova.");
+	$msgAliasCant = _("Alias gia' esistente, riprova.");
+	$msgEmailValidErr= _("Email non valida");
+	$msgNoEmailFoundErr= _("Non esiste nessun alias per questa email");
+?>

+ 112 - 0
include/localization.php

@@ -0,0 +1,112 @@
+<?php
+/* CHANGELOG:
+ @1.1: 
+  - supporta locale con forma la_LA, la, la_LA.utf-8, la_LA.UTF-8, la.UTF-8, la.utf-8
+*/
+$version="1.1";
+
+$_td_stack = array(); // text domains stack
+
+$langarray = array('it_IT','en_US','es_ES','de_DE','eo_EO');
+//$lang = "eo_EO";
+If (isSet($_GET["lang"])) 
+	$lang = $_GET["lang"];
+else {
+	$lang = $langarray[0];
+	/* vedi le preferenze del browser */
+	$user_langs = explode(",", getenv("HTTP_ACCEPT_LANGUAGE"));
+	foreach ($user_langs as $user_lang) {
+		$user_lang_items = explode(";", $user_lang);
+		if (in_array($user_lang_items[0], $langarray)) {
+			$lang = $user_lang_items[0];
+			break;
+		}
+	}
+}
+
+$charset="UTF-8";
+$gettext_domain="messages";
+$locale_dir="res/locale";
+/**
+ * Il locale deve essere presente nel sistema usa "locale -a" per
+ * verificarlo, non ovunque si chiama allo  stesso modo e non tutti 
+ * i locali si chiamano allo stesso modo, l'esperanto ad esempio 
+ * non rispetta la nomenclatura classica 
+*/ 
+putenv("LC_ALL=$lang");
+$l=split("_",$lang);
+if(! setlocale(LC_ALL, $lang.".".$charset))
+	if(! setlocale(LC_ALL, $lang)) 
+		if(! setlocale(LC_ALL,$l[0].".".$charset)) 
+				setlocale(LC_ALL,$l[0]);
+
+bindtextdomain($gettext_domain, "res/locale");
+textdomain($gettext_domain);
+bind_textdomain_codeset($gettext_domain, $charset); 
+
+function printLangSelector() {
+	global $lang;
+	global $langarray;
+	$targetname = $_SERVER['PHP_SELF'];
+	
+	$l_arg="lang=";
+	$newQueryString="";
+	$queryString= $_SERVER['QUERY_STRING'];
+	$argS = explode("&",$queryString);
+	if(strpos($queryString,$l_arg)!==FALSE){
+		foreach ($argS as $arg){
+			if(strpos($arg,$l_arg)===FALSE) 
+				$newQueryString.=$arg."&";
+		}
+	}
+	
+	echo "<ul class='langsel'>";
+	foreach ($langarray as $l) {
+		$label=split("_",$l);
+		$class="";
+		if ($l == $lang)
+			$class="class='it'";
+			
+		echo "<li ".$class."><a href='".$targetname."?".$newQueryString.$l_arg.$l."'>".$label[0]."</a></li>";
+	}
+	$foo = getenv("HTTP_ACCEPT_LANGUAGE");
+	echo "</ul>\n";
+}
+
+/**
+ * Sets a new text domain after recording the current one
+ * so it can be restored later with restore_textdomain().
+ *
+ * It's possible to nest calls to these two functions.
+ * @param string the new text domain to set
+ */
+function set_textdomain($td)
+{
+    global $_td_stack;
+   
+    $old_td = textdomain(NULL);
+   
+    if ($old_td)    {
+        if (!strcmp($old_td, $td))        
+        	array_push($_td_stack, false);
+        else 
+        	array_push($_td_stack, $old_td);
+    }
+   
+    textdomain($td);
+}
+
+/**
+ * Restore the text domain active before the last call to
+ * set_textdomain().
+ */
+function restore_textdomain()
+{
+    global $_td_stack;
+   
+    $old_td = array_pop($_td_stack);
+   
+    if ($old_td)
+    	textdomain($old_td);
+}
+?>

+ 64 - 0
include/randomimg.php

@@ -0,0 +1,64 @@
+<?php
+$folder = '../res/images';
+$extList = array();
+$extList['gif'] = 'image/gif';
+$extList['jpg'] = 'image/jpeg';
+$extList['jpeg'] = 'image/jpeg';
+$extList['png'] = 'image/png';
+$img = null;
+
+if (substr($folder,-1) != '/') {
+    $folder = $folder.'/';
+}
+/*
+//DEBUG: eseguire direttamente lo script, altrimenti non si vede output
+var_dump($folder);
+$handle = opendir($folder);
+var_dump($handle);
+exit;
+*/
+if (isset($_GET['img'])) {
+    $imageInfo = pathinfo($_GET['img']);
+    if (
+        isset( $extList[ strtolower( $imageInfo['extension'] ) ] ) &&
+        file_exists( $folder.$imageInfo['basename'] )
+    ) {
+        $img = $folder.$imageInfo['basename'];
+    }
+} else {
+    $fileList = array();
+    $handle = opendir($folder);
+    while ( false !== ( $file = readdir($handle) ) ) {
+        $file_info = pathinfo($file);
+        if (
+            isset( $extList[ strtolower( $file_info['extension'] ) ] )
+        ) {
+            $fileList[] = $file;
+        }
+    }
+    closedir($handle);
+
+    if (count($fileList) > 0) {
+        $imageNumber = time() % count($fileList);
+        $img = $folder.$fileList[$imageNumber];
+    }
+}
+
+if ($img!=null) {
+    $imageInfo = pathinfo($img);
+    $contentType = 'Content-type: '.$extList[ $imageInfo['extension'] ];
+    header ($contentType);
+    readfile($img);
+} else {
+    if ( function_exists('imagecreate') ) {
+        header ("Content-type: image/png");
+        $im = @imagecreate (100, 100)
+            or die ("Cannot initialize new GD image stream");
+        $background_color = imagecolorallocate ($im, 255, 255, 255);
+        $text_color = imagecolorallocate ($im, 0,0,0);
+        imagestring ($im, 2, 5, 5,  "IMAGE ERROR", $text_color);
+        imagepng ($im);
+        imagedestroy($im);
+    }
+}
+?>

+ 68 - 0
include/template.php

@@ -0,0 +1,68 @@
+<?php
+include 'apteryx_text.php';
+
+function printHead($type) { 
+	global $title_page;
+?>
+<!DOCTYPE HTML>
+<html>
+<head>
+	<!--<meta charset="UTF-8">-->
+	<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+	<title><?php echo $title_page; ?></title>
+	<link href='https://www.indivia.net/res/css/global.css' rel='stylesheet' type='text/css' >
+	<link href='https://tools.indivia.net/chpw/res/css/default.css' rel='stylesheet' type='text/css' >
+	<link href='res/css/apteryx.css' rel='stylesheet' type='text/css' >
+</head>
+<body>
+<?php
+if ($type == 0)
+  echo '<div class="random"> </div>';
+else  
+  echo '<br><br>';
+
+?>
+<div id="apteryx-box" class='homebox'> 
+<?php
+}
+/* crea il form */
+function printForm($form_goto_email, $lang) {
+?>
+<form method='post' action='#'>
+	<table class='formtable'>
+		<tr>
+    		<td><?php echo "$form_goto_email" ?></td>
+			<td><input type='text' name='email' size='32' class='field'></td>
+		</tr>
+	</table>
+	<div style='text-align: center'>
+  		<input type='hidden' name='ph' value='1'>
+  		<input type='hidden' name='lang' value='<?php echo "$lang" ?>'>
+  		<input type='submit' value='Vai' class='gobutton'>
+	</div>
+	</form>
+</div>
+<?php
+}
+
+function printTitle($msg){ ?>
+	<h1>
+		<p style='text-align: center;'>
+			<?php echo $msg ?>
+		</p>
+	</h1><?php
+}
+
+function printBold($msg) {
+?>
+	<p style='font-weight: bold; font-size: 120%; text-align: center;'><?php echo "$msg" ?></p><br>
+<?php
+}
+
+function printMessage($msg) {
+?>
+	 <p style='text-align: center;'><?php echo "$msg" ?></p>
+
+<?php
+}
+?>

+ 85 - 0
include/util.php

@@ -0,0 +1,85 @@
+<?php 
+function email_check($email) {
+	$isValid=TRUE;
+	$atIndex = strrpos($email, "@");
+	if (is_bool($atIndex) && !$atIndex) {
+		$isValid = FALSE;
+	} else {
+		$domain = substr($email, $atIndex+1);
+		$local = substr($email, 0, $atIndex);
+		$localLen = strlen($local);
+		$domainLen = strlen($domain);
+		//user troppo lungo
+		if ($localLen < 1 || $localLen > 64) {
+			$isValid = FALSE;
+			//l'user incomincia o termina con un . o a 2 .. consecutivi
+		} elseif ($local[0] == '.' || $local[$localLen-1] == '.' || consecutive_dot($local)) {
+			$isValid = FALSE;
+		} elseif (! isValidDomain($domain)) {
+			$isValid = FALSE;
+		} elseif(!preg_match('/^(\\\\.|[A-Za-z0-9!#%&`_=\\/$\'*+?^{}|~.-])+$/', str_replace("\\\\","",$local))) {
+			// character not valid in local part unless
+			// local part is quoted
+			if (!preg_match('/^"(\\\\"|[^"])+"$/', str_replace("\\\\","",$local))) {
+				$isValid = FALSE;
+			}
+		}
+	}
+	
+	return $isValid;
+}
+
+function isValidDomain($domain) {
+	$isValid=true;
+	$domainLen = strlen($domain);
+
+	if ($domainLen < 4 || $domainLen > 255) {
+		$isValid = FALSE;
+		//l'user incomincia o termina con un . o a 2 .. consecutivi
+	} elseif (consecutive_dot($domain) || $domain[0] == '.' || $domain[$domainLen-1] == '.' ) {
+		$isValid = FALSE;
+	} elseif (!preg_match('/^[A-Za-z0-9\\-\\.]+$/', $domain)) {
+		$isValid = FALSE;
+		//ha almeno un punto
+	} elseif (! strpos($domain, ".")) {
+		$isValid = FALSE;
+	} else {
+		//il dominio di primo livello è almeno 2 caratteri
+		$arr=explode(".", $domain);
+		if(strlen($arr[count($arr)-1])<2)
+			$isValid = FALSE;
+	}
+
+	return $isValid;
+}
+
+function consecutive_dot($string) {
+	$ret=false;
+
+	if(preg_match('/\\.\\./',$string))
+		$ret=true;
+
+	return $ret;
+}
+
+/**
+ * estrae dominio di secondo livello
+ */
+function dom($name){
+	$zon=explode(".",$name);
+	return implode(".",array_slice($zon,-3));
+}
+
+/* gets the data from a URL */
+function get_data($url) {
+	$ch = curl_init();
+	$timeout = 5;
+	curl_setopt($ch, CURLOPT_URL, $url);
+	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
+	curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
+	$data = curl_exec($ch);
+	curl_close($ch);
+
+	return $data;
+}
+?>

+ 111 - 0
index.php

@@ -0,0 +1,111 @@
+<?php
+// https://uichi.ortiche.net/index.php/Strutture_dati_di_posta
+// version: 0.2
+require_once('include/Database.php');
+require_once('include/util.php');
+require_once('include/localization.php');
+require_once('include/template.php');
+
+$err=$user=$email="";
+$type="-1";
+$rasplice_url="http://rasplice.contaminati.net/cgi-bin/rasplice.txt";
+$indivia24hdomain="@24h.indivia.net";
+$db=Database::getInstance('std');
+
+function getSqlNumOfAlias($alias_tab,$alias_nic){
+	$sql = "SELECT count(*) 
+					  FROM $alias_tab 
+				   WHERE user = '$alias_nic' 
+             AND active = 'Y'";
+	return $sql;
+}
+
+function getSqlCreateAlias($alias_tab, $alias_nic,$alias_dom,$goto_email,$timo){
+	$sql = "INSERT INTO $alias_tab (user, domain, active, tipo, goto, modified, md5salt, deleted) 
+					VALUES ('$alias_nic', '$alias_dom', 'Y', 'alias', '$goto_email', '$timo','','0')";
+
+	return $sql;
+}
+
+function getSqlAliasInfo($goto_email){
+	$sql = "SELECT user 
+				  FROM 24h_indivia_net
+					WHERE goto = '$goto_email' 
+						AND active = 'Y'";
+
+  return $sql;
+}
+
+//aliasing..
+if (isset($_POST["ph"]) AND 
+	$_POST["ph"]=="1" AND 
+	$_POST['email'] != "") {
+
+  $goto_email_noescape = $_POST['email'];
+  $goto_email = $db->escapeString($goto_email_noescape);
+  if (email_check($goto_email)) {
+		//solo l'email alias deve non essere presente.
+		do {
+				$alias_nic = preg_replace('/\s+/', '', get_data($rasplice_url));
+				if($alias_nic===FALSE)
+					$alias_nic="email_".rand(10000,99999);
+				$alias_dom = substr($indivia24hdomain,1);
+	    		$alias_email = $alias_nic.$indivia24hdomain; 
+	      		$alias_dom2lvl = dom($alias_dom);
+    		  	$alias_tab = str_replace(".","_",$alias_dom2lvl);
+		      	$res = $db->isThereAlready(getSqlNumOfAlias($alias_tab,$alias_nic));
+		} while ($res != FALSE);
+
+		$timo=time();
+		$ret=$db->execQuery(getSqlCreateAlias($alias_tab,$alias_nic,$alias_dom,$goto_email,$timo));
+    if ($ret == 1) {
+		header("location: index.php?ph=2&email=".$goto_email."&lang=".$lang);
+    } else {
+    	$type=1;
+    	$err=$msgAliasErr;
+    }
+  } else {
+  		$type=1;
+  		$err=$msgEmailValidErr;
+  }
+} elseif (isset($_GET["ph"]) AND 
+		  $_GET['ph'] == 2 AND 
+		  isset($_GET['email'])) {
+	
+	$goto_email_noescape = $_GET['email'];
+	$goto_email = $db->escapeString($goto_email_noescape);
+	$rows = $db->select(getSqlAliasInfo($goto_email));
+	$row = mysqli_fetch_row($rows);
+	if ($row[0] != "") {
+		$type=2;
+		$user=$row[0];
+		$email=$goto_email;
+	} else {
+		$type=1;
+		$err=$msgNoEmailFoundErr;
+	}
+} else {
+	$type=0;
+}
+
+if($type>-1) {
+	printHead($type);
+	printLangSelector();
+	printTitle($title);
+	switch ($type) {
+		case 0:
+			printForm($form_goto_email, $lang);
+			break;
+		case 1:
+			printMessage($err);
+			break;
+		case 2:
+			printMessage($msgAliasDonePart1).
+			printBold($user.$indivia24hdomain).
+			printMessage($msgAliasDonePart2).
+			printBold($email);
+			break;
+	}
+}
+
+?>

+ 15 - 0
res/css/apteryx.css

@@ -0,0 +1,15 @@
+#apteryx-box{
+	margin: 0 auto;
+	padding-bottom:8px;
+	width:38em;
+	min-height:105px;
+}
+
+div.random {
+    margin-left:auto;
+    margin-right:auto;
+    margin-bottom:2em;
+    width: 400px;
+    height: 350px;
+    background: url(../../include/randomimg.php) no-repeat center;
+}

+ 10 - 0
res/file/CHANGELOG

@@ -0,0 +1,10 @@
+@0.2.1
+- Fix dell'url dell'import di un css
+- Fix del bug che comprometteva la creazione del nuovo alias
+@0.2
+- Utilizzo della Classe Wrapper Database realizzata inizialmente per OT
+- Modificato il sistema di internazionalizzazione per l'utilizzo di gettext() 
+- Aggiunte le traduzioni in: italiano, inglese e parziale in esperanto
+- Revisione del modo in cui viene prodotto l'html e lo style css
+- Pulizia del codice e standardizzazione delle directory sul modello i*
+- Utilizzo di rasplice.contaminati.net per creare email con user più reale

+ 2 - 0
res/file/TODO

@@ -0,0 +1,2 @@
+- finirire la traduzione in esperanto
+- tradurre in tedesco e spagnolo

BIN
res/images/orologio1.png


BIN
res/images/orologio10.png


BIN
res/images/orologio11.png


BIN
res/images/orologio12.png


BIN
res/images/orologio13.png


BIN
res/images/orologio14.png


BIN
res/images/orologio15.png


BIN
res/images/orologio2.png


BIN
res/images/orologio3.png


BIN
res/images/orologio4.png


BIN
res/images/orologio5.png


BIN
res/images/orologio6.png


BIN
res/images/orologio7.png


BIN
res/images/orologio8.png


BIN
res/images/orologio9.png


+ 53 - 0
res/locale/apteryx.pot

@@ -0,0 +1,53 @@
+# apteryx.indivia.net
+# This file is distributed under the same license as the "iApteryx" package.
+# gin(e) <gine@riseup.net>, 2013
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: 0.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-02-24 13:14+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../include/apteryx_text.php:2
+msgid "Accrocchio per creare alias di 24h per una propria email"
+msgstr ""
+
+#: ../../include/apteryx_text.php:3
+msgid "email:"
+msgstr ""
+
+#: ../../include/apteryx_text.php:4
+msgid "Creatore di alias email giornalieri (24 ore)"
+msgstr ""
+
+#: ../../include/apteryx_text.php:5
+msgid "Per le prossime 24 ore tutte le mail che arriveranno a:"
+msgstr ""
+
+#: ../../include/apteryx_text.php:6
+msgid "verranno redirette a:"
+msgstr ""
+
+#: ../../include/apteryx_text.php:7
+msgid "Creazione dell'alias fallita. Forse hai scritto male i dati, riprova."
+msgstr ""
+
+#: ../../include/apteryx_text.php:8
+msgid "Alias gia' esistente, riprova."
+msgstr ""
+
+#: ../../include/apteryx_text.php:9
+msgid "Email non valida"
+msgstr ""
+
+#: ../../include/apteryx_text.php:10
+msgid "Non esiste nessun alias per questa email"
+msgstr ""

+ 54 - 0
res/locale/en_US/LC_MESSAGES/apteryx.po

@@ -0,0 +1,54 @@
+# apteryx.indivia.net
+# This file is distributed under the same license as the "iApteryx" package.
+# gin(e) <gine@riseup.net>, 2013
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-02-24 13:14+0100\n"
+"PO-Revision-Date: 2013-04-12 14:12+0000\n"
+"Last-Translator: gin(e) <ginex@posta.indivia.net>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: en\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Pootle 2.5.0-rc1\n"
+"X-POOTLE-MTIME: 1365775939.0\n"
+
+#: ../../include/apteryx_text.php:2
+msgid "Accrocchio per creare alias di 24h per una propria email"
+msgstr "Item to create an email alias for 24 hours "
+
+#: ../../include/apteryx_text.php:3
+msgid "email:"
+msgstr "email:"
+
+#: ../../include/apteryx_text.php:4
+msgid "Creatore di alias email giornalieri (24 ore)"
+msgstr "Creator of daily email alias (24 hours)"
+
+#: ../../include/apteryx_text.php:5
+msgid "Per le prossime 24 ore tutte le mail che arriveranno a:"
+msgstr "For the next 24 hours all email sent to:"
+
+#: ../../include/apteryx_text.php:6
+msgid "verranno redirette a:"
+msgstr "will redirect to:"
+
+#: ../../include/apteryx_text.php:7
+msgid "Creazione dell'alias fallita. Forse hai scritto male i dati, riprova."
+msgstr "Creation failed. Maybe you have written wrongs informations, retry."
+
+#: ../../include/apteryx_text.php:8
+msgid "Alias gia' esistente, riprova."
+msgstr "Alias already exits, retry."
+
+#: ../../include/apteryx_text.php:9
+msgid "Email non valida"
+msgstr "Invalid Email"
+
+#: ../../include/apteryx_text.php:10
+msgid "Non esiste nessun alias per questa email"
+msgstr "There are no email alias for that email address"

BIN
res/locale/en_US/LC_MESSAGES/messages.mo


+ 111 - 0
res/locale/en_US/LC_MESSAGES/messages.po

@@ -0,0 +1,111 @@
+# apteryx.indivia.net
+# This file is distributed under the same license as the "iApteryx" package.
+# gin(e) <gine@riseup.net>, 2013
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-02-24 13:14+0100\n"
+"PO-Revision-Date: 2013-04-12 14:12+0000\n"
+"Last-Translator: gin(e) <ginex@posta.indivia.net>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: en\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Pootle 2.5.0-rc1\n"
+"X-POOTLE-MTIME: 1365775939.0\n"
+
+#: ../../include/apteryx_text.php:2
+msgid "Accrocchio per creare alias di 24h per una propria email"
+msgstr "Item to create an email alias for 24 hours "
+
+#: ../../include/apteryx_text.php:3
+msgid "email:"
+msgstr "email:"
+
+#: ../../include/apteryx_text.php:4
+msgid "Creatore di alias email giornalieri (24 ore)"
+msgstr "Creator of daily email alias (24 hours)"
+
+#: ../../include/apteryx_text.php:5
+msgid "Per le prossime 24 ore tutte le mail che arriveranno a:"
+msgstr "For the next 24 hours all email sent to:"
+
+#: ../../include/apteryx_text.php:6
+msgid "verranno redirette a:"
+msgstr "will redirect to:"
+
+#: ../../include/apteryx_text.php:7
+msgid "Creazione dell'alias fallita. Forse hai scritto male i dati, riprova."
+msgstr "Creation failed. Maybe you have written wrongs informations, retry."
+
+#: ../../include/apteryx_text.php:8
+msgid "Alias gia' esistente, riprova."
+msgstr "Alias already exits, retry."
+
+#: ../../include/apteryx_text.php:9
+msgid "Email non valida"
+msgstr "Invalid Email"
+
+#: ../../include/apteryx_text.php:10
+msgid "Non esiste nessun alias per questa email"
+msgstr "There are no email alias for that email address"
+
+#: Database.php:98
+msgid "Database connection problem."
+msgstr "Database connection problem."
+
+#: Database.php:122
+msgid "what shit?!"
+msgstr "what shit?!"
+
+#: Database.php:139
+msgid "Database selection problem."
+msgstr "Database selection problem."
+
+#: Database.php:158
+msgid "Query select error."
+msgstr "Query select error."
+
+#: Database.php:174
+msgid "Your query returned "
+msgstr "Your query returned "
+
+#: Database.php:178
+msgid "more than one result."
+msgstr "more than one result."
+
+#: Database.php:180
+msgid "less than one result."
+msgstr "less than one result."
+
+#: Database.php:197
+msgid "Your query returned more or less that one result."
+msgstr "Your query returned more or less that one result."
+
+#: Database.php:222
+msgid "Your query return more than 1 element for row."
+msgstr "Your query return more than 1 element for row."
+
+#: Database.php:248
+#, php-format
+msgid "Your query return more than %s element for row."
+msgstr "Your query return more than %s element for row."
+
+#: Database.php:269
+msgid "Query error."
+msgstr "Query error."
+
+#: Database.php:285
+msgid "No row affected."
+msgstr "No row affected."
+
+#: Database.php:287
+msgid "More than 1 row are affected."
+msgstr "More than 1 row are affected."
+
+#: Database.php:318
+msgid "Are present more than 1 row."
+msgstr "Are present more than 1 row."

+ 76 - 0
res/locale/en_US/LC_MESSAGES/otdblib.po

@@ -0,0 +1,76 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-08-16 15:53+0200\n"
+"PO-Revision-Date: 2013-08-16 14:49+0000\n"
+"Last-Translator: gin(e) <ginex@posta.indivia.net>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: en\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Pootle 2.5.0\n"
+"X-POOTLE-MTIME: 1376664594.0\n"
+
+#: Database.php:98
+msgid "Database connection problem."
+msgstr "Database connection problem."
+
+#: Database.php:122
+msgid "what shit?!"
+msgstr "what shit?!"
+
+#: Database.php:139
+msgid "Database selection problem."
+msgstr "Database selection problem."
+
+#: Database.php:158
+msgid "Query select error."
+msgstr "Query select error."
+
+#: Database.php:174
+msgid "Your query returned "
+msgstr "Your query returned "
+
+#: Database.php:178
+msgid "more than one result."
+msgstr "more than one result."
+
+#: Database.php:180
+msgid "less than one result."
+msgstr "less than one result."
+
+#: Database.php:197
+msgid "Your query returned more or less that one result."
+msgstr "Your query returned more or less that one result."
+
+#: Database.php:222
+msgid "Your query return more than 1 element for row."
+msgstr "Your query return more than 1 element for row."
+
+#: Database.php:248
+#, php-format
+msgid "Your query return more than %s element for row."
+msgstr "Your query return more than %s element for row."
+
+#: Database.php:269
+msgid "Query error."
+msgstr "Query error."
+
+#: Database.php:285
+msgid "No row affected."
+msgstr "No row affected."
+
+#: Database.php:287
+msgid "More than 1 row are affected."
+msgstr "More than 1 row are affected."
+
+#: Database.php:318
+msgid "Are present more than 1 row."
+msgstr "Are present more than 1 row."

+ 54 - 0
res/locale/eo/LC_MESSAGES/apteryx.po

@@ -0,0 +1,54 @@
+# apteryx.indivia.net
+# This file is distributed under the same license as the "iApteryx" package.
+# gin(e) <gine@riseup.net>, 2013
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-02-24 13:14+0100\n"
+"PO-Revision-Date: 2013-04-12 14:00+0000\n"
+"Last-Translator: gin(e) <ginex@posta.indivia.net>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: eo\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Pootle 2.5.0-rc1\n"
+"X-POOTLE-MTIME: 1365775226.0\n"
+
+#: ../../include/apteryx_text.php:2
+msgid "Accrocchio per creare alias di 24h per una propria email"
+msgstr "Alternativilo por krei Aliasojn 24hore por propra retpoŝtadreso"
+
+#: ../../include/apteryx_text.php:3
+msgid "email:"
+msgstr "Retpoŝtadreso:"
+
+#: ../../include/apteryx_text.php:4
+msgid "Creatore di alias email giornalieri (24 ore)"
+msgstr "Kreanto de retpoŝtaliasoj tuttage (24 horoj)"
+
+#: ../../include/apteryx_text.php:5
+msgid "Per le prossime 24 ore tutte le mail che arriveranno a:"
+msgstr "Por la proksimaj 24 horoj ĉiuj retpoŝtoj kiuj alvenos al:"
+
+#: ../../include/apteryx_text.php:6
+msgid "verranno redirette a:"
+msgstr "estos alidirektonta al:"
+
+#: ../../include/apteryx_text.php:7
+msgid "Creazione dell'alias fallita. Forse hai scritto male i dati, riprova."
+msgstr "Aliaskreado fiaskis. Eble vi skribis datenojn nekorekte, reprovu."
+
+#: ../../include/apteryx_text.php:8
+msgid "Alias gia' esistente, riprova."
+msgstr "Aliaso jam ekzistas, reprovu."
+
+#: ../../include/apteryx_text.php:9
+msgid "Email non valida"
+msgstr "Nekorekta retpoŝtadreso"
+
+#: ../../include/apteryx_text.php:10
+msgid "Non esiste nessun alias per questa email"
+msgstr "Neniu Aliaso ekzistas por tiu ĉi repoŝtadreso"

BIN
res/locale/eo/LC_MESSAGES/messages.mo


+ 112 - 0
res/locale/eo/LC_MESSAGES/messages.po

@@ -0,0 +1,112 @@
+# apteryx.indivia.net
+# This file is distributed under the same license as the "iApteryx" package.
+# gin(e) <gine@riseup.net>, 2013
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-02-24 13:14+0100\n"
+"PO-Revision-Date: 2013-04-12 14:00+0000\n"
+"Last-Translator: gin(e) <ginex@posta.indivia.net>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: eo\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Pootle 2.5.0-rc1\n"
+"X-POOTLE-MTIME: 1365775226.0\n"
+
+#: ../../include/apteryx_text.php:2
+msgid "Accrocchio per creare alias di 24h per una propria email"
+msgstr "Alternativilo por krei Aliasojn 24hore por propra retpoŝtadreso"
+
+#: ../../include/apteryx_text.php:3
+msgid "email:"
+msgstr "Retpoŝtadreso:"
+
+#: ../../include/apteryx_text.php:4
+msgid "Creatore di alias email giornalieri (24 ore)"
+msgstr "Kreanto de retpoŝtaliasoj tuttage (24 horoj)"
+
+#: ../../include/apteryx_text.php:5
+msgid "Per le prossime 24 ore tutte le mail che arriveranno a:"
+msgstr "Por la proksimaj 24 horoj ĉiuj retpoŝtoj kiuj alvenos al:"
+
+#: ../../include/apteryx_text.php:6
+msgid "verranno redirette a:"
+msgstr "estos alidirektonta al:"
+
+#: ../../include/apteryx_text.php:7
+msgid "Creazione dell'alias fallita. Forse hai scritto male i dati, riprova."
+msgstr "Aliaskreado fiaskis. Eble vi skribis datenojn nekorekte, reprovu."
+
+#: ../../include/apteryx_text.php:8
+msgid "Alias gia' esistente, riprova."
+msgstr "Aliaso jam ekzistas, reprovu."
+
+#: ../../include/apteryx_text.php:9
+msgid "Email non valida"
+msgstr "Nekorekta retpoŝtadreso"
+
+#: ../../include/apteryx_text.php:10
+msgid "Non esiste nessun alias per questa email"
+msgstr "Neniu Aliaso ekzistas por tiu ĉi repoŝtadreso"
+
+#: Database.php:98
+msgid "Database connection problem."
+msgstr ""
+
+#: Database.php:122
+msgid "what shit?!"
+msgstr ""
+
+#: Database.php:139
+msgid "Database selection problem."
+msgstr ""
+
+#: Database.php:158
+msgid "Query select error."
+msgstr ""
+
+#: Database.php:174
+msgid "Your query returned "
+msgstr ""
+
+#: Database.php:178
+msgid "more than one result."
+msgstr ""
+
+#: Database.php:180
+msgid "less than one result."
+msgstr ""
+
+#: Database.php:197
+msgid "Your query returned more or less that one result."
+msgstr ""
+
+#: Database.php:222
+msgid "Your query return more than 1 element for row."
+msgstr ""
+
+#: Database.php:248
+#, php-format
+msgid "Your query return more than %s element for row."
+msgstr ""
+
+#: Database.php:269
+msgid "Query error."
+msgstr ""
+
+#: Database.php:285
+msgid "No row affected."
+msgstr ""
+
+#: Database.php:287
+msgid "More than 1 row are affected."
+msgstr ""
+
+#: Database.php:318
+msgid "Are present more than 1 row."
+msgstr ""

+ 74 - 0
res/locale/eo/LC_MESSAGES/otdblib.po

@@ -0,0 +1,74 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-08-16 15:53+0200\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: eo\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.10.0\n"
+
+#: Database.php:98
+msgid "Database connection problem."
+msgstr ""
+
+#: Database.php:122
+msgid "what shit?!"
+msgstr ""
+
+#: Database.php:139
+msgid "Database selection problem."
+msgstr ""
+
+#: Database.php:158
+msgid "Query select error."
+msgstr ""
+
+#: Database.php:174
+msgid "Your query returned "
+msgstr ""
+
+#: Database.php:178
+msgid "more than one result."
+msgstr ""
+
+#: Database.php:180
+msgid "less than one result."
+msgstr ""
+
+#: Database.php:197
+msgid "Your query returned more or less that one result."
+msgstr ""
+
+#: Database.php:222
+msgid "Your query return more than 1 element for row."
+msgstr ""
+
+#: Database.php:248
+#, php-format
+msgid "Your query return more than %s element for row."
+msgstr ""
+
+#: Database.php:269
+msgid "Query error."
+msgstr ""
+
+#: Database.php:285
+msgid "No row affected."
+msgstr ""
+
+#: Database.php:287
+msgid "More than 1 row are affected."
+msgstr ""
+
+#: Database.php:318
+msgid "Are present more than 1 row."
+msgstr ""

+ 54 - 0
res/locale/eo_EO/LC_MESSAGES/apteryx.po

@@ -0,0 +1,54 @@
+# apteryx.indivia.net
+# This file is distributed under the same license as the "iApteryx" package.
+# gin(e) <gine@riseup.net>, 2013
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-02-24 13:14+0100\n"
+"PO-Revision-Date: 2013-04-12 14:00+0000\n"
+"Last-Translator: gin(e) <ginex@posta.indivia.net>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: eo\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Pootle 2.5.0-rc1\n"
+"X-POOTLE-MTIME: 1365775226.0\n"
+
+#: ../../include/apteryx_text.php:2
+msgid "Accrocchio per creare alias di 24h per una propria email"
+msgstr "Alternativilo por krei Aliasojn 24hore por propra retpoŝtadreso"
+
+#: ../../include/apteryx_text.php:3
+msgid "email:"
+msgstr "Retpoŝtadreso:"
+
+#: ../../include/apteryx_text.php:4
+msgid "Creatore di alias email giornalieri (24 ore)"
+msgstr "Kreanto de retpoŝtaliasoj tuttage (24 horoj)"
+
+#: ../../include/apteryx_text.php:5
+msgid "Per le prossime 24 ore tutte le mail che arriveranno a:"
+msgstr "Por la proksimaj 24 horoj ĉiuj retpoŝtoj kiuj alvenos al:"
+
+#: ../../include/apteryx_text.php:6
+msgid "verranno redirette a:"
+msgstr "estos alidirektonta al:"
+
+#: ../../include/apteryx_text.php:7
+msgid "Creazione dell'alias fallita. Forse hai scritto male i dati, riprova."
+msgstr "Aliaskreado fiaskis. Eble vi skribis datenojn nekorekte, reprovu."
+
+#: ../../include/apteryx_text.php:8
+msgid "Alias gia' esistente, riprova."
+msgstr "Aliaso jam ekzistas, reprovu."
+
+#: ../../include/apteryx_text.php:9
+msgid "Email non valida"
+msgstr "Nekorekta retpoŝtadreso"
+
+#: ../../include/apteryx_text.php:10
+msgid "Non esiste nessun alias per questa email"
+msgstr "Neniu Aliaso ekzistas por tiu ĉi repoŝtadreso"

BIN
res/locale/eo_EO/LC_MESSAGES/messages.mo


+ 112 - 0
res/locale/eo_EO/LC_MESSAGES/messages.po

@@ -0,0 +1,112 @@
+# apteryx.indivia.net
+# This file is distributed under the same license as the "iApteryx" package.
+# gin(e) <gine@riseup.net>, 2013
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-02-24 13:14+0100\n"
+"PO-Revision-Date: 2013-04-12 14:00+0000\n"
+"Last-Translator: gin(e) <ginex@posta.indivia.net>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: eo\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Pootle 2.5.0-rc1\n"
+"X-POOTLE-MTIME: 1365775226.0\n"
+
+#: ../../include/apteryx_text.php:2
+msgid "Accrocchio per creare alias di 24h per una propria email"
+msgstr "Alternativilo por krei Aliasojn 24hore por propra retpoŝtadreso"
+
+#: ../../include/apteryx_text.php:3
+msgid "email:"
+msgstr "Retpoŝtadreso:"
+
+#: ../../include/apteryx_text.php:4
+msgid "Creatore di alias email giornalieri (24 ore)"
+msgstr "Kreanto de retpoŝtaliasoj tuttage (24 horoj)"
+
+#: ../../include/apteryx_text.php:5
+msgid "Per le prossime 24 ore tutte le mail che arriveranno a:"
+msgstr "Por la proksimaj 24 horoj ĉiuj retpoŝtoj kiuj alvenos al:"
+
+#: ../../include/apteryx_text.php:6
+msgid "verranno redirette a:"
+msgstr "estos alidirektonta al:"
+
+#: ../../include/apteryx_text.php:7
+msgid "Creazione dell'alias fallita. Forse hai scritto male i dati, riprova."
+msgstr "Aliaskreado fiaskis. Eble vi skribis datenojn nekorekte, reprovu."
+
+#: ../../include/apteryx_text.php:8
+msgid "Alias gia' esistente, riprova."
+msgstr "Aliaso jam ekzistas, reprovu."
+
+#: ../../include/apteryx_text.php:9
+msgid "Email non valida"
+msgstr "Nekorekta retpoŝtadreso"
+
+#: ../../include/apteryx_text.php:10
+msgid "Non esiste nessun alias per questa email"
+msgstr "Neniu Aliaso ekzistas por tiu ĉi repoŝtadreso"
+
+#: Database.php:98
+msgid "Database connection problem."
+msgstr ""
+
+#: Database.php:122
+msgid "what shit?!"
+msgstr ""
+
+#: Database.php:139
+msgid "Database selection problem."
+msgstr ""
+
+#: Database.php:158
+msgid "Query select error."
+msgstr ""
+
+#: Database.php:174
+msgid "Your query returned "
+msgstr ""
+
+#: Database.php:178
+msgid "more than one result."
+msgstr ""
+
+#: Database.php:180
+msgid "less than one result."
+msgstr ""
+
+#: Database.php:197
+msgid "Your query returned more or less that one result."
+msgstr ""
+
+#: Database.php:222
+msgid "Your query return more than 1 element for row."
+msgstr ""
+
+#: Database.php:248
+#, php-format
+msgid "Your query return more than %s element for row."
+msgstr ""
+
+#: Database.php:269
+msgid "Query error."
+msgstr ""
+
+#: Database.php:285
+msgid "No row affected."
+msgstr ""
+
+#: Database.php:287
+msgid "More than 1 row are affected."
+msgstr ""
+
+#: Database.php:318
+msgid "Are present more than 1 row."
+msgstr ""

+ 74 - 0
res/locale/eo_EO/LC_MESSAGES/otdblib.po

@@ -0,0 +1,74 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-08-16 15:53+0200\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: eo\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.10.0\n"
+
+#: Database.php:98
+msgid "Database connection problem."
+msgstr ""
+
+#: Database.php:122
+msgid "what shit?!"
+msgstr ""
+
+#: Database.php:139
+msgid "Database selection problem."
+msgstr ""
+
+#: Database.php:158
+msgid "Query select error."
+msgstr ""
+
+#: Database.php:174
+msgid "Your query returned "
+msgstr ""
+
+#: Database.php:178
+msgid "more than one result."
+msgstr ""
+
+#: Database.php:180
+msgid "less than one result."
+msgstr ""
+
+#: Database.php:197
+msgid "Your query returned more or less that one result."
+msgstr ""
+
+#: Database.php:222
+msgid "Your query return more than 1 element for row."
+msgstr ""
+
+#: Database.php:248
+#, php-format
+msgid "Your query return more than %s element for row."
+msgstr ""
+
+#: Database.php:269
+msgid "Query error."
+msgstr ""
+
+#: Database.php:285
+msgid "No row affected."
+msgstr ""
+
+#: Database.php:287
+msgid "More than 1 row are affected."
+msgstr ""
+
+#: Database.php:318
+msgid "Are present more than 1 row."
+msgstr ""

+ 54 - 0
res/locale/it_IT/LC_MESSAGES/apteryx.po

@@ -0,0 +1,54 @@
+# apteryx.indivia.net
+# This file is distributed under the same license as the "iApteryx" package.
+# gin(e) <gine@riseup.net>, 2013
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-02-24 13:14+0100\n"
+"PO-Revision-Date: 2013-04-12 14:04+0000\n"
+"Last-Translator: Anonymous Pootle User\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: it\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Pootle 2.5.0-rc1\n"
+"X-POOTLE-MTIME: 1365775488.0\n"
+
+#: ../../include/apteryx_text.php:2
+msgid "Accrocchio per creare alias di 24h per una propria email"
+msgstr "Accrocchio per creare alias di 24h per una propria email"
+
+#: ../../include/apteryx_text.php:3
+msgid "email:"
+msgstr "email:"
+
+#: ../../include/apteryx_text.php:4
+msgid "Creatore di alias email giornalieri (24 ore)"
+msgstr "Creatore di alias email giornalieri (24 ore)"
+
+#: ../../include/apteryx_text.php:5
+msgid "Per le prossime 24 ore tutte le mail che arriveranno a:"
+msgstr "Per le prossime 24 ore tutte le mail che arriveranno a:"
+
+#: ../../include/apteryx_text.php:6
+msgid "verranno redirette a:"
+msgstr "verranno redirette a:"
+
+#: ../../include/apteryx_text.php:7
+msgid "Creazione dell'alias fallita. Forse hai scritto male i dati, riprova."
+msgstr "Creazione dell'alias fallita. Forse hai scritto male i dati, riprova."
+
+#: ../../include/apteryx_text.php:8
+msgid "Alias gia' esistente, riprova."
+msgstr "Alias gia' esistente, riprova."
+
+#: ../../include/apteryx_text.php:9
+msgid "Email non valida"
+msgstr "Email non valida"
+
+#: ../../include/apteryx_text.php:10
+msgid "Non esiste nessun alias per questa email"
+msgstr "Non esiste nessun alias per questa email"

BIN
res/locale/it_IT/LC_MESSAGES/messages.mo


+ 112 - 0
res/locale/it_IT/LC_MESSAGES/messages.po

@@ -0,0 +1,112 @@
+# apteryx.indivia.net
+# This file is distributed under the same license as the "iApteryx" package.
+# gin(e) <gine@riseup.net>, 2013
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-02-24 13:14+0100\n"
+"PO-Revision-Date: 2013-04-12 14:04+0000\n"
+"Last-Translator: Anonymous Pootle User\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: it\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Pootle 2.5.0-rc1\n"
+"X-POOTLE-MTIME: 1365775488.0\n"
+
+#: ../../include/apteryx_text.php:2
+msgid "Accrocchio per creare alias di 24h per una propria email"
+msgstr "Accrocchio per creare alias di 24h per una propria email"
+
+#: ../../include/apteryx_text.php:3
+msgid "email:"
+msgstr "email:"
+
+#: ../../include/apteryx_text.php:4
+msgid "Creatore di alias email giornalieri (24 ore)"
+msgstr "Creatore di alias email giornalieri (24 ore)"
+
+#: ../../include/apteryx_text.php:5
+msgid "Per le prossime 24 ore tutte le mail che arriveranno a:"
+msgstr "Per le prossime 24 ore tutte le mail che arriveranno a:"
+
+#: ../../include/apteryx_text.php:6
+msgid "verranno redirette a:"
+msgstr "verranno redirette a:"
+
+#: ../../include/apteryx_text.php:7
+msgid "Creazione dell'alias fallita. Forse hai scritto male i dati, riprova."
+msgstr "Creazione dell'alias fallita. Forse hai scritto male i dati, riprova."
+
+#: ../../include/apteryx_text.php:8
+msgid "Alias gia' esistente, riprova."
+msgstr "Alias gia' esistente, riprova."
+
+#: ../../include/apteryx_text.php:9
+msgid "Email non valida"
+msgstr "Email non valida"
+
+#: ../../include/apteryx_text.php:10
+msgid "Non esiste nessun alias per questa email"
+msgstr "Non esiste nessun alias per questa email"
+
+#: Database.php:98
+msgid "Database connection problem."
+msgstr "Non è possibile connettersi al dbms."
+
+#: Database.php:122
+msgid "what shit?!"
+msgstr "ma che cazzo?!"
+
+#: Database.php:139
+msgid "Database selection problem."
+msgstr "Problema nella selezione del database."
+
+#: Database.php:158
+msgid "Query select error."
+msgstr "Errore nell'interrogazione del database."
+
+#: Database.php:174
+msgid "Your query returned "
+msgstr "L'interrogazione effettuata è tornata con "
+
+#: Database.php:178
+msgid "more than one result."
+msgstr "più di un risultato."
+
+#: Database.php:180
+msgid "less than one result."
+msgstr "meno di un risultato."
+
+#: Database.php:197
+msgid "Your query returned more or less that one result."
+msgstr "L'interrogazione effettuata è tornata con più o meno di un risultato."
+
+#: Database.php:222
+msgid "Your query return more than 1 element for row."
+msgstr "L'interrogazione è tornata con più di un attributo per riga."
+
+#: Database.php:248
+#, php-format
+msgid "Your query return more than %s element for row."
+msgstr "L'interrogazione è tornata con più %s attributi per riga."
+
+#: Database.php:269
+msgid "Query error."
+msgstr "Errore nell'esecuzione di una query."
+
+#: Database.php:285
+msgid "No row affected."
+msgstr "Nessuna riga alterata."
+
+#: Database.php:287
+msgid "More than 1 row are affected."
+msgstr "Più di una riga alterata."
+
+#: Database.php:318
+msgid "Are present more than 1 row."
+msgstr "Sono presenti più di una riga."

+ 76 - 0
res/locale/it_IT/LC_MESSAGES/otdblib.po

@@ -0,0 +1,76 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-08-16 15:53+0200\n"
+"PO-Revision-Date: 2013-08-16 14:29+0000\n"
+"Last-Translator: gin(e) <ginex@posta.indivia.net>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: it\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Pootle 2.5.0\n"
+"X-POOTLE-MTIME: 1376663369.0\n"
+
+#: Database.php:98
+msgid "Database connection problem."
+msgstr "Non è possibile connettersi al dbms."
+
+#: Database.php:122
+msgid "what shit?!"
+msgstr "ma che cazzo?!"
+
+#: Database.php:139
+msgid "Database selection problem."
+msgstr "Problema nella selezione del database."
+
+#: Database.php:158
+msgid "Query select error."
+msgstr "Errore nell'interrogazione del database."
+
+#: Database.php:174
+msgid "Your query returned "
+msgstr "L'interrogazione effettuata è tornata con "
+
+#: Database.php:178
+msgid "more than one result."
+msgstr "più di un risultato."
+
+#: Database.php:180
+msgid "less than one result."
+msgstr "meno di un risultato."
+
+#: Database.php:197
+msgid "Your query returned more or less that one result."
+msgstr "L'interrogazione effettuata è tornata con più o meno di un risultato."
+
+#: Database.php:222
+msgid "Your query return more than 1 element for row."
+msgstr "L'interrogazione è tornata con più di un attributo per riga."
+
+#: Database.php:248
+#, php-format
+msgid "Your query return more than %s element for row."
+msgstr "L'interrogazione è tornata con più %s attributi per riga."
+
+#: Database.php:269
+msgid "Query error."
+msgstr "Errore nell'esecuzione di una query."
+
+#: Database.php:285
+msgid "No row affected."
+msgstr "Nessuna riga alterata."
+
+#: Database.php:287
+msgid "More than 1 row are affected."
+msgstr "Più di una riga alterata."
+
+#: Database.php:318
+msgid "Are present more than 1 row."
+msgstr "Sono presenti più di una riga."

+ 117 - 0
res/locale/messages.pot

@@ -0,0 +1,117 @@
+# #-#-#-#-#  apteryx.pot (0.2)  #-#-#-#-#
+# apteryx.indivia.net
+# This file is distributed under the same license as the "iApteryx" package.
+# gin(e) <gine@riseup.net>, 2013
+#
+# #-#-#-#-#  otdblib.pot (1.2)  #-#-#-#-#
+# OTDbLib template translation.
+# Copyright (C) 2013.
+# This file is distributed under the same license as the OTDbLib package.
+# gin(e) <gine@riseup.net>, 2013.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: 0.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-02-24 13:14+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../include/apteryx_text.php:2
+msgid "Accrocchio per creare alias di 24h per una propria email"
+msgstr ""
+
+#: ../../include/apteryx_text.php:3
+msgid "email:"
+msgstr ""
+
+#: ../../include/apteryx_text.php:4
+msgid "Creatore di alias email giornalieri (24 ore)"
+msgstr ""
+
+#: ../../include/apteryx_text.php:5
+msgid "Per le prossime 24 ore tutte le mail che arriveranno a:"
+msgstr ""
+
+#: ../../include/apteryx_text.php:6
+msgid "verranno redirette a:"
+msgstr ""
+
+#: ../../include/apteryx_text.php:7
+msgid "Creazione dell'alias fallita. Forse hai scritto male i dati, riprova."
+msgstr ""
+
+#: ../../include/apteryx_text.php:8
+msgid "Alias gia' esistente, riprova."
+msgstr ""
+
+#: ../../include/apteryx_text.php:9
+msgid "Email non valida"
+msgstr ""
+
+#: ../../include/apteryx_text.php:10
+msgid "Non esiste nessun alias per questa email"
+msgstr ""
+
+#: Database.php:98
+msgid "Database connection problem."
+msgstr ""
+
+#: Database.php:122
+msgid "what shit?!"
+msgstr ""
+
+#: Database.php:139
+msgid "Database selection problem."
+msgstr ""
+
+#: Database.php:158
+msgid "Query select error."
+msgstr ""
+
+#: Database.php:174
+msgid "Your query returned "
+msgstr ""
+
+#: Database.php:178
+msgid "more than one result."
+msgstr ""
+
+#: Database.php:180
+msgid "less than one result."
+msgstr ""
+
+#: Database.php:197
+msgid "Your query returned more or less that one result."
+msgstr ""
+
+#: Database.php:222
+msgid "Your query return more than 1 element for row."
+msgstr ""
+
+#: Database.php:248
+#, php-format
+msgid "Your query return more than %s element for row."
+msgstr ""
+
+#: Database.php:269
+msgid "Query error."
+msgstr ""
+
+#: Database.php:285
+msgid "No row affected."
+msgstr ""
+
+#: Database.php:287
+msgid "More than 1 row are affected."
+msgstr ""
+
+#: Database.php:318
+msgid "Are present more than 1 row."
+msgstr ""

+ 75 - 0
res/locale/otdblib.pot

@@ -0,0 +1,75 @@
+# OTDbLib template translation.
+# Copyright (C) 2013.
+# This file is distributed under the same license as the OTDbLib package.
+# gin(e) <gine@riseup.net>, 2013.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: 1.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-08-16 15:53+0200\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: Database.php:98
+msgid "Database connection problem."
+msgstr ""
+
+#: Database.php:122
+msgid "what shit?!"
+msgstr ""
+
+#: Database.php:139
+msgid "Database selection problem."
+msgstr ""
+
+#: Database.php:158
+msgid "Query select error."
+msgstr ""
+
+#: Database.php:174
+msgid "Your query returned "
+msgstr ""
+
+#: Database.php:178
+msgid "more than one result."
+msgstr ""
+
+#: Database.php:180
+msgid "less than one result."
+msgstr ""
+
+#: Database.php:197
+msgid "Your query returned more or less that one result."
+msgstr ""
+
+#: Database.php:222
+msgid "Your query return more than 1 element for row."
+msgstr ""
+
+#: Database.php:248
+#, php-format
+msgid "Your query return more than %s element for row."
+msgstr ""
+
+#: Database.php:269
+msgid "Query error."
+msgstr ""
+
+#: Database.php:285
+msgid "No row affected."
+msgstr ""
+
+#: Database.php:287
+msgid "More than 1 row are affected."
+msgstr ""
+
+#: Database.php:318
+msgid "Are present more than 1 row."
+msgstr ""