Projet

Général

Profil

Paste
Télécharger (2,93 ko) Statistiques
| Branche: | Révision:

root / drupal7 / sites / all / modules / ldap / ldap_feeds / FeedsLdapQueryFetcher.inc @ 91af538d

1 85ad3d82 Assos Assos
<?php
2
3
/**
4
 * @file
5 32700c57 Assos Assos
 * FeedsLdapQueryFetcher.
6 85ad3d82 Assos Assos
 */
7
8
/**
9 32700c57 Assos Assos
 * FeedsLdapQueryFetcherResult.
10 85ad3d82 Assos Assos
 */
11
class FeedsLdapQueryFetcherResult extends FeedsFetcherResult {
12 32700c57 Assos Assos
  public $query_ids = [];
13 85ad3d82 Assos Assos
  public $ldap_result;
14
15
  /**
16
   * Constructor.
17
   */
18
  public function __construct($source_config) {
19 32700c57 Assos Assos
    $this->query_ids = (isset($source_config['query_ids']) && is_array($source_config['query_ids'])) ? $source_config['query_ids'] : [];
20 85ad3d82 Assos Assos
    parent::__construct('');
21
    $this->ldap_result = $this->getRaw();
22
    return $this->ldap_result;
23
  }
24
25
  /**
26 32700c57 Assos Assos
   * Overrides parent::getRaw();.
27 85ad3d82 Assos Assos
   */
28
  public function getRaw() {
29
30 32700c57 Assos Assos
    $results = [];
31 7547bb19 Assos Assos
    $count = 0;
32 85ad3d82 Assos Assos
    foreach ($this->query_ids as $i => $query_id) {
33
      $ldapQuery = ldap_query_get_queries($query_id, 'enabled', TRUE);
34
      $more_results = $ldapQuery->query();
35
      if (is_array($more_results)) {
36 7547bb19 Assos Assos
        $count += $more_results['count'];
37 85ad3d82 Assos Assos
        $results = array_merge($results, $more_results);
38
      }
39
    }
40 7547bb19 Assos Assos
    if ($count) {
41
      $results['count'] = $count;
42
    }
43 85ad3d82 Assos Assos
    return $results;
44
  }
45 32700c57 Assos Assos
46 85ad3d82 Assos Assos
}
47
48
/**
49
 * Fetches data via LDAP Query.
50
 */
51
class FeedsLdapQueryFetcher extends FeedsFetcher {
52
53
  /**
54
   * Implements FeedsFetcher::fetch().
55
   */
56
  public function fetch(FeedsSource $source) {
57
    $source_config = $source->getConfigFor($this);
58
    $result = new FeedsLdapQueryFetcherResult($source_config);
59
    return $result;
60
  }
61
62
  /**
63
   * Override parent::configDefaults().
64
   */
65
  public function configDefaults() {
66 32700c57 Assos Assos
    return [
67
      'query_ids' => [],
68
    ];
69 85ad3d82 Assos Assos
  }
70
71 32700c57 Assos Assos
  /**
72 85ad3d82 Assos Assos
   * Override parent::configForm().
73
   */
74
  public function configForm(&$form_state) {
75
    $queries = ldap_query_get_queries(NULL, 'enabled');
76 32700c57 Assos Assos
    $query_options = [0 => '--- select one or more queries ---'];
77 85ad3d82 Assos Assos
    foreach ($queries as $qid => $query) {
78
      $query_options[$qid] = $query->name;
79
    }
80 32700c57 Assos Assos
    $form = [];
81
    $form['query_ids'] = [
82 85ad3d82 Assos Assos
      '#type' => 'select',
83
      '#title' => t('LDAP Query'),
84
      '#multiple' => TRUE,
85
      '#size' => min(10, count($query_options)),
86
      '#required' => TRUE,
87
      '#default_value' => $this->config['query_ids'],
88
      '#description' => t('If more than one query is selected, results from all the queries will be returned.') .
89 32700c57 Assos Assos
      ' ' .
90
      t('Queries can be added and edited at !link', ['!link' => l(t('LDAP Query Admin'), LDAP_QUERY_INDEX_BASE_PATH)]),
91 85ad3d82 Assos Assos
      '#options' => $query_options,
92 32700c57 Assos Assos
    ];
93 85ad3d82 Assos Assos
94
    return $form;
95
  }
96
97
  /**
98
   * Override parent::sourceForm().
99
   */
100
  public function sourceForm($source_config) {
101
102 32700c57 Assos Assos
    $tokens = [
103 bc175c27 Assos Assos
      '!edit_link' => l(t('Edit Feed'), 'admin/structure/feeds/' . $this->id),
104 32700c57 Assos Assos
    ];
105 85ad3d82 Assos Assos
106 32700c57 Assos Assos
    $form_state = [];
107 85ad3d82 Assos Assos
    $form = $this->configForm($form_state);
108 32700c57 Assos Assos
    $form['preamble'] = [
109 85ad3d82 Assos Assos
      '#type' => 'markup',
110
      '#markup' => t('This import is configured at !edit_link.', $tokens),
111 32700c57 Assos Assos
    ];
112 85ad3d82 Assos Assos
113
    return $form;
114
  }
115
116
  /**
117
   * Override parent::sourceFormValidate().
118
   */
119
  public function sourceFormValidate(&$values) {
120 32700c57 Assos Assos
    // Could execute query and see if it returns anything for validation.
121 85ad3d82 Assos Assos
  }
122
123
}