devdaily home | apple | java | perl | unix | directory | blog

What this is

This file is included in the DevDaily.com "PHP Source Code Warehouse" project. The intent of this project is to help you "Learn PHP by Example" TM.

Other links

The source code

<?php

// module_designer.php - PHProjekt Version 4.2
// copyright  ©  2000-2004 Albrecht Guenther  ag@phprojekt.com
// www.phprojekt.com
// Author: Albrecht Guenther    
             
$path_pre="../";
$include_path = $path_pre."lib/lib.inc.php";
include_once $include_path; 
                       
require_once($path_pre.'lib/dbman_lib.inc.php'); 
              
$modules_available['contacts'] = $o_adresses;
$modules_available['notes'] = $o_notes;
$modules_available['projekte'] = $o_projects;
$modules_available['rts'] = $o_rts; 
$modules_available['protokoll'] = 'Protokoll';  
                                                                                                                           
$form_types = array('text' => $forms_9a,
                    'textarea' => $forms_9b,
                    'display' => $forms_9c,
                    'display_sql' => $forms_9n,
                    'text_create' => $forms_9d,
                    'select_values' => $forms_9e,
                    'select_sql' => $forms_9f,
                    'select_multiple' => $forms_9m,
                    'select_category' => $admin_text70,
                    'upload' => $forms_9g,
                    'date' => $forms_9h,
                    'email' => $forms_9i,
                    'email_create' => $forms_27,
                    'url' => $forms_9k,
                    'contact' => $proj_text12,
                    'contact_create' => $forms_28,
                    'project' => $l_text11,
                    'checkbox' => $forms_9l,
                    'timestamp_show' => $forms_24,
                    'timestamp_create' => $forms_25,
                    'timestamp_modify' => $forms_26,
                    'phone' => $forms_22,
                    'AuthorID' => $forms_23d,
                    'userID' => $forms_29a,
                    'user_show' => $forms_29b,
                    'time' => $forms_9o);  

// security check - only super administrators can work here
if (ereg('a',$user_access) and  $groups and !$user_group) {}
else die("you are not priviledged to do this!");

                                                                                                                                
echo set_page_header();


switch ($action) {
  case 'activate':
  $result = db_query("update ".DB_PREFIX."db_manager 
                         set db_inactive = '0'
                       where ID = $ID") or db_die();
    list_values();                    
    break;
    
  case 'deactivate':
   $result = db_query("update ".DB_PREFIX."db_manager 
                         set db_inactive = '1'
                       where ID = $ID") or db_die();
    list_values();   
    break;

  // modify existing field  
  case 'edit':
    edit($ID);
    break;
  // submit record for edit or create  
  case 'submit':
    // modify properties of existing field 
    if ($ID > 0) {
     $result = db_query("update ".DB_PREFIX."db_manager 
                            set form_name = '$form_name',
                                form_type = '$form_type',
                                form_tooltip = '$form_tooltip',
                                form_pos = '$form_pos',        
                                form_colspan = '$form_colspan',
                                form_rowspan = '$form_rowspan',
                                form_regexp = '$form_regexp',
                                form_default = '$form_default',
                                form_select = '$form_select',
                                list_pos = '$list_pos',
                                list_alt = '$list_alt',
                                filter_show = '$filter_show' 
                          where ID = $ID") or db_die();    
    } 
    // crate new field
    else {  
      // 1. step - create this field in the mentioned table
      // only if this field is a textarea give the db field the type text, otherwise a varchar255
      // fetch db definitions
      include ("../setup/db_var.inc.php");
      // only for textarea we take a text field, for all other cases we hope that a varchar255 will be enough
      if ($form_type == 'textarea') $fieldtype = $db_text[$db_type];
      else $fieldtype = $db_varchar255[$db_type]; 
      
      $result = db_query("alter table ".DB_PREFIX.$db_table." 
                            add ".$db_name1." 
                                $fieldtype") or db_die();
      $result = db_query("update ".DB_PREFIX.$db_table." 
                             set $db_name1 = ''") or db_die();
                             
      // 2. step  - insert this field as a new record into the table db_manager       
      $result = db_query("
      insert into ".DB_PREFIX."db_manager 
                  (ID,         db_table,   db_name,   form_name,   form_type,   form_tooltip,   form_pos,    form_colspan,   form_rowspan,    form_regexp,   form_default,   form_select,   list_pos,   list_alt, filter_show, db_inactive)              
           values ($dbIDnull,'$db_table','$db_name1','$form_name','$form_type','$form_tooltip','$form_pos','$form_colspan','$form_rowspan','$form_regexp','$form_default','$form_select','$list_pos','$list_alt','$filter_show', '0')
      ") or db_die();
    }
    list_values();    
    break;     
  // list fields
  default:
    list_values();
    break;
}

    
function list_values() {
  global $new, $forms_1, $forms_2, $forms_3, $forms_4a, $forms_4b, $forms_5a, $forms_5b, $rts_28, 
         $mail_text33, $sid, $forms_11a;

  // title
  echo "<h3>$forms_1</h3>\n";

  // list available fields                                           
  echo "<table cellpadding=5 cellspacing=1 border=1>\n"; 
  echo "<td colspan=6>(".close_window().")</td></tr>\n";  
  echo "<tr><td>$forms_2</td><td>$forms_3</td>\n";
  echo "<td>$mail_text33</td><td>$forms_11a</td><td>$rts_28</td><td>&nbsp;</td></tr>\n";
  $result = db_query("select ID, form_name, db_table, form_type, db_inactive, form_pos  
                        from ".DB_PREFIX."db_manager 
                    order by db_table, form_pos") or db_die();
  while ($row = db_fetch_row($result)) {                 
    // show title of each new module
    if ($row[2] <> $db_table_prev) {
      echo "<tr><td colspan=6><b>".$row[2]."</b> ";
      echo "(<a href='./module_designer.php?action=edit&ID=0&db_table=".$row[2].$sid."'>$new</a>)";
      echo "</td></tr>\n"; 
    } 
    $db_table_prev = $row[2];
    echo "<tr><td><a href='module_designer.php?action=edit&ID=".$row[0].$sid."'>".enable_vars($row[1])."</td>";
    echo "<td>$row[2]</td><td>$row[3]</td><td>$row[5]</td>";
    // 1. field active
    if (!$row[4]) { echo "<td><div style='color:green'>$forms_4a</div></td><td><a href='./module_designer.php?action=deactivate&ID=".$row[0].$sid."'>$forms_5b</a></td></tr>\n"; } 
    // 2. field inact ... you got it! ;)
    else          { echo "<td><div style='color:red'>$forms_4b</div></td><td><a href='./module_designer.php?action=activate&ID=".$row[0].$sid."'>$forms_5a</a></td></tr>\n"; }    
  }                                                                                                                                       
  echo "</table>";
} 
      
function edit($ID) {   
  global $forms_6a, $forms_6b, $modules_available, $forms_3, $forms_7a, $forms_7b, $forms_8a, $forms_8b, $form_types, $tablename,
         $forms_10a, $forms_10b, $settings_text14, $forms_11b, $forms_12a, $forms_12b, $forms_13a, $forms_13b, 
         $forms_14a, $forms_14b, $forms_15a, $forms_15b, $forms_16a, $forms_16b, $forms_17a, $forms_17b,
         $forms_18a, $forms_18b, $submit_it, $back, $PHPSESSID, $sid, $forms_21a,$forms_21b, $forms_21c, $db_table,
         $forms_9a, $forms_9b, $forms_9c, $forms_9d, $forms_9e, $forms_9f, $forms_9g, $forms_9h, $forms_9i, $forms_9k,
         $admin_text70, $forms_28, $forms_24, $forms_25, $forms_26, $forms_22, $forms_23d, $forms_29a, $forms_29b, $forms_9n;
         

  // title and start form       
  echo "<h3>";
  echo ($ID > 0) ? $forms_6b : $forms_6a;
  echo "</h3>\n";  
  echo "<table cellpadding=3 cellspacing=1 border=1 width=600>";
  echo "<form action='module_designer.php' method='post'>\n";

  // fetch record
  if ($ID > 0) {
    $result = db_query("select ID, db_table, db_name, form_name, form_type, form_tooltip, form_pos, 
                               form_regexp, form_default, form_select, list_pos, list_alt, filter_show,
                               form_colspan, form_rowspan     
                          from ".DB_PREFIX."db_manager 
                         where ID = $ID") or db_die();
    $row = db_fetch_row($result);
    $db_table = $row[1];      }                          

  $hidden = array_merge(array('ID'=>$ID, 'action'=>'submit'), $view_param);
  if(SID)$hidden['PHPSESSID'] = $PHPSESSID; 
  echo hidden_fields($hidden);   
    
  // show module
            
  echo "<tr><td width=150>$forms_3</td><td width=200>"; 
  /*              
  if (!$ID) {
    echo "<select name='db_table'>"; 
    foreach ($modules_available as $module => $module_name) {
      echo "<option value='".$module."'";
      if ($module == $db_table) echo " selected";
      echo ">".$module_name;
    }    
    echo "</select>";  
  }                                     
  else { echo $modules_available[$row[1]]; } 
  */
  echo "<input type=hidden name=db_table value=".$db_table.">\n";
  echo $modules_available[$db_table]."&nbsp;</td><td width=250>&nbsp;</td></tr>\n";

  // name of field    
  echo "<tr><td>$forms_7a</td><td>\n";
  if (!$ID) { echo "<input type=text name=db_name1 size=14>"; }
  else echo $row[2];
  echo "</td><td>$forms_7b</td></tr>\n";
  
  // name in form
  echo "<tr><td>$forms_8a</td><td><input type=text size=40 name=form_name value='$row[3]'></td><td>$forms_8b</td></tr>\n"; 
  
  // type of form element 
  echo "<tr><td>$forms_18a</td><td><select name='form_type'>";  
  foreach ($form_types as $form_type => $type_name) {
    echo "<option value='$form_type'";
    if ($form_type == $row[4]) echo " selected";
    echo ">$type_name";
  } 
  echo "</select></td><td>$forms_18b</td></tr>\n";
  
  // tooltip
  echo "<tr><td>$forms_10a</td><td><textarea rows=5 cols=28 name=form_tooltip>$row[5]</textarea></td><td>$forms_10b</td></tr>\n"; 
  
  // position 
  echo "<tr><td>$settings_text14</td><td><input type=text name=form_pos size=3 value='$row[6]'></td>\n";
  echo "<td>";                        
  // if it's not a new element take the name of the table from the sql result. 
  if (!$db_table) $db_table = $row[1];
    echo $row[6]." ".$forms_11b;
    // check which positions in this modules are occupied
    $result2 = db_query("select form_pos   
                          from ".DB_PREFIX."db_manager 
                         where db_table = '$db_table'") or db_die();
    while ($row2 = db_fetch_row($result2)) $positions[] = $row2[0];    
    for ($i=1; $i < count($positions); $i++) if (!in_array($i, $positions)) echo "$i, ";
  echo "&nbsp;</td></tr>\n"; 
  
  
  // colspan and rowspan
  echo "<tr><td>$forms_21a</td><td><select name=form_colspan>\n";
  for ($i=1;$i<=5;$i++) {
    echo "<option value='$i'";
    if ($i == $row[13]) echo ' selected';
    echo ">$i";
  }
  echo "</select></td><td>$forms_21b</td></tr>\n"; 
  echo "<tr><td>$forms_21a</td><td><select name=form_rowspan>\n";
  for ($i=1;$i<=5;$i++) {
    echo "<option value='$i'";
    if ($i == $row[14]) echo ' selected';
    echo ">$i";
  }
  echo "</select></td><td>$forms_21c</td></tr>\n";         
                 
  // Regular expression   
  echo "<tr><td>$forms_12a</td><td><input type=text size=40 name=form_regexp value='$row[7]'></td><td>$forms_12b</td></tr>\n"; 

  // default value
  echo "<tr><td>$forms_13a</td><td><input type=text size=40 name=form_default value='$row[8]'></td><td>$forms_13b</td></tr>\n";
  
  // select 
  echo "<tr><td>$forms_14a</td><td><textarea rows=5 cols=28 name=form_select>$row[9]</textarea></td><td>$forms_14b</td></tr>\n";   
  
  // position in list view
  echo "<tr><td>$forms_15a</td><td><input type=text name=list_pos size=2 value='$row[10]'></td><td>$forms_15b</td>\n";
  
  // appears in the alt tag
  echo "<tr><td>$forms_16a</td><td><input type=checkbox name=list_alt";
  if ($row[11] <> '') echo " checked"; 
  echo "></td><td>$forms_16b</td>\n"; 
  
  // appears in the filter
  echo "<tr><td>$forms_17a</td><td><input type=checkbox name=filter_show";
  if ($row[12] <> '') echo " checked"; 
  echo "></td><td>$forms_17b</td>\n";      
  
  // end of form
  echo "</table><input type=submit value='$submit_it'></form>"; 
  // back button
  echo "<br><a href='module_designer.php?action=null".$sid."'>$back</a>";
}


?>
</body></html>




Copyright 1998-2008 Alvin Alexander
All Rights Reserved.
 
devdaily.com is based in louisville, kentucky, and this web site is hosted by godaddy.com