commit aeab079817731f57bd4513a96a31840fec3c1de0
parent 31aafde14f2b4df4673de96620c4c14bd576d283
Author: Georges Dupéron <jahvascriptmaniac+github@free.fr>
Date: Sun, 1 Aug 2010 05:03:06 +0200
Remplissage des dernières fonctions de Stockage.
Diffstat:
1 file changed, 90 insertions(+), 65 deletions(-)
diff --git a/__cms__/stockage/stockage.php b/__cms__/stockage/stockage.php
@@ -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.
}
?>