/** * Méthode qui sauvegarde le fichier des parametres du plugin parameters.xml * * @return boolean resultat de la sauvegarde / TRUE = ok * @author Stephane F **/ public function saveParams() { # Début du fichier XML $xml = "<?xml version='1.0' encoding='" . PLX_CHARSET . "'?>\n"; $xml .= "<document>\n"; foreach ($this->aParams as $k => $v) { switch ($v['type']) { case 'numeric': $xml .= "\t<parameter name=\"{$k}\" type=\"" . $v['type'] . "\">" . intval($v['value']) . "</parameter>\n"; break; case 'string': $xml .= "\t<parameter name=\"{$k}\" type=\"" . $v['type'] . "\">" . plxUtils::cdataCheck(plxUtils::strCheck($v['value'])) . "</parameter>\n"; break; case 'cdata': $xml .= "\t<parameter name=\"{$k}\" type=\"" . $v['type'] . "\"><![CDATA[" . plxUtils::cdataCheck($v['value']) . "]]></parameter>\n"; break; } } $xml .= "</document>"; # On écrit le fichier if (plxUtils::write($xml, $this->plug['parameters.xml'])) { # suppression ancien fichier parameters.xml s'il existe encore (5.1.7+) if (file_exists($this->plug['dir'] . $this->plug['name'] . '/parameters.xml')) { unlink($this->plug['dir'] . $this->plug['name'] . '/parameters.xml'); } return plxMsg::Info(L_SAVE_SUCCESSFUL); } else { return plxMsg::Error(L_SAVE_ERR . ' ' . $this->plug['parameters.xml']); } }
/** * Méthode qui vérifie sur le site de PluXml la dernière version et la compare avec celle en local * * @return string * @author Florent MONTHEL et Amaury GRAILLAT **/ public function checkMaj() { # La fonction est active ? if (!ini_get('allow_url_fopen')) { return 'Impossible de vérifier les mises à jour tant que \'allow_url_fopen\' est désactivé sur ce système'; } # Requete HTTP sur le site de PluXml $fp = @fopen('http://telechargements.pluxml.org/latest-version', 'r'); $latest_version = trim(@fread($fp, 16)); @fclose($fp); if ($latest_version == '') { return plxMsg::Error('La vérification de mise à jour a échouée pour une raison inconnue'); } # Comparaison if (version_compare($this->version, $latest_version, ">=")) { return plxMsg::Info('Vous utilisez la dernière version de PluXml (' . $this->version . ')'); } else { return plxMsg::Info('Une nouvelle version de PluXml est sortie ! Vous pouvez la télécharger sur <a href="http://pluxml.org/">PluXml.org</a>'); } }
# Ok, on récupère les commentaires de l'article $plxAdmin->getCommentaires('/^' . $artId . '.(.*).xml$/', 'rsort'); } else { # Mode inconnu header('Location: .index.php'); exit; } # On a validé le formulaire if (!empty($_POST) and !empty($_POST['content'])) { # Création du commentaire if (!$plxAdmin->newCommentaire($artId, $_POST['content'])) { # Erreur plxMsg::Error('Une erreur est survenue au cours de la crétion du commentaire'); } else { # Ok plxMsg::Info('Le commentaire a été crée avec succès'); } header('Location: commentaire_new.php?a=' . $artId); exit; } # On inclut le header include dirname(__FILE__) . '/top.php'; ?> <?php if (!empty($_GET['a'])) { ?> <p><a href="commentaires_online.php?a=<?php echo $_GET['a']; ?> ">« Retour à la liste des commentaires de cet article</a></p>
$style = $plxAdmin->aConf['style']; $filename = realpath(PLX_ROOT . $plxAdmin->aConf['racine_themes'] . $style . '/' . $tpl); if (!preg_match('#^' . str_replace('\\', '/', realpath(PLX_ROOT . $plxAdmin->aConf['racine_themes'] . $style . '/') . '#'), str_replace('\\', '/', $filename))) { $tpl = 'home.php'; } $filename = realpath(PLX_ROOT . $plxAdmin->aConf['racine_themes'] . $style . '/' . $tpl); # On teste l'existence du thème if (empty($style) or !is_dir(PLX_ROOT . $plxAdmin->aConf['racine_themes'] . $style)) { plxMsg::Error(L_CONFIG_EDITTPL_ERROR_NOTHEME); header('Location: parametres_affichage.php'); exit; } # Traitement du formulaire: sauvegarde du template if (isset($_POST['submit']) and trim($_POST['content']) != '') { if (plxUtils::write($_POST['content'], $filename)) { plxMsg::Info(L_SAVE_FILE_SUCCESSFULLY); } else { plxMsg::Error(L_SAVE_FILE_ERROR); } } # On récupère les fichiers templates du thèmes $aTemplates = array(); function listFolderFiles($dir, $include, $root = '') { $content = array(); $ffs = scandir($dir); foreach ($ffs as $ff) { if ($ff != '.' && $ff != '..') { $ext = strtolower(strrchr($ff, '.')); if (!is_dir($dir . '/' . $ff) and is_array($include) and in_array($ext, $include)) { $f = str_replace($root, "", PLX_ROOT . ltrim($dir . '/' . $ff, './'));
/** * Méthode qui permet de modérer ou valider un commentaire * * @param id identifiant du commentaire à traiter (que l'on retourne) * @param mod type de moderation (online ou offline) * @return string * @author Stephane F. et Florent MONTHEL **/ public function modCommentaire(&$id, $mod) { # Génération du nom du fichier $oldfilename = PLX_ROOT . $this->aConf['racine_commentaires'] . $id . '.xml'; if (!file_exists($oldfilename)) { # Commentaire inexistant return plxMsg::Error(L_ERR_UNKNOWN_COMMENT); } # Modérer ou valider ? if (preg_match('/([[:punct:]]?)[0-9]{4}.[0-9]{10}-[0-9]+$/', $id, $capture)) { $id = str_replace($capture[1], '', $id); } if ($mod == 'offline') { $id = '_' . $id; } # Génération du nouveau nom de fichier $newfilename = PLX_ROOT . $this->aConf['racine_commentaires'] . $id . '.xml'; # On renomme le fichier @rename($oldfilename, $newfilename); # Contrôle if (is_readable($newfilename)) { if ($type == 'online') { return plxMsg::Info(L_COMMENT_VALIDATE_SUCCESSFUL); } else { return plxMsg::Info(L_COMMENT_MODERATE_SUCCESSFUL); } } else { if ($type == 'online') { return plxMsg::Error(L_COMMENT_VALIDATE_ERR); } else { return plxMsg::Error(L_COMMENT_MODERATE_ERR); } } }
/** * Méthode qui recrée la vignettes d'une image * * @param filename nom de l'image * @return msg message contenant le résultat du traitement * @author Stephane F **/ public function makeThumb($filename) { # Initialisation $file = $this->path . $dir . '/' . $filename; # Test if (file_exists($file) and substr(strrchr($filename, '.'), 1) != 'tb') { # On recrée la miniature if ($this->privMakeThumb($file)) { return 'Miniature recréée avec succès'; } else { return plxMsg::Error('Erreur pendant la création de la miniature'); } } else { return plxMsg::Info('Aucune miniature à créer'); } }
/** * Méthode qui recréer les miniatures * * @param files liste des fichier à déplacer * @param width largeur des miniatures * @param height hauteur des miniatures * @return boolean faux si erreur sinon vrai * @author Stephane F **/ public function makeThumbs($files, $width, $height) { $count = 0; foreach ($files as $file) { $file = basename($file); if (is_file($this->path . $this->dir . $file)) { $thumName = plxUtils::thumbName($file); $ext = strtolower(strrchr($this->path . $this->dir . $file, '.')); if (in_array($ext, array('.gif', '.jpg', '.png'))) { if (plxUtils::makeThumb($this->path . $this->dir . $file, $this->path . $this->dir . $thumName, $width, $height, 80)) { $count++; } } } } if (sizeof($files) == 1) { if ($count == 0) { return plxMsg::Error(L_PLXMEDIAS_RECREATE_THUMB_ERR); } else { return plxMsg::Info(L_PLXMEDIAS_RECREATE_THUMB_SUCCESSFUL); } } else { if ($count == 0) { return plxMsg::Error(L_PLXMEDIAS_RECREATE_THUMBS_ERR); } else { return plxMsg::Info(L_PLXMEDIAS_RECREATE_THUMBS_SUCCESSFUL); } } }
/** * Méthode qui sauvegarde le contenu d'un produit * * @param content données à sauvegarder * @return string * @author David.L **/ public function editProduct($content) { # Mise à jour du fichier product.xml if (isset($content["listeCategories"])) { $this->aProds[$content['id']]['group'] = implode(",", $content["listeCategories"]); } // formatage du prix et du poids à l'édition foreach (array("pricettc", "poidg") as $champ) { $content[$champ] = number_format($content[$champ], 2, ".", ""); } // données du produit $this->aProds[$content['id']]['image'] = $content['image']; $this->aProds[$content['id']]['noaddcart'] = $content['noaddcart']; $this->aProds[$content['id']]['notice_noaddcart'] = $content['notice_noaddcart']; $this->aProds[$content['id']]['pricettc'] = $content['pricettc']; $this->aProds[$content['id']]['poidg'] = $content['poidg']; $this->aProds[$content['id']]['template'] = $content['template']; $this->aProds[$content['id']]['title_htmltag'] = trim($content['title_htmltag']); $this->aProds[$content['id']]['meta_description'] = trim($content['meta_description']); $this->aProds[$content['id']]['meta_keywords'] = trim($content['meta_keywords']); # Hook plugins //eval($this->plxPlugins->callHook('plxAdminEditProduct')); if ($this->editProducts(null, true)) { if (!is_dir(PLX_ROOT . 'data/products/')) { mkdir(PLX_ROOT . 'data/products/', 0755, true); } # Génération du nom du fichier de la page statique $filename = PLX_ROOT . 'data/products/' . $content['id'] . '.' . $this->aProds[$content['id']]['url'] . '.php'; # On écrit le fichier if (plxUtils::write($content['content'], $filename)) { return plxMsg::Info(L_SAVE_SUCCESSFUL); } else { return plxMsg::Error(L_SAVE_ERR . ' ' . $filename); } } }
# Ok, on récupère les commentaires de l'article $plxAdmin->getCommentaires('/^' . str_replace('_', '', $artId) . '.(.*).xml$/', 'sort'); } else { # Mode inconnu header('Location: .index.php'); exit; } # On a validé le formulaire if (!empty($_POST) and !empty($_POST['content'])) { # Création du commentaire if (!$plxAdmin->newCommentaire(str_replace('_', '', $artId), $_POST)) { # Erreur plxMsg::Error(L_ERR_CREATING_COMMENT); } else { # Ok plxMsg::Info(L_CREATING_COMMENT_SUCCESSFUL); } header('Location: comment_new.php?a=' . $artId); exit; } # On inclut le header include dirname(__FILE__) . '/top.php'; ?> <form action="comment_new.php?<?php echo plxUtils::strCheck($get); ?> " method="post" id="form_comment"> <div class="inline-form action-bar"> <h2><?php echo L_CREATE_NEW_COMMENT;
} $style = !isset($_GET['mobile']) ? $plxAdmin->aConf['style'] : $plxAdmin->aConf['style_mobile']; $filename = realpath(PLX_ROOT . 'themes/' . $style . '/' . $tpl); if (!preg_match('#^' . str_replace('\\', '/', realpath(PLX_ROOT . 'themes/' . $style . '/') . '#'), str_replace('\\', '/', $filename))) { $filename = PLX_ROOT . 'themes/' . $style . '/home.php'; } # On teste l'existence du thème if (empty($style) or !is_dir(PLX_ROOT . 'themes/' . $style)) { plxMsg::Error('Ce thème n\'existe pas !'); header('Location: parametres_affichage.php'); exit; } # Traitement du formulaire: sauvegarde du template if (isset($_POST['submit']) and !empty($tpl) and trim($_POST['content']) != '') { if (plxUtils::write($_POST['content'], $filename)) { plxMsg::Info("Fichier enregistré avec succès"); } else { plxMsg::Error("Erreur pendant l'enregistrement du fichier"); } header("Location: parametres_edittpl.php?tpl=" . $tpl . (isset($_GET['mobile']) ? '&mobile' : '')); exit; } # On récupère les fichiers templates du thèmes $files = plxGlob::getInstance(PLX_ROOT . 'themes/' . $style); if ($aTemplates = $files->query('/[a-z0-9-_]+.(php|css)$/')) { foreach ($aTemplates as $k => $v) { $aTemplate[$v] = $v; } } # On récupère le contenu du fichier template $content = '';