Verzeichnisstruktur phpBB-3.1.0


Veröffentlicht
27.10.2014

So funktioniert es


Auf das letzte Element klicken. Dies geht jeweils ein Schritt zurück

Auf das Icon klicken, dies öffnet das Verzeichnis. Nochmal klicken schließt das Verzeichnis.
Auf den Verzeichnisnamen klicken, dies zeigt nur das Verzeichnis mit Inhalt an

      (Beispiel Datei-Icons)

Auf das Icon klicken um den Quellcode anzuzeigen

prune_forum.php

Zuletzt modifiziert: 09.10.2024, 12:55 - Dateigröße: 4.10 KiB


 001  <?php
 002  /**
 003  *
 004  * This file is part of the phpBB Forum Software package.
 005  *
 006  * @copyright (c) phpBB Limited <https://www.phpbb.com>
 007  * @license GNU General Public License, version 2 (GPL-2.0)
 008  *
 009  * For full copyright and license information, please see
 010  * the docs/CREDITS.txt file.
 011  *
 012  */
 013   
 014  namespace phpbb\cron\task\core;
 015   
 016  /**
 017  * Prune one forum cron task.
 018  *
 019  * It is intended to be used when cron is invoked via web.
 020  * This task can decide whether it should be run using data obtained by viewforum
 021  * code, without making additional database queries.
 022  */
 023  class prune_forum extends \phpbb\cron\task\base implements \phpbb\cron\task\parametrized
 024  {
 025      protected $phpbb_root_path;
 026      protected $php_ext;
 027      protected $config;
 028      protected $db;
 029   
 030      /**
 031      * If $forum_data is given, it is assumed to contain necessary information
 032      * about a single forum that is to be pruned.
 033      *
 034      * If $forum_data is not given, forum id will be retrieved via request_var
 035      * and a database query will be performed to load the necessary information
 036      * about the forum.
 037      */
 038      protected $forum_data;
 039   
 040      /**
 041      * Constructor.
 042      *
 043      * @param string $phpbb_root_path The root path
 044      * @param string $php_ext PHP file extension
 045      * @param \phpbb\config\config $config The config
 046      * @param \phpbb\db\driver\driver_interface $db The db connection
 047      */
 048      public function __construct($phpbb_root_path, $php_ext, \phpbb\config\config $config, \phpbb\db\driver\driver_interface $db)
 049      {
 050          $this->phpbb_root_path = $phpbb_root_path;
 051          $this->php_ext = $php_ext;
 052          $this->config = $config;
 053          $this->db = $db;
 054      }
 055   
 056      /**
 057      * Manually set forum data.
 058      *
 059      * @param array $forum_data Information about a forum to be pruned.
 060      */
 061      public function set_forum_data($forum_data)
 062      {
 063          $this->forum_data = $forum_data;
 064      }
 065   
 066      /**
 067      * Runs this cron task.
 068      *
 069      * @return null
 070      */
 071      public function run()
 072      {
 073          if (!function_exists('auto_prune'))
 074          {
 075              include($this->phpbb_root_path . 'includes/functions_admin.' . $this->php_ext);
 076          }
 077   
 078          if ($this->forum_data['prune_days'])
 079          {
 080              auto_prune($this->forum_data['forum_id'], 'posted', $this->forum_data['forum_flags'], $this->forum_data['prune_days'], $this->forum_data['prune_freq']);
 081          }
 082   
 083          if ($this->forum_data['prune_viewed'])
 084          {
 085              auto_prune($this->forum_data['forum_id'], 'viewed', $this->forum_data['forum_flags'], $this->forum_data['prune_viewed'], $this->forum_data['prune_freq']);
 086          }
 087      }
 088   
 089      /**
 090      * Returns whether this cron task can run, given current board configuration.
 091      *
 092      * This cron task will not run when system cron is utilised, as in
 093      * such cases prune_all_forums task would run instead.
 094      *
 095      * Additionally, this task must be given the forum data, either via
 096      * the constructor or parse_parameters method.
 097      *
 098      * @return bool
 099      */
 100      public function is_runnable()
 101      {
 102          return !$this->config['use_system_cron'] && $this->forum_data;
 103      }
 104   
 105      /**
 106      * Returns whether this cron task should run now, because enough time
 107      * has passed since it was last run.
 108      *
 109      * Forum pruning interval is specified in the forum data.
 110      *
 111      * @return bool
 112      */
 113      public function should_run()
 114      {
 115          return $this->forum_data['enable_prune'] && $this->forum_data['prune_next'] < time();
 116      }
 117   
 118      /**
 119      * Returns parameters of this cron task as an array.
 120      * The array has one key, f, whose value is id of the forum to be pruned.
 121      *
 122      * @return array
 123      */
 124      public function get_parameters()
 125      {
 126          return array('f' => $this->forum_data['forum_id']);
 127      }
 128   
 129      /**
 130      * Parses parameters found in $request, which is an instance of
 131      * \phpbb\request\request_interface.
 132      *
 133      * It is expected to have a key f whose value is id of the forum to be pruned.
 134      *
 135      * @param \phpbb\request\request_interface $request Request object.
 136      *
 137      * @return null
 138      */
 139      public function parse_parameters(\phpbb\request\request_interface $request)
 140      {
 141          $this->forum_data = null;
 142          if ($request->is_set('f'))
 143          {
 144              $forum_id = $request->variable('f', 0);
 145   
 146              $sql = 'SELECT forum_id, prune_next, enable_prune, prune_days, prune_viewed, forum_flags, prune_freq
 147                  FROM ' . FORUMS_TABLE . "
 148                  WHERE forum_id = $forum_id";
 149              $result = $this->db->sql_query($sql);
 150              $row = $this->db->sql_fetchrow($result);
 151              $this->db->sql_freeresult($result);
 152   
 153              if ($row)
 154              {
 155                  $this->forum_data = $row;
 156              }
 157          }
 158      }
 159  }
 160