You are here

protected function RulesUIController::overviewTableRow in Rules 7.2

Generates the row for a single rules config.

Parameters

array $conditions: An array of conditions as needed by rules_config_load_multiple().

array $options: An array with optional options. Known keys are:

  • 'hide status op': If set to TRUE, enable/disable links are not added. Defaults to FALSE.
  • 'show plugin': If set to FALSE, the plugin is not shown. Defaults to TRUE.
  • 'show events': If set to TRUE, the event column is shown. Defaults to TRUE if only reaction rules are listed.
  • 'show execution op': If set to TRUE an operation for execution a component is shown for components, as well as a link to schedule a component if the rules scheduler module is enabled.
  • 'base path': Optionally, a different base path to use instead of the currently set RulesPluginUI::$basePath. If no base path has been set yet, the current path is used by default.
1 call to RulesUIController::overviewTableRow()
RulesUIController::overviewTable in ui/ui.controller.inc
Generates the render array for an overview configuration table.

File

ui/ui.controller.inc, line 271
Contains the UI controller for Rules.

Class

RulesUIController
Controller class for the Rules UI.

Code

protected function overviewTableRow($conditions, $name, $config, $options) {

  // Build content includes the label, as well as a short overview including
  // the machine name.
  $row[] = array(
    'data' => $config
      ->buildContent(),
  );

  // Add events if the configs are assigned to events.
  if ($options['show events']) {
    $events = array();
    if ($config instanceof RulesTriggerableInterface) {
      foreach ($config
        ->events() as $event_name) {
        $event_handler = rules_get_event_handler($event_name, $config
          ->getEventSettings($event_name));
        $events[] = $event_handler
          ->summary();
      }
    }
    $row[] = implode(", ", $events);
  }
  if ($options['show plugin']) {
    $plugin = $config
      ->plugin();
    $row[] = isset($this->cache['plugin_info'][$plugin]['label']) ? $this->cache['plugin_info'][$plugin]['label'] : $plugin;
  }
  $row[] = array(
    'data' => array(
      '#theme' => 'entity_status',
      '#status' => $config->status,
    ),
  );

  // Add operations depending on the options and the exportable status.
  if (!$config
    ->hasStatus(ENTITY_FIXED)) {
    $row[] = l(t('edit'), RulesPluginUI::path($name), array(
      'attributes' => array(
        'class' => array(
          'edit',
          'action',
        ),
      ),
    ));
    if (module_exists('rules_i18n')) {
      $row[] = l(t('translate'), RulesPluginUI::path($name, 'translate'), array(
        'attributes' => array(
          'class' => array(
            'translate',
            'action',
          ),
        ),
      ));
    }
  }
  else {
    $row[] = '';
    if (module_exists('rules_i18n')) {
      $row[] = '';
    }
  }
  if (!$options['hide status op']) {

    // Add either an enable or disable link.
    $text = $config->active ? t('disable') : t('enable');
    $active_class = $config->active ? 'disable' : 'enable';
    $link_path = RulesPluginUI::path($name, $active_class);
    $row[] = $config
      ->hasStatus(ENTITY_FIXED) ? '' : l($text, $link_path, array(
      'attributes' => array(
        'class' => array(
          $active_class,
          'action',
        ),
      ),
      'query' => drupal_get_destination(),
    ));
  }
  $row[] = l(t('clone'), RulesPluginUI::path($name, 'clone'), array(
    'attributes' => array(
      'class' => array(
        'clone',
        'action',
      ),
    ),
  ));

  // Add execute link for for components.
  if ($options['show execution op']) {
    $row[] = $config instanceof RulesTriggerableInterface ? '' : l(t('execute'), RulesPluginUI::path($name, 'execute'), array(
      'attributes' => array(
        'class' => array(
          'execute',
          'action',
        ),
      ),
      'query' => drupal_get_destination(),
    ));
    if (module_exists('rules_scheduler')) {

      // Add schedule link for action components only.
      $row[] = $config instanceof RulesActionInterface ? l(t('schedule'), RulesPluginUI::path($name, 'schedule'), array(
        'attributes' => array(
          'class' => array(
            'schedule',
            'action',
          ),
        ),
        'query' => drupal_get_destination(),
      )) : '';
    }
  }
  if (!$config
    ->hasStatus(ENTITY_IN_CODE) && !$config
    ->hasStatus(ENTITY_FIXED)) {
    $row[] = l(t('delete'), RulesPluginUI::path($name, 'delete'), array(
      'attributes' => array(
        'class' => array(
          'delete',
          'action',
        ),
      ),
      'query' => drupal_get_destination(),
    ));
  }
  elseif ($config
    ->hasStatus(ENTITY_OVERRIDDEN) && !$config
    ->hasStatus(ENTITY_FIXED)) {
    $row[] = l(t('revert'), RulesPluginUI::path($name, 'revert'), array(
      'attributes' => array(
        'class' => array(
          'revert',
          'action',
        ),
      ),
      'query' => drupal_get_destination(),
    ));
  }
  else {
    $row[] = '';
  }
  $row[] = l(t('export'), RulesPluginUI::path($name, 'export'), array(
    'attributes' => array(
      'class' => array(
        'export',
        'action',
      ),
    ),
  ));
  return $row;
}