RevTag.php
Go to the documentation of this file.00001 <?php
00014 class RevTag {
00015 protected static $schema = false;
00016
00022 public static function checkSchema() {
00023 if ( self::$schema !== false ) {
00024 return self::$schema;
00025 } else {
00026 $dbr = wfGetDB( DB_SLAVE );
00027 if ( $dbr->tableExists( 'revtag_type' ) ) {
00028 return self::$schema = 1;
00029 } else {
00030 return self::$schema = 2;
00031 }
00032 }
00033 }
00034
00041 public static function getType( $tag ) {
00042 if ( self::checkSchema() === 2 ) {
00043 return $tag;
00044 }
00045
00046 $tags = self::loadTags();
00047
00048 if ( isset( $tags[$tag] ) ) {
00049 return $tags[$tag];
00050 } else {
00051 $text = "Unknown revtag $tag. Known are " . implode( ', ', array_keys( $tags ) );
00052 throw new MWException( $text );
00053 }
00054 }
00055
00062 public static function typeToTag( $tag ) {
00063 if ( self::checkSchema() === 2 ) {
00064 return $tag;
00065 }
00066
00067 $tags = self::loadTags();
00068 $tags = array_flip( $tags );
00069
00070 if ( isset( $tags[$tag] ) ) {
00071 return $tags[$tag];
00072 } else {
00073 $text = "Unknown revtag type $tag. Known are " . implode( ', ', array_keys( $tags ) );
00074 throw new MWException( $text );
00075 }
00076 }
00077
00082 protected static function loadTags() {
00083 static $tags = null;
00084 if ( $tags === null ) {
00085 $tags = array();
00086
00087 $dbr = wfGetDB( DB_SLAVE );
00088 $res = $dbr->select(
00089 'revtag_type',
00090 array( 'rtt_name', 'rtt_id' ),
00091 array(),
00092 __METHOD__
00093 );
00094
00095 foreach ( $res as $row ) {
00096 $tags[$row->rtt_name] = $row->rtt_id;
00097 }
00098 }
00099
00100 return $tags;
00101 }
00102 }