Overview

Packages

  • Beatnik
  • None

Classes

  • Autogenerate
  • Beatnik
  • Beatnik_Driver
  • Beatnik_Driver_ldap2dns
  • Beatnik_Driver_pdnsgsql
  • Beatnik_Driver_sql
  • DeleteRecord
  • EditRecord
  • Overview
  • Package
  • Class
  • Tree
 1: <?php
 2: /**
 3:  * Copyright 2005-2007 Alkaloid Networks <http://www.alkaloid.net>
 4:  *
 5:  * See the enclosed file LICENSE for license information (GPL). If you
 6:  * did not receive this file, see http://www.horde.org/licenses/gpl.php.
 7:  *
 8:  * @author Ben Klang <ben@alkaloid.net>
 9:  * @package Beatnik
10:  */
11: class EditRecord extends Horde_Form
12: {
13:     /**
14:      */
15:     function EditRecord(&$vars)
16:     {
17:         $isnew = !$vars->exists('id');
18:         $rectype = $vars->get('rectype');
19:         $recset = Beatnik::getRecFields($rectype);
20:         if ($isnew) {
21:             // Pre-load the field defaults on a new record
22:             foreach ($recset as $field => $fdata) {
23:                 if (isset($fdata['default'])) {
24:                     $vars->set($field, $fdata['default']);
25:                 }
26:             }
27:         }
28: 
29:         parent::Horde_Form($vars, $isnew ? _("Add DNS Record") : _("Edit DNS Record"));
30: 
31:         $types = Beatnik::getRecTypes();
32:         if (empty($_SESSION['beatnik']['curdomain'])) {
33:             // Without an active domain, limit the form to creating a new zone.
34:             $types = array('soa' => _('SOA (Start of Authority)'));
35:         }
36:         $action = &Horde_Form_Action::factory('reload');
37:         $select = &$this->addVariable(_("Record Type"), 'rectype', 'enum', true,
38:                                       false, null, array($types, true));
39:         $select->setAction($action);
40:         $select->setOption('trackchange', true);
41: 
42:         // Do not show record-specific fields until a record type is chosen
43:         if (!$rectype) {
44:             return true;
45:         }
46: 
47:         foreach ($recset as $field => $fdata) {
48:             if ($fdata['type'] == 'hidden' || ($fdata['infoset'] != 'basic' &&
49:                 !$_SESSION['beatnik']['expertmode'])) {
50:                 $this->addHidden(_($fdata['description']), $field, 'text',
51:                                  $fdata['required']);
52:             } else {
53:                 $this->addVariable(_($fdata['description']), $field,
54:                                    $fdata['type'], $fdata['required']);
55:             }
56: 
57:         }
58: 
59:         return true;
60:     }
61: }
62: 
API documentation generated by ApiGen