protected function initNewsletter() { if ($this->id == '') { $this->relocate('Newsletter'); } $class_name = SwatDBClassMap::get('DeliveranceNewsletter'); $this->newsletter = new $class_name(); $this->newsletter->setDatabase($this->app->db); if (!$this->newsletter->load($this->id)) { throw new AdminNotFoundException(sprintf('A newsletter with the id of ‘%s’ does not exist', $this->id)); } // Can't cancel a newsletter that has not been scheduled. if (!$this->newsletter->isScheduled()) { $this->relocate(); } // Can't cancel a newsletter that has been sent. if ($this->newsletter->isSent()) { $this->relocate(); } }
protected function buildToolbars() { $toolbars = $this->ui->getRoot()->getDescendants('SwatToolbar'); foreach ($toolbars as $toolbar) { $toolbar->setToolLinkValues($this->newsletter->id); } // Preview link can be unavailable if the database save was successful, // but the mailing list call failed. $preview_link = $this->ui->getWidget('preview_link'); if ($this->newsletter->campaign_id === null) { $preview_link->sensitive = false; $preview_link->tooltip = Deliverance::_('This newsletter’s preview is not available due to connection ' . 'issues with the email service provider. Edit the newsletter ' . 'to enable the preview.'); } else { $campaign_type = $this->newsletter->instance instanceof SiteInstance ? $this->newsletter->instance->shortname : null; $campaign_class = DeliveranceCampaignFactory::get($this->app, $campaign_type); $this->ui->getWidget('preview_link')->link = call_user_func_array(array($campaign_class, 'getPreviewUrl'), array($this->app, $this->newsletter->campaign_id)); } if ($this->newsletter->isSent()) { $preview_link->title = Deliverance::_('View Email'); $this->ui->getWidget('edit_link')->visible = false; $this->ui->getWidget('delete_link')->visible = false; $this->ui->getWidget('cancel_link')->visible = false; $this->ui->getWidget('schedule_link')->visible = false; $this->ui->getWidget('send_preview_link')->visible = false; // reports may not exist yet if the newsletter was recently sent. $stats_link = $this->ui->getWidget('stats_link'); if ($this->newsletter->campaign_report_url === null) { $stats_link->sensitive = false; $stats_link->tooltip = Deliverance::_('This newletter’s status report will become available ' . 'shortly after the newsletter has been sent.'); } else { $stats_link->link = $this->newsletter->campaign_report_url; } } elseif ($this->newsletter->isScheduled()) { $this->ui->getWidget('edit_link')->visible = false; $this->ui->getWidget('stats_link')->visible = false; $this->ui->getWidget('delete_link')->visible = false; $this->ui->getWidget('send_preview_link')->visible = false; $this->ui->getWidget('schedule_link')->title = Deliverance::_('Reschedule Delivery'); } else { $this->ui->getWidget('stats_link')->visible = false; $this->ui->getWidget('cancel_link')->visible = false; } }