MediaWiki  master
StatOutputs.php
Go to the documentation of this file.
1 <?php
26 use Wikimedia\AtEase\AtEase;
27 
31 class StatsOutput {
32  public function formatPercent( $subset, $total, $revert = false, $accuracy = 2 ) {
33  AtEase::suppressWarnings();
34  $return = sprintf( '%.' . $accuracy . 'f%%', 100 * $subset / $total );
35  AtEase::restoreWarnings();
36 
37  return $return;
38  }
39 
40  public function heading() {
41  }
42 
43  public function footer() {
44  }
45 
46  public function blockstart() {
47  }
48 
49  public function blockend() {
50  }
51 
52  public function element( $in, $heading = false ) {
53  }
54 }
55 
58  public function heading() {
59  global $wgDummyLanguageCodes;
60  $version = SpecialVersion::getVersion( 'nodb' );
61  echo "'''Statistics are based on:''' <code>" . $version . "</code>\n\n";
62  echo 'English (en) is excluded because it is the default localization';
63  if ( is_array( $wgDummyLanguageCodes ) ) {
64  $dummyCodes = [];
65  foreach ( $wgDummyLanguageCodes as $dummyCode => $correctCode ) {
66  $dummyCodes[] = $this->getServiceContainer()
67  ->getLanguageNameUtils()
68  ->getLanguageName( $dummyCode ) . ' (' . $dummyCode . ')';
69  }
70  echo ', as well as the following languages that are not intended for ' .
71  'system message translations, usually because they redirect to other ' .
72  'language codes: ' . implode( ', ', $dummyCodes );
73  }
74  # dot to end sentence
75  echo ".\n\n";
76  echo '{| class="sortable wikitable" border="2" style="background-color: #F9F9F9; ' .
77  'border: 1px #AAAAAA solid; border-collapse: collapse; clear:both; width:100%;"' . "\n";
78  }
79 
80  public function footer() {
81  echo "|}\n";
82  }
83 
84  public function blockstart() {
85  echo "|-\n";
86  }
87 
88  public function blockend() {
89  echo '';
90  }
91 
92  public function element( $in, $heading = false ) {
93  echo ( $heading ? '!' : '|' ) . "$in\n";
94  }
95 
96  public function formatPercent( $subset, $total, $revert = false, $accuracy = 2 ) {
97  AtEase::suppressWarnings();
98  $v = round( 255 * $subset / $total );
99  AtEase::restoreWarnings();
100 
101  if ( $revert ) {
102  # Weigh reverse with factor 20 so coloring takes effect more quickly as
103  # this option is used solely for reporting 'bad' percentages.
104  $v = $v * 20;
105  if ( $v > 255 ) {
106  $v = 255;
107  }
108  $v = 255 - $v;
109  }
110  if ( $v < 128 ) {
111  # Red to Yellow
112  $red = 'FF';
113  $green = sprintf( '%02X', 2 * $v );
114  } else {
115  # Yellow to Green
116  $red = sprintf( '%02X', 2 * ( 255 - $v ) );
117  $green = 'FF';
118  }
119  $blue = '00';
120  $color = $red . $green . $blue;
121 
122  $percent = parent::formatPercent( $subset, $total, $revert, $accuracy );
123 
124  return 'style="background-color:#' . $color . ';"|' . $percent;
125  }
126 }
127 
130  public function element( $in, $heading = false ) {
131  echo $in . "\t";
132  }
133 
134  public function blockend() {
135  echo "\n";
136  }
137 }
138 
141  public function element( $in, $heading = false ) {
142  echo $in . ";";
143  }
144 
145  public function blockend() {
146  echo "\n";
147  }
148 }
csv output.
element( $in, $heading=false)
A general output object.
Definition: StatOutputs.php:31
formatPercent( $subset, $total, $revert=false, $accuracy=2)
Definition: StatOutputs.php:32
element( $in, $heading=false)
Definition: StatOutputs.php:52
Output text.
element( $in, $heading=false)
Outputs WikiText.
Definition: StatOutputs.php:57
element( $in, $heading=false)
Definition: StatOutputs.php:92
formatPercent( $subset, $total, $revert=false, $accuracy=2)
Definition: StatOutputs.php:96
$wgDummyLanguageCodes
Config variable stub for the DummyLanguageCodes setting, for use by phpdoc and IDEs.