Example #1
0
 public function postDelete()
 {
     $id = Input::get('id');
     $delpro = Program::find($id);
     $delpro->delete();
     return 1;
 }
Example #2
0
 public function showSpecificProgram()
 {
     $programIDInput = Input::get('program-dropdown');
     $program = Program::find($programIDInput);
     //ave students per year and ave difference
     $yearsArray = Studentterm::where('programid', $program->programid)->where('year', '>', 1999)->where('year', '<', 2014)->groupBy('year')->orderBy('year', 'asc')->lists('year');
     $yearlyStudentAverage = [];
     $yearlySemDifference = [];
     foreach ($yearsArray as $yearData) {
         $aveStudents = $program->getYearlyAveStudents($yearData);
         if ($aveStudents > 1) {
             $yearlyStudentAverage[$yearData] = $aveStudents;
         }
     }
     $aveYearsOfStay = $program->getAveYearsOfStay();
     $aveYearsBeforeDropout = $program->getAveYearsBeforeDropout();
     $aveYearsBeforeShifting = $program->getAveYearsBeforeShifting();
     $aveAttrition = $program->getAveAttrition();
     $aveShiftRate = $program->getAveShiftRate();
     $batchAttrition = $program->getBatchAttrition();
     $batchShiftRate = $program->getBatchShiftRate();
     $division = $program->getDivision();
     $numYears = $program->getNumYears();
     $gradeCount = $program->getGradeCount();
     $shiftGradeCount = $program->getShiftGradeCount();
     $stbracketCount = $program->getSTBracketCount();
     $shiftBracketCount = $program->getShiftSTBracketCount();
     return View::make('program.program-specific', ['program' => $program, 'aveYearsOfStay' => $aveYearsOfStay, 'yearlyStudentAverage' => $yearlyStudentAverage, 'aveYearsBeforeShifting' => $aveYearsBeforeShifting, 'aveYearsBeforeDropout' => $aveYearsBeforeDropout, 'aveAttrition' => $aveAttrition, 'batchAttrition' => $batchAttrition, 'aveShiftRate' => $aveShiftRate, 'batchShiftRate' => $batchShiftRate, 'division' => $division, 'numYears' => $numYears, 'gradeCount' => $gradeCount, 'shiftGradeCount' => $shiftGradeCount, 'stbracketCount' => $stbracketCount, 'shiftBracketCount' => $shiftBracketCount]);
 }
Example #3
0
 public function suggestIssue($course_id)
 {
     $course = Course::find($course_id);
     $program = Program::find($course->program->id);
     $year = date('y');
     $month = date('m');
     $counter = Issue::where('project_id', '=', Auth::user()->curr_project_id)->count();
     $counter += 1;
     $issue = substr($program->name, 0, 1) . $year . $month . str_pad($counter, 5, "0", STR_PAD_LEFT);
     return Response::json(array('issue' => $issue));
 }
Example #4
0
 /**
  * 详情
  *
  * @param int $date
  * @return void
  */
 public function detail($date)
 {
     // query the specified dates program and audio list
     $program = Program::dated($date)->enabled()->first();
     $audios = $this->getAudios($program);
     // get contributions info
     $contributers = $this->getProgramContributers($program->date);
     // get around pages
     $pages = (object) ['prev' => Program::find($program->id - 1), 'next' => Program::find($program->id + 1)];
     // TDK
     $title = $program->topic . ' (' . $program->date . ') ';
     $description = sprintf('%s 期飞鱼秀 %s 回放在线收听,下载', $program->date, $program->topic);
     // render page
     return View::make('program.detail')->with('appdate', $this->getAppProgramDate())->with('program', $program)->with('audios', $audios)->with('pages', $pages)->with('contributers', $contributers)->with('title', $title)->with('description', $description);
 }
Example #5
0
/**
 * loads all program data for the specified time range.
 * Set $single_program to true if you only want information about programs that
 * start exactly at $start_time (used by program_detail.php)
/**/
function &load_all_program_data($start_time, $end_time, $chanid = false, $single_program = false, $extra_query = '', $distinctTitle = false)
{
    global $db;
    // Don't allow negative timestamps; it confuses MySQL
    if ($start_time < 0) {
        $start_time = 0;
    }
    if ($end_time < 0) {
        $end_time = 0;
    }
    // Make a local hash of channel chanid's with references to the actual
    // channel data (Channels are not indexed by anything in particular, so
    // that the user can sort by chanid or channum).
    $channel_hash = array();
    // An array (that later gets converted to a string) containing the id's of channels we want to load
    if ($chanid) {
        $these_channels[] = $chanid;
    } else {
        $these_channels = Channel::getChannelList();
    }
    // convert $these_channels into a string so it'll go straight into the query
    if (!count($these_channels)) {
        trigger_error("load_all_program_data() attempted with out any channels", FATAL);
    }
    $these_channels = implode(',', $these_channels);
    // Build the sql query, and execute it
    $query = 'SELECT program.*,
                         UNIX_TIMESTAMP(program.starttime) AS starttime_unix,
                         UNIX_TIMESTAMP(program.endtime) AS endtime_unix,
                         IFNULL(programrating.system, "") AS rater,
                         IFNULL(programrating.rating, "") AS rating,
                         channel.callsign,
                         channel.channum
                  FROM program USE INDEX (id_start_end)
                       LEFT JOIN programrating USING (chanid, starttime)
                       LEFT JOIN channel ON program.chanid = channel.chanid
                       LEFT JOIN credits ON (program.chanid = credits.chanid AND program.starttime = credits.starttime)
                       LEFT JOIN people ON (credits.person = people.person)
                 WHERE';
    // Only loading a single channel worth of information
    if ($chanid > 0) {
        $query .= ' program.chanid=' . $db->escape($chanid);
    } else {
        $query .= ' program.chanid IN (' . $these_channels . ')';
    }
    // Requested start time is the same as the end time - don't bother with fancy calculations
    if ($start_time == $end_time) {
        $query .= ' AND program.starttime = FROM_UNIXTIME(' . $db->escape($start_time) . ')';
    } else {
        $query .= ' AND (program.endtime > FROM_UNIXTIME(' . $db->escape($start_time) . ')' . ' AND program.starttime < FROM_UNIXTIME(' . $db->escape($end_time) . ')' . ' AND program.starttime != program.endtime)';
    }
    // The extra query, if there is one
    if ($extra_query) {
        $query .= ' AND ' . $extra_query;
    }
    // Group and sort
    if (!$distinctTitle) {
        $query .= "\nGROUP BY channel.callsign, program.chanid, program.starttime";
    } else {
        $query .= "\nGROUP BY program.title";
    }
    $query .= " ORDER BY program.starttime";
    // Limit
    if ($single_program) {
        $query .= "\n LIMIT 1";
    }
    // Query
    $sh = $db->query($query);
    // No results
    if ($sh->num_rows() < 1) {
        $sh->finish();
        return array();
    }
    // Build two separate queries for optimized selecting of recstatus
    $sh2 = $db->prepare('SELECT recstatus
                               FROM oldrecorded
                              WHERE recstatus IN (-3, 11)
                                    AND programid = ?
                                    AND seriesid  = ?
                                    AND future = 0
                             LIMIT 1');
    $sh3 = $db->prepare('SELECT recstatus
                               FROM oldrecorded
                              WHERE recstatus IN (-3, 11)
                                    AND title       = ?
                                    AND subtitle    = ?
                                    AND description = ?
                                    AND future = 0 
                             LIMIT 1');
    // Load in all of the programs (if any?)
    $these_programs = array();
    $scheduledRecordings = Schedule::findScheduled();
    while ($data = $sh->fetch_assoc()) {
        if (!$data['chanid']) {
            continue;
        }
        // This program has already been loaded, and is attached to a recording schedule
        if (!empty($data['title']) && $scheduledRecordings[$data['callsign']][$data['starttime_unix']][0]->title == $data['title']) {
            $program =& $scheduledRecordings[$data['callsign']][$data['starttime_unix']][0];
            // merge in data fetched from DB
            $program->merge(new Program($data));
        } else {
            // Load the recstatus now that we can use an index
            if ($data['programid'] && $data['seriesid']) {
                $sh2->execute($data['programid'], $data['seriesid']);
                list($data['recstatus']) = $sh2->fetch_row();
            } elseif ($data['category_type'] == 'movie' || $data['title'] && $data['subtitle'] && $data['description']) {
                $sh3->execute($data['title'], $data['subtitle'], $data['description']);
                list($data['recstatus']) = $sh3->fetch_row();
            }
            // Create a new instance
            $program =& Program::find($data);
        }
        // Add this program to the channel hash, etc.
        $these_programs[] =& $program;
        $channel_hash[$data['chanid']]->programs[] =& $program;
        // Cleanup
        unset($program);
    }
    // Cleanup
    $sh3->finish();
    $sh2->finish();
    $sh->finish();
    // If channel-specific information was requested, return an array of those programs, or just the first/only one
    if ($chanid && $single_program) {
        return $these_programs[0];
    }
    // Just in case, return an array of all programs found
    return $these_programs;
}
 /**
  * Remove the specified resource from storage.
  * DELETE /program/{id}
  *
  * @param  int  $id
  * @return Response
  */
 public function destroy($id)
 {
     $program = Program::find($id);
     $program->delete();
     return Redirect::action('ProgramController@index');
 }