/** * Plugin SkelEditor * Editeur de squelette en ligne * (c) 2007-2010 erational * Licence GPL-v3 * */ function action_skeleditor_new_from_dist(){ $securiser_action = charger_fonction('securiser_action','inc'); $arg = $securiser_action(); // $arg est le fichier que l'on veut personaliser if (strncmp($arg,_DIR_RACINE,strlen(_DIR_RACINE)!==0)) $arg = _DIR_RACINE.$arg; include_spip('inc/skeleditor'); $file = skeleditor_nom_copie($arg); if ($file){ include_spip('inc/skeleditor'); $path_base = skeleditor_path_editable(); list($chemin,) = skeleditor_cree_chemin($path_base, $file); if ($chemin){ $file = basename($file); if (!file_exists($chemin . $file)) { lire_fichier($arg, $contenu); ecrire_fichier($chemin . $file, skeleditor_commente_copie($arg,$contenu)); } if (file_exists($f=$chemin.$file)) $GLOBALS['redirect'] = parametre_url(_request('redirect'),'f',$f); } } }
/** * Chargement du formulaire * 4 cas possibles : * - un nouveau fichier ($fichier='') * - un fichier a l'extension interdite * - un fichier de squelettes/, modifiable * - un fichier existant (d'un plugin par exe), * qui doit etre copie dans squelettes/ a l'enregistrement * * @param string $path_base * @param string $fichier * @return array */ function formulaires_editer_squelette_charger_dist($path_base, $fichier){ $valeurs = array( 'fichier'=>$fichier, 'date'=>'', 'size'=>'', 'filename'=>'', 'path_base'=>$path_base, '_hidden'=>'', '_info_copie'=>'', 'editable'=>true ); if ($fichier){ if (!file_exists($fichier)) { $valeurs['editable'] = false; $valeurs['message_erreur'] = _T('skeleditor:erreur_fichier_inexistant'); $valeurs['fichier'] = ''; return $valeurs; } include_spip('inc/autoriser'); if (!autoriser('voir','squelette',$fichier)){ $valeurs['editable'] = false; $valeurs['message_erreur'] = _T('skeleditor:erreur_type_interdit'); $valeurs['fichier'] = ''; return $valeurs; } $valeurs['date'] = filemtime($fichier); $valeurs['size'] = filesize($fichier); if (autoriser('modifier','squelette',$fichier) AND strncmp($fichier, $path_base, strlen($path_base))==0) $valeurs['filename'] = substr($fichier,strlen($path_base)); // pour le renommage elseif(strncmp($fichier, $path_base, strlen($path_base))!=0){ // c'est une copie dans le dossier squelettes/ $valeurs['filename'] = skeleditor_nom_copie($fichier); $valeurs['_hidden'] .= "<input type='hidden' name='copie_squelette' value='".$valeurs['filename']."' />"; $valeurs['_info_copie'] = _T('skeleditor:info_copie',array('dir'=>joli_repertoire($path_base))); } } list($valeurs['code'],$valeurs['type'],$ctrl) = skeleditor_get_file_content_type_ctrl($fichier); $valeurs['_hidden'] .= "<input type='hidden' name='ctrl_md5' value='$ctrl' />"; // un hash pour eviter les problemes de modif concourantes return $valeurs; }