added accountContainer when getting PDF fields
This commit is contained in:
		
							parent
							
								
									9a8f264450
								
							
						
					
					
						commit
						c01e6c242e
					
				|  | @ -762,49 +762,8 @@ abstract class baseModule { | |||
| 	/** | ||||
| 	 * Returns a hashtable with all entries that may be printed out in the PDF. | ||||
| 	 * | ||||
| 	 * Calling this method does not require the existence of an enclosing {@link accountContainer}.<br> | ||||
| 	 * <br> | ||||
| 	 * This method must be overwritten in case that there are non static values | ||||
| 	 * to be returned. The $this->meta['PDF_fields'] array may be used for static content.<br> | ||||
| 	 * <br> | ||||
| 	 * <b>Format of returned hashtable:</b><br> | ||||
| 	 * <br> | ||||
| 	 * This function uses XML formatted commands to define the PDF output. Each part in the PDF | ||||
| 	 * document is surrounded by "<block>" and "</block>".<br> | ||||
| 	 * Inside the <block> tags there are different ways to format the output: | ||||
| 	 * <ul> | ||||
| 	 * <li><b>simple line with attribute name and value:</b> <block><key><b>attribute name</b></key><value><b>attribute value</b></value></block></li> | ||||
| 	 * <li><b>table:</b> <block><key><b>attribute name</b></key><tr><td><b>value</b><td><td><b>value</b><td></tr></block><block><tr><td><b>value</b></td><td><b>value</b><td></tr></block></li> | ||||
| 	 * </ul> | ||||
| 	 * <b>Special commands:</b> | ||||
| 	 * <ul> | ||||
| 	 * <li><b>Alignment in <td>:</b> You can specify the alignment in <td> tags with align=(L|R|C) (e.g. <td align=\"L\">)</li>
 | ||||
| 	 * <li><b>Cell width:</b> <td> allows an attribute "width" to set the cell width (e.g. <td width=20%> or <td width=30>).</li> | ||||
| 	 * <li><b>Line breaks:</b> Line breaks can be specified by adding a <<br>> tag. The new line will start at the left border of the PDF document.</li> | ||||
| 	 * </ul> | ||||
| 	 * <br> | ||||
| 	 * <b>Examples:</b><br> | ||||
| 	 * <br> | ||||
| 	 * <b>Simple name+value lines:</b><br><br> | ||||
| 	 * In most cases you will just want to display a single line per attribute with its name and value.<br> | ||||
| 	 * <br> | ||||
| 	 * 'myAttribute' => '<block><key>AttrName</key><value>12345</value></block>'<br> | ||||
| 	 * <br> | ||||
| 	 * This will give the following PDF output:<br> | ||||
| 	 * <br> | ||||
| 	 * <b>Attribute name:</b> 12345<br> | ||||
| 	 * <br> | ||||
| 	 * <br> | ||||
| 	 * <b>Multiline values:</b><br><br> | ||||
| 	 * Sometimes you have multivalued attributes where it is not applicable to write all values in one line but | ||||
| 	 * where you want to list your values one below the other or show a table. This can be done by using the <td> tag.<br> | ||||
| 	 * <br> | ||||
| 	 * This example only uses one column but you can just use more <td> tags per <block> tag to display more columns.<br> | ||||
| 	 * <br> | ||||
| 	 * 'myAttribute' => '<block><key>AttrName</key><tr><td align=\"L\">123</td></tr></block><block><tr><td align=\"L\">456</td></tr></block><block><tr><td align=\"L\">789</td></tr></block>' | ||||
| 	 * | ||||
| 	 * @param string $typeId type id (user, group, host) | ||||
| 	 * @return array PDF entries | ||||
| 	 * @return array PDF entries as key => label | ||||
| 	 * | ||||
| 	 * @see baseModule::get_metaData() | ||||
| 	 */ | ||||
|  |  | |||
|  | @ -409,25 +409,29 @@ function getHelp($module,$helpID,$scope='') { | |||
| * @return array PDF entries (field ID => field label) | ||||
| */ | ||||
| function getAvailablePDFFields($typeId) { | ||||
| 	$mods = $_SESSION['config']->get_AccountModules($typeId); | ||||
| 	$typeManager = new TypeManager(); | ||||
| 	$_SESSION['pdfContainer'] = new accountContainer($typeManager->getConfiguredType($typeId), 'pdfContainer'); | ||||
| 	$_SESSION['pdfContainer']->initModules(); | ||||
| 	$mods = $_SESSION['pdfContainer']->getAccountModules(); | ||||
| 	$return = array(); | ||||
| 	for ($i = 0; $i < sizeof($mods); $i++) { | ||||
| 		$module = moduleCache::getModule($mods[$i], \LAM\TYPES\getScopeFromTypeId($typeId)); | ||||
| 	foreach ($mods as $module) { | ||||
| 		$fields = $module->get_pdfFields($typeId); | ||||
| 		$return[$mods[$i]] = array(); | ||||
| 		$moduleName = get_class($module); | ||||
| 		$return[$moduleName] = array(); | ||||
| 		if (is_array($fields)) { | ||||
| 			foreach ($fields as $fieldID => $fieldLabel) { | ||||
| 				if (is_integer($fieldID)) { | ||||
| 					// support old PDF field list which did not contain a label
 | ||||
| 					$return[$mods[$i]][$fieldLabel] = $fieldLabel; | ||||
| 					$return[$moduleName][$fieldLabel] = $fieldLabel; | ||||
| 				} | ||||
| 				else { | ||||
| 					$return[$mods[$i]][$fieldID] = $fieldLabel; | ||||
| 					$return[$moduleName][$fieldID] = $fieldLabel; | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| 	$return['main'] = array('dn' => _('DN')); | ||||
| 	unset($_SESSION['pdfContainer']); | ||||
| 	return $return; | ||||
| } | ||||
| 
 | ||||
|  | @ -803,7 +807,7 @@ class accountContainer { | |||
| 	/** | ||||
| 	 * Returns the included account modules. | ||||
| 	 * | ||||
| 	 * @return array modules | ||||
| 	 * @return baseModule[] modules | ||||
| 	 */ | ||||
| 	function getAccountModules() { | ||||
| 		return $this->module; | ||||
|  | @ -1699,15 +1703,11 @@ class accountContainer { | |||
| 	/** | ||||
| 	* This function will prepare the object for a new account. | ||||
| 	*/ | ||||
| 	function new_account() { | ||||
| 	public function new_account() { | ||||
| 		logNewMessage(LOG_DEBUG, "New account with type " . $this->type->getId()); | ||||
| 		$this->isNewAccount = true; | ||||
| 		$this->lastLoadedProfile = 'default'; | ||||
| 		$modules = $_SESSION['config']->get_AccountModules($this->type->getId()); | ||||
| 		foreach ($modules as $module) { | ||||
| 			$this->module[$module] = new $module($this->type->getScope()); | ||||
| 			$this->module[$module]->init($this->base); | ||||
| 		} | ||||
| 		$this->initModules(); | ||||
| 		// sort module buttons
 | ||||
| 		$this->sortModules(); | ||||
| 		$profile = \LAM\PROFILES\loadAccountProfile('default', $this->type->getId()); | ||||
|  | @ -1729,6 +1729,17 @@ class accountContainer { | |||
| 		return 0; | ||||
| 	} | ||||
| 
 | ||||
| 	/** | ||||
| 	 * Creates the account modules and initializes them. | ||||
| 	 */ | ||||
| 	public function initModules() { | ||||
| 		$modules = $_SESSION['config']->get_AccountModules($this->type->getId()); | ||||
| 		foreach ($modules as $module) { | ||||
| 			$this->module[$module] = new $module($this->type->getScope()); | ||||
| 			$this->module[$module]->init($this->base); | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	/** | ||||
| 	* This function will save an account to the LDAP database. | ||||
| 	* | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue