Example #1
0
function ActivateScheduledVideos()
{
    $DB = GetDB();
    $args = ParseCommandLine();
    $queries = array();
    if (!isset($args['sort']) || empty($args['sort'])) {
        $args['sort'] = 'RAND()';
    }
    if (!isset($args['sort-direction']) || empty($args['sort-direction'])) {
        $args['sort-direction'] = SQL::SORT_ASC;
    }
    if (isset($args['amount'])) {
        $sb = new SQL_SelectBuilder('tbx_video');
        $sb->AddSelectField('`video_id`');
        $sb->AddSelectField('`tags`');
        $sb->AddWhere('tbx_video.status', SQL::EQUALS, STATUS_SCHEDULED);
        $sb->AddOrder($args['sort'], $args['sort-direction']);
        $sb->SetLimit($args['amount']);
        $queries[] = $DB->Prepare($sb->Generate(), $sb->Binds());
    } else {
        if (isset($args['amount-per-sponsor'])) {
            $result = $DB->Query('SELECT `sponsor_id` FROM `tbx_sponsor`');
            while ($sponsor = $DB->NextRow($result)) {
                $sb = new SQL_SelectBuilder('tbx_video');
                $sb->AddSelectField('`video_id`');
                $sb->AddSelectField('`tags`');
                $sb->AddWhere('tbx_sponsor.sponsor_id', SQL::EQUALS, $sponsor['sponsor_id']);
                $sb->AddWhere('tbx_video.status', SQL::EQUALS, STATUS_SCHEDULED);
                $sb->AddOrder($args['sort'], $args['sort-direction']);
                $sb->SetLimit($args['amount-per-sponsor']);
                $queries[] = $DB->Prepare($sb->Generate(), $sb->Binds());
            }
            $DB->Free($result);
        } else {
            if (isset($args['amount-per-category'])) {
                $result = $DB->Query('SELECT `category_id` FROM `tbx_category`');
                while ($category = $DB->NextRow($result)) {
                    $sb = new SQL_SelectBuilder('tbx_video');
                    $sb->AddSelectField('`video_id`');
                    $sb->AddSelectField('`tags`');
                    $sb->AddWhere('tbx_video.category_id', SQL::EQUALS, $category['category_id']);
                    $sb->AddWhere('tbx_video.status', SQL::EQUALS, STATUS_SCHEDULED);
                    $sb->AddOrder($args['sort'], $args['sort-direction']);
                    $sb->SetLimit($args['amount-per-category']);
                    $queries[] = $DB->Prepare($sb->Generate(), $sb->Binds());
                }
                $DB->Free($result);
            } else {
                throw new BaseException('One of --amount, --amount-per-sponsor or --amount-per-category must be specified');
            }
        }
    }
    foreach ($queries as $query) {
        $result = $DB->Query($query);
        while ($video = $DB->NextRow($result)) {
            $DB->Update('UPDATE `tbx_video` SET `status`=?,`date_added`=? WHERE `video_id`=?', array(STATUS_ACTIVE, Database_MySQL::Now(), $video['video_id']));
            Tags::AddToFrequency($video['tags']);
        }
        $DB->Free($result);
    }
    UpdateCategoryStats();
}