public function __construct(SiteApplication $app, CMEProvider $provider, $year, $quarter) { $this->app = $app; $this->provider = $provider; $start_month = (intval($quarter) - 1) * 3 + 1; $this->start_date = new SwatDate(); $this->start_date->setTime(0, 0, 0); $this->start_date->setDate($year, $start_month, 1); $this->start_date->setTZ($this->app->default_time_zone); $this->end_date = clone $this->start_date; $this->end_date->addMonths(3); }
protected function getQuarters(CMEProvider $provider) { $quarters = array(); $now = new SwatDate(); $now->convertTZ($this->default_time_zone); $year = $this->start_date->getYear(); $start_date = new SwatDate(); $start_date->setTime(0, 0, 0); $start_date->setDate($year, 1, 1); $start_date->setTZ($this->default_time_zone); $end_date = clone $start_date; $end_date->addMonths(3); $display_end_date = clone $end_date; $display_end_date->subtractMonths(1); while ($end_date->before($now)) { for ($quarter = 1; $quarter <= 4; $quarter++) { // Make sure the quarter has ended before generating the // report. Reports are cached and are not regenerated when new // data is available. If reports are generated for partial // quarters, the partial report is cached until the cache is // manually cleared. if ($end_date->after($now)) { break; } $num_credits = $this->getQuarterEarnedCredits($provider, $year, $quarter); if ($num_credits > 0) { $quarters[] = clone $start_date; } $start_date->addMonths(3); $end_date->addMonths(3); $display_end_date->addMonths(3); } $year++; } return $quarters; }
protected function getTableModel(SwatView $view) { $now = new SwatDate(); $now->setTimezone($this->app->default_time_zone); $year = $this->start_date->getYear(); $start_date = new SwatDate(); $start_date->setTime(0, 0, 0); $start_date->setDate($year, 1, 1); $start_date->setTZ($this->app->default_time_zone); $end_date = clone $start_date; $end_date->addMonths(3); $display_end_date = clone $end_date; $display_end_date->subtractMonths(1); $store = new SwatTableStore(); while ($end_date->before($now)) { for ($i = 1; $i <= 4; $i++) { // Only add the quarter to the table model if the start date // is within or prior to that quarter. if ($this->start_date->before($end_date)) { $ds = new SwatDetailsStore(); $quarter = $start_date->formatLikeIntl('yyyy-qq'); $ds->date = clone $start_date; $ds->year = $year; $ds->quarter = $quarter; $ds->quarter_title = sprintf(CME::_('Q%s - %s to %s'), $i, $start_date->formatLikeIntl('MMMM yyyy'), $display_end_date->formatLikeIntl('MMMM yyyy')); foreach ($this->providers as $provider) { $shortname = $provider->shortname; $sensitive = isset($this->reports_by_quarter[$quarter][$shortname]); $ds->{'is_' . $shortname . '_sensitive'} = $sensitive; } $store->add($ds); } $start_date->addMonths(3); $end_date->addMonths(3); $display_end_date->addMonths(3); } $year++; } return $store; }