/** * Exports Resources from MODX to build files * Removes objects if $mode == MODE_REMOVE * * @param $modx modX - $modx->object * @param $helpers Helpers - $helpers object * @param $props array - $scriptProperties array * @param int $mode - MODX_BOOTSTRAP, MODE_EXPORT, MODE_REMOVE */ static function exportResources(&$modx, &$helpers, $props, $mode = MODE_EXPORT) { /* @var $modx modX */ /* @var $helpers Helpers */ $objects = array(); /* Add resources from exportResources array in the project config file to $this->myObjects array */ $helpers->sendLog(modX::LOG_LEVEL_INFO, "\n" . $helpers->modx->lexicon('mc_processing_resources')); $byId = $modx->getOption('getResourcesById', $props, false); $method = $byId ? 'ID' : 'pagetitle'; $resources = $modx->getOption('exportResources', $props, array()); if (!empty($resources)) { foreach ($resources as $resource) { if ($byId) { $resObject = $modx->getObject('modResource', $resource); } else { $resObject = $modx->getObject('modResource', array('pagetitle' => trim($resource))); } if ($resObject) { $objects[] = $resObject; } else { $helpers->sendLog(modX::LOG_LEVEL_ERROR, '[Resource Adapter] ' . $helpers->modx->lexicon('mc_could_not_get_resource_with_method') . ' ' . $method . ': ' . $resource); } } } /* if $parents is set in project config, add children (and optionally parent to $resources array */ $parents = $modx->getOption('parents', $props, array()); $includeParents = $modx->getOption('includeParents', $props, false); if (!empty($parents)) { foreach ($parents as $parentResource) { if ($byId) { $parentObj = $modx->getObject('modResource', $parentResource); } else { $parentObj = $modx->getObject('modResource', array('pagetitle' => $parentResource)); } if ($parentObj) { if ($includeParents) { $objects[] = $parentObj; } $children = $parentObj->getMany('Children'); if (!empty($children)) { $objects = array_merge($objects, $children); } } } } if (!empty($objects)) { /* @var $object modResource */ $dryRun = $props['dryRun']; foreach ($objects as $object) { $fields = $object->toArray(); $a = new ResourceAdapter($modx, $helpers, $fields, $mode); if ($mode == MODE_REMOVE) { $a->remove(); } elseif ($mode == MODE_EXPORT) { $content = $object->getContent(); $a->createCodeFile(true, $content, $mode, $dryRun); if (isset($fields['properties']) && !empty($fields['properties'])) { $a->writePropertiesFile($a->getName(), $fields['properties'], MODE_EXPORT); } } } } else { $helpers->sendLog(modX::LOG_LEVEL_ERROR, '[ResourceAdapter] ' . $helpers->modx->lexicon('mc_no_resources_found')); } }