LDAPAccountManager/lam/lib/baseType.inc

225 lines
6.0 KiB
PHP
Raw Normal View History

2006-01-01 16:30:05 +00:00
<?php
/*
$Id$
2009-10-27 18:47:12 +00:00
This code is part of LDAP Account Manager (http://www.ldap-account-manager.org/)
Copyright (C) 2005 - 2016 Roland Gruber
2006-01-01 16:30:05 +00:00
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
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/**
* This is the parent class of all account types.
*
* @package types
* @author Roland Gruber
*/
/**
* This is the parent class of all account types.
*
* @package types
*/
class baseType {
2016-12-28 18:52:57 +00:00
2012-07-15 12:05:47 +00:00
/** label to create another account */
2009-02-18 19:15:56 +00:00
public $LABEL_CREATE_ANOTHER_ACCOUNT;
2012-07-15 12:05:47 +00:00
/** label to return to account list */
2009-02-18 19:15:56 +00:00
public $LABEL_BACK_TO_ACCOUNT_LIST;
/**
* Creates a new type object.
*/
public function __construct() {
$this->LABEL_CREATE_ANOTHER_ACCOUNT = _('Create another account');
$this->LABEL_BACK_TO_ACCOUNT_LIST = _('Back to account list');
}
2016-12-28 18:52:57 +00:00
2006-01-01 16:30:05 +00:00
/**
* Returns the alias name of this account type.
* This function must be overwritten by the child classes.
*
* @return string alias name
*/
2009-02-18 19:15:56 +00:00
public function getAlias() {
2006-01-01 16:30:05 +00:00
return "baseType";
}
2016-12-28 18:52:57 +00:00
2006-01-01 16:30:05 +00:00
/**
* Returns the description of this account type.
* This function must be overwritten by the child classes.
*
* @return string description
*/
2009-02-18 19:15:56 +00:00
public function getDescription() {
2006-01-01 16:30:05 +00:00
return "base type";
}
2016-12-28 18:52:57 +00:00
2006-01-01 16:30:05 +00:00
/**
* Returns the class name for the list object.
*
* @return string class name
*/
2009-02-18 19:15:56 +00:00
public function getListClassName() {
2006-01-01 16:30:05 +00:00
return "lamList";
}
2016-12-28 18:52:57 +00:00
2006-01-01 16:30:05 +00:00
/**
* Returns the default attribute list for this account type.
* This function must be overwritten by the child classes.
*
* @return string attribute list
*/
2009-02-18 19:15:56 +00:00
public function getDefaultListAttributes() {
2006-01-01 16:30:05 +00:00
return "dn:DN,objectClass:Object classes";
}
/**
* Returns a list of attributes which have a translated description.
* This is used for the head row in the list view.
*
* @return array list of descriptions
*/
2009-02-18 19:15:56 +00:00
public function getListAttributeDescriptions() {
2006-01-01 16:30:05 +00:00
return array();
}
2016-12-28 18:52:57 +00:00
/**
* Returns if entries of this type may be created via file upload.
*
* @return boolean true, if file upload is supported
*/
public function supportsFileUpload() {
return true;
}
2016-12-28 18:52:57 +00:00
/**
* Returns the the title text for the title bar on the new/edit page.
*
* @param accountContainer $container account container
* @return String title text
*/
public function getTitleBarTitle($container) {
if ($container->dn_orig == null) {
return null;
}
return htmlspecialchars(getAbstractDN($container->dn_orig));
}
/**
* Returns the the title text for the title bar on the new/edit page.
*
* @param accountContainer $container account container
* @return String title text
*/
public function getTitleBarSubtitle($container) {
return null;
}
2016-12-28 18:52:57 +00:00
2016-12-31 09:43:31 +00:00
/**
* Returns the LDAP filter to find the possible suffixes for this account type.
*
* @return string LDAP filter
*/
public function getSuffixFilter() {
return "(|(objectClass=organizationalunit)(objectClass=country)(objectClass=organization)(objectClass=krbRealmContainer)(objectClass=container))";
}
2011-04-25 17:46:57 +00:00
/**
* Returns a list of LDAP suffixes for this type.
2016-12-28 18:52:57 +00:00
*
2011-04-25 17:46:57 +00:00
* @return array sorted list of possible suffixes for this type.
*/
public function getSuffixList() {
$suffix = $_SESSION["config"]->get_Suffix(get_class($this));
$connection = $_SESSION["ldap"]->server();
2011-04-25 17:46:57 +00:00
$ret = array();
2016-12-31 09:43:31 +00:00
$filter = $this->getSuffixFilter();
$sr = @ldap_search($connection, escapeDN($suffix),$filter , array('dn', 'objectClass'), 0, 0, 0, LDAP_DEREF_NEVER);
2011-04-25 17:46:57 +00:00
if ($sr) {
$units = ldap_get_entries($connection, $sr);
2011-05-21 10:58:22 +00:00
cleanLDAPResult($units);
2011-04-25 17:46:57 +00:00
// extract Dns
2013-04-24 18:28:23 +00:00
$count = sizeof($units);
for ($i = 0; $i < $count; $i++) {
if (in_array('container', $units[$i]['objectclass'])) {
// Active Directory fix, hide system containers
if (preg_match('/.*cn=system,dc=.+/i', $units[$i]['dn']) || preg_match('/.*CN=program data,dc=.+/i', $units[$i]['dn'])) {
continue;
}
}
$ret[] = $units[$i]['dn'];
2011-04-25 17:46:57 +00:00
}
}
// add root suffix if needed
$found = false;
for ($i = 0; $i < sizeof($ret); $i++) { // search suffix case-intensitive
if (strtolower($suffix) == strtolower($ret[$i])) {
$found = true;
break;
}
}
if (!$found) {
$ret[] = $suffix;
}
usort($ret, 'compareDN');
return $ret;
}
2016-12-28 18:52:57 +00:00
2012-04-09 13:20:24 +00:00
/**
* This function is called after the edit page is processed and before the page content is generated.
* This can be used to run custom handlers after each page processing.
2016-12-28 18:52:57 +00:00
*
2012-04-09 13:20:24 +00:00
* @param accountContainer $container account container
*/
public function runEditPagePostAction(&$container) {
2016-12-28 18:52:57 +00:00
2012-04-09 13:20:24 +00:00
}
2016-12-28 18:52:57 +00:00
2014-07-12 13:29:15 +00:00
/**
* Returns a list of configuration options.
2016-12-28 18:52:57 +00:00
*
2014-07-12 13:29:15 +00:00
* The field names are used as keywords to load and save settings.
* We recommend to use the type name as prefix for them (e.g. user_someSetting) to avoid naming conflicts.
*
* @return mixed htmlElement or array of htmlElement
2016-12-28 18:52:57 +00:00
*
2014-07-12 13:29:15 +00:00
* @see htmlElement
*/
public function get_configOptions() {
return null;
}
2006-01-01 16:30:05 +00:00
2014-07-12 13:29:15 +00:00
/**
* Checks input values of config settings.
* <br>
* If the input data is invalid the return value is an array that contains subarrays to build StatusMessages ('message type', 'message head', 'message text').
* <br>If no errors occured the function returns an empty array.
*
* @param array $options hash array (option name => value) that contains the input. The option values are all arrays containing one or more elements.
* @return array list of error messages
*/
public function check_configOptions(&$options) {
return array();
}
2016-12-28 18:52:57 +00:00
public function supportsMultipleConfigs() {
return false;
}
2006-01-01 16:30:05 +00:00
}
?>