baseline 7.4 as-is produzione

This commit is contained in:
2026-09-09 14:32:53 +00:00
commit 71ec465d7a
3638 changed files with 859299 additions and 0 deletions
+815
View File
@@ -0,0 +1,815 @@
<?php␍
// version 2.31␍
if (!class_exists("WA_MySQLi_Query")) {␍
␍
class WA_MySQLi_Query {␍
public function __construct($conn, $mrt = "mrt") {␍
$this->Action = "";␍
$this->UseAction = "";␍
$this->AffectedRows = 0;␍
$this->Connection = $conn;␍
$this->Debug = false;␍
$this->DieOnError = true;␍
$this->EncryptionAlgorithm = "blowfish";␍
$this->EncryptionKey = "Change Me";␍
$this->EncryptionMode = "cbc";␍
$this->Error = "";␍
$this->ErrorMessage = "There is an error in your SQL syntax.";␍
$this->ErrorNo = 0;␍
$this->FieldCount = 0;␍
$this->Filter = "";␍
$this->FilterValues = array();␍
$this->ID = 0;␍
$this->InsertID = 0;␍
$this->JavascriptRedirect = false;␍
$this->MRTField = $mrt;␍
$this->NumRows = 0;␍
$this->OnDuplicate = "";␍
$this->ParamColumns = array();␍
$this->ParamCount = 0;␍
$this->ParamDefaults = array();␍
$this->ParamTypes = array();␍
$this->ParamValues = array();␍
$this->Prepared = true;␍
$this->RelationalColumns = array();␍
$this->RelationalKeyColumn = false;␍
$this->RelationalRows = array();␍
$this->RelationalRowsFound = false;␍
$this->RepeatConditions = array();␍
$this->RepeatedParams = array();␍
$this->RepeatIndex = 0;␍
$this->SelectedResult = false;␍
$this->Salt = false;␍
$this->SaveAs = "";␍
$this->Statement = "";␍
$this->Table = "";␍
}␍
␍
public function addFilter($filterColumn, $filterComparison, $filterType, $filterValue, $filterRepeat = false, $temporary = false) {␍
if ($filterType == 'i') {␍
if (strval(intval($filterValue)) != $filterValue) {␍
if ($this->Debug) {␍
die("incorrect INTEGER value: " . $filterValue);␍
} else {␍
die($this->ErrorMessage);␍
}␍
}␍
}␍
if ($filterType == 'd') {␍
if (strval(floatval($filterValue)) != $filterValue) {␍
if ($this->Debug) {␍
die("incorrect DOUBLE value: " . $filterValue);␍
} else {␍
die($this->ErrorMessage);␍
}␍
}␍
}␍
$this->FilterValues[] = array($filterColumn, $filterComparison, $filterType, $filterValue, $filterRepeat, $temporary);␍
}␍
␍
private function addRelationalFilters() {␍
$filterValues = array();␍
for ($x=0; $x<sizeof($this->ParamColumns); $x++) {␍
if ($this->ParamColumns[$x][0] == $this->RelationalColumns[0] || $this->ParamColumns[$x][0] == $this->RelationalColumns[1]) {␍
$filterValues[] = array($this->ParamColumns[$x][0], "=", $this->ParamTypes[$x], $this->ParamValues[$x], false, true);␍
}␍
}␍
$this->FilterValues = $filterValues;␍
}␍
␍
public function addRelationship($relationalParentColumn, $relationalChildColumn) {␍
$this->RelationalColumns = array($relationalParentColumn, $relationalChildColumn);␍
}␍
␍
private function addQuerystring($url) {␍
if (empty($_SERVER['QUERY_STRING'])) return $url;␍
if (strpos($url,"?")!==false) return $url . "&" . $_SERVER['QUERY_STRING'];␍
return $url . "?" . $_SERVER['QUERY_STRING'];␍
}␍
␍
public function bindColumn($paramColumn, $paramType, $paramValue, $paramDefault, $mrtParam = false) {␍
if ($this->isBound($paramColumn)) return;␍
if ($mrtParam && !is_array($paramValue)) {␍
$paramValue = array();␍
$toCheck = isset($_POST[$this->MRTField])?$_POST[$this->MRTField]:array();␍
for ($x=0; $x<sizeof($toCheck); $x++) {␍
if (isset($_POST[$mrtParam."_".$toCheck[$x]])) {␍
$paramValue[] = $_POST[$mrtParam."_".$toCheck[$x]];␍
} else {␍
$paramValue[] = "";␍
}␍
}␍
}␍
if (is_array($paramValue) && sizeof($paramValue) > 0) {␍
$this->RepeatedParams[] = array(sizeof($this->ParamColumns), $paramValue, false);␍
$paramValue = $paramValue[0];␍
}␍
$this->ParamColumns[] = array($paramColumn, false);␍
if ($paramType == "c") $paramType = "z";␍
$this->bindParam($paramType, $paramValue, $paramDefault);␍
}␍
␍
private function bindDefault($paramType,$paramValue,$paramDefault) {␍
if ($paramValue === "" || $paramValue === NULL) {␍
if (($paramType == "d" || $paramType == "i") && $paramDefault == "WA_BLANK") $paramDefault = "WA_ZERO";␍
switch ($paramDefault) {␍
case "WA_BLANK":␍
case "WA_IGNORE":␍
case "WA_SKIP":␍
case "WA_DEFAULT":␍
case "WA_TIMESTAMP":␍
$paramValue = "";␍
break;␍
case "WA_NULL":␍
$paramValue = null;␍
break;␍
case "WA_CURRENT_TIMESTAMP":␍
$paramValue = date("Y-m-d H:i:s");␍
break;␍
case "WA_ZERO":␍
$paramValue = "0";␍
break;␍
case "WA_NO":␍
$paramValue = "N";␍
break;␍
default:␍
$paramValue = $paramDefault;␍
}␍
}␍
if ($paramType == "t") {␍
if ($paramValue) {␍
$hasTime = strpos($paramValue," ") !== false;␍
$paramValue = strtotime($paramValue);␍
if ($hasTime) {␍
$paramValue = date('Y-m-d H:i:s',$paramValue);␍
} else {␍
$paramValue = date('Y-m-d',$paramValue);␍
}␍
} else {␍
$paramValue = null;␍
}␍
} else if ($paramType == "c") {␍
$paramValue = "%" . $paramValue . "%";␍
} else if ($paramType == "b") {␍
$paramValue = $paramValue . "%";␍
} else if ($paramType == "e") {␍
$paramValue = "%" . $paramValue;␍
} else if ($paramType == "y") {␍
if ($paramValue) {␍
$paramValue = "Y";␍
} else {␍
$paramValue = "N";␍
}␍
} else if ($paramType == "n" || $paramType == "z") {␍
if ($paramValue) {␍
$paramValue = ($paramType == "n")?"-1":"1";␍
} else {␍
$paramValue = "0";␍
}␍
} ␍
return $paramValue;␍
}␍
␍
public function bindParam($paramType,$paramValue,$paramDefault="",$paramPosition=false) {␍
$paramArray = array($paramValue);␍
$isList = false;␍
if (strpos($paramType,"l")) {␍
$paramType = substr($paramType,0,1);␍
$paramArray = preg_split("/\s*\,\s*/", $paramValue);␍
$isList = true;␍
}␍
for ($x=0; $x<sizeof($paramArray); $x++) {␍
$paramValue = $paramArray[$x];␍
$paramValue = $this->bindDefault($paramType,$paramValue,$paramDefault);␍
if (($isList || sizeof($paramArray) > 1) && $x == 0) {␍
$sqlParts = explode("?",$this->Statement);␍
if (!preg_match("/\(\s*$/",$sqlParts[sizeof($this->ParamValues)]) && !preg_match("/^\s*\)/",$sqlParts[sizeof($this->ParamValues)+1])) {␍
$sqlParts[sizeof($this->ParamValues)] = $sqlParts[sizeof($this->ParamValues)] . "(";␍
$sqlParts[sizeof($this->ParamValues)+1] = ")" . $sqlParts[sizeof($this->ParamValues)+1];␍
}␍
$this->Statement = implode("?",$sqlParts);␍
}␍
if ($x>0) {␍
$sqlParts = explode("?",$this->Statement);␍
$sqlParts[sizeof($this->ParamValues)] = ", ?" . $sqlParts[sizeof($this->ParamValues)];␍
$this->Statement = implode("?",$sqlParts);␍
}␍
if ($paramPosition == false) {␍
$this->ParamTypes[] = $paramType; ␍
$this->ParamValues[] = $paramValue;␍
$this->ParamDefaults[] = $paramDefault;␍
} else {␍
array_splice($this->ParamTypes, $paramPosition, 0, $paramType);␍
array_splice($this->ParamValues, $paramPosition, 0, $paramValue);␍
array_splice($this->ParamDefaults, $paramPosition, 0, $paramDefault);␍
}␍
}␍
}␍
␍
public function checkRepeatConditions() {␍
for ($x=0; $x<sizeof($this->RepeatConditions); $x++) {␍
if (!(isset($_POST[$this->RepeatConditions[$x] . $this->RepeatIndex]) || isset($_GET[$this->RepeatConditions[$x] . $this->RepeatIndex]))) return false;␍
}␍
return true;␍
}␍
␍
private function clearRepeatedFilters() {␍
for ($x=sizeof($this->RepeatedParams)-1; $x>=0; $x--) {␍
if ($this->RepeatedParams[$x][2]) {␍
array_splice($this->ParamValues, $this->RepeatedParams[$x][0], 1);␍
array_splice($this->ParamTypes, $this->RepeatedParams[$x][0], 1);␍
array_splice($this->ParamDefaults, $this->RepeatedParams[$x][0], 1);␍
array_splice($this->RepeatedParams, $x, 1);␍
}␍
}␍
}␍
␍
private function clearTemporaryFilters() {␍
for ($x=sizeof($this->FilterValues)-1; $x>=0; $x--) {␍
if ($this->FilterValues[$x][5]) {␍
array_pop($this->ParamValues);␍
array_pop($this->ParamTypes);␍
array_pop($this->ParamDefaults);␍
array_pop($this->FilterValues);␍
}␍
}␍
}␍
␍
private function clearTemporaryColumns() {␍
for ($x=sizeof($this->ParamColumns)-1; $x>=0; $x--) {␍
if ($this->ParamColumns[$x][1]) {␍
array_splice($this->ParamColumns, $x, 1);␍
array_splice($this->ParamTypes, $x, 1);␍
array_splice($this->ParamDefaults, $x, 1);␍
array_splice($this->ParamValues, $x, 1);␍
}␍
}␍
}␍
␍
public function createStatement() {␍
$this->UseAction = $this->Action;␍
if (strtolower($this->UseAction) == "relational") {␍
if (!$this->RelationalRowsFound) {␍
$this->RelationalRowsFound = true;␍
if (!class_exists("WA_MySQLi_RS")) require(dirname(__FILE__) . "/" . "rsobj.php");␍
$KeyRS = new WA_MySQLi_RS("KeyRS",$this->Connection,0);␍
$KeyRS->setQuery("SHOW KEYS FROM " . $this->Table ." WHERE Key_name = 'PRIMARY'");␍
$KeyRS->execute();␍
$this->RelationalKeyColumn = $KeyRS->getColumnVal("Column_name");␍
␍
if (!$this->RelationalKeyColumn) {␍
$ReplaceDelete = new WA_MySQLi_Query($this->Connection);␍
$ReplaceDelete->setQuery("DELETE FROM " . $this->Table);␍
if (sizeof($ReplaceDelete->FilterValues) >= 1) {␍
$ReplaceDelete->setFilter();␍
$ReplaceDelete->execute(); ␍
}␍
} else {␍
if (!$this->SelectedResult) {␍
$RelationalRS = new WA_MySQLi_RS("RelationalRS",$this->Connection,0);␍
$RelationalRS->setQuery("SELECT " . $this->RelationalColumns[1] . ", " .$this->RelationalKeyColumn. " FROM " . $this->Table);␍
$RelationalRS->FilterValues = array($this->getParentFilterFromRelational());␍
$RelationalRS->setFilter();␍
$RelationalRS->execute();␍
$this->SelectedResult = $RelationalRS;␍
}␍
for ($x=0; $x<sizeof($this->SelectedResult->Results); $x++) {␍
$this->RelationalRows[] = array($this->SelectedResult->Results[$x][$this->RelationalColumns[1]], false, $this->SelectedResult->Results[$x][$this->RelationalKeyColumn]);␍
}␍
}␍
}␍
$relationalChildValue = -1;␍
for ($x=0; $x<sizeof($this->ParamColumns); $x++) {␍
if ($this->ParamColumns[$x][0] == $this->RelationalColumns[1]) {␍
if (empty($this->ParamValues[$x])) {␍
$this->Statement = "";␍
return;␍
}␍
$relationalChildValue = $this->ParamValues[$x];␍
}␍
if ($this->ParamColumns[$x][0] == $this->RelationalColumns[0] && empty($this->ParamValues[$x])) {␍
$this->Statement = "";␍
return;␍
}␍
}␍
$childFound = false;␍
for ($x=0; $x<sizeof($this->RelationalRows); $x++) {␍
if ($relationalChildValue == $this->RelationalRows[$x][0]) {␍
$this->RelationalRows[$x][1] = true;␍
$childFound = true;␍
break;␍
}␍
}␍
if ($childFound) {␍
$this->addRelationalFilters();␍
$this->UseAction = "update";␍
} else {␍
$this->UseAction = "insert";␍
}␍
}␍
if (strtolower($this->UseAction) == "conditional") {␍
if (sizeof($this->FilterValues) > 0) {␍
if (!class_exists("WA_MySQLi_RS")) require(dirname(__FILE__) . "/" . "rsobj.php");␍
$ConditionalRS = new WA_MySQLi_RS("ConditionalRS",$this->Connection,1);␍
$ConditionalRS->setQuery("SELECT Count(*) AS RowCount FROM " . $this->Table);␍
$ConditionalRS->FilterValues = $this->FilterValues;␍
$ConditionalRS->setFilter();␍
$ConditionalRS->execute();␍
if ($ConditionalRS->getColumnVal("RowCount")) {␍
$this->UseAction = "update";␍
} else {␍
$this->FilterValues = array();␍
$this->UseAction = "insert";␍
}␍
} else {␍
$this->UseAction = "insert";␍
}␍
}␍
if (strtolower($this->UseAction) == "replace") {␍
if (sizeof($this->FilterValues) > 0) { ␍
$ReplaceDelete = new WA_MySQLi_Query($this->Connection);␍
$ReplaceDelete->setQuery("DELETE FROM " . $this->Table);␍
$ReplaceDelete->FilterValues = $this->FilterValues;␍
$ReplaceDelete->setFilter();␍
$ReplaceDelete->execute();␍
}␍
$this->UseAction = "insert";␍
}␍
switch (strtolower($this->UseAction)) {␍
case "update":␍
$Columns = "";␍
$this->Statement = "UPDATE " . $this->Table . " SET ";␍
$oneAdded = false;␍
for ($x=0; $x<sizeof($this->ParamColumns); $x++) {␍
if (!(($this->ParamDefaults[$x] == "WA_IGNORE" || $this->ParamDefaults[$x] == "WA_SKIP") && ($this->ParamValues[$x] === "" || $this->ParamValues[$x] === false || $this->ParamValues[$x] === null))) {␍
if ($Columns != "") $Columns .= ", ";␍
$columnRef = $this->ParamColumns[$x][0];␍
if (strpos($columnRef,"`") == false && strpos($columnRef,"(") == false) $columnRef = '`'.$columnRef.'`';␍
$colPlaceholder = "?";␍
if ($this->ParamDefaults[$x] == "WA_DEFAULT" && ($this->ParamValues[$x] === "" || $this->ParamValues[$x] === null || $this->ParamValues[$x] === false)) $colPlaceholder = "DEFAULT";␍
if ($this->ParamDefaults[$x] == "WA_TIMESTAMP" && $this->ParamValues[$x] == "") $colPlaceholder = "SYSDATE()";␍
$Columns .= $columnRef . " = " . $colPlaceholder;␍
$oneAdded = true;␍
}␍
}␍
if (!$oneAdded) {␍
$this->Statement = false;␍
return;␍
}␍
$this->Statement .= $Columns;␍
break;␍
case "insert":␍
$Columns = "";␍
$Values = "";␍
$this->Statement = "INSERT ".($this->OnDuplicate == "ignore"?"IGNORE":"INTO")." " . $this->Table . " (";␍
$oneAdded = false;␍
$onDuplicate = "";␍
for ($x=0; $x<sizeof($this->ParamColumns); $x++) {␍
if (!(($this->ParamDefaults[$x] == "WA_IGNORE" || $this->ParamDefaults[$x] == "WA_SKIP") && ($this->ParamValues[$x] === "" || $this->ParamValues[$x] === null || $this->ParamValues[$x] === false))) {␍
if ($Columns != "") {␍
$Columns .= ", ";␍
$Values .= ", ";␍
}␍
$columnRef = $this->ParamColumns[$x][0];␍
if (strpos($columnRef,"`") == false && strpos($columnRef,"(") == false) $columnRef = '`'.$columnRef.'`';␍
$Columns .= $columnRef;␍
if ($this->ParamDefaults[$x] == "WA_DEFAULT" && ($this->ParamValues[$x] === "" || $this->ParamValues[$x] === null || $this->ParamValues[$x] === false)) {␍
$addValue = "DEFAULT";␍
} else if ($this->ParamDefaults[$x] == "WA_TIMESTAMP") {␍
$addValue = "SYSDATE()";␍
} else {␍
$addValue = "?";␍
}␍
$Values .= $addValue;␍
if ($this->OnDuplicate == "update") {␍
if ($onDuplicate != "") $onDuplicate .= ", ";␍
$onDuplicate .= $columnRef ."=" . $addValue;␍
}␍
$oneAdded = true;␍
}␍
}␍
if (!$oneAdded) {␍
$this->Statement = false;␍
return;␍
}␍
$this->Statement .= $Columns . ") VALUES (" . $Values . ")";␍
if ($this->OnDuplicate == "update") {␍
$this->ParamTypes= array_merge($this->ParamTypes, $this->ParamTypes); ␍
$this->ParamValues = array_merge($this->ParamValues, $this->ParamValues); ␍
$this->ParamDefaults = array_merge($this->ParamDefaults, $this->ParamDefaults); ␍
$onDuplicate = " ON DUPLICATE KEY UPDATE " . $onDuplicate;␍
}␍
$this->Statement .= $onDuplicate;␍
break;␍
case "delete":␍
$this->Statement = "DELETE FROM " . $this->Table;␍
if (sizeof($this->ParamColumns) > 0) $this->Statement .= " WHERE ";␍
for ($x=0; $x<sizeof($this->ParamColumns); $x++) {␍
if ($x!=0) $this->Statement .= " AND ";␍
$columnRef = $this->ParamColumns[$x][0];␍
if (strpos($columnRef,"`") == false && strpos($columnRef,"(") == false) $columnRef = '`'.$columnRef.'`';␍
$colPlaceholder = "?";␍
$this->Statement .= $columnRef . " = " . $colPlaceholder;␍
}␍
break;␍
}␍
$this->setFilter();␍
}␍
␍
public function debugSQL() {␍
$statement = $this->Statement;␍
$paramLen = 1;␍
for ($x=0; $x<sizeof($this->ParamValues); $x++) {␍
if (is_array($this->ParamValues[$x])) $paramLen = sizeof($this->ParamValues[$x]);␍
}␍
for ($x=0; $x<$paramLen; $x++) {␍
$params = ($this->getParams($x));␍
$paramTypes = $params[0];␍
$startStatement = "";␍
$endStatement = $statement;␍
for ($x=0; $x<strlen($paramTypes); $x++) {␍
$pos = strpos($endStatement, "?");␍
if ($pos !== false) {␍
$replace = $this->getSQLValue($params[$x+1],$paramTypes[$x],true);␍
$startStatement .= substr($endStatement,0,$pos) . $replace;␍
$endStatement = substr($endStatement, $pos + 1);␍
}␍
}␍
$statement = $startStatement . $endStatement;␍
}␍
$statement = $startStatement . $endStatement;␍
return $statement;␍
}␍
␍
public function execute($allowTableOverwrite=false) {␍
$shouldRun = true;␍
$startStatement = $this->Statement;␍
while ($this->incrementRepeat()) {␍
if (sizeof($this->RepeatedParams) > 0) {␍
if (!$this->checkRepeatConditions()) {␍
continue;␍
}␍
$this->clearRepeatedFilters();␍
$this->resetRepeated();␍
}␍
if (!$startStatement) {␍
$this->clearTemporaryColumns();␍
$this->createStatement();␍
if (!$this->Statement) continue;␍
if ((strtolower($this->UseAction) == "delete" || strtolower($this->UseAction) == "update") && strpos($this->Statement," WHERE ") === false && !$allowTableOverwrite) {␍
continue;␍
}␍
}␍
if (in_array("WA_SKIP",$this->ParamValues)) continue;␍
if (!$this->Prepared) {␍
$statement = $this->Statement;␍
if (sizeof($this->ParamValues) > 0) {␍
$paramLen = 1;␍
for ($x=0; $x<sizeof($this->ParamValues); $x++) {␍
if (is_array($this->ParamValues[$x])) $paramLen = sizeof($this->ParamValues[$x]);␍
}␍
for ($x=0; $x<$paramLen; $x++) {␍
$params = ($this->getParams($x));␍
$paramTypes = $params[0];␍
$startStatement = "";␍
$endStatement = $statement;␍
for ($x=0; $x<strlen($paramTypes); $x++) {␍
$pos = strpos($endStatement, "?");␍
if ($pos !== false) {␍
$replace = $this->getSQLValue($params[$x+1],$paramTypes[$x]);␍
$startStatement .= substr($endStatement,0,$pos) . $replace;␍
$endStatement = substr($endStatement, $pos + 1);␍
}␍
}␍
$statement = $startStatement . $endStatement;␍
}␍
}␍
$query = $this->Connection->query($statement);␍
if ($query == false) {␍
if ($this->Debug) {␍
die($this->debugSQL() . "<BR><BR>" . mysqli_error($this->Connection));␍
} else {␍
if ($this->DieOnError) {␍
die($this->ErrorMessage);␍
} else {␍
$this->Error = $this->debugSQL() . "<BR><BR>" . mysqli_error($this->Connection);␍
}␍
}␍
} else {␍
$query = false;␍
}␍
} else {␍
if (sizeof($this->ParamTypes) && strpos($this->Statement,"?") !== false) {␍
$query = $this->Connection->Prepare($this->Statement);␍
if ($query == false) {␍
if ($this->Debug) {␍
die($this->debugSQL() . "<BR><BR>" . mysqli_error($this->Connection));␍
} else {␍
if ($this->DieOnError) {␍
die($this->ErrorMessage);␍
} else {␍
$this->Error = $this->debugSQL() . "<BR><BR>" . mysqli_error($this->Connection);␍
}␍
}␍
}␍
$paramLen = 1;␍
for ($x=0; $x<sizeof($this->ParamValues); $x++) {␍
if (is_array($this->ParamValues[$x])) $paramLen = sizeof($this->ParamValues[$x]);␍
}␍
for ($x=0; $x<$paramLen; $x++) {␍
call_user_func_array(array($query, "bind_param"),$this->paramRefs($this->getParams($x)));␍
$query->execute();␍
if ($query->errno) {␍
if ($this->Debug) {␍
die($this->debugSQL() . "<BR><BR>" . $query->error);␍
} else {␍
if ($this->DieOnError) {␍
die($this->ErrorMessage);␍
} else {␍
$this->Error = $this->debugSQL() . "<BR><BR>" . mysqli_error($this->Connection);␍
}␍
}␍
}␍
}␍
$this->clearTemporaryFilters();␍
} else {␍
$query = $this->Connection->query($this->Statement);␍
if ($query == false) {␍
if ($this->Debug) {␍
die($this->debugSQL() . "<BR><BR>" . mysqli_error($this->Connection));␍
} else {␍
if ($this->DieOnError) {␍
die($this->ErrorMessage);␍
} else {␍
$this->Error = $this->debugSQL() . "<BR><BR>" . mysqli_error($this->Connection);␍
}␍
}␍
} else {␍
$query = false;␍
}␍
}␍
}␍
if ($this->SaveAs != "" && strtolower($this->UseAction) == "insert") {␍
@session_start();␍
$_SESSION[$this->SaveAs] = $query?$query->insert_id:$this->Connection->insert_id;␍
}␍
$this->AffectedRows = $query?$query->affected_rows:$this->Connection->affected_rows;␍
$this->AffectedRows = ($this->AffectedRows===-1)?0:$this->AffectedRows;␍
$this->InsertID = $query?$query->insert_id:$this->Connection->insert_id;␍
$this->NumRows = $query?$query->num_rows:0;␍
$this->ParamCount = $query?$query->param_count:0;␍
$this->FieldCount = $query?$query->field_count:$this->Connection->field_count;␍
if (!$this->Error) $this->Error = $query?$query->error:$this->Connection->error;␍
$this->ErrorNo = $query?$query->errno:$this->Connection->errno;␍
$this->ID = $query?$query->id:$this->Connection->thread_id;␍
if ($query && method_exists($query,"close")) $query->close();␍
}␍
␍
␍
if (sizeof($this->RelationalRows)) { ␍
$this->addRelationalFilters();␍
for ($x=0; $x<sizeof($this->RelationalRows); $x++) {␍
if ($this->RelationalRows[$x][1] == false) {␍
$CleanUpQuery = new WA_MySQLi_Query($this->Connection);␍
$CleanUpQuery->Statement = "delete FROM " . $this->Table . " WHERE " . $this->RelationalKeyColumn . " = " . $this->RelationalRows[$x][2];␍
$CleanUpQuery->execute();␍
}␍
}␍
}␍
}␍
␍
private function getChildFilterFromRelational($row) {␍
for ($x=0; $x<sizeof($this->ParamColumns); $x++) {␍
if ($this->ParamColumns[$x][0] == $this->RelationalColumns[1]) {␍
return array($this->RelationalColumns[1], "=", $this->ParamTypes[$x], $this->RelationalRows[$row][0], false, true);␍
}␍
}␍
return array($this->RelationalColumns[0], "=", "i", "-1", false, true);␍
}␍
␍
public function getSalt() {␍
$isStrong = false;␍
$this->Salt = base64_encode(openssl_random_pseudo_bytes(openssl_cipher_iv_length($this->EncryptionAlgorithm),$isStrong));␍
}␍
␍
public function getEncryptedVal($val) {␍
$retVal = $val;␍
$salt = "";␍
if ($this->Salt) $salt = base64_decode($this->Salt);␍
if ($retVal !== "") {␍
$retVal = base64_encode(openssl_encrypt($val,$this->EncryptionAlgorithm,$this->EncryptionKey, OPENSSL_RAW_DATA, $salt));␍
}␍
␍
return $retVal; ␍
}␍
␍
private function getParentFilterFromRelational() {␍
for ($x=0; $x<sizeof($this->ParamColumns); $x++) {␍
if ($this->ParamColumns[$x][0] == $this->RelationalColumns[0]) {␍
return array($this->RelationalColumns[0], "=", $this->ParamTypes[$x], $this->ParamValues[$x], false, true);␍
}␍
}␍
return array($this->RelationalColumns[0], "=", "i", "-1", false, true);␍
}␍
␍
private function getParams($index) {␍
$useParams = array();␍
$useTypes = array();␍
for ($x=0; $x<sizeof($this->ParamValues); $x++) {␍
$paramVal = is_array($this->ParamValues[$x])?$this->ParamValues[$x][$index]:$this->ParamValues[$x];␍
if (!(($paramVal === "" || $paramVal === null || $paramVal === false) && ($this->ParamDefaults[$x] == "WA_DEFAULT" || $this->ParamDefaults[$x] == "WA_IGNORE" || $this->ParamDefaults[$x] == "WA_SKIP" || $this->ParamDefaults[$x] == "WA_TIMESTAMP"))) {␍
$useParams[] = $paramVal;␍
$typesVal = $this->ParamTypes[$x];␍
if ($typesVal == "t" || $typesVal == "c" || $typesVal == "b" || $typesVal == "e" || $typesVal == "y") {␍
$typesVal = "s";␍
} else if ($typesVal == "n" || $typesVal == "z") {␍
$typesVal = "i";␍
} else if ($typesVal != "i" && $typesVal != "d" && $typesVal != "s" && $typesVal != "b") {␍
$typesVal = "s";␍
}␍
$useTypes[] = $typesVal;␍
}␍
}␍
return array_merge(array(implode("",$useTypes)), $useParams);␍
}␍
␍
public function getSelected() {␍
if (!$this->SelectedResult) {␍
$RelationalRS = new WA_MySQLi_RS("RelationalRS",$this->Connection,0);␍
$RelationalRS->setQuery("SELECT " . $this->RelationalColumns[1] . ($this->RelationalKeyColumn?", " .$this->RelationalKeyColumn:""). " FROM " . $this->Table);␍
$RelationalRS->FilterValues = array($this->getParentFilterFromRelational());␍
$RelationalRS->setFilter();␍
$RelationalRS->execute();␍
$this->SelectedResult = $RelationalRS;␍
}␍
return $this->SelectedResult->getColumnArray($this->RelationalColumns[1]);␍
}␍
␍
public function getSQLValue($val,$type,$forDebug=false) {␍
if (is_null($val)) {␍
$retval = "NULL";␍
} else if ($type == 'i') {␍
if (!$forDebug && strval(intval($val)) != $val) {␍
if ($this->Debug) {␍
die($this->debugSQL() . "<BR><BR>" . "Truncated incorrect INTEGER value: " . $val);␍
} else {␍
die($this->ErrorMessage);␍
}␍
}␍
$retval = intval($val);␍
} else if ($type == 'd') {␍
if (!$forDebug && strval(floatval($val)) != $val) {␍
if ($this->Debug) {␍
die($this->debugSQL() . "<BR><BR>" . "Truncated incorrect DOUBLE value: " . $val);␍
} else {␍
die($this->ErrorMessage);␍
}␍
}␍
$retval = floatval($val);␍
} else {␍
$retval = "'" . mysqli_real_escape_string($this->Connection,$val) . "'";␍
}␍
return $retval;␍
}␍
␍
private function incrementRepeat() {␍
$this->RepeatIndex++;␍
$totalRepeats = 1;␍
// check action␍
if ($this->Action == "relational" && sizeof($this->RepeatedParams)>0) {␍
$totalRepeats = sizeof($this->RepeatedParams[0][1]);␍
} else {␍
for ($x=0; $x<sizeof($this->RepeatedParams); $x++) {␍
$totalRepeats *= sizeof($this->RepeatedParams[$x][1]);␍
}␍
}␍
return ($this->RepeatIndex <= $totalRepeats);␍
}␍
␍
public function isBound($column) {␍
for ($x=0; $x<sizeof($this->ParamColumns); $x++) {␍
if ($this->ParamColumns[$x][0] == $column) return true;␍
}␍
return false;␍
}␍
␍
public function paramRefs($arr) {␍
if (strnatcmp(phpversion(),'5.3') >= 0) {␍
$refs = array();␍
foreach($arr as $key => $value) $refs[$key] = &$arr[$key];␍
return $refs;␍
}␍
return $arr;␍
}␍
␍
public function redirect($url,$keepQuerystring=false) {␍
if ($url) {␍
$url = str_replace("[InsertID]",$this->InsertID,$url);␍
$url = str_replace("[Insert_ID]",$this->InsertID,$url);␍
if ($keepQuerystring) {␍
if ($this->JavascriptRedirect) {␍
echo('<script>document.location.href="'.$this->addQuerystring($url).'";</script>');␍
} else {␍
header("location: " . $this->addQuerystring($url));␍
}␍
}␍
if ($this->JavascriptRedirect) {␍
echo('<script>document.location.href="'.$url.'";</script>');␍
} else {␍
header("location: " . $url);␍
}␍
die();␍
}␍
}␍
␍
private function resetCombinations($arrays, $i = 0) {␍
if (!isset($arrays[$i])) {␍
return array();␍
}␍
if ($i == count($arrays) - 1) {␍
return $arrays[$i];␍
}␍
if ($this->Action === "relational") {␍
for ($x=0; $x<sizeof($arrays[0]); $x++) {␍
$row = array();␍
for ($y=0; $y<sizeof($arrays); $y++) {␍
$row[] = $arrays[$y][$x];␍
}␍
$result[] = $row;␍
}␍
} else {␍
$tmp = $this->resetCombinations($arrays, $i + 1);␍
$result = array();␍
foreach ($arrays[$i] as $v) {␍
foreach ($tmp as $t) {␍
$result[] = is_array($t) ? ␍
array_merge(array($v), $t) :␍
array($v, $t);␍
}␍
}␍
}␍
return $result;␍
}␍
␍
public function resetRepeated() {␍
$index = 0;␍
$combinations = array();␍
for ($x=0; $x<sizeof($this->RepeatedParams); $x++) {␍
$combinations[] = $this->RepeatedParams[$x][1];␍
}␍
$allParams = $this->resetCombinations($combinations);␍
for ($x=0; $x<sizeof($this->RepeatedParams); $x++) {␍
$newVal = $allParams[$this->RepeatIndex-1];␍
if (is_array($newVal)) $newVal = $newVal[$x];␍
if ($this->RepeatedParams[$x][2]) {␍
$this->bindParam($this->ParamColumns[$this->RepeatedParams[$x][0]],$this->ParamTypes[$this->RepeatedParams[$x][0]],$newVal,$this->ParamDefaults[$this->RepeatedParams[$x][0]]);␍
} else {␍
$this->ParamValues[$this->RepeatedParams[$x][0]] = $this->bindDefault($this->ParamTypes[$this->RepeatedParams[$x][0]],$newVal,$this->ParamDefaults[$this->RepeatedParams[$x][0]]);␍
}␍
}␍
}␍
␍
public function saveInSession($varname) {␍
$this->SaveAs = $varname; ␍
}␍
␍
public function setFilter() {␍
if (sizeof($this->FilterValues) > 0) {␍
$this->Statement .= " WHERE ";␍
for ($x=0; $x<sizeof($this->FilterValues); $x++) {␍
if (!is_array($this->FilterValues[$x][3])) {␍
$filterValues = array($this->FilterValues[$x][3]);␍
} else {␍
$filterValues = $this->FilterValues[$x][3];␍
}␍
for ($y=0; $y<sizeof($filterValues); $y++) {␍
if ($x>0 && $y==0) $this->Statement .= " AND ";␍
if (sizeof($filterValues)>1 && $y==0) $this->Statement .= "(";␍
if ($y>0) $this->Statement .= ($this->FilterValues[$x][1] == "<>" || strtoupper($this->FilterValues[$x][1]) == "IS NOT")?" AND ":" OR ";␍
if ($this->FilterValues[$x][4]) $this->RepeatedParams[] = array(sizeof($this->ParamValues),$this->FilterValues[$x][4],true);␍
$columnRef = $this->FilterValues[$x][0];␍
if (strpos($columnRef,"`") == false && strpos($columnRef,"(") == false) $columnRef = '`'.$columnRef.'`';␍
if (strtoupper($this->FilterValues[$x][1]) == "IS" || strtoupper($this->FilterValues[$x][1]) == "IS NOT") {␍
$this->Statement .= $columnRef . " " . $this->FilterValues[$x][1] . " NULL";␍
} else {␍
$this->Statement .= $columnRef . " " . $this->FilterValues[$x][1] . " ?";␍
$this->bindParam($this->FilterValues[$x][2], strval($filterValues[$y]), "");␍
}␍
}␍
if (sizeof($filterValues)>1) $this->Statement .= ")";␍
}␍
}␍
}␍
␍
public function setQuery($statement) {␍
$this->Statement = $statement; ␍
}␍
␍
public function setRepeatCondition($conditionalField) {␍
$this->RepeatConditions[] = $conditionalField;␍
}␍
␍
}␍
␍
}␍
?>
File diff suppressed because it is too large Load Diff