importData WIP
This commit is contained in:
parent
ae09556e8d
commit
a566883b06
@ -475,12 +475,14 @@ class plugin extends common {
|
|||||||
'href' => helper::baseUrl(). $this->getUrl(0) . '/dataExport/' . $keyi18n . '/' . $pagesInfos[$keyi18n][$keyPage]['moduleId'] . '/' . $keyPage . '/' . $_SESSION['csrf'],// appel de fonction vaut exécution, utiliser un paramètre
|
'href' => helper::baseUrl(). $this->getUrl(0) . '/dataExport/' . $keyi18n . '/' . $pagesInfos[$keyi18n][$keyPage]['moduleId'] . '/' . $keyPage . '/' . $_SESSION['csrf'],// appel de fonction vaut exécution, utiliser un paramètre
|
||||||
'value' => template::ico('download'),
|
'value' => template::ico('download'),
|
||||||
'help' => 'Exporter les données du module'
|
'help' => 'Exporter les données du module'
|
||||||
]),
|
])
|
||||||
|
/*
|
||||||
template::button('moduleImport' . $keyPage, [
|
template::button('moduleImport' . $keyPage, [
|
||||||
'href' => helper::baseUrl(). $this->getUrl(0) . '/dataImport/' . $keyi18n . '/' . $pagesInfos[$keyi18n][$keyPage]['moduleId'] . '/' . $keyPage . '/' . $_SESSION['csrf'],// appel de fonction vaut exécution, utiliser un paramètre
|
'href' => helper::baseUrl(). $this->getUrl(0) . '/dataImport/' . $keyi18n . '/' . $pagesInfos[$keyi18n][$keyPage]['moduleId'] . '/' . $keyPage . '/' . $_SESSION['csrf'],// appel de fonction vaut exécution, utiliser un paramètre
|
||||||
'value' => template::ico('upload'),
|
'value' => template::ico('upload'),
|
||||||
'help' => 'Importer les données du module'
|
'help' => 'Importer les données du module'
|
||||||
])
|
])
|
||||||
|
*/
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -524,9 +526,7 @@ class plugin extends common {
|
|||||||
mkdir(self::FILE_DIR . 'source/modules');
|
mkdir(self::FILE_DIR . 'source/modules');
|
||||||
}
|
}
|
||||||
$success = copy($tmpFolder . '/' . $fileName , self::FILE_DIR . 'source/modules/' . $this->getUrl(3) . '.zip' );
|
$success = copy($tmpFolder . '/' . $fileName , self::FILE_DIR . 'source/modules/' . $this->getUrl(3) . '.zip' );
|
||||||
// Nettoyage
|
|
||||||
unlink($tmpFolder . '/' . $fileName);
|
|
||||||
$this->removeDir($tmpFolder);
|
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'redirect' => helper::baseUrl() . 'plugin',
|
'redirect' => helper::baseUrl() . 'plugin',
|
||||||
@ -542,12 +542,12 @@ class plugin extends common {
|
|||||||
ob_clean();
|
ob_clean();
|
||||||
ob_end_flush();
|
ob_end_flush();
|
||||||
readfile( $tmpFolder . '/' .$fileName);
|
readfile( $tmpFolder . '/' .$fileName);
|
||||||
unlink($tmpFolder . '/' . $fileName);
|
|
||||||
$this->removeDir($tmpFolder);
|
|
||||||
exit();
|
exit();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
// Nettoyage
|
||||||
|
unlink($tmpFolder . '/' . $fileName);
|
||||||
|
$this->removeDir($tmpFolder);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -570,24 +570,26 @@ class plugin extends common {
|
|||||||
if (!is_dir($tmpFolder)) {
|
if (!is_dir($tmpFolder)) {
|
||||||
mkdir($tmpFolder, 0755);
|
mkdir($tmpFolder, 0755);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sauvegarder la langue active
|
|
||||||
$saveI18n = self::$i18n;
|
|
||||||
|
|
||||||
self::$i18n = $this->getUrl(2);
|
|
||||||
|
|
||||||
// Copie des infos sur le module
|
// Copie des infos sur le module
|
||||||
$moduleData = $this->getData(['module', $this->getUrl(4) ]);
|
$modulesData = json_decode(file_get_contents(self::DATA_DIR . $this->getUrl(2) . '/module.json' ), true);
|
||||||
|
$moduleData [$this->getUrl(4)] = $modulesData['module'] [$this->getUrl(4)];
|
||||||
$success = file_put_contents ($tmpFolder . '/module.json', json_encode($moduleData));
|
$success = file_put_contents ($tmpFolder . '/module.json', json_encode($moduleData));
|
||||||
|
|
||||||
// Le dossier du module s'il existe
|
// Le dossier du module s'il existe
|
||||||
if (is_dir(self::DATA_DIR . $this->getUrl(3) . '/' . $this->getUrl(4) ) ) {
|
if (is_dir(self::DATA_DIR . $this->getUrl(3) . '/' . $this->getUrl(4) ) ) {
|
||||||
// Copier le dossier des données
|
// Copier le dossier des données
|
||||||
$success = $this->copyDir(self::DATA_DIR . $this->getUrl(3) . '/' . $this->getUrl(4), $tmpFolder . '/' . self::DATA_DIR . $this->getUrl(3) . '/' . $this->getUrl(4));
|
$success .= $this->copyDir(self::DATA_DIR . $this->getUrl(3) . '/' . $this->getUrl(4), $tmpFolder);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Descripteur de l'archive
|
||||||
|
$success .= file_put_contents ($tmpFolder . '/descripteur.json', json_encode([
|
||||||
|
'langue' => $this->getUrl(2),
|
||||||
|
'page' => $this->getUrl(3),
|
||||||
|
'module' => $this->getUrl(4)
|
||||||
|
]));
|
||||||
|
|
||||||
// Restaurer la langue active
|
|
||||||
//self::$i18n = $saveI18n;
|
|
||||||
|
|
||||||
// création du zip
|
// création du zip
|
||||||
if ($success)
|
if ($success)
|
||||||
@ -621,110 +623,109 @@ class plugin extends common {
|
|||||||
* Importer des données d'un module externes ou interne à module.json
|
* Importer des données d'un module externes ou interne à module.json
|
||||||
*/
|
*/
|
||||||
public function dataImport(){
|
public function dataImport(){
|
||||||
// Jeton incorrect
|
|
||||||
if ($this->getUrl(3) !== $_SESSION['csrf']) {
|
|
||||||
// Valeurs en sortie
|
|
||||||
$this->addOutput([
|
|
||||||
'redirect' => helper::baseUrl() . 'plugin',
|
|
||||||
'state' => false,
|
|
||||||
'notification' => 'Action non autorisée'
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
// Soumission du formulaire
|
|
||||||
if($this->isPost()) {
|
|
||||||
// Récupérer le fichier et le décompacter
|
|
||||||
$zipFilename = $this->getInput('pluginImportFile', helper::FILTER_STRING_SHORT, true);
|
|
||||||
$targetPage = $this->getInput('pluginImportPage', helper::FILTER_STRING_SHORT, true);
|
|
||||||
$tempFolder = uniqid();
|
|
||||||
mkdir (self::TEMP_DIR . $tempFolder, 0755);
|
|
||||||
$zip = new ZipArchive();
|
|
||||||
if ($zip->open(self::FILE_DIR . 'source/' . $zipFilename) === TRUE) {
|
|
||||||
$zip->extractTo(self::TEMP_DIR . $tempFolder );
|
|
||||||
}
|
|
||||||
|
|
||||||
// copie du contenu de la page
|
// Soumission du formulaire
|
||||||
$this->copyDir (self::TEMP_DIR . $tempFolder . '/' .$key . '/content', self::DATA_DIR . '/' .$key . '/content');
|
if($this->isPost()) {
|
||||||
// Supprimer les fichiers importés
|
// Jeton incorrect
|
||||||
unlink (self::TEMP_DIR . $tempFolder . '/' .$key . '/' . $fileTarget . '.json');
|
if ($this->getUrl(3) !== $_SESSION['csrf']) {
|
||||||
// Import des fichiers placés ailleurs que dans les dossiers localisés.
|
// Valeurs en sortie
|
||||||
$this->copyDir (self::TEMP_DIR . $tempFolder, self::DATA_DIR );
|
$this->addOutput([
|
||||||
|
'redirect' => helper::baseUrl() . 'plugin',
|
||||||
|
'state' => false,
|
||||||
|
'notification' => 'Action non autorisée'
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
// Récupérer le fichier et le décompacter
|
||||||
|
$zipFilename = $this->getInput('pluginImportFile', helper::FILTER_STRING_SHORT, true);
|
||||||
|
$targetPage = $this->getInput('pluginImportPage', helper::FILTER_STRING_SHORT, true);
|
||||||
|
$tempFolder = uniqid();
|
||||||
|
mkdir (self::TEMP_DIR . $tempFolder, 0755);
|
||||||
|
$zip = new ZipArchive();
|
||||||
|
if ($zip->open(self::FILE_DIR . 'source/' . $zipFilename) === TRUE) {
|
||||||
|
$zip->extractTo(self::TEMP_DIR . $tempFolder );
|
||||||
|
}
|
||||||
|
|
||||||
// Import des données localisées page.json et module.json
|
// copie du contenu de la page
|
||||||
// Pour chaque dossier localisé
|
$this->copyDir (self::TEMP_DIR . $tempFolder . '/' .$key . '/content', self::DATA_DIR . '/' .$key . '/content');
|
||||||
// $dataTarget = array();
|
// Supprimer les fichiers importés
|
||||||
// $dataSource = array();
|
unlink (self::TEMP_DIR . $tempFolder . '/' .$key . '/' . $fileTarget . '.json');
|
||||||
|
// Import des fichiers placés ailleurs que dans les dossiers localisés.
|
||||||
|
$this->copyDir (self::TEMP_DIR . $tempFolder, self::DATA_DIR );
|
||||||
|
|
||||||
|
|
||||||
|
// Import des données localisées page.json et module.json
|
||||||
// Liste des pages de même nom dans l'archive et le site
|
// Pour chaque dossier localisé
|
||||||
/*
|
// $dataTarget = array();
|
||||||
$list = '';
|
// $dataSource = array();
|
||||||
foreach (self::$i18nList as $key=>$value) {
|
|
||||||
// Les Pages et les modules
|
|
||||||
foreach (['page','module'] as $fileTarget){
|
|
||||||
if (file_exists(self::TEMP_DIR . $tempFolder . '/' .$key . '/' . $fileTarget . '.json')) {
|
// Liste des pages de même nom dans l'archive et le site
|
||||||
// Le dossier de langue existe
|
/*
|
||||||
// faire la fusion
|
$list = '';
|
||||||
$dataSource = json_decode(file_get_contents(self::TEMP_DIR . $tempFolder . '/' .$key . '/' . $fileTarget . '.json'), true);
|
foreach (self::$i18nList as $key=>$value) {
|
||||||
// Des pages de même nom que celles de l'archive existent
|
// Les Pages et les modules
|
||||||
if( $fileTarget === 'page' ){
|
foreach (['page','module'] as $fileTarget){
|
||||||
foreach( $dataSource as $keydataSource=>$valuedataSource ){
|
if (file_exists(self::TEMP_DIR . $tempFolder . '/' .$key . '/' . $fileTarget . '.json')) {
|
||||||
foreach( $this->getData(['page']) as $keypage=>$valuepage ){
|
// Le dossier de langue existe
|
||||||
if( $keydataSource === $keypage){
|
// faire la fusion
|
||||||
$list === '' ? $list .= ' '.$this->getData(['page', $keypage, 'title']) : $list .= ', '.$this->getData(['page', $keypage, 'title']);
|
$dataSource = json_decode(file_get_contents(self::TEMP_DIR . $tempFolder . '/' .$key . '/' . $fileTarget . '.json'), true);
|
||||||
}
|
// Des pages de même nom que celles de l'archive existent
|
||||||
|
if( $fileTarget === 'page' ){
|
||||||
|
foreach( $dataSource as $keydataSource=>$valuedataSource ){
|
||||||
|
foreach( $this->getData(['page']) as $keypage=>$valuepage ){
|
||||||
|
if( $keydataSource === $keypage){
|
||||||
|
$list === '' ? $list .= ' '.$this->getData(['page', $keypage, 'title']) : $list .= ', '.$this->getData(['page', $keypage, 'title']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$dataTarget = json_decode(file_get_contents(self::DATA_DIR . $key . '/' . $fileTarget . '.json'), true);
|
}
|
||||||
$data [$fileTarget] = array_merge($dataTarget[$fileTarget], $dataSource);
|
$dataTarget = json_decode(file_get_contents(self::DATA_DIR . $key . '/' . $fileTarget . '.json'), true);
|
||||||
if( $list === ''){
|
$data [$fileTarget] = array_merge($dataTarget[$fileTarget], $dataSource);
|
||||||
file_put_contents(self::DATA_DIR . '/' .$key . '/' . $fileTarget . '.json', json_encode( $data ,JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT|LOCK_EX) );
|
if( $list === ''){
|
||||||
}
|
file_put_contents(self::DATA_DIR . '/' .$key . '/' . $fileTarget . '.json', json_encode( $data ,JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT|LOCK_EX) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
// Supprimer le dossier temporaire
|
|
||||||
$this->removeDir(self::TEMP_DIR . $tempFolder);
|
|
||||||
$zip->close();
|
|
||||||
/*
|
|
||||||
if( $list !== '' ){
|
|
||||||
$success = false;
|
|
||||||
strpos( $list, ',') === false ? $notification = 'Import impossible la page suivante doit être renommée :'.$list : $notification = 'Import impossible les pages suivantes doivent être renommées :'.$list;
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
$success = true;
|
|
||||||
$notification = 'Import réussi';
|
|
||||||
}*/
|
|
||||||
// Valeurs en sortie
|
|
||||||
$this->addOutput([
|
|
||||||
'redirect' => helper::baseUrl() . 'plugin',
|
|
||||||
'state' => $success,
|
|
||||||
'notification' => $notification
|
|
||||||
]);
|
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
// Liste des pages ne contenant pas de module
|
|
||||||
self::$pagesList = $this->getData(['page']);
|
// Supprimer le dossier temporaire
|
||||||
foreach(self::$pagesList as $page => $pageId) {
|
$this->removeDir(self::TEMP_DIR . $tempFolder);
|
||||||
if ($this->getData(['page',$page,'block']) === 'bar' ||
|
$zip->close();
|
||||||
$this->getData(['page',$page,'disable']) === true ||
|
/*
|
||||||
$this->getData(['page',$page,'moduleId']) !== '') {
|
if( $list !== '' ){
|
||||||
unset(self::$pagesList[$page]);
|
$success = false;
|
||||||
}
|
strpos( $list, ',') === false ? $notification = 'Import impossible la page suivante doit être renommée :'.$list : $notification = 'Import impossible les pages suivantes doivent être renommées :'.$list;
|
||||||
}
|
}
|
||||||
|
else{
|
||||||
|
$success = true;
|
||||||
|
$notification = 'Import réussi';
|
||||||
|
}*/
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'title' => 'Importer des données de module',
|
'redirect' => helper::baseUrl() . 'plugin',
|
||||||
'view' => 'dataImport'
|
'state' => $success,
|
||||||
|
'notification' => $notification
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Liste des pages ne contenant pas de module
|
||||||
|
self::$pagesList = $this->getData(['page']);
|
||||||
|
foreach(self::$pagesList as $page => $pageId) {
|
||||||
|
if ($this->getData(['page',$page,'block']) === 'bar' ||
|
||||||
|
$this->getData(['page',$page,'disable']) === true ||
|
||||||
|
$this->getData(['page',$page,'moduleId']) !== '') {
|
||||||
|
unset(self::$pagesList[$page]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Valeurs en sortie
|
||||||
|
$this->addOutput([
|
||||||
|
'title' => 'Importer des données de module',
|
||||||
|
'view' => 'dataImport'
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -15,20 +15,13 @@
|
|||||||
'help' => 'Consulter l\'aide en ligne'
|
'help' => 'Consulter l\'aide en ligne'
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col1 offset8">
|
<div class="col1 offset9">
|
||||||
<?php echo template::button('configModulesStore', [
|
<?php echo template::button('configModulesStore', [
|
||||||
'href' => helper::baseUrl() . 'plugin/store',
|
'href' => helper::baseUrl() . 'plugin/store',
|
||||||
'value' => template::ico('shopping-basket'),
|
'value' => template::ico('shopping-basket'),
|
||||||
"help" => 'Lister le catalogue en ligne'
|
"help" => 'Catalogue de modules en ligne'
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col1">
|
|
||||||
<?php echo template::button('configStoreUpload', [
|
|
||||||
'href' => helper::baseUrl() . 'plugin/upload',
|
|
||||||
'value' => template::ico('plus'),
|
|
||||||
"help" => 'Ajouter à partir d\'une archive ZIP'
|
|
||||||
]); ?>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<?php if($module::$modulesOrphan): ?>
|
<?php if($module::$modulesOrphan): ?>
|
||||||
<h3>Suppression des modules orphelins</h3>
|
<h3>Suppression des modules orphelins</h3>
|
||||||
@ -39,8 +32,19 @@
|
|||||||
<?php echo template::table([2, 2, 1, 5, 1, 1], $module::$modulesInstalled, [ 'Module', 'moduleId', 'Version', '', '', '']); ?>
|
<?php echo template::table([2, 2, 1, 5, 1, 1], $module::$modulesInstalled, [ 'Module', 'moduleId', 'Version', '', '', '']); ?>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
<?php if($module::$modulesData): ?>
|
<?php if($module::$modulesData): ?>
|
||||||
<h3>Sauvegarde des données des modules installés</h3>
|
<div class="row">
|
||||||
<?php echo template::table([2, 2, 1, 1, 4, 1, 1], $module::$modulesData, [ 'Module', 'moduleId', 'Version', 'Langue', 'Page (id)', '', '']); ?>
|
<div class="col11">
|
||||||
|
<h3>Sauvegarde des données des modules installés</h3>
|
||||||
|
</div>
|
||||||
|
<div class="col1">
|
||||||
|
<?php echo template::button('configModuledataImport', [
|
||||||
|
'href' => helper::baseUrl() . 'dataImport',
|
||||||
|
'value' => template::ico('upload'),
|
||||||
|
"help" => 'Importer des données de module'
|
||||||
|
]); ?>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<?php echo template::table([2, 2, 1, 1, 5, 1], $module::$modulesData, [ 'Module', 'moduleId', 'Version', 'Langue', 'Page (id)', '']); ?>
|
||||||
<?php else: ?>
|
<?php else: ?>
|
||||||
<?php echo template::speech('Aucun module installé.'); ?>
|
<?php echo template::speech('Aucun module installé.'); ?>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
|
@ -6,6 +6,13 @@
|
|||||||
'value' => template::ico('left')
|
'value' => template::ico('left')
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="col1 offset10">
|
||||||
|
<?php echo template::button('configStoreUpload', [
|
||||||
|
'href' => helper::baseUrl() . 'plugin/upload',
|
||||||
|
'value' => template::ico('plus'),
|
||||||
|
"help" => 'Importer depuis une archive ZIP'
|
||||||
|
]); ?>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<?php if($module::$storeList): ?>
|
<?php if($module::$storeList): ?>
|
||||||
<?php echo template::table([2, 2, 1, 2, 2, 2, 1], $module::$storeList, ['Catégorie', 'Module', 'Version', 'Date', 'Pages', 'Obtenir']); ?>
|
<?php echo template::table([2, 2, 1, 2, 2, 2, 1], $module::$storeList, ['Catégorie', 'Module', 'Version', 'Date', 'Pages', 'Obtenir']); ?>
|
||||||
|
1
truc
1
truc
@ -1 +0,0 @@
|
|||||||
{"config":{"previewLength":"100","resultHideContent":"","placeHolder":"Un ou plusieurs mots-cl\u00e9s s\u00e9par\u00e9s par un espace ou par +","submitText":"Rechercher","versionData":"2.2"},"theme":{"keywordColor":"rgba(229, 229, 1, 1)","style":"site\/data\/search\/recherche\/theme.css"}}
|
|
Loading…
Reference in New Issue
Block a user