Не работает скрипт после обновления на modx evolution 2.0

Добрый вечер. Есть скрипт поиска на сайте по проектам. После обновления возникла проблема в его работе при переходе на 2.0. Подскажите куда копать



<?php
ini_set("max_execution_time", "180");
include_once('simple_html_dom.php');
require_once('manager/includes/config.inc.php');
require_once('manager/includes/protect.inc.php');


define('MODX_API_MODE', true);
require_once('manager/includes/document.parser.class.inc.php');
require_once('assets/plugins/cakemodx/CakeMODx.class.php');
$modx = new DocumentParser;

$modx->db->connect();
$modx->getSettings();

header("Content-type: text/html; charset=windows-1251");

$sParam =  $_GET['q']; // Выход по чтению внешних данных
if (! $sParam) exit;

switch ($_GET['mode']) {
    case 'sql': // Используем базу данных как источник данных
		$sParam = iconv("UTF-8", "WINDOWS-1251", $sParam);
		$sParam = trim($sParam);
		$parent_id_nosearch = " and parent=22";
		
		$result = $modx->db->query("
		(SELECT `id`,`pagetitle`,`alias`,`parent` FROM `modx_site_content` WHERE `pagetitle` LIKE '{$sParam}%' and published = 1 and searchable =1 $parent_id_nosearch)
		UNION
		(SELECT `id`,`pagetitle`,`alias`,`parent` FROM `modx_site_content` WHERE `pagetitle` LIKE '%{$sParam}%' and published = 1 and searchable =1 $parent_id_nosearch)		
		"); 

		$sRequest = "";

		while($aValues = $modx->db->getRow($result)) {
		
			$url;
			$array_url;
			$text_proj;
			$array_url[0]=$aValues['alias'];
			$parents = $modx->getParent($aValues['id']);
			if($parents){
				$array_url[1]=$parents['alias'];
				$parents_ = $modx->getParent($parents['id']);
			}
			if(isset($parents_['alias'])){
				$array_url[2]=$parents_['alias'];
				$parents__ = $modx->getParent($parents_['id']);
			}
			if(isset($parents__['alias'])){
				$array_url[3]=$parents__['alias'];
				$parents___ = $modx->getParent($parents__['id']);
			}
			if(isset($parents___['alias'])){
				$array_url[4]=$parents___['alias'];
				$parents____ = $modx->getParent($parents___['id']);
			}
			if(isset($parents____['alias'])){
				$array_url[5]=$parents____['alias'];
			}
			$array_url = array_reverse($array_url);
			$url = implode("/", $array_url);
			if($aValues['parent']=='23'){
				$text_proj = "Проект № ";
			}
			if($aValues['parent']=='22'){
				$text_proj = "Проект № ";
			}
			
            echo "<a id=".$aValues['id']." href=".$url.">".$text_proj.$aValues['pagetitle']."</a>" . "\n";
        }
        break;
}

2 комментария

avatar
Ну вообще очень мало информации, может оно вообще не ищет, может ошибка в sql запросе может еще что-то. Могу предположить что orm не нравится union joxi.ru/E2pNPDVTaGDqar. Как я понял union нужно, чтоб в начале было полное совпадение. Как вариант разбить запросы, или условие сделать без union, или на evoSearch Переделать. Вообще если что за денюжку могу ваш вопрос порешать телеграм @dzhuryn
avatar
Я вижу два момента — подключение api и запрос.

Вот такое подключение точно работает:
<?php

define('MODX_API_MODE', true);
define('MODX_BASE_PATH', realpath(__DIR__) . '/');
define('MODX_SITE_URL', 'http://<Имя домена>/');
define('MODX_BASE_URL', '/');

require MODX_BASE_PATH . 'index.php';

$modx->db->connect();

if (empty($modx->config)) {
    $modx->getSettings();
}


А в запросе нужно убрать крайние скобки в первом подзапросе, такое было уже в jot.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.