home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 April / CMCD0404.ISO / Software / Freeware / Programare / groupoffice-com-2.01 / modules / wiki / parse / save.php < prev    next >
PHP Script  |  2004-03-08  |  2KB  |  99 lines

  1. <?php
  2. // $Id: save.php,v 1.1 2004/01/12 22:14:05 comsubvie Exp $
  3.  
  4. // Macros for on-save features.
  5.  
  6. require('parse/html.php');
  7. require('parse/macros.php');
  8.  
  9. // Define the link table.
  10. function parse_define_links($text)
  11. {
  12.   global $pagestore, $page, $ParseEngine, $Entity, $ParseObject;
  13.   static $called = 0;
  14.   $macros_index = -1;
  15.   $transclude_index = -1;
  16.   $elements_index = -1;
  17.   for($i = 0; $i < count($ParseEngine); $i++)
  18.   {
  19.     if($ParseEngine[$i] == 'parse_macros')
  20.       { $macros_index = $i; }
  21.     if($ParseEngine[$i] == 'parse_transclude')
  22.       { $transclude_index = $i; }
  23.     if($ParseEngine[$i] == 'parse_elements')
  24.       { $elements_index = $i; }
  25.   }
  26.   if($macros_index != -1)
  27.     { $ParseEngine[$macros_index] = 'parse_no_macros'; }
  28.   if($transclude_index != -1)
  29.     { $ParseEngine[$transclude_index] = 'parse_noop'; }
  30.   if($elements_index != -1)
  31.     { $ParseEngine[$elements_index] = 'parse_noop'; }
  32.  
  33.   if(!$called)
  34.   {
  35.     $pagestore->clear_link($page);
  36.     $called = 1;
  37.   }
  38.  
  39.   $j = count($Entity);
  40.   parseText($text, $ParseEngine, $ParseObject);
  41.  
  42.   for(; $j < count($Entity); $j++)
  43.   {
  44.     if($Entity[$j][0] == 'ref')
  45.       { $pagestore->new_link($page, $Entity[$j][1]); }
  46.   }
  47.  
  48.   if($macros_index != -1)
  49.     { $ParseEngine[$macros_index] = 'parse_macros'; }
  50.   if($transclude_index != -1)
  51.     { $ParseEngine[$transclude_index] = 'parse_transclude'; }
  52.   if($elements_index != -1)
  53.     { $ParseEngine[$elements_index] = 'parse_elements'; }
  54.  
  55.   return $text;
  56. }
  57.  
  58. // Define interwiki links.
  59. function parse_define_interwiki($text)
  60. {
  61.   global $pagestore, $page;
  62.   static $called = 0;
  63.  
  64.   if(!$called)
  65.   {
  66.     $pagestore->clear_interwiki($page);
  67.     $called = 1;
  68.   }
  69.  
  70.   if(preg_match('/^\*InterWiki:\s+\!?([A-Za-z]+)\s+((?:https?|file):[^\s]+)/',
  71.                 $text, $result))
  72.   {
  73.     $pagestore->new_interwiki($page, $result[1], $result[2]);
  74.   }
  75.   return $text;
  76. }
  77.  
  78. // Define sisterwiki links.
  79. function parse_define_sisterwiki($text)
  80. {
  81.   global $pagestore, $page;
  82.   static $called = 0;
  83.  
  84.   if(!$called)
  85.   {
  86.     $pagestore->clear_sisterwiki($page);
  87.     $called = 1;
  88.   }
  89.  
  90.   if(preg_match('/^\\*SisterWiki:\\s+\!?([A-Za-z]+)\s+(https?:[^\\s]+)/',
  91.                 $text, $result))
  92.   {
  93.     $pagestore->new_sisterwiki($page, $result[1], $result[2]);
  94.   }
  95.  
  96.   return $text;
  97. }
  98. ?>
  99.