<?php
/**
 * custom modification of pdoResources snippet
 */
/** @var modX $modx */
/** @var array $scriptProperties */
if (isset($parents) && $parents === '') {
    $scriptProperties['parents'] = $modx->resource->id;
}
if (empty($scriptProperties['return'])) {
    $scriptProperties['return'] = 'chunks';
}

if (!empty($_REQUEST['search'])) {
    $scriptProperties['where'] = "(modResource.pagetitle LIKE '%" . $_REQUEST['search'] . "%' OR modResource.content LIKE '%" . $_REQUEST['search'] . "%')";
}

// сильно замедляет работу, когда у статьи больше 100к просмотров
// if (!empty($scriptProperties['views']) || (isset($scriptProperties['sortby']) && $scriptProperties['sortby'] === 'views')) {
//     $scriptProperties['select']['View'] = '(SELECT COUNT(parent) FROM modx_tickets_views TicketView WHERE TicketView.parent=modResource.id) AS views';
// }

// Adding extra parameters into special place so we can put them in a results
/** @var modSnippet $snippet */
$additionalPlaceholders = $properties = [];
if (isset($this) && $this instanceof modSnippet) {
    $properties = $this->get('properties');
} elseif ($snippet = $modx->getObject('modSnippet', ['name' => 'pdoResources'])) {
    $properties = $snippet->get('properties');
}
if (!empty($properties)) {
    foreach ($scriptProperties as $k => $v) {
        if (!isset($properties[$k])) {
            $additionalPlaceholders[$k] = $v;
        }
    }
}
$scriptProperties['additionalPlaceholders'] = $additionalPlaceholders;
/** @var pdoFetch $pdoFetch */
$fqn = $modx->getOption('pdoFetch.class', null, 'pdotools.pdofetch', true);
$path = $modx->getOption('pdofetch_class_path', null, MODX_CORE_PATH . 'components/pdotools/model/', true);
if ($pdoClass = $modx->loadClass($fqn, $path, false, true)) {
    $pdoFetch = new $pdoClass($modx, $scriptProperties);
} else {
    return false;
}
//Load custom lexicon topics for pdoPage ajax pagination results
if (!empty($scriptProperties['topics'])) {
    foreach ((array)$scriptProperties['topics'] as $topic) {
        $modx->lexicon->load($topic);
    }
}
//lexicon topics are ready for use in pagination results to format dates and so on
$pdoFetch->addTime('pdoTools loaded for custom snippet: blogResources');
$output = $pdoFetch->run();
$log = '';
if ($modx->user->hasSessionContext('mgr') && !empty($showLog)) {
    $log = '<pre class="pdoResourcesLog">' . print_r($pdoFetch->getTime(), 1) . '</pre>';
    $modx->setPlaceholder('pdoResources.log', $log);
}
// Return custom output
if ($scriptProperties['return'] === 'chunks') {
    $output .= $log;
    if (!empty($tplWrapper) && (!empty($wrapIfEmpty) || !empty($output))) {
        $output = $pdoFetch->getChunk($tplWrapper, array_merge($additionalPlaceholders, ['output' => $output]), $pdoFetch->config['fastMode']);
    }
} elseif (is_string($output)) {
    //manipulate $output as string if need
    !empty($toPlaceholder) && $modx->setPlaceholder($toPlaceholder, $output);
} elseif (is_array($output)) {
    //manipulate $output as array if need
    !empty($toSeparatePlaceholders) && $modx->setPlaceholders($output, $toSeparatePlaceholders);
} else {
    return;
}
return $output;