function run()
{
    global $modx;
    $output = '';
    $maxtime = $_POST['maxtime'];
    if (!is_numeric($maxtime)) {
        $maxtime = 30;
    }
    @set_time_limit($maxtime);
    $mtime = microtime();
    $mtime = explode(' ', $mtime);
    $mtime = $mtime[1] + $mtime[0];
    $importstart = $mtime;
    if ($_POST['reset'] == 'on') {
        $tbl_site_content = $modx->getFullTableName('site_content');
        $modx->db->delete('[+prefix+]site_content');
        $modx->db->query("ALTER TABLE {$tbl_site_content} AUTO_INCREMENT = 1");
    }
    $parent = intval($_POST['parent']);
    if (is_dir(MODX_BASE_PATH . 'temp/import')) {
        $filedir = MODX_BASE_PATH . 'temp/import/';
    } elseif (is_dir(MODX_BASE_PATH . 'assets/import')) {
        $filedir = MODX_BASE_PATH . 'assets/import/';
    }
    $filesfound = 0;
    $files = getFiles($filedir);
    $files = pop_index($files);
    // no. of files to import
    $output .= sprintf('<p>' . $_lang['import_files_found'] . '</p>', $filesfound);
    // import files
    if (0 < count($files)) {
        $rs = $modx->db->update(array('isfolder' => 1), '[+prefix+]site_content', "id={$parent}");
        importFiles($parent, $filedir, $files, 'root');
    }
    $mtime = microtime();
    $mtime = explode(' ', $mtime);
    $mtime = $mtime[1] + $mtime[0];
    $importend = $mtime;
    $totaltime = $importend - $importstart;
    $output .= sprintf('<p>' . $_lang['import_site_time'] . '</p>', round($totaltime, 3));
    if ($_POST['convert_link'] == 'on') {
        convertLink();
    }
    return $output;
}
$twitterAPIExchange = new TwitterAPIExchange($settings);
// throw request
// then decode json to associative array
$response = json_decode($twitterAPIExchange->setGetField($getField)->buildOauth($url, $requestmethod)->performRequest(), $assoc = true);
// check for error
if (isset($response["errors"])) {
    echo "<h3>Oops, we encountered a problem.</h3><p>Here's error message:</p><p><em>" . $response["errors"][0]["message"] . "</em></p>";
    exit;
}
// echo "<pre>";
// echo var_dump($response) . "</pre>";
// display
foreach ($response as $items) {
    echo "<hr>";
    echo $items['user']['name'] . " (@" . $items['user']['screen_name'] . ") - " . $items['created_at'];
    echo "<br>" . screenNameAsLink(convertLink($items['text']));
    echo "<hr>";
}
// functions
function screenNameAsLink($tweet)
{
    return preg_replace('/(^|\\s)@([a-z0-9_]+)/i', '$1<a href="http://www.twitter.com/$2">@$2</a>', $tweet);
}
function convertLink($tweet)
{
    // force http: on www.
    $tweet = ereg_replace("www\\.", "http://www.", $tweet);
    // eliminate duplicates after force
    $tweet = ereg_replace("http://http://www\\.", "http://www.", $tweet);
    $tweet = ereg_replace("https://http://www\\.", "https://www.", $tweet);
    // The Regular Expression filter