diff --git a/core/lib/class.plx.admin.php b/core/lib/class.plx.admin.php index cfbee2f1e..db8e6e24f 100644 --- a/core/lib/class.plx.admin.php +++ b/core/lib/class.plx.admin.php @@ -11,6 +11,8 @@ class plxAdmin extends plxMotor { + const PATTERN_CONFIG_CDATA = '@^(:?clef|custom_admincss_file|default_lang|email_method|hometemplate|medias|racine_(:?article|commentaire|plugin|statique|theme)s|style|timezone|tri(:?_coms)?|smtp_security|version)$@'; + const PATTERN_RACINES = '@^(:?custom_admincss_file|medias|racine_(:?article|commentaire|plugin|statique|theme)s)$@'; private static $instance = null; public $update_link = PLX_URL_REPO; // overwritten by self::checmMaj() @@ -64,7 +66,7 @@ public function getPage() { # Initialisation $pageName = basename($_SERVER['PHP_SELF']); - $savePage = preg_match('/admin\/(index|comments).php/', $_SERVER['PHP_SELF']); + $savePage = preg_match('@admin/(index|comments)\.php@', $_SERVER['PHP_SELF']); # On check pour avoir le numero de page if(!empty($_GET['page']) AND is_numeric($_GET['page']) AND $_GET['page'] > 0) $this->page = $_GET['page']; @@ -92,7 +94,7 @@ public function editConfiguration($content=false) { if(!empty($content)) { foreach($content as $k=>$v) { - if(!in_array($k,array('token','config_path'))) # parametres à ne pas mettre dans le fichier + if(!in_array($k,array('token', 'config_path'))) # parametres à ne pas mettre dans le fichier $this->aConf[$k] = $v; } } @@ -101,16 +103,20 @@ public function editConfiguration($content=false) { if(empty($this->aConf['clef'])) $this->aConf['clef'] = plxUtils::charAleatoire(15); # Début du fichier XML - $xml = "\n"; ob_start(); ?> aConf as $k=>$v) { - if($k!='racine') { - $value = is_numeric($v) ? $v : ''; + if($k != 'racine') { + $cdata = (preg_match(self::PATTERN_CONFIG_CDATA, $k) === 0); + + # Le chemin du dossier doit finir par "/" + if(!empty($v) and preg_match(self::PATTERN_RACINES, $k) === 1 and substr($v, -1) != '/') { + $v .= '/'; + } ?> - + htaccess($content['urlrewriting'], $this->aConf['racine'])) return plxMsg::Error(sprintf(L_WRITE_NOT_ACCESS, '.htaccess')); - # Mise à jour du fichier parametres.xml - if(!plxUtils::write(XML_HEADER . ob_get_clean(), path('XMLFILE_PARAMETERS'))) - return plxMsg::Error(L_SAVE_ERR.' '.path('XMLFILE_PARAMETERS')); - # Si nouvel emplacement du dossier de configuration - if(isset($content['config_path'])) { + if(!empty($content['config_path'])) { $newpath = trim($content['config_path']); + if(substr($newpath, -1) != '/') { $newpath .= '/'; } if($newpath != PLX_CONFIG_PATH) { # relocalisation du dossier de configuration de PluXml if(!rename(PLX_ROOT.PLX_CONFIG_PATH, PLX_ROOT . $newpath)) @@ -158,7 +165,7 @@ public function editConfiguration($content=false) { * Méthode qui crée le fichier .htaccess en cas de réécriture d'urls * * @param action création (add) ou suppression (remove) - * @param url url du site + * @param url url de base du site * @return null * @author Stephane F, Amaury Graillat **/ @@ -418,12 +425,13 @@ public function verifyLostPasswordToken($token) { * Méthode qui édite le fichier XML des utilisateurs * * @param content tableau les informations sur les utilisateurs + * @param $save enregistre les catégories dans un fichier .xml * @return string * @author Stéphane F, Pedro "P3ter" CADETE **/ - public function editUsers($content, $action=false) { + public function editUsers($content, $save=false) { - $save = $this->aUsers; + $archive = $this->aUsers; # Hook plugins if(eval($this->plxPlugins->callHook('plxAdminEditUsersBegin'))) return; @@ -433,13 +441,13 @@ public function editUsers($content, $action=false) { foreach($content['idUser'] as $user_id) { if($content['selection']=='delete' AND $user_id!='001') { $this->aUsers[$user_id]['delete']=1; - $action = true; + $save = true; } } } + # mise à jour de la liste des utilisateurs elseif(!empty($content['update'])) { - foreach($content['userNum'] as $user_id) { $username = trim($content[$user_id.'_name']); if($username!='' AND trim($content[$user_id.'_login'])!='') { @@ -449,7 +457,7 @@ public function editUsers($content, $action=false) { if(trim($content[$user_id.'_password'])!='') $password=sha1($salt.md5($content[$user_id.'_password'])); elseif(isset($content[$user_id.'_newuser'])) { - $this->aUsers = $save; + $this->aUsers = $archive; return plxMsg::Error(L_ERR_PASSWORD_EMPTY.' ('.L_CONFIG_USER.' '.$username.')'); } else { @@ -480,70 +488,82 @@ public function editUsers($content, $action=false) { $this->aUsers[$user_id]['password_token_expiry'] = (isset($this->aUsers[$user_id]['_password_token_expiry'])?$this->aUsers[$user_id]['_password_token_expiry']:''); # Hook plugins eval($this->plxPlugins->callHook('plxAdminEditUsersUpdate')); - $action = true; + $save = true; } } } - # sauvegarde - if($action) { - $users_name = array(); - $users_login = array(); - $users_email = array(); - # On génére le fichier XML - $xml = "\n"; - $xml .= "\n"; + if(empty($save)) { return; } - foreach($this->aUsers as $user_id => $user) { - # controle de l'unicité du nom de l'utilisateur - if(in_array($user['name'], $users_name)) { - $this->aUsers = $save; - return plxMsg::Error(L_ERR_USERNAME_ALREADY_EXISTS.' : '.plxUtils::strCheck($user['name'])); - } - else if ($user['delete'] == 0) { - $users_name[] = $user['name']; - } - # controle de l'unicité du login de l'utilisateur - if(in_array($user['login'], $users_login)) { - return plxMsg::Error(L_ERR_LOGIN_ALREADY_EXISTS.' : '.plxUtils::strCheck($user['login'])); - } - else if ($user['delete'] == 0) { - $users_login[] = $user['login']; - } - # controle de l'unicité de l'adresse e-mail - if(in_array($user['email'], $users_email)) { - return plxMsg::Error(L_ERR_EMAIL_ALREADY_EXISTS.' : '.plxUtils::strCheck($user['email'])); - } - else if ($user['delete'] == 0) { - $users_email[] = $user['email']; - } - $xml .= "\t".''."\n"; - $xml .= "\t\t".''."\n"; - $xml .= "\t\t".''."\n"; - $xml .= "\t\t".''."\n"; - $xml .= "\t\t".''."\n"; - $xml .= "\t\t".''."\n"; - $xml .= "\t\t".''."\n"; - $xml .= "\t\t".''."\n"; - $xml .= "\t\t".''."\n"; - $xml .= "\t\t".''."\n"; - # Hook plugins - eval($this->plxPlugins->callHook('plxAdminEditUsersXml')); - $xml .= "\t\n"; - } - $xml .= ""; + # sauvegarde + $users_name = array(); + $users_login = array(); + $users_email = array(); - # On écrit le fichier - if(plxUtils::write($xml,path('XMLFILE_USERS'))) - return plxMsg::Info(L_SAVE_SUCCESSFUL); - else { - $this->aUsers = $save; - return plxMsg::Error(L_SAVE_ERR.' '.path('XMLFILE_USERS')); - } + # On génére le fichier XML + ob_start(); +?> + +aUsers as $user_id => $user) { + # controle de l'unicité du nom de l'utilisateur + if(in_array($user['name'], $users_name)) { + $this->aUsers = $archive; + ob_clean(); + return plxMsg::Error(L_ERR_USERNAME_ALREADY_EXISTS.' : '.plxUtils::strCheck($user['name'])); + } + else if ($user['delete'] == 0) { + $users_name[] = $user['name']; + } + # controle de l'unicité du login de l'utilisateur + if(in_array($user['login'], $users_login)) { + $this->aUsers = $archive; + ob_clean(); + return plxMsg::Error(L_ERR_LOGIN_ALREADY_EXISTS.' : '.plxUtils::strCheck($user['login'])); + } + else if ($user['delete'] == 0) { + $users_login[] = $user['login']; + } + # controle de l'unicité de l'adresse e-mail + if(in_array($user['email'], $users_email)) { + $this->aUsers = $archive; + ob_clean(); + return plxMsg::Error(L_ERR_EMAIL_ALREADY_EXISTS.' : '.plxUtils::strCheck($user['email'])); + } + else if ($user['delete'] == 0) { + $users_email[] = $user['email']; + } +?> + + + + + + + + + + +plxPlugins->callHook('plxAdminEditUsersXml')); + if(!empty($xml)) { echo $xml; } +?> + + + +aUsers = $archive; + return plxMsg::Error(L_SAVE_ERR . ' ' . path('XMLFILE_USERS')); } /** @@ -590,13 +610,13 @@ public function nextIdCategory() { * Méthode qui édite le fichier XML des catégories selon le tableau $content * * @param content tableau multidimensionnel des catégories - * @param action permet de forcer la mise àjour du fichier + * @param save enregistre les catégories dans un fichier .xml * @return string - * @author Stephane F, Pedro "P3ter" CADETE, sudwebdesign + * @author Stephane F, Pedro "P3ter" CADETE, sudwebdesign, J.P. Pourrez **/ - public function editCategories($content, $action=false) { + public function editCategories($content, $save=false) { - $save = $this->aCats; + $archive = $this->aCats; # suppression if(!empty($content['selection']) AND $content['selection']=='delete' AND isset($content['idCategory']) AND empty($content['update'])) { @@ -620,7 +640,7 @@ public function editCategories($content, $action=false) { } } unset($this->aCats[$cat_id]); - $action = true; + $save = true; } } # Ajout d'une nouvelle catégorie à partir de la page article @@ -645,7 +665,7 @@ public function editCategories($content, $action=false) { $this->aCats[$cat_id]['meta_keywords'] = ''; # Hook plugins eval($this->plxPlugins->callHook('plxAdminEditCategoriesNew')); - $action = true; + $save = true; } } # mise à jour de la liste des catégories @@ -674,57 +694,68 @@ public function editCategories($content, $action=false) { $this->aCats[$cat_id]['meta_keywords'] = (isset($this->aCats[$cat_id]['meta_keywords'])?$this->aCats[$cat_id]['meta_keywords']:''); # Hook plugins eval($this->plxPlugins->callHook('plxAdminEditCategoriesUpdate')); - $action = true; + $save = true; } } # On va trier les clés selon l'ordre choisi if(sizeof($this->aCats)>0) uasort($this->aCats, function($a, $b){return $a["ordre"]>$b["ordre"];}); } + + if(empty($save)) { return; } + # sauvegarde - if($action) { - $cats_name = array(); - $cats_url = array(); - # On génére le fichier XML - $xml = "\n"; - $xml .= "\n"; - foreach($this->aCats as $cat_id => $cat) { - - # controle de l'unicité du nom de la categorie - if(in_array($cat['name'], $cats_name)) { - $this->aCats = $save; - return plxMsg::Error(L_ERR_CATEGORY_ALREADY_EXISTS.' : '.plxUtils::strCheck($cat['name'])); - } - else - $cats_name[] = $cat['name']; + $cats_name = array(); + $cats_url = array(); - # controle de l'unicité de l'url de la catégorie - if(in_array($cat['url'], $cats_url)) - return plxMsg::Error(L_ERR_URL_ALREADY_EXISTS.' : '.plxUtils::strCheck($cat['url'])); - else - $cats_url[] = $cat['url']; - - $xml .= "\t"; - $xml .= ""; - $xml .= ""; - $xml .= ""; - $xml .= ""; - $xml .= ""; - $xml .= ""; - $xml .= ""; - $xml .= ""; - # Hook plugins - eval($this->plxPlugins->callHook('plxAdminEditCategoriesXml')); - $xml .= "\n"; - } - $xml .= ""; - # On écrit le fichier - if(plxUtils::write($xml,path('XMLFILE_CATEGORIES'))) - return plxMsg::Info(L_SAVE_SUCCESSFUL); - else { - $this->aCats = $save; - return plxMsg::Error(L_SAVE_ERR.' '.path('XMLFILE_CATEGORIES')); + # On génére le fichier XML + ob_start(); +?> + +aCats as $cat_id => $cat) { + + # controle de l'unicité du nom de la categorie + if(in_array($cat['name'], $cats_name)) { + $this->aCats = $archive; + return plxMsg::Error(L_ERR_CATEGORY_ALREADY_EXISTS.' : '.plxUtils::strCheck($cat['name'])); } + else + $cats_name[] = $cat['name']; + + # controle de l'unicité de l'url de la catégorie + if(in_array($cat['url'], $cats_url)) + return plxMsg::Error(L_ERR_URL_ALREADY_EXISTS.' : '.plxUtils::strCheck($cat['url'])); + else + $cats_url[] = $cat['url']; +?> + + + + + + + + + +plxPlugins->callHook('plxAdminEditCategoriesXml')); + if(!empty($xml)) { echo $xml; } +?> + + + +aCats = $archive; + return plxMsg::Error(L_SAVE_ERR.' '.path('XMLFILE_CATEGORIES')); } /** @@ -745,6 +776,7 @@ public function editCategorie($content) { $this->aCats[$content['id']]['title_htmltag'] = trim($content['title_htmltag']); $this->aCats[$content['id']]['meta_description'] = trim($content['meta_description']); $this->aCats[$content['id']]['meta_keywords'] = trim($content['meta_keywords']); + # Hook plugins eval($this->plxPlugins->callHook('plxAdminEditCategorie')); return $this->editCategories(null,true); @@ -754,7 +786,7 @@ public function editCategorie($content) { * Méthode qui édite le fichier XML des pages statiques selon le tableau $content * * @param content tableau multidimensionnel des pages statiques - * @param action permet de forcer la mise àjour du fichier + * @param action enregistre les catégories dans un fichier .xml * @return string * @author Stephane F. **/ @@ -813,50 +845,61 @@ public function editStatiques($content, $action=false) { if(sizeof($this->aStats)>0) uasort($this->aStats, function($a, $b){return $a["ordre"]>$b["ordre"];}); } + + if(empty($action)) { return; } + # sauvegarde - if($action) { - $statics_name = array(); - $statics_url = array(); - # On génére le fichier XML - $xml = "\n"; - $xml .= "\n"; - foreach($this->aStats as $static_id => $static) { - - # controle de l'unicité du titre de la page - if(in_array($static['name'], $statics_name)) - return plxMsg::Error(L_ERR_STATIC_ALREADY_EXISTS.' : '.plxUtils::strCheck($static['name'])); - else - $statics_name[] = $static['name']; + $statics_name = array(); + $statics_url = array(); - # controle de l'unicité de l'url de la page - if(in_array($static['url'], $statics_url)) { - $this->aStats = $save; - return plxMsg::Error(L_ERR_URL_ALREADY_EXISTS.' : '.plxUtils::strCheck($static['url'])); - } - else - $statics_url[] = $static['url']; - - $xml .= "\t"; - $xml .= ""; - $xml .= ""; - $xml .= ""; - $xml .= ""; - $xml .= ""; - $xml .= ""; - $xml .= ""; - # Hook plugins - eval($this->plxPlugins->callHook('plxAdminEditStatiquesXml')); # Hook Plugins - $xml .= "\n"; - } - $xml .= ""; - # On écrit le fichier si une action valide a été faite - if(plxUtils::write($xml,path('XMLFILE_STATICS'))) - return plxMsg::Info(L_SAVE_SUCCESSFUL); - else { + # On génére le fichier XML + ob_start(); +?> + +aStats as $static_id => $static) { + + # controle de l'unicité du titre de la page + if(in_array($static['name'], $statics_name)) + return plxMsg::Error(L_ERR_STATIC_ALREADY_EXISTS.' : '.plxUtils::strCheck($static['name'])); + else + $statics_name[] = $static['name']; + + # controle de l'unicité de l'url de la page + if(in_array($static['url'], $statics_url)) { $this->aStats = $save; - return plxMsg::Error(L_SAVE_ERR.' '.path('XMLFILE_STATICS')); + return plxMsg::Error(L_ERR_URL_ALREADY_EXISTS.' : '.plxUtils::strCheck($static['url'])); } + else + $statics_url[] = $static['url']; +?> + + + + + + + + +plxPlugins->callHook('plxAdminEditStatiquesXml')); # Hook Plugins + if(!empty($xml)) { echo $xml; } +?> + + + +aStats = $save; + return plxMsg::Error(L_SAVE_ERR.' '.path('XMLFILE_STATICS')); } /** @@ -969,32 +1012,39 @@ public function editArticle($content, &$id) { $date_creation = $content['date_creation_year'].$content['date_creation_month'].$content['date_creation_day'].substr(str_replace(':','',$content['date_creation_time']),0,4); $date_update = $content['date_update_year'].$content['date_update_month'].$content['date_update_day'].substr(str_replace(':','',$content['date_update_time']),0,4); $date_update = $date_update==$content['date_update_old'] ? date('YmdHi') : $date_update; + # Génération du fichier XML - $xml = "\n"; - $xml .= "\n"; - $xml .= "\t".'<![CDATA['.plxUtils::cdataCheck(trim($content['title'])).']]>'."\n"; - $xml .= "\t".''.$content['allow_com'].''."\n"; - $xml .= "\t".''."\n"; - $xml .= "\t".''."\n"; - $xml .= "\t".''."\n"; - $xml .= "\t".''."\n"; $meta_description = plxUtils::getValue($content['meta_description']); - $xml .= "\t".''."\n"; $meta_keywords = plxUtils::getValue($content['meta_keywords']); - $xml .= "\t".''."\n"; $title_htmltag = plxUtils::getValue($content['title_htmltag']); - $xml .= "\t".''."\n"; $thumbnail = plxUtils::getValue($content['thumbnail']); - $xml .= "\t".''."\n"; $thumbnail_alt = plxUtils::getValue($content['thumbnail_alt']); - $xml .= "\t".''."\n"; $thumbnail_title = plxUtils::getValue($content['thumbnail_title']); - $xml .= "\t".''."\n"; - $xml .= "\t".''."\n"; - $xml .= "\t".''."\n"; + ob_start(); +?> + + <?= plxUtils::cdataCheck(trim($content['title'])) ?> + + + + + + + + + + + + + +plxPlugins->callHook('plxAdminEditArticleXml')); - $xml .= "\n"; + if(!empty($xml)) { echo $xml; } +?> + +plxGlob_arts->query('/^'.$id.'.(.*).xml$/','','sort',0,1,'all'); @@ -1011,7 +1061,7 @@ public function editArticle($content, &$id) { if(empty($content['catId'])) $content['catId']=array('000'); # Catégorie non classée $filename = PLX_ROOT.$this->aConf['racine_articles'].$id.'.'.implode(',', $content['catId']).'.'.trim($content['author']).'.'.$time.'.'.$content['url'].'.xml'; # On va mettre à jour notre fichier - if(plxUtils::write($xml,$filename)) { + if(plxUtils::write(XML_HEADER . ob_get_clean(), $filename)) { # suppression ancien fichier si nécessaire if($oldArt) { $oldfilename = PLX_ROOT.$this->aConf['racine_articles'].$oldArt['0']; @@ -1233,15 +1283,20 @@ public function modCommentaire(&$id, $mod) { public function editTags() { # Génération du fichier XML - $xml = "\n"; - $xml .= "\n"; + ob_start(); +?> + +aTags as $id => $tag) { - $xml .= "\t".'
'."\n"; +?> +
+"; - +?> +
+ false, + CURLOPT_RETURNTRANSFER => true, + CURLOPT_URL => PLX_URL_VERSION + )); $latest_version = curl_exec($ch); $info = curl_getinfo($ch); if ($latest_version === false || $info['http_code'] != 200) { diff --git a/core/lib/class.plx.motor.php b/core/lib/class.plx.motor.php index 47469320b..643b1c3b2 100644 --- a/core/lib/class.plx.motor.php +++ b/core/lib/class.plx.motor.php @@ -953,21 +953,31 @@ public function newCommentaire($artId, $content) { public function addCommentaire($content) { # Hook plugins if(eval($this->plxPlugins->callHook('plxMotorAddCommentaire'))) return; + # On genere le contenu de notre fichier XML - $xml = "\n"; - $xml .= "\n"; - $xml .= "\t\n"; - $xml .= "\t".$content['type']."\n"; - $xml .= "\t".$content['ip']."\n"; - $xml .= "\t\n"; - $xml .= "\t\n"; - $xml .= "\t\n"; - $xml .= "\t\n"; + ob_start(); +?> + + + + + + + + +plxPlugins->callHook('plxMotorAddCommentaireXml')); - $xml .= "\n"; + if(!empty($xml)) { + echo $xml; + } + +?> + +aConf['racine_commentaires'].$content['filename']); + return plxUtils::write(XML_HEADER . ob_get_clean(), PLX_ROOT . $this->aConf['racine_commentaires'] . $content['filename']); } /** diff --git a/core/lib/class.plx.plugins.php b/core/lib/class.plx.plugins.php index 2ad2cd5fd..aa627b2b4 100644 --- a/core/lib/class.plx.plugins.php +++ b/core/lib/class.plx.plugins.php @@ -247,9 +247,10 @@ public function saveConfig($content) { $this->cssCache('admin'); # Début du fichier XML - $xml = "\n"; - $xml .= "\n"; - + ob_start(); +?> + +aPlugins as $name=>$plugin) { if(!empty($plugin)) { $scope = $plugin->getInfo('scope'); @@ -258,13 +259,15 @@ public function saveConfig($content) { } else { $scope = ''; } - $xml .= "\t\n"; +?> + +"; - +?> + +\n"; - $xml .= "\n"; + ob_start(); +?> + +aParams as $k=>$v) { switch($v['type']) { - case 'numeric': - $xml .= "\t".intval($v['value'])."\n"; - break; - case 'string': - $xml .= "\t".plxUtils::cdataCheck(plxUtils::strCheck($v['value']))."\n"; - break; - case 'cdata': - $xml .= "\t\n"; - break; + case 'numeric': $value = intval($v['value']); break; + default: $value = plxUtils::cdataCheck($v['value']); } +?> + +"; +?> + +plug['parameters.xml'])) { + if(plxUtils::write(XML_HEADER . ob_get_clean(), $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'); @@ -738,4 +741,4 @@ public function URL() { return plxUtils::getRacine().$this->ABS_PATH(); } -} \ No newline at end of file +} diff --git a/core/lib/class.plx.utils.php b/core/lib/class.plx.utils.php index 385a57b82..203b5445c 100644 --- a/core/lib/class.plx.utils.php +++ b/core/lib/class.plx.utils.php @@ -864,15 +864,21 @@ public static function strCheck($str) { * en entités HTML. * * @param str chaine de caractères à nettoyer + * @param closure la chaine de caractères nettoyée sera encadrée par "" si besoin * @return string chaine de caractères nettoyée * @author Stephane F, J.P. Pourrez **/ - public static function cdataCheck($str) { + public static function cdataCheck($str, $closure=true) { $value = trim($str); if(empty($value) or is_numeric($value)) { return $value; } + # tests $closure in last time : $matches mus be set !!! if(!preg_match('#^#s', $value, $matches)) { - return '', ']]>', str_ireplace('!CDATA', '!CDATA', $value)) . ']]>'; + if($closure) { + return '', ']]>', str_ireplace('!CDATA', '!CDATA', $value)) . ']]>'; + } else { + return str_replace(']]>', ']]>', str_ireplace('!CDATA', '!CDATA', $value)); + } } $value = str_replace(']]>', ']]>', preg_replace('#'; diff --git a/index.php b/index.php index a2d104920..cf9b9f988 100644 --- a/index.php +++ b/index.php @@ -1,14 +1,14 @@ $root . 'statiques/', 'racine_themes' => 'themes/', 'racine_plugins' => 'plugins/', + 'custom_admincss_file' => '', 'homestatic' => '', 'hometemplate' => 'home.php', 'urlrewriting' => 0, @@ -110,7 +111,6 @@ 'default_lang' => $lang, 'userfolders' => 0, 'display_empty_cat' => 0, - 'custom_admincss_file' => '', 'email_method' => 'sendmail', 'smtp_server' => '', 'smtp_username' => '', @@ -135,8 +135,7 @@ } } -function install($content, $config) -{ +function install($content, $config) { // Initialisation du timezone if (isset($_POST['timezone'])) { @@ -153,29 +152,28 @@ function install($content, $config) ?> $v) { - $no_quotes = (empty($v) or is_numeric($v) or preg_match('~^(?:tri|email_method|clef|default_lang|smtp_security|version|racine_|medias|style)~', $k)); - ?> - ' ?> + foreach ($config as $k => $v) { +?> + +?> +?> - ]]> - ]]> + + - + + @@ -185,14 +183,14 @@ function install($content, $config) // Création du fichier des categories ob_start(); - ?> +?> 0) { ?> - ]]> - + + Sample @@ -202,25 +200,24 @@ function install($content, $config) +?> +?> 0) { ?> - ]]> + - + plxUtils::cdataCheck('Sample of a static page') @@ -242,13 +239,20 @@ function install($content, $config) // Création du premier article ob_start(); - ?> +?> -<![CDATA[<?= plxUtils::strRevCheck(L_DEFAULT_ARTICLE_TITLE) ?>]]> -1 ]]> -]]> PluXml - - core/admin/theme/images/pluxml.png + <?= plxUtils::cdataCheck(plxUtils::strRevCheck(L_DEFAULT_ARTICLE_TITLE)) ?> + 1 + + + + PluXml + A sample of article + pluxml + + + + core/admin/theme/images/pluxml.png pluxml normal 127.0.0.1 - - ]]> - ]]> + contact@pluxml.org + +