"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 ?>