Update of /cvsroot/phpweather/phpweather
In directory usw-pr-cvs1:/tmp/cvs-serv15670

Modified Files:
        configurator.php 
Log Message:
The objects are working!


Index: configurator.php
===================================================================
RCS file: /cvsroot/phpweather/phpweather/configurator.php,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- configurator.php    2001/05/19 09:11:13     1.2
+++ configurator.php    2001/05/19 10:16:56     1.3
@@ -13,7 +13,7 @@
   var $data;
   var $config_header;
 
-  function property($name, $description, $data) {
+  function property($name, $data, $description) {
     $this->name = $name;
     $this->description = $description;
     $this->data = $data;
@@ -25,13 +25,16 @@
   }
 
   function get_description() {
-    return $this->description
+    return $this->description;
   }
 
-
 }
 
 class text extends property {
+  
+  function text($name, $data, $description) {
+    $this->property($name, $data, $description);
+  }
 
   function get_html() {
     return '<input type="text" name="' . $this->name . '" value="' .
@@ -41,8 +44,7 @@
 
   function get_config($new_data) {
     if ($new_data != $this->data) {
-      return '/* ' . $this->name . " */\n\$this->properties['" .
-       $this->name . "'] = '$new_data'\n\n";
+      return $this->config_header . "'$new_data';\n\n";
     } else {
       return '';
     }
@@ -51,6 +53,10 @@
 
 class select extends property {
 
+  function select($name, $data, $description) {
+    $this->property($name, $data, $description);
+  }
+
   function get_html() {
     $output = '<select name="' . $this->name . "\">\n";
     list($option, $label) = each($this->data);
@@ -65,7 +71,7 @@
   function get_config($new_data) {
     list($default) = each($this->data);
     if ($new_data != $default) {
-      return $this->config_header "'$new_data'\n\n";
+      return $this->config_header . "'$new_data';\n\n";
     } else {
       return '';
     }
@@ -75,6 +81,10 @@
 
 class multi_select extends property {
 
+  function multi_select($name, $data, $description) {
+    $this->property($name, $data, $description);
+  }
+
   function get_html() {
     $output = '<select name="' . $this->name . "\" multiple>\n";
     while(list($option, $label) = each($this->data)) {
@@ -85,7 +95,7 @@
   }
 
   function get_config($new_data) {
-    $output = $this->config_header "array(\n" .
+    $output = $this->config_header . "array(\n" .
       "  '$new_data[0]'";
     for ($i = 1; $i < count($new_data); $i++) {
       $output .= ",\n  '$new_data[$i]'";
@@ -98,6 +108,10 @@
 
 class boolean extends property {
 
+  function boolean($name, $data, $description) {
+    $this->property($name, $data, $description);
+  }
+
   function get_html() {
     $output = '<select name="' . $this->name . "\">\n";
     /* The first option is the default */
@@ -113,7 +127,7 @@
   function get_config($new_data) {
     list($default) = each($this->data);
     if ($new_data != $default) {
-      return $this->config_header . "'$new_data'\n\n";
+      return $this->config_header . "'$new_data';\n\n";
     } else {
       return '';
     }
@@ -121,132 +135,144 @@
 
 }
 
-$properties['always_use_db'] = array(
-  'type'   => 'boolean',
-  'values' => array('false' => 'No',
+$properties['always_use_db'] =
+  new boolean('always_use_db',
+             array('false' => 'No',
                    'true'  => 'Yes'),
-  'desc'   => "If you set this option to 'Yes', then PHP Weather " .
+             "If you set this option to 'Yes', then PHP Weather " .
               "will always use the data it finds in the database, " .
               "even if it's too old. But if the data isn't there, " .
               "it will still fetch new data from the Internet.");
 
-$properties['station'] = array(
-  'type'  => 'text',
-  'value' => 'EKYT',
-  'desc'  => 'This will be the default station used by PHP ' .
-             'Weather. You should enter a four-letter ICAO.');
-
-$properties['db_hostname'] = array(
-  'type'   => 'text',
-  'value'  => '',
-  'desc'   => 'This is the hostname that PHP Weather will use, ' .
-              'if you choose to use a database-backend, that ' .
-              'supports network connections.');
-
-$properties['db_database'] = array(
-  'type'  => 'text',
-  'value' => '',
-  'desc'  => 'This is the name of the database that PHP Weather ' .
-             'should use.');
-
-$properties['db_username'] = array(
-  'type'  => 'text',
-  'value' => '',
-  'desc'  => 'This is the username that PHP Weather will use.');
-
-$properties['db_password'] = array(
-  'type'  => 'text',
-  'value' => '',
-  'desc'  => 'This is the password that PHP Weather will use when ' .
-             'trying to make a connection to the database. If you ' .
-             ' don\'t use a database that requires a password, ' . 
-             'then just leave this field blank.');
-
-$properties['db_pconnect'] = array(
-  'type'   => 'boolean',
-  'values' => array('false' => 'No',
+$properties['station'] =
+  new text('station',
+          'EKYT',
+          'This will be the default station used by PHP Weather. ' .
+          'You should enter a four-letter ICAO.');
+
+$properties['db_hostname'] =
+  new text('db_hostname',
+          '',
+          'This is the hostname that PHP Weather will use, ' .
+          'if you choose to use a database-backend, that ' .
+          'supports network connections.');
+
+$properties['db_database'] =
+  new text('db_database',
+          '',
+          'This is the name of the database that PHP Weather ' .
+          'should use.');
+
+$properties['db_username'] =
+  new text('db_username',
+          '',
+          'This is the username that PHP Weather will use.');
+
+$properties['db_password'] =
+  new text('db_password',
+          '',
+          'This is the password that PHP Weather will use when ' .
+          'trying to make a connection to the database. If you ' .
+          ' don\'t use a database that requires a password, ' . 
+          'then just leave this field blank.');
+
+$properties['db_pconnect'] =
+  new boolean('db_pconnect',
+             array('false' => 'No',
                    'true'  => 'Yes'),
-  'desc'   => 'If you want to make a persistent connection to the ' .
+             'If you want to make a persistent connection to the ' .
               'database, then set this option to \'Yes\'.');
 
-$properties['db_port'] = array(
-  'type'  => 'text',
-  'value' => '',
-  'desc'  => 'If you have to use a non-standard port when ' .
-             'connecting to the database, then please specify it ' .
-             'here. If not, then just leave this field blank.');
-
-$properties['db_path'] = array(
-  'type'  => 'text',
-  'value' => 'PHPWEATHER_BASE_DIR',
-  'desc'  => 'If you\'re using a text-style database, then use ' .
-             'this option to select the directory you would like ' .
-             'to use, for the database-files. If you wan\'t '.
-             'PHP Weather to use it\'s base-directory, then leave ' .
-             'this option at \'PHPWEATHER_BASE_DIR\'.');
-
-$properties['db_metars'] = array(
-  'type'  => 'text',
-  'value' => 'metars.db',
-  'desc'  => 'This is the name of the database that is used to cache ' .
-             'METARs.');
-
-$properties['db_stations'] = array(
-  'type'  => 'text',
-  'value' => 'stations.db',
-  'desc'  => 'This is the name of the database that is used to store ' .
-             'the names of the stations.');
-
-$properties['db_type'] = array(
-  'type'   => 'select',
-  'values' => array('null'  => 'No database at all',
-                   'mysql' => 'A MySQL database',
-                   'dba'   => 'A Berkeley DB style database',
-                   'pqsql' => 'A PostgreSQL database'),
-  'desc'   => 'PHP Weather can use several different ' .
-              'database-engines. Please choose one from the list.');
-
-$properties['pref_units'] = array(
-  'type'   => 'select',
-  'values' => array('both_metric'   => 'Metric first, then imperical',
-                   'both_imperial' => 'Imperial first, then metric',
-                   'only_metric'   => 'Only metric',
-                   'only_imperial' => 'Only imperial'),
-  'desc'   => 'You can choose to display the data in several ' .
-              'formats. Pleace choose one that fits your need.');
-
-$properties['mark_begin'] = array(
-  'type'  => 'text',
-  'value' => '<b>',
-  'desc'  => 'This string will be placed infront of all the ' .
-             'changable parts of the output. If you don\'t want ' .
-             ' this  to happen, then just use an empty string. ' .
-             'Other good choices include \'&lt;i&gt;\', \'&lt;font ' .
-             'color="red"&gt;, etc.');
-
-$properties['mark_end'] = array(
-  'type'  => 'text',
-  'value' => '</b>',
-  'desc'  => 'This string is places after all the changable parts. ' .
-             'You should make sure, that it closes any tags ' .
-             ' you\'ve opened in <code>mark_begin</code>');
-
-$properties['exclude'] = array(
-  'type'   => 'multi_select',
-  'values' => array('time' => 'The time part',
-                 'wind' => 'The wind part',
-                 'runway' => 'Information about runways'),
-  'desc'   => 'You can disable some of the output produced. If ' .
-              'you\'re not interested in information about ' .
-              ' runways-visibility, then select it in this list. ' .
-              'You can select severel options at once by holding ' .
-              'down Ctrl while clicking on the option in Netscape.');
-
-$properties['language']      = array(
-  'type'   => 'select',
-  'values' => array('en' => 'English'),
-  'desc'   => 'PHP Weather can produce output in several langauges ' .
-              '- pleace select the default from the list.');
+$properties['db_port'] =
+  new text('db_port',
+          '',
+          'If you have to use a non-standard port when ' .
+          'connecting to the database, then please specify it ' .
+          'here. If not, then just leave this field blank.');
+
+$properties['db_path'] =
+  new text('db_path',
+          'PHPWEATHER_BASE_DIR',
+          'If you\'re using a text-style database, then use ' .
+          'this option to select the directory you would like ' .
+          'to use, for the database-files. If you wan\'t '.
+          'PHP Weather to use it\'s base-directory, then leave ' .
+          'this option at \'PHPWEATHER_BASE_DIR\'.');
+
+$properties['db_metars'] =
+  new text('db_metars',
+          'metars.db',
+          'This is the name of the database that is used to cache ' .
+          'METARs.');
+
+$properties['db_stations'] =
+  new text('db_stations',
+          'stations.db',
+          'This is the name of the database that is used to store ' .
+          'the names of the stations.');
+
+$properties['db_type'] =
+  new select('db_type',
+            array('null'  => 'No database at all',
+                  'mysql' => 'A MySQL database',
+                  'dba'   => 'A Berkeley DB style database',
+                  'pqsql' => 'A PostgreSQL database'),
+            'PHP Weather can use several different ' .
+            'database-engines. Please choose one from the list.');
+
+$properties['db_handler'] =
+  new select('db_handler',
+            array('dbm'  => 'dbm - The oldest (original) type of ' .
+                            'Berkeley DB style databases',
+                  'ndbm' => 'ndbm - a newer and more flexible type.',
+                  'gdbm' => 'gdbm - The GNU database manager',
+                  'db2'  => 'db2 - Sleepycat Software\'s DB2',
+                  'db3'  => 'db3 - Sleepycat Software\'s DB3'),
+            'If you\'ve chosen to use a Berkeley DB style database ' .
+            'through PHP database abstraction layer (dba), then ' .
+            'please select the handler you would like to use.');
+
+$properties['pref_units'] =
+  new select('pref_units',
+            array('both_metric'   => 'Metric first, then imperical',
+                  'both_imperial' => 'Imperial first, then metric',
+                  'only_metric'   => 'Only metric',
+                  'only_imperial' => 'Only imperial'),
+            'You can choose to display the data in several ' .
+            'formats. Pleace choose one that fits your need.');
+
+$properties['mark_begin'] =
+  new text('mark_begin',
+          '<b>',
+          'This string will be placed infront of all the ' .
+          'changable parts of the output. If you don\'t want ' .
+          ' this  to happen, then just use an empty string. ' .
+          'Other good choices include \'&lt;i&gt;\', \'&lt;font ' .
+          'color="red"&gt;, etc.');
+
+$properties['mark_end'] =
+  new text('mark_end',
+          '</b>',
+          'This string is places after all the changable parts. ' .
+          'You should make sure, that it closes any tags ' .
+          ' you\'ve opened in <code>mark_begin</code>');
+
+$properties['exclude'] =
+  new multi_select('exclude',
+                  array('time' => 'The time part',
+                        'wind' => 'The wind part',
+                        'runway' => 'Information about runways'),
+                  'You can disable some of the output produced. If ' .
+                  'you\'re not interested in information about ' .
+                  ' runways-visibility, then select it in this list. ' .
+                  'You can select severel options at once by holding ' .
+                  'down Ctrl while clicking on the option in Netscape.');
+
+$properties['language'] =
+  new select('language',
+            array('en' => 'English'),
+            'PHP Weather can produce output in several langauges ' .
+            '- pleace select the default from the list.');
 
 if ($action == 'make_config') {
 
@@ -257,38 +283,19 @@
   print_r($GLOBALS['HTTP_POST_VARS']);
   echo "</pre>\n";
 
+  $config = "<?php
+echo '<p>defaults.php was included!</p>';
 
-  $config = "
 /* This is a local configurations file for PHP Weather.
    It was generated on the $timestamp. */\n\n";
 
   while(list($option, $value) = each($GLOBALS['HTTP_POST_VARS'])) {
-    if (!empty($value)) {
-      if ($properties[$option]['type'] == 'boolean' &&
-         $properties[$option]['value'] != $value) {
-       $config .= "/* $option: */\n\$this->properties['$option'] = $value;\n";
-      } elseif ($properties[$option]['type'] == 'text' &&
-               $properties[$option]['value'] != $value) {
-       $config .= "/* $option: */\n\$this->properties['$option'] = '$value';\n";
-      } elseif ($properties[$option]['type'] == 'select') {
-       list($default) = each($properties[$option]['values']);
-       if ($default != $value) {
-         $config .= "/* $option: */\n\$this->properties['$option'] = '$value';\n";
-       }
-      } elseif ($properties[$option]['type'] == 'multi_select') {
-       /* $value is then an array */
-       $config .= "/* $option: */\n\$this->properties['$option'] = array(\n";
-       $config .= "  '$value[0]'";
-       for ($i = 1; $i < count($value); $i++) {
-         $config .= ",\n  '$value[$i]'";
-       }
-       $config .= "\n);\n";
-
-      }
+    if (!empty($properties[$option])) {
+      $config .= $properties[$option]->get_config($value);
     }
   }
+  $config .= "\n?>\n";
 
-
   /* We first check to see, if there's already a config-file. */
   if (file_exists('defaults.php')) {
     /* We make a backup-copy of the file */
@@ -300,7 +307,6 @@
     $fp = @fopen('defaults.php', 'w');
   }
 
-
   echo "<p>Here's the configuration file based on your answers:</p>
 
 <pre>
@@ -493,37 +499,10 @@
 <input type="hidden" name="action" value="make_config">
 ';
 
-while(list($property, $data) = each($properties)) {
-  echo "<tr>\n  <td>\n    <p><b><code>$property</code></b></p>\n    
<p>$data[desc]</p>\n  </td>\n";
-  switch($data['type']) {
-  case 'boolean':
-    echo "  <td>\n    <select name=\"$property\">\n";
-    while(list($option, $label) = each($data['values'])) {
-      echo "      <option value=\"$option\">$label</option>\n";
-    }
-    echo "    </select>\n  </td>\n";
-    break;
-  case 'text':
-    echo "  <td>\n    <input type=\"text\" name=\"$property\" 
value=\"$data[value]\">\n  </td>\n";
-    break;
-  case 'select':
-    echo "  <td>\n    <select name=\"$property\">\n";
-    /* The first option is the default */
-    list($option, $label) = each($data['values']);
-    echo "      <option value=\"$option\" selected>$label</option>\n";
-    while(list($option, $label) = each($data['values'])) {
-      echo "      <option value=\"$option\">$label</option>\n";
-    }
-    echo "    </select>\n  </td>\n";
-    break;
-  case 'multi_select':
-    echo "  <td>\n    <select multiple name=\"${property}[]\">\n";
-    while(list($option, $label) = each($data['values'])) {
-      echo "      <option value=\"$option\">$label</option>\n";
-    }
-    echo "    </select>\n  </td>\n";
-    break;
-  }
+while(list($property, $obj) = each($properties)) {
+  echo "<tr>\n  <td>\n    <p><b><code>" . $obj->get_name() . "</code></b></p>\n    
+<p>" . $obj->get_description() . "</p>\n  </td>\n";
+
+  echo "<td>" . $obj->get_html() . "</td>\n";
 }
 
 echo '


_______________________________________________
PHPWeather-checkins mailing list
[EMAIL PROTECTED]
http://lists.sourceforge.net/lists/listinfo/phpweather-checkins

Reply via email to