Remplissage des dernières fonctions de Stockage.

This commit is contained in:
Georges Dupéron 2010-08-01 05:03:06 +02:00
parent 31aafde14f
commit aeab079817

View File

@ -5,76 +5,101 @@
// Chaque fonction ajoute un chemin de base (pour le stockage) avant
// $chemin, puis appelle une fonction de systeme-fichiers.php
function nouvelle_page($chemin, $nom) {
if (vérifier_permission($chemin, "nouvelle_page")) {
$enfant = $chemin->enfant($nom);
SystemeFichiers::créer_dossier($config_chemin_base_stockage . '/' . $enfant->get());
// Imitation de l'url rewriting
SystemeFichiers::écrire($config_chemin_base_public . '/' . $enfant->get(), "<?php require_once(" . $config_chemin_base_php . "/cms.php);"); // TODO : séparer dans une autre fonction (rewriting.php ?)
return $enfant;
} else {
return false;
class Stockage {
public function nouvelle_page($chemin, $nom) {
if (vérifier_permission($chemin, "nouvelle_page")) {
$enfant = $chemin->enfant($nom);
SystemeFichiers::créer_dossier($config_chemin_base_stockage . '/' . $enfant->get());
// Imitation de l'url rewriting
SystemeFichiers::écrire($config_chemin_base_public . '/' . $enfant->get(), "<?php require_once(" . $config_chemin_base_php . "/cms.php);"); // TODO : séparer dans une autre fonction (rewriting.php ?)
return $enfant;
} else {
return false;
}
}
}
function set_prop($chemin, $prop, $valeur) {
if (vérifier_permission($chemin, "set_prop")) {
return SystemeFichiers::écrire($config_chemin_base_stockage . '/' . $chemin . '/' . $prop, $valeur)
} else {
return false;
public function set_prop($chemin, $prop, $valeur) {
if (vérifier_permission($chemin, "set_prop")) {
return SystemeFichiers::écrire($config_chemin_base_stockage . '/' . $chemin . '/' . $prop, $valeur)
} else {
return false;
}
}
}
// Stocke le contenu de $fichier dans $prop, et supprime $fichier.
function set_prop_fichier($chemin, $prop, $fichier) {
if (vérifier_permission($chemin, "set_prop")) {
// TODO : Utiliser move_uploaded_file lorsque nécessaire !!!
return SystemeFichiers::déplacer($fichier, $config_chemin_base_stockage . '/' . $chemin . '/' . $prop)
} else {
return false;
// Stocke le contenu de $fichier dans $prop, et supprime $fichier.
public function set_prop_fichier($chemin, $prop, $fichier) {
if (vérifier_permission($chemin, "set_prop")) {
return SystemeFichiers::déplacer($fichier, $config_chemin_base_stockage . '/' . $chemin . '/' . $prop)
} else {
return false;
}
}
}
// Comme pour set_prop_fichier, mais pour un fichier reçu (uploadé).
function set_prop_fichier_reçu($chemin, $prop, $fichier) {
// move_uploaded_file directement ? (on court-circuite SystemeFichiers)
// ou bien is_uploaded_file, puis si oui on appelle set_prop_fichier ?
// ou mieux, on ajoute un "move_uploaded_file" à SystèmeFichiers ?
}
function get_prop($chemin, $prop, $forcer_permissions = false) {
// $forcer_permissions permet à vérifier_permission() et ses
// dépendances get_regles() et get_groupe() de faire des get_prop
// même si l'utilisateur courant n'en a pas le droit.
if ($forcer_permissions || vérifier_permission($chemin, "get_prop")) {
return SystemeFichiers::lire($config_chemin_base_stockage . '/' . $chemin . '/' . $prop);
} else {
return "[Accès interdit]";
// Comme pour set_prop_fichier, mais pour un fichier reçu (uploadé).
public function set_prop_fichier_reçu($chemin, $prop, $fichier) {
if (vérifier_permission($chemin, "set_prop")) {
return SystemeFichiers::déplacer_fichier_téléchargé($fichier, $config_chemin_base_stockage . '/' . $chemin . '/' . $prop)
} else {
return false;
}
}
}
function get_prop_sendfile($chemin, $prop) {
// Envoie tout le conctenu de $prop sur le réseau.
// Équivalent à appeller sendfile sur le fichier qui contient $prop.
if (vérifier_permission($chemin, "get_prop")) {
// (SystemeFichiers:: ???) sendfile($config_chemin_base_stockage . '/' . $chemin . '/' . $prop);
} else {
return false;
public function get_prop($chemin, $prop, $forcer_permissions = false) {
// $forcer_permissions permet à vérifier_permission() et ses
// dépendances get_regles() et get_groupe() de faire des get_prop
// même si l'utilisateur courant n'en a pas le droit.
if ($forcer_permissions || vérifier_permission($chemin, "get_prop")) {
return SystemeFichiers::lire($config_chemin_base_stockage . '/' . $chemin . '/' . $prop);
} else {
return "[Accès interdit]";
}
}
public function get_prop_sendfile($chemin, $prop) {
// Envoie tout le conctenu de $prop sur le réseau.
// Équivalent à appeller sendfile sur le fichier qui contient $prop.
if (vérifier_permission($chemin, "get_prop")) {
return SystemeFichiers::envoyer_fichier_directement($config_chemin_base_stockage . '/' . $chemin . '/' . $prop);
} else {
return false;
}
}
// TODO : la suppression non récursive d'une page implique de supprimer
// ses propriétés, or pour ça, il faudrait que la suppression soit
// récursive sur un niveau seulement, ce qui n'est pas possible avec ce
// code.
public function supprimer($chemin, $récursif) {
if (vérifier_permission($chemin, "supprimer")) {
return SystèmeFichier::supprimer($config_chemin_base_stockage . '/' . $chemin, $récursif);
} else {
return false;
}
}
public function liste_enfants($chemin) {
// TODO : SECURITE : vérifier la permission. Mais pour quelle action ?
// get_prop ? ou une nouvelle (?) : liste_enfants ?
$enfants = Array();
foreach (SystemeFichiers::liste_fichiers() as $k => $v) {
if (strpos($v, "__prop__") !== 0 && is_dir($config_chemin_base_stockage . '/' . $chemin->enfant($v))) && $v != "." && $v != "..") {
$enfants[] = $chemin->enfant($v);
}
}
return $enfants;
}
public function renomer($chemin, $nouveau_nom) {
if ($chemin->dernier() == $nouveau_nom) {
return true;
}
if (vérifier_permission($chemin->parent(), "nouvelle_page") && vérifier_permission($chemin, "supprimer")) {
return SystemeFichiers::déplacer($config_chemin_base_stockage . '/' . $chemin, $config_chemin_base_stockage . '/' . $chemin->renomer($nouveau_nom));
} else {
return false;
}
}
}
function supprimer($chemin, $récursif) {
}
function liste_enfants($chemin) {
}
/*function parent($chemin) {
}*/
function renomer($chemin, $nouveau_nom) {
// Vérifie si l'ancien nom et le nouveau nom sont différents.
// Renome le dossier.
}
?>