$element_sync = new ElementSync($modx, $element_sync_file); $element_types = array('modTemplate' => $modx->getOption('elementhelper.template_path', null, 'site/elements/templates/'), 'modChunk' => $modx->getOption('elementhelper.chunk_path', null, 'site/elements/chunks/'), 'modSnippet' => $modx->getOption('elementhelper.snippet_path', null, 'site/elements/snippets/'), 'modPlugin' => $modx->getOption('elementhelper.plugin_path', null, 'site/elements/plugins/')); $category_whitelist = array_map('trim', explode(',', $modx->getOption('elementhelper.category_whitelist', null, ''))); $element_blacklist = array_map('trim', explode(',', $modx->getOption('elementhelper.element_blacklist', null, ''))); // Loop through the element types foreach ($element_types as $type => $type_path) { $log_prefix = sprintf('[ElementHelper] %s: ', $type); $file_list = FileHelper::get_directory_file_list(MODX_BASE_PATH . $type_path); // Move onto the next element type if it has no files if (empty($file_list)) { $modx->log(MODX_LOG_LEVEL_INFO, $log_prefix . 'No files.'); continue; } // Process the files for this element type foreach ($file_list as $file_path) { $file = FileHelper::get_file_meta($file_path); $element = Element::get($modx, $type, $file['name']); // If the file is not in the sync if (!$element_sync->has_element($type, $file['name'])) { // If the element doesn't exist if (!$element) { // Create the element $element = Element::create($modx, $type, $file['name']); // If the element is created successfully set it's properties and then add it to the sync if ($element) { $properties = $element_helper->get_file_element_properties($type_path, $file_path); if ($element->set_properties($properties)) { $element_sync->add_element($type, $file['name'], $file['mod_time']); } } } else {