You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

100 lines
3.1 KiB

<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2020 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined("_ECRIRE_INC_VERSION")) {
return;
}
function formulaires_importer_sites_charger_dist() {
if (!autoriser('importer', '_sites')) {
return false;
}
return array(
'fichier_import' => 0,
'id_parent' => 0,
'importer_statut_publie' => 0,
'importer_les_tags' => 1,
);
}
function formulaires_importer_sites_verifier_dist() {
$erreurs = array();
if (!_request('id_parent')) {
$erreurs['id_parent'] = _T('info_obligatoire');
}
$fichier_ok = info_fichiers_import('fichier_import');
if (!$fichier_ok) {
$erreurs['fichier_import'] = _T('sites:erreur_fichier_incorrect');
} elseif (!charger_fonction('importer_bookmarks_' . $fichier_ok['format'], 'action', true)) {
$erreurs['fichier_import'] = _T('sites:erreur_fichier_format_inconnu',
array('fichier' => "<tt>" . $fichier_ok['name'] . "</tt>"));
}
return $erreurs;
}
function formulaires_importer_sites_traiter_dist() {
$id_parent = intval(_request('id_parent'));
$importer_statut_publie = _request('importer_statut_publie') ? true : false;
$importer_tags = _request('importer_les_tags') ? true : false;
$fichier_ok = info_fichiers_import('fichier_import');
$importer_bookmarks = charger_fonction('importer_bookmarks_' . $fichier_ok['format'], 'action');
$nb = $importer_bookmarks($fichier_ok, $id_parent, $importer_statut_publie, $importer_tags);
if (!$nb) {
$res = array('message_erreur' => _T('sites:info_aucun_site_importe'));
} else {
$res = array(
'message_ok' => singulier_ou_pluriel($nb, 'sites:info_1_site_importe', 'sites:info_nb_sites_importes')
);
}
return $res;
}
function info_fichiers_import($name) {
static $fichier_ok = array();
if (!isset($fichier_ok[$name])) {
if (sizeof($_FILES) < 0
or !isset($_FILES[$name])
or !$_FILES[$name]['size'] > 0
) {
return false;
}
if ($_FILES[$name]['error'] != 0) {
return false;
}
$fichier_ok[$name] = array();
$fichier_ok[$name]['name'] = $_FILES[$name]['name'];
$fichier_ok[$name]['chemin'] = $_FILES[$name]['tmp_name'];
// On r<EFBFBD>cup<EFBFBD>re le contenu du fichier
$fichier_ok[$name]['format'] = '';
lire_fichier($fichier_ok[$name]['chemin'], $fichier_ok[$name]['contenu']);
if (stripos($fichier_ok[$name]['contenu'], 'NETSCAPE-Bookmark-file') !== false) {
$fichier_ok[$name]['format'] = 'netscape';
}
if ($_FILES[$name]['type'] == 'text/xml' and stripos($fichier_ok[$name]['contenu'], 'opml') !== false) {
$fichier_ok[$name]['format'] = 'opml';
}
}
return $fichier_ok[$name];
}