. */ // Usage // ----- // Access this file in your browser and follow the instructions to update your site config files. error_reporting(E_ALL ^ E_NOTICE); ini_set("display_errors", 1); @set_time_limit(120); require_once '../libraries/content-extractor/SiteConfig.php'; //////////////////////////////// // Load config file //////////////////////////////// $admin_page = 'edit-pattern'; require_once('../config.php'); require_once('require_login.php'); require_once('template.php'); tpl_header('Edit site patterns'); $version = file_get_contents('../site_config/standard/version.txt'); function filter_only_text($filename) { if ($filename === 'version.txt') return false; return (strtolower(substr($filename, -4)) == '.txt'); } function is_valid_hostname($host) { return preg_match('!^[a-z0-9_.-]+$!i', $host); } ///////////////////////////////// // Process changes ///////////////////////////////// if ($_SERVER['REQUEST_METHOD'] == 'POST') { // DELETE if (@$_POST['delete'] != '' && @$_POST['delete_dir'] != '') { if (is_valid_hostname($_POST['delete'])) { $delete = $_POST['delete']; if ($_POST['delete_dir'] == 'standard') { $delete = '../site_config/standard/'.$delete; } else { $delete = '../site_config/custom/'.$delete; } if (@unlink($delete)) { echo 'Deleted '.$delete.''; } else { echo 'Failed to delete '.$delete.''; } } exit; } // SAVE if (@$_POST['save'] != '' && isset($_POST['contents'])) { if (is_valid_hostname(trim($_POST['save']))) { $save = strtolower(trim($_POST['save'])); if (@$_POST['save_dir'] == 'standard') { $savepath = '../site_config/standard/'.$save.'.txt'; } else { $savepath = '../site_config/custom/'.$save.'.txt'; } // TODO: check if file exists, if it does, prompt user whether to overwrite if (file_put_contents($savepath, $_POST['contents']) !== false) { echo '

Saved to '.$savepath.'

'; // check caching if ($options->caching) { echo '

Note: caching is enabled — you may have to disable caching or delete cache files to see changes.

'; } if ($options->apc && function_exists('apc_delete') && function_exists('apc_cache_info')) { $_apc_data = apc_cache_info('user'); foreach ($_apc_data['cache_list'] as $_apc_item) { // APCu keys incompatible with original APC keys, apparently fixed in newer versions, but not in 4.0.4 // So let's look for those keys and fix here (key -> info). if (isset($_apc_item['key'])) $_apc_item['info'] = $_apc_item['key']; if (substr($_apc_item['info'], 0, 3) == 'sc.') { apc_delete($_apc_item['info']); } } echo '

Cleared site config cache in APC.

'; } SiteConfig::set_config_path(dirname($savepath)); $sconfig = SiteConfig::build($save, $exact_host_match=true); if ($sconfig) { if (!empty($sconfig->test_url)) { echo '

Test URLs

'; echo ''; } else { echo '

No test URLs found in config, if you supply one we\'ll give you a link to test how Full-Text RSS will extract it

'; } } else { echo '

Could not load/parse config file

'; } } else { echo 'Failed to save '.$savepath.'. Make sure the directory is writable.'; } } exit; } } ///////////////////////////////// // Show list of site config files ///////////////////////////////// if (!isset($_REQUEST['url']) || trim($_REQUEST['url']) == '') { $sc_files = array_merge(scandir('../site_config/standard/'), scandir('../site_config/custom/')); $sc_files = array_unique(array_filter($sc_files, 'filter_only_text')); ?>

Note: This feature is for advanced users familiar with XPath. It allows you to override automatic article extraction and specify what Full-Text RSS should extract from specific domains. If you're uncomfortable writing your own, you can request one from us.

'; foreach ($sc_files as $file) { $file = basename($file, '.txt'); echo '
  • '.htmlspecialchars($file).'
  • '; } echo ''; // adapted from http://stackoverflow.com/a/11022738/407938 ... ?> No matching files found...

    '; } elseif ($exact_match) { $contents = $matched[$exact_match]; $file_location = $exact_match; echo '

    Loaded '.htmlspecialchars($exact_match).'

    '; } else { $contents = end($matched); $file_location = array_pop(array_keys($matched)); echo '

    Loaded '.htmlspecialchars($file_location).'

    '; } if (isset($file_location)) unset($related[$file_location]); $save_locations = array( 'custom' => 'custom (recommended)', 'standard' => 'standard' ); echo '
    '; echo '
    Need help?
    '; echo ''; echo '
    '; echo ' .txt'; echo '
    '; echo ' '; echo ''; echo '
    '; echo ' '; echo 'or Cancel and return to listing'; echo '
    '; // DELETE option if (!empty($matched)) { echo '

    Delete file?

    '; echo '

    Delete '.htmlspecialchars($file_location).'

    '; echo '
    '; echo ''; echo ''; echo ''; echo '
    '; } // TEST URLs if (!empty($matched)) { if ($sconfig = SiteConfig::build_from_array(explode("\n", $contents))) { if (!empty($sconfig->test_url)) { echo '

    Test URLs

    '; echo ''; } } } // RELATED files if (!empty($related)) { echo '

    Related files

    '; echo ''; } ?>