• File: db-supported-charset.php
  • Full Path: /home/atelipy/www/wpmain/html-api/database-tests/db-supported-charset.php
  • File size: 5.24 KB
  • MIME-type: text/x-php
  • Charset: utf-8
<?php

/**
 *
 * @package templates/default
 */

use Duplicator\Installer\Utils\InstallerLinkManager;

defined('ABSPATH') || defined('DUPXABSPATH') || exit;

/* Variables */
/* @var $testResult int // DUPX_Validation_abstract_item::[LV_FAIL|LV_HARD_WARNING|...] */
/* @var $invalidCharsets string[] */
/* @var $invalidCollations string[] */
/* @var $charsetsList string[] */
/* @var $collationsList string[] */
/* @var $usedCharset string */
/* @var $usedCollate string */
/* @var $errorMessage string */



$statusClass = $testResult > DUPX_Validation_abstract_item::LV_SOFT_WARNING ? 'green' : 'red';

$dupDatabase          = basename(DUPX_Package::getSqlFilePath());
$dupDatabaseDupFolder = basename(DUPX_INIT) . '/' . $dupDatabase;
$invalidCheckboxTitle = '';
$subTitle             = '';

?>
<div class="sub-title">STATUS</div>
<p class="<?php echo $statusClass; ?>">
    <?php
    switch ($testResult) {
        case DUPX_Validation_abstract_item::LV_FAIL:
            ?>
            It is impossible to verify the list of charsets in the database.
            <?php
            break;
        case DUPX_Validation_abstract_item::LV_HARD_WARNING:
            if (!empty($invalidCharsets) && !empty($invalidCollations)) {
                $invalidCheckboxTitle = '"Legacy Character set" and "Legacy Collation"';
                $subTitle             = 'character set and collation';
            } elseif (!empty($invalidCharsets)) {
                $invalidCheckboxTitle = '"Legacy Character set"';
                $subTitle             = 'character set';
            } elseif (!empty($invalidCollations)) {
                $invalidCheckboxTitle = '"Legacy Collation"';
                $subTitle             = 'collation';
            }
            ?>
            <?php echo htmlentities($subTitle); ?> isn't supported on current database. 
            <?php echo htmlentities($invalidCheckboxTitle); ?>  will be replaced with default values.<br>
            <?php
            break;
        default:
            ?>
            Character set and Collate test passed! This database supports the required table character sets and collations.
            <?php
            break;
    }
    ?>
</p>
<?php if (!empty($errorMessage)) { ?>
    <p>
        Error detail: <span class="maroon" ><?php echo htmlentities($errorMessage); ?></span>
    </p>
<?php } ?>

<div class="sub-title">DETAILS</div>
<p>
    This test checks to make sure this database can support the character set and collations found in the 
    <b><?php echo htmlentities($dupDatabaseDupFolder); ?></b> script.
</p>

<table class="validation-charset-list margin-bottom-1">
    <tbody>
        <tr>
            <td colspan="2" >
                <b>Character set list</b>
            </td>
        </tr>
        <?php foreach ($charsetsList as $charset) { ?>
            <tr>
                <td>
                    <?php echo $charset; ?>
                </td>
                <td>
                    <?php $testLv = in_array($charset, $invalidCharsets) ? DUPX_Validation_abstract_item::LV_FAIL : DUPX_Validation_abstract_item::LV_PASS; ?>
                    <span class="status-badge <?php echo DUPX_Validation_abstract_item::resultLevelToBadgeClass($testLv); ?>">
                </td>
            </tr>
        <?php } ?>
        <tr>
            <td colspan="2" >
                <b>Collations list</b></b>
            </td>
        </tr>
        <?php foreach ($collationsList as $collate) { ?>
            <tr>
                <td><?php echo $collate; ?></td>
                <td>
                    <?php $testLv = in_array($collate, $invalidCollations) ? DUPX_Validation_abstract_item::LV_FAIL : DUPX_Validation_abstract_item::LV_PASS; ?>
                    <span class="status-badge <?php echo DUPX_Validation_abstract_item::resultLevelToBadgeClass($testLv); ?>">
                </td>
            </tr>
        <?php } ?>
    <tbody>
</table>
<?php if ($testResult == DUPX_Validation_abstract_item::LV_HARD_WARNING) { ?>
    <p>
        The database where the package was created has a <b><?php echo htmlentities($subTitle); ?></b> that is not supported on this server. 
        This issue happens when a site is moved from an newer version of MySQL to a older version of MySQL. 
        The recommended fix is to update MySQL on this server to support the character set that is failing below. 
        <b>If this is not an option for your host, then you can continue the installation. Invalid values will be replaced with the default values.</b>
        For more details about this issue and other details regarding this issue see the FAQ link below.
    </p>
<?php } ?>
<p>
    <i>Default charset and setting in current installation</i><br>
    <i>DB_CHARSET = <b><?php echo $usedCharset; ?></b></i><br>
    <i>DB_COLLATE = <b><?php echo $usedCollate; ?></b></i>
<p>

<div class="sub-title">TROUBLESHOOT</div>
<ul>
    <li>
        <i class="far fa-file-code"></i> 
        <a href="<?php echo InstallerLinkManager::getDocUrl('how-to-fix-database-write-issues', 'install', 'validation db charset'); ?>" target="_help">
            What is Compatibility mode & 'Unknown Collation' errors?
        </a>
    </li>
    <li>
        In case the default charset/collates are not the desired ones you can <b>change the setting</b> in the <b>advanced installation mode</b>.
    </li>
</ul>