new type API

This commit is contained in:
Roland Gruber 2017-05-01 20:02:44 +02:00
parent 50d472e96d
commit 51bb97ba38
2 changed files with 61 additions and 44 deletions

View File

@ -2132,19 +2132,8 @@ class inetOrgPerson extends baseModule implements passwordService {
} }
/** /**
* Returns an array containing all input columns for the file upload. * {@inheritDoc}
* * @see baseModule::getManagedAttributes()
* Syntax:
* <br> array(
* <br> string: name, // fixed non-translated name which is used as column name (should be of format: <module name>_<column name>)
* <br> string: description, // short descriptive name
* <br> string: help, // help ID
* <br> string: example, // example value
* <br> boolean: required // true, if user must set a value for this column
* <br> )
*
* @param array $selectedModules list of selected account modules
* @return array column list
*/ */
function get_uploadColumns($selectedModules) { function get_uploadColumns($selectedModules) {
$return = parent::get_uploadColumns($selectedModules); $return = parent::get_uploadColumns($selectedModules);

View File

@ -1,9 +1,10 @@
<?php <?php
use LAM\TYPES\TypeManager;
/* /*
$Id$ $Id$
This code is part of LDAP Account Manager (http://www.ldap-account-manager.org/) This code is part of LDAP Account Manager (http://www.ldap-account-manager.org/)
Copyright (C) 2013 - 2015 Roland Gruber Copyright (C) 2013 - 2017 Roland Gruber
This program is free software; you can redistribute it and/or modify This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
@ -78,9 +79,6 @@ class kolabGroup extends baseModule {
$return['objectClasses'] = array('kolabGroupOfUniqueNames'); $return['objectClasses'] = array('kolabGroupOfUniqueNames');
// managed attributes // managed attributes
$return['attributes'] = array('kolabAllowSMTPRecipient', 'kolabAllowSMTPSender', 'kolabDeleteflag'); $return['attributes'] = array('kolabAllowSMTPRecipient', 'kolabAllowSMTPSender', 'kolabDeleteflag');
if ($this->manageMail()) {
$return['attributes'][] = 'mail';
}
// help Entries // help Entries
$return['help'] = array( $return['help'] = array(
'mail' => array( 'mail' => array(
@ -149,24 +147,11 @@ class kolabGroup extends baseModule {
'example' => '.com; -.net', 'example' => '.com; -.net',
), ),
); );
if ($this->manageMail()) {
$return['upload_columns'][] = array(
'name' => 'kolabGroup_mail',
'description' => _('Email address'),
'help' => 'mailList',
'example' => 'list@company.com',
'required' => true,
'unique' => true,
);
}
// available PDF fields // available PDF fields
$return['PDF_fields'] = array( $return['PDF_fields'] = array(
'kolabAllowSMTPRecipient' => _('Allowed recipients'), 'kolabAllowSMTPRecipient' => _('Allowed recipients'),
'kolabAllowSMTPSender' => _('Allowed senders'), 'kolabAllowSMTPSender' => _('Allowed senders'),
); );
if ($this->manageMail()) {
$return['PDF_fields']['mail'] = _('Email address');
}
return $return; return $return;
} }
@ -198,7 +183,7 @@ class kolabGroup extends baseModule {
return $container; return $container;
} }
// mail // mail
if ($this->manageMail()) { if ($this->manageMail($this->getAccountContainer()->get_type()->getModules())) {
$this->addSimpleInputTextField($container, 'mail', _('Email address'), true); $this->addSimpleInputTextField($container, 'mail', _('Email address'), true);
} }
// allowed recipients // allowed recipients
@ -249,7 +234,7 @@ class kolabGroup extends baseModule {
return $errors; return $errors;
} }
// mail // mail
if ($this->manageMail()) { if ($this->manageMail($this->getAccountContainer()->get_type()->getModules())) {
if (!empty($_POST['mail'])) { if (!empty($_POST['mail'])) {
$this->attributes['mail'][0] = $_POST['mail']; $this->attributes['mail'][0] = $_POST['mail'];
// check format // check format
@ -342,6 +327,25 @@ class kolabGroup extends baseModule {
} }
} }
/**
* {@inheritDoc}
* @see baseModule::getManagedAttributes()
*/
function get_uploadColumns($selectedModules) {
$return = parent::get_uploadColumns($selectedModules);
if ($this->manageMail($selectedModules)) {
$return[] = array(
'name' => 'kolabGroup_mail',
'description' => _('Email address'),
'help' => 'mailList',
'example' => 'list@company.com',
'required' => true,
'unique' => true,
);
}
return $return;
}
/** /**
* In this function the LDAP account is built up. * In this function the LDAP account is built up.
* *
@ -363,7 +367,7 @@ class kolabGroup extends baseModule {
$partialAccounts[$i]['objectClass'][] = 'kolabGroupOfUniqueNames'; $partialAccounts[$i]['objectClass'][] = 'kolabGroupOfUniqueNames';
} }
// mail // mail
if ($this->manageMail() && !empty($rawAccounts[$i][$ids['kolabGroup_mail']])) { if ($this->manageMail($selectedModules) && !empty($rawAccounts[$i][$ids['kolabGroup_mail']])) {
if (get_preg($rawAccounts[$i][$ids['kolabGroup_mail']], 'email')) { if (get_preg($rawAccounts[$i][$ids['kolabGroup_mail']], 'email')) {
$this->loadMailCache(); $this->loadMailCache();
if (!in_array_ignore_case(trim($rawAccounts[$i][$ids['kolabGroup_mail']]), $this->mailCache)) { if (!in_array_ignore_case(trim($rawAccounts[$i][$ids['kolabGroup_mail']]), $this->mailCache)) {
@ -389,6 +393,20 @@ class kolabGroup extends baseModule {
return $messages; return $messages;
} }
/**
* {@inheritDoc}
* @see baseModule::get_pdfFields()
*/
public function get_pdfFields($typeId) {
$fields = parent::get_pdfFields($typeId);
$typeManager = new TypeManager();
$modules = $typeManager->getConfiguredType($typeId)->getModules();
if ($this->manageMail($modules)) {
$fields['mail'] = _('Email address');
}
return $fields;
}
/** /**
* {@inheritDoc} * {@inheritDoc}
* @see baseModule::get_pdfEntries() * @see baseModule::get_pdfEntries()
@ -404,20 +422,17 @@ class kolabGroup extends baseModule {
/** /**
* Returns if the mail attribute should be managed. * Returns if the mail attribute should be managed.
* *
* @param string[] $modules account modules
* @return boolean manage mail attribute * @return boolean manage mail attribute
*/ */
private function manageMail() { private function manageMail($modules) {
if (isset($_SESSION['config'])) { if (in_array('qmailGroup', $modules)) {
$conf = $_SESSION['config'];
if (in_array('qmailGroup', $conf->get_AccountModules($this->get_scope()))) {
return false; return false;
} }
else { else {
return true; return true;
} }
} }
return false;
}
/** /**
* Loads the list of email addresses into the cache. * Loads the list of email addresses into the cache.
@ -451,6 +466,19 @@ class kolabGroup extends baseModule {
} }
} }
/**
* {@inheritDoc}
* @see baseModule::getManagedAttributes()
*/
public function getManagedAttributes($typeId) {
$attrs = parent::getManagedAttributes($typeId);
$typeManager = new TypeManager();
if ($this->manageMail($typeManager->getConfiguredType($typeId)->getModules())) {
$attrs[] = 'mail';
}
return $attrs;
}
} }