MediaWiki REL1_31
Licenses.php
Go to the documentation of this file.
1<?php
29class Licenses extends HTMLFormField {
31 protected $msg;
32
34 protected $lines = [];
35
37 protected $html;
38
40 protected $selected;
46 public function __construct( $params ) {
47 parent::__construct( $params );
48
49 $this->msg = static::getMessageFromParams( $params );
50 $this->selected = null;
51
52 $this->makeLines();
53 }
54
59 protected static function getMessageFromParams( $params ) {
60 return empty( $params['licenses'] )
61 ? wfMessage( 'licenses' )->inContentLanguage()->plain()
62 : $params['licenses'];
63 }
64
69 protected function buildLine( $line ) {
70 return new License( $line );
71 }
72
76 protected function makeLines() {
77 $levels = [];
78 $lines = explode( "\n", $this->msg );
79
80 foreach ( $lines as $line ) {
81 if ( strpos( $line, '*' ) !== 0 ) {
82 continue;
83 } else {
84 list( $level, $line ) = $this->trimStars( $line );
85
86 if ( strpos( $line, '|' ) !== false ) {
87 $obj = $this->buildLine( $line );
88 $this->stackItem( $this->lines, $levels, $obj );
89 } else {
90 if ( $level < count( $levels ) ) {
91 $levels = array_slice( $levels, 0, $level );
92 }
93 if ( $level == count( $levels ) ) {
94 $levels[$level - 1] = $line;
95 } elseif ( $level > count( $levels ) ) {
96 $levels[] = $line;
97 }
98 }
99 }
100 }
101 }
102
107 protected function trimStars( $str ) {
108 $numStars = strspn( $str, '*' );
109 return [ $numStars, ltrim( substr( $str, $numStars ), ' ' ) ];
110 }
111
117 protected function stackItem( &$list, $path, $item ) {
118 $position =& $list;
119 if ( $path ) {
120 foreach ( $path as $key ) {
121 $position =& $position[$key];
122 }
123 }
124 $position[] = $item;
125 }
126
132 protected function makeHtml( $tagset, $depth = 0 ) {
133 $html = '';
134
135 foreach ( $tagset as $key => $val ) {
136 if ( is_array( $val ) ) {
137 $html .= $this->outputOption(
138 $key, '',
139 [
140 'disabled' => 'disabled',
141 'style' => 'color: GrayText', // for MSIE
142 ],
143 $depth
144 );
145 $html .= $this->makeHtml( $val, $depth + 1 );
146 } else {
147 $html .= $this->outputOption(
148 $val->text, $val->template,
149 [ 'title' => '{{' . $val->template . '}}' ],
150 $depth
151 );
152 }
153 }
154
155 return $html;
156 }
157
165 protected function outputOption( $message, $value, $attribs = null, $depth = 0 ) {
166 $msgObj = $this->msg( $message );
167 $text = $msgObj->exists() ? $msgObj->text() : $message;
168 $attribs['value'] = $value;
169 if ( $value === $this->selected ) {
170 $attribs['selected'] = 'selected';
171 }
172
173 $val = str_repeat( /* &nbsp */ "\xc2\xa0", $depth * 2 ) . $text;
174 return str_repeat( "\t", $depth ) . Xml::element( 'option', $attribs, $val ) . "\n";
175 }
176
184 public function getLines() {
185 return $this->lines;
186 }
187
195 public function getLicenses() {
196 return $this->getLines();
197 }
198
202 public function getInputHTML( $value ) {
203 $this->selected = $value;
204
205 // add a default "no license selected" option
206 $default = $this->buildLine( '|nolicense' );
207 array_unshift( $this->lines, $default );
208
209 $html = $this->makeHtml( $this->getLines() );
210
211 $attribs = [
212 'name' => $this->mName,
213 'id' => $this->mID
214 ];
215 if ( !empty( $this->mParams['disabled'] ) ) {
216 $attribs['disabled'] = 'disabled';
217 }
218
219 $html = Html::rawElement( 'select', $attribs, $html );
220
221 // remove default "no license selected" from lines again
222 array_shift( $this->lines );
223
224 return $html;
225 }
226}
and that you know you can do these things To protect your we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights These restrictions translate to certain responsibilities for you if you distribute copies of the or if you modify it For if you distribute copies of such a whether gratis or for a you must give the recipients all the rights that you have You must make sure that receive or can get the source code And you must show them these terms so they know their rights We protect your rights with two distribute and or modify the software for each author s protection and we want to make certain that everyone understands that there is no warranty for this free software If the software is modified by someone else and passed we want its recipients to know that what they have is not the so that any problems introduced by others will not reflect on the original authors reputations any free program is threatened constantly by software patents We wish to avoid the danger that redistributors of a free program will individually obtain patent in effect making the program proprietary To prevent we have made it clear that any patent must be licensed for everyone s free use or not licensed at all The precise terms and conditions for distribution and modification follow GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR DISTRIBUTION AND MODIFICATION This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License The refers to any such program or and a work based on the Program means either the Program or any derivative work under copyright a work containing the Program or a portion of either verbatim or with modifications and or translated into another distribution and modification are not covered by this License
Definition COPYING.txt:73
$line
Definition cdb.php:59
The parent class to generate form fields.
msg()
Get a translated interface message.
A License class for use on Special:Upload.
Definition Licenses.php:29
makeLines()
Definition Licenses.php:76
string $html
Definition Licenses.php:37
__construct( $params)
#-
Definition Licenses.php:46
string null $selected
Definition Licenses.php:40
buildLine( $line)
Definition Licenses.php:69
makeHtml( $tagset, $depth=0)
Definition Licenses.php:132
string $msg
Definition Licenses.php:31
static getMessageFromParams( $params)
Definition Licenses.php:59
outputOption( $message, $value, $attribs=null, $depth=0)
Definition Licenses.php:165
getLicenses()
Accessor for $this->lines.
Definition Licenses.php:195
array $lines
Definition Licenses.php:34
getLines()
#-
Definition Licenses.php:184
stackItem(&$list, $path, $item)
Definition Licenses.php:117
getInputHTML( $value)
{This function must be implemented to return the HTML to generate the input object itself....
Definition Licenses.php:202
trimStars( $str)
Definition Licenses.php:107
deferred txt A few of the database updates required by various functions here can be deferred until after the result page is displayed to the user For updating the view updating the linked to tables after a etc PHP does not yet have any way to tell the server to actually return and disconnect while still running these but it might have such a feature in the future We handle these by creating a deferred update object and putting those objects on a global list
Definition deferred.txt:11
either a unescaped string or a HtmlArmor object after in associative array form externallinks including delete and has completed for all link tables whether this was an auto creation default is conds Array Extra conditions for the No matching items in log is displayed if loglist is empty msgKey Array If you want a nice box with a set this to the key of the message First element is the message additional optional elements are parameters for the key that are processed with wfMessage() -> params() ->parseAsBlock() - offset Set to overwrite offset parameter in $wgRequest set to '' to unset offset - wrap String Wrap the message in html(usually something like "&lt;div ...>$1&lt;/div>"). - flags Integer display flags(NO_ACTION_LINK, NO_EXTRA_USER_LINKS) 'LogException':Called before an exception(or PHP error) is logged. This is meant for integration with external error aggregation services
null means default in associative array with keys and values unescaped Should be merged with default with a value of false meaning to suppress the attribute in associative array with keys and values unescaped noclasses just before the function returns a value If you return an< a > element with HTML attributes $attribs and contents $html will be returned If you return $ret will be returned and may include noclasses after processing & $attribs
Definition hooks.txt:2014
$params