<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://www.foxmask.info/feed/rss2/xslt" ?><rss version="2.0"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
  <title>FoxMaSk'Z h0m3 - Dev-Gamer World - PunBB</title>
  <link>http://www.foxmask.info/</link>
  <description>La passion du developpement web et des jeux en ligne</description>
  <language>fr</language>
  <pubDate>Sat, 17 May 2008 20:35:51 +0200</pubDate>
  <copyright>foxmask ownz</copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
  <item>
    <title>PunBB 1.3 beta - la magie des 'hameçons' (aka Hook)</title>
    <link>http://www.foxmask.info/post/2008/02/04/PunBB-13-beta-la-magie-des-hamecons</link>
    <guid isPermaLink="false">urn:md5:30114540ddcded20ab493def97d7fdd0</guid>
    <pubDate>Mon, 04 Feb 2008 22:50:00 +0100</pubDate>
    <dc:creator>foxmask</dc:creator>
        <category>PunBB</category>    
    <description>    &lt;p&gt;Après de très long mois d'attente (près de 18?), PunBB 1.3 sort en version béta avec quelques nouveautés dont&amp;nbsp;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;le support de l'utf-8&lt;/li&gt;
&lt;li&gt;des 'hooks'&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;cela parait peu dit comme cela mais attention les yeux ....&lt;/p&gt;


&lt;p&gt;les hooks permettent dès maintenant, de créer des &quot;extensions&quot; sans toucher au coeur du code de punbb.&lt;br /&gt;
Ainsi l'avantage est de pouvoir produire des extensions de son choix qui soit installable / désinstable avec aisance et une maintenance accrue.&lt;/p&gt;


&lt;p&gt;un exemple :&lt;br /&gt;
dans le script header.php on trouve la ligne suivante :&lt;br /&gt;&lt;/p&gt;


&lt;p&gt;&lt;code&gt;($hook = get_hook('hd_template_loaded'))&amp;nbsp;? eval($hook)&amp;nbsp;: null;&lt;/code&gt;&lt;/p&gt;


&lt;p&gt;celle ci permet d'ajouter ce que l'on veut après que le template se soit chargé.&lt;/p&gt;


&lt;p&gt;Pour exploiter ce hook, prennons l'exemple &lt;a href=&quot;http://punbb.org/download/example_extensions.zip&quot; hreflang=&quot;en&quot;&gt;&quot;Random Quote&quot;&lt;/a&gt; permettant de changer la description du forum aléatoirement.&lt;/p&gt;


&lt;p&gt;le &lt;strong&gt;noeud&lt;/strong&gt; &lt;strong&gt;&lt;em&gt;hook id&lt;/em&gt;&lt;/strong&gt; identifie quel hook de punbb on compte exploiter, ici donc hook id vaut &lt;em&gt;&lt;strong&gt;hd_template_loaded&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;



&lt;p&gt;une fois installé dans le répertoire extensions, rendez vous dans l'administration du forum puis installez l'extension.&lt;/p&gt;


&lt;p&gt;vous verrez immédiatement le hook produire son effet en changeant la description &lt;img src=&quot;/themes/default/smilies/wink.png&quot; alt=&quot;;)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;


&lt;p&gt;Pour info, les  hooks commençants par&amp;nbsp;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;hd&lt;/strong&gt;_ sont dans le header&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ft&lt;/strong&gt;_ sont dans le footer&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;in&lt;/strong&gt;_ sont dans l'index&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;li&lt;/strong&gt;_ sont dans le login&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;dl&lt;/strong&gt;_ sont dans delete&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ex&lt;/strong&gt;_ sont dans externe&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;he&lt;/strong&gt;_ sont dans l'aide&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;mi&lt;/strong&gt;_ sont dans misc&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;mr&lt;/strong&gt;_ sont dans moderate&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;po&lt;/strong&gt;_ sont dans post&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;pf&lt;/strong&gt;_ sont dans profile&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;rg&lt;/strong&gt;_ sont dans register&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;re&lt;/strong&gt;_ sont dans rewrite&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;se&lt;/strong&gt;_ sont dans search&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ul&lt;/strong&gt;_ sont dans userlist&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;vf&lt;/strong&gt;_ sont dans viewforum&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;vt&lt;/strong&gt;_ sont dans viewtopic&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;vous voici parés prêt à créer/migrer vos MOD existantes &lt;img src=&quot;/themes/default/smilies/wink.png&quot; alt=&quot;;-)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>CakePHP - PunBB - statistique du forum</title>
    <link>http://www.foxmask.info/post/2007/12/22/CakePHP-PunBB-statistique-du-forum</link>
    <guid isPermaLink="false">urn:md5:1b44d8dbec4490c5160dfc653a150245</guid>
    <pubDate>Wed, 26 Dec 2007 00:00:00 +0100</pubDate>
    <dc:creator>foxmask</dc:creator>
        <category>CakePHP</category><category>MVC</category><category>PunBB</category>    
    <description>    &lt;p&gt;Quelques conceptes de bases.&lt;/p&gt;


&lt;p&gt;Pour pouvoir afficher des info réutilisables dans ses Views CakePHP fourni des &quot;Helpers&quot; et des Elements
Le Helper étend les possibilités des Vues et les Elements sont des petits bouts de code php/html qui peuvent étre affichés plusieurs fois dans la même page.&lt;/p&gt;


&lt;p&gt;Ainsi donc le &quot;bloc de stats&quot; pourrait très bien être affiché dans plusieurs pages pour chacun des plugins news/articles/lexique etc..&lt;/p&gt;


&lt;p&gt;Donc nous allons faire un element &quot;app/views/elements/stats.ctp&quot; comme suit&amp;nbsp;:&lt;/p&gt;
&lt;pre&gt;
&amp;lt;?php
$bloc-&amp;gt;startBloc(__('Forums statistics',true), 'stats');				
				
$pt_total_users = $this-&amp;gt;requestAction('users/nbUsers');
$pt_last_user 	= $this-&amp;gt;requestAction('users/lastUser');	
$pt_total_posts = $this-&amp;gt;requestAction('forum/stats');
?&amp;gt;
&amp;lt;ul&amp;gt;
&amp;lt;li&amp;gt;&amp;lt;?php echo __('Total numbers of members:',true).' '.$pt_total_users['0']['0']['total_user']?&amp;gt;&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;&amp;lt;?php echo __('Newest resgistered user:',true).' &amp;lt;a href=&amp;quot;'.pt_forum_url.'profile.php?id='.$pt_last_user['0']['User']['id'].'&amp;quot;&amp;gt;'.$pt_last_user['0']['User']['username']?&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;&amp;lt;?php echo __('Total numbers of topics:',true).' '.$pt_total_posts['0']['0']['total_topics']?&amp;gt;&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;&amp;lt;?php echo __('Total numbers of posts:',true).' '.$pt_total_posts['0']['0']['total_posts']?&amp;gt;&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;
&amp;lt;?php
$bloc-&amp;gt;endBloc();
?&amp;gt;
&lt;/pre&gt;


&lt;p&gt;comment tout cela fonctionne&amp;nbsp;:&lt;/p&gt;


&lt;p&gt;dans le script app/app_controller.php de notre applications nous faisons ceci&amp;nbsp;:&lt;/p&gt;
&lt;pre&gt;
class AppController extends Controller {
public $helpers = array ('Bloc','Html');
...
}
&lt;/pre&gt;

&lt;p&gt;et le helper bloc contient ceci (app/views/helpers/bloc.php):&lt;/p&gt;
&lt;pre&gt;
&amp;lt;?php
class BlocHelper extends Helper {
 	 	
 	function startBloc($title='',$id='') {	
		static $i;	
		$id = $id != '' ? $id : $i;		
		$res = '';
		$res .= &amp;quot;\t&amp;quot;.'&amp;lt;div class=&amp;quot;block&amp;quot; id=&amp;quot;'.$id.'&amp;quot;&amp;gt;'.&amp;quot;\n&amp;quot;;		
		if ($title!='')
			$res .= &amp;quot;\t&amp;quot;.'&amp;lt;h2&amp;gt;&amp;lt;span&amp;gt;'.$title.'&amp;lt;/span&amp;gt;&amp;lt;/h2&amp;gt;'.&amp;quot;\n&amp;quot;;		
		$res .= 
		&amp;quot;\t\t&amp;quot;.'&amp;lt;div class=&amp;quot;box&amp;quot; id=&amp;quot;box_'.$id.'&amp;quot;&amp;gt;'.&amp;quot;\n&amp;quot;;
		
		if (PT_DEFAULT_THEME == 'punbb') 
			$res .= &amp;quot;\t\t\t&amp;quot;.'&amp;lt;div class=&amp;quot;inbox&amp;quot;&amp;gt;'.&amp;quot;\n&amp;quot;;
		
		echo $res;
		$i++;
	}
	function endBloc() {
 		if (PT_DEFAULT_THEME == 'punbb') {		
			echo 
			&amp;quot;\t\t\t&amp;quot;.'&amp;lt;/div&amp;gt;'.&amp;quot;\n&amp;quot;.
			&amp;quot;\t\t&amp;quot;.'&amp;lt;/div&amp;gt;'.&amp;quot;\n&amp;quot;.
			&amp;quot;\t&amp;quot;.'&amp;lt;/div&amp;gt;';
 		} 
 		else {
 			echo 
			&amp;quot;\t\t&amp;quot;.'&amp;lt;/div&amp;gt;'.&amp;quot;\n&amp;quot;.
			&amp;quot;\t&amp;quot;.'&amp;lt;/div&amp;gt;'; 			
 		}
	} 
 	
}
?&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Ainsi paré&amp;nbsp;: le controlleur principal dispose d'un helper bloc &lt;br /&gt;
donc la vue peut utiliser $bloc-&amp;gt;endBloc et -&amp;gt;startBloc&lt;br /&gt;&lt;/p&gt;


&lt;p&gt;ceci est une premiere etape :&lt;br /&gt;
suit ensuite dans notre element les 3 lignes&amp;nbsp;: &lt;br /&gt;&lt;/p&gt;
&lt;pre&gt;

$pt_total_users = $this-&amp;gt;requestAction('users/nbUsers');
$pt_last_user 	= $this-&amp;gt;requestAction('users/lastUser');	
$pt_total_posts = $this-&amp;gt;requestAction('forum/stats');
&lt;/pre&gt;

&lt;p&gt;ces 3 lignes effectuent des &quot;requestAction&quot; lequelles permettent d'accèder aux methodes &lt;em&gt;nbUser&lt;/em&gt; et &lt;em&gt;lastUser&lt;/em&gt; de la class   &lt;strong&gt;UsersController &lt;/strong&gt; et à la methode &lt;em&gt;stats&lt;/em&gt; de la class &lt;strong&gt;ForumControllers&lt;/strong&gt;, en voici le détail :&lt;br /&gt;&lt;/p&gt;

&lt;pre&gt;

&amp;lt;?php
class UsersController extends AppController {
	public $name 	= 'Users';
[...]
	public function lastUser () {		
		$strQuery =  'SELECT id, username FROM '.DB_PREFIX.'users as User' .
						' ORDER BY registered DESC LIMIT 1';
		$resultset = $this-&amp;gt;User-&amp;gt;query($strQuery);
		return $resultset; 									
	}	
	public function nbUsers () {
		
		$strQuery = 'SELECT COUNT(id)-1 AS total_user FROM '.DB_PREFIX.'users AS User ';		  
		$resultset = $this-&amp;gt;User-&amp;gt;query($strQuery);
		return $resultset; 	
     }
[...]
}
&lt;/pre&gt;


&lt;p&gt;ceci nous permet donc d'avoir facilement les information de stats de notre forum de manière utlra simplissime dans un bloc qui s'affichera ou bon vous semble comme suit&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;&amp;lt;?php  echo $this-&amp;gt;renderElement('stats');?&amp;gt;&lt;/pre&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>CakePHP - PunBB - architecture generale</title>
    <link>http://www.foxmask.info/post/2007/12/22/CakePHP-PunBB-architecture-generale</link>
    <guid isPermaLink="false">urn:md5:747dace0ae09ed885374595b9d2be3a8</guid>
    <pubDate>Mon, 24 Dec 2007 10:30:00 +0100</pubDate>
    <dc:creator>foxmask</dc:creator>
        <category>CakePHP</category><category>MVC</category><category>PunBB</category>    
    <description>    &lt;p&gt;Voici l'architecture générale avec la liste des répertoires de son application&lt;/p&gt;


&lt;p&gt;- &lt;strong&gt;app&lt;/strong&gt;&lt;br /&gt;
--- &lt;strong&gt;config&lt;/strong&gt; contient les fichiers de config de son application tel database.php, bootstrap.php etc..&lt;br /&gt;&lt;/p&gt;


&lt;p&gt;--- &lt;strong&gt;controllers&lt;/strong&gt; contient les controllers de votre application&lt;br /&gt;&lt;/p&gt;


&lt;p&gt;--- &lt;strong&gt;locales&lt;/strong&gt; contient les traductions &lt;br /&gt;&lt;/p&gt;


&lt;p&gt;--- &lt;strong&gt;models&lt;/strong&gt; contient les models&lt;br /&gt;&lt;/p&gt;


&lt;p&gt;--- &lt;strong&gt;plugins&lt;/strong&gt; contient des applications nommé plugins (détail plus bas)&lt;br /&gt;&lt;/p&gt;


&lt;p&gt;--- &lt;strong&gt;vendors&lt;/strong&gt; contient des librairies externes à CakePHP et nécéssaire à son application&lt;br /&gt;&lt;/p&gt;


&lt;p&gt;--- &lt;strong&gt;views&lt;/strong&gt; contient les views de votre application&lt;br /&gt;&lt;/p&gt;


&lt;p&gt;--- &lt;strong&gt;webroot&lt;/strong&gt; contient la partie &quot;web&quot; de votre application
--- &lt;strong&gt;webroot&lt;/strong&gt;/forum/ l'endroit où est installé punBB !&lt;br /&gt;&lt;/p&gt;


&lt;p&gt;le répertoire &lt;strong&gt;plugins&lt;/strong&gt; reprend l'integralité de l'arborscence MVC ce qui donne&amp;nbsp;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;plugins&lt;/strong&gt; &lt;br /&gt;&lt;/li&gt;
&lt;li&gt;- &lt;strong&gt;news&lt;/strong&gt; &lt;br /&gt;&lt;/li&gt;
&lt;li&gt;- &lt;strong&gt;news&lt;/strong&gt;/news_app_controller.php class du controller du plugins news &lt;br /&gt;&lt;/li&gt;
&lt;li&gt;- &lt;strong&gt;news&lt;/strong&gt;/news_app_model.php  class du mdel du module du plugin news&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;- &lt;strong&gt;news&lt;/strong&gt;/&lt;em&gt;controllers&lt;/em&gt;/news_controller.php le controlleur du plugin news&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;- &lt;strong&gt;news&lt;/strong&gt;/&lt;em&gt;models&lt;/em&gt;/news.php le model du plugin news&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;- &lt;strong&gt;news&lt;/strong&gt;/&lt;em&gt;views&lt;/em&gt;/themed/punbb/news/index.ctp la vue principale du module news&lt;br /&gt;&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;La configuration apache devra donc définir un VirtualHost sur le répertoire app/webroot/ comme DOCUMENT_ROOT.&lt;br /&gt;&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>CakePHP et PunBB : introduction</title>
    <link>http://www.foxmask.info/post/2007/12/06/CakePHP-et-PunBB-%3A-introduction</link>
    <guid isPermaLink="false">urn:md5:d85933bf29d6491adac75eea934fe6dc</guid>
    <pubDate>Thu, 06 Dec 2007 14:00:00 +0100</pubDate>
    <dc:creator>foxmask</dc:creator>
        <category>CakePHP</category><category>MVC</category><category>PunBB</category>    
    <description>    &lt;p&gt;Après l'édpisode des &lt;a href=&quot;http://www.foxmask.info/post/2007/11/11/Framework-PHP5-Comparatif&quot; hreflang=&quot;fr&quot;&gt;comparatifs de framework PHP&lt;/a&gt;, voici une astuce pour vous permettre de franchir le pas vers CakePHP (un bon framework PHP utilisant MVC) tout en utilisant PunBB comme outil de forum.&lt;br /&gt;&lt;/p&gt;


&lt;p&gt;L'idée de base est la suivante&amp;nbsp;: je veux créer un portail basé sur le framework CakePHP mais en utilisant une seul et unique session entre mon portail et mon forum.&lt;br /&gt;&lt;/p&gt;


&lt;p&gt;Donc pour y parvenir, dans le script dispatcher.php de CakePHP je fais le classique include du script common.php de punbb comme suit :&lt;br /&gt;&lt;/p&gt;


&lt;p&gt;j'edite le script cake/dispatcher.php et au dessus de&lt;/p&gt;

&lt;pre&gt;
 class Dispatcher extends Object {
&lt;/pre&gt;


&lt;p&gt;j'ajoute&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
 define('PUN_ROOT',WWW_ROOT. 'forums/');
 require PUN_ROOT.'include/common.php';
&lt;/pre&gt;


&lt;p&gt;de là, partout dans CakePHP nous avons la &quot;main&quot; sur les variables punBB et la gestion de la session.&lt;br /&gt;&lt;/p&gt;


&lt;p&gt;Donc dans mon controlleur gérant l'utilisateur contiendra ni plus ni moins qu'un copier/coller du code de gestion de la fonction login (avec l'action = in et out selon le cas)&lt;br /&gt;&lt;/p&gt;
&lt;pre&gt;
  class UsersController extends AppController {
      public function login ()
    {
    	global $pun, $db, $pun_config, $db_type, $lang_login;
        $this-&amp;gt;set('error', false);
       #soumission du formulaire de login
        if (!empty($this-&amp;gt;data))
        {
      #analyse du login/pass ; recherche dans la base et creation du cookie
       }
     }
   }
&lt;/pre&gt;

&lt;p&gt;évidement on n'oubliera pas d'ajouter un global $pun_user  par exemple, dans la fonction login, pour manipuler les données que cette variable contient.&lt;br /&gt;&lt;/p&gt;


&lt;p&gt;Dans un prochain billet, j'aborderai les vues (le &lt;strong&gt;V&lt;/strong&gt; de &lt;em&gt;MVC&lt;/em&gt; &lt;img src=&quot;/themes/default/smilies/wink.png&quot; alt=&quot;;)&quot; class=&quot;smiley&quot; /&gt; et comment produire un menu et recuperer dans un bloc de son portail les 'n' derniers sujets recents du forum.&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>PunBB : la simplicité même ?!</title>
    <link>http://www.foxmask.info/post/2007/06/10/PunBB-%3A-la-simplicite-meme</link>
    <guid isPermaLink="false">urn:md5:e39a20885842655c1b337fc0adf34ee6</guid>
    <pubDate>Sun, 10 Jun 2007 11:41:00 +0200</pubDate>
    <dc:creator>foxmask</dc:creator>
        <category>PunBB</category>    
    <description>    &lt;p&gt;L'équipe de &lt;a href=&quot;http://punbb.org&quot; hreflang=&quot;en&quot;&gt;PunBB&lt;/a&gt;, l'outil de forum, nous gratifie d'un &lt;a href=&quot;http://punbb.org/docs/video_tutorials/&quot; hreflang=&quot;en&quot;&gt;tuto en vidéo&lt;/a&gt; détaillant toutes les étapes possibles sur punBB, allant de l'installation à la gestion de son forum en passant par l'installation de nouveaux thèmes pour finir par l'ajout de liens supplémentaires dans le menu horizontal.&lt;/p&gt;</description>
    
    
    
      </item>
    
</channel>
</rss>