Projet

Général

Profil

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

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

1
<?php
2

    
3
/**
4
 * @file
5
 * Provides the Parser for an ldap entry array.
6
 */
7

    
8
/**
9
 *
10
 */
11
class FeedsLdapEntryParser extends FeedsParser {
12
  public $ldap_result;
13

    
14
  /**
15
   * Implements FeedsParser::parse().
16
   */
17
  public function parse(FeedsSource $source, FeedsFetcherResult $fetcher_result) {
18

    
19
    $mappings = feeds_importer($this->id)->processor->config['mappings'];
20
    $ldap_entries = $fetcher_result->ldap_result;
21
    $parsed_items = [];
22
    for ($i = 0; $i < $ldap_entries['count']; $i++) {
23
      $ldap_entry = $ldap_entries[$i];
24
      $parsed_item = ['dn' => (string) $ldap_entry['dn']];
25
      foreach ($mappings as $j => $map) {
26
        $source_lcase = drupal_strtolower($map['source']);
27
        // Dn is already parsed.
28
        if ($source_lcase == 'dn') {
29
          continue;
30
        }
31
        $source = $map['source'];
32
        if (isset($ldap_entry['attr'])) {
33
          // Exception need because of unconvential format of ldap data returned from $ldap_server->userUserNameToExistingLdapEntry.
34
          $ldap_attributes = $ldap_entry['attr'];
35
        }
36
        else {
37
          $ldap_attributes = $ldap_entry;
38
        }
39
        if (isset($ldap_attributes[$source_lcase][0])) {
40
          if ($ldap_attributes[$source_lcase]['count'] == 1 && is_scalar($ldap_attributes[$source_lcase][0])) {
41
            $parsed_item[$source] = (string) $ldap_attributes[$source_lcase][0];
42
          }
43
          else {
44
            unset($ldap_attributes[$source_lcase]['count']);
45
            $parsed_item[$source] = $ldap_attributes[$source_lcase];
46
          }
47
        }
48
        else {
49
          $parsed_item[$source] = '';
50
        }
51
      }
52
      $parsed_items[] = $parsed_item;
53
    }
54
    $result = new FeedsParserResult();
55
    $result->items = $parsed_items;
56
    return $result;
57
  }
58

    
59
  /**
60
   * Source form.
61
   */
62
  public function sourceForm($source_config) {
63
    $form = [];
64
    $mappings = feeds_importer($this->id)->processor->config['mappings'];
65
    if (empty($source_config)) {
66
      $source_config = $this->config;
67
    }
68
    return $form;
69
  }
70

    
71
  /**
72
   * Override parent::configFormValidate().
73
   */
74
  public function configFormValidate(&$values) {
75
    $this->setConfig(['sources' => $values]);
76
    $this->save();
77
  }
78

    
79
  /**
80
   * Override parent::getMappingSources().
81
   */
82
  public function getMappingSources() {
83
    return FALSE;
84
  }
85

    
86
  /**
87
   * Override parent::configDefaults().
88
   */
89
  public function configDefaults() {
90
    return [];
91
  }
92

    
93
  /**
94
   * Override parent::configForm().
95
   */
96
  public function configForm(&$form_state) {
97
    $form = [];
98
    return $form;
99
  }
100

    
101
  /**
102
   *
103
   */
104
  public function sourceDefaults() {
105
    return [];
106
  }
107

    
108
}