Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 4
CRAP
0.00% covered (danger)
0.00%
0 / 25
LocalisationUpdate
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 4
90
0.00% covered (danger)
0.00%
0 / 25
 onRecacheFallback
0.00% covered (danger)
0.00%
0 / 1
12
0.00% covered (danger)
0.00%
0 / 10
 onRecache
0.00% covered (danger)
0.00%
0 / 1
12
0.00% covered (danger)
0.00%
0 / 10
 getDirectory
0.00% covered (danger)
0.00%
0 / 1
6
0.00% covered (danger)
0.00%
0 / 3
 getFilename
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 2
<?php
namespace LocalisationUpdate;
use FileDependency;
use FormatJson;
use LocalisationCache;
/**
 * Class for localization update hooks and static methods.
 */
class LocalisationUpdate {
    /**
     * Hook: LocalisationCacheRecacheFallback
     * @param LocalisationCache $lc
     * @param string $code
     * @param array &$cache
     */
    public static function onRecacheFallback( LocalisationCache $lc, $code, array &$cache ) {
        $dir = self::getDirectory();
        if ( !$dir ) {
            return;
        }
        $fileName = "$dir/" . self::getFilename( $code );
        if ( is_readable( $fileName ) ) {
            $data = FormatJson::decode( file_get_contents( $fileName ), true );
            $cache['messages'] = array_merge( $cache['messages'], $data );
        }
    }
    /**
     * Hook: LocalisationCacheRecache
     * @param LocalisationCache $lc
     * @param string $code
     * @param array &$cache
     */
    public static function onRecache( LocalisationCache $lc, $code, array &$cache ) {
        $dir = self::getDirectory();
        if ( !$dir ) {
            return;
        }
        $codeSequence = array_merge( [ $code ], $cache['fallbackSequence'] );
        foreach ( $codeSequence as $csCode ) {
            $fileName = "$dir/" . self::getFilename( $csCode );
            $cache['deps'][] = new FileDependency( $fileName );
        }
    }
    /**
     * Returns a directory where updated translations are stored.
     *
     * @return string|false False if not configured.
     * @since 1.1
     */
    public static function getDirectory() {
        global $wgLocalisationUpdateDirectory, $wgCacheDirectory;
        return $wgLocalisationUpdateDirectory ?: $wgCacheDirectory;
    }
    /**
     * Returns a filename where updated translations are stored.
     *
     * @param string $language Language tag
     * @return string
     * @since 1.1
     */
    public static function getFilename( $language ) {
        return "l10nupdate-$language.json";
    }
}