Index: branches/wmf/1.17wmf1/extensions/CentralNotice/CentralNoticeLogPager.php |
— | — | @@ -1,73 +1,127 @@ |
2 | 2 | <?php |
3 | 3 | |
4 | | -class CentralNoticeBannerLogPager extends CentralNoticeLogPager { |
| 4 | +class CentralNoticeLogPager extends ReverseChronologicalPager { |
5 | 5 | var $viewPage, $special; |
6 | 6 | |
7 | 7 | function __construct( $special ) { |
| 8 | + global $wgRequest; |
8 | 9 | $this->special = $special; |
9 | | - parent::__construct($special); |
| 10 | + parent::__construct(); |
10 | 11 | |
11 | | - $this->viewPage = SpecialPage::getTitleFor( 'NoticeTemplate', 'view' ); |
| 12 | + // Override paging defaults |
| 13 | + list( $this->mLimit, /* $offset */ ) = $this->mRequest->getLimitOffset( 20, '' ); |
| 14 | + $this->mLimitsShown = array( 20, 50, 100 ); |
| 15 | + |
| 16 | + $this->viewPage = SpecialPage::getTitleFor( 'CentralNotice' ); |
12 | 17 | } |
13 | 18 | |
14 | 19 | /** |
15 | 20 | * Sort the log list by timestamp |
16 | 21 | */ |
17 | 22 | function getIndexField() { |
18 | | - return 'tmplog_timestamp'; |
| 23 | + return 'notlog_timestamp'; |
19 | 24 | } |
20 | 25 | |
21 | 26 | /** |
22 | 27 | * Pull log entries from the database |
23 | 28 | */ |
24 | 29 | function getQueryInfo() { |
25 | | - return array( |
26 | | - 'tables' => array( 'cn_template_log' ), |
| 30 | + global $wgRequest; |
| 31 | + |
| 32 | + $filterStartDate = 0; |
| 33 | + $filterEndDate = 0; |
| 34 | + $startYear = $wgRequest->getVal( 'start_year' ); |
| 35 | + if ( $startYear === 'other' ) $startYear = null; |
| 36 | + $startMonth = $wgRequest->getVal( 'start_month' ); |
| 37 | + if ( $startMonth === 'other' ) $startMonth = null; |
| 38 | + $startDay = $wgRequest->getVal( 'start_day' ); |
| 39 | + if ( $startDay === 'other' ) $startDay = null; |
| 40 | + $endYear = $wgRequest->getVal( 'end_year' ); |
| 41 | + if ( $endYear === 'other' ) $endYear = null; |
| 42 | + $endMonth = $wgRequest->getVal( 'end_month' ); |
| 43 | + if ( $endMonth === 'other' ) $endMonth = null; |
| 44 | + $endDay = $wgRequest->getVal( 'end_day' ); |
| 45 | + if ( $endDay === 'other' ) $endDay = null; |
| 46 | + |
| 47 | + if ( $startYear && $startMonth && $startDay ) { |
| 48 | + $filterStartDate = $startYear . $startMonth . $startDay; |
| 49 | + } |
| 50 | + if ( $endYear && $endMonth && $endDay ) { |
| 51 | + $filterEndDate = $endYear . $endMonth . $endDay; |
| 52 | + } |
| 53 | + $filterCampaign = $wgRequest->getVal( 'campaign' ); |
| 54 | + $filterUser = $wgRequest->getVal( 'user' ); |
| 55 | + $reset = $wgRequest->getVal( 'centralnoticelogreset' ); |
| 56 | + |
| 57 | + $info = array( |
| 58 | + 'tables' => array( 'cn_notice_log' ), |
27 | 59 | 'fields' => '*', |
| 60 | + 'conds' => array() |
28 | 61 | ); |
| 62 | + |
| 63 | + if ( !$reset ) { |
| 64 | + if ( $filterStartDate > 0 ) { |
| 65 | + $filterStartDate = intval( $filterStartDate.'000000' ); |
| 66 | + $info['conds'][] = "notlog_timestamp >= $filterStartDate"; |
| 67 | + } |
| 68 | + if ( $filterEndDate > 0 ) { |
| 69 | + $filterEndDate = intval( $filterEndDate.'000000' ); |
| 70 | + $info['conds'][] = "notlog_timestamp < $filterEndDate"; |
| 71 | + } |
| 72 | + if ( $filterCampaign ) { |
| 73 | + $info['conds'][] = "notlog_not_name LIKE '$filterCampaign'"; |
| 74 | + } |
| 75 | + if ( $filterUser ) { |
| 76 | + $user = User::newFromName( $filterUser ); |
| 77 | + $userId = $user->getId(); |
| 78 | + $info['conds'][] = "notlog_user_id = $userId"; |
| 79 | + } |
| 80 | + } |
| 81 | + |
| 82 | + return $info; |
29 | 83 | } |
30 | 84 | |
31 | | - /** |
| 85 | + /** |
32 | 86 | * Generate the content of each table row (1 row = 1 log entry) |
33 | 87 | */ |
34 | 88 | function formatRow( $row ) { |
35 | 89 | global $wgLang, $wgExtensionAssetsPath; |
36 | 90 | |
37 | 91 | // Create a user object so we can pull the name, user page, etc. |
38 | | - $loggedUser = User::newFromId( $row->tmplog_user_id ); |
| 92 | + $loggedUser = User::newFromId( $row->notlog_user_id ); |
39 | 93 | // Create the user page link |
40 | 94 | $userLink = $this->getSkin()->makeLinkObj( $loggedUser->getUserPage(), |
41 | 95 | $loggedUser->getName() ); |
42 | 96 | $userTalkLink = $this->getSkin()->makeLinkObj( $loggedUser->getTalkPage(), |
43 | 97 | wfMsg ( 'centralnotice-talk-link' ) ); |
44 | 98 | |
45 | | - // Create the banner link |
46 | | - $bannerLink = $this->getSkin()->makeLinkObj( $this->viewPage, |
47 | | - htmlspecialchars( $row->tmplog_template_name ), |
48 | | - 'template=' . urlencode( $row->tmplog_template_name ) ); |
| 99 | + // Create the campaign link |
| 100 | + $campaignLink = $this->getSkin()->makeLinkObj( $this->viewPage, |
| 101 | + htmlspecialchars( $row->notlog_not_name ), |
| 102 | + 'method=listNoticeDetail¬ice=' . urlencode( $row->notlog_not_name ) ); |
49 | 103 | |
50 | 104 | // Begin log entry primary row |
51 | 105 | $htmlOut = Xml::openElement( 'tr' ); |
52 | 106 | |
53 | 107 | $htmlOut .= Xml::openElement( 'td', array( 'valign' => 'top' ) ); |
54 | | - if ( $row->tmplog_action !== 'removed' ) { |
55 | | - $htmlOut .= '<a href="javascript:toggleLogDisplay(\''.$row->tmplog_id.'\')">'. |
56 | | - '<img src="'.$wgExtensionAssetsPath.'/CentralNotice/collapsed.png" id="cn-collapsed-'.$row->tmplog_id.'" style="display:block;vertical-align:baseline;"/>'. |
57 | | - '<img src="'.$wgExtensionAssetsPath.'/CentralNotice/uncollapsed.png" id="cn-uncollapsed-'.$row->tmplog_id.'" style="display:none;vertical-align:baseline;"/>'. |
| 108 | + if ( $row->notlog_action !== 'removed' ) { |
| 109 | + $htmlOut .= '<a href="javascript:toggleLogDisplay(\''.$row->notlog_id.'\')">'. |
| 110 | + '<img src="'.$wgExtensionAssetsPath.'/CentralNotice/collapsed.png" id="cn-collapsed-'.$row->notlog_id.'" style="display:block;"/>'. |
| 111 | + '<img src="'.$wgExtensionAssetsPath.'/CentralNotice/uncollapsed.png" id="cn-uncollapsed-'.$row->notlog_id.'" style="display:none;"/>'. |
58 | 112 | '</a>'; |
59 | 113 | } |
60 | 114 | $htmlOut .= Xml::closeElement( 'td' ); |
61 | 115 | $htmlOut .= Xml::tags( 'td', array( 'valign' => 'top', 'class' => 'primary' ), |
62 | | - $wgLang->date( $row->tmplog_timestamp ) . ' ' . $wgLang->time( $row->tmplog_timestamp ) |
| 116 | + $wgLang->date( $row->notlog_timestamp ) . ' ' . $wgLang->time( $row->notlog_timestamp ) |
63 | 117 | ); |
64 | 118 | $htmlOut .= Xml::tags( 'td', array( 'valign' => 'top', 'class' => 'primary' ), |
65 | 119 | wfMsg ( 'centralnotice-user-links', $userLink, $userTalkLink ) |
66 | 120 | ); |
67 | 121 | $htmlOut .= Xml::tags( 'td', array( 'valign' => 'top', 'class' => 'primary' ), |
68 | | - $row->tmplog_action |
| 122 | + $row->notlog_action |
69 | 123 | ); |
70 | 124 | $htmlOut .= Xml::tags( 'td', array( 'valign' => 'top', 'class' => 'primary' ), |
71 | | - $bannerLink |
| 125 | + $campaignLink |
72 | 126 | ); |
73 | 127 | $htmlOut .= Xml::tags( 'td', array(), |
74 | 128 | ' ' |
— | — | @@ -76,17 +130,17 @@ |
77 | 131 | // End log entry primary row |
78 | 132 | $htmlOut .= Xml::closeElement( 'tr' ); |
79 | 133 | |
80 | | - if ( $row->tmplog_action !== 'removed' ) { |
| 134 | + if ( $row->notlog_action !== 'removed' ) { |
81 | 135 | // Begin log entry secondary row |
82 | | - $htmlOut .= Xml::openElement( 'tr', array( 'id' => 'cn-log-details-'.$row->tmplog_id, 'style' => 'display:none;' ) ); |
| 136 | + $htmlOut .= Xml::openElement( 'tr', array( 'id' => 'cn-log-details-'.$row->notlog_id, 'style' => 'display:none;' ) ); |
83 | 137 | |
84 | 138 | $htmlOut .= Xml::tags( 'td', array( 'valign' => 'top' ), |
85 | 139 | ' ' // force a table cell in older browsers |
86 | 140 | ); |
87 | 141 | $htmlOut .= Xml::openElement( 'td', array( 'valign' => 'top', 'colspan' => '5' ) ); |
88 | | - if ( $row->tmplog_action == 'created' ) { |
| 142 | + if ( $row->notlog_action == 'created' ) { |
89 | 143 | $htmlOut .= $this->showInitialSettings( $row ); |
90 | | - } else if ( $row->tmplog_action == 'modified' ) { |
| 144 | + } else if ( $row->notlog_action == 'modified' ) { |
91 | 145 | $htmlOut .= $this->showChanges( $row ); |
92 | 146 | } |
93 | 147 | $htmlOut .= Xml::closeElement( 'td' ); |
— | — | @@ -98,62 +152,53 @@ |
99 | 153 | return $htmlOut; |
100 | 154 | } |
101 | 155 | |
102 | | - function getStartBody() { |
103 | | - $htmlOut = ''; |
104 | | - $htmlOut .= Xml::openElement( 'table', array( 'id' => 'cn-campaign-logs', 'cellpadding' => 3 ) ); |
105 | | - $htmlOut .= Xml::openElement( 'tr' ); |
106 | | - $htmlOut .= Xml::element( 'th', array( 'style' => 'width: 20px;' ) ); |
107 | | - $htmlOut .= Xml::element( 'th', array( 'align' => 'left', 'style' => 'width: 130px;' ), |
108 | | - wfMsg ( 'centralnotice-timestamp' ) |
109 | | - ); |
110 | | - $htmlOut .= Xml::element( 'th', array( 'align' => 'left', 'style' => 'width: 160px;' ), |
111 | | - wfMsg ( 'centralnotice-user' ) |
112 | | - ); |
113 | | - $htmlOut .= Xml::element( 'th', array( 'align' => 'left', 'style' => 'width: 100px;' ), |
114 | | - wfMsg ( 'centralnotice-action' ) |
115 | | - ); |
116 | | - $htmlOut .= Xml::element( 'th', array( 'align' => 'left', 'style' => 'width: 160px;' ), |
117 | | - wfMsg ( 'centralnotice-banner' ) |
118 | | - ); |
119 | | - $htmlOut .= Xml::tags( 'td', array(), |
120 | | - ' ' |
121 | | - ); |
122 | | - $htmlOut .= Xml::closeElement( 'tr' ); |
123 | | - return $htmlOut; |
124 | | - } |
125 | | - |
126 | | - /** |
127 | | - * Close table |
128 | | - */ |
129 | | - function getEndBody() { |
130 | | - $htmlOut = ''; |
131 | | - $htmlOut .= Xml::closeElement( 'table' ); |
132 | | - return $htmlOut; |
133 | | - } |
134 | | - |
135 | 156 | function showInitialSettings( $row ) { |
136 | 157 | global $wgLang; |
137 | 158 | $details = ''; |
138 | 159 | $details .= wfMsg ( |
139 | 160 | 'centralnotice-log-label', |
140 | | - wfMsg ( 'centralnotice-anon' ), |
141 | | - ($row->tmplog_end_anon ? 'on' : 'off') |
| 161 | + wfMsg ( 'centralnotice-start-date' ), |
| 162 | + $wgLang->date( $row->notlog_end_start ).' '.$wgLang->time( $row->notlog_end_start ) |
142 | 163 | )."<br/>"; |
143 | 164 | $details .= wfMsg ( |
144 | 165 | 'centralnotice-log-label', |
145 | | - wfMsg ( 'centralnotice-account' ), |
146 | | - ($row->tmplog_end_account ? 'on' : 'off') |
| 166 | + wfMsg ( 'centralnotice-end-date' ), |
| 167 | + $wgLang->date( $row->notlog_end_end ).' '.$wgLang->time( $row->notlog_end_end ) |
147 | 168 | )."<br/>"; |
148 | 169 | $details .= wfMsg ( |
149 | 170 | 'centralnotice-log-label', |
150 | | - wfMsg ( 'centralnotice-fundraising' ), |
151 | | - ($row->tmplog_end_fundraising ? 'on' : 'off') |
| 171 | + wfMsg ( 'centralnotice-projects' ), |
| 172 | + $row->notlog_end_projects |
152 | 173 | )."<br/>"; |
153 | | - if ( $row->tmplog_end_landingpages ) { |
| 174 | + $language_count = count( explode ( ', ', $row->notlog_end_languages ) ); |
| 175 | + $languageList = ''; |
| 176 | + if ( $language_count > 15 ) { |
| 177 | + $languageList = wfMsg ( 'centralnotice-multiple-languages', $language_count ); |
| 178 | + } elseif ( $language_count > 0 ) { |
| 179 | + $languageList = $row->notlog_end_languages; |
| 180 | + } |
| 181 | + $details .= wfMsg ( |
| 182 | + 'centralnotice-log-label', |
| 183 | + wfMsg ( 'centralnotice-languages' ), |
| 184 | + $languageList |
| 185 | + )."<br/>"; |
| 186 | + $details .= wfMsg ( |
| 187 | + 'centralnotice-log-label', |
| 188 | + wfMsg ( 'centralnotice-geo' ), |
| 189 | + ($row->notlog_end_geo ? 'on' : 'off') |
| 190 | + )."<br/>"; |
| 191 | + if ( $row->notlog_end_geo ) { |
| 192 | + $country_count = count( explode ( ', ', $row->notlog_end_countries ) ); |
| 193 | + $countryList = ''; |
| 194 | + if ( $country_count > 20 ) { |
| 195 | + $countryList = wfMsg ( 'centralnotice-multiple-countries', $country_count ); |
| 196 | + } elseif ( $country_count > 0 ) { |
| 197 | + $countryList = $row->notlog_end_countries; |
| 198 | + } |
154 | 199 | $details .= wfMsg ( |
155 | 200 | 'centralnotice-log-label', |
156 | | - wfMsg ( 'centralnotice-landingpages' ), |
157 | | - $row->tmplog_end_landingpages |
| 201 | + wfMsg ( 'centralnotice-countries' ), |
| 202 | + $countryList |
158 | 203 | )."<br/>"; |
159 | 204 | } |
160 | 205 | return $details; |
— | — | @@ -162,25 +207,70 @@ |
163 | 208 | function showChanges( $row ) { |
164 | 209 | global $wgLang; |
165 | 210 | $details = ''; |
166 | | - $details .= $this->testBooleanChange( 'anon', $row ); |
167 | | - $details .= $this->testBooleanChange( 'account', $row ); |
168 | | - $details .= $this->testBooleanChange( 'fundraising', $row ); |
169 | | - $details .= $this->testTextChange( 'landingpages', $row ); |
170 | | - if ( $row->tmplog_content_change ) { |
171 | | - // Show changes to banner content |
| 211 | + if ( $row->notlog_begin_start !== $row->notlog_end_start ) { |
172 | 212 | $details .= wfMsg ( |
173 | 213 | 'centralnotice-log-label', |
174 | | - wfMsg ( 'centralnotice-banner-content' ), |
175 | | - wfMsg ( 'centralnotice-banner-content-changed' ) |
| 214 | + wfMsg ( 'centralnotice-start-date' ), |
| 215 | + wfMsg ( |
| 216 | + 'centralnotice-changed', |
| 217 | + $wgLang->date( $row->notlog_begin_start ).' '.$wgLang->time( $row->notlog_begin_start ), |
| 218 | + $wgLang->date( $row->notlog_end_start ).' '.$wgLang->time( $row->notlog_end_start ) |
| 219 | + ) |
176 | 220 | )."<br/>"; |
177 | 221 | } |
| 222 | + if ( $row->notlog_begin_end !== $row->notlog_end_end ) { |
| 223 | + $details .= wfMsg ( |
| 224 | + 'centralnotice-log-label', |
| 225 | + wfMsg ( 'centralnotice-end-date' ), |
| 226 | + wfMsg ( |
| 227 | + 'centralnotice-changed', |
| 228 | + $wgLang->date( $row->notlog_begin_end ).' '.$wgLang->time( $row->notlog_begin_end ), |
| 229 | + $wgLang->date( $row->notlog_end_end ).' '.$wgLang->time( $row->notlog_end_end ) |
| 230 | + ) |
| 231 | + )."<br/>"; |
| 232 | + } |
| 233 | + $details .= $this->testBooleanChange( 'enabled', $row ); |
| 234 | + $details .= $this->testBooleanChange( 'preferred', $row ); |
| 235 | + $details .= $this->testBooleanChange( 'locked', $row ); |
| 236 | + $details .= $this->testBooleanChange( 'geo', $row ); |
| 237 | + $details .= $this->testSetChange( 'projects', $row ); |
| 238 | + $details .= $this->testSetChange( 'languages', $row ); |
| 239 | + $details .= $this->testSetChange( 'countries', $row ); |
| 240 | + if ( $row->notlog_begin_banners !== $row->notlog_end_banners ) { |
| 241 | + // Show changes to banner weights and assignment |
| 242 | + $beginBannersObject = json_decode( $row->notlog_begin_banners ); |
| 243 | + $endBannersObject = json_decode( $row->notlog_end_banners ); |
| 244 | + $beginBanners = array(); |
| 245 | + $endBanners = array(); |
| 246 | + foreach( $beginBannersObject as $key => $weight ) { |
| 247 | + $beginBanners[$key] = $key.' ('.$weight.')'; |
| 248 | + } |
| 249 | + foreach( $endBannersObject as $key => $weight ) { |
| 250 | + $endBanners[$key] = $key.' ('.$weight.')'; |
| 251 | + } |
| 252 | + if ( $beginBanners ) { |
| 253 | + $before = implode( ', ', $beginBanners ); |
| 254 | + } else { |
| 255 | + $before = wfMsg ( 'centralnotice-no-assignments' ); |
| 256 | + } |
| 257 | + if ( $endBanners ) { |
| 258 | + $after = implode( ', ', $endBanners ); |
| 259 | + } else { |
| 260 | + $after = wfMsg ( 'centralnotice-no-assignments' ); |
| 261 | + } |
| 262 | + $details .= wfMsg ( |
| 263 | + 'centralnotice-log-label', |
| 264 | + wfMsg ( 'centralnotice-templates' ), |
| 265 | + wfMsg ( 'centralnotice-changed', $before, $after) |
| 266 | + )."<br/>"; |
| 267 | + } |
178 | 268 | return $details; |
179 | 269 | } |
180 | 270 | |
181 | 271 | private function testBooleanChange( $param, $row ) { |
182 | 272 | $result = ''; |
183 | | - $beginField = 'tmplog_begin_'.$param; |
184 | | - $endField = 'tmplog_end_'.$param; |
| 273 | + $beginField = 'notlog_begin_'.$param; |
| 274 | + $endField = 'notlog_end_'.$param; |
185 | 275 | if ( $row->$beginField !== $row->$endField ) { |
186 | 276 | $result .= wfMsg ( |
187 | 277 | 'centralnotice-log-label', |
— | — | @@ -194,22 +284,73 @@ |
195 | 285 | } |
196 | 286 | return $result; |
197 | 287 | } |
198 | | - |
199 | | - private function testTextChange( $param, $row ) { |
| 288 | + |
| 289 | + private function testSetChange( $param, $row ) { |
200 | 290 | $result = ''; |
201 | | - $beginField = 'tmplog_begin_'.$param; |
202 | | - $endField = 'tmplog_end_'.$param; |
| 291 | + $beginField = 'notlog_begin_'.$param; |
| 292 | + $endField = 'notlog_end_'.$param; |
203 | 293 | if ( $row->$beginField !== $row->$endField ) { |
| 294 | + $beginSet = array(); |
| 295 | + $endSet = array(); |
| 296 | + if ( $row->$beginField ) { |
| 297 | + $beginSet = explode( ', ', $row->$beginField ); |
| 298 | + } |
| 299 | + if ( $row->$endField ) { |
| 300 | + $endSet = explode( ', ', $row->$endField ); |
| 301 | + } |
| 302 | + $added = array_diff( $endSet, $beginSet ); |
| 303 | + $removed = array_diff( $beginSet, $endSet ); |
| 304 | + $differences = ''; |
| 305 | + if ( $added ) { |
| 306 | + $differences .= wfMsg ( 'centralnotice-added', implode( ', ', $added ) ); |
| 307 | + if ( $removed ) $differences .= '; '; |
| 308 | + } |
| 309 | + if ( $removed ) { |
| 310 | + $differences .= wfMsg ( 'centralnotice-removed', implode( ', ', $removed ) ); |
| 311 | + } |
204 | 312 | $result .= wfMsg ( |
205 | 313 | 'centralnotice-log-label', |
206 | 314 | wfMsg ( 'centralnotice-'.$param ), |
207 | | - wfMsg ( |
208 | | - 'centralnotice-changed', |
209 | | - $row->$beginField, |
210 | | - $row->$endField |
211 | | - ) |
| 315 | + $differences |
212 | 316 | )."<br/>"; |
213 | 317 | } |
214 | 318 | return $result; |
215 | 319 | } |
| 320 | + |
| 321 | + /** |
| 322 | + * Specify table headers |
| 323 | + */ |
| 324 | + function getStartBody() { |
| 325 | + $htmlOut = ''; |
| 326 | + $htmlOut .= Xml::openElement( 'table', array( 'id' => 'cn-campaign-logs', 'cellpadding' => 3 ) ); |
| 327 | + $htmlOut .= Xml::openElement( 'tr' ); |
| 328 | + $htmlOut .= Xml::element( 'th', array( 'style' => 'width: 20px;' ) ); |
| 329 | + $htmlOut .= Xml::element( 'th', array( 'align' => 'left', 'style' => 'width: 130px;' ), |
| 330 | + wfMsg ( 'centralnotice-timestamp' ) |
| 331 | + ); |
| 332 | + $htmlOut .= Xml::element( 'th', array( 'align' => 'left', 'style' => 'width: 160px;' ), |
| 333 | + wfMsg ( 'centralnotice-user' ) |
| 334 | + ); |
| 335 | + $htmlOut .= Xml::element( 'th', array( 'align' => 'left', 'style' => 'width: 100px;' ), |
| 336 | + wfMsg ( 'centralnotice-action' ) |
| 337 | + ); |
| 338 | + $htmlOut .= Xml::element( 'th', array( 'align' => 'left', 'style' => 'width: 160px;' ), |
| 339 | + wfMsg ( 'centralnotice-notice' ) |
| 340 | + ); |
| 341 | + $htmlOut .= Xml::tags( 'td', array(), |
| 342 | + ' ' |
| 343 | + ); |
| 344 | + $htmlOut .= Xml::closeElement( 'tr' ); |
| 345 | + return $htmlOut; |
| 346 | + } |
| 347 | + |
| 348 | + /** |
| 349 | + * Close table |
| 350 | + */ |
| 351 | + function getEndBody() { |
| 352 | + $htmlOut = ''; |
| 353 | + $htmlOut .= Xml::closeElement( 'table' ); |
| 354 | + return $htmlOut; |
| 355 | + } |
| 356 | + |
216 | 357 | } |
Property changes on: branches/wmf/1.17wmf1/extensions/CentralNotice/CentralNoticeLogPager.php |
___________________________________________________________________ |
Deleted: svn:mergeinfo |
217 | 358 | Reverse-merged /trunk/phase3/extensions/CentralNotice/CentralNoticeLogPager.php:r63545-63546,63549,63643,63764,63897-63901,64113,64509,65387,65391,65555,65590,65650,65816,77555,77558-77560,77563-77565,77573 |
218 | 359 | Reverse-merged /trunk/extensions/CentralNotice/CentralNoticeBannerLogPager.php:r95524-95535 |
219 | 360 | Reverse-merged /branches/wmf-deployment/extensions/CentralNotice/CentralNoticeLogPager.php:r60970 |
220 | 361 | Reverse-merged /branches/wmf/1.16wmf4/extensions/CentralNotice/CentralNoticeLogPager.php:r67177,69199,76243,77266 |
221 | 362 | Reverse-merged /trunk/extensions/CentralNotice/CentralNoticeLogPager.php:r62820-67552,67557,67559-71720,71725-71731,71734-71739,71748-71753,71774-71997,72058-72131,72136-73830,73847,73850,73852,73855,73959,73963,73973,73980,73983,73991,73994-73995,74000-74321,74325-74406,75376-75470,75567,75643,75646,75674,75680,75726,75849,75889,75908,75973,76141,76145,76333,76347,76351,76356-76358,76361,76363,76462,76543,76763,77622-79761,79780,79783-80145,80147-80148,80150,80152-80602,81461-83563,83565-91117,91146,91368-92408,92767 |