Le 18 novembre 2011 13:53, Franck Paul <carnet.franck.paul(a)gmail.com> a écrit :
Il existe de la doc en ligne concernant l'objet proxy dont tu
parles ?
Le 18 novembre 2011 13:23, Dsls <dsls(a)morefnu.org> a écrit :
> 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
> Dev(a)list.dotclear.org
>
http://ml.dotclear.org/listinfo/dev
>