forked from LiveCarta/LiveCartaWP
Changed source root directory
This commit is contained in:
@@ -0,0 +1,313 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* controller step 0
|
||||
*
|
||||
* Standard: PSR-2
|
||||
*
|
||||
* @link http://www.php-fig.org/psr/psr-2 Full Documentation
|
||||
*
|
||||
* @package SC\DUPX
|
||||
*/
|
||||
|
||||
defined('ABSPATH') || defined('DUPXABSPATH') || exit;
|
||||
|
||||
use Duplicator\Installer\Utils\Log\Log;
|
||||
use Duplicator\Installer\Core\Params\PrmMng;
|
||||
use Duplicator\Installer\Utils\Tests\WP\TestsExecuter;
|
||||
use Duplicator\Libs\Snap\SnapJson;
|
||||
use Duplicator\Libs\Snap\SnapString;
|
||||
use Duplicator\Libs\Snap\SnapUtil;
|
||||
|
||||
final class DUPX_Ctrl_ajax
|
||||
{
|
||||
const DEBUG_AJAX_CALL_SLEEP = 0;
|
||||
const PREVENT_BRUTE_FORCE_ATTACK_SLEEP = 2;
|
||||
const AJAX_NAME = 'ajax_request';
|
||||
const ACTION_NAME = 'ajax_action';
|
||||
const TOKEN_NAME = 'ajax_csrf_token';
|
||||
// ACCEPTED ACTIONS
|
||||
const ACTION_INITPASS_CHECK = 'initpass';
|
||||
const ACTION_PROCEED_CONFIRM_DIALOG = 'proceed_confirm_dialog';
|
||||
const ACTION_EMAIL_SUBSCRIPTION = 'email_subscription';
|
||||
const ACTION_VALIDATE = 'validate';
|
||||
const ACTION_SET_PARAMS_S1 = 'sparam_s1';
|
||||
const ACTION_SET_PARAMS_S2 = 'sparam_s2';
|
||||
const ACTION_SET_PARAMS_S3 = 'sparam_s3';
|
||||
const ACTION_EXTRACTION = 'extract';
|
||||
const ACTION_DBINSTALL = 'dbinstall';
|
||||
const ACTION_WEBSITE_UPDATE = 'webupdate';
|
||||
const ACTION_PWD_CHECK = 'pwdcheck';
|
||||
const ACTION_FINAL_TESTS_PREPARE = 'finalpre';
|
||||
const ACTION_FINAL_TESTS_AFTER = 'finalafter';
|
||||
const ACTION_SET_AUTO_CLEAN_FILES = 'autoclean';
|
||||
|
||||
public static function ajaxActions()
|
||||
{
|
||||
static $actions = null;
|
||||
if (is_null($actions)) {
|
||||
$actions = array(
|
||||
self::ACTION_PROCEED_CONFIRM_DIALOG,
|
||||
self::ACTION_VALIDATE,
|
||||
self::ACTION_EMAIL_SUBSCRIPTION,
|
||||
self::ACTION_SET_PARAMS_S1,
|
||||
self::ACTION_SET_PARAMS_S2,
|
||||
self::ACTION_SET_PARAMS_S3,
|
||||
self::ACTION_EXTRACTION,
|
||||
self::ACTION_DBINSTALL,
|
||||
self::ACTION_WEBSITE_UPDATE,
|
||||
self::ACTION_PWD_CHECK,
|
||||
self::ACTION_FINAL_TESTS_PREPARE,
|
||||
self::ACTION_FINAL_TESTS_AFTER,
|
||||
self::ACTION_SET_AUTO_CLEAN_FILES
|
||||
);
|
||||
}
|
||||
return $actions;
|
||||
}
|
||||
|
||||
public static function controller()
|
||||
{
|
||||
$action = null;
|
||||
if (self::isAjax($action) === false) {
|
||||
return false;
|
||||
}
|
||||
|
||||
ob_start();
|
||||
|
||||
Log::info("\n" . '-------------------------' . "\n" . 'AJAX ACTION [' . $action . "] START");
|
||||
Log::infoObject('POST DATA: ', $_POST, Log::LV_DEBUG);
|
||||
|
||||
$jsonResult = array(
|
||||
'success' => true,
|
||||
'message' => '',
|
||||
"errorContent" => array(
|
||||
'pre' => '',
|
||||
'html' => ''
|
||||
),
|
||||
'trace' => '',
|
||||
'actionData' => null
|
||||
);
|
||||
|
||||
Log::setThrowExceptionOnError(true);
|
||||
|
||||
try {
|
||||
DUPX_Template::getInstance()->setTemplate(PrmMng::getInstance()->getValue(PrmMng::PARAM_TEMPLATE));
|
||||
$jsonResult['actionData'] = self::actions($action);
|
||||
} catch (Exception $e) {
|
||||
Log::logException($e);
|
||||
|
||||
if (SnapString::isHTML($e->getMessage())) {
|
||||
$message = $e->getMessage();
|
||||
} else {
|
||||
$message = DUPX_U::esc_html($e->getMessage());
|
||||
}
|
||||
|
||||
$jsonResult = array(
|
||||
'success' => false,
|
||||
'message' => $message,
|
||||
"errorContent" => array(
|
||||
'pre' => Log::getLogException($e),
|
||||
'html' => ''
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
$invalidOutput = SnapUtil::obCleanAll();
|
||||
ob_end_clean();
|
||||
if (strlen($invalidOutput) > 0) {
|
||||
Log::info('INVALID AJAX OUTPUT:' . "\n" . $invalidOutput . "\n---------------------------------");
|
||||
}
|
||||
|
||||
if ($jsonResult['success']) {
|
||||
Log::info('AJAX ACTION [' . $action . '] SUCCESS');
|
||||
} else {
|
||||
Log::info('AJAX ACTION [' . $action . '] FAIL, MESSAGE: ' . $jsonResult['message']);
|
||||
}
|
||||
|
||||
Log::info('-------------------------' . "\n");
|
||||
|
||||
if (!headers_sent()) {
|
||||
header('Content-Type: application/json');
|
||||
}
|
||||
echo SnapJson::jsonEncode($jsonResult);
|
||||
Log::close();
|
||||
// if is ajax always die;
|
||||
die();
|
||||
}
|
||||
|
||||
/**
|
||||
* ajax actions
|
||||
*
|
||||
* @param string $action
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
protected static function actions($action)
|
||||
{
|
||||
$actionData = null;
|
||||
|
||||
self::debugAjaxCallSleep();
|
||||
|
||||
switch ($action) {
|
||||
case self::ACTION_PWD_CHECK:
|
||||
$actionData = DUPX_Security::getInstance()->securityCheck();
|
||||
break;
|
||||
case self::ACTION_EMAIL_SUBSCRIPTION:
|
||||
$actionData = DUPX_Ctrl_Params::setParamEmail();
|
||||
break;
|
||||
case self::ACTION_PROCEED_CONFIRM_DIALOG:
|
||||
$vData = DUPX_Validation_database_service::getInstance();
|
||||
if (!$vData->getDbConnection()) {
|
||||
throw new Exception('Connection DB data isn\'t valid');
|
||||
}
|
||||
$actionData = dupxTplRender(
|
||||
'pages-parts/step1/proceed-confirm-dialog',
|
||||
array(
|
||||
'tableCount' => $vData->getDBActionAffectedTablesCount()
|
||||
),
|
||||
false
|
||||
);
|
||||
break;
|
||||
case self::ACTION_VALIDATE:
|
||||
DUP_Extraction::resetData();
|
||||
$actionData = DUPX_Validation_manager::getInstance()->getValidateData();
|
||||
if ($actionData['mainLevel'] <= DUPX_Validation_abstract_item::LV_FAIL) {
|
||||
sleep(self::PREVENT_BRUTE_FORCE_ATTACK_SLEEP);
|
||||
} else {
|
||||
DUPX_Ctrl_Params::setParamsAfterValidation();
|
||||
}
|
||||
$actionData['nextStepMessagesHtml'] = DUPX_NOTICE_MANAGER::getInstance()->nextStepMessages(true, false);
|
||||
|
||||
break;
|
||||
case self::ACTION_SET_PARAMS_S1:
|
||||
$valid = DUPX_Ctrl_Params::setParamsStep1();
|
||||
DUPX_NOTICE_MANAGER::getInstance()->nextStepLog(false);
|
||||
$nexStepNotices = DUPX_NOTICE_MANAGER::getInstance()->nextStepMessages(true, false);
|
||||
$actionData = array(
|
||||
'isValid' => $valid,
|
||||
'nextStepMessagesHtml' => $nexStepNotices
|
||||
);
|
||||
break;
|
||||
case self::ACTION_SET_PARAMS_S2:
|
||||
$valid = DUPX_Ctrl_Params::setParamsStep2();
|
||||
DUPX_NOTICE_MANAGER::getInstance()->nextStepLog(false);
|
||||
$nexStepNotices = DUPX_NOTICE_MANAGER::getInstance()->nextStepMessages(true, false);
|
||||
$actionData = array(
|
||||
'isValid' => $valid,
|
||||
'nextStepMessagesHtml' => $nexStepNotices
|
||||
);
|
||||
break;
|
||||
case self::ACTION_SET_PARAMS_S3:
|
||||
$valid = DUPX_Ctrl_Params::setParamsStep3();
|
||||
DUPX_NOTICE_MANAGER::getInstance()->nextStepLog(false);
|
||||
$nexStepNotices = DUPX_NOTICE_MANAGER::getInstance()->nextStepMessages(true, false);
|
||||
$actionData = array(
|
||||
'isValid' => $valid,
|
||||
'nextStepMessagesHtml' => $nexStepNotices
|
||||
);
|
||||
break;
|
||||
case self::ACTION_EXTRACTION:
|
||||
$extractor = DUP_Extraction::getInstance();
|
||||
DUPX_U::maintenanceMode(true);
|
||||
$extractor->runExtraction();
|
||||
$actionData = $extractor->finishExtraction();
|
||||
break;
|
||||
case self::ACTION_DBINSTALL:
|
||||
$dbInstall = DUPX_DBInstall::getInstance();
|
||||
$actionData = $dbInstall->deploy();
|
||||
DUPX_Plugins_Manager::getInstance()->preViewChecks();
|
||||
break;
|
||||
case self::ACTION_WEBSITE_UPDATE:
|
||||
$actionData = DUPX_S3_Funcs::getInstance()->updateWebsite();
|
||||
break;
|
||||
case self::ACTION_FINAL_TESTS_PREPARE:
|
||||
$actionData = TestsExecuter::preTestPrepare();
|
||||
break;
|
||||
case self::ACTION_FINAL_TESTS_AFTER:
|
||||
$actionData = TestsExecuter::afterTestClean();
|
||||
break;
|
||||
case self::ACTION_SET_AUTO_CLEAN_FILES:
|
||||
if (DUPX_Ctrl_Params::setParamAutoClean()) {
|
||||
$valid = DUPX_S3_Funcs::getInstance()->duplicatorMigrationInfoSet();
|
||||
} else {
|
||||
$valid = false;
|
||||
}
|
||||
DUPX_NOTICE_MANAGER::getInstance()->nextStepLog(false);
|
||||
$nexStepNotices = DUPX_NOTICE_MANAGER::getInstance()->nextStepMessages(true, false);
|
||||
$actionData = array(
|
||||
'isValid' => $valid,
|
||||
'nextStepMessagesHtml' => $nexStepNotices
|
||||
);
|
||||
break;
|
||||
default:
|
||||
throw new Exception('Invalid ajax action');
|
||||
}
|
||||
return $actionData;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if current call is ajax
|
||||
*
|
||||
* @param string $action if is ajax $action is set with action string
|
||||
*
|
||||
* @return bool true if is ajax
|
||||
*/
|
||||
public static function isAjax(&$action = null)
|
||||
{
|
||||
static $isAjaxAction = null;
|
||||
if (is_null($isAjaxAction)) {
|
||||
$isAjaxAction = array(
|
||||
'isAjax' => false,
|
||||
'action' => false
|
||||
);
|
||||
|
||||
$argsInput = SnapUtil::filterInputRequestArray(array(
|
||||
PrmMng::PARAM_CTRL_ACTION => array(
|
||||
'filter' => FILTER_SANITIZE_SPECIAL_CHARS,
|
||||
'flags' => FILTER_REQUIRE_SCALAR | FILTER_FLAG_STRIP_HIGH,
|
||||
'options' => array('default' => '')
|
||||
),
|
||||
self::ACTION_NAME => array(
|
||||
'filter' => FILTER_SANITIZE_SPECIAL_CHARS,
|
||||
'flags' => FILTER_REQUIRE_SCALAR | FILTER_FLAG_STRIP_HIGH,
|
||||
'options' => array('default' => false)
|
||||
)
|
||||
));
|
||||
|
||||
if ($argsInput[PrmMng::PARAM_CTRL_ACTION] !== 'ajax' || $argsInput[self::ACTION_NAME] === false) {
|
||||
$isAjaxAction['isAjax'] = false;
|
||||
} else {
|
||||
if (($isAjaxAction['isAjax'] = in_array($argsInput[self::ACTION_NAME], self::ajaxActions()))) {
|
||||
$isAjaxAction['action'] = $argsInput[self::ACTION_NAME];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($isAjaxAction['isAjax']) {
|
||||
$action = $isAjaxAction['action'];
|
||||
}
|
||||
return $isAjaxAction['isAjax'];
|
||||
}
|
||||
|
||||
public static function getTokenKeyByAction($action)
|
||||
{
|
||||
return self::ACTION_NAME . $action;
|
||||
}
|
||||
|
||||
public static function getTokenFromInput()
|
||||
{
|
||||
return SnapUtil::filterInputDefaultSanitizeString(INPUT_POST, self::TOKEN_NAME, false);
|
||||
}
|
||||
|
||||
public static function generateToken($action)
|
||||
{
|
||||
return DUPX_CSRF::generate(self::getTokenKeyByAction($action));
|
||||
}
|
||||
|
||||
protected static function debugAjaxCallSleep()
|
||||
{
|
||||
if (self::DEBUG_AJAX_CALL_SLEEP > 0) {
|
||||
sleep(self::DEBUG_AJAX_CALL_SLEEP);
|
||||
}
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,442 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Controller params manager
|
||||
*
|
||||
* Standard: PSR-2
|
||||
*
|
||||
* @link http://www.php-fig.org/psr/psr-2 Full Documentation
|
||||
*
|
||||
* @package SC\DUPX\U
|
||||
*/
|
||||
|
||||
defined('ABSPATH') || defined('DUPXABSPATH') || exit;
|
||||
|
||||
use Duplicator\Installer\Utils\Log\Log;
|
||||
use Duplicator\Installer\Core\Params\Descriptors\ParamDescEngines;
|
||||
use Duplicator\Installer\Core\Params\Descriptors\ParamDescDatabase;
|
||||
use Duplicator\Installer\Core\Params\PrmMng;
|
||||
use Duplicator\Installer\Core\Params\Items\ParamForm;
|
||||
|
||||
/**
|
||||
* singleton class
|
||||
*/
|
||||
final class DUPX_Ctrl_Params
|
||||
{
|
||||
/** @var bool this variable becomes false if there was something wrong with the validation but the basic is true */
|
||||
private static $paramsValidated = true;
|
||||
|
||||
/**
|
||||
* returns false if at least one param has not been validated
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public static function isParamsValidated()
|
||||
{
|
||||
return self::$paramsValidated;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set base params
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public static function setParamsBase()
|
||||
{
|
||||
Log::info('CTRL PARAMS BASE', Log::LV_DETAILED);
|
||||
$paramsManager = PrmMng::getInstance();
|
||||
$paramsManager->setValueFromInput(PrmMng::PARAM_CTRL_ACTION, ParamForm::INPUT_REQUEST);
|
||||
$paramsManager->setValueFromInput(PrmMng::PARAM_STEP_ACTION, ParamForm::INPUT_REQUEST);
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public static function setParamsStep0()
|
||||
{
|
||||
Log::info('CTRL PARAMS S0', Log::LV_DETAILED);
|
||||
Log::info('REQUEST: ' . Log::v2str($_REQUEST), Log::LV_HARD_DEBUG);
|
||||
$paramsManager = PrmMng::getInstance();
|
||||
|
||||
DUPX_ArchiveConfig::getInstance()->setNewPathsAndUrlParamsByMainNew();
|
||||
DUPX_Custom_Host_Manager::getInstance()->setManagedHostParams();
|
||||
|
||||
$paramsManager->save();
|
||||
return self::$paramsValidated;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set param email
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public static function setParamEmail()
|
||||
{
|
||||
Log::info('CTRL PARAM EMAIL', Log::LV_DETAILED);
|
||||
|
||||
PrmMng::getInstance()->setValueFromInput(PrmMng::PARAM_SUBSCRIBE_EMAIL, ParamForm::INPUT_REQUEST);
|
||||
$resposne = DUPX_HTTP::post(DUPX_Constants::URL_SUBSCRIBE, array(
|
||||
'email' => PrmMng::getInstance()->getValue(PrmMng::PARAM_SUBSCRIBE_EMAIL)
|
||||
));
|
||||
|
||||
Log::infoObject('response', $resposne);
|
||||
|
||||
PrmMng::getInstance()->save();
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public static function setParamsStep1()
|
||||
{
|
||||
Log::info('CTRL PARAMS S1', Log::LV_DETAILED);
|
||||
Log::info('REQUEST: ' . Log::v2str($_REQUEST), Log::LV_HARD_DEBUG);
|
||||
$archive_config = DUPX_ArchiveConfig::getInstance();
|
||||
$paramsManager = PrmMng::getInstance();
|
||||
$paramsManager->setValueFromInput(PrmMng::PARAM_LOGGING, ParamForm::INPUT_POST);
|
||||
Log::setLogLevel();
|
||||
|
||||
$readParamsList = array(
|
||||
PrmMng::PARAM_INST_TYPE,
|
||||
PrmMng::PARAM_PATH_NEW,
|
||||
PrmMng::PARAM_URL_NEW,
|
||||
PrmMng::PARAM_PATH_WP_CORE_NEW,
|
||||
PrmMng::PARAM_SITE_URL,
|
||||
PrmMng::PARAM_PATH_CONTENT_NEW,
|
||||
PrmMng::PARAM_URL_CONTENT_NEW,
|
||||
PrmMng::PARAM_PATH_UPLOADS_NEW,
|
||||
PrmMng::PARAM_URL_UPLOADS_NEW,
|
||||
PrmMng::PARAM_PATH_PLUGINS_NEW,
|
||||
PrmMng::PARAM_URL_PLUGINS_NEW,
|
||||
PrmMng::PARAM_PATH_MUPLUGINS_NEW,
|
||||
PrmMng::PARAM_URL_MUPLUGINS_NEW,
|
||||
PrmMng::PARAM_ARCHIVE_ACTION,
|
||||
PrmMng::PARAM_ARCHIVE_ENGINE,
|
||||
PrmMng::PARAM_ARCHIVE_ENGINE_SKIP_WP_FILES,
|
||||
PrmMng::PARAM_DB_ENGINE,
|
||||
PrmMng::PARAM_REPLACE_ENGINE,
|
||||
PrmMng::PARAM_USERS_MODE,
|
||||
PrmMng::PARAM_SET_FILE_PERMS,
|
||||
PrmMng::PARAM_SET_DIR_PERMS,
|
||||
PrmMng::PARAM_FILE_PERMS_VALUE,
|
||||
PrmMng::PARAM_DIR_PERMS_VALUE,
|
||||
PrmMng::PARAM_SAFE_MODE,
|
||||
PrmMng::PARAM_WP_CONFIG,
|
||||
PrmMng::PARAM_HTACCESS_CONFIG,
|
||||
PrmMng::PARAM_OTHER_CONFIG,
|
||||
PrmMng::PARAM_FILE_TIME,
|
||||
PrmMng::PARAM_REMOVE_RENDUNDANT,
|
||||
PrmMng::PARAM_BLOGNAME,
|
||||
PrmMng::PARAM_ACCEPT_TERM_COND,
|
||||
PrmMng::PARAM_ZIP_THROTTLING
|
||||
);
|
||||
|
||||
foreach ($readParamsList as $cParam) {
|
||||
if ($paramsManager->setValueFromInput($cParam, ParamForm::INPUT_POST, false, true) === false) {
|
||||
self::$paramsValidated = false;
|
||||
}
|
||||
}
|
||||
|
||||
$paramsManager->setValue(PrmMng::PARAM_REPLACE_ENGINE, ParamDescEngines::getReplaceEngineModeFromParams());
|
||||
$paramsManager->setValue(PrmMng::PARAM_DB_CHUNK, ParamDescEngines::getDbChunkFromParams());
|
||||
|
||||
self::setParamsDatabase();
|
||||
|
||||
if (self::$paramsValidated) {
|
||||
self::resetUrlAndPathsFromOverwriteData();
|
||||
|
||||
Log::info('UPDATE PARAMS FROM SUBSITE ID', Log::LV_DEBUG);
|
||||
Log::info('NETWORK INSTALL: false', Log::LV_DEBUG);
|
||||
|
||||
// UPDATE ACTIVE PARAMS BY SUBSITE ID
|
||||
$activePlugins = DUPX_Plugins_Manager::getInstance()->getDefaultActivePluginsList();
|
||||
$paramsManager->setValue(PrmMng::PARAM_PLUGINS, $activePlugins);
|
||||
|
||||
// IF SAFE MODE DISABLE ALL PLUGINS
|
||||
if ($paramsManager->getValue(PrmMng::PARAM_SAFE_MODE) > 0) {
|
||||
$forceDisable = DUPX_Plugins_Manager::getInstance()->getAllPluginsSlugs();
|
||||
|
||||
// EXCLUDE DUPLICATOR PRO
|
||||
if (($key = array_search(DUPX_Plugins_Manager::SLUG_DUPLICATOR_PRO, $forceDisable)) !== false) {
|
||||
unset($forceDisable[$key]);
|
||||
}
|
||||
|
||||
$paramsManager->setValue(PrmMng::PARAM_FORCE_DIABLE_PLUGINS, $forceDisable);
|
||||
}
|
||||
}
|
||||
|
||||
// reload state after new path and new url
|
||||
DUPX_InstallerState::getInstance()->checkState(false, false);
|
||||
$paramsManager->save();
|
||||
return self::$paramsValidated;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public static function setParamsAfterValidation()
|
||||
{
|
||||
Log::info("\nCTRL PARAMS AFTER VALIDATION");
|
||||
$paramsManager = PrmMng::getInstance();
|
||||
|
||||
$paramsManager->setValue(PrmMng::PARAM_WP_ADDON_SITES_PATHS, DUPX_Validation_test_addon_sites::getAddonsListsFolders());
|
||||
ParamDescDatabase::updateCharsetAndCollateByDatabaseSettings();
|
||||
|
||||
$configsChecks = DUPX_Validation_test_iswritable_configs::configsWritableChecks();
|
||||
|
||||
if ($configsChecks['wpconfig'] === false) {
|
||||
Log::info("WP-CONFIG ISN\'T READABLE SO SET noting ON " . PrmMng::PARAM_WP_CONFIG . ' PARAM');
|
||||
$paramsManager->setValue(PrmMng::PARAM_WP_CONFIG, 'nothing');
|
||||
$paramsManager->setFormStatus(PrmMng::PARAM_WP_CONFIG, ParamForm::STATUS_INFO_ONLY);
|
||||
|
||||
Log::info('SET AND DISABLE ALL DB PARAMS');
|
||||
$overwriteData = $paramsManager->getValue(PrmMng::PARAM_OVERWRITE_SITE_DATA);
|
||||
$paramsManager->setValue(PrmMng::PARAM_DB_HOST, $overwriteData['dbhost']);
|
||||
$paramsManager->setFormStatus(PrmMng::PARAM_DB_HOST, ParamForm::STATUS_INFO_ONLY);
|
||||
$paramsManager->setValue(PrmMng::PARAM_DB_NAME, $overwriteData['dbname']);
|
||||
$paramsManager->setFormStatus(PrmMng::PARAM_DB_NAME, ParamForm::STATUS_INFO_ONLY);
|
||||
$paramsManager->setValue(PrmMng::PARAM_DB_USER, $overwriteData['dbuser']);
|
||||
$paramsManager->setFormStatus(PrmMng::PARAM_DB_USER, ParamForm::STATUS_INFO_ONLY);
|
||||
$paramsManager->setValue(PrmMng::PARAM_DB_PASS, $overwriteData['dbpass']);
|
||||
$paramsManager->setFormStatus(PrmMng::PARAM_DB_PASS, ParamForm::STATUS_INFO_ONLY);
|
||||
$paramsManager->setValue(PrmMng::PARAM_DB_TABLE_PREFIX, $overwriteData['table_prefix']);
|
||||
$paramsManager->setFormStatus(PrmMng::PARAM_DB_TABLE_PREFIX, ParamForm::STATUS_INFO_ONLY);
|
||||
}
|
||||
|
||||
if ($configsChecks['htaccess'] === false) {
|
||||
Log::info("HTACCESS ISN\'T READABLE SO SET noting ON " . PrmMng::PARAM_HTACCESS_CONFIG . ' PARAM');
|
||||
$paramsManager->setValue(PrmMng::PARAM_HTACCESS_CONFIG, 'nothing');
|
||||
$paramsManager->setFormStatus(PrmMng::PARAM_HTACCESS_CONFIG, ParamForm::STATUS_INFO_ONLY);
|
||||
}
|
||||
|
||||
if ($configsChecks['other'] === false) {
|
||||
Log::info("OTHER CONFIGS ISN\'T READABLE SO SET noting ON " . PrmMng::PARAM_OTHER_CONFIG . ' PARAM');
|
||||
$paramsManager->setValue(PrmMng::PARAM_OTHER_CONFIG, 'nothing');
|
||||
$paramsManager->setFormStatus(PrmMng::PARAM_OTHER_CONFIG, ParamForm::STATUS_INFO_ONLY);
|
||||
}
|
||||
|
||||
$paramsManager->save();
|
||||
|
||||
return self::$paramsValidated;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
protected static function setParamsDatabase()
|
||||
{
|
||||
$paramsManager = PrmMng::getInstance();
|
||||
|
||||
$paramsManager->setValueFromInput(PrmMng::PARAM_DB_VIEW_MODE, ParamForm::INPUT_POST);
|
||||
|
||||
switch ($paramsManager->getValue(PrmMng::PARAM_DB_VIEW_MODE)) {
|
||||
case 'basic':
|
||||
case 'cpnl':
|
||||
$readParamsList = array(
|
||||
PrmMng::PARAM_DB_ACTION,
|
||||
PrmMng::PARAM_DB_HOST,
|
||||
PrmMng::PARAM_DB_NAME,
|
||||
PrmMng::PARAM_DB_USER,
|
||||
PrmMng::PARAM_DB_PASS
|
||||
);
|
||||
foreach ($readParamsList as $cParam) {
|
||||
if ($paramsManager->setValueFromInput($cParam, ParamForm::INPUT_POST, false, true) === false) {
|
||||
self::$paramsValidated = false;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
$readParamsList = array(
|
||||
PrmMng::PARAM_DB_TABLE_PREFIX,
|
||||
PrmMng::PARAM_DB_VIEW_CREATION,
|
||||
PrmMng::PARAM_DB_PROC_CREATION,
|
||||
PrmMng::PARAM_DB_FUNC_CREATION,
|
||||
PrmMng::PARAM_DB_REMOVE_DEFINER,
|
||||
PrmMng::PARAM_DB_SPLIT_CREATES,
|
||||
PrmMng::PARAM_DB_MYSQL_MODE,
|
||||
PrmMng::PARAM_DB_MYSQL_MODE_OPTS
|
||||
);
|
||||
|
||||
foreach ($readParamsList as $cParam) {
|
||||
if ($paramsManager->setValueFromInput($cParam, ParamForm::INPUT_POST, false, true) === false) {
|
||||
self::$paramsValidated = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (
|
||||
DUPX_Validation_database_service::getInstance()->caseSensitiveTablesValue() !== 0
|
||||
&& ($redundantTables = DUPX_ArchiveConfig::getInstance()->getRedundantDuplicateTableNames()) !== array()
|
||||
) {
|
||||
$defaultTables = DUPX_DB_Tables::getInstance()->getFilteredParamValue($redundantTables);
|
||||
} else {
|
||||
$defaultTables = DUPX_DB_Tables::getInstance()->getDefaultParamValue();
|
||||
}
|
||||
|
||||
if ($paramsManager->setValue(PrmMng::PARAM_DB_TABLES, $defaultTables) === false) {
|
||||
self::$paramsValidated = false;
|
||||
}
|
||||
|
||||
return self::$paramsValidated;
|
||||
}
|
||||
|
||||
/**
|
||||
* resets the original values in case of D&G import
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
protected static function resetUrlAndPathsFromOverwriteData()
|
||||
{
|
||||
if (!DUPX_InstallerState::isImportFromBackendMode()) {
|
||||
return;
|
||||
}
|
||||
|
||||
$paramsManager = PrmMng::getInstance();
|
||||
$overwriteData = $paramsManager->getValue(PrmMng::PARAM_OVERWRITE_SITE_DATA);
|
||||
|
||||
if (!isset($overwriteData['urls']['home']) || !isset($overwriteData['paths']['home'])) {
|
||||
return;
|
||||
}
|
||||
|
||||
$paramsManager->setValue(PrmMng::PARAM_URL_NEW, $overwriteData['urls']['home']);
|
||||
$paramsManager->setValue(PrmMng::PARAM_PATH_NEW, $overwriteData['paths']['home']);
|
||||
|
||||
$paramsManager->setValue(PrmMng::PARAM_SITE_URL, $overwriteData['urls']['abs']);
|
||||
$paramsManager->setValue(PrmMng::PARAM_PATH_WP_CORE_NEW, $overwriteData['paths']['abs']);
|
||||
|
||||
$paramsManager->setValue(PrmMng::PARAM_URL_UPLOADS_NEW, $overwriteData['urls']['uploads']);
|
||||
$paramsManager->setValue(PrmMng::PARAM_PATH_UPLOADS_NEW, $overwriteData['paths']['uploads']);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public static function setParamsStep2()
|
||||
{
|
||||
Log::info('CTRL PARAMS S2', Log::LV_DETAILED);
|
||||
Log::info('REQUEST: ' . Log::v2str($_REQUEST), Log::LV_HARD_DEBUG);
|
||||
$paramsManager = PrmMng::getInstance();
|
||||
|
||||
$readParamsList = array(
|
||||
PrmMng::PARAM_DB_CHARSET,
|
||||
PrmMng::PARAM_DB_COLLATE,
|
||||
PrmMng::PARAM_DB_TABLES
|
||||
);
|
||||
|
||||
foreach ($readParamsList as $cParam) {
|
||||
if ($paramsManager->setValueFromInput($cParam, ParamForm::INPUT_POST, false, true) === false) {
|
||||
self::$paramsValidated = false;
|
||||
}
|
||||
}
|
||||
|
||||
$paramsManager->save();
|
||||
return self::$paramsValidated;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public static function setParamsStep3()
|
||||
{
|
||||
Log::info('CTRL PARAMS S3', Log::LV_DETAILED);
|
||||
Log::info('REQUEST: ' . Log::v2str($_REQUEST), Log::LV_HARD_DEBUG);
|
||||
|
||||
$paramsManager = PrmMng::getInstance();
|
||||
|
||||
$readParamsList = array(
|
||||
PrmMng::PARAM_EMAIL_REPLACE,
|
||||
PrmMng::PARAM_FULL_SEARCH,
|
||||
PrmMng::PARAM_SKIP_PATH_REPLACE,
|
||||
PrmMng::PARAM_POSTGUID,
|
||||
PrmMng::PARAM_MAX_SERIALIZE_CHECK,
|
||||
PrmMng::PARAM_PLUGINS,
|
||||
PrmMng::PARAM_WP_CONF_DISALLOW_FILE_EDIT,
|
||||
PrmMng::PARAM_WP_CONF_DISALLOW_FILE_MODS,
|
||||
PrmMng::PARAM_WP_CONF_AUTOSAVE_INTERVAL,
|
||||
PrmMng::PARAM_WP_CONF_WP_POST_REVISIONS,
|
||||
PrmMng::PARAM_WP_CONF_FORCE_SSL_ADMIN,
|
||||
PrmMng::PARAM_WP_CONF_IMAGE_EDIT_OVERWRITE,
|
||||
PrmMng::PARAM_GEN_WP_AUTH_KEY,
|
||||
PrmMng::PARAM_WP_CONF_AUTOMATIC_UPDATER_DISABLED,
|
||||
PrmMng::PARAM_WP_CONF_WP_AUTO_UPDATE_CORE,
|
||||
PrmMng::PARAM_WP_CONF_WP_CACHE,
|
||||
PrmMng::PARAM_WP_CONF_WPCACHEHOME,
|
||||
PrmMng::PARAM_WP_CONF_WP_DEBUG,
|
||||
PrmMng::PARAM_WP_CONF_WP_DEBUG_LOG,
|
||||
PrmMng::PARAM_WP_CONF_WP_DISABLE_FATAL_ERROR_HANDLER,
|
||||
PrmMng::PARAM_WP_CONF_WP_DEBUG_DISPLAY,
|
||||
PrmMng::PARAM_WP_CONF_SCRIPT_DEBUG,
|
||||
PrmMng::PARAM_WP_CONF_CONCATENATE_SCRIPTS,
|
||||
PrmMng::PARAM_WP_CONF_SAVEQUERIES,
|
||||
PrmMng::PARAM_WP_CONF_ALTERNATE_WP_CRON,
|
||||
PrmMng::PARAM_WP_CONF_DISABLE_WP_CRON,
|
||||
PrmMng::PARAM_WP_CONF_WP_CRON_LOCK_TIMEOUT,
|
||||
PrmMng::PARAM_WP_CONF_EMPTY_TRASH_DAYS,
|
||||
PrmMng::PARAM_WP_CONF_COOKIE_DOMAIN,
|
||||
PrmMng::PARAM_WP_CONF_WP_MEMORY_LIMIT,
|
||||
PrmMng::PARAM_WP_CONF_WP_MAX_MEMORY_LIMIT,
|
||||
PrmMng::PARAM_WP_CONF_WP_TEMP_DIR,
|
||||
PrmMng::PARAM_WP_CONF_MYSQL_CLIENT_FLAGS,
|
||||
PrmMng::PARAM_USERS_PWD_RESET,
|
||||
PrmMng::PARAM_WP_ADMIN_CREATE_NEW
|
||||
);
|
||||
|
||||
foreach ($readParamsList as $cParam) {
|
||||
if ($paramsManager->setValueFromInput($cParam, ParamForm::INPUT_POST, false, true) === false) {
|
||||
self::$paramsValidated = false;
|
||||
}
|
||||
}
|
||||
|
||||
if ($paramsManager->getValue(PrmMng::PARAM_WP_ADMIN_CREATE_NEW)) {
|
||||
$readParamsList = array(
|
||||
PrmMng::PARAM_WP_ADMIN_NAME,
|
||||
PrmMng::PARAM_WP_ADMIN_PASSWORD,
|
||||
PrmMng::PARAM_WP_ADMIN_MAIL,
|
||||
PrmMng::PARAM_WP_ADMIN_NICKNAME,
|
||||
PrmMng::PARAM_WP_ADMIN_FIRST_NAME,
|
||||
PrmMng::PARAM_WP_ADMIN_LAST_NAME
|
||||
);
|
||||
|
||||
foreach ($readParamsList as $cParam) {
|
||||
if ($paramsManager->setValueFromInput($cParam, ParamForm::INPUT_POST, false, true) === false) {
|
||||
self::$paramsValidated = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (DUPX_DB_Functions::getInstance()->checkIfUserNameExists($paramsManager->getValue(PrmMng::PARAM_WP_ADMIN_NAME))) {
|
||||
self::$paramsValidated = false;
|
||||
DUPX_NOTICE_MANAGER::getInstance()->addNextStepNotice(array(
|
||||
'shortMsg' => 'The user ' . $paramsManager->getValue(PrmMng::PARAM_WP_ADMIN_NAME) . ' can\'t be created, already exists',
|
||||
'level' => DUPX_NOTICE_ITEM::CRITICAL,
|
||||
'longMsg' => 'Please insert another new user login name',
|
||||
'longMsgMode' => DUPX_NOTICE_ITEM::MSG_MODE_HTML
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
$paramsManager->save();
|
||||
return self::$paramsValidated;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public static function setParamAutoClean()
|
||||
{
|
||||
$paramsManager = PrmMng::getInstance();
|
||||
if ($paramsManager->setValueFromInput(PrmMng::PARAM_AUTO_CLEAN_INSTALLER_FILES, ParamForm::INPUT_POST, false, true) === false) {
|
||||
self::$paramsValidated = false;
|
||||
}
|
||||
$paramsManager->save();
|
||||
return self::$paramsValidated;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,95 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* controller step 0
|
||||
*
|
||||
* Standard: PSR-2
|
||||
*
|
||||
* @link http://www.php-fig.org/psr/psr-2 Full Documentation
|
||||
*
|
||||
* @package SC\DUPX
|
||||
*/
|
||||
|
||||
defined('ABSPATH') || defined('DUPXABSPATH') || exit;
|
||||
|
||||
use Duplicator\Installer\Utils\Log\Log;
|
||||
use Duplicator\Installer\Core\Params\PrmMng;
|
||||
|
||||
final class DUPX_Ctrl_S0
|
||||
{
|
||||
public static function stepHeaderLog()
|
||||
{
|
||||
$archive_path = DUPX_Security::getInstance()->getArchivePath();
|
||||
$paramsManager = PrmMng::getInstance();
|
||||
$archiveConfig = DUPX_ArchiveConfig::getInstance();
|
||||
$labelPadSize = 20;
|
||||
|
||||
Log::info("INSTALLER INFO\n");
|
||||
Log::info(str_pad('TEMPLATE', $labelPadSize, '_', STR_PAD_RIGHT) . ': ' . Log::v2str($paramsManager->getValue(PrmMng::PARAM_TEMPLATE)));
|
||||
Log::info(str_pad('SECURE MODE', $labelPadSize, '_', STR_PAD_RIGHT) . ': ' . Log::v2str(DUPX_Security::getInstance()->getSecurityType()));
|
||||
Log::info(str_pad('URL PLUGINS', $labelPadSize, '_', STR_PAD_RIGHT) . ': ' . $archiveConfig->getRealValue('pluginsUrl'));
|
||||
Log::info(str_pad('VALIDATE ON START', $labelPadSize, '_', STR_PAD_RIGHT) . ': ' . Log::v2str($paramsManager->getValue(PrmMng::PARAM_VALIDATION_ACTION_ON_START)));
|
||||
Log::info(str_pad('PATH_NEW', $labelPadSize, '_', STR_PAD_RIGHT) . ': ' . Log::v2str($paramsManager->getValue(PrmMng::PARAM_PATH_NEW)));
|
||||
Log::info(str_pad('URL_NEW', $labelPadSize, '_', STR_PAD_RIGHT) . ': ' . Log::v2str($paramsManager->getValue(PrmMng::PARAM_URL_NEW)));
|
||||
Log::info("********************************************************************************");
|
||||
|
||||
if (DUPX_InstallerState::isImportFromBackendMode()) {
|
||||
$overwriteData = $paramsManager->getValue(PrmMng::PARAM_OVERWRITE_SITE_DATA);
|
||||
Log::info("IMPORTER INFO\n");
|
||||
Log::info(str_pad('WP VERSION ', $labelPadSize, '_', STR_PAD_RIGHT) . ': ' . (isset($overwriteData['wpVersion']) ? $overwriteData['wpVersion'] : 'unknown'));
|
||||
Log::info(str_pad('DUP VERSION ', $labelPadSize, '_', STR_PAD_RIGHT) . ': ' . (isset($overwriteData['dupVersion']) ? $overwriteData['dupVersion'] : 'unknown'));
|
||||
Log::info(str_pad('LICENSE', $labelPadSize, '_', STR_PAD_RIGHT) . ': ' . 'Free version');
|
||||
Log::info("********************************************************************************");
|
||||
}
|
||||
|
||||
$log = '';
|
||||
$log .= "ARCHIVE INFO\n\n";
|
||||
$log .= str_pad('ARCHIVE NAME', $labelPadSize, '_', STR_PAD_RIGHT) . ': ' . Log::v2str($archive_path) . "\n";
|
||||
$log .= str_pad('ARCHIVE SIZE', $labelPadSize, '_', STR_PAD_RIGHT) . ': ' . DUPX_U::readableByteSize(DUPX_Conf_Utils::archiveSize()) . "\n";
|
||||
$log .= str_pad('CREATED', $labelPadSize, '_', STR_PAD_RIGHT) . ': ' . $archiveConfig->created . "\n";
|
||||
$log .= str_pad('WP VERSION', $labelPadSize, '_', STR_PAD_RIGHT) . ': ' . $archiveConfig->version_wp . "\n";
|
||||
$log .= str_pad('DUP VERSION', $labelPadSize, '_', STR_PAD_RIGHT) . ': ' . $archiveConfig->version_dup . "\n";
|
||||
$log .= str_pad('LICENSE', $labelPadSize, '_', STR_PAD_RIGHT) . ': ' . 'Free version' . "\n";
|
||||
$log .= str_pad('DB VERSION', $labelPadSize, '_', STR_PAD_RIGHT) . ': ' . $archiveConfig->version_db . "\n";
|
||||
$log .= str_pad('DB FILE SIZE', $labelPadSize, '_', STR_PAD_RIGHT) . ': ' . DUPX_U::readableByteSize($archiveConfig->dbInfo->tablesSizeOnDisk) . "\n";
|
||||
$log .= str_pad('DB TABLES', $labelPadSize, '_', STR_PAD_RIGHT) . ': ' . $archiveConfig->dbInfo->tablesFinalCount . "\n";
|
||||
$log .= str_pad('DB ROWS', $labelPadSize, '_', STR_PAD_RIGHT) . ': ' . $archiveConfig->dbInfo->tablesRowCount . "\n";
|
||||
$log .= str_pad('URL HOME', $labelPadSize, '_', STR_PAD_RIGHT) . ': ' . $archiveConfig->getRealValue('homeUrl') . "\n";
|
||||
$log .= str_pad('URL CORE', $labelPadSize, '_', STR_PAD_RIGHT) . ': ' . $archiveConfig->getRealValue('siteUrl') . "\n";
|
||||
$log .= str_pad('URL CONTENT', $labelPadSize, '_', STR_PAD_RIGHT) . ': ' . $archiveConfig->getRealValue('contentUrl') . "\n";
|
||||
$log .= str_pad('URL UPLOAD', $labelPadSize, '_', STR_PAD_RIGHT) . ': ' . $archiveConfig->getRealValue('uploadBaseUrl') . "\n";
|
||||
$log .= str_pad('URL PLUGINS', $labelPadSize, '_', STR_PAD_RIGHT) . ': ' . $archiveConfig->getRealValue('pluginsUrl') . "\n";
|
||||
$log .= str_pad('URL MU PLUGINS', $labelPadSize, '_', STR_PAD_RIGHT) . ': ' . $archiveConfig->getRealValue('mupluginsUrl') . "\n";
|
||||
$log .= str_pad('URL THEMES', $labelPadSize, '_', STR_PAD_RIGHT) . ': ' . $archiveConfig->getRealValue('themesUrl') . "\n";
|
||||
|
||||
|
||||
$paths = (array) $archiveConfig->getRealValue('archivePaths');
|
||||
foreach ($paths as $key => $value) {
|
||||
$log .= str_pad('PATH ' . strtoupper($key), $labelPadSize, '_', STR_PAD_RIGHT) . ': ' . $value . "\n";
|
||||
}
|
||||
|
||||
if (count($archiveConfig->subsites) > 0) {
|
||||
$log .= "\nSUBSITES\n";
|
||||
foreach ($archiveConfig->subsites as $subsite) {
|
||||
$log .= 'SUBSITE [ID:' . str_pad($subsite->id, 4, ' ', STR_PAD_LEFT) . '] ' . Log::v2str($subsite->domain . $subsite->path) . "\n";
|
||||
}
|
||||
}
|
||||
|
||||
$plugins = (array) $archiveConfig->wpInfo->plugins;
|
||||
$log .= "\nPLUGINS\n";
|
||||
foreach ($plugins as $plugin) {
|
||||
$log .= 'PLUGIN [SLUG:' . str_pad($plugin->slug, 50, ' ', STR_PAD_RIGHT) . ']';
|
||||
|
||||
if (is_array($plugin->active)) {
|
||||
$log .= '[ON:' . str_pad(implode(',', $plugin->active), 5, ' ', STR_PAD_RIGHT) . ']';
|
||||
} else {
|
||||
$log .= '[ON:' . str_pad(Log::v2str($plugin->active), 5, ' ', STR_PAD_RIGHT) . ']';
|
||||
}
|
||||
|
||||
$log .= ' ' . $plugin->name . "\n";
|
||||
}
|
||||
Log::info($log, Log::LV_DEFAULT);
|
||||
Log::info("********************************************************************************");
|
||||
Log::flush();
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,140 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
*
|
||||
* @package templates/default
|
||||
*/
|
||||
|
||||
defined('ABSPATH') || defined('DUPXABSPATH') || exit;
|
||||
|
||||
use Duplicator\Installer\Core\Params\PrmMng;
|
||||
use Duplicator\Installer\Utils\InstallerLinkManager;
|
||||
|
||||
final class DUPX_Ctrl_S4
|
||||
{
|
||||
public static function updateFinalReport()
|
||||
{
|
||||
self::finalReportDatabase();
|
||||
self::finalReportSearchReplace();
|
||||
|
||||
DUPX_NOTICE_MANAGER::getInstance()->sortFinalReport();
|
||||
}
|
||||
|
||||
public static function getNoticesCount()
|
||||
{
|
||||
$nManager = DUPX_NOTICE_MANAGER::getInstance();
|
||||
|
||||
return array(
|
||||
'general' => $nManager->countFinalReportNotices('general', DUPX_NOTICE_ITEM::NOTICE, '>='),
|
||||
'files' => $nManager->countFinalReportNotices('files', DUPX_NOTICE_ITEM::NOTICE, '>='),
|
||||
'database' => $nManager->countFinalReportNotices('database', DUPX_NOTICE_ITEM::NOTICE, '>'),
|
||||
'search_replace' => $nManager->countFinalReportNotices('search_replace', DUPX_NOTICE_ITEM::NOTICE, '>='),
|
||||
'plugins' => $nManager->countFinalReportNotices('plugins', DUPX_NOTICE_ITEM::NOTICE, '>=')
|
||||
);
|
||||
}
|
||||
|
||||
protected static function finalReportDatabase()
|
||||
{
|
||||
$paramsManager = PrmMng::getInstance();
|
||||
$finalReportData = $paramsManager->getValue(PrmMng::PARAM_FINAL_REPORT_DATA);
|
||||
$nManager = DUPX_NOTICE_MANAGER::getInstance();
|
||||
$logLink = DUPX_View_Funcs::installerLogLink(false);
|
||||
$faqUrl = InstallerLinkManager::getDocUrl('how-to-fix-database-write-issues', 'final-report', 'How to Fix Database Write Issues');
|
||||
|
||||
if ($finalReportData['extraction']['query_errs'] > 0) {
|
||||
$longMsg = <<<LONGMSG
|
||||
Queries that error during the deploy step are logged to the {$logLink} file and
|
||||
marked with an **ERROR** status. If you experience a few errors (under 5), in many cases they can be ignored as long as your site is working correctly.
|
||||
However if you see a large amount of errors or you experience an issue with your site then the error messages in the log file will need to be investigated.
|
||||
<br/><br/>
|
||||
|
||||
<b>COMMON FIXES:</b>
|
||||
<ul>
|
||||
<li>
|
||||
<b>Unknown collation:</b> See Online FAQ:
|
||||
<a href="{$faqUrl}" target="_blank">What is Compatibility mode & 'Unknown collation' errors?</a>
|
||||
</li>
|
||||
<li>
|
||||
<b>Query Limits:</b> Update MySQL server with the <a href="https://dev.mysql.com/doc/refman/5.5/en/packet-too-large.html" target="_blank">max_allowed_packet</a>
|
||||
setting for larger payloads.
|
||||
</li>
|
||||
</ul>
|
||||
LONGMSG;
|
||||
|
||||
$nManager->addFinalReportNotice(array(
|
||||
'shortMsg' => 'DB EXTRACTION - INSTALL NOTICES (' . $finalReportData['extraction']['query_errs'] . ')',
|
||||
'level' => DUPX_NOTICE_ITEM::HARD_WARNING,
|
||||
'longMsg' => $longMsg,
|
||||
'longMsgMode' => DUPX_NOTICE_ITEM::MSG_MODE_HTML,
|
||||
'sections' => array('database'),
|
||||
'priority' => 5,
|
||||
'open' => true
|
||||
));
|
||||
}
|
||||
|
||||
if ($finalReportData['replace']['errsql_sum'] > 0) {
|
||||
$longMsg = <<<LONGMSG
|
||||
Update errors that show here are queries that could not be performed because the database server being used has issues running it.
|
||||
Please validate the query, if it looks to be of concern please try to run the query manually.
|
||||
In many cases if your site performs well without any issues you can ignore the error.
|
||||
LONGMSG;
|
||||
|
||||
$nManager->addFinalReportNotice(array(
|
||||
'shortMsg' => 'STEP 3 - UPDATE NOTICES (' . $finalReportData['replace']['errsql_sum'] . ')',
|
||||
'level' => DUPX_NOTICE_ITEM::HARD_WARNING,
|
||||
'longMsg' => $longMsg,
|
||||
'sections' => array('database'),
|
||||
'priority' => 5,
|
||||
'open' => true
|
||||
));
|
||||
}
|
||||
|
||||
if ($finalReportData['replace']['errkey_sum'] > 0) {
|
||||
$longMsg = <<<LONGMSG
|
||||
Notices should be ignored unless issues are found after you have tested an installed site.
|
||||
This notice indicates that a primary key is required to run the update engine. Below is a list of tables and the rows that were not updated.
|
||||
On some databases you can remove these notices by checking the box 'Enable Full Search' under options in step3 of the installer.
|
||||
<br/><br/>
|
||||
<small>
|
||||
<b>Advanced Searching:</b><br/>
|
||||
Use the following query to locate the table that was not updated: <br/>
|
||||
<i>SELECT @row := @row + 1 as row, t.* FROM some_table t, (SELECT @row := 0) r</i>
|
||||
</small>
|
||||
LONGMSG;
|
||||
|
||||
$nManager->addFinalReportNotice(array(
|
||||
'shortMsg' => 'TABLE KEY NOTICES (' . $finalReportData['replace']['errkey_sum'] . ')',
|
||||
'level' => DUPX_NOTICE_ITEM::SOFT_WARNING,
|
||||
'longMsg' => $longMsg,
|
||||
'longMsgMode' => DUPX_NOTICE_ITEM::MSG_MODE_HTML,
|
||||
'sections' => array('database'),
|
||||
'priority' => 5,
|
||||
'open' => true
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
protected static function finalReportSearchReplace()
|
||||
{
|
||||
$paramsManager = PrmMng::getInstance();
|
||||
$finalReportData = $paramsManager->getValue(PrmMng::PARAM_FINAL_REPORT_DATA);
|
||||
$nManager = DUPX_NOTICE_MANAGER::getInstance();
|
||||
|
||||
if ($finalReportData['replace']['errser_sum'] > 0) {
|
||||
$longMsg = <<<LONGMSG
|
||||
Notices should be ignored unless issues are found after you have tested an installed site.
|
||||
The SQL below will show data that may have not been updated during the serialization process.
|
||||
Best practices for serialization notices is to just re-save the plugin/post/page in question.
|
||||
LONGMSG;
|
||||
|
||||
$nManager->addFinalReportNotice(array(
|
||||
'shortMsg' => 'SERIALIZATION NOTICES (' . $finalReportData['replace']['errser_sum'] . ')',
|
||||
'level' => DUPX_NOTICE_ITEM::SOFT_WARNING,
|
||||
'longMsg' => $longMsg,
|
||||
'sections' => array('search_replace'),
|
||||
'priority' => 5,
|
||||
'open' => true
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user