modifiedUser = $user; } /** * @return User */ public function getModifiedUser() { if ( $this->modifiedUser === null ) { return $this->getUser(); } else { return $this->modifiedUser; } } /** * Get extra parameters for the query string when redirecting after * successful save. * * @return array */ public function getExtraSuccessRedirectParameters() { return []; } /** * @param string $html * @return string */ function wrapForm( $html ) { $html = Xml::tags( 'div', [ 'id' => 'preferences' ], $html ); return parent::wrapForm( $html ); } /** * @return string */ function getButtons() { if ( !$this->getModifiedUser()->isAllowedAny( 'editmyprivateinfo', 'editmyoptions' ) ) { return ''; } $html = parent::getButtons(); if ( $this->getModifiedUser()->isAllowed( 'editmyoptions' ) ) { $t = $this->getTitle()->getSubpage( 'reset' ); $html .= new OOUI\ButtonWidget( [ 'infusable' => true, 'id' => 'mw-prefs-restoreprefs', 'label' => $this->msg( 'restoreprefs' )->text(), 'href' => $t->getLinkURL(), 'flags' => [ 'destructive' ], 'framed' => false, ] ); $html = Xml::tags( 'div', [ 'class' => 'mw-prefs-buttons' ], $html ); } return $html; } /** * Separate multi-option preferences into multiple preferences, since we * have to store them separately * @param array $data * @return array */ function filterDataForSubmit( $data ) { foreach ( $this->mFlatFields as $fieldname => $field ) { if ( $field instanceof HTMLNestedFilterable ) { $info = $field->mParams; $prefix = isset( $info['prefix'] ) ? $info['prefix'] : $fieldname; foreach ( $field->filterDataForSubmit( $data[$fieldname] ) as $key => $value ) { $data["$prefix$key"] = $value; } unset( $data[$fieldname] ); } } return $data; } /** * Get the whole body of the form. * @return string */ function getBody() { return $this->displaySection( $this->mFieldTree, '', 'mw-prefsection-' ); } /** * Get the "" for a given section key. Normally this is the * prefs-$key message but we'll allow extensions to override it. * @param string $key * @return string */ function getLegend( $key ) { $legend = parent::getLegend( $key ); Hooks::run( 'PreferencesGetLegend', [ $this, $key, &$legend ] ); return $legend; } /** * Get the keys of each top level preference section. * @return array of section keys */ function getPreferenceSections() { return array_keys( array_filter( $this->mFieldTree, 'is_array' ) ); } }