You are here

class MandrillReportsController in Mandrill 8

MandrillReports controller.

Hierarchy

Expanded class hierarchy of MandrillReportsController

File

modules/mandrill_reports/src/Controller/MandrillReportsController.php, line 17
Contains \Drupal\mandrill_reports\Controller\MandrillReportsController.

Namespace

Drupal\mandrill_reports\Controller
View source
class MandrillReportsController extends ControllerBase {

  /**
   * View Mandrill dashboard report.
   *
   * @return array
   *   Renderable array of page content.
   */
  public function dashboard() {
    $content = array();

    /* @var $reports \Drupal\mandrill_reports\MandrillReportsService */
    $reports = \Drupal::service('mandrill_reports.service');
    $data = array();
    $data['user'] = $reports
      ->getUser();
    $data['all_time_series'] = $reports
      ->getTagsAllTimeSeries();
    $data['urls'] = $reports
      ->getUrls();
    $settings = array();

    // All time series chart data.
    foreach ($data['all_time_series'] as $series) {
      $settings['mandrill_reports']['volume'][] = array(
        'date' => $series['time'],
        'sent' => $series['sent'],
        'bounced' => $series['hard_bounces'] + $series['soft_bounces'],
        'rejected' => $series['rejects'],
      );
      $settings['mandrill_reports']['engagement'][] = array(
        'date' => $series['time'],
        'open_rate' => $series['sent'] == 0 ? 0 : $series['unique_opens'] / $series['sent'],
        'click_rate' => $series['sent'] == 0 ? 0 : $series['unique_clicks'] / $series['sent'],
      );
    }
    $content['info'] = array(
      '#markup' => t('The following reports are based on Mandrill data from the last 30 days. For more comprehensive data, please visit your %dashboard. %cache to ensure the data is current.', array(
        '%dashboard' => Link::fromTextAndUrl(t('Mandrill Dashboard'), Url::fromUri('https://mandrillapp.com/'))
          ->toString(),
        '%cache' => Link::fromTextAndUrl(t('Clear your cache'), Url::fromRoute('system.performance_settings'))
          ->toString(),
      )),
    );
    $content['volume'] = array(
      '#prefix' => '<h2>' . t('Sending Volume') . '</h2>',
      '#markup' => '<div id="mandrill-volume-chart"></div>',
    );
    $content['engagement'] = array(
      '#prefix' => '<h2>' . t('Average Open and Click Rate') . '</h2>',
      '#markup' => '<div id="mandrill-engage-chart"></div>',
    );

    // URL tracking table.
    $content['urls_table'] = array(
      '#type' => 'table',
      '#header' => array(
        t('URL'),
        t('Delivered'),
        t('Unique Clicks'),
        t('Total Clicks'),
      ),
      '#empty' => 'No activity yet.',
      '#prefix' => '<h2>' . t('Tracked URLs') . '</h2>',
    );
    $row = 0;
    foreach ($data['urls'] as $url) {
      $percent = number_format($url['unique_clicks'] / $url['sent'], 2) * 100;
      $content['urls_table'][$row]['url'] = array(
        '#markup' => $url['url'],
      );
      $content['urls_table'][$row]['sent'] = array(
        '#markup' => $url['sent'],
      );
      $content['urls_table'][$row]['unique_clicks'] = array(
        '#markup' => $url['unique_clicks'] . ' (' . $percent . '%)',
      );
      $content['urls_table'][$row]['clicks'] = array(
        '#markup' => $url['clicks'],
      );
      $row++;
    }
    $content['#attached']['library'][] = 'mandrill_reports/google-jsapi';
    $content['#attached']['library'][] = 'mandrill_reports/reports-stats';
    $content['#attached']['drupalSettings'] = $settings;
    return $content;
  }

  /**
   * View Mandrill account summary report.
   *
   * @return array
   *   Renderable array of page content.
   */
  public function summary() {
    $content = array();

    /* @var $reports \Drupal\mandrill_reports\MandrillReportsService */
    $reports = \Drupal::service('mandrill_reports.service');
    $user = $reports
      ->getUser();
    $content['info_table_desc'] = array(
      '#markup' => t('Active API user information.'),
    );

    // User info table.
    $content['info_table'] = array(
      '#type' => 'table',
      '#header' => array(
        t('Attribute'),
        t('Value'),
      ),
      '#empty' => 'No account information.',
    );
    $info = array(
      array(
        'attr' => t('Username'),
        'value' => $user['username'],
      ),
      array(
        'attr' => t('Reputation'),
        'value' => $user['reputation'],
      ),
      array(
        'attr' => t('Hourly quota'),
        'value' => $user['hourly_quota'],
      ),
      array(
        'attr' => t('Backlog'),
        'value' => $user['backlog'],
      ),
    );
    $row = 0;
    foreach ($info as $item) {
      $content['info_table'][$row]['attribute'] = array(
        '#markup' => $item['attr'],
      );
      $content['info_table'][$row]['value'] = array(
        '#markup' => $item['value'],
      );
      $row++;
    }
    $content['stats_table_desc'] = array(
      '#markup' => t('This table contains an aggregate summary of the account\'s sending stats.'),
    );

    // User stats table.
    $content['stats_table'] = array(
      '#type' => 'table',
      '#header' => array(
        t('Range'),
        t('Sent'),
        t('hard_bounces'),
        t('soft_bounces'),
        t('Rejects'),
        t('Complaints'),
        t('Unsubs'),
        t('Opens'),
        t('unique_opens'),
        t('Clicks'),
        t('unique_clicks'),
      ),
      '#empty' => 'No account activity yet.',
    );
    if (!empty($user['stats'])) {
      $row = 0;
      foreach ($user['stats'] as $key => $stat) {
        $content['stats_table'][$row]['range'] = array(
          '#markup' => str_replace('_', ' ', $key),
        );
        $content['stats_table'][$row]['sent'] = array(
          '#markup' => $stat['sent'],
        );
        $content['stats_table'][$row]['hard_bounces'] = array(
          '#markup' => $stat['hard_bounces'],
        );
        $content['stats_table'][$row]['soft_bounces'] = array(
          '#markup' => $stat['soft_bounces'],
        );
        $content['stats_table'][$row]['rejects'] = array(
          '#markup' => $stat['rejects'],
        );
        $content['stats_table'][$row]['complaints'] = array(
          '#markup' => $stat['complaints'],
        );
        $content['stats_table'][$row]['unsubs'] = array(
          '#markup' => $stat['unsubs'],
        );
        $content['stats_table'][$row]['opens'] = array(
          '#markup' => $stat['opens'],
        );
        $content['stats_table'][$row]['unique_opens'] = array(
          '#markup' => $stat['unique_opens'],
        );
        $content['stats_table'][$row]['clicks'] = array(
          '#markup' => $stat['clicks'],
        );
        $content['stats_table'][$row]['unique_clicks'] = array(
          '#markup' => $stat['unique_clicks'],
        );
        $row++;
      }
    }
    return $content;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
ControllerBase::$configFactory protected property The configuration factory.
ControllerBase::$currentUser protected property The current user service. 1
ControllerBase::$entityFormBuilder protected property The entity form builder.
ControllerBase::$entityManager protected property The entity manager.
ControllerBase::$entityTypeManager protected property The entity type manager.
ControllerBase::$formBuilder protected property The form builder. 2
ControllerBase::$keyValue protected property The key-value storage. 1
ControllerBase::$languageManager protected property The language manager. 1
ControllerBase::$moduleHandler protected property The module handler. 2
ControllerBase::$stateService protected property The state service.
ControllerBase::cache protected function Returns the requested cache bin.
ControllerBase::config protected function Retrieves a configuration object.
ControllerBase::container private function Returns the service container.
ControllerBase::create public static function Instantiates a new instance of this class. Overrides ContainerInjectionInterface::create 40
ControllerBase::currentUser protected function Returns the current user. 1
ControllerBase::entityFormBuilder protected function Retrieves the entity form builder.
ControllerBase::entityManager Deprecated protected function Retrieves the entity manager service.
ControllerBase::entityTypeManager protected function Retrieves the entity type manager.
ControllerBase::formBuilder protected function Returns the form builder service. 2
ControllerBase::keyValue protected function Returns a key/value storage collection. 1
ControllerBase::languageManager protected function Returns the language manager service. 1
ControllerBase::moduleHandler protected function Returns the module handler. 2
ControllerBase::redirect protected function Returns a redirect response object for the specified route. Overrides UrlGeneratorTrait::redirect
ControllerBase::state protected function Returns the state storage service.
LinkGeneratorTrait::$linkGenerator protected property The link generator. 1
LinkGeneratorTrait::getLinkGenerator Deprecated protected function Returns the link generator.
LinkGeneratorTrait::l Deprecated protected function Renders a link to a route given a route name and its parameters.
LinkGeneratorTrait::setLinkGenerator Deprecated public function Sets the link generator service.
LoggerChannelTrait::$loggerFactory protected property The logger channel factory service.
LoggerChannelTrait::getLogger protected function Gets the logger for a specific channel.
LoggerChannelTrait::setLoggerFactory public function Injects the logger channel factory.
MandrillReportsController::dashboard public function View Mandrill dashboard report.
MandrillReportsController::summary public function View Mandrill account summary report.
MessengerTrait::$messenger protected property The messenger. 29
MessengerTrait::messenger public function Gets the messenger. 29
MessengerTrait::setMessenger public function Sets the messenger.
RedirectDestinationTrait::$redirectDestination protected property The redirect destination service. 1
RedirectDestinationTrait::getDestinationArray protected function Prepares a 'destination' URL query parameter for use with \Drupal\Core\Url.
RedirectDestinationTrait::getRedirectDestination protected function Returns the redirect destination service.
RedirectDestinationTrait::setRedirectDestination public function Sets the redirect destination service.
StringTranslationTrait::$stringTranslation protected property The string translation service. 1
StringTranslationTrait::formatPlural protected function Formats a string containing a count of items.
StringTranslationTrait::getNumberOfPlurals protected function Returns the number of plurals supported by a given language.
StringTranslationTrait::getStringTranslation protected function Gets the string translation service.
StringTranslationTrait::setStringTranslation public function Sets the string translation service to use. 2
StringTranslationTrait::t protected function Translates a string to the current language or to a given language.
UrlGeneratorTrait::$urlGenerator protected property The url generator.
UrlGeneratorTrait::getUrlGenerator Deprecated protected function Returns the URL generator service.
UrlGeneratorTrait::setUrlGenerator Deprecated public function Sets the URL generator service.
UrlGeneratorTrait::url Deprecated protected function Generates a URL or path for a specific route based on the given parameters.