function checkFolders()
 {
     global $message;
     $dir = PFeedFolder::uploadRoot();
     if (!is_writable($dir)) {
         $message = $dir . ' should be writeable';
         return false;
     }
     $dir = PFeedFolder::uploadFolder();
     if (!is_dir($dir)) {
         mkdir($dir);
     }
     if (!is_writable($dir)) {
         $message = "{$dir} should be writeable";
         return false;
     }
     $dir2 = $dir . $this->providerName . '/';
     if (!is_dir($dir2)) {
         mkdir($dir2);
     }
     return true;
 }
function get_feed_main()
{
    $requestCode = safeGetPostData('provider');
    $local_category = safeGetPostData('local_category');
    $remote_category = safeGetPostData('remote_category');
    $file_name = safeGetPostData('file_name');
    $feedIdentifier = safeGetPostData('feed_identifier');
    $saved_feed_id = safeGetPostData('feed_id');
    $feed_list = safeGetPostData('feed_ids');
    //For Aggregate Feed Provider
    $output = new stdClass();
    $output->url = '';
    if (strlen($requestCode) * strlen($local_category) == 0) {
        $output->errors = 'Error: error in AJAX request. Insufficient data or categories supplied.';
        doOutput($output);
        return;
    }
    if (strlen($remote_category) == 0) {
        $output->errors = 'Error: Insufficient data. Please fill in "' . $requestCode . ' category"';
        doOutput($output);
        return;
    }
    // Check if form was posted and select task accordingly
    $dir = PFeedFolder::uploadRoot();
    if (!is_writable($dir)) {
        $output->errors = "Error: {$dir} should be writeable";
        doOutput($output);
        return;
    }
    $dir = PFeedFolder::uploadFolder();
    if (!is_dir($dir)) {
        mkdir($dir);
    }
    if (!is_writable($dir)) {
        $output->errors = "Error: {$dir} should be writeable";
        doOutput($output);
        return;
    }
    $providerFile = 'feeds/' . strtolower($requestCode) . '/feed.php';
    if (!file_exists(dirname(__FILE__) . '/../../' . $providerFile)) {
        if (!class_exists('P' . $requestCode . 'Feed')) {
            $output->errors = 'Error: Provider file not found.';
            doOutput($output);
            return;
        }
    }
    $providerFileFull = dirname(__FILE__) . '/../../' . $providerFile;
    if (file_exists($providerFileFull)) {
        require_once $providerFileFull;
    }
    //Load form data
    $file_name = sanitize_title_with_dashes($file_name);
    if ($file_name == '') {
        $file_name = 'feed' . rand(10, 1000);
    }
    $saved_feed = null;
    if (strlen($saved_feed_id) > 0 && $saved_feed_id > -1) {
        require_once dirname(__FILE__) . '/../../data/savedfeed.php';
        $saved_feed = new PSavedFeed($saved_feed_id);
    }
    $providerClass = 'P' . $requestCode . 'Feed';
    $x = new $providerClass();
    $x->feed_list = $feed_list;
    //For Aggregate Provider only
    if (strlen($feedIdentifier) > 0) {
        $x->activityLogger = new PFeedActivityLog($feedIdentifier);
    }
    $x->getFeedData($local_category, $remote_category, $file_name, $saved_feed);
    if ($x->success) {
        $output->url = PFeedFolder::uploadURL() . $x->providerName . '/' . $file_name . '.' . $x->fileformat;
    }
    $output->errors = $x->getErrorMessages();
    doOutput($output);
}