[ Index ]
 

Code source de PunBB 1.2.16

Accédez au Source d'autres logiciels libres

title

Body

[fermer]

/upload/include/ -> cache.php (source)

   1  <?php
   2  /***********************************************************************

   3  

   4    Copyright (C) 2002-2005  Rickard Andersson (rickard@punbb.org)

   5  

   6    This file is part of PunBB.

   7  

   8    PunBB is free software; you can redistribute it and/or modify it

   9    under the terms of the GNU General Public License as published

  10    by the Free Software Foundation; either version 2 of the License,

  11    or (at your option) any later version.

  12  

  13    PunBB is distributed in the hope that it will be useful, but

  14    WITHOUT ANY WARRANTY; without even the implied warranty of

  15    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the

  16    GNU General Public License for more details.

  17  

  18    You should have received a copy of the GNU General Public License

  19    along with this program; if not, write to the Free Software

  20    Foundation, Inc., 59 Temple Place, Suite 330, Boston,

  21    MA  02111-1307  USA

  22  

  23  ************************************************************************/
  24  
  25  
  26  // Make sure no one attempts to run this script "directly"

  27  if (!defined('PUN'))
  28      exit;
  29  
  30  
  31  //

  32  // If we are running pre PHP 4.2.0, we add our own implementation of var_export

  33  //

  34  if (!function_exists('var_export'))
  35  {
  36  	function var_export()
  37      {
  38          $args = func_get_args();
  39          $indent = (isset($args[2])) ? $args[2] : '';
  40  
  41          if (is_array($args[0]))
  42          {
  43              $output = 'array ('."\n";
  44  
  45              foreach ($args[0] as $k => $v)
  46              {
  47                  if (is_numeric($k))
  48                      $output .= $indent.'  '.$k.' => ';
  49                  else
  50                      $output .= $indent.'  \''.str_replace('\'', '\\\'', str_replace('\\', '\\\\', $k)).'\' => ';
  51  
  52                  if (is_array($v))
  53                      $output .= var_export($v, true, $indent.'  ');
  54                  else
  55                  {
  56                      if (gettype($v) != 'string' && !empty($v))
  57                          $output .= $v.','."\n";
  58                      else
  59                          $output .= '\''.str_replace('\'', '\\\'', str_replace('\\', '\\\\', $v)).'\','."\n";
  60                  }
  61              }
  62  
  63              $output .= ($indent != '') ? $indent.'),'."\n" : ')';
  64          }
  65          else
  66              $output = $args[0];
  67  
  68          if ($args[1] == true)
  69              return $output;
  70          else
  71              echo $output;
  72      }
  73  }
  74  
  75  
  76  //

  77  // Generate the config cache PHP script

  78  //

  79  function generate_config_cache()
  80  {
  81      global $db;
  82  
  83      // Get the forum config from the DB

  84      $result = $db->query('SELECT * FROM '.$db->prefix.'config', true) or error('Unable to fetch forum config', __FILE__, __LINE__, $db->error());
  85      while ($cur_config_item = $db->fetch_row($result))
  86          $output[$cur_config_item[0]] = $cur_config_item[1];
  87  
  88      // Output config as PHP code

  89      $fh = @fopen(PUN_ROOT.'cache/cache_config.php', 'wb');
  90      if (!$fh)
  91          error('Unable to write configuration cache file to cache directory. Please make sure PHP has write access to the directory \'cache\'', __FILE__, __LINE__);
  92  
  93      fwrite($fh, '<?php'."\n\n".'define(\'PUN_CONFIG_LOADED\', 1);'."\n\n".'$pun_config = '.var_export($output, true).';'."\n\n".'?>');
  94  
  95      fclose($fh);
  96  }
  97  
  98  
  99  //

 100  // Generate the bans cache PHP script

 101  //

 102  function generate_bans_cache()
 103  {
 104      global $db;
 105  
 106      // Get the ban list from the DB

 107      $result = $db->query('SELECT * FROM '.$db->prefix.'bans', true) or error('Unable to fetch ban list', __FILE__, __LINE__, $db->error());
 108  
 109      $output = array();
 110      while ($cur_ban = $db->fetch_assoc($result))
 111          $output[] = $cur_ban;
 112  
 113      // Output ban list as PHP code

 114      $fh = @fopen(PUN_ROOT.'cache/cache_bans.php', 'wb');
 115      if (!$fh)
 116          error('Unable to write bans cache file to cache directory. Please make sure PHP has write access to the directory \'cache\'', __FILE__, __LINE__);
 117  
 118      fwrite($fh, '<?php'."\n\n".'define(\'PUN_BANS_LOADED\', 1);'."\n\n".'$pun_bans = '.var_export($output, true).';'."\n\n".'?>');
 119  
 120      fclose($fh);
 121  }
 122  
 123  
 124  //

 125  // Generate the ranks cache PHP script

 126  //

 127  function generate_ranks_cache()
 128  {
 129      global $db;
 130  
 131      // Get the rank list from the DB

 132      $result = $db->query('SELECT * FROM '.$db->prefix.'ranks ORDER BY min_posts', true) or error('Unable to fetch rank list', __FILE__, __LINE__, $db->error());
 133  
 134      $output = array();
 135      while ($cur_rank = $db->fetch_assoc($result))
 136          $output[] = $cur_rank;
 137  
 138      // Output ranks list as PHP code

 139      $fh = @fopen(PUN_ROOT.'cache/cache_ranks.php', 'wb');
 140      if (!$fh)
 141          error('Unable to write ranks cache file to cache directory. Please make sure PHP has write access to the directory \'cache\'', __FILE__, __LINE__);
 142  
 143      fwrite($fh, '<?php'."\n\n".'define(\'PUN_RANKS_LOADED\', 1);'."\n\n".'$pun_ranks = '.var_export($output, true).';'."\n\n".'?>');
 144  
 145      fclose($fh);
 146  }
 147  
 148  
 149  //

 150  // Generate quickjump cache PHP scripts

 151  //

 152  function generate_quickjump_cache($group_id = false)
 153  {
 154      global $db, $lang_common, $pun_user;
 155  
 156      // If a group_id was supplied, we generate the quickjump cache for that group only

 157      if ($group_id !== false)
 158          $groups[0] = $group_id;
 159      else
 160      {
 161          // A group_id was now supplied, so we generate the quickjump cache for all groups

 162          $result = $db->query('SELECT g_id FROM '.$db->prefix.'groups') or error('Unable to fetch user group list', __FILE__, __LINE__, $db->error());
 163          $num_groups = $db->num_rows($result);
 164  
 165          for ($i = 0; $i < $num_groups; ++$i)
 166              $groups[] = $db->result($result, $i);
 167      }
 168  
 169      // Loop through the groups in $groups and output the cache for each of them

 170      while (list(, $group_id) = @each($groups))
 171      {
 172          // Output quickjump as PHP code

 173          $fh = @fopen(PUN_ROOT.'cache/cache_quickjump_'.$group_id.'.php', 'wb');
 174          if (!$fh)
 175              error('Unable to write quickjump cache file to cache directory. Please make sure PHP has write access to the directory \'cache\'', __FILE__, __LINE__);
 176  
 177          $output = '<?php'."\n\n".'if (!defined(\'PUN\')) exit;'."\n".'define(\'PUN_QJ_LOADED\', 1);'."\n\n".'?>';
 178          $output .= "\t\t\t\t".'<form id="qjump" method="get" action="viewforum.php">'."\n\t\t\t\t\t".'<div><label><?php echo $lang_common[\'Jump to\'] ?>'."\n\n\t\t\t\t\t".'<br /><select name="id" onchange="window.location=(\'viewforum.php?id=\'+this.options[this.selectedIndex].value)">'."\n";
 179  
 180  
 181          $result = $db->query('SELECT c.id AS cid, c.cat_name, f.id AS fid, f.forum_name, f.redirect_url FROM '.$db->prefix.'categories AS c INNER JOIN '.$db->prefix.'forums AS f ON c.id=f.cat_id LEFT JOIN '.$db->prefix.'forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id='.$group_id.') WHERE fp.read_forum IS NULL OR fp.read_forum=1 ORDER BY c.disp_position, c.id, f.disp_position', true) or error('Unable to fetch category/forum list', __FILE__, __LINE__, $db->error());
 182  
 183          $cur_category = 0;
 184          while ($cur_forum = $db->fetch_assoc($result))
 185          {
 186              if ($cur_forum['cid'] != $cur_category)    // A new category since last iteration?
 187              {
 188                  if ($cur_category)
 189                      $output .= "\t\t\t\t\t\t".'</optgroup>'."\n";
 190  
 191                  $output .= "\t\t\t\t\t\t".'<optgroup label="'.pun_htmlspecialchars($cur_forum['cat_name']).'">'."\n";
 192                  $cur_category = $cur_forum['cid'];
 193              }
 194  
 195              $redirect_tag = ($cur_forum['redirect_url'] != '') ? ' &gt;&gt;&gt;' : '';
 196              $output .= "\t\t\t\t\t\t\t".'<option value="'.$cur_forum['fid'].'"<?php echo ($forum_id == '.$cur_forum['fid'].') ? \' selected="selected"\' : \'\' ?>>'.pun_htmlspecialchars($cur_forum['forum_name']).$redirect_tag.'</option>'."\n";
 197          }
 198  
 199          $output .= "\t\t\t\t\t".'</optgroup>'."\n\t\t\t\t\t".'</select>'."\n\t\t\t\t\t".'<input type="submit" value="<?php echo $lang_common[\'Go\'] ?>" accesskey="g" />'."\n\t\t\t\t\t".'</label></div>'."\n\t\t\t\t".'</form>'."\n";
 200  
 201          fwrite($fh, $output);
 202  
 203          fclose($fh);
 204      }
 205  }


Généré le : Sat Nov 24 22:44:38 2007 par Balluche grâce à PHPXref 0.7
  Clicky Web Analytics