<?php

include_once './pages/PageInterface.inc.php';
include_once './includes/utils/InputSanitizer.inc.php';

include_once './includes/database/MySQLDatabase.inc.php';

/**
 * This class represent the installation page of the site.
 *
 * @author Thomas Schwery <thomas.schwery@epfl.ch>
 */
class InstallPage implements PageInterface {

    private $title;

    private $content;

    public function  __construct() {
        if (key_exists("step", $_GET)) {
            $step = $_GET["step"];
            if ($step == 2) $this->secondStep();
        } else {
            $this->firstStep();
        }
    }

    public function getTitle() {
        return Localization::adminInstall . $this->title;
    }

    public function getContent() {
        return $this->content;
    }

    public static function getStaticTitle() {
        return Localization::adminInstall;
    }

    private function firstStep() {
        $this->content = "Debut de l'installation ...";
        $this->content.= "<a href='?page=Install&step=2'>Suite</a>";
    }

    private function secondStep() {
        $retVal = MySQLDatabase::getInstance()->runOperations(InstallPage::mySQLDataUser());
        $this->content = "Insertion des utilisateurs par défaut: " . implode(",",$retVal) . "\n<br>";

        $retVal = MySQLDatabase::getInstance()->runOperations(InstallPage::mySQLDataTournament());
        $this->content .= "Insertion des concours par défaut: " . implode(",",$retVal) . "\n<br>";

        $retVal = MySQLDatabase::getInstance()->runOperations(InstallPage::mySQLDataNews());
        $this->content .= "Insertion des nouvelles par défaut: " . implode(",",$retVal) . "\n<br>";

        $retVal = MySQLDatabase::getInstance()->runOperations(InstallPage::mySQLDataMenu());
        $this->content .= "Insertion des entrées menu par défaut: " . implode(",",$retVal) . "\n<br>";

        $retVal = MySQLDatabase::getInstance()->runOperations(InstallPage::mySQLDataCategories());
        $this->content .= "Insertion des catégories par défaut: " . implode(",",$retVal) . "\n<br>";
    }

    private static function mySQLDataUser() {
        return <<<SQL
--
-- Table structure for table `users`
--
DROP TABLE IF EXISTS `users`;
SET character_set_client = utf8;
CREATE TABLE `users` (
  `identifier` int(11) NOT NULL auto_increment,
  `username` text NOT NULL,
  `fullName` text NOT NULL,
  `password` text NOT NULL,
  `birthday` date NOT NULL,
  `mail` text NOT NULL,
  PRIMARY KEY  (`identifier`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;

--
-- Dumping data for table `users`
--
LOCK TABLES `users` WRITE;
INSERT INTO `users` VALUES
(1,'tschwery','Thomas Schwery','a76b52e030ceff991cffdc13b756703260b15b2e2dcd2780b41775daab41c61d109c90aaabd154856924224075f6f7623dfffd51968cd810d62a9071e02d0df7','1987-09-23','username@somewhere.com'),
(2,'toto','Beta Tester','10e06b990d44de0091a2113fd95c92fc905166af147aa7632639c41aa7f26b1620c47443813c605b924c05591c161ecc35944fc69c4433a49d10fc6b04a33611','1965-02-10','username@somewhere.com');
UNLOCK TABLES;

--
-- Table structure for table `userRight`
--
DROP TABLE IF EXISTS `userRight`;
SET character_set_client = utf8;
CREATE TABLE `userRight` (
  `rightId` int(11) NOT NULL auto_increment,
  `name` text NOT NULL,
  PRIMARY KEY  (`rightId`)
) ENGINE=MyISAM AUTO_INCREMENT=10 DEFAULT CHARSET=latin1;

--
-- Dumping data for table `userRight`
--
LOCK TABLES `userRight` WRITE;
INSERT INTO `userRight` VALUES (1,'Membre'),(6,'NewsAdministration'),(3,'UserAdministration'),(4,'MemberRightAdministration'),(5,'CentralAdministration'),(7,'MenuAdministration'),(8,'TournamentAdministration'),(9,'CategoryAdministration');
UNLOCK TABLES;

--
-- Table structure for table `userRightEntries`
--
DROP TABLE IF EXISTS `userRightEntries`;
SET character_set_client = utf8;
CREATE TABLE `userRightEntries` (
  `rightId` int(11) NOT NULL,
  `userId` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

--
-- Dumping data for table `userRightEntries`
--
LOCK TABLES `userRightEntries` WRITE;
INSERT INTO `userRightEntries` VALUES (1,1),(3,1),(4,1),(5,1),(6,1),(7,1),(8,1),(9,1),(2,11);
UNLOCK TABLES;
SQL;
    }

    private static function mySQLDataCategories() {
        return <<<SQL
--
-- Table structure for table `categories`
--

DROP TABLE IF EXISTS `categories`;
SET character_set_client = utf8;
CREATE TABLE `categories` (
  `identifier` int(11) NOT NULL auto_increment,
  `name` text NOT NULL,
  UNIQUE KEY `identifier` (`identifier`)
) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=latin1;

--
-- Dumping data for table `categories`
--

LOCK TABLES `categories` WRITE;
INSERT INTO `categories` VALUES (6,'CatÃ©gorie 2'),(5,'CatÃ©gorie 1');
UNLOCK TABLES;
SQL;
    }

    private static function mySQLDataMenu() {
        return <<<SQL
--
-- Table structure for table `menuEntries`
--

DROP TABLE IF EXISTS `menuEntries`;
SET character_set_client = utf8;
CREATE TABLE `menuEntries` (
  `identifier` int(11) NOT NULL auto_increment,
  `name` text NOT NULL,
  `hint` text NOT NULL,
  `url` text NOT NULL,
  `menuId` int(11) NOT NULL,
  `weight` int(11) NOT NULL,
  PRIMARY KEY  (`identifier`)
) ENGINE=MyISAM AUTO_INCREMENT=12 DEFAULT CHARSET=latin1;

--
-- Dumping data for table `menuEntries`
--

LOCK TABLES `menuEntries` WRITE;
INSERT INTO `menuEntries` VALUES (1,'Nouvelles','Lien vers les nouvelles du club','News',0,0),(2,'Index','Something','Index',0,0),(7,'Membres','Liens vers une page des membres du club','Users',0,0),(11,'Concours','Liens vers une page listant tous les concours','Tournaments',0,0);
UNLOCK TABLES;

SQL;
    }

    private static function mySQLDataNews() {
        return <<<SQL
--
-- Table structure for table `news`
--

DROP TABLE IF EXISTS `news`;
SET character_set_client = utf8;
CREATE TABLE `news` (
  `identifier` int(11) NOT NULL auto_increment,
  `writingDate` datetime NOT NULL,
  `publicationDate` datetime NOT NULL,
  `authorId` int(11) NOT NULL,
  `abstract` text NOT NULL,
  `text` text NOT NULL,
  PRIMARY KEY  (`identifier`)
) ENGINE=MyISAM AUTO_INCREMENT=12 DEFAULT CHARSET=latin1;
SET character_set_client = @saved_cs_client;

--
-- Dumping data for table `news`
--

LOCK TABLES `news` WRITE;
INSERT INTO `news` VALUES (10,'2010-02-10 00:00:00','2010-03-07 00:00:00',15,'Article de Test','Ceci est un article testant la reconnaissance de dates ...'),(9,'2010-02-10 00:00:00','2010-01-01 00:00:00',15,'Nouvel Article','Ceci est un test ...'),(11,'2010-02-10 00:00:00','2010-02-08 00:00:00',15,'Encore un article','Youhouhou !');
UNLOCK TABLES;

SQL;
    }

    private static function mySQLDataTournament() {
        return <<<SQL
--
-- Table structure for table `tournaments`
--
DROP TABLE IF EXISTS `tournaments`;
SET character_set_client = utf8;
CREATE TABLE `tournaments` (
  `identifier` int(11) NOT NULL auto_increment,
  `name` text NOT NULL,
  `location` text NOT NULL,
  `date` date NOT NULL,
  `type` text NOT NULL,
  `comments` text NOT NULL,
  UNIQUE KEY `identifier` (`identifier`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;

--
-- Dumping data for table `tournaments`
--
LOCK TABLES `tournaments` WRITE;
INSERT INTO `tournaments` VALUES (2,'Concours test','Plan les ouates',2010-02-10,'Field','Commentaire test assez long pour Ã©ventuellement embÃªter ...'),(3,'Un autre concours pour un long nom','New location',2010-02-10,'New type','New comment');
UNLOCK TABLES;

--
-- Table structure for table `tournamentsEntries`
--
DROP TABLE IF EXISTS `tournamentsEntries`;
SET character_set_client = utf8;
CREATE TABLE `tournamentsEntries` (
  `entryId` int(11) NOT NULL auto_increment,
  `tournamentId` int(11) NOT NULL,
  `userId` int(11) NOT NULL,
  `categoryId` int(11) NOT NULL,
  `points` int(11) NOT NULL,
  `rank` int(11) NOT NULL,
  `participants` int(11) NOT NULL,
  PRIMARY KEY  (`entryId`)
) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=latin1;

--
-- Dumping data for table `tournamentsEntries`
--
LOCK TABLES `tournamentsEntries` WRITE;
INSERT INTO `tournamentsEntries` VALUES (1,2,15,5,230,1,2),(2,2,15,5,123,1,3),(4,2,15,6,300,3,12),(5,3,15,5,100,1,10),(6,2,17,5,300,2,32),(7,2,17,6,200,4,31),(8,2,17,6,400,1,21);
UNLOCK TABLES;
SQL;
    }
}
?>