| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 | <?php/** * @file * Provide views data. *//** * Implements hook_views_data(). */function rules_link_views_data() {  $data = array();  foreach (rules_link_get_links() as $name => $rules_link) {    $entity = entity_get_info($rules_link->entity_type);    $data[$entity['base table']][$name]['field']['moved to'] = array('views_entity_' . $rules_link->entity_type, $name, 'field');    $data['views_entity_' . $rules_link->entity_type][$name]['field'] = array(      'title' => $rules_link->label,      'help' => t('Execute the selected rules link.'),      'handler' => 'views_handler_field_rules_link',      'rules link name' => $name,    );  }  return $data;}/** * Renders the links for views. */class views_handler_field_rules_link extends views_handler_field_entity {  function render($value) {    $replacements = filter_xss_admin($this->options['rules_link']['rules_link_parameters']);    $token = $this->get_render_tokens('');    $parameters = array_filter(explode(',', strtr($replacements, $token)));    // Trim the spaces from the    array_walk($parameters, 'rules_link_trim_parameters');    $rules_link = rules_link_load($this->definition['rules link name']);    $entity = $this->get_value($value);    list($id, $rev, $bundle) = entity_extract_ids($rules_link->entity_type, $entity);    // If there are multiple bundle types, we only have to display the links to    // the entities which have the correct bundle.    if (empty($rules_link->settings['bundles']) || in_array($bundle, $rules_link->settings['bundles'])) {      $output = rules_link_render_link($rules_link, $id, drupal_get_destination(), $parameters);      if (isset($this->options['rules_link']['rules_link_rewrite']) && !empty($this->options['rules_link']['rules_link_rewrite'])) {        $output['#options']['html'] = TRUE;        $output['#title'] = strtr($this->options['rules_link']['rules_link_rewrite'], $this->get_render_tokens(''));      }      return $output;    }  }  /**   * Override option_definition.   */  function option_definition() {    $options = parent::option_definition();    $options['rules_link']['rules_link_parameters'] = array('default' => '');    $options['rules_link']['rules_link_rewrite'] = array('default' => '');    return $options;  }  /**   * Override options_form.   */  function options_form(&$form, &$form_state) {    parent::options_form($form, $form_state);    $form['rules_link'] = array(      '#type' => 'fieldset',      '#title' => t('Rules Link settings'),      '#collapsible' => TRUE,      '#collapsed' => TRUE,    );    $form['rules_link']['rules_link_parameters'] = array(      '#type' => 'textfield',      '#title' => t('Additional parameters for the rules link'),      '#description' => t('Enter additional parameter using replacement patterns, use comma to enter multiple items. Whitespaces at the beginning and end of token will be trimmed.'),      '#default_value' => $this->options['rules_link']['rules_link_parameters'],    );    $form['rules_link']['rules_link_rewrite'] = array(      '#type' => 'textarea',      '#title' => t('Rewrite the link text'),      '#description' => t('Enter a custom link title or HTML that you want to place inside of the rules link. You may use the replacement patterns below.'),      '#default_value' => $this->options['rules_link']['rules_link_rewrite'],    );    $form['rules_link']['rules_link_patterns'] = array(      '#type' => 'fieldset',      '#title' => t('Replacement patterns'),      '#collapsible' => TRUE,      '#collapsed' => TRUE,      '#value' => $form['alter']['help']['#value'],    );  }}
 |