<?php
if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../../../').'/');
if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
require_once(DOKU_PLUGIN.'admin.php');
 
/**
 * All DokuWiki plugins to extend the admin function
 * need to inherit from this class
 */
class admin_plugin_pagesEditees extends DokuWiki_Admin_Plugin {
 		var $cmd;

    /**
     * Constructor
     */
    function admin_plugin_pagesEditees() {
        $this->setupLocale();
    }

    /**
     * return some info
     */
    function getInfo() {
        return array(
            'author' => 'Etienne M.',
            'email'  => 'emauvaisfr@yahoo.fr',
            'date'   => @file_get_contents(DOKU_PLUGIN.'pagesEditees/VERSION'),
            'name'   => 'Pages en cours d\'edition / Pages being edited',
            'desc'   => 'Affiche les pages en cours d\'edition / Displays the pages being edited',
            'url'    => 'http://www.dokuwiki.org/plugin:pageseditees',
        );
    }
 
    /**
     * return prompt for admin menu
     */
    function getMenuText($language) {
      if (!$this->disabled)
        return parent::getMenuText($language);
      return '';
    }
                                                    
    /**
     * return sort order for position in admin menu
     */
    function getMenuSort() {
        return 5000;
    }
 
    /**
     * handle user request
     */
    function handle() {
    }
 
    /**
     * output appropriate html
     */
    function html() {
      global $lang;
      global $INFO;
      global $conf;
      global $auth;
                                    
      //Recherche des fichiers mlist dans le dossier meta
      $pages = $this->list_pages($conf['savedir'].'/pages',true, $pages);

      //Recherche dans chaque fichier txt trouve
      foreach($pages as $page) {
        preg_match("/pages\/(.*).txt$/",$page,$page2);
        $page2=preg_replace("/\//",":",$page2[1]);
        if ($page2) $listePages[]=$page2;
      }

      print "<h1>".$this->getLang('pged_titre')."</h1>";

      $pagelist = plugin_load('helper', 'pagelist');
      print "<table>";
                          
      foreach($listePages as $page) {
        //Si un fichier lock existe
        $lock=wikiLockFN(cleanID($page));
        if (file_exists($lock)) {
          if (!$pagelist) {
            $titrePage=explode(":",$page);
            $titrePage=$titrePage[sizeof($titrePage)-1];
            $titrePage=str_replace('_',' ',$titrePage);
          }
          else {
            $pagelist->page['id']=$page;
            $pagelist->page['exists'] = 1;
            $pagelist->_meta=NULL;
            $titrePage = $pagelist->_getMeta('title');
            if (!$titrePage) $titrePage = str_replace('_', ' ', noNS($page));
            $titrePage = hsc($titrePage);
          }

          $lien = "<a href='doku.php?id=".$page."' class='wikilink1' style='font-weight: lighter;' title='".$page."'>$titrePage</a>";

          $nom=file($lock);
          $nom=$nom[0];
          $tmp=$auth->getUserData($nom);
          $nomMEF=$tmp['name'];
          if (!$nomMEF) $nomMEF=$nom;

          $date=@strftime($conf['dformat'], filemtime($lock));
          $depuis=round((time() - filemtime($lock))/60,0);

          print "<tr><td nowrap><ul><li><div class=\"li\">$lien</li></div></ul></td>";
          print "<td nowrap valign=\"top\" style=\"padding-left:10px;\">$nomMEF</td>";
          print "<td nowrap valign=\"top\" style=\"padding-left:10px;\">$date</td>";
          print "<td nowrap valign=\"top\" style=\"padding-left:10px;\">($depuis min)</td>";
          print "</tr>";
        }
      }
      print "</table>";

      if (!$date) print '<div class="level1"><p>'.$this->getLang('pged_nopged').'.</p></div>';
    }

    function list_pages($dir, $recursive=false, $files=0) {
      static $files;

      if(is_dir($dir)) {
        if($dh = opendir($dir)) {
          while(($file = readdir($dh)) !== false) {
            if($file != "." && $file != "..") {
              if (is_dir($dir."/".$file))
                $this->list_pages($dir."/".$file, $recursive, $files);
              else if (preg_match("/\.txt$/",$file))
                $files[]=$dir."/".$file;
              }
            }
          closedir($dh);
        }
      }
      return $files;
    }
}                                                                                                                                                                  
// vim:ts=4:sw=4:et:enc=utf-8:
