getService('collections','Collections',$modx->getOption('collections.core_path',null,$modx->getOption('core_path').'components/collections/').'model/collections/',$scriptProperties); if (!($collections instanceof Collections)) return ''; $getResourcesSnippet = $modx->getOption('getResourcesSnippet', $scriptProperties, 'getResources'); $getResourcesExists = $modx->getCount('modSnippet', array('name' => $getResourcesSnippet)); if ($getResourcesExists == 0) return 'getResources not found'; $sortDir = strtolower($modx->getOption('sortdir', $scriptProperties, 'asc')); $selections = $modx->getOption('selections', $scriptProperties, ''); $sortBy = $modx->getOption('sortby', $scriptProperties, ''); $excludeToPlaceholder = $modx->getOption('excludeToPlaceholder', $scriptProperties, ''); $selections = $modx->collections->explodeAndClean($selections); if ($sortDir != 'asc') { $sortDir = 'desc'; } $linkedResourcesQuery = $modx->newQuery('CollectionSelection'); if (!empty($selections)) { $linkedResourcesQuery->where(array( 'collection:IN' => $selections )); } if ($sortBy == '') { $linkedResourcesQuery->sortby('menuindex', $sortDir); } $linkedResourcesQuery->select(array( 'resource' => 'DISTINCT(resource)', 'menuindex' => 'menuindex' )); $linkedResourcesQuery->prepare(); $linkedResourcesQuery->stmt->execute(); $linkedResources = $linkedResourcesQuery->stmt->fetchAll(PDO::FETCH_COLUMN, 0); if (!empty($excludeToPlaceholder)) { $excludeResources = array(); foreach($linkedResources as $res) { $excludeResources[] = '-' . $res; } $excludeResources = implode(',', $excludeResources); $modx->setPlaceholder($excludeToPlaceholder, $excludeResources); } $linkedResources = implode(',', $linkedResources); $properties = $scriptProperties; unset($properties['selections']); $properties['resources'] = $linkedResources; $properties['parents'] = ($properties['getResourcesSnippet'] == 'pdoResources') ? 0 : -1; if ($sortBy == '') { $properties['sortby'] = 'FIELD(modResource.id, ' . $linkedResources . ' )'; $properties['sortdir'] = 'asc'; } return $modx->runSnippet($getResourcesSnippet, $properties);