cache possible managers
This commit is contained in:
		
							parent
							
								
									3c42706a5f
								
							
						
					
					
						commit
						8efae39e6a
					
				|  | @ -37,6 +37,9 @@ $Id$ | |||
| */ | ||||
| class inetOrgPerson extends baseModule implements passwordService { | ||||
| 	 | ||||
| 	/** caches the list of possible managers */ | ||||
| 	private $cachedManagers = null; | ||||
| 	 | ||||
| 	/** | ||||
| 	* This function fills the message array. | ||||
| 	**/ | ||||
|  | @ -937,17 +940,6 @@ class inetOrgPerson extends baseModule implements passwordService { | |||
| 			$fieldContainer->addElement(new htmlTableExtendedInputField(_('Department(s)'), 'departmentNumber', $departmentNumber, 'departmentNumber'), true); | ||||
| 		} | ||||
| 		if (!$this->isBooleanConfigOptionSet('inetOrgPerson_hideManager')) { | ||||
| 			// get list of existing users for manager attribute
 | ||||
| 			$dnUsers = searchLDAPByAttribute(null, null, 'inetOrgPerson', array('dn'), array('user')); | ||||
| 			for ($i = 0; $i < sizeof($dnUsers); $i++) { | ||||
| 				$dnUsers[$i] = $dnUsers[$i]['dn']; | ||||
| 			} | ||||
| 			usort($dnUsers, array($_SESSION['ldap'], 'cmp_array')); | ||||
| 			array_unshift($dnUsers, '-'); | ||||
| 			$options = array(); | ||||
| 			for ($i = 0; $i < sizeof($dnUsers); $i++) { | ||||
| 				$options[getAbstractDN($dnUsers[$i])] = $dnUsers[$i]; | ||||
| 			} | ||||
| 			$optionsSelected = array(); | ||||
| 			if (isset($this->attributes['manager'][0])) { | ||||
| 				$optionsSelected[] = $this->attributes['manager'][0]; | ||||
|  | @ -955,7 +947,7 @@ class inetOrgPerson extends baseModule implements passwordService { | |||
| 			else { | ||||
| 				$optionsSelected[] = '-'; | ||||
| 			} | ||||
| 			$managerElement = new htmlTableExtendedSelect('manager', $options, $optionsSelected, _('Manager'), 'manager'); | ||||
| 			$managerElement = new htmlTableExtendedSelect('manager', $this->getManagers(), $optionsSelected, _('Manager'), 'manager'); | ||||
| 			$managerElement->setHasDescriptiveElements(true); | ||||
| 			$managerElement->setRightToLeftTextDirection(true); | ||||
| 			$managerElement->setSortElements(false); | ||||
|  | @ -1788,6 +1780,28 @@ class inetOrgPerson extends baseModule implements passwordService { | |||
| 		$this->attributes['userPassword'][0] = pwd_hash($password, true, $this->moduleSettings['posixAccount_pwdHash'][0]); | ||||
| 		return array(); | ||||
| 	} | ||||
| 	 | ||||
| 	/** | ||||
| 	 * Returns a list of possible managers. | ||||
| 	 * | ||||
| 	 * @return array list of format array(abstract DN => DN) | ||||
| 	 */ | ||||
| 	private function getManagers() { | ||||
| 		if ($this->cachedManagers != null) { | ||||
| 			return $this->cachedManagers; | ||||
| 		} | ||||
| 		$dnUsers = searchLDAPByAttribute(null, null, 'inetOrgPerson', array('dn'), array('user')); | ||||
| 		for ($i = 0; $i < sizeof($dnUsers); $i++) { | ||||
| 			$dnUsers[$i] = $dnUsers[$i]['dn']; | ||||
| 		} | ||||
| 		usort($dnUsers, array($_SESSION['ldap'], 'cmp_array')); | ||||
| 		array_unshift($dnUsers, '-'); | ||||
| 		$this->cachedManagers = array(); | ||||
| 		for ($i = 0; $i < sizeof($dnUsers); $i++) { | ||||
| 			$this->cachedManagers[getAbstractDN($dnUsers[$i])] = $dnUsers[$i]; | ||||
| 		} | ||||
| 		return $this->cachedManagers;		 | ||||
| 	} | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue