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);
 }
Beispiel #2
0
 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;
 }
Beispiel #3
0
 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;
 }