Commit 4c335bd72d742cfb4b61641c4401ca6a96f5457c

Authored by rob
1 parent 0a2a2263

Initial revision. Display one row from a db table in an editable format


git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@566 c91229c3-7414-0410-bfa2-8a42b809f60b
lib/visualpatterns/PatternEditableListFromQuery.inc 0 → 100644
  1 +<?php
  2 +/**
  3 +* Class PatternEditableListFromQuery
  4 +* Takes a SQL query, an array of column names and and an array of column types
  5 +* and displays the data in an editable two column list format
  6 +*
  7 +* @author Rob Cherry, Jam Warehouse (Pty) Ltd, South Africa
  8 +* @date 27 January 2003
  9 +* @package lib.visualpatterns
  10 +*
  11 +* @todo implement HyperLinkURL option
  12 +*/
  13 +
  14 +class PatternEditableListFromQuery {
  15 +
  16 + /** SQL query to execute */
  17 + var $sQuery;
  18 + /** table on which to perform store/create */
  19 + var $sTableName;
  20 + /** array of columns to display */
  21 + var $aDisplayColumns;
  22 + /** columns to store */
  23 + var $aStoreColumns;
  24 + /** names of columns to display */
  25 + var $aColumnNames;
  26 + /** array of column types (1 = text, 2 = boolean, 3 = dropdown list) */
  27 + var $aDisplayColumnTypes;
  28 + /** database column types (0 = id, 1 = text, 2 = boolean) */
  29 + var $aDatabaseColumnTypes;
  30 + /** number of rows for text area if text area option is being used */
  31 + var $iTextAreaRows = 6;
  32 + /** number of colums for text area if text area option is being used */
  33 + var $iTextAreaColums = 20;
  34 + /** heading for table */
  35 + var $sTableHeading;
  36 + /** set the table width */
  37 + var $iTableWidth = null;
  38 + /** unique name to prepend to form variables */
  39 + var $sUniqueName;
  40 +
  41 + /**
  42 + * Default constructor
  43 + *
  44 + * @param String Query to execute
  45 + * @param
  46 + */
  47 + function PatternEditableListFromQuery($sNewQuery, $sNewTableName, $aNewDisplayColumns, $aNewStoreColumns, $aNewColumnNames, $aNewDisplayColumnTypes, $aNewDatabaseColumnTypes) {
  48 + $this->sQuery = $sNewQuery;
  49 + $this->sTableName = $sNewTableName;
  50 + $this->aDisplayColumns = $aNewDisplayColumns;
  51 + $this->aStoreColumns = $aNewStoreColumns;
  52 + $this->aColumnNames = $aNewColumnNames;
  53 + $this->aDisplayColumnTypes = $aNewDisplayColumnTypes;
  54 + $this->aDatabaseColumnTypes = $aNewDatabaseColumnTypes;
  55 + }
  56 +
  57 + function setUniqueName($sNewValue) {
  58 + $this->sUniqueName = $sNewValue;
  59 + }
  60 +
  61 + function setTableWidth($iNewValue) {
  62 + $this->iTableWidth = $iNewValue;
  63 + }
  64 +
  65 + function setTextAreaRows($iNewValue) {
  66 + $this->iTextAreaRows = $iNewValue;
  67 + }
  68 +
  69 + function setTextAreaDisplayColumns($iNewValue) {
  70 + $this->iTextAreaDisplayColumns = $iNewValue;
  71 + }
  72 +
  73 + function setTableHeading($sNewValue) {
  74 + $this->sTableHeading = $sNewValue;
  75 + }
  76 +
  77 + function setRenderIndividualTableForEachResult($bNewValue) {
  78 + $this->bIndividualTableForEachResult = $bNewValue;
  79 + }
  80 +
  81 + function & render() {
  82 + $sql = new Owl_DB();
  83 + $sql->query($this->sQuery);
  84 + if ($sql->next_record()) {;
  85 + $sToRender = "";
  86 + $sToRender .= "<table border = 0, cellpadding = 5 " . (isset($this->iTableWidth) ? ", width = $this->iTableWidth" : "") . " >\n";
  87 + $sToRender .= "<input type=\"hidden\" name=\"unique_start_" . $this->sUniqueName . "\" value=\"\" />\n";
  88 + $sToRender .= "<input type=\"hidden\" name=\"$this->sUniqueName\" value=\"" . $sql->f("id") . "\" />\n";
  89 + $sToRender .= "<input type=\"hidden\" name=\"" . $this->sUniqueName . "_tn\" value=\"$this->sTableName\" />\n";
  90 +
  91 + if (isset($this->sTableHeading)) {
  92 + $sToRender .= "<caption align = left><b>$this->sTableHeading</b></caption>\n";
  93 + }
  94 +
  95 + if ($sql->num_rows() == 0) {
  96 + $sToRender .= "<tr>\n";
  97 + $sToRender .= "<td colspan=" . count($this->aDisplayColumns) . ">No " . (isset($this->sTableHeading) ? "$this->sTableHeading" : "") . " data</td>\n";
  98 + $sToRender .= "</tr>\n";
  99 + } else {
  100 + for ($i = 0; $i < count($this->aDisplayColumns); $i++) {
  101 + $sToRender .= "<tr>\n";
  102 + $sToRender .= "<input type=\"hidden\" name=\"" . $this->sUniqueName . "_tc\" value=\"" . $this->aStoreColumns[$i] . "\" />\n";
  103 + $sToRender .= "<input type=\"hidden\" name=\"" . $this->sUniqueName . "_type\" value=\"" . $this->aDatabaseColumnTypes[$i] . "\" />\n";
  104 + $sToRender .= "\t<td>" . $this->aColumnNames[$i] . "</td>\n";
  105 + switch ($this->aDisplayColumnTypes[$i]) {
  106 + case 1:
  107 + //plain text field
  108 + $sToRender .= "\t<td><input type=\"text\" name=\"" . $this->sUniqueName . "_" . $i . "_value\" value=\"" . $sql->f($this->aDisplayColumns[$i]) . "\"</td>\n";
  109 + break;
  110 + case 2:
  111 + //boolean value
  112 + //$sToRender .= "\t<td><textarea cols=$this->iTextAreaDisplayColumns rows=$this->iTextAreaRows READONLY>" . $sql->f($this->aDisplayColumns[$i]) . "</textarea></td>\n";
  113 + break;
  114 + case 3:
  115 + break;
  116 + default:
  117 + break;
  118 + }
  119 + $sToRender .= "</tr>\n";
  120 + }
  121 +
  122 + /*while ($sql->next_record()) {
  123 + //$sToRender .= "<tr><td>\n";
  124 + for ($i = 0; $i < count($this->aDisplayColumns); $i++) {
  125 + $sToRender .= "<tr>\n";
  126 + $sToRender .= "<input type=\"hidden\" name=\"" . $this->sUniqueName . "_tc\" value=\"" . $this->aStoreColumns[$i] . "\" />\n";
  127 + $sToRender .= "<input type=\"hidden\" name=\"" . $this->sUniqueName . "_type\" value=\"" . $this->aDatabaseColumnTypes[$i] . "\" />\n";
  128 + $sToRender .= "\t<td>" . $this->aColumnNames[$i] . "</td>\n";
  129 + switch ($this->aDisplayColumnTypes[$i]) {
  130 + case 1:
  131 + //plain text field
  132 + $sToRender .= "\t<td><input type=\"text\" name=\"" . $this->sUniqueName . "_" . $i . "_value\" value=\"" . $sql->f($this->aDisplayColumns[$i]) . "\"</td>\n";
  133 + break;
  134 + case 2:
  135 + //boolean value
  136 + //$sToRender .= "\t<td><textarea cols=$this->iTextAreaDisplayColumns rows=$this->iTextAreaRows READONLY>" . $sql->f($this->aDisplayColumns[$i]) . "</textarea></td>\n";
  137 + break;
  138 + case 3:
  139 + break;
  140 + default:
  141 + break;
  142 + }
  143 + $sToRender .= "</tr>\n";
  144 + }
  145 + }*/
  146 + }
  147 + $sToRender .= "<input type=\"hidden\" name=\"unique_end_" . $this->sUniqueName . "\" value=\"\" />\n";
  148 + $sToRender .= "</table>\n";
  149 + }
  150 + return $sToRender;
  151 + }
  152 +
  153 + function replaceValues($sQueryStringText, $sql) {
  154 + return $sQueryStringText;
  155 + }
  156 +
  157 +}
  158 +
  159 +?>