function amr_request_cache($list = null)
{
    global $aopt;
    global $amain;
    $logcache = new adb_cache();
    $network = ausers_job_prefix();
    if (!empty($list)) {
        if ($logcache->cache_in_progress($logcache->reportid($list, 'user'))) {
            $text = sprintf(__('Cache of %s already in progress', 'amr-users'), $list);
            $logcache->log_cache_event($text);
            return $text;
        }
        if ($text = $logcache->cache_already_scheduled($list)) {
            $new_text = __('Report ', 'amr-users') . $list . ': ' . $text;
            $logcache->log_cache_event($new_text);
            return $new_text;
        }
        $time = time() + 5;
        $text = sprintf($network . __('Schedule background cacheing of report: %s', 'amr-users'), $list);
        $logcache->log_cache_event($text);
        $args[] = $list;
        wp_schedule_single_event($time, 'amr_' . $network . 'reportcacheing', $args);
        /* request for now a single run of the build function */
        return $text;
    } else {
        ameta_options();
        if (empty($aopt['list'])) {
            $text = $network . __('Error: No stored options found.', 'amr-users');
            $logcache->log_cache_event($text);
            return $text;
        } else {
            $no_rpts = count($aopt['list']);
        }
        $logcache->log_cache_event('<b>' . $network . sprintf(__('Received background cache request for %s reports', 'amr-users'), $no_rpts) . '</b>');
        $returntext = '';
        $time_increment = 60;
        $nexttime = time();
        foreach ($aopt['list'] as $i => $l) {
            if (!empty($amain['names'][$i])) {
                //if ($i <= count($amain['names'])) {
                $args = array('report' => $i);
                if ($text = $logcache->cache_already_scheduled($i)) {
                    $new_text = __('All reports: ', 'amr-users') . $text;
                    $logcache->log_cache_event($new_text);
                    $returntext .= $new_text . '<br />';
                    return $returntext;
                } else {
                    wp_schedule_single_event($nexttime, 'amr_' . $network . 'reportcacheing', $args);
                    /* request for now a single run of the build function */
                    $nexttime = $nexttime + $time_increment;
                    unset($args);
                    $text = sprintf(__('Schedule background cacheing of report: %s', 'amr-users'), $i);
                    $logcache->log_cache_event($text);
                    $returntext .= $text . '<br />';
                }
            }
        }
        return $returntext;
    }
    //$result = spawn_cron( time()); /* kick it off soon */
    // time()+3600 = one hour from now.
}
function amr_rebuildwarning($list)
{
    $logcache = new adb_cache();
    if ($logcache->cache_in_progress($logcache->reportid($list, 'user'))) {
        $text = sprintf(__('Cache of %s already in progress', 'amr-users'), $list);
        $logcache->log_cache_event($text);
        echo $text;
        return;
    } else {
        $text = $logcache->cache_already_scheduled($list);
        if (!empty($text)) {
            $new_text = __('Report ', 'amr-users') . $list . ': ' . $text;
            $logcache->log_cache_event($new_text);
            amr_users_message($new_text);
            //return;	 - let it run anyway
        }
    }
    echo alist_rebuildreal($list);
    return;
}