xref: /plugin/discussion/admin.php (revision a768ba620648a5515ac0cfe24148acf7bbcad11b)
1*a768ba62Swikidesign<?php
2*a768ba62Swikidesignif(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../../').'/');
3*a768ba62Swikidesignif(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
4*a768ba62Swikidesignrequire_once(DOKU_PLUGIN.'admin.php');
5*a768ba62Swikidesign
6*a768ba62Swikidesign/**
7*a768ba62Swikidesign * All DokuWiki plugins to extend the admin function
8*a768ba62Swikidesign * need to inherit from this class
9*a768ba62Swikidesign */
10*a768ba62Swikidesignclass admin_plugin_discussion extends DokuWiki_Admin_Plugin {
11*a768ba62Swikidesign
12*a768ba62Swikidesign    /**
13*a768ba62Swikidesign     * return some info
14*a768ba62Swikidesign     */
15*a768ba62Swikidesign    function getInfo(){
16*a768ba62Swikidesign      return array(
17*a768ba62Swikidesign        'author' => 'iDo',
18*a768ba62Swikidesign        'email'  => 'iDo@woow-fr.com',
19*a768ba62Swikidesign        'date'   => '2006-12-30',
20*a768ba62Swikidesign        'name'   => 'See all discussion',
21*a768ba62Swikidesign        'desc'   => '',
22*a768ba62Swikidesign        'url'    => '',
23*a768ba62Swikidesign      );
24*a768ba62Swikidesign    }
25*a768ba62Swikidesign
26*a768ba62Swikidesign    /**
27*a768ba62Swikidesign     * return sort order for position in admin menu
28*a768ba62Swikidesign     */
29*a768ba62Swikidesign    function getMenuSort() {
30*a768ba62Swikidesign      return 200;
31*a768ba62Swikidesign    }
32*a768ba62Swikidesign
33*a768ba62Swikidesign    /**
34*a768ba62Swikidesign     * handle user request
35*a768ba62Swikidesign     */
36*a768ba62Swikidesign    function handle() {
37*a768ba62Swikidesign    }
38*a768ba62Swikidesign
39*a768ba62Swikidesign    /**
40*a768ba62Swikidesign     * output appropriate html
41*a768ba62Swikidesign     */
42*a768ba62Swikidesign    function html() {
43*a768ba62Swikidesign		global $conf;
44*a768ba62Swikidesign		$chem=DOKU_INC.$conf['savedir']."/meta/";
45*a768ba62Swikidesign		$arr=$this->globr($chem,"*.comments");
46*a768ba62Swikidesign		$com =array();
47*a768ba62Swikidesign		foreach ($arr as $v) {
48*a768ba62Swikidesign			$ap=unserialize(io_readFile($v, false));
49*a768ba62Swikidesign			//si ya des commentaire
50*a768ba62Swikidesign			if (isset($ap['comments'])) {
51*a768ba62Swikidesign				//pour chaque commentaire
52*a768ba62Swikidesign				foreach ($ap['comments'] as $vv) {
53*a768ba62Swikidesign					$page=str_replace(array($chem,".comments"),array("",""),$v);
54*a768ba62Swikidesign					$com[$page][$vv['date']]=array("name"=>$vv['name'],"com"=>$vv['xhtml']);
55*a768ba62Swikidesign					//old method
56*a768ba62Swikidesign					//$com[$vv['date']]=array("name"=>$vv['name'],"com"=>$vv['xhtml'],"page"=>wl($page,''));
57*a768ba62Swikidesign				}
58*a768ba62Swikidesign			}
59*a768ba62Swikidesign		}
60*a768ba62Swikidesign
61*a768ba62Swikidesign		if (count($com > 1)) {
62*a768ba62Swikidesign			//sort discussion	for all page
63*a768ba62Swikidesign			foreach ($com as $k => $v)
64*a768ba62Swikidesign				krsort($com[$k],SORT_NUMERIC);
65*a768ba62Swikidesign
66*a768ba62Swikidesign
67*a768ba62Swikidesign			//for all page with discussion thread
68*a768ba62Swikidesign			echo "<ul>";
69*a768ba62Swikidesign			foreach ($com as $page => $thread) {
70*a768ba62Swikidesign				echo "<li>";
71*a768ba62Swikidesign				echo '<div class="cPage"><a href="'.wl($page,'').'">'.str_replace("/doku.php//","",wl($page,'')).'</a></div><div class="cComBlock">';
72*a768ba62Swikidesign
73*a768ba62Swikidesign				foreach ($thread as $dte => $coments) {
74*a768ba62Swikidesign					echo '<div class="cComSolo">';
75*a768ba62Swikidesign					echo '<div class="cDate">'.date("d/m/Y H:i:s",$dte).'</div>';
76*a768ba62Swikidesign					echo '<span class="cName">'.$coments['name'].'</span>';
77*a768ba62Swikidesign					echo '<span class="cCom">'.$coments['com'].'</span>';
78*a768ba62Swikidesign					echo "</div>";
79*a768ba62Swikidesign				}
80*a768ba62Swikidesign				echo "</div></li>";
81*a768ba62Swikidesign			}
82*a768ba62Swikidesign			echo "</ul>";
83*a768ba62Swikidesign		}
84*a768ba62Swikidesign    }
85*a768ba62Swikidesign
86*a768ba62Swikidesign	/**
87*a768ba62Swikidesign	 * Recursive version of glob
88*a768ba62Swikidesign	 *
89*a768ba62Swikidesign	 * @return array containing all pattern-matched files.
90*a768ba62Swikidesign	 *
91*a768ba62Swikidesign	 * @param string $sDir      Directory to start with.
92*a768ba62Swikidesign	 * @param string $sPattern  Pattern to glob for.
93*a768ba62Swikidesign	 * @param int $nFlags      Flags sent to glob.
94*a768ba62Swikidesign	 */
95*a768ba62Swikidesign	function globr($sDir, $sPattern, $nFlags = NULL) {
96*a768ba62Swikidesign	  $sDir = escapeshellcmd($sDir);
97*a768ba62Swikidesign	  // Get the list of all matching files currently in the
98*a768ba62Swikidesign	  // directory.
99*a768ba62Swikidesign	  $aFiles = glob("$sDir/$sPattern", $nFlags);
100*a768ba62Swikidesign	  // Then get a list of all directories in this directory, and
101*a768ba62Swikidesign	  // run ourselves on the resulting array.  This is the
102*a768ba62Swikidesign	  // recursion step, which will not execute if there are no
103*a768ba62Swikidesign	  // directories.
104*a768ba62Swikidesign	  foreach (glob("$sDir/*", GLOB_ONLYDIR) as $sSubDir)  {
105*a768ba62Swikidesign	   $aSubFiles = $this->globr($sSubDir, $sPattern, $nFlags);
106*a768ba62Swikidesign	   $aFiles = array_merge($aFiles, $aSubFiles);
107*a768ba62Swikidesign	  }
108*a768ba62Swikidesign	  // The array we return contains the files we found, and the
109*a768ba62Swikidesign	  // files all of our children found.
110*a768ba62Swikidesign	  return $aFiles;
111*a768ba62Swikidesign	}
112*a768ba62Swikidesign
113*a768ba62Swikidesign
114*a768ba62Swikidesign}
115*a768ba62Swikidesign?>
116