PHP Classes

File: data/appml.php

Recommend this page to a friend!
  Classes of Rodrigo Faustino   AppML PHP CRUD   data/appml.php   Download  
File: data/appml.php
Role: Example script
Content type: text/plain
Description: Example script
Class: AppML PHP CRUD
Example of the AppML to build CRUD pages
Author: By
Last change:
Date: 6 months ago
Size: 32,861 bytes
 

Contents

Class file image Download
<?php //Appml 2.0.31 - Created by Jan Egil Refsnes for W3Schools. Please don't remove this line. session_start(); ob_start(); header("Cache-Control: no-cache"); header("Access-Control-Allow-Origin: *"); header("Pragma: no-cache"); header("Expires: ".gmdate("D, d M Y H:i:s",time()+(-1*60))." GMT"); header("Content-type: application/json; charset=UTF-8"); $fNo=array(); $updItem=array(); $names=array(); $values=array(); $fieldlist=array(); $valuelist=array(); $ctrlItemName=array();$ctrlItemMin=array();$ctrlItemMax=array();$ctrlItemRequired=array(); $pos=array(); $params=array(); $fName=array();$fType=array();$fValue=array();$fNodeName=array(); $txtWhere=""; $mainTable=""; $userName="";$pwd=""; $fromRec=0; $toRec=0; $displayType=""; $dataSource=""; $dataOut=""; $maxLines=500; $recPos=1; $keyCounter=0; $paramCount=0; //''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' $txtRequest=app_readRequest(); //if ($txtRequest=="") {exit();} $cc = app_loadTextFromFile("appml_config.php"); $cc = substr($cc, strpos($cc,"{")); $modConfig = app_decodeJSON($cc, false); $modDateFormat=$modConfig->dateformat; if ($modDateFormat == "") {$modDateFormat="YYYY-MM-DD";} $requestObj = app_decodeJSON($txtRequest, false); $txt=app_getProperty($requestObj, "login"); if ($txt != "") { $userName=app_getProperty($txt, "f1"); if ($userName == "appmluser") { echo "{"; echo "\"appmluser\" : \"".app_getSession("appmluser")."\""; echo "}"; exit(); } $pwd=app_getProperty($txt, "f2"); $userAccess=app_getUserAccess($userName,$pwd,$modConfig); $loginmessage=""; if ($userAccess != "") {$nn=app_setSession($userName,$userAccess); $loginmessage="OK";} echo "{"; echo "\"loginmessage\" : \"".$loginmessage."\""; echo "}"; exit(); } //$txtAppModel=app_getProperty($requestObj, "appmodel"); $txtAppModel = $_GET["model"]; if ($txtAppModel == "") {app_error("APPML_ERR_MODEL_REQ");} $action=app_getProperty($requestObj,"action"); if ($action == "") {$action="GET";/*app_error("APPML_ERR_ACTION_REQ");*/} $keyValue=app_getProperty($requestObj,"appmlid"); $modelString = app_loadTextFromFile($txtAppModel); if ($modelString == "") {app_error("APPML_ERR_MODEL_REQ: ".$txtAppModel);} $txtModel = app_decodeJSON($modelString, false); if ($txtModel == "") {app_error("APPML_ERR_MODEL_ERR: ".$txtAppModel);} $txt=app_getProperty($txtModel, "dateformat"); if ($txt != "") {$modDateFormat=$txt;} $security=app_getProperty($txtModel, "security"); $cc=getUserAccess($security); if ($cc == "NOTLOGGEDIN") {app_error("APPML_ERR_NO_LOGIN");} if ($cc != "OK") {app_error("APPML_ERR_NOT_AUTHORIZED");} $modDatabase=app_getProperty($txtModel, "database"); if ($modDatabase != "") { $dataSource="database"; $dbConnection=app_getDbConnection(app_getProperty($modDatabase, "connection"),$modConfig->databases); $mainTable=app_getProperty($modDatabase, "maintable"); $sql=app_getProperty($modDatabase, "sql"); $keyField=app_getProperty($modDatabase, "keyfield"); if ($keyField!="") { $keyCounter=1; $keyType=app_getProperty($modDatabase, "keytype"); if ($keyType=="") {$keyType="number";} if ($keyValue == "") {$keyValue = "NULL";} } $items=app_getProperty($modDatabase, "execute"); $nn=app_executeSQL($dbConnection,$items); } else { $modData=app_getProperty($txtModel, "data"); if ($modData != "") { $keyField=""; $dataSource=app_getProperty($modData, "type"); } if ($dataSource != "") { $filePath=app_getProperty($modData, "filename"); $fPath=app_getProperty($modData, "record"); $arr=app_getProperty($modData, "items"); $fCount=app_arrayLength($arr); for ($i=0; $i<$fCount; $i++) { $fName[$i]=app_getProperty($arr[$i], "name"); $fType[$i]=app_getProperty($arr[$i], "type"); if ($fType[$i] == "") {$fType[$i]="text";} $fNodeName[$i]=app_getProperty($arr[$i], "nodename"); $fNo[$i]=app_getProperty($arr[$i], "index"); } } } if ($dataSource == "") {app_error("APPML_ERR_DATASOURCE_REQ");} if ($action == "GET") { $displayType=app_getProperty($requestObj,"displayType"); if ($displayType == "") {$displayType="list";} $txt=app_getProperty($requestObj,"totalRecCounter"); if ($txt == 0 || $txt != "") {$totalCounter=intval($txt);} $txt=app_getProperty($requestObj, "rowsperpage"); if ($txt != "") { $maxLines=intval($txt); } else { $txt=app_getProperty($txtModel, "rowsperpage"); if ($txt != "") { $maxLines=intval($txt); } } $txt=app_getProperty($requestObj, "fromrec"); if ($txt != "") {$recPos=intval($txt);} $requestQuery=app_getProperty($requestObj, "filters"); if ($displayType == "form") {$maxLines=1;} $dataOut=""; if ($dataSource == "database") { if ($sql != "") { $dataOut=app_getData($modDatabase,$modConfig,$txtModel,$modDateFormat,$sql,$keyField,$keyValue,$keyCounter,$requestQuery,$recPos,$maxLines,$totalCounter); } } if ($dataSource == "xmlfile" || $dataSource == "csvfile" || $dataSource == "jsonfile") { if ($dataSource == "jsonfile") { $i=0; try { $cc=json_decode(file_get_contents($filePath), true); } catch (Exception $e) { app_error("APPML_ERR_ERROR: ".$e); } $arr = $cc[$fPath]; $totalCounter = count($arr); } else if ($dataSource == "csvfile") { $i=0; try { $lines=file($filePath); foreach ($lines as $value) { $i++; $arr[$i] = $value; } } catch (Exception $e) { app_error("APPML_ERR_ERROR: ".$e); } $totalCounter=$i; } else { $xmldoc=app_loadTextFromFile($filePath); $arr=app_getElementArray($xmldoc, $fPath); $totalCounter=app_arrayLength($arr); } $fromRec=$recPos; $toRec=app_setToPosition($fromRec,$maxLines); if ($totalCounter<$toRec) {$toRec=$totalCounter;} if ($recPos=="-1") { $fromRec=$totalCounter-$maxLines+1; $toRec=$totalCounter; } if ($keyValue != "") { $i=intval($keyValue); $fromRec=$i; $toRec=$i; } for ($i=$fromRec; $i<=$toRec; $i++) { for ($j=0; $j<$fCount; $j++) { if ($dataSource == "csvfile") { $startpos=1; for ($k=1; $k<=$fNo[$j] + 1; $k++) { $pos[$k]=_instr($startpos,$arr[$i],",",0); $startpos=$pos[$k] + 1; } if ($fNo[$j] == 1) { $lastpos=0;} else { $lastpos=$pos[$fNo[$j]-1]; } $thispos=$pos[$fNo[$j]]; if ($thispos < 1) { $cc="";} else {$cc=substr($arr[$i],$lastpos,$thispos-$lastpos-1); } } else if ($dataSource == "jsonfile") { $cc=$arr[$i-1][$fNodeName[$j]]; } else { $cc=app_getElementValue($arr[$i], $fNodeName[$j]); } $fValue[$j]=$cc; } $dataOut.=app_getRecordAsJSON($fName, $fType, $fValue, $fCount); if ($i<$toRec) {$dataOut.=",";} } $cc=", \"recPos\" : ".$fromRec; $cc.=", \"fromRec\" : ".$fromRec; $cc.=", \"toRec\" : ".$toRec; $cc.=", \"totalRecCounter\" : ".$totalCounter; $cc.=", \"records\" : [".$dataOut."]"; $dataOut=$cc; } echo "{"; echo "\"user\" : 0"; echo $dataOut; echo ", \"dateFormat\" : \"".$modDateFormat."\""; if ($keyField!="") {echo ", \"keyField\" : \"".$keyField."\"";} $cc = strpos($modelString, "{"); if ($cc !== false) { $modelString = substr_replace($modelString, "", $cc, strlen("}")); } $modelString = strrev(implode(strrev(""), explode("}", strrev($modelString), 2))); echo ", ".$modelString; echo "}"; exit(); } if ($action != "UPDATE" and $action != "ADD" and $action != "DELETE") {app_error("APPML_ERR_ILLEGAL_ACTION: ".$action);} $updItem=app_getProperty($txtModel, "updateItems"); if ($updItem == "") {app_error("APPML_ERR_ILLEGAL_ACTION: ".$action);} if (getUserAccess($security) <> "OK") {app_error("APPML_ERR_NOT_AUTHORIZED");} if ($action == "DELETE") { if (strtoupper(app_getProperty($txtModel, "delete")) == "FALSE") {app_error("APPML_ERR_ILLEGAL_ACTION: "."DELETE");} $x=app_dbDelete($dbConnection,$mainTable,$keyField,$keyValue); echo "{"; echo "\"updatemessage\" : \"".$x." APPML_MESSAGE_RECORD_DELETED\""; echo "}"; // echo ($x." APPML_MESSAGE_RECORD_DELETED"); exit(); } if ($action == "ADD") { if (strtoupper(app_getProperty($txtModel, "addnew")) == "FALSE") {app_error("APPML_ERR_ILLEGAL_ACTION: "."INSERT");} } $fieldCounter=0; $txt=app_getProperty($requestObj, "record"); if ($txt != "") { $names=app_getProperty($txt, "items"); $values=app_getProperty($txt, "values"); //$types=app_getProperty($txt, "items"); $fieldCounter=app_arrayLength($updItem); } for ($j=0; $j<$fieldCounter; $j++) { if (strtolower($names[$j]) != strtolower(app_getProperty($updItem[$j], "item"))) {app_error("APPML_ERR_DATAMODEL");} if (trim($values[$j]) == "") { $values[$j]=""; // DBNULL } //else { //if ($types[$j]="number") { // $decsep=app_getSysDecSep(); // $values[$j]=str_replace(",",$decsep,$values[$j]); // $values[$j]=str_replace(".",$decsep,$values[$j]); //} //} } /*for ($i=1; $i<=$ctrlItemCounter; $i++) { for ($j=0; $j<$fieldCounter; $j++) { if ($names[$j] == $ctrlItemName[$i]) { if ($ctrlItemMin[$i] != "") { $x=$values[$j]; $y=$ctrlItemMin[$i]; if (is_numeric($x)) {$x=intval($x);} if (is_numeric($y)) {$y=intval($y);} if (app_isDate($x)) {$x=app_cDate($x);} if (app_isDate(app_reformatDate($y,$modDateFormat))) {$y=app_cDate(app_reformatDate($y,$modDateFormat));} if ($x < $y) {app_error("APPML_ERR_INPUT_MIN: ".$names[$j].",".$ctrlItemMin[$i]);} } if ($ctrlItemMax[$i] != "") { $x=$values[$j]; $y=$ctrlItemMax[$i]; if (is_numeric($x)) {$x=intval($x);} if (is_numeric($y)) {$y=intval($y);} if (app_isDate($x)) {$x=app_cDate($x);} if (app_isDate(app_reformatDate($y,$modDateFormat))) {$y=app_cDate(app_reformatDate($y,$modDateFormat));} if ($x > $y) {app_error("APPML_ERR_INPUT_MAX: ".$names[$j].",".$ctrlItemMax[$i]);} } if ($ctrlItemRequired[$i] == 1) { $x=$values[$j]; if ($x == "") {app_error("APPML_ERR_INPUT_REQUIRED: ".$names[$j]);} } } } }*/ if ($action == "ADD") { $nn=app_dbAddNew($dbConnection,$mainTable,$fieldCounter,$names,$values); echo "{"; echo "\"updatemessage\" : \"1 APPML_MESSAGE_RECORD_ADDED\", "; echo "\"updateID\" : ".$nn; echo "}"; // echo $nn; exit(); } $sql="SELECT "; for ($i=0; $i<$fieldCounter; $i++) { if ($i > 0) {$sql.=",";} $sql.=add_brackets($names[$i]); } $sql.=" from ".add_brackets($mainTable)." WHERE ".add_brackets($mainTable).".".add_brackets($keyField)."=@0;"; $paramCount=1; $params[1]=$keyValue; $dbRecordset=app_dbRead($dbConnection, $sql, $paramCount, $params); $fCount=0; $row=$dbRecordset->fetch_array(MYSQLI_BOTH); while ($x = $dbRecordset->fetch_field()) { for ($j=0;$j<$fieldCounter;$j++) { if (strtoupper($x->name)==strtoupper($names[$j])) { $fieldtype=app_getType($x->type); $fieldvalue=app_getDBfield($row, $names[$j], $fieldtype); if ($fieldvalue != $values[$j]) { $fCount++; $fieldlist[$fCount]=$names[$j]; $valuelist[$fCount]=$values[$j]; } } } } $dbRecordset->close(); $nn=app_dbUpdate($dbConnection,$mainTable,$fCount,$fieldlist,$valuelist,$keyField,$keyValue); echo "{"; echo "\"updatemessage\" : \"".$nn." APPML_MESSAGE_RECORD_UPDATED\""; echo "}"; //echo $nn." APPML_MESSAGE_RECORD_UPDATED"; exit(); //''''''''''''''''''''''''''''''''''''''''''''''''''''' function app_setToPosition($from,$lines) { $to=$from + $lines-1; if ($lines == 0) {$to=$lines;} return $to; } function app_getRecordAsJSON($fieldName, $fieldType, $fieldValue, $numb) { $x="{"; for ($i=0; $i<$numb; $i++) { $val=$fieldValue[$i]; $n=""; for ($j=0; $j<strlen($val); $j++) { $c=substr($val,$j,1); if ($c == "<") {$c="#1001;";} if ($c == ">") {$c="#1002;";} if ($c == "&") {$c="#1003;";} $n.=$c; } $x.="\"".$fieldName[$i]."\" : \"".$n."\""; if ($i<$numb-1) $x.=","; } $x.="}"; return $x; } function appml_GetQueryWhere($txtParam,$filter,$requestFilter,&$paramCount,&$params) { $legalQueryField=array(); $legalQueryFieldType=array(); $qvalue=array(); $qvaluecount=0; $where=$txtParam; $legalQueryFieldcount=0; $txt=$filter; if ($txt != "") { $l=app_arrayLength($txt); for ($i=0; $i<$l; $i++) { $legalQueryField[$i]=app_getProperty($txt [$i], "item"); $legalQueryFieldType[$i]=app_getProperty($txt [$i], "type"); } } $legalQueryFieldcount=app_arrayLength($legalQueryField); $arr=""; if ($requestFilter) {$arr=$requestFilter->queryFields; } $l=app_arrayLength($arr); for ($j=0; $j<$l; $j++) { $qOK=1; $qlabel=""; $qvaluecount=0; $qoper=""; $qname=$arr[$j]; $qlabel=""; $valuearr=$requestFilter->queryValues[$j]; $ll=app_arrayLength($valuearr); for ($i=0; $i<$ll; $i++) { $qvaluecount++; $qvalue[$i]=$valuearr[$i]; } $qoper=$requestFilter->queryOperators[$j]; $queryOK=0; for ($i=0; $i<$legalQueryFieldcount; $i++) { if (strtolower($qname) == strtolower($legalQueryField[$i])) { $qtype=$legalQueryFieldType[$i]; $queryOK=1; break; } } if ($queryOK == 0) {app_error("APPML_ERR_ILLEGAL_QUERY: ".$qname);} for ($i=0; $i<$qvaluecount; $i++) { if ($qvalue[$i] == "&nbsp;") {$qvalue[$i]=" ";} if ($qlabel == "") {$qlabel=$qname;} if ($qoper == "") {$qoper="=";} if ($qoper == "0") {$qoper="=";} if ($qoper == "1") {$qoper="<>";} if ($qoper == "2") {$qoper="<";} if ($qoper == "3") {$qoper=">";} if ($qoper == "4") {$qoper="<=";} if ($qoper == "5") {$qoper=">=";} if ($qoper == "6") {$qoper="%";} if ($qoper == "10") {$qoper="==";} if ($qoper == "11") {$qoper="!=";} if ($qvalue[$i] != "") { $qvalue[$i]=remove_quotes($qvalue[$i]); if ($where == "") {$where=" (";} else { if ($i == 0) {$where.=" AND (";} else { if ($qoper == "=" || $qoper == "==" || $qoper == "%") { $where.=" OR "; } else {$where.=" AND ";} } } if ($qtype == "number" || $qtype == "date") { if ($qOK == 1) { $xqoper=$qoper; if ($xqoper == "==") {$xqoper="=";} if ($xqoper == "!=") {$xqoper="<>";} $where.="(".add_brackets($qname).$xqoper."@".(string)$paramCount.")"; $paramCount++; $params[$paramCount]=$qvalue[$i]; } else {$where.=" (".add_brackets($qname).">0 AND ".add_brackets($qname)."<0)";} } else { if ($qvalue[$i] == " ") { if ($qoper == "=" || $qoper == "==") {$where.="(".add_brackets($qname)."='')";} if ($qoper == "<>" || $qoper == "!=") {$where.="(".add_brackets($qname)."<>'')";} if ($qoper == "<" || $qoper == ">" || $qoper == "<=" || $qoper == ">=") { $where.="(".add_brackets($qname).$qoper."'')";} if ($qoper == "%") {$where.="(".add_brackets($qname)." LIKE '% %')";} } else { if ($qoper == "=") { $where.="(".add_brackets($qname)." LIKE @".(string)$paramCount.")"; $paramCount++; $params[$paramCount]=$qvalue[$i].'%'; } if ($qoper == "==") { $where.="(".add_brackets($qname)." = @".(string)$paramCount.")"; $paramCount++; $params[$paramCount]=$qvalue[$i]; } if ($qoper == "<" || $qoper == ">") { $where.="(".add_brackets($qname).$qoper." @".(string)$paramCount.")"; $paramCount++; $params[$paramCount]=$qvalue[$i]; } if ($qoper == "<>") { $where.="(".add_brackets($qname).$qoper."@".(string)$paramCount." AND ".add_brackets($qname)." NOT LIKE @".(string)($paramCount+1).")"; $paramCount++; $params[$paramCount]=$qvalue[$i]; $paramCount++; $params[$paramCount]=$qvalue[$i].'%'; } if ($qoper == "!=") { $where.="(".add_brackets($qname)."<> @".(string)$paramCount.")"; $paramCount++; $params[$paramCount]=$qvalue[$i]; } if ($qoper == "<=" || $qoper == ">=") { $where.="(".add_brackets($qname).$qoper." @".(string)$paramCount." OR ".add_brackets($qname)." LIKE @".(string)($paramCount+1).")"; $paramCount++; $params[$paramCount]=$qvalue[$i]; $paramCount++; $params[$paramCount]=$qvalue[$i].'%'; } if ($qoper == "%") { $where.="(".add_brackets($qname)." LIKE @".(string)$paramCount.")"; $paramCount++; $params[$paramCount]='%'.$qvalue[$i].'%'; } } } } if ($i == ($qvaluecount-1)) {$where.=")";} } } return $where; } function appml_GetOrderby($txtOrderby,$txtsortitems,$requestFilter) { $legalOrderbyField=array(); $legalOrderbyDir=array(); $osfield=array(); $osdir=array(); $legalOrderbyFieldcount=0; $orderby=""; $txt=$txtsortitems; if ($txt != "") { $l=app_arrayLength($txt); for ($i=0; $i<$l; $i++) { $legalOrderbyField[$i]=app_getProperty($txt[$i], "item"); $legalOrderbyDir[$i]="asc"; } } $legalOrderbyFieldcount=app_arrayLength($legalOrderbyField); $arr=""; if ($requestFilter) {$arr=$requestFilter->orderBys; } $l=app_arrayLength($arr); for ($i=0; $i<$l; $i++) { $osfield[$i]=$arr[$i]; $osdir[$i]=$requestFilter->orderByDirections[$i]; } $orderselect=""; $l=app_arrayLength($osfield); for ($i=0; $i<$l; $i++) { if ($osfield[$i] != "") { $orderbyOK=0; for ($j=0; $j<$legalOrderbyFieldcount; $j++) { if (trim($osfield[$i]) == trim($legalOrderbyField[$j])) { $orderbyOK=1; break; } } if ($orderbyOK == 1) { if ($orderselect != "") {$orderselect.=",";} $orderselect.=" ".$osfield[$i]." ".$osdir[$i]; } } } if ($orderselect != "" && $orderby != "") { $orderby=$orderselect.", ".$orderby; } else { if ($orderselect != "" && $orderby == "") { $orderby=$orderselect; } } if ($orderby == "") { $orderby=$txtOrderby; } if ($orderby != "") { $orderby=" ORDER BY ".$orderby; } return $orderby; } function add_brackets($txt) {return $txt;} function app_formatDate($txt, $appformat) { if (app_nullTest($txt)) { return ""; } if (trim($txt) == "") { return ""; } $date=date_create($txt); $y=date_format($date,"Y"); $m=date_format($date,"m"); $d=date_format($date,"d"); $h=date_format($date,"H"); $n=date_format($date,"i"); $s=date_format($date,"s"); $c=substr($y,2,2); if (strlen($m) < 2) {$m="0".$m;} if (strlen($d) < 2) {$d="0".$d;} if (strlen($h) < 2) {$h="0".$h;} if (strlen($n) < 2) {$n="0".$n;} if (strlen($s) < 2) {$s="0".$s;} $t=$appformat; $t=str_replace("yyyy",$y,$t); $t=str_replace("mm",$m,$t); $t=str_replace("dd",$d,$t); $t=str_replace("yy",$c,$t); $t=str_replace("hh",$h,$t); $t=str_replace("nn",$n,$t); $t=str_replace("ss",$s,$t); return $t; } function app_getSQLDateFormat() { return "yyyy-mm-dd"; } function getUserAccess($security) { $ret = ""; $userAccess = ""; if (app_nullTest($security)) { $sec = ""; } else { $sec = strtoupper($security); } if ($sec == "") { $ret = "OK"; } else { $sec = trim($sec); $userAccess = app_getSession("appmlaccess"); if ($userAccess == "") { return "NOTLOGGEDIN"; } else { $ARR = explode(",", $userAccess); foreach ($ARR as $x) { $z = trim(strtoupper($x)); if ($sec == $z) { return "OK"; } } } } return $ret; } function app_error($errtxt) { echo "{\"error\" : \"".$errtxt."\"}"; exit(); return; } function app_reformatDate($txt,$dtype) { $ret=""; if ($txt != "") { $d=substr($txt,_instr(0,$dtype,"dd",0)-1,2); $m=substr($txt,_instr(0,$dtype,"mm",0)-1,2); $y=substr($txt,_instr(0,$dtype,"yyyy",0)-1,4); $ret=$y."-".$m."-".$d; } return $ret; } function remove_quotes($ttt) { $out=""; if (app_nullTest($ttt)) {return "";} for ($i=1; $i<=strlen($ttt); $i++) { $c=substr($ttt,$i-1,1); if ($c == "'") {$c="''";} $out.=$c; } return $out; } function app_getElementValue($element, $id) { $res=""; $uelement=strtoupper($element); $uid=strtoupper($id); $ipos1=_instr(0,$uelement,"<".$uid,0); if ($ipos1 > 0) { $ipos2=_instr(0,substr($uelement,$ipos1-1),">",0); $ipos3=_instr(0,$uelement,"</".$uid.">",0); if ($ipos2 > 0 && $ipos3 > $ipos1) { $res=trim(substr($element,$ipos1 + $ipos2-1,$ipos3-$ipos2-$ipos1)); } } return $res; } function app_getElement($element, $id) { $uelement=strtoupper($element); $uid=strtoupper($id); $ipos1=_instr(0,$uelement,"<".$uid,0); $ipos3=_instr(0,$uelement,"</".$uid.">",0); $res=""; if ($ipos1 > 0) { if ($ipos3 > $ipos1) { $res=substr($element,$ipos1-1,$ipos3-$ipos1 + strlen($id) + 3); } else { $ipos3=_instr(0,substr($uelement,$ipos1-1),"/>",0); if ($ipos3 > 0) { $res=substr($element,$ipos1-1,$ipos3 + 1); } } } return $res; } function app_getAttribute($element, $attribute) { $txt=$element; $res=""; $tst=34; $ipos=_instr(0,$txt," ".$attribute."=".chr($tst),0); if ($ipos == 0) { $tst=39; $ipos=_instr(0,$txt," ".$attribute."=".chr($tst),0); } if ($ipos != 0) { $txt=substr($txt,$ipos + strlen($attribute) + 2); $ipos=_instr(0,$txt,chr($tst),0); if ($ipos > 1) { $res=substr($txt,0,$ipos-1); } } return $res; } function app_getElementArray($element, $id) { $x=array(); $uid=strtoupper($id); $xelement=$element; $l=0; for ($i=1; $i<=10000; $i++) { $uelement=strtoupper($xelement); $ipos1=_instr(0,$uelement,"<".$uid,0); $ipos3=_instr(0,$uelement,"</".$uid.">",0); if ($ipos1 > 0 && $ipos3 > $ipos1) { $l++; $x[$l]=substr($xelement,$ipos1-1,$ipos3-$ipos1 + strlen($id) + 3); $xelement=substr($xelement,$ipos3 + strlen($id) + 2); } else { break; } } return $x; } function app_arrayLength($arr) { if (is_array($arr)) { return count($arr); } return 0; } function app_getSysDecSep() { $decsep=1 / 2; $decsep=($decsep); $decsep=substr($decsep,1,1); return $decsep; } function app_readRequest() { $tmp=""; $file=fopen("php://input","r") or exit("Unable to open file!"); while (!feof($file)) {$tmp=$tmp.fgetc($file);} fclose($file); return $tmp; } function app_loadTextFromFile($fname) { $tmp=""; $ext=".js"; if (_instr(0,$fname,".",0) > 0) {$ext="";} if (!file_exists($fname.$ext)) {app_error("No such file or directory: $fname.$ext"); } return file_get_contents($fname.$ext); /*$lines=file($fname.$ext); foreach ($lines as $value) { if (!$tmp) {$tmp = $value;} else {$tmp=$tmp.$value;} } return $tmp;*/ } function app_nullTest($x) { $cc=false; if (!isset($x)) {$cc=true;} else { if (empty($x)) {$cc=true;} } return $cc; } function app_setSession($nam, $acc) { $_SESSION["appmluser"]=$nam; $_SESSION["appmlaccess"]=$acc; return 0; } function app_getSession($nam) { if (isset($_SESSION[$nam])) { return $_SESSION[$nam]; } return ""; } function app_getUserAccess($userName,$pwd,$modConfig) { $nn=app_setSession("",""); $userAccess = ""; if ($userName == "" || $pwd == "") {return $userAccess;} if (isset($modConfig->users)) { $userArr = $modConfig->users; $ll = count($userArr); for ($ii = 0; $ii < $ll; $ii++) { if ($userArr[$ii]->username == $userName && $userArr[$ii]->password == $pwd) { $arr = $userArr[$ii]->roles; $lll = count($arr); $userAccess = ""; for ($iii = 0; $iii < $lll; $iii++) { if ($userAccess != "") {$userAccess.=",";} $userAccess .= $arr[$iii]; } } } } else { if (isset($modConfig->securitydb)) { $database = $modConfig->securitydb; if ($database != "") { //$sql="SELECT AppmlRoles.Name FROM ((AppmlUserRoles"; //$sql.= " LEFT JOIN AppmlUsers ON AppmlUserRoles.UserID=AppmlUsers.UserID)"; //$sql.=" LEFT JOIN AppmlRoles ON AppmlUserRoles.RoleID=AppmlRoles.RoleID)"; //$sql.=" WHERE AppmlUsers.Email=@0 AND AppmlUsers.Pass=@1;"; $sql = $database->sql; $dbConnection=app_getDbConnection("", $database); $paramCount=2; $params[1]=$userName; $params[2]=$pwd; $dbRecordset=app_dbRead($dbConnection,$sql,$paramCount,$params); $userAccess=""; $totalCounter=app_dbRowcount($dbRecordset); if ($totalCounter==0) {app_error("APPML_ERR_NOT_AUTHORIZED");} $row=$dbRecordset->fetch_array(MYSQLI_BOTH); $nn=0; while ($nn < $totalCounter) { $nn++; if ($userAccess != "") {$userAccess.=",";} $userAccess.=$row[0]; $row=$dbRecordset->fetch_array(MYSQLI_BOTH); } $dbRecordset->close(); } } } return $userAccess; } function app_dbRead($conn,$sql,$count,$p) { $xarr=array(); $xsql=app_prepSQL($sql,$count); $stmt=$conn->stmt_init(); $stmt->prepare($xsql); if ($count>0) { $xarr[0]=""; for ($j=1;$j<=$count;$j++) { $xarr[0].="s"; $xarr[$j]=&$p[$j]; } call_user_func_array(array($stmt,'bind_param'), $xarr); } if (!$stmt->execute()) {app_error($conn->error);} if (!$dbRecordset = $stmt->get_result()) {app_error($conn->error);} return $dbRecordset; } function app_executeSQL($conn,$sql) { $xcount=app_arrayLength($sql); for ($i=0; $i<$xcount; $i++) { //$sql[$i]=iconv("ISO-8859-1", "UTF-8//TRANSLIT", $sql[$i]); if (!$conn->query($sql[$i])) {app_error($conn->error." ".$sql[$i]);} } return; } function app_dbUpdate($conn,$table,$count,$fields,$values,$keyField,$keyValue) { $xarr=array(); if ($count==0) {return 0;} $sql="UPDATE ".$table." SET "; $xarr[0]=""; for ($i=1;$i<=$count;$i++) { $xarr[0].="s"; $xarr[$i]=&$values[$i]; $sql=$sql.$fields[$i]."=@".(string)($i-1)." "; if ($i!=$count) {$sql=$sql.",";} } $xarr[0].="s"; $xarr[$count+1]=&$keyValue; $sql=$sql." WHERE ".$keyField."=@".(string)($count)." "; $sql=app_prepSQL($sql,$count+1); $stmt=$conn->stmt_init(); $stmt->prepare($sql); call_user_func_array(array($stmt,'bind_param'), $xarr); if (!$stmt->execute()) {app_error($conn->error." ".$sql);} $num=$conn->affected_rows; $conn->close(); return $num; } function app_dbAddNew($conn,$table,$count,$fields,$values) { $xarr=array(); $sql="INSERT INTO ".$table."("; for ($i=0;$i<$count;$i++) { $sql=$sql.$fields[$i]; if ($i<$count-1) {$sql=$sql.",";} } $sql=$sql.") VALUES ("; $xarr[0]=""; for ($i=1;$i<=$count;$i++) { $xarr[0].="s"; $sql.="@".(string)($i-1); $xarr[$i]=&$values[$i-1]; if ($i!=$count) {$sql=$sql.",";} } $sql=$sql.");"; $sql=app_prepSQL($sql,$count); $stmt=$conn->stmt_init(); $stmt->prepare($sql); call_user_func_array(array($stmt,'bind_param'), $xarr); if (!$stmt->execute()) {app_error($conn->error." ".$sql);} $num=$stmt->insert_id; $conn->close(); return $num; } function app_dbDelete($conn,$mainTable,$keyField,$keyValue) { $sql="DELETE FROM ".add_brackets($mainTable)." WHERE ".$keyField."=@0;"; $sql=app_prepSQL($sql,1); $stmt=$conn->stmt_init(); $stmt->prepare($sql); $stmt->bind_param('s',$keyValue); if (!$stmt->execute()) {app_error($conn->error." ".$sql);} $num=$conn->affected_rows; $conn->close(); return $num; } function app_getDbConnection($dbcon,$model) { $arr = array(); $xdbcon = strtoupper($dbcon); $arr = $model; $txt = ""; if (is_array($arr)) { $l = app_arrayLength($arr); for ($i = 0; $i < $l; $i++) { $x = $arr[$i]->connection; if (strtoupper($x) == $xdbcon) { $txt = $arr[$i]; break; } } } else { $txt = $arr; } if ($txt=="") {app_error("APPML_ERR_UKNOWN_DB: ".$dbcon);} $dbHost=$txt->host; $dbName=$txt->dbname; $dbUser=$txt->username; $dbPass=$txt->password; $conn = new mysqli($dbHost,$dbUser,$dbPass,$dbName); if (mysqli_connect_errno()) { app_error("Failed to connect to MySQL: " . mysqli_connect_error()); } $conn->set_charset('utf8'); return $conn; } function app_getDBfield($row, $fnam, $typ) { $x=""; try { $x=$row[$fnam]; if (app_nullTest($x)) {$x="";} else { if ($typ == "date") { $x=app_formatDate($x, app_GetSQLDateFormat());} else {$x=(string)$x;} } } catch (Exception $e){$x="";} return $x; } function app_dbRowcount($recset) { return $recset->num_rows; } function app_prepSQL($sql,$count) { $mysql=$sql; for ($i=1;$i<=$count;$i++) { $mysql=str_replace("@".(string)($i-1),"?",$mysql); } return $mysql; } function app_getType($txt) { $ret="number"; if ($txt==252) {$ret="binary";} if ($txt==7 || $txt==10 || $txt==11 || $txt==12 || $txt==13) {$ret="date";} if ($txt==253 || $txt==254) {$ret="string";} return $ret; } function app_isDate($x) {$x=true;} function app_cDate($x) {return strtotime($x);} // Helper Function function _instr($start,$str1,$str2,$mode) { if ($mode) { $str1=strtolower($str1); $str2=strtolower($str2); } $retval=strpos($str1,$str2,$start); return ($retval===false) ? 0 : $retval+1; } function app_decodeJSON($txt, $bool) { try { $jsonObj = json_decode($txt, $bool); } catch (Exception $e) { $jsonObj = ""; } return $jsonObj; } function app_getProperty($obj, $prop) { if (isset($obj->$prop)) { return $obj->$prop; } return ""; } function app_getData($modDatabase,$modConfig,$txtModel,$modDateFormat,$sql,$keyField, $keyValue,$keyCounter,$requestQuery,$recPos,$maxLines,$totalCounter) { $params=array(); $fName=array(); $fValue=array(); $fType=array(); $mainTable=app_getProperty($modDatabase, "maintable"); $paramCount=0; $txtWhere=app_getProperty($modDatabase, "where"); $txtOrderby=app_getProperty($modDatabase, "orderby"); $fromRec=$recPos; $toRec=app_setToPosition($fromRec,$maxLines); $dbConnection=app_getDbConnection(app_getProperty($modDatabase, "connection"),$modConfig->databases); $dataOut=""; if ($keyValue!="") { if ($keyCounter==0) {app_error("APPML_ERR_KEYFIELD_REQ");} if ($mainTable=="") {app_error("APPML_ERR_MAINTABLE_REQ");} if ($keyValue=="NULL") {$keyValue="-1";} $sql=$sql . " WHERE " . add_brackets($mainTable) . "." . add_brackets($keyField) . "=@0;"; $paramCount=1; $params[1]=$keyValue; } else { $txtFilter=app_getProperty($txtModel, "filteritems"); $cc=appml_GetQueryWhere($txtWhere,$txtFilter,$requestQuery,$paramCount,$params); if ($cc!="") {$sql=$sql . " WHERE " . $cc;} if ($totalCounter==0) { //$dbRecordset=app_dbRead($dbConnection,$sql." LIMIT 500",$paramCount,$params); $dbRecordset=app_dbRead($dbConnection,$sql,$paramCount,$params); $totalCounter=app_dbRowcount($dbRecordset); $dbRecordset->close(); } if ($toRec==0) {$toRec=$totalCounter;} if ($recPos=="-1") { $fromRec=$totalCounter-$maxLines+1; $toRec=$totalCounter; } $txtsortitems=app_getProperty($txtModel, "sortitems"); $cc=appml_GetOrderby($txtOrderby,$txtsortitems,$requestQuery); if ($cc!="") {$sql=$sql . $cc;} //$sql=$sql." LIMIT ".$toRec; } $dbRecordset=app_dbRead($dbConnection,$sql,$paramCount,$params); if ($keyValue!="") { $totalCounter=app_dbRowcount($dbRecordset); } $fCount=$dbRecordset->field_count; $i=0; while ($x=$dbRecordset->fetch_field()) { $fType[$i]=app_getType($x->type); $fName[$i]=$x->name; $fValue[$i]=""; $i++; } $row=$dbRecordset->fetch_array(MYSQLI_BOTH); $nn=0; while ($nn<$totalCounter) { $nn=$nn+1; if ($nn>=$fromRec and $nn<=$toRec) { $cc=""; $i=count($row)/2; for ($j=0; $j<count($row)/2; $j++) { $txt=$row[$j]; if ($txt==NULL) {$txt="";} if (app_getType($fType[$j])=="date") { $txt=app_formatDate($txt,$modDateFormat); } $fValue[$j]=$txt; if ($fName[$j]==$keyField) {$cc=$fValue[$j];} } if ($dataOut!="") {$dataOut.=",";} $dataOut=$dataOut . app_getRecordAsJSON($fName,$fType,$fValue,$fCount); } $row=$dbRecordset->fetch_array(MYSQLI_BOTH); } if ($keyValue!="") {$totalCounter=$nn;} if ($totalCounter<$toRec) {$toRec=$totalCounter;} if ($nn==0 or $recPos=="0") { $totalCounter=0; $dataOut=$dataOut . app_getRecordAsJSON($fName,$fType,$fValue,$fCount); } $dbRecordset->close(); $cc= <<<EOT , "recPos" : $fromRec, "fromRec" : $fromRec, "toRec" : $toRec, "rowsperpage" : $maxLines, "totalRecCounter" : $totalCounter, "records" : [$dataOut] EOT; return $cc; } ?>