"Fossies" - the Fresh Open Source Software Archive 
Member "adLDAP-4.0.4/src/classes/adLDAPComputers.php" (13 Apr 2013, 5476 Bytes) of package /linux/www/old/adLDAP-4.0.4.tar.gz:
As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) PHP source code syntax highlighting (style:
standard) with prefixed line numbers and
code folding option.
Alternatively you can here
view or
download the uninterpreted source code file.
For more information about "adLDAPComputers.php" see the
Fossies "Dox" file reference documentation.
1 <?php
2 /**
3 * PHP LDAP CLASS FOR MANIPULATING ACTIVE DIRECTORY
4 * Version 4.0.4
5 *
6 * PHP Version 5 with SSL and LDAP support
7 *
8 * Written by Scott Barnett, Richard Hyland
9 * email: scott@wiggumworld.com, adldap@richardhyland.com
10 * http://adldap.sourceforge.net/
11 *
12 * Copyright (c) 2006-2012 Scott Barnett, Richard Hyland
13 *
14 * We'd appreciate any improvements or additions to be submitted back
15 * to benefit the entire community :)
16 *
17 * This library is free software; you can redistribute it and/or
18 * modify it under the terms of the GNU Lesser General Public
19 * License as published by the Free Software Foundation; either
20 * version 2.1 of the License.
21 *
22 * This library is distributed in the hope that it will be useful,
23 * but WITHOUT ANY WARRANTY; without even the implied warranty of
24 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
25 * Lesser General Public License for more details.
26 *
27 * @category ToolsAndUtilities
28 * @package adLDAP
29 * @subpackage Computers
30 * @author Scott Barnett, Richard Hyland
31 * @copyright (c) 2006-2012 Scott Barnett, Richard Hyland
32 * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html LGPLv2.1
33 * @revision $Revision: 97 $
34 * @version 4.0.4
35 * @link http://adldap.sourceforge.net/
36 */
37 require_once(dirname(__FILE__) . '/../adLDAP.php');
38 require_once(dirname(__FILE__) . '/../collections/adLDAPComputerCollection.php');
39
40 /**
41 * COMPUTER MANAGEMENT FUNCTIONS
42 */
43 class adLDAPComputers {
44
45 /**
46 * The current adLDAP connection via dependency injection
47 *
48 * @var adLDAP
49 */
50 protected $adldap;
51
52 public function __construct(adLDAP $adldap) {
53 $this->adldap = $adldap;
54 }
55
56 /**
57 * Get information about a specific computer. Returned in a raw array format from AD
58 *
59 * @param string $computerName The name of the computer
60 * @param array $fields Attributes to return
61 * @return array
62 */
63 public function info($computerName, $fields = NULL)
64 {
65 if ($computerName === NULL) { return false; }
66 if (!$this->adldap->getLdapBind()) { return false; }
67
68 $filter = "(&(objectClass=computer)(cn=" . $computerName . "))";
69 if ($fields === NULL) {
70 $fields = array("memberof","cn","displayname","dnshostname","distinguishedname","objectcategory","operatingsystem","operatingsystemservicepack","operatingsystemversion");
71 }
72 $sr = ldap_search($this->adldap->getLdapConnection(), $this->adldap->getBaseDn(), $filter, $fields);
73 $entries = ldap_get_entries($this->adldap->getLdapConnection(), $sr);
74
75 return $entries;
76 }
77
78 /**
79 * Find information about the computers. Returned in a raw array format from AD
80 *
81 * @param string $computerName The name of the computer
82 * @param array $fields Array of parameters to query
83 * @return mixed
84 */
85 public function infoCollection($computerName, $fields = NULL)
86 {
87 if ($computerName === NULL) { return false; }
88 if (!$this->adldap->getLdapBind()) { return false; }
89
90 $info = $this->info($computerName, $fields);
91
92 if ($info !== false) {
93 $collection = new adLDAPComputerCollection($info, $this->adldap);
94 return $collection;
95 }
96 return false;
97 }
98
99 /**
100 * Check if a computer is in a group
101 *
102 * @param string $computerName The name of the computer
103 * @param string $group The group to check
104 * @param bool $recursive Whether to check recursively
105 * @return array
106 */
107 public function inGroup($computerName, $group, $recursive = NULL)
108 {
109 if ($computerName === NULL) { return false; }
110 if ($group === NULL) { return false; }
111 if (!$this->adldap->getLdapBind()) { return false; }
112 if ($recursive === NULL) { $recursive = $this->adldap->getRecursiveGroups(); } // use the default option if they haven't set it
113
114 //get a list of the groups
115 $groups = $this->groups($computerName, array("memberof"), $recursive);
116
117 //return true if the specified group is in the group list
118 if (in_array($group, $groups)){
119 return true;
120 }
121
122 return false;
123 }
124
125 /**
126 * Get the groups a computer is in
127 *
128 * @param string $computerName The name of the computer
129 * @param bool $recursive Whether to check recursively
130 * @return array
131 */
132 public function groups($computerName, $recursive = NULL)
133 {
134 if ($computerName === NULL) { return false; }
135 if ($recursive === NULL) { $recursive = $this->adldap->getRecursiveGroups(); } //use the default option if they haven't set it
136 if (!$this->adldap->getLdapBind()){ return false; }
137
138 //search the directory for their information
139 $info = @$this->info($computerName, array("memberof", "primarygroupid"));
140 $groups = $this->adldap->utilities()->niceNames($info[0]["memberof"]); //presuming the entry returned is our guy (unique usernames)
141
142 if ($recursive === true) {
143 foreach ($groups as $id => $groupName){
144 $extraGroups = $this->adldap->group()->recursiveGroups($groupName);
145 $groups = array_merge($groups, $extraGroups);
146 }
147 }
148
149 return $groups;
150 }
151
152 }
153 ?>