1
|
|
|
<?php |
2
|
|
|
|
3
|
|
|
defined('BASEPATH') OR exit('No direct script access allowed'); |
4
|
|
|
|
5
|
|
|
class Jobs_model extends CI_Model { |
6
|
|
|
|
7
|
|
|
public function __construct() { |
8
|
|
|
parent::__construct(); |
9
|
|
|
} |
10
|
|
|
|
11
|
|
|
function update_active_ad_users() { |
|
|
|
|
12
|
|
|
|
13
|
|
|
$ldap_password = $this->config->item('ldapbindpass'); |
14
|
|
|
$ldap_username = $this->config->item('ldapshortdomain').$this->config->item('ldapbindun'); |
15
|
|
|
$ldap_connection = ldap_connect($this->config->item('ldapserver')); |
16
|
|
|
|
17
|
|
|
ldap_set_option($ldap_connection, LDAP_OPT_PROTOCOL_VERSION, 3) or die('Unable to set LDAP protocol version'); |
18
|
|
|
ldap_set_option($ldap_connection, LDAP_OPT_REFERRALS, 0); |
19
|
|
|
|
20
|
|
|
if (TRUE === ldap_bind($ldap_connection, $ldap_username, $ldap_password)) { |
21
|
|
|
$search_filter = '(&(objectCategory=person)(samaccountname=*))'; |
22
|
|
|
$attributes = array(); |
23
|
|
|
$attributes[] = 'givenname'; |
24
|
|
|
$attributes[] = 'samaccountname'; |
25
|
|
|
$attributes[] = 'sn'; |
26
|
|
|
$attributes[] = 'mail'; |
27
|
|
|
$ad_users = array(); |
28
|
|
|
|
29
|
|
|
//empty database |
30
|
|
|
$this->db->truncate('users_ad'); |
31
|
|
|
|
32
|
|
|
$result_admin = ldap_search($ldap_connection, $this->config->item('ldapuserjobouone'), $search_filter, $attributes); |
33
|
|
View Code Duplication |
if (FALSE !== $result_admin) { |
|
|
|
|
34
|
|
|
$entries = ldap_get_entries($ldap_connection, $result_admin); |
35
|
|
|
for ($x = 0; $x < $entries['count']; $x++) { |
36
|
|
|
if (!empty($entries[$x]['givenname'][0]) && |
37
|
|
|
!empty($entries[$x]['samaccountname'][0]) && |
38
|
|
|
!empty($entries[$x]['sn'][0]) && |
39
|
|
|
!empty($entries[$x]['mail'][0])) { |
40
|
|
|
$ad_users[] = array('first_name' => trim($entries[$x]['givenname'][0]), 'last_name' => trim($entries[$x]['sn'][0]), 'full_name' => trim($entries[$x]['givenname'][0]).' '. trim($entries[$x]['sn'][0]), 'username' => trim($entries[$x]['samaccountname'][0]), 'email' => trim($entries[$x]['mail'][0])); |
41
|
|
|
} |
42
|
|
|
} |
43
|
|
|
} |
44
|
|
|
$result_canterbury = ldap_search($ldap_connection, $this->config->item('ldapuserjoboutwo'), $search_filter, $attributes); |
45
|
|
View Code Duplication |
if (FALSE !== $result_canterbury) { |
|
|
|
|
46
|
|
|
$entries = ldap_get_entries($ldap_connection, $result_canterbury); |
47
|
|
|
for ($x = 0; $x < $entries['count']; $x++) { |
48
|
|
|
if (!empty($entries[$x]['givenname'][0]) && |
49
|
|
|
!empty($entries[$x]['samaccountname'][0]) && |
50
|
|
|
!empty($entries[$x]['sn'][0]) && |
51
|
|
|
!empty($entries[$x]['mail'][0])) { |
52
|
|
|
$ad_users[] = array('first_name' => trim($entries[$x]['givenname'][0]), 'last_name' => trim($entries[$x]['sn'][0]), 'full_name' => trim($entries[$x]['givenname'][0]).' '. trim($entries[$x]['sn'][0]), 'username' => trim($entries[$x]['samaccountname'][0]), 'email' => trim($entries[$x]['mail'][0])); |
53
|
|
|
} |
54
|
|
|
} |
55
|
|
|
} |
56
|
|
|
$result_sheppy = ldap_search($ldap_connection, $this->config->item('ldapuserjobouthree'), $search_filter, $attributes); |
57
|
|
View Code Duplication |
if (FALSE !== $result_sheppy) { |
|
|
|
|
58
|
|
|
$entries = ldap_get_entries($ldap_connection, $result_sheppy); |
59
|
|
|
for ($x = 0; $x < $entries['count']; $x++) { |
60
|
|
|
if (!empty($entries[$x]['givenname'][0]) && |
61
|
|
|
!empty($entries[$x]['samaccountname'][0]) && |
62
|
|
|
!empty($entries[$x]['sn'][0]) && |
63
|
|
|
!empty($entries[$x]['mail'][0])) { |
64
|
|
|
$ad_users[] = array('first_name' => trim($entries[$x]['givenname'][0]), 'last_name' => trim($entries[$x]['sn'][0]), 'full_name' => trim($entries[$x]['givenname'][0]).' '. trim($entries[$x]['sn'][0]), 'username' => trim($entries[$x]['samaccountname'][0]), 'email' => trim($entries[$x]['mail'][0])); |
65
|
|
|
} |
66
|
|
|
} |
67
|
|
|
} |
68
|
|
|
$result_nicks = ldap_search($ldap_connection, $this->config->item('ldapuserjoboufour'), $search_filter, $attributes); |
69
|
|
View Code Duplication |
if (FALSE !== $result_nicks) { |
|
|
|
|
70
|
|
|
$entries = ldap_get_entries($ldap_connection, $result_nicks); |
71
|
|
|
for ($x = 0; $x < $entries['count']; $x++) { |
72
|
|
|
if (!empty($entries[$x]['givenname'][0]) && |
73
|
|
|
!empty($entries[$x]['samaccountname'][0]) && |
74
|
|
|
!empty($entries[$x]['sn'][0]) && |
75
|
|
|
!empty($entries[$x]['mail'][0])) { |
76
|
|
|
$ad_users[] = array('first_name' => trim($entries[$x]['givenname'][0]), 'last_name' => trim($entries[$x]['sn'][0]), 'full_name' => trim($entries[$x]['givenname'][0]).' '. trim($entries[$x]['sn'][0]), 'username' => trim($entries[$x]['samaccountname'][0]), 'email' => trim($entries[$x]['mail'][0])); |
77
|
|
|
} |
78
|
|
|
} |
79
|
|
|
} |
80
|
|
|
$result_nicks = ldap_search($ldap_connection, $this->config->item('ldapuserjoboufive'), $search_filter, $attributes); |
81
|
|
View Code Duplication |
if (FALSE !== $result_nicks) { |
|
|
|
|
82
|
|
|
$entries = ldap_get_entries($ldap_connection, $result_nicks); |
83
|
|
|
for ($x = 0; $x < $entries['count']; $x++) { |
84
|
|
|
if (!empty($entries[$x]['givenname'][0]) && |
85
|
|
|
!empty($entries[$x]['samaccountname'][0]) && |
86
|
|
|
!empty($entries[$x]['sn'][0]) && |
87
|
|
|
!empty($entries[$x]['mail'][0])) { |
88
|
|
|
$ad_users[] = array('first_name' => trim($entries[$x]['givenname'][0]), 'last_name' => trim($entries[$x]['sn'][0]), 'full_name' => trim($entries[$x]['givenname'][0]).' '. trim($entries[$x]['sn'][0]), 'username' => trim($entries[$x]['samaccountname'][0]), 'email' => trim($entries[$x]['mail'][0])); |
89
|
|
|
} |
90
|
|
|
} |
91
|
|
|
} |
92
|
|
|
|
93
|
|
|
ldap_unbind($ldap_connection); |
94
|
|
|
} |
95
|
|
|
|
96
|
|
|
if ($this->db->insert_batch('users_ad', $ad_users)) { |
|
|
|
|
97
|
|
|
|
98
|
|
|
$ip = $_SERVER['REMOTE_ADDR']; |
99
|
|
|
$data = array( |
100
|
|
|
'timestamp' => date("Y-m-d H:i:s", time()), |
101
|
|
|
'ip' => $ip, |
102
|
|
|
'job' => 'Users updated successfully.', |
103
|
|
|
); |
104
|
|
|
|
105
|
|
|
return $this->db->insert('job_log', $data); |
106
|
|
|
} else { |
107
|
|
|
|
108
|
|
|
$ip = $_SERVER['REMOTE_ADDR']; |
109
|
|
|
$data = array( |
110
|
|
|
'timestamp' => date("Y-m-d H:i:s", time()), |
111
|
|
|
'ip' => $ip, |
112
|
|
|
'job' => 'Users updated failed.', |
113
|
|
|
); |
114
|
|
|
return $this->db->insert('job_log', $data); |
115
|
|
|
} |
116
|
|
|
} |
117
|
|
|
} |
Adding explicit visibility (
private
,protected
, orpublic
) is generally recommend to communicate to other developers how, and from where this method is intended to be used.