LABEL_CREATE_ANOTHER_ACCOUNT = _('Create another DHCP entry');
$this->LABEL_BACK_TO_ACCOUNT_LIST = _('Back to DHCP list');
}
/**
* Returns the alias name of this account type.
*
* @return string alias name
*/
public function getAlias() {
return _("DHCP");
}
/**
* Returns the description of this account type.
*
* @return string description
*/
public function getDescription() {
return _("DHCP administration");
}
/**
* Returns the class name for the list object.
*
* @return string class name
*/
public function getListClassName() {
return "lamDHCPList";
}
/**
* Returns the default attribute list for this account type.
*
* @return string attribute list
*/
public function getDefaultListAttributes() {
return "#cn;#dhcpRange;#fixed_ips";
}
/**
* 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
*/
public function getListAttributeDescriptions() {
return array (
"cn" => _("Subnet"),
"dhcprange" => _("Ranges"),
"fixed_ips" => _("IP address") . ' / ' . _('MAC address') . ' / ' . _("Description")
);
}
/**
* Returns the the title text for the title bar on the new/edit page.
*
* @param array $attributes list of LDAP attributes for the displayed account (null, if new account)
* @return String title text
*/
public function getTitleBarTitle($attributes) {
if ($attributes == null) {
return _("New DHCP");
}
// check if a common name is set
if (isset($attributes['cn'][0])) {
return htmlspecialchars($attributes['cn'][0]);
}
// fall back to default
return parent::getTitleBarTitle($attributes);
}
/**
* Returns the the title text for the title bar on the new/edit page.
*
* @param array $attributes list of LDAP attributes for the displayed account (null, if new account)
* @return String title text
*/
public function getTitleBarSubtitle($attributes) {
if ($attributes == null) {
return null;
}
$subtitle = '';
// check if an description can be shown
if (isset($attributes['dhcpComments'][0])) {
$subtitle .= htmlspecialchars($attributes['dhcpComments'][0]);
}
if ($subtitle == '') {
return null;
}
return $subtitle;
}
}
/**
* Generates the list view.
*
* @package lists
* @author Thomas Manninger
*
*/
class lamDHCPList extends lamList {
/**
* Constructor
*
* @param string $type account type
* @return lamList list object
*/
public function __construct($type) {
parent::__construct($type);
$this->labels = array(
'nav' => _("%s DHCP(s) found"),
'error_noneFound' => _("No DHCPs found!"),
'newEntry' => _("New DHCP"),
'dhcpDefaults' => _("DHCP settings"),
'deleteEntry' => _("Delete DHCP(s)"));
}
/**
* Prints the content of a cell in the account list for a given LDAP entry and attribute.
*
* @param array $entry LDAP attributes
* @param string $attribute attribute name
*/
public function listPrintTableCellContent(&$entry, &$attribute) {
// Fixed IPs
if ($attribute=="fixed_ips") {
// find all fixed addresses:
$entries = searchLDAP($entry['dn'], 'objectClass=dhcpHost', array('dhcpstatements', 'dhcphwaddress', 'cn'));
if (sizeof($entries) > 0) {
echo "
";
for ($i = 0; $i < sizeof($entries); $i++) {
echo "";
$dhcpstatements = array('');
if (isset($entries[$i]['dhcpstatements'][0])) {
$dhcpstatements = explode(" ",$entries[$i]['dhcpstatements'][0]);
}
echo "".array_pop($dhcpstatements)." | ";
$dhcphwaddress = explode(" ",$entries[$i]['dhcphwaddress'][0]);
echo "".array_pop($dhcphwaddress)." | ";
echo "".$entries[$i]['cn'][0]." | ";
echo "
";
}
echo "
";
}
}
// fixed ip address
elseif ($attribute=="dhcpstatements") {
// Search after the fixed ip entry
if (is_array($entry['dhcpstatements'])) {
foreach($entry['dhcpstatements'] AS $id=>$value) {
if (!is_array($value) && array_shift( explode(" ", $value) ) == "fixed-address") {
$ip = explode(" ", $value);
echo $ip['1'];
}
}
}
}
elseif ($attribute=="dhcprange") { // DHCP Range
if (isset($entry['dhcprange'])) {
echo"";
foreach($entry['dhcprange'] AS $id=>$value) {
if (!is_numeric($value)) {
$ex = explode(" ", $value);
echo "".$ex[0]." | - | ".$ex[1]." |
";
}
}
echo"
";
}
}
else
{
parent::listPrintTableCellContent($entry, $attribute);
}
}
/**
* Prints the create, delete and PDF buttons.
*
* @param boolean $createOnly true if only the create button should be displayed
*/
function listPrintButtons($createOnly) {
echo "\n";
}
/**
* Manages all POST actions (e.g. button pressed) for the account lists.
*/
function listDoPost() {
parent::listDoPost();
if (isset($_POST['dhcpDefaults'])) {
metaRefresh("../account/edit.php?type=dhcp&DN='".$_SESSION['config']->get_suffix('dhcp')."'");
}
}
}
?>