_id: holds the primary key of the entry in the table (-1 = no entry in table i.e. create not update) * o _tn: holds the tablename for which the primary key is valid * o _type: holds the type of entry (text/boolean/list) - for parsing purposes * * The actual value is held in a form field name * * @author Rob Cherry, Jam Warehouse (Pty) Ltd, South Africa * @date 25 January 2003 * @todo - add client side validation stuff * @todo - add column type 3 -> select field stuff * @package lib.visualpatterns */ class PatternEditableTableSqlQuery { /** query to execute*/ var $sQuery; /** table to perform insert/update on */ var $sTableName; /** columns names in $sQuery to display */ var $aDisplayColumnNames; /** column names in $sQuery that will be stored/updated */ var $aStoreColumnNames; /** Array of boolean values dictating column editability */ var $aColumnsEditable; /** columns visible or not (store columns) */ var $aColumnsVisible; /** column types: 1 = text, 2 = boolean, 3 = drop down list */ var $aColumnDisplayTypes; /** 0 = id, 1 = text, 2 = boolean*/ var $aColumnDatabaseTypes; /** Unique name */ var $sUniqueName; function PatternEditableTableSqlQuery($sTmpQuery, $sTmpTableName, $aTmpStoreColumnNames, $aTmpDisplayColumnNames, $aTmpColumnsEditable, $aTmpColumnsVisible, $aTmpColumnDisplayTypes, $aTmpColumnDatabaseTypes) { $this->sQuery = $sTmpQuery; $this->sTableName = $sTmpTableName; $this->aStoreColumnNames = $aTmpStoreColumnNames; $this->aDisplayColumnNames = $aTmpDisplayColumnNames; $this->aColumnsEditable = $aTmpColumnsEditable; $this->sUniqueName = $sTmpUniqueName; $this->aColumnsVisible = $aTmpColumnsVisible; $this->aColumnDisplayTypes = $aTmpColumnDisplayTypes; //echo "Types: " . $aTmpDatabaseColumnTypes; $this->aColumnDatabaseTypes = $aTmpColumnDatabaseTypes; } function setUniqueName($sNewValue) { $this->sUniqueName = $sNewValue; } function setDisplayColumnHeadings($bNewValue) { $this->bDisplayColumnHeadings = $bNewValue; } function setTableCaption($sNewValue) { $this->sTableCaption = $sNewValue; } function setColumnHeaderNames($aNewValue) { $this->aColumnHeaderNames = $aNewValue; } function getRequiredVariableNames() { return $this->aRequiredVariableNames; } function & render() { global $default; //$sToRender = "sWidth>\n"; $sToRender = "
\n"; if (isset($this->sTableCaption)) { $sToRender .= "\n"; } if ($this->bDisplayColumnHeadings) { for ($i = 0; $i < count($this->aColumnHeaderNames); $i++) { $sToRender .= "\n"; } } $sql = $default->db; $sql->query($this->sQuery); if ($sql->num_rows() == 0) { $sToRender .= "\n"; $sToRender .= "\n"; $sToRender .= "\n"; } else { $iRowCount = 0; while ($sql->next_record()) { $sToRender .= "\n"; $sToRender .= "sUniqueName . $iRowCount . "\" value=\"\" />\n"; $sToRender .= "sUniqueName . "_" . $iRowCount . "\" value=\"" . $sql->f("id") . "\" />\n"; $sToRender .= "sUniqueName . "_" . $iRowCount . "_tn\" value=\"" . $this->sTableName . "\" />\n"; for ($i = 0; $i < count($this->aStoreColumnNames); $i++) { //generate the right kind of editable field $sToRender .= "\t\n"; } $sToRender .= "sUniqueName . $iRowCount . "\" value=\"\" />\n"; $sToRender .= "\n"; $iRowCount++; } } $sToRender .= "
$this->sTableCaption
" . $this->aColumnHeaderNames[$i] . "
No " . (isset($this->sTableCaption) ? $this->sTableCaption : "") . " data
\n"; switch ($this->aColumnDisplayTypes[$i]) { case 1: //output the table column name $sToRender .= "\tsUniqueName . "_" . $iRowCount . $i . "_tc\" value=\"" . $this->aStoreColumnNames[$i] . "\" />\n"; //output the column type $sToRender .= "\tsUniqueName . "_" . $iRowCount . $i . "_type\" value=\"" . $this->aColumnDatabaseTypes[$i] . "\" />\n"; //output the value if ($this->aColumnsVisible[$i]) { if ($this->aColumnsEditable[$i]) { $sToRender .= "\tsUniqueName . "_" . $iRowCount . $i . "_value\" value=\"" . stripslashes($sql->f($this->aStoreColumnNames[$i])) . "\" />\n"; } else { $sToRender .= "\tsUniqueName . "_" . $iRowCount . $i . "_value\" value=\"" . $sql->f($this->aStoreColumnNames[$i]) . "\" />".$sql->f($this->aDisplayColumnNames[$i])."\n"; } } else { $sToRender .= "\tsUniqueName . "_" . $iRowCount . $i . "_value\" value=\"" . $sql->f($this->aStoreColumnNames[$i]) . "\" />\n"; } break; case 2: //output the table column name $sToRender .= "\tsUniqueName . "_" . $iRowCount . $i . "_tc\" value=\"" . $this->aStoreColumnNames[$i] . "\" />\n"; //output the column type $sToRender .= "\tsUniqueName . "_" . $iRowCount . $i . "_type\" value=\"" . $this->aColumnDatabaseTypes[$i] . "\" />\n"; //output the value if ($this->aColumnsVisible[$i]) { if ($this->aColumnsEditable[$i]) { $sToRender .= "\tsUniqueName . "_" . $iRowCount . $i . "_value\" value=\"" . ($sql->f($this->aStoreColumnNames[$i] ? "1\" checked" : "0\"")) . " />\n"; } else { $sToRender .= "\tsUniqueName . "_" . $iRowCount . $i . "_value\" value=\"" . $sql->f($this->aStoreColumnNames[$i]) . "\" />".$sql->f($this->aDisplayColumnNames[$i])."\n"; } } else { $sToRender .= "\tsUniqueName . "_" . $iRowCount . $i . "_value\" value=\"" . $sql->f($this->aStoreColumnNames[$i]) . "\" />\n"; } break; case 3: $sToRender .= "The column type for drop downs is not implemented yet\n"; break; default: $sToRender .= "You are attempting to render an unknown column type " . ($this->aColumnTypes[$i]) . " in PatternEditableTableSqlQuery\n"; break; } $sToRender .= "\t
"; return $sToRender; } } ?>