<?php

/**
 * Description of DB
 *
 * @author Arkadiusz Rychlik <a.rychlik at eppe.com.pl>
 */
class Main_Users_Module_Initer_DB {

	static $sql_before = "
		SET foreign_key_checks = 0;
		DROP TABLE IF EXISTS user;
		DROP TABLE IF EXISTS user_role;
		SET foreign_key_checks = 1;
	";
	static $sql_after = "
		ALTER TABLE  `user` ADD UNIQUE (  `name` );
		
		ALTER TABLE `user`
		ADD `fbuserid` varchar(64) NULL AFTER `id`,
		COMMENT=''; -- 0.457 s          
	";

	static function createUserTable() {
		$sql = <<<EOF
		CREATE TABLE `user` (
		  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
		  `name` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
		  `pass` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
		  `salt` varchar(12) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
		  `active` tinyint(1) unsigned DEFAULT NULL,
          `loginarea` enum('frontend','backend') NOT NULL,	
		  PRIMARY KEY (`id`),
		  UNIQUE KEY `name` (`name`,`loginarea`)
		) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

EOF;

		R::exec($sql);
	}

	static function init() {
		R::exec(static::$sql_before);
		static::createUserTable();
		$user = R::dispense('user');
		$user->name = 'user';
		$user->pass = ' ';
		$user->salt = base_convert(uniqid(microtime(true)), 10, 36);
		$user->active = true;
		$user->loginarea = 'backend';
		$user->sharedRole[] = R::findOne('role', 'name = :name', array( ':name' => reset(Rtn_Module_Initer_Acl::$roles) )); // always first role
		R::store($user);

		R::exec('UPDATE user SET pass = PASSWORD(CONCAT("pass",salt)) WHERE name = "user"');

		R::exec(static::$sql_after);
	}

}
