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' => _("DHCP count: %s"), 'error_noneFound' => _("No DHCPs found!"), 'newEntry' => _("New DHCP"), 'dhcpDefaults' => _("DHCP settings"), 'deleteEntry' => _("Delete selected DHCP entries")); } /** * 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 ""; $dhcphwaddress = explode(" ",$entries[$i]['dhcphwaddress'][0]); echo ""; echo ""; echo ""; } echo "
".array_pop($dhcpstatements)."".array_pop($dhcphwaddress)."".$entries[$i]['cn'][0]."
"; } } // 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 ""; } } echo"
".$ex[0]."
-
".$ex[1]."
"; } } 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"; echo "\n"; echo "\n"; echo "\n"; echo "
\n"; if (checkIfWriteAccessIsAllowed()) { // add/delete buttons echo ("\n"); if (!$createOnly) { echo ("\n"); } echo '      '; echo "\n"; echo '      '; echo ("\n"); echo "   "; ?> \n"; echo "\n"; $this->listShowOUSelection(); echo ""; echo ' '; echo '' . _('Change settings') . ''; echo ''; 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')."'"); } } } ?>