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 Collection 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 38abstract class adLDAPCollection 39{ 40 /** 41 * The current adLDAP connection via dependency injection 42 * 43 * @var adLDAP 44 */ 45 protected $adldap; 46 47 /** 48 * The current object being modifed / called 49 * 50 * @var mixed 51 */ 52 protected $currentObject; 53 54 /** 55 * The raw info array from Active Directory 56 * 57 * @var array 58 */ 59 protected $info; 60 61 public function __construct($info, adLDAP $adldap) 62 { 63 $this->setInfo($info); 64 $this->adldap = $adldap; 65 } 66 67 /** 68 * Set the raw info array from Active Directory 69 * 70 * @param array $info 71 */ 72 public function setInfo(array $info) 73 { 74 if ($this->info && sizeof($info) >= 1) { 75 unset($this->info); 76 } 77 $this->info = $info; 78 } 79 80 /** 81 * Magic get method to retrieve data from the raw array in a formatted way 82 * 83 * @param string $attribute 84 * @return mixed 85 */ 86 public function __get($attribute) 87 { 88 if (isset($this->info[0]) && is_array($this->info[0])) { 89 foreach ($this->info[0] as $keyAttr => $valueAttr) { 90 if (strtolower($keyAttr) == strtolower($attribute)) { 91 if ($this->info[0][strtolower($attribute)]['count'] == 1) { 92 return $this->info[0][strtolower($attribute)][0]; 93 } 94 else { 95 $array = array(); 96 foreach ($this->info[0][strtolower($attribute)] as $key => $value) { 97 if ((string)$key != 'count') { 98 $array[$key] = $value; 99 } 100 } 101 return $array; 102 } 103 } 104 } 105 } 106 else { 107 return NULL; 108 } 109 } 110 111 /** 112 * Magic set method to update an attribute 113 * 114 * @param string $attribute 115 * @param string $value 116 * @return bool 117 */ 118 abstract public function __set($attribute, $value); 119 120 /** 121 * Magic isset method to check for the existence of an attribute 122 * 123 * @param string $attribute 124 * @return bool 125 */ 126 public function __isset($attribute) { 127 if (isset($this->info[0]) && is_array($this->info[0])) { 128 foreach ($this->info[0] as $keyAttr => $valueAttr) { 129 if (strtolower($keyAttr) == strtolower($attribute)) { 130 return true; 131 } 132 } 133 } 134 return false; 135 } 136} 137?> 138