Install: Remove useless

This commit is contained in:
Olivier PEREZ 2015-09-07 16:46:21 +02:00
parent cbc5727ce4
commit 76d680b6dd
10 changed files with 0 additions and 484 deletions

View File

@ -61,9 +61,6 @@ class InstallService {
return $this->error('CANT_CONNECT_TO_DATABASE');
}
// Create database schema
$this->createDatabaseSchema($connect);
// Write configuration to conf.php file
$this->writeConfiguration($smarty);
@ -98,21 +95,6 @@ class InstallService {
file_put_contents(CONF_FILENAME, $content);
}
/**
* Execute SQL installation scripts.
*
* @param \PDO $connect
*/
function createDatabaseSchema($connect) {
$dir = opendir(ROOT_DIR . '/install/');
while ($dir && ($file = readdir($dir)) !== false) {
if ($file !== '.' && $file !== '..' && strpos($file, '.mysql.auto.sql')) {
$statement = file_get_contents(ROOT_DIR . '/install/' . $file);
$connect->exec($statement);
}
}
}
/**
* @return array
*/

View File

@ -1,90 +0,0 @@
<?php
class InstallComposer
{
/**
* @var string
*/
private $composer;
/**
* @return bool
*/
public function check()
{
return file_exists(dirname(__DIR__).'/vendor/autoload.php');
}
public function install()
{
require_once 'phar://'.$this->getComposer().'/src/bootstrap.php';
$this->initEnv();
$application = new \Composer\Console\Application();
$application->setAutoExit(false);
$input = new \Symfony\Component\Console\Input\ArrayInput(array(
'command' => 'install',
'-d' => __DIR__.'/..',
'-vvv',
'--optimize-autoloader',
));
$output = new \Symfony\Component\Console\Output\NullOutput();
$application->run($input, $output);
}
/**
* @return string
*/
private function getComposer()
{
if (null === $this->composer) {
$this->initComposer();
}
return $this->composer;
}
private function initComposer()
{
// Composer exist ?
$locations = array(
__DIR__.'/../composer.phar',
'/usr/bin/composer.phar',
'/usr/local/bin/composer.phar',
);
$this->composer = null;
foreach ($locations as $location) {
if (file_exists($location) === true) {
$this->composer = $location;
break;
}
}
// If composer not found, download it !
if (null === $this->composer) {
if (!file_put_contents(
__DIR__.'/../composer.phar',
file_get_contents('https://getcomposer.org/composer.phar')
)
) {
throw new \Exception('Impossible to download composer');
}
$this->composer = __DIR__.'/../composer.phar';
}
}
private function initEnv()
{
$composer_home = getenv('COMPOSER_HOME');
$personal_home = getenv('HOME');
if (empty($composer_home) === true && empty($personal_home) === true) {
putenv('COMPOSER_HOME='.sys_get_temp_dir());
}
}
}

View File

@ -1,73 +0,0 @@
<?php
class InstallConfiguration
{
/**
* @var array
*/
private $datas;
/**
* @var array
*/
private $checks = array(
'title' => 'Application name',
'email' => 'email address',
'no-reply-email' => 'no-reply@mydomain.com',
'db-name' => 'database name',
'db-user' => 'database user',
'db-pass' => 'database password',
'db-host' => 'database server',
'db-type' => 'database type',
);
/**
* @param array $datas
*/
public function __construct(array $datas)
{
$this->datas = $datas;
}
/**
* @return bool
*/
public function checkValues()
{
foreach (array_keys($this->checks) as $key) {
if (isset($this->datas[$key]) === false) {
return false;
}
}
return true;
}
public function copy($template, $destination)
{
$configuration = file_get_contents($template);
if (false === $configuration) {
throw new \Exception('Impossible to read template configuration');
}
$configuration = $this->convertConfigurationFile($configuration);
if (file_put_contents($destination, $configuration) === false) {
throw new \Exception('Impossible to save configuration');
}
}
private function convertConfigurationFile($content)
{
foreach ($this->checks as $replace => $search) {
$content = str_replace(
'\'<'.$search.'>\'',
var_export($this->datas[$replace], true),
$content
);
}
return $content;
}
}

View File

@ -1,24 +0,0 @@
<?php
class InstallSql
{
public function inject()
{
require_once __DIR__.'/../app/inc/init.php';
if ($connect->ErrorMsg() !== '') {
throw new \Exception('Bad database configuration : '.$connect->ErrorMsg());
}
$sqls = explode("\n", file_get_contents(__DIR__.'/install.mysql.auto.sql'));
foreach ($sqls as $sql) {
$sql = trim($sql);
if (empty($sql) === true) {
continue;
}
$query = $connect->Prepare($sql);
$cleaning = $connect->Execute($query);
}
}
}

View File

@ -1,33 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>OpenSondage Installation</title>
<link rel="stylesheet" href="../css/bootstrap.min.css">
<link rel="stylesheet" href="../css/style.css">
<link rel="stylesheet" href="../css/frama.css">
<link rel="stylesheet" href="install.css">
</head>
<body>
<div class="container ombre">
<header role="banner">
<h1>
<img src="../images/logo-framadate.png" width="360" height="50" alt="Framadate" />
</h1>
<h2>Make your polls</h2>
<hr class="trait" role="presentation">
</header>
<main role="main">
<h3>Framadate Installation</h3>
<div class="alert alert-danger" role="alert">
<?php echo htmlspecialchars($e->getMessage(), ENT_COMPAT | ENT_HTML401, 'UTF-8') ?>
</div>
<div class="alert alert-info" role="alert">
<pre>
<?php echo htmlspecialchars($e->getTraceAsString(), ENT_COMPAT | ENT_HTML401, 'UTF-8') ?>
</pre>
</div>
</main>
</div>
</body>
</html>

View File

@ -1,11 +0,0 @@
header {
padding-bottom: 0;
}
main {
padding-top: 0;
}
fieldset {
margin: 1.5em 0;
}

View File

@ -1,72 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>OpenSondage Installation</title>
<link rel="stylesheet" href="../css/bootstrap.min.css">
<link rel="stylesheet" href="../css/style.css">
<link rel="stylesheet" href="../css/frama.css">
<link rel="stylesheet" href="install.css">
</head>
<body>
<div class="container ombre">
<header role="banner">
<h1>
<img src="../images/logo-framadate.png" width="360" height="50" alt="Framadate" />
</h1>
<h2>Make your polls</h2>
<hr class="trait" role="presentation">
</header>
<main role="main">
<h3>Framadate Installation</h3>
<form action="" method="post" role="form">
<fieldset>
<legend>General</legend>
<div class="form-group">
<label for="title">Title</label>
<input type="text" class="form-control" id="title" name="title" placeholder="Application name" required>
</div>
<div class="form-group">
<label for="email">Administrator email</label>
<input type="email" class="form-control" id="email" name="email" placeholder="Email of the administrator" required>
</div>
<div class="form-group">
<label for="no-reply-email">No-reply email</label>
<input type="email" class="form-control" id="no-reply-email" name="no-reply-email" placeholder="Email for automatic responses" required>
</div>
</fieldset>
<fieldset>
<legend>Database</legend>
<div class="form-group">
<label for="db-type">Type</label>
<select name="db-type" id="db-type" required>
<option value="pdo">PDO - MySQL (recommanded)</option>
<option value="mysql">MySQL</option>
</select>
</div>
<div class="form-group">
<label for="db-host">Host</label>
<input type="text" class="form-control" id="db-host" name="db-host" value="localhost" required>
</div>
<div class="form-group">
<label for="db-name">Database name</label>
<input type="text" class="form-control" id="db-name" name="db-name" value="opensondage" required>
</div>
<div class="form-group">
<label for="db-user">Username</label>
<input type="text" class="form-control" id="db-user" name="db-user" value="root" required>
</div>
<div class="form-group">
<label for="db-pass">Password</label>
<input type="password" class="form-control" id="db-pass" name="db-pass" value="">
</div>
</fieldset>
<input type="submit" class="btn btn-success" name="install" value="Install">
</form>
</main>
</div>
</body>
</html>

View File

@ -1,8 +0,0 @@
CREATE TABLE IF NOT EXISTS `comments` (`id_comment` int(11) unsigned NOT NULL AUTO_INCREMENT, `id_sondage` char(16) NOT NULL, `comment` text NOT NULL, `usercomment` text, PRIMARY KEY (`id_comment`), KEY `id_sondage` (`id_sondage`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `sondage` (`id_sondage` char(16) NOT NULL, `commentaires` text, `mail_admin` varchar(128) DEFAULT NULL, `nom_admin` varchar(64) DEFAULT NULL, `titre` text, `id_sondage_admin` char(24) DEFAULT NULL, `date_creation` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `date_fin` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', `format` varchar(2) DEFAULT NULL, `mailsonde` tinyint(1) DEFAULT '0', `statut` int(11) NOT NULL DEFAULT '1' COMMENT '1 = actif ; 0 = inactif ; ', UNIQUE KEY `id_sondage` (`id_sondage`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `sujet_studs` (`id_sondage` char(16) NOT NULL, `sujet` text, KEY `id_sondage` (`id_sondage`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `user_studs` (`id_users` int(11) unsigned NOT NULL AUTO_INCREMENT, `nom` varchar(64) NOT NULL, `id_sondage` char(16) NOT NULL, `reponses` text NOT NULL, PRIMARY KEY (`id_users`), KEY `id_sondage` (`id_sondage`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=0 ;
INSERT INTO `sondage` (`id_sondage`, `commentaires`, `mail_admin`, `nom_admin`, `titre`, `id_sondage_admin`, `date_fin`, `format`) VALUES ('aqg259dth55iuhwm','Repas de Noel du service','Stephanie@retaillard.com','Stephanie', 'Repas de Noel','aqg259dth55iuhwmy9d8jlwk', FROM_UNIXTIME('1627100361'),'D+');
INSERT INTO `sujet_studs` (`id_sondage`, `sujet`) VALUES ('aqg259dth55iuhwm','1225839600@12h,1225839600@19h,1226012400@12h,1226012400@19h,1226876400@12h,1226876400@19h,1227049200@12h,1227049200@19h,1227826800@12h,1227826800@19h');
INSERT INTO `user_studs` (`nom`, `id_sondage`, `reponses`, `id_users`) VALUES ('marcel','aqg259dth55iuhwm','0110111101','933'), ('paul','aqg259dth55iuhwm','1011010111','935'), ('sophie','aqg259dth55iuhwm','1110110000','945'), ('barack','aqg259dth55iuhwm','0110000','948'), ('takashi','aqg259dth55iuhwm','0000110100','951'), ('albert','aqg259dth55iuhwm','1010110','975'), ('alfred','aqg259dth55iuhwm','0110010','1135'), ('marcs','aqg259dth55iuhwm','0100001010','1143'), ('laure','aqg259dth55iuhwm','0011000','1347'), ('benda','aqg259dth55iuhwm','1101101100','1667'), ('Albert','aqg259dth55iuhwm','1111110011','1668');

View File

@ -1,112 +0,0 @@
-- --------------------------------------------------------
--
-- Table structure `poll`
--
CREATE TABLE IF NOT EXISTS `poll` (
`id` CHAR(16) NOT NULL,
`admin_id` CHAR(24) NOT NULL,
`title` TEXT NOT NULL,
`description` TEXT,
`admin_name` VARCHAR(64) DEFAULT NULL,
`admin_mail` VARCHAR(128) DEFAULT NULL,
`creation_date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`end_date` TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00',
`format` VARCHAR(1) DEFAULT NULL,
`editable` TINYINT(1) DEFAULT '0',
`receiveNewVotes` TINYINT(1) DEFAULT '0',
`active` TINYINT(1) DEFAULT '1',
PRIMARY KEY (`id`)
)
ENGINE = InnoDB
DEFAULT CHARSET = utf8;
-- --------------------------------------------------------
--
-- Table structure `slot`
--
CREATE TABLE IF NOT EXISTS `slot` (
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`poll_id` CHAR(16) NOT NULL,
`title` TEXT,
`moments` TEXT,
PRIMARY KEY (`id`),
KEY `poll_id` (`poll_id`)
)
ENGINE = InnoDB
DEFAULT CHARSET = utf8;
-- --------------------------------------------------------
--
-- Table structure `comment`
--
CREATE TABLE IF NOT EXISTS `comment` (
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`poll_id` CHAR(16) NOT NULL,
`name` TEXT,
`comment` TEXT NOT NULL,
PRIMARY KEY (`id`),
KEY `poll_id` (`poll_id`)
)
ENGINE = InnoDB
DEFAULT CHARSET = utf8;
-- --------------------------------------------------------
--
-- Table structure `vote`
--
CREATE TABLE IF NOT EXISTS `vote` (
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`poll_id` CHAR(16) NOT NULL,
`name` VARCHAR(64) NOT NULL,
`choices` TEXT NOT NULL,
PRIMARY KEY (`id`),
KEY `poll_id` (`poll_id`)
)
ENGINE = InnoDB
DEFAULT CHARSET = utf8;
--
-- Data for Name: poll; Type: TABLE DATA;
--
INSERT INTO `poll`
(`id`, `description`, `admin_mail`, `admin_name`, `title`, `admin_id`, `end_date`, `format`)
VALUES
('aqg259dth55iuhwm', 'Repas de Noel du service', 'Stephanie@retaillard.com', 'Stephanie', 'Repas de Noel',
'aqg259dth55iuhwmy9d8jlwk', FROM_UNIXTIME('1627100361'), 'D');
--
-- Data for Name: slot; Type: TABLE DATA;
--
INSERT INTO `slot` (`poll_id`, `title`, `moments`) VALUES
('aqg259dth55iuhwm', '1225839600', '12h,19h'),
('aqg259dth55iuhwm', '1226012400', '12h,19h'),
('aqg259dth55iuhwm', '1226876400', '12h,19h'),
('aqg259dth55iuhwm', '1227826800', '12h,19h');
--
-- Data for Name: vote; Type: TABLE DATA;
--
INSERT INTO `vote` (`name`, `poll_id`, `choices`) VALUES
('marcel', 'aqg259dth55iuhwm', '02202222'),
('paul', 'aqg259dth55iuhwm', '20220202'),
('sophie', 'aqg259dth55iuhwm', '22202200'),
('barack', 'aqg259dth55iuhwm', '02200000'),
('takashi', 'aqg259dth55iuhwm', '00002202'),
('albert', 'aqg259dth55iuhwm', '20202200'),
('alfred', 'aqg259dth55iuhwm', '02200200'),
('marcs', 'aqg259dth55iuhwm', '02000020'),
('laure', 'aqg259dth55iuhwm', '00220000'),
('benda', 'aqg259dth55iuhwm', '22022022'),
('albert', 'aqg259dth55iuhwm', '22222200');

View File

@ -1,43 +0,0 @@
<?php
require_once __DIR__.'/InstallComposer.php';
require_once __DIR__.'/InstallConfiguration.php';
require_once __DIR__.'/InstallSql.php';
$configuration_file = __DIR__.'/../app/inc/constants.php';
if (file_exists($configuration_file) === true) {
header('Location: ../index.php');
exit;
}
if (isset($_POST['install']) === true) {
try {
// Composer installation
$composer = new InstallComposer();
if ($composer->check() === false) {
ini_set('max_execution_time', 0);
$composer->install();
}
// Save configuration
$configuration = new InstallConfiguration($_POST);
if ($configuration->checkValues() === false) {
throw new \Exception('Bad value for configuration');
}
$configuration->copy($configuration_file.'.template', $configuration_file);
// Inject database
$sql = new InstallSql();
$sql->inject();
header('Location: ../index.php');
die();
} catch (Exception $e) {
require_once __DIR__.'/error.html';
die();
}
}
require_once __DIR__.'/install.html';