Beispiel #1
0
 public static function checkIndexesValid()
 {
     if (!Finder::checkIndexValid()) {
         static::showSearchNotification();
     }
     $cnt = static::getCounter();
     if ($cnt > static::HITS_BETWEEN_RECHECKS || !static::checkIndexValid()) {
         $allOk = true;
         $map = ImportProcess::getIndexMap();
         if (is_array($map)) {
             foreach ($map as $ixName => $ixInfo) {
                 if (!$ixInfo['DROP_ONLY'] && !DB\Helper::checkIndexNameExists($ixName, $ixInfo['TABLE'])) {
                     $allOk = false;
                     break;
                 }
             }
         } else {
             $allOk = false;
         }
         if ($allOk) {
             static::setIndexValid();
         } else {
             static::setIndexInvalid();
         }
         static::setCounter(0);
     } else {
         static::setCounter($cnt + 1);
     }
     if (!static::checkIndexValid()) {
         static::showDBIndexNotification();
     }
 }
<?php

use Bitrix\Main;
use Bitrix\Main\Localization\Loc;
use Bitrix\Sale\Location\Admin\Helper;
define("NO_AGENT_CHECK", true);
define("NO_KEEP_STATISTIC", true);
$initialTime = time();
require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_before.php";
require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/sale/prolog.php";
Loc::loadMessages(__FILE__);
$APPLICATION->SetTitle(Loc::getMessage('SALE_LOCATION_IMPORT_TITLE'));
require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_after.php";
// check for indexes
$indexes = \Bitrix\Sale\Location\Import\ImportProcess::getIndexMap();
$absent = array();
if (is_array($indexes) && !empty($indexes)) {
    foreach ($indexes as $name => $params) {
        if ((string) $params['TABLE'] != '' && !$params['DROP_ONLY']) {
            if (!\Bitrix\Sale\Location\DB\Helper::checkIndexNameExists($name, $params['TABLE'])) {
                $absent[] = 'create index ' . $name . ' on ' . $params['TABLE'] . ' (' . implode(', ', $params['COLUMNS']) . ')' . \Bitrix\Sale\Location\DB\Helper::getQuerySeparatorSql();
            }
        }
    }
}
if (!empty($absent)) {
    ?>

	<span style="color: #ff0000">
		<?php 
    echo Loc::getMessage('SALE_LOCATION_IMPORT_NO_INDEXES_WARNING', array('#ANCHOR_SQL_CONSOLE#' => '<a href="/bitrix/admin/sql.php" target="_blank">', '#ANCHOR_END#' => '</a>'));