MediaWiki REL1_31
FileJournal.php
Go to the documentation of this file.
1<?php
37abstract class FileJournal {
39 protected $backend;
40
42 protected $ttlDays;
43
50 protected function __construct( array $config ) {
51 $this->ttlDays = isset( $config['ttlDays'] ) ? $config['ttlDays'] : false;
52 }
53
62 final public static function factory( array $config, $backend ) {
63 $class = $config['class'];
64 $jrn = new $class( $config );
65 if ( !$jrn instanceof self ) {
66 throw new InvalidArgumentException( "Class given is not an instance of FileJournal." );
67 }
68 $jrn->backend = $backend;
69
70 return $jrn;
71 }
72
78 final public function getTimestampedUUID() {
79 $s = '';
80 for ( $i = 0; $i < 5; $i++ ) {
81 $s .= mt_rand( 0, 2147483647 );
82 }
83 $s = Wikimedia\base_convert( sha1( $s ), 16, 36, 31 );
84
85 return substr( Wikimedia\base_convert( wfTimestamp( TS_MW ), 10, 36, 9 ) . $s, 0, 31 );
86 }
87
99 final public function logChangeBatch( array $entries, $batchId ) {
100 if ( !count( $entries ) ) {
101 return StatusValue::newGood();
102 }
103
104 return $this->doLogChangeBatch( $entries, $batchId );
105 }
106
114 abstract protected function doLogChangeBatch( array $entries, $batchId );
115
121 final public function getCurrentPosition() {
122 return $this->doGetCurrentPosition();
123 }
124
129 abstract protected function doGetCurrentPosition();
130
137 final public function getPositionAtTime( $time ) {
138 return $this->doGetPositionAtTime( $time );
139 }
140
146 abstract protected function doGetPositionAtTime( $time );
147
165 final public function getChangeEntries( $start = null, $limit = 0, &$next = null ) {
166 $entries = $this->doGetChangeEntries( $start, $limit ? $limit + 1 : 0 );
167 if ( $limit && count( $entries ) > $limit ) {
168 $last = array_pop( $entries ); // remove the extra entry
169 $next = $last['id']; // update for next call
170 } else {
171 $next = null; // end of list
172 }
173
174 return $entries;
175 }
176
183 abstract protected function doGetChangeEntries( $start, $limit );
184
190 final public function purgeOldLogs() {
191 return $this->doPurgeOldLogs();
192 }
193
198 abstract protected function doPurgeOldLogs();
199}
wfTimestamp( $outputtype=TS_UNIX, $ts=0)
Get a timestamp string in one of various formats.
Class for handling file operation journaling.
logChangeBatch(array $entries, $batchId)
Log changes made by a batch file operation.
__construct(array $config)
Construct a new instance from configuration.
getPositionAtTime( $time)
Get the position ID of the latest journal entry at some point in time.
getCurrentPosition()
Get the position ID of the latest journal entry.
doGetCurrentPosition()
purgeOldLogs()
Purge any old log entries.
doGetChangeEntries( $start, $limit)
string $backend
getTimestampedUUID()
Get a statistically unique ID string.
getChangeEntries( $start=null, $limit=0, &$next=null)
Get an array of file change log entries.
static factory(array $config, $backend)
Create an appropriate FileJournal object from config.
doLogChangeBatch(array $entries, $batchId)
doGetPositionAtTime( $time)
see documentation in includes Linker php for Linker::makeImageLink & $time
Definition hooks.txt:1795
$last