Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 13
CRAP
0.00% covered (danger)
0.00%
0 / 77
WebInstallerPage
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 13
342
0.00% covered (danger)
0.00%
0 / 77
 execute
n/a
0 / 0
1
n/a
0 / 0
 __construct
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 2
 isSlow
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 2
 addHTML
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 2
 startForm
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 11
 endForm
0.00% covered (danger)
0.00%
0 / 1
30
0.00% covered (danger)
0.00%
0 / 35
 getName
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 2
 getId
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 2
 getVar
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 2
 setVar
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 2
 getFieldsetStart
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 2
 getFieldsetEnd
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 2
 startLiveBox
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 9
 endLiveBox
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 4
<?php
/**
 * Base code for web installer pages.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License along
 * with this program; if not, write to the Free Software Foundation, Inc.,
 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 * http://www.gnu.org/copyleft/gpl.html
 *
 * @file
 * @ingroup Installer
 */
/**
 * Abstract class to define pages for the web installer.
 *
 * @ingroup Installer
 * @since 1.17
 */
abstract class WebInstallerPage {
    /**
     * The WebInstaller object this WebInstallerPage belongs to.
     *
     * @var WebInstaller
     */
    public $parent;
    /**
     * @return string
     */
    abstract public function execute();
    /**
     * @param WebInstaller $parent
     */
    public function __construct( WebInstaller $parent ) {
        $this->parent = $parent;
    }
    /**
     * Is this a slow-running page in the installer? If so, WebInstaller will
     * set_time_limit(0) before calling execute(). Right now this only applies
     * to Install and Upgrade pages
     *
     * @return bool Always false in this default implementation.
     */
    public function isSlow() {
        return false;
    }
    /**
     * @param string $html
     */
    public function addHTML( $html ) {
        $this->parent->output->addHTML( $html );
    }
    public function startForm() {
        $this->addHTML(
            "<div class=\"config-section\">\n" .
            Html::openElement(
                'form',
                [
                    'method' => 'post',
                    'action' => $this->parent->getUrl( [ 'page' => $this->getName() ] )
                ]
            ) . "\n"
        );
    }
    /**
     * @param string|bool $continue
     * @param string|bool $back
     */
    public function endForm( $continue = 'continue', $back = 'back' ) {
        $s = "<div class=\"config-submit\">\n";
        $id = $this->getId();
        if ( $id === false ) {
            $s .= Html::hidden( 'lastPage', $this->parent->request->getVal( 'lastPage' ) );
        }
        if ( $continue ) {
            // Fake submit button for enter keypress (T28267)
            // Messages: config-continue, config-restart, config-regenerate
            $s .= Xml::submitButton(
                wfMessage( "config-$continue" )->text(),
                [
                    'name' => "enter-$continue",
                    'style' => 'width:0;border:0;height:0;padding:0'
                ]
            ) . "\n";
        }
        if ( $back ) {
            // Message: config-back
            $s .= Xml::submitButton(
                wfMessage( "config-$back" )->text(),
                [
                    'name' => "submit-$back",
                    'tabindex' => $this->parent->nextTabIndex()
                ]
            ) . "\n";
        }
        if ( $continue ) {
            // Messages: config-continue, config-restart, config-regenerate
            $s .= Xml::submitButton(
                wfMessage( "config-$continue" )->text(),
                [
                    'name' => "submit-$continue",
                    'tabindex' => $this->parent->nextTabIndex(),
                ]
            ) . "\n";
        }
        $s .= "</div></form></div>\n";
        $this->addHTML( $s );
    }
    /**
     * @return string
     */
    public function getName() {
        return str_replace( 'WebInstaller', '', static::class );
    }
    /**
     * @return string
     */
    protected function getId() {
        return array_search( $this->getName(), $this->parent->pageSequence );
    }
    /**
     * @param string $var
     * @param mixed|null $default
     *
     * @return mixed
     */
    public function getVar( $var, $default = null ) {
        return $this->parent->getVar( $var, $default );
    }
    /**
     * @param string $name
     * @param mixed $value
     */
    public function setVar( $name, $value ) {
        $this->parent->setVar( $name, $value );
    }
    /**
     * Get the starting tags of a fieldset.
     *
     * @param string $legend Message name
     *
     * @return string
     */
    protected function getFieldsetStart( $legend ) {
        return "\n<fieldset><legend>" . wfMessage( $legend )->escaped() . "</legend>\n";
    }
    /**
     * Get the end tag of a fieldset.
     *
     * @return string
     */
    protected function getFieldsetEnd() {
        return "</fieldset>\n";
    }
    /**
     * Opens a textarea used to display the progress of a long operation
     */
    protected function startLiveBox() {
        $this->addHTML(
            '<div id="config-spinner" style="display:none;">' .
            '<img src="images/ajax-loader.gif" /></div>' .
            '<script>jQuery( "#config-spinner" ).show();</script>' .
            '<div id="config-live-log">' .
            '<textarea name="LiveLog" rows="10" cols="30" readonly="readonly">'
        );
        $this->parent->output->flush();
    }
    /**
     * Opposite to WebInstallerPage::startLiveBox
     */
    protected function endLiveBox() {
        $this->addHTML( '</textarea></div>
<script>jQuery( "#config-spinner" ).hide()</script>' );
        $this->parent->output->flush();
    }
}