Your IP : 216.73.217.81


Current Path : /home/semix18/public_html/pogtech.pl/app/plugins/admin/controller/
Upload File :
Current File : /home/semix18/public_html/pogtech.pl/app/plugins/admin/controller/adminInstallController.class.php

<?php /*windu.org admin controller*/
Class adminInstallController extends adminNoAuthController
{	
	function smartyGo()
	{
		parent::smartyGo();
		$this->smarty->template_dir = array(__SITE_PATH . '/app/plugins/admin/templates/');
	}
	public function __construct($request){
		if (config::get('install')!=0){
			router::redirect('admin');
			exit;
		}
		parent::__construct($request);
	}
	public function index()
	{	
		$this->smarty->assign('pagesDB',new pagesDB());	
		$this->smarty->assign('title','Select Language');	
		$this->pageDisplayHook('install.tpl','mainSimple.tpl');
	}
	public function setLanguage() {
		config::set('language-front', $this->request->getVariable('id'));
		config::set('language-admin', $this->request->getVariable('id'));
		
		$pagesDB = new pagesDB();
		$pagesDB->update('position','2', "parentId=0");
		$pagesDB->set($this->request->getVariable('id'),'position',1);
		
		router::redirect('admin-install-action',array("action" => "startInstallation"));
	}
	public function startInstallation()
	{	
		$this->smarty->assign('title',lang::read('admin.install.controller.welcome'));	
		$this->pageDisplayHook('install.tpl','mainSimple.tpl');
	}	
	public function selectDatabaseType() {
		$this->smarty->assign('load','15');		
		$this->smarty->assign('title',lang::read('admin.install.controller.selectdb'));	
		$this->pageDisplayHook('install.tpl','mainSimple.tpl');		
	}
	public function setupSQLite() {
		$configFilePath = __SITE_PATH.'/app/includes/configDB.php';
		$configContent = "<?php
		define('DB_TYPE', 'sqlite');
?>";
		
		baseFile::saveFile($configFilePath, $configContent);	
		router::redirect('admin-install-action',array("action" => "setAdministrator"));
	}
	public function setupMySQL() {
		
		$form = new form('setupMySQL','setupMySQLSuccess',$_POST,'POST');
		$form->add('host', 'input-text',null,null,array("class" => "input-medium","placeholder" => 'database host (localhost)'));
		$form->addRule('host', 'required', null, lang::read('validator.required'));

        $form->add('port', 'input-text',null,null,array("class" => "input-medium","placeholder" => 'database port (3306)'));
        $form->addRule('port', 'required', null, lang::read('validator.required'));

        $form->add('name', 'input-text',null,null,array("class" => "input-medium","placeholder" => 'database name'));
		$form->addRule('name', 'required', null, lang::read('validator.required'));

		$form->add('user', 'input-text',null,null,array("class" => "input-medium","placeholder" => 'username'));
		$form->addRule('user', 'required', null, lang::read('validator.required'));

		$form->add('password', 'input-text',null,null,array("class" => "input-medium","placeholder" => 'password'));
		$form->addRule('password', 'required', null, lang::read('validator.required'));		
		
		$form->addButton('save',lang::read('admin.install.controller.next'),'btn btn-primary btn-large', null, null, 'fa fa-upload ');
		
		$form->setHandler($this);
		$form->handle();		
		
		$this->smarty->assign('form',$form);
		$this->smarty->assign('load','30');		
		$this->smarty->assign('title',lang::read('admin.install.controller.setupmysql'));	
		$this->pageDisplayHook('install.tpl','mainSimple.tpl');		
	}
	public function setupMySQLSuccess($data) {
		$server   = $data['host'];
        $port     = $data['port'];
		$database = $data['name'];
		$username = $data['user'];
		$password = $data['password'];


        $mysqlConnection = @mysql_connect($server.':'.$port, $username, $password);


		mysql_select_db($database, $mysqlConnection);
		
		if (!$mysqlConnection){
			router::redirect('admin-install-action',array("action" => "setupMySQL","mn" => "admin.message.error.mysql.conection"));
		}else{
			$dbConfig['DB_HOST'] = $server;
            $dbConfig['DB_PORT'] = $port;
			$dbConfig['DB_NAME'] = $database;
			$dbConfig['DB_USER'] = $username;
			$dbConfig['DB_PASSWORD'] = $password;

			$sql = baseFile::readFile(__SITE_PATH.'/app/plugins/database/sql/db_structure.sql');

			$sqlParts = explode(';', $sql);
			unset($sqlParts[0]);
			unset($sqlParts[count($sqlParts)]);
			$error=0;
			foreach ($sqlParts as $sqlPart){
				if (mysql_query($sqlPart,$mysqlConnection)!=1) {
					$error=1;
				}
			}

 			mysql_close($mysqlConnection);

 			$dbList = baseFile::getFilesList(__SITE_PATH . '/app/model/');
			foreach (explode(',',PLUGINS) as $plugin){
				if (is_dir(__SITE_PATH . '/app/plugins/'.$plugin.'/model/')) {
					$dbPluginList = baseFile::getFilesList(__SITE_PATH . '/app/plugins/'.$plugin.'/model/');
					if (is_array($dbPluginList)) {
						$dbList = array_merge($dbList,$dbPluginList);
					}
				}
			}	
			foreach($dbList as $table){
				$tableName = rtrim($table->name,'.class.php');
				if (method_exists($tableName, 'fetchAll')){
					$tableDB = new $tableName;

					$rows = $tableDB->fetchAll(null,null,'*',null,null,array(),PDO::FETCH_ASSOC);
					$newTable = new $tableName($dbConfig);

					$newTable->insertMultipleFast($rows);
				}	
			}			
 			
 			if ($error==1) {
 				router::redirect('admin-install-action',array("action" => "setupMySQL","mn" => "admin.message.errordbimport"));
 			}
			
			$configFilePath = __SITE_PATH.'/app/includes/configDB.php';
			
			$configContent = "<?php
	define('DB_TYPE', 'mysql'); 
	
	//MySQL Database
	define('DB_HOST', '{$server}');
	define('DB_PORT', '{$port}');
	define('DB_NAME', '{$database}');
	define('DB_USER', '{$username}');
	define('DB_PASSWORD', '{$password}'); 	
?>";

			baseFile::saveFile($configFilePath, $configContent);			
			router::redirect('admin-install-action',array("action" => "setAdministrator"));
		}		
	}	
	public function setAdministrator() {
		$usersDB = new usersDB();
		$form = new form('adduser','setAdministratorSuccess',$_POST,'POST');
		$form->add('email', 'input-text',null,null,array("tooltip" => lang::read('admin.login.controller.autogener'),"class" => "input-medium","placeholder" => lang::read('admin.login.controller.username')));
		$form->addRule('email', 'required', null, lang::read('admin.users.controller.giveemail'));	
		$form->addRule('email', 'email', null, lang::read('admin.users.controller.givecorrectemail'));	
		$form->addRule('email', 'unique', array('table'=>$usersDB), lang::read('admin.users.controller.emailtaken'));

		$form->add('password', 'input-password',null,null,array("tooltip" => lang::read('admin.users.controller.autogener'),"class" => "input-medium","placeholder" => lang::read('admin.users.controller.password')));
		$form->addRule('password', 'string', array(6,50),lang::read('admin.users.controller.toshortpass'));	
		$form->addRule('password', 'same','passwordCompare',lang::read('admin.users.controller.diffpasswords'));
		$form->add('passwordCompare', 'input-password',null,null,array("class" => "input-medium","placeholder" => lang::read('admin.users.controller.repeatpassword')));

		$form->addButton('adduser',lang::read('admin.install.controller.next'),'btn btn-primary btn-large', null, null, 'fa fa-upload ');
		
		$form->setHandler($this);
		$form->handle();
		 
		$this->smarty->assign('form',$form);	
		$this->smarty->assign('load','50');	
		$this->smarty->assign('title',lang::read('admin.install.controller.setadmin'));	
		$this->pageDisplayHook('install.tpl','mainSimple.tpl');
	}	
	public function setAdministratorSuccess($data) {
		if (config::get('salt')==''){config::set('salt', generate::randomCode(32,2));}
		unset($data['passwordCompare']);
		$data['type'] = 9;
		$data['superAdministrator'] = 1;
		$usersDB = new usersDB();
		$user = $usersDB->add($data,1);
		
		mail::send($data['email'], lang::read('admin.users.controller.youruserdata'),$this->pageFetchHook('mail/mailRegisterAdminUser.tpl','mail/mailBase.tpl','page',$data));
		
		//set firewall info email
		config::set('firewallEmail', $data['email']);
		
		$usersDB->login($data['email'], $data['password'],3600*24*7);
		log::write($data['email'],logDB::BUCKET_LOGIN_SUCCESS);
	
		router::redirect('admin-install-action',array("action" => "setBasicConfig"));
	}	
	
	public function setBasicConfig() {
		$usersDB = new usersDB();
		
		$form = new form('setBasicConfig','setBasicConfigSuccess',$_POST,'POST');
		$form->add('pageName', 'input-text',null,null,array("class" => "input-medium","placeholder" => lang::read('admin.install.controller.pagename')));
		$form->addRule('pageName', 'required', null, lang::read('admin.content.controller.giveelementname'));	

		$form->add('timezone', 'select',lang::read('admin.install.controller.timezone'),lang::read('defaultTimezone'),array("option"=>generate::timezonesArray()));
		$form->addRule('timezone', 'required', null, lang::read('admin.content.controller.giveelementname'));			
		
		$form->addButton('addbasicconfig',lang::read('admin.install.controller.next'),'btn btn-primary btn-large', null, null, 'fa fa-upload ');
		
		$form->setHandler($this);
		$form->handle();
		 
		$this->smarty->assign('form',$form);	
		$this->smarty->assign('load','75');	
		$this->smarty->assign('title',lang::read('admin.install.controller.setbasicconfig'));	
		$this->pageDisplayHook('install.tpl','mainSimple.tpl');
	}	
	public function setBasicConfigSuccess($data) {
		config::set('pageName', $data['pageName']);
		$pagesDB = new pagesDB();
		$pagesDB->update('title', $data['pageName'], "type=".pagesDB::TYPE_LANG_CATALOG);
		
		config::set('timezone', $data['timezone']);
		
		router::redirect('admin-install-action',array("action" => "finish"));
	}		
	public function finish() {
		$configDB = new configDB();
		config::set('install', 1);
			
		$this->smarty->assign('load','100');	
		$this->smarty->assign('title',lang::read('admin.install.controller.installend'));	
		$this->smarty->assign('finish',true);	
		$this->pageDisplayHook('install.tpl','mainSimple.tpl');
	}
}
?>