MediaWiki  master
FileDependency.php
Go to the documentation of this file.
1 <?php
21 use Wikimedia\AtEase\AtEase;
22 
30  private $filename;
31  private $timestamp;
32 
47  public function __construct( $filename, $timestamp = null ) {
48  $this->filename = $filename;
49  $this->timestamp = $timestamp;
50  }
51 
55  public function __sleep() {
56  $this->loadDependencyValues();
57 
58  return [ 'filename', 'timestamp' ];
59  }
60 
61  public function loadDependencyValues() {
62  if ( $this->timestamp === null ) {
63  AtEase::suppressWarnings();
64  # Dependency on a non-existent file stores "false"
65  # This is a valid concept!
66  $this->timestamp = filemtime( $this->filename );
67  AtEase::restoreWarnings();
68  }
69  }
70 
74  public function isExpired() {
75  AtEase::suppressWarnings();
76  $lastmod = filemtime( $this->filename );
77  AtEase::restoreWarnings();
78  if ( $lastmod === false ) {
79  if ( $this->timestamp === false ) {
80  # Still nonexistent
81  return false;
82  }
83 
84  # Deleted
85  wfDebug( "Dependency triggered: {$this->filename} deleted." );
86 
87  return true;
88  }
89 
90  if ( $lastmod > $this->timestamp ) {
91  # Modified or created
92  wfDebug( "Dependency triggered: {$this->filename} changed." );
93 
94  return true;
95  }
96 
97  # Not modified
98  return false;
99  }
100 }
wfDebug( $text, $dest='all', array $context=[])
Sends a line to the debug log if enabled or, optionally, to a comment in output.
Base class to represent dependencies for LocalisationCache entries.
Depend on a file.
__construct( $filename, $timestamp=null)
Create a file dependency.
loadDependencyValues()
Hook to perform any expensive pre-serialize loading of dependency values.