Hello, Gros sujet de réflexion sur les classes core de dotclear, et de leur utilisation actuelle.
J'ai volontairement isolé certaines méthodes des classes dcBlog et dcCore (voir en annexe). Pour moi, les fonctions en question ne devraient pas être disponibles/accessibles coté public du blog. Il pourrait être intéressant d'avoir une instanciation différente selon qu'on est coté public ou coté admin du blog : coté public, on ouvre un sous-ensemble de fonctionnalités (des objets core et blog bridés en quelque sorte), et coté admin on donne les objets complets. Cela peut être mis en oeuvre de plusieurs façons. Exemple pour dcBlog : * Un objet dcBlog épuré implémenté coté public, dont hérite un objet dcBlogAdmin plus complet * Un objet dcBlog complet coté admin, dont hérite un objet dcBlogPublic qui surcharge les fonctions interdites * Un objet dcBlog complet coté admin, et un objet "proxy" (au sens design pattern du terme) utilisé en guise de dcBlog coté public, le proxy contrôlant ce qui est appelable ou pas. L'avantage du 3e cas est qu'on peut mettre les behaviors qu'on veut avant et/ou après l'appel à des fonctions core et/ou blog. Je conçois qu'aujourd'hui c'est assez abstrait et peut paraître inutile, dans la mesure on on n'a pas vraiment besoin de cette protection dans la gestion actuelle du moteur de template, mais si on réfléchit un peu plus loin avec un nouveau moteur de templates (twig pour ne citer que lui), offrir un objet dcBlog "protégé" dans le contexte du template permettrait une grande simplification de l'écriture de templates, et surtout une certaine sécurisation à ce niveau. A+, Bruno == Annexe == dcBlog : public function __construct($core, $id) public function addCategory($cur,$parent=0) public function addComment($cur) public function addPost($cur) public function categories() public function delCategory($id) public function delComment($id) public function delPost($id) public function resetCategoriesOrder() public function setCategoryParent($id,$parent) public function setCategoryPosition($id,$sibling,$move) public function setPostContent($post_id,$format,$lang,&$excerpt,&$excerpt_xhtml,&$content,&$content_xhtml) public function updComment($id,$cur) public function updCommentStatus($id,$status) public function updPost($id,$cur) public function updPostCategory($id,$cat_id) public function updPostSelected($id,$selected) public function updPostStatus($id,$status) dcCore : public function __construct($driver, $host, $db, $user, $password, $prefix, $persist) public function addBlog($cur) public function addFormater($name,$func) public function addUser($cur) public function checkNonce($secret) public function countAllComments() public function countBlogPosts($id,$type=null) public function emptyTemplatesCache() public function indexAllComments($start=null,$limit=null) public function indexAllPosts($start=null,$limit=null) public function initWikiComment() public function initWikiPost() public function initWikiSimpleComment() public function setBlog($id) public function setUserBlogPermissions($id, $blog_id, $perms, $delete_first=true) public function setUserDefaultBlog($id, $blog_id) public function setUserPermissions($id,$perms) public function setVersion($module,$version) public function unsetBlog() public function updBlog($id,$cur) public function updUser($id,$cur) public function userDefaults() public function wikiPostLink($url,$content) _______________________________________________ Dev mailing list [email protected] http://ml.dotclear.org/listinfo/dev
