Пример #1
0
/**
 * 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);
		}
	}

}
Пример #2
0
/**
 * 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;
}