[ Index ]

PHP Cross Reference of Moodle 1.9.3 [Build 15-Oct-2008]

title

Body

[close]

/mod/wiki/ewiki/plugins/ -> init.php (source)

   1  <?php
   2  
   3  /*
   4     This plugin is used as SetupWizard and initializes the database with
   5     the distributed default pages from the ./init-pages directory. It
   6     gives some configuration advice, when it thinks this is necessary.
   7  
   8     You need this plugin to run only once (when you first run the Wiki),
   9     afterwards you can and should comment out the include() directive which
  10     enabled it.   
  11  */
  12  
  13  
  14  $ewiki_plugins["handler"][-125] = "ewiki_initialization_wizard";
  15  $ewiki_plugins["page_init"][] = "ewiki_initialization_wizard2";
  16  
  17  
  18  function ewiki_initialization_wizard2($id, &$data, $action) {
  19     global $ewiki_plugins;
  20  
  21     #-- disable the default handler
  22     unset($ewiki_plugins["handler"][-105]);
  23  }
  24  
  25  function ewiki_initialization_wizard($id, &$data, &$action) {
  26  
  27     global $ewiki_plugins;
  28  
  29     #-- proceed only if frontpage missing or explicetely requested
  30     if ((strtolower($id)=="wikisetupwizard") || ($id==EWIKI_PAGE_INDEX) && ($action=="edit") && empty($data["version"]) && !($_REQUEST["abort"])) {
  31  
  32        if ($_REQUEST["abort"]) {
  33        }
  34  
  35        #-- first print some what-would-we-do-stats
  36        elseif (empty($_REQUEST["init"])) {
  37  
  38           $o = "<h2>WikiSetupWizard</h2>\n";
  39           $o .= "You don't have any pages in your Wiki yet, so we should try to read-in the default ones from <tt>init-pages/</tt> now.<br /><br />";
  40  
  41           $o .= '<a href="'.ewiki_script("",$id,array("init"=>"now")).'">[InitializeWikiDatabase]</a>';
  42           $o .= " &nbsp; ";
  43           $o .= '<a href="'.ewiki_script("",$id,array("abort"=>"this")).'">[NoThanks]</a>';
  44           $o .= "<br /><br />";
  45  
  46           #-- analyze and print settings and misconfigurations
  47           $pf_db = $ewiki_plugins["database"][0];
  48           $db = substr($pf_db, strrpos($pf_db, "_") + 1);
  49           $o .= '<table border="0" width="90%" class="diagnosis">';
  50           $o .= '<tr><td>DatabaseBackend</td><td>';
  51           $o .= "<b>" . $db . "</b><br />";
  52           if ($db == "files") {
  53              $o .= "<small>_DBFILES_DIR='</small><tt>" . EWIKI_DBFILES_DIRECTORY . "'</tt>";
  54              if (strpos(EWIKI_DBFILES_DIRECTORY, "tmp")) {
  55                 $o .= "<br /><b>Warning</b>: Storing your pages into a temporary directory is not what you want (there they would get deleted randomly), except for testing purposes of course. See the README.";
  56              }
  57           }
  58           else {
  59              $o .= "(looks ok)";
  60           }
  61           $o .= "</td></tr>";
  62  
  63           $o .= '<tr><td>WikiSoftware</td><td>ewiki '.EWIKI_VERSION."</td></tr>";
  64           $o .= "</table>";
  65  
  66           #-- more diagnosis 
  67           if (ini_get("magic_quotes")) {
  68              $o.= "<b>Warning</b>: Your PHP interpreter has enabled the ugly and outdated '<i>magic_quotes</i>'. This will lead to problems, so please ask your provider to correct it; or fix it yourself with .htaccess settings as documented in the README. Otherwise don't forget to include() the <tt>fragments/strip_wonderful_slashes.php</tt> (it's ok to proceed for the moment).<br /><br />";
  69           }
  70           if (ini_get("register_globals")) {
  71              $o.= "<b>Security warning</b>: The horrible '<i>register_globals</i>' setting is enabled. Without always using <tt>fragments/strike_register_globals.php</tt> or letting your provider fix that, you could get into trouble some day.<br /><br />";
  72           }
  73  
  74           return('<div class="wiki view WikiSetupWizard">' . $o . '</div>');
  75        }
  76  
  77  
  78        #-- actually initialize the database
  79        else {
  80           ewiki_database("INIT", array());
  81           if ($dh = @opendir($path=EWIKI_INIT_PAGES)) {
  82              while (false !== ($filename = readdir($dh))) {
  83                 if (preg_match('/^(['.EWIKI_CHARS_U.']+['.EWIKI_CHARS_L.']+\w*)+/', $filename)) {
  84                    $found = ewiki_database("FIND", array($filename));
  85                    if (! $found[$filename]) {
  86                       $content = implode("", file("$path/$filename"));
  87                       ewiki_scan_wikiwords($content, $ewiki_links, "_STRIP_EMAIL=1");
  88                       $refs = "\n\n" . implode("\n", array_keys($ewiki_links)) . "\n\n";
  89                       $save = array(
  90                          "id" => "$filename",
  91                          "version" => "1",
  92                          "flags" => "1",
  93                          "content" => $content,
  94                          "author" => ewiki_author("ewiki_initialize"),
  95                          "refs" => $refs,
  96                          "lastmodified" => filemtime("$path/$filename"),
  97                          "created" => filectime("$path/$filename")   // (not exact)
  98                       );
  99                       ewiki_database("WRITE", $save);
 100                    }
 101                 }
 102              }
 103              closedir($dh);
 104           }
 105           else {
 106              return("<b>ewiki error</b>: could not read from directory ". realpath($path) ."<br />\n");
 107           }
 108  
 109           #-- try to view/ that newly inserted page
 110           if ($data = ewiki_database("GET", array("id"=>$id))) {
 111              $action = "view";
 112           }
 113  
 114           #-- let ewiki_page() proceed as usual
 115           return("");
 116        }
 117     }
 118  
 119  }
 120  
 121  
 122  ?>


Generated: Wed Jan 14 11:33:29 2009 Cross-referenced by PHPXref 0.7