remaniement de script d'installation
This commit is contained in:
parent
7b3e4cc67d
commit
a38097391d
@ -110,9 +110,32 @@ class install extends common
|
|||||||
$userMail = $this->getInput('installMail', helper::FILTER_MAIL, true);
|
$userMail = $this->getInput('installMail', helper::FILTER_MAIL, true);
|
||||||
$userId = $this->getInput('installId', helper::FILTER_ID, true);
|
$userId = $this->getInput('installId', helper::FILTER_ID, true);
|
||||||
|
|
||||||
|
// Validation de la langue transmise
|
||||||
|
self::$i18nUI = $_SESSION['ZWII_UI'];
|
||||||
|
self::$i18nUI = array_key_exists(self::$i18nUI, self::$languages) ? self::$i18nUI : 'fr_FR';
|
||||||
|
// par défaut le contenu est la langue d'installation
|
||||||
|
$_SESSION['ZWII_CONTENT'] = self::$i18nUI;
|
||||||
|
|
||||||
|
// Création du dossier de langue avec le marqueur de langue par défaut
|
||||||
|
if (!is_dir(self::DATA_DIR . $_SESSION['ZWII_CONTENT'])) {
|
||||||
|
mkdir(self::DATA_DIR . $_SESSION['ZWII_CONTENT']);
|
||||||
|
touch(self::DATA_DIR . $_SESSION['ZWII_CONTENT'] . '/.default');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Installation du site de test
|
||||||
|
if (
|
||||||
|
$this->getInput('installDefaultData', helper::FILTER_BOOLEAN) === false
|
||||||
|
&& $_SESSION['ZWII_CONTENT'] === 'fr_FR'
|
||||||
|
) {
|
||||||
|
$sample = true;
|
||||||
|
}
|
||||||
|
$this->initData('page', $_SESSION['ZWII_CONTENT'], $sample);
|
||||||
|
$this->initData('module', $_SESSION['ZWII_CONTENT'], $sample);
|
||||||
|
$this->initData('locale', $_SESSION['ZWII_CONTENT'], $sample);
|
||||||
|
|
||||||
// Création de l'utilisateur si les données sont complétées.
|
// Création de l'utilisateur si les données sont complétées.
|
||||||
// success retour de l'enregistrement des données
|
// success retour de l'enregistrement des données
|
||||||
$success = $this->setData([
|
$this->setData([
|
||||||
'user',
|
'user',
|
||||||
$userId,
|
$userId,
|
||||||
[
|
[
|
||||||
@ -124,130 +147,103 @@ class install extends common
|
|||||||
'signature' => 1,
|
'signature' => 1,
|
||||||
'mail' => $userMail,
|
'mail' => $userMail,
|
||||||
'password' => $this->getInput('installPassword', helper::FILTER_PASSWORD, true),
|
'password' => $this->getInput('installPassword', helper::FILTER_PASSWORD, true),
|
||||||
'language' => self::$i18nUI
|
'language' => $_SESSION['ZWII_CONTENT']
|
||||||
]
|
]
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// Compte créé, envoi du mail et création des données du site
|
// Envoie le mail
|
||||||
if ($success) { // Formulaire complété envoi du mail
|
// Sent contient true si réussite sinon code erreur d'envoi en clair
|
||||||
// Envoie le mail
|
$this->sendMail(
|
||||||
// Sent contient true si réussite sinon code erreur d'envoi en clair
|
$userMail,
|
||||||
$sent = $this->sendMail(
|
'Installation de votre site',
|
||||||
$userMail,
|
'Bonjour' . ' <strong>' . $userFirstname . ' ' . $userLastname . '</strong>,<br><br>' .
|
||||||
'Installation de votre site',
|
'Voici les détails de votre installation.<br><br>' .
|
||||||
'Bonjour' . ' <strong>' . $userFirstname . ' ' . $userLastname . '</strong>,<br><br>' .
|
'<strong>URL du site :</strong> <a href="' . helper::baseUrl(false) . '" target="_blank">' . helper::baseUrl(false) . '</a><br>' .
|
||||||
'Voici les détails de votre installation.<br><br>' .
|
'<strong>Identifiant du compte :</strong> ' . $this->getInput('installId') . '<br>',
|
||||||
'<strong>URL du site :</strong> <a href="' . helper::baseUrl(false) . '" target="_blank">' . helper::baseUrl(false) . '</a><br>' .
|
null,
|
||||||
'<strong>Identifiant du compte :</strong> ' . $this->getInput('installId') . '<br>',
|
'localhost',
|
||||||
null,
|
);
|
||||||
$this->getData(['config', 'smtp', 'from']),
|
|
||||||
);
|
|
||||||
|
|
||||||
// Validation de la langue transmise
|
// Nettoyage fr par défaut
|
||||||
self::$i18nUI = $_SESSION['ZWII_UI'];
|
if (
|
||||||
self::$i18nUI = array_key_exists(self::$i18nUI, self::$languages) ? self::$i18nUI : 'fr_FR';
|
$_SESSION['ZWII_CONTENT'] !== 'fr_FR'
|
||||||
|
) {
|
||||||
// par défaut le contenu est la langue d'installation
|
if (is_dir(self::DATA_DIR . 'fr_FR'))
|
||||||
self::$i18nContent = self::$i18nUI;
|
$this->removeDir(self::DATA_DIR . 'fr_FR');
|
||||||
$_SESSION['ZWII_CONTENT'] = self::$i18nContent;
|
|
||||||
|
|
||||||
// Création du dossier de langue avec le marqueur de langue par défaut
|
|
||||||
if (!is_dir(self::DATA_DIR . self::$i18nContent)) {
|
|
||||||
mkdir(self::DATA_DIR . self::$i18nContent);
|
|
||||||
touch(self::DATA_DIR . self::$i18nContent . '/.default');
|
|
||||||
}
|
|
||||||
|
|
||||||
// Installation du site de test
|
|
||||||
if (
|
|
||||||
$this->getInput('installDefaultData', helper::FILTER_BOOLEAN) === false
|
|
||||||
&& self::$i18nContent === 'fr_FR'
|
|
||||||
) {
|
|
||||||
$this->initData('module', 'fr_FR', true);
|
|
||||||
$this->initData('page', 'fr_FR', true);
|
|
||||||
$this->setData(['module', 'blog', 'posts', 'mon-premier-article', 'userId', $userId]);
|
|
||||||
$this->setData(['module', 'blog', 'posts', 'mon-deuxieme-article', 'userId', $userId]);
|
|
||||||
$this->setData(['module', 'blog', 'posts', 'mon-troisieme-article', 'userId', $userId]);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// Nettoyage fr par défaut
|
|
||||||
if (
|
|
||||||
self::$i18nContent !== 'fr_FR'
|
|
||||||
|
|
||||||
) {
|
|
||||||
|
|
||||||
if (is_dir(self::DATA_DIR . 'fr_FR'))
|
|
||||||
$this->removeDir(self::DATA_DIR . 'fr_FR');
|
|
||||||
}
|
|
||||||
|
|
||||||
// Sauvegarder la configuration du Proxy
|
|
||||||
$this->setData(['config', 'proxyType', $this->getInput('installProxyType')]);
|
|
||||||
$this->setData(['config', 'proxyUrl', $this->getInput('installProxyUrl')]);
|
|
||||||
$this->setData(['config', 'proxyPort', $this->getInput('installProxyPort', helper::FILTER_INT)]);
|
|
||||||
|
|
||||||
// Images exemples livrées dans tous les cas
|
|
||||||
try {
|
|
||||||
// Décompression dans le dossier de fichier temporaires
|
|
||||||
if (file_exists(self::TEMP_DIR . 'files.tar.gz')) {
|
|
||||||
unlink(self::TEMP_DIR . 'files.tar.gz');
|
|
||||||
}
|
|
||||||
if (file_exists(self::TEMP_DIR . 'files.tar')) {
|
|
||||||
unlink(self::TEMP_DIR . 'files.tar');
|
|
||||||
}
|
|
||||||
copy('core/module/install/ressource/files.tar.gz', self::TEMP_DIR . 'files.tar.gz');
|
|
||||||
$pharData = new PharData(self::TEMP_DIR . 'files.tar.gz');
|
|
||||||
$pharData->decompress();
|
|
||||||
// Installation
|
|
||||||
$pharData->extractTo(__DIR__ . '/../../../', null, true);
|
|
||||||
} catch (Exception $e) {
|
|
||||||
$success = $e->getMessage();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Nettoyage
|
|
||||||
unlink(self::TEMP_DIR . 'files.tar.gz');
|
|
||||||
unlink(self::TEMP_DIR . 'files.tar');
|
|
||||||
|
|
||||||
// Créer le dossier des fontes
|
|
||||||
if (!is_dir(self::DATA_DIR . 'font')) {
|
|
||||||
mkdir(self::DATA_DIR . 'font');
|
|
||||||
}
|
|
||||||
|
|
||||||
// Installation du thème sélectionné
|
|
||||||
$dataThemes = json_decode(file_get_contents('core/module/install/ressource/themes/themes.json'), true);
|
|
||||||
$dataThemes = $dataThemes['themes'];
|
|
||||||
$themeFilename = $dataThemes[$this->getInput('installTheme', helper::FILTER_STRING_SHORT)]['filename'];
|
|
||||||
if ($themeFilename !== '') {
|
|
||||||
$theme = new theme;
|
|
||||||
$theme->import('core/module/install/ressource/themes/' . $themeFilename);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Copie des thèmes dans les fichiers
|
|
||||||
if (!is_dir(self::FILE_DIR . 'source/theme')) {
|
|
||||||
mkdir(self::FILE_DIR . 'source/theme');
|
|
||||||
}
|
|
||||||
$this->copyDir('core/module/install/ressource/themes', self::FILE_DIR . 'source/theme');
|
|
||||||
unlink(self::FILE_DIR . 'source/theme/themes.json');
|
|
||||||
|
|
||||||
// Copie des langues de l'UI et génération de la base de données
|
|
||||||
if (is_dir(self::I18N_DIR) === false) {
|
|
||||||
mkdir(self::I18N_DIR);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Créer la base de données des langues
|
|
||||||
copy('core/module/install/ressource/i18n/language.json', self::DATA_DIR . 'language.json');
|
|
||||||
$this->copyDir('core/module/install/ressource/i18n', self::I18N_DIR);
|
|
||||||
unlink(self::I18N_DIR . 'language.json');
|
|
||||||
|
|
||||||
// Fixe l'adresse from pour les envois d'email
|
|
||||||
$this->setData(['config', 'smtp', 'from', 'no-reply@' . str_replace('www.', '', $_SERVER['HTTP_HOST'])]);
|
|
||||||
|
|
||||||
// Valeurs en sortie
|
|
||||||
$this->addOutput([
|
|
||||||
'redirect' => helper::baseUrl(),
|
|
||||||
'notification' => $sent === true ? helper::translate('Installation terminée') : $sent,
|
|
||||||
'state' => ($sent === true && $success === true) ? true : null
|
|
||||||
]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Sauvegarder la configuration du Proxy
|
||||||
|
$this->setData(['config', 'proxyType', $this->getInput('installProxyType')]);
|
||||||
|
$this->setData(['config', 'proxyUrl', $this->getInput('installProxyUrl')]);
|
||||||
|
$this->setData(['config', 'proxyPort', $this->getInput('installProxyPort', helper::FILTER_INT)]);
|
||||||
|
|
||||||
|
// Images exemples livrées dans tous les cas
|
||||||
|
try {
|
||||||
|
// Décompression dans le dossier de fichier temporaires
|
||||||
|
if (file_exists(self::TEMP_DIR . 'files.tar.gz')) {
|
||||||
|
unlink(self::TEMP_DIR . 'files.tar.gz');
|
||||||
|
}
|
||||||
|
if (file_exists(self::TEMP_DIR . 'files.tar')) {
|
||||||
|
unlink(self::TEMP_DIR . 'files.tar');
|
||||||
|
}
|
||||||
|
copy('core/module/install/ressource/files.tar.gz', self::TEMP_DIR . 'files.tar.gz');
|
||||||
|
$pharData = new PharData(self::TEMP_DIR . 'files.tar.gz');
|
||||||
|
$pharData->decompress();
|
||||||
|
// Installation
|
||||||
|
$pharData->extractTo(__DIR__ . '/../../../', null, true);
|
||||||
|
} catch (Exception $e) {
|
||||||
|
$success = $e->getMessage();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Nettoyage
|
||||||
|
unlink(self::TEMP_DIR . 'files.tar.gz');
|
||||||
|
unlink(self::TEMP_DIR . 'files.tar');
|
||||||
|
|
||||||
|
// Créer le dossier des fontes
|
||||||
|
if (!is_dir(self::DATA_DIR . 'font')) {
|
||||||
|
mkdir(self::DATA_DIR . 'font');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Installation du thème sélectionné
|
||||||
|
$dataThemes = json_decode(file_get_contents('core/module/install/ressource/themes/themes.json'), true);
|
||||||
|
$dataThemes = $dataThemes['themes'];
|
||||||
|
$themeFilename = $dataThemes[$this->getInput('installTheme', helper::FILTER_STRING_SHORT)]['filename'];
|
||||||
|
if ($themeFilename !== '') {
|
||||||
|
$theme = new theme;
|
||||||
|
$theme->import('core/module/install/ressource/themes/' . $themeFilename);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Copie des thèmes dans les fichiers
|
||||||
|
if (!is_dir(self::FILE_DIR . 'source/theme')) {
|
||||||
|
mkdir(self::FILE_DIR . 'source/theme');
|
||||||
|
}
|
||||||
|
$this->copyDir('core/module/install/ressource/themes', self::FILE_DIR . 'source/theme');
|
||||||
|
unlink(self::FILE_DIR . 'source/theme/themes.json');
|
||||||
|
|
||||||
|
// Copie des langues de l'UI et génération de la base de données
|
||||||
|
if (is_dir(self::I18N_DIR) === false) {
|
||||||
|
mkdir(self::I18N_DIR);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Créer la base de données des langues
|
||||||
|
// copy('core/module/install/ressource/i18n/language.json', self::DATA_DIR . 'language.json');
|
||||||
|
$this->copyDir('core/module/install/ressource/i18n', self::I18N_DIR);
|
||||||
|
// unlink(self::I18N_DIR . 'language.json');
|
||||||
|
|
||||||
|
// Fixe l'adresse from pour les envois d'email
|
||||||
|
$this->setData(['config', 'smtp', 'from', 'no-reply@' . str_replace('www.', '', $_SERVER['HTTP_HOST'])]);
|
||||||
|
|
||||||
|
// Supprimé à cause de l'écrasement des bases
|
||||||
|
//$this->setData(['module', 'blog', 'posts', 'mon-premier-article', 'userId', $userId]);
|
||||||
|
//$this->setData(['module', 'blog', 'posts', 'mon-deuxieme-article', 'userId', $userId]);
|
||||||
|
//$this->setData(['module', 'blog', 'posts', 'mon-troisieme-article', 'userId', $userId]);
|
||||||
|
|
||||||
|
// Valeurs en sortie
|
||||||
|
$this->addOutput([
|
||||||
|
'redirect' => helper::baseUrl(),
|
||||||
|
'notification' => helper::translate('Installation terminée'),
|
||||||
|
'state' => true
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Affichage du formulaire
|
// Affichage du formulaire
|
||||||
|
Loading…
Reference in New Issue
Block a user