Verzeichnisstruktur phpBB-3.2.0


Veröffentlicht
06.01.2017

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

base.php

Zuletzt modifiziert: 09.10.2024, 12:54 - Dateigröße: 4.31 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\cache\driver;
015   
016  abstract class base implements \phpbb\cache\driver\driver_interface
017  {
018      var $vars = array();
019      var $is_modified = false;
020   
021      var $sql_rowset = array();
022      var $sql_row_pointer = array();
023      var $cache_dir = '';
024   
025      /**
026      * {@inheritDoc}
027      */
028      function purge()
029      {
030          // Purge all phpbb cache files
031          try
032          {
033              $iterator = new \DirectoryIterator($this->cache_dir);
034          }
035          catch (\Exception $e)
036          {
037              return;
038          }
039   
040          foreach ($iterator as $fileInfo)
041          {
042              if ($fileInfo->isDot())
043              {
044                  continue;
045              }
046              $filename = $fileInfo->getFilename();
047              if ($fileInfo->isDir())
048              {
049                  $this->remove_dir($fileInfo->getPathname());
050              }
051              else if (strpos($filename, 'container_') === 0 ||
052                  strpos($filename, 'autoload_') === 0 ||
053                  strpos($filename, 'url_matcher') === 0 ||
054                  strpos($filename, 'url_generator') === 0 ||
055                  strpos($filename, 'sql_') === 0 ||
056                  strpos($filename, 'data_') === 0)
057              {
058                  $this->remove_file($fileInfo->getPathname());
059              }
060          }
061   
062          unset($this->vars);
063          unset($this->sql_rowset);
064          unset($this->sql_row_pointer);
065   
066          if (function_exists('opcache_reset'))
067          {
068              @opcache_reset();
069          }
070   
071          $this->vars = array();
072          $this->sql_rowset = array();
073          $this->sql_row_pointer = array();
074   
075          $this->is_modified = false;
076      }
077   
078      /**
079      * {@inheritDoc}
080      */
081      function unload()
082      {
083          $this->save();
084          unset($this->vars);
085          unset($this->sql_rowset);
086          unset($this->sql_row_pointer);
087   
088          $this->vars = array();
089          $this->sql_rowset = array();
090          $this->sql_row_pointer = array();
091      }
092   
093      /**
094      * {@inheritDoc}
095      */
096      function sql_load($query)
097      {
098          // Remove extra spaces and tabs
099          $query = preg_replace('/[\n\r\s\t]+/', ' ', $query);
100          $query_id = md5($query);
101   
102          if (($result = $this->_read('sql_' . $query_id)) === false)
103          {
104              return false;
105          }
106   
107          $this->sql_rowset[$query_id] = $result;
108          $this->sql_row_pointer[$query_id] = 0;
109   
110          return $query_id;
111      }
112   
113      /**
114      * {@inheritDoc}
115      */
116      function sql_exists($query_id)
117      {
118          return isset($this->sql_rowset[$query_id]);
119      }
120   
121      /**
122      * {@inheritDoc}
123      */
124      function sql_fetchrow($query_id)
125      {
126          if ($this->sql_row_pointer[$query_id] < sizeof($this->sql_rowset[$query_id]))
127          {
128              return $this->sql_rowset[$query_id][$this->sql_row_pointer[$query_id]++];
129          }
130   
131          return false;
132      }
133   
134      /**
135      * {@inheritDoc}
136      */
137      function sql_fetchfield($query_id, $field)
138      {
139          if ($this->sql_row_pointer[$query_id] < sizeof($this->sql_rowset[$query_id]))
140          {
141              return (isset($this->sql_rowset[$query_id][$this->sql_row_pointer[$query_id]][$field])) ? $this->sql_rowset[$query_id][$this->sql_row_pointer[$query_id]++][$field] : false;
142          }
143   
144          return false;
145      }
146   
147      /**
148      * {@inheritDoc}
149      */
150      function sql_rowseek($rownum, $query_id)
151      {
152          if ($rownum >= sizeof($this->sql_rowset[$query_id]))
153          {
154              return false;
155          }
156   
157          $this->sql_row_pointer[$query_id] = $rownum;
158          return true;
159      }
160   
161      /**
162      * {@inheritDoc}
163      */
164      function sql_freeresult($query_id)
165      {
166          if (!isset($this->sql_rowset[$query_id]))
167          {
168              return false;
169          }
170   
171          unset($this->sql_rowset[$query_id]);
172          unset($this->sql_row_pointer[$query_id]);
173   
174          return true;
175      }
176   
177      /**
178      * Removes/unlinks file
179      *
180      * @param string $filename Filename to remove
181      * @param bool $check Check file permissions
182      * @return bool True if the file was successfully removed, otherwise false
183      */
184      function remove_file($filename, $check = false)
185      {
186          global $phpbb_filesystem;
187   
188          if ($check && !$phpbb_filesystem->is_writable($this->cache_dir))
189          {
190              // E_USER_ERROR - not using language entry - intended.
191              trigger_error('Unable to remove files within ' . $this->cache_dir . '. Please check directory permissions.', E_USER_ERROR);
192          }
193   
194          return @unlink($filename);
195      }
196   
197      /**
198      * Remove directory
199      *
200      * @param string $dir Directory to remove
201      *
202      * @return null
203      */
204      protected function remove_dir($dir)
205      {
206          try
207          {
208              $iterator = new \DirectoryIterator($dir);
209          }
210          catch (\Exception $e)
211          {
212              return;
213          }
214   
215          foreach ($iterator as $fileInfo)
216          {
217              if ($fileInfo->isDot())
218              {
219                  continue;
220              }
221   
222              if ($fileInfo->isDir())
223              {
224                  $this->remove_dir($fileInfo->getPathname());
225              }
226              else
227              {
228                  $this->remove_file($fileInfo->getPathname());
229              }
230          }
231   
232          @rmdir($dir);
233      }
234  }
235