[ Index ]

PHP Cross Reference of MediaWiki-1.24.0

title

Body

[close]

/includes/resourceloader/ -> ResourceLoaderUserCSSPrefsModule.php (source)

   1  <?php
   2  /**
   3   * Resource loader module for user preference customizations.
   4   *
   5   * This program is free software; you can redistribute it and/or modify
   6   * it under the terms of the GNU General Public License as published by
   7   * the Free Software Foundation; either version 2 of the License, or
   8   * (at your option) any later version.
   9   *
  10   * This program is distributed in the hope that it will be useful,
  11   * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13   * GNU General Public License for more details.
  14   *
  15   * You should have received a copy of the GNU General Public License along
  16   * with this program; if not, write to the Free Software Foundation, Inc.,
  17   * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  18   * http://www.gnu.org/copyleft/gpl.html
  19   *
  20   * @file
  21   * @author Trevor Parscal
  22   * @author Roan Kattouw
  23   */
  24  
  25  /**
  26   * Module for user preference customizations
  27   */
  28  class ResourceLoaderUserCSSPrefsModule extends ResourceLoaderModule {
  29  
  30      /* Protected Members */
  31  
  32      protected $modifiedTime = array();
  33  
  34      protected $origin = self::ORIGIN_CORE_INDIVIDUAL;
  35  
  36      /* Methods */
  37  
  38      /**
  39       * @param ResourceLoaderContext $context
  40       * @return array|int|mixed
  41       */
  42  	public function getModifiedTime( ResourceLoaderContext $context ) {
  43          $hash = $context->getHash();
  44          if ( !isset( $this->modifiedTime[$hash] ) ) {
  45              global $wgUser;
  46              $this->modifiedTime[$hash] = wfTimestamp( TS_UNIX, $wgUser->getTouched() );
  47          }
  48  
  49          return $this->modifiedTime[$hash];
  50      }
  51  
  52      /**
  53       * @param ResourceLoaderContext $context
  54       * @return array
  55       */
  56  	public function getStyles( ResourceLoaderContext $context ) {
  57          global $wgUser;
  58  
  59          if ( !$this->getConfig()->get( 'AllowUserCssPrefs' ) ) {
  60              return array();
  61          }
  62  
  63          $options = $wgUser->getOptions();
  64  
  65          // Build CSS rules
  66          $rules = array();
  67  
  68          // Underline: 2 = browser default, 1 = always, 0 = never
  69          if ( $options['underline'] < 2 ) {
  70              $rules[] = "a { text-decoration: " .
  71                  ( $options['underline'] ? 'underline' : 'none' ) . "; }";
  72          } else {
  73              # The scripts of these languages are very hard to read with underlines
  74              $rules[] = 'a:lang(ar), a:lang(kk-arab), a:lang(mzn), ' .
  75              'a:lang(ps), a:lang(ur) { text-decoration: none; }';
  76          }
  77          if ( $options['editfont'] !== 'default' ) {
  78              // Double-check that $options['editfont'] consists of safe characters only
  79              if ( preg_match( '/^[a-zA-Z0-9_, -]+$/', $options['editfont'] ) ) {
  80                  $rules[] = "textarea { font-family: {$options['editfont']}; }\n";
  81              }
  82          }
  83          $style = implode( "\n", $rules );
  84          if ( $this->getFlip( $context ) ) {
  85              $style = CSSJanus::transform( $style, true, false );
  86          }
  87          return array( 'all' => $style );
  88      }
  89  
  90      /**
  91       * @return string
  92       */
  93  	public function getGroup() {
  94          return 'private';
  95      }
  96  
  97      /**
  98       * @return array
  99       */
 100  	public function getDependencies() {
 101          return array( 'mediawiki.user' );
 102      }
 103  }


Generated: Fri Nov 28 14:03:12 2014 Cross-referenced by PHPXref 0.7.1