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 85ad3d82 Assos Assos
<?php
2
3
/**
4
 * @file
5
 * Provides the Parser for an ldap entry array.
6
 */
7
8 32700c57 Assos Assos
/**
9
 *
10
 */
11 85ad3d82 Assos Assos
class FeedsLdapEntryParser extends FeedsParser {
12
  public $ldap_result;
13
14 32700c57 Assos Assos
  /**
15 85ad3d82 Assos Assos
   * 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 32700c57 Assos Assos
    $parsed_items = [];
22 85ad3d82 Assos Assos
    for ($i = 0; $i < $ldap_entries['count']; $i++) {
23
      $ldap_entry = $ldap_entries[$i];
24 32700c57 Assos Assos
      $parsed_item = ['dn' => (string) $ldap_entry['dn']];
25 85ad3d82 Assos Assos
      foreach ($mappings as $j => $map) {
26
        $source_lcase = drupal_strtolower($map['source']);
27 32700c57 Assos Assos
        // Dn is already parsed.
28 7547bb19 Assos Assos
        if ($source_lcase == 'dn') {
29
          continue;
30
        }
31 85ad3d82 Assos Assos
        $source = $map['source'];
32
        if (isset($ldap_entry['attr'])) {
33 32700c57 Assos Assos
          // Exception need because of unconvential format of ldap data returned from $ldap_server->userUserNameToExistingLdapEntry.
34 85ad3d82 Assos Assos
          $ldap_attributes = $ldap_entry['attr'];
35
        }
36
        else {
37
          $ldap_attributes = $ldap_entry;
38
        }
39 7547bb19 Assos Assos
        if (isset($ldap_attributes[$source_lcase][0])) {
40 85ad3d82 Assos Assos
          if ($ldap_attributes[$source_lcase]['count'] == 1 && is_scalar($ldap_attributes[$source_lcase][0])) {
41 32700c57 Assos Assos
            $parsed_item[$source] = (string) $ldap_attributes[$source_lcase][0];
42 85ad3d82 Assos Assos
          }
43 5136ce55 Assos Assos
          else {
44
            unset($ldap_attributes[$source_lcase]['count']);
45
            $parsed_item[$source] = $ldap_attributes[$source_lcase];
46
          }
47 85ad3d82 Assos Assos
        }
48
        else {
49 be58a50c Assos Assos
          $parsed_item[$source] = '';
50 85ad3d82 Assos Assos
        }
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 32700c57 Assos Assos
    $form = [];
64 85ad3d82 Assos Assos
    $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 32700c57 Assos Assos
    $this->setConfig(['sources' => $values]);
76 85ad3d82 Assos Assos
    $this->save();
77
  }
78
79
  /**
80 32700c57 Assos Assos
   * Override parent::getMappingSources().
81
   */
82 85ad3d82 Assos Assos
  public function getMappingSources() {
83
    return FALSE;
84
  }
85
86
  /**
87
   * Override parent::configDefaults().
88
   */
89
  public function configDefaults() {
90 32700c57 Assos Assos
    return [];
91 85ad3d82 Assos Assos
  }
92
93 32700c57 Assos Assos
  /**
94 85ad3d82 Assos Assos
   * Override parent::configForm().
95
   */
96
  public function configForm(&$form_state) {
97 32700c57 Assos Assos
    $form = [];
98 85ad3d82 Assos Assos
    return $form;
99
  }
100
101 32700c57 Assos Assos
  /**
102
   *
103
   */
104 85ad3d82 Assos Assos
  public function sourceDefaults() {
105 32700c57 Assos Assos
    return [];
106 85ad3d82 Assos Assos
  }
107
108
}