Source for file Install.class.php

Documentation is available at Install.class.php

  1. <?php
  2. /**
  3.  * R.E. Login 2.0 - Telepítő - Install.class.php
  4.  *
  5.  * Telepítéshez szükséges metódusokat megvalósító osztály.<br />
  6.  * <br />
  7.  * <b>Dátum:</b> 2010.04.02.
  8.  *
  9.  * <b>Szerző weboldala:</b> {@link http://rimelek.hu/}<br />
  10.  * <b>Login weblapja:</b> {@link http://rimelek.hu/meghivos-loginrendszer-r-e-login-v2-0 R.E. Login v2.0}
  11.  *
  12.  * @author Takács Ákos (Rimelek), programmer [at] rimelek [dot] hu
  13.  * @copyright Copyright (C) 2010, Takács Ákos
  14.  * @license http://www.gnu.org/licenses/gpl.html
  15.  * @package RELogin
  16.  * @version 2.0
  17.  */
  18.  
  19. /**
  20.  * Telepítéshez szükséges metódusokat megvalósító osztály.
  21.  * 
  22.  * <b>Szerző weboldala:</b> {@link http://rimelek.hu/}<br />
  23.  * <b>Login weblapja:</b> {@link http://rimelek.hu/meghivos-loginrendszer-r-e-login-v2-0 R.E. Login v2.0}
  24.  *
  25.  * @author Takács Ákos (Rimelek), programmer [at] rimelek [dot] hu
  26.  * @copyright Copyright (C) 2010, Takács Ákos
  27.  * @license http://www.gnu.org/licenses/gpl.html
  28.  * @package RELogin
  29.  */
  30. class Install
  31. {
  32.     /**
  33.      * Hibaüzenetek tömbje
  34.      * 
  35.      * @var array 
  36.      */
  37.     private static $errors array();
  38.  
  39.     /**
  40.      * Feldolgozandó űrlapadatok tömbje
  41.      *
  42.      * @var array 
  43.      */
  44.     private static $values array();
  45.  
  46.     /**
  47.      * Feldolgozandó adatok címei.
  48.      *
  49.      * Ez jelenik meg az input mezők mellett címként.
  50.      *
  51.      * @var array 
  52.      */
  53.     private static $titles array();
  54.  
  55.     /**
  56.      * Telepítő elindítása
  57.      *
  58.      * Át kell adni a {@link $values} és {@link $titles} változókat.
  59.      * Ha nincs beállítva $_POST['install'] nevű tömb, akkor false-al
  60.      * tér vissza. Egyébként ha nincs hiba a telepítéskor, true-val.
  61.      * Telepítés előtt letelepíti a már létrehozott táblákat az adatbázisból.
  62.      *
  63.      * @param array $values 
  64.      * @param array $titles 
  65.      * @return bool Siker esetén true, egyébként false
  66.      */
  67.     public static function run($values$titles)
  68.     {
  69.         if (!isset($_POST['install']or !is_array($_POST['install']))
  70.         {
  71.             return false;
  72.         }
  73.         self::$values &$values;
  74.         self::$titles &$titles;
  75.         if (($err self::connect()) !== true)
  76.         {
  77.             self::$errors[$err;
  78.             return false;
  79.         }
  80.         self::uninstall($values['DBPREF']);
  81.         self::installSql();
  82.         if (count(self::$errors))
  83.         {
  84.             self::uninstall($values['DBPREF']);
  85.             return false;
  86.         }
  87.         if (self::installConfigFile() )
  88.         {
  89.             return false;
  90.         }
  91.  
  92.         return true;
  93.     }
  94.  
  95.     /**
  96.      * Kapcsolódás az adatbázis szerverhez.
  97.      *
  98.      * @return bool Sikeres volt-e a kapcsolódás
  99.      */
  100.     private static function connect()
  101.     {
  102.         $v self::$values;
  103.         $connect @mysql_connect($v['DBHOST']$v['DBUSER']$v['DBPASS']);
  104.         if (!$connect)
  105.         {
  106.             return ('Nem sikerült a szerverhez kapcsolódni');
  107.         }
  108.         mysql_query("set names '".$v['DBCHARSET']."' collate '".$v['DBCOLLATE']."'");
  109.         if (!@mysql_select_db($v['DBNAME']))
  110.         {
  111.             return ('Nem sikerült az adatbázist kiválasztani');
  112.         }
  113.         return true;
  114.     }
  115.  
  116.     /**
  117.      * Adatbázis táblák feltelepítése
  118.      */
  119.     private static function installSql()
  120.     {
  121.         $v self::$values;
  122.         $sql_file file_get_contents('install.sql');
  123.         $sql_queries explode('-- table'$sql_file);
  124.         array_shift($sql_queries);
  125.         foreach ($sql_queries as &$query)
  126.         {
  127.             $query trim($query"\n\r; ");
  128.             $query str_replace(
  129.                     array('{prefix}','{charset}','{collate}'),
  130.                     array($v['DBPREF'],$v['DBCHARSET'],$v['DBCOLLATE']),
  131.                     $query);
  132.             mysql_query($query);
  133.             if ($error mysql_error())
  134.             {
  135.                 self::$errors[$error.PHP_EOL.'SQL: <pre>'.$query.'</pre>';
  136.             }
  137.         }
  138.     }
  139.  
  140.     /**
  141.      * Config osztály létrehozása.
  142.      *
  143.      * @return bool Sikeres volt-e a fájl létrehozás.
  144.      */
  145.     private static function installConfigFile()
  146.     {
  147.         if (self::$values['SMTP_ON'])
  148.         {
  149.             if (self::$values['SMTP_AUTH'and
  150.                 (empty(self::$values['SMTP_USERNAME'])
  151.                 or empty(self::$values['SMTP_PASSWORD'])))
  152.             {
  153.                 self::$errors['Bejelölted az SMTP hitelesítést, ezért meg kell adnod
  154.                     az SMTP felhasználó nevet és jelszót!';
  155.             }
  156.             if (empty(self::$values['SMTP_PORT']or
  157.                 empty(self::$values['SMTP_HOST']))
  158.             {
  159.                 self::$errors['Bejelölted az SMTP használatot, ezért
  160.                                 meg kell adnod a hostot és portot!';
  161.             }
  162.         }
  163.  
  164.         if (empty(self::$values['MAIL_TO']or
  165.             empty(self::$values['MAIL_FROM']))
  166.         {
  167.             self::$errors['Az E-mail címeket mindenképp meg kell adnod.';
  168.         }
  169.  
  170.         if (count(self::$errors))
  171.         {
  172.             return false;
  173.         }
  174.         $t "<?php".PHP_EOL.
  175.             "final class Config".PHP_EOL."{".PHP_EOL.
  176.             "\t const ";
  177.         foreach (self::$titles as $key => $title)
  178.         {
  179.             $value (!is_bool(self::$values[$key]))
  180.                     ? "'".self::$values[$key]."'" (self::$values[$key'true' 'false');
  181.             $t .= PHP_EOL."\t\t/*".strip_tags($title)."*/";
  182.             $t .= PHP_EOL."\t\t".$key." = ".$value.",";
  183.         }
  184.         $t rtrim($t,',').';'.PHP_EOL;
  185.         $t .=
  186.         "\tprivate static \$instance;".PHP_EOL.
  187.         "\tprivate function __construct(){}".PHP_EOL.
  188.         "\tfunction __get(\$var)".PHP_EOL.
  189.         "\t{".PHP_EOL.
  190.         "\t\tif (!isset(\$this->\$var))".PHP_EOL.
  191.         "\t\t{".PHP_EOL.
  192.         "\t\t\teval('\$ret = self::'.\$var.';');".PHP_EOL.
  193.         "\t\t\treturn \$ret;".PHP_EOL.
  194.         "\t\t}".PHP_EOL.
  195.         "\t}".PHP_EOL.
  196.         "\tpublic static function getInstance()".PHP_EOL.
  197.         "\t{".PHP_EOL.
  198.         "\t\tif (!isset(self::\$instance)) {".PHP_EOL.
  199.         "\t\t\t\$c=__CLASS__;".PHP_EOL.
  200.         "\t\t\tself::\$instance = new \$c;".PHP_EOL.
  201.         "\t\t}".PHP_EOL.
  202.         "\t\treturn self::\$instance;".PHP_EOL.
  203.         "\t}".PHP_EOL.
  204.         "}".PHP_EOL."?>";
  205.  
  206.  
  207.         file_put_contents('../classes/Config.class.php',$t);
  208.         return true;
  209.     }
  210.  
  211.     /**
  212.      * Adatbázis táblák letelepítése
  213.      *
  214.      * @param string $prefix Tábla prefix
  215.      */
  216.     public static function uninstall($prefix)
  217.     {
  218.         $tables array(
  219.             $prefix.'profiles',
  220.             $prefix.'users',
  221.             $prefix.'invites',
  222.             $prefix.'messages',
  223.             $prefix.'forgotpass',
  224.             $prefix.'ranks',
  225.             $prefix.'sessions',
  226.             $prefix.'searchlog'
  227.         );
  228.         @mysql_query("drop table if exists `".implode('`, `',$tables)."`");
  229.     }
  230.  
  231.     /**
  232.      * Hibák tömbje
  233.      *
  234.      * @return array 
  235.      */
  236.     public static function errors()
  237.     {
  238.         return self::$errors;
  239.     }
  240. }
  241. ?>

Documentation generated on Sun, 04 Apr 2010 22:43:41 +0200 by phpDocumentor 1.4.1