You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: dist/SuperSQL_advanced_min.php
+2-2Lines changed: 2 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -10,6 +10,6 @@
10
10
// lib/connector/index.php
11
11
class Response{public$result;public$affected;public$ind;public$error;public$errorData;function__construct($a,$b){$this->error=!$b;if(!$b){$this->errorData=$a->errorInfo();}else{$this->result=$a->fetchAll();$this->affected=$a->rowCount();}$this->ind=0;$a->closeCursor();}functionerror(){return$this->error ?$this->errorData : false;}functiongetData(){return$this->result;}functiongetAffected(){return$this->affected;}functionnext(){return$this->result[$this->ind++];}functionreset(){$this->ind=0;}}class Connector{public$queries=array();public$db;public$log=array();public$dev=false;function__construct($c,$d,$e){$this->db=new \PDO($c,$d,$e);$this->log=array();}functionquery($f,$g=null){if(isset($this->queries[$f])){$h=$this->queries[$f];}else{$h=$this->db->prepare($f);$this->queries[$f]=$h;}if($g)$i=$h->execute($g);else$i=$h->execute();if($this->dev)array_push($this->log,array($f,$g));returnnewResponse($h,$i);}function_query($j,$k,$l,$m){if(isset($this->queries[$j."|".$m])){$n=$this->queries[$j."|".$m];$h=$n[1];$o=&$n[0];foreach($kas$p=>$q){$o[$p][0]=$q[0];}if($this->dev)array_push($this->log,array("fromcache",$j,$m,$k,$l));}else{$h=$this->db->prepare($j);$o=$k;foreach($oas$p=>&$r){$h->bindParam($p+1,$r[0],$r[1]);}$this->queries[$j."|".$m]=array(&$o,$h);if($this->dev)array_push($this->log,array($j,$m,$k,$l));}if(count($l)==0){$i=$h->execute();returnnewResponse($h,$i);}else{$s=array();$i=$h->execute();array_push($s,newResponse($h,$i));foreach($las$p=>$t){foreach($tas$u=>$v){$o[$u][0]=$v;}$i=$h->execute();array_push($s,newResponse($h,$i));}return$s;}}functionclose(){$this->db=null;$this->queries=null;}functionclearCache(){$this->queries=array();}}
12
12
// lib/parser/Advanced.php
13
-
class AdvParser{privatestaticfunctiongetArg(&$a){if(substr($a,0,1)=="["&&substr($a,3,1)=="]"){$b=substr($a,1,2);$a=substr($a,4);return$b;}else{returnfalse;}}privatestaticfunctionappend(&$c,$d,$e){if(gettype($d)=="array"){$f=count($d);for($g=1;$g<$f;$g++){if(!isset($c[$g]))$c[$g]=array();$c[$g][$e]=$d[$g];}}}privatestaticfunctionappend2(&$h,$i,$j){functionstripArgs(&$k){if(substr($k,-1)=="]"){$l=strrpos($k,"[",-1);$k=substr($k,0,$l);}$l=strrpos($k,"]",-1);if($l!==false)$k=substr($k,$l+1);}functionrecurse(&$m,$d,$i,$n){foreach($das$g=>$o){if(gettype($o)=="array"){stripArgs($g);if(isset($o[0])){if(isset($i[$g."#".$n."*"]))$p=$i[$g."#".$n."*"];else$p=$i[$g."*"];foreach($oas$q=>$r){$m[$p+$q]=$r;}}else{recurse($m,$o,$i,$n."/".$g);}}else{stripArgs($g);if(isset($i[$g."#".$n]))$p=$i[$g."#".$n];else$p=$i[$g];$m[$p]=$o;}}}$f=count($j);for($k=1;$k<$f;$k++){$d=$j[$k];if(!isset($h[$k]))$h[$k]=array();recurse($h[$k],$d,$i,"");}}privatestaticfunctionquote($a){$a=explode(".",$a);$b="";for($q=0;$q<count($a);$q++){if($q!=0)$b.=".";$b.="`".$a[$q]."`";}return$b;}privatestaticfunctiontable($s){if(gettype($s)=="array"){$t="";for($q=0;$q<count($s);$q++){$u=self::getType($s[$q]);if($q!=0)$t.=", ";$t.=self::quote($s[$q]);if($u)$t.=" AS ".self::quote($u);}return$t;}else{returnself::quote($s);}}privatestaticfunctionvalue($v,$w,&$x){$y=strtolower($v);if(!$y)$y=strtolower(gettype($w));$v=\PDO::PARAM_INT;if($y=="boolean"||$y=="bool"){$v=\PDO::PARAM_BOOL;$w=$w ? "1" : "0";$x.="b";}elseif($y=="integer"||$y=="int"){$x.="i";$w=(int)$w;}elseif($y=="string"||$y=="str"){$v=\PDO::PARAM_STR;$w=(string)$w;$x.="s";}elseif($y=="double"||$y=="doub"){$w=(int)$w;$x.="i";}elseif($y=="resource"||$y=="lob"){$v=\PDO::PARAM_LOB;$x.="l";}elseif($y=="null"){$v=\PDO::PARAM_NULL;$w=null;$x.="n";}returnarray($w,$v);}privatestaticfunctiongetType(&$a){if(substr($a,-1)=="]"){$z=strpos($a,"[");if($z===false){return"";}$b=substr($a,$z+1,-1);$a=substr($a,0,$z);return$b;}elsereturn"";}privatestaticfunctionrmComments($a){$q=strpos($a,"#");if($q!==false){$a=substr($a,0,$q);}returntrim($a);}privatestaticfunctionconditions($j,&$aa=false,&$ba=false,&$x="",&$e=0){$ca=function(&$ca,$j,&$ba,&$e,&$aa,&$x,$da=" AND ",$ea=" = ",$fa=""){$ga=0;$t="";foreach($jas$k=>$d){if(substr($k,0,1)==="#"){$ha=true;$k=substr($k,1);}else{$ha=false;}$ia=self::getArg($k);$ja=$ia ? self::getArg($k): false;$ka=gettype($d);$la=!isset($d[0]);$ma=$da;$na=$ea;switch($ia){case"||":$ia=$ja;$ma=" OR ";break;case"&&":$ia=$ja;$ma=" AND ";break;}switch($ia){case">>":$na=" > ";break;case"<<":$na=" < ";break;case">=":$na=" >= ";break;case"<=":$na=" <= ";break;case"!=":$na=" != ";break;case"~~":$na=" LIKE ";break;case"!~":$na=" NOT LIKE ";break;default: if(!$la||$ia=="==")$na=" = ";break;}if($ga!=0)$t.=$da;if($ka=="array"){if($la){$t.="(".$ca($ca,$d,$ba,$e,$aa,$ma,$na,$fa."/".$k).")";}else{$v=self::getType($k);$oa=self::rmComments($k);if($ba!==false&&!$ha){$ba[$k."*"]=$e;$ba[$k."#".$fa."*"]=$e++;}foreach($was$g=>$o){if($g!=0)$t.=$ma;$e++;if($ha){$t.=self::quote($oa).$na.$o;}elseif($aa!==false){$t.="`".$oa."`".$na."?";array_push($aa,self::value($v,$o,$x));}else{$t.=self::quote($oa).$na;if(gettype($o)=="integer"){$t.=$o;}else{$t.=self::quote($o);}}}}}else{if($ha){$t.=self::quote(self::rmComments($k)).$na.$d;}else{if($aa!==false){$u=self::getType($k);$t.="`".self::rmComments($k)."`".$na."?";array_push($aa,self::value($u,$d,$x));}else{$t.=self::quote(self::rmComments($k)).$na;if(gettype($d)=="integer"){$t.=$d;}else{$t.=self::quote($d);}}if($ba!==false){$ba[$k]=$e;$ba[$k."#".$fa]=$e++;}}}return$t;}$ga++;};return$ca($ca,$j,$ba,$e,$aa,$x);}staticfunctionSELECT($s,$pa,$qa,$da,$ra){$t="SELECT ";$f=count($pa);$aa=array();$h=array();if($f==0){$t.="*";}else{$q=0;$sa=0;$ta="";if($pa[0]=="DISTINCT"){$q=1;$sa=1;$t.="DISTINCT ";}elseif(substr($pa[0],0,11)=="INSERT INTO"){$q=1;$sa=1;$t=$pa[0]."".$t;}elseif(substr($pa[0],0,4)=="INTO"){$q=1;$sa=1;$ta="".$pa[0]."";}if($f>$sa){for(;$q<$f;$q++){$u=self::getType($pa[$q]);if($q>$sa){$t.=", ";}$t.=self::quote($pa[$q]);if($u)$t.=" AS `".$u."`";}}else$t.="*";$t.=$ta;}$t.=" FROM ".self::table($s);if($da){foreach($daas$k=>$d){if(substr($k,0,1)==="#"){$ha=true;$k=substr($k,1);}else{$ha=false;}$ia=self::getArg($k);switch($ia){case"<<":$t.=" RIGHT JOIN ";break;case">>":$t.=" LEFT JOIN ";break;case"<>":$t.=" FULL JOIN ";break;default:$t.=" JOIN ";break;}$t.=self::quote($k)." ON ";if($ha){$t.="val";}else{$t.=self::conditions($d);}}}$x="";if(count($qa)!=0){$t.=" WHERE ";$e=array();if(isset($qa[0])){$t.=self::conditions($qa[0],$aa,$e,$x);self::append2($h,$e,$qa);}else{$t.=self::conditions($qa,$aa,$e,$x);}}if($ra)$t.=" LIMIT ".$ra;returnarray($t,$aa,$h,$x);}staticfunctionINSERT($s,$ua){$t="INSERT INTO ".self::table($s)." (";$aa=array();$h=array();$x="";$va="";$q=0;$l=0;$i=array();$wa=isset($ua[0]);$j=$wa ?$ua[0]:$ua;foreach($jas$k=>$d){if(substr($k,0,1)==="#"){$ha=true;$k=substr($k,1);}else{$ha=false;}if($l!=0){$t.=", ";$va.=", ";}$v=self::getType($k);$t.="`".self::rmComments($k)."`";if($ha){$va.=$d;}else{$va.="?";array_push($aa,self::value($v,$d,$x));if($wa){$i[$k]=$q++;}else{self::append($h,$d,$q++);}}$l++;}if($wa)self::append2($h,$i,$ua);$t.=") VALUES (".$va.")";returnarray($t,$aa,$h,$x);}staticfunctionUPDATE($s,$ua,$qa){$t="UPDATE ".self::table($s)." SET ";$aa=array();$h=array();$x="";$q=0;$l=0;$i=array();$wa=isset($ua[0]);$j=$wa ?$ua[0]:$ua;foreach($jas$k=>$d){if(substr($k,0,1)==="#"){$ha=true;$k=substr($k,1);}else{$ha=false;}if($l!=0){$t.=", ";}if($ha){$t.="`".$k."` = ".$d;}else{$ia=self::getArg($k);$t.="`".$k."` = ";switch($ia){case"+=":$t.="`".$k."` + ?";break;case"-=":$t.="`".$k."` - ?";break;case"/=":$t.="`".$k."` / ?";break;case"*=":$t.="`".$k."` * ?";break;default:$t.="?";break;}$v=self::getType($k);array_push($aa,self::value($v,$d,$x));if($wa){$i[$k]=$q++;}else{self::append($h,$d,$q++);}}$l++;}if($wa)self::append2($h,$i,$ua);if(count($qa)!=0){$t.=" WHERE ";$e=array();if(isset($qa[0])){$t.=self::conditions($qa[0],$aa,$e,$x,$q);self::append2($h,$e,$qa);}else{$t.=self::conditions($qa,$aa,$e,$x,$q);}}returnarray($t,$aa,$h,$x);}staticfunctionDELETE($s,$qa){$t="DELETE FROM ".self::table($s);$aa=array();$h=array();$x="";if(count($qa)!=0){$t.=" WHERE ";$e=array();if(isset($qa[0])){$t.=self::conditions($qa[0],$aa,$e,$x);self::append2($h,$e,$qa);}else{$t.=self::conditions($qa,$aa,$e,$x);}}returnarray($t,$aa,$h,$x);}}
class AdvParser{privatestaticfunctiongetArg(&$a){if(substr($a,0,1)=="["&&substr($a,3,1)=="]"){$b=substr($a,1,2);$a=substr($a,4);return$b;}else{returnfalse;}}privatestaticfunctionappend(&$c,$d,$e){if(gettype($d)=="array"){$f=count($d);for($g=1;$g<$f;$g++){if(!isset($c[$g]))$c[$g]=array();$c[$g][$e]=$d[$g];}}}privatestaticfunctionappend2(&$h,$i,$j){functionstripArgs(&$k){if(substr($k,-1)=="]"){$l=strrpos($k,"[",-1);$k=substr($k,0,$l);}$l=strrpos($k,"]",-1);if($l!==false)$k=substr($k,$l+1);}functionrecurse(&$m,$d,$i,$n){foreach($das$g=>$o){if(gettype($o)=="array"){stripArgs($g);if(isset($o[0])){if(isset($i[$g."#".$n."*"]))$p=$i[$g."#".$n."*"];else$p=$i[$g."*"];foreach($oas$q=>$r){$m[$p+$q]=$r;}}else{recurse($m,$o,$i,$n."/".$g);}}else{stripArgs($g);if(isset($i[$g."#".$n]))$p=$i[$g."#".$n];else$p=$i[$g];$m[$p]=$o;}}}$f=count($j);for($k=1;$k<$f;$k++){$d=$j[$k];if(!isset($h[$k]))$h[$k]=array();recurse($h[$k],$d,$i,"");}}privatestaticfunctionquote($a){$a=explode(".",$a);$b="";for($q=0;$q<count($a);$q++){if($q!=0)$b.=".";$b.="`".$a[$q]."`";}return$b;}privatestaticfunctiontable($s){if(gettype($s)=="array"){$t="";for($q=0;$q<count($s);$q++){$u=self::getType($s[$q]);if($q!=0)$t.=", ";$t.=self::quote($s[$q]);if($u)$t.=" AS ".self::quote($u);}return$t;}else{returnself::quote($s);}}privatestaticfunctionvalue($v,$w,&$x){$y=strtolower($v);if(!$y)$y=strtolower(gettype($w));$v=\PDO::PARAM_INT;if($y=="boolean"||$y=="bool"){$v=\PDO::PARAM_BOOL;$w=$w ? "1" : "0";$x.="b";}elseif($y=="integer"||$y=="int"){$x.="i";$w=(int)$w;}elseif($y=="string"||$y=="str"){$v=\PDO::PARAM_STR;$w=(string)$w;$x.="s";}elseif($y=="double"||$y=="doub"){$w=(int)$w;$x.="i";}elseif($y=="resource"||$y=="lob"){$v=\PDO::PARAM_LOB;$x.="l";}elseif($y=="null"){$v=\PDO::PARAM_NULL;$w=null;$x.="n";}returnarray($w,$v);}privatestaticfunctiongetType(&$a){if(substr($a,-1)=="]"){$z=strpos($a,"[");if($z===false){return"";}$b=substr($a,$z+1,-1);$a=substr($a,0,$z);return$b;}elsereturn"";}privatestaticfunctionrmComments($a){$q=strpos($a,"#");if($q!==false){$a=substr($a,0,$q);}returntrim($a);}privatestaticfunctionconditions($j,&$aa=false,&$ba=false,&$x="",&$e=0){$ca=function(&$ca,$j,&$ba,&$e,&$aa,&$x,$da=" AND ",$ea=" = ",$fa=""){$ga=0;$t="";foreach($jas$k=>$d){if(substr($k,0,1)==="#"){$ha=true;$k=substr($k,1);}else{$ha=false;}$ia=self::getArg($k);$ja=$ia ? self::getArg($k): false;$ka=gettype($d);$la=!isset($d[0]);$ma=$da;$na=$ea;switch($ia){case"||":$ia=$ja;$ma=" OR ";break;case"&&":$ia=$ja;$ma=" AND ";break;}switch($ia){case">>":$na=" > ";break;case"<<":$na=" < ";break;case">=":$na=" >= ";break;case"<=":$na=" <= ";break;case"!=":$na=" != ";break;case"~~":$na=" LIKE ";break;case"!~":$na=" NOT LIKE ";break;default: if(!$la||$ia=="==")$na=" = ";break;}if($ga!=0)$t.=$da;if($ka=="array"){if($la){$t.="(".$ca($ca,$d,$ba,$e,$aa,$ma,$na,$fa."/".$k).")";}else{$v=self::getType($k);$oa=self::rmComments($k);if($ba!==false&&!$ha){$ba[$k."*"]=$e;$ba[$k."#".$fa."*"]=$e++;}foreach($was$g=>$o){if($g!=0)$t.=$ma;$e++;if($ha){$t.=self::quote($oa).$na.$o;}elseif($aa!==false){$t.="`".$oa."`".$na."?";array_push($aa,self::value($v,$o,$x));}else{$t.=self::quote($oa).$na;if(gettype($o)=="integer"){$t.=$o;}else{$t.=self::quote($o);}}}}}else{if($ha){$t.=self::quote(self::rmComments($k)).$na.$d;}else{if($aa!==false){$u=self::getType($k);$t.="`".self::rmComments($k)."`".$na."?";array_push($aa,self::value($u,$d,$x));}else{$t.=self::quote(self::rmComments($k)).$na;if(gettype($d)=="integer"){$t.=$d;}else{$t.=self::quote($d);}}if($ba!==false){$ba[$k]=$e;$ba[$k."#".$fa]=$e++;}}}return$t;}$ga++;};return$ca($ca,$j,$ba,$e,$aa,$x);}staticfunctionSELECT($s,$pa,$qa,$da,$ra){$t="SELECT ";$f=count($pa);$aa=array();$h=array();if($f==0){$t.="*";}else{$q=0;$sa=0;$ta="";if($pa[0]=="DISTINCT"){$q=1;$sa=1;$t.="DISTINCT ";}elseif(substr($pa[0],0,11)=="INSERT INTO"){$q=1;$sa=1;$t=$pa[0]."".$t;}elseif(substr($pa[0],0,4)=="INTO"){$q=1;$sa=1;$ta="".$pa[0]."";}if($f>$sa){for(;$q<$f;$q++){$u=self::getType($pa[$q]);if($q>$sa){$t.=", ";}$t.=self::quote($pa[$q]);if($u)$t.=" AS `".$u."`";}}else$t.="*";$t.=$ta;}$t.=" FROM ".self::table($s);if($da){foreach($daas$k=>$d){if(substr($k,0,1)==="#"){$ha=true;$k=substr($k,1);}else{$ha=false;}$ia=self::getArg($k);switch($ia){case"<<":$t.=" RIGHT JOIN ";break;case">>":$t.=" LEFT JOIN ";break;case"<>":$t.=" FULL JOIN ";break;default:$t.=" JOIN ";break;}$t.=self::quote($k)." ON ";if($ha){$t.="val";}else{$t.=self::conditions($d);}}}$x="";if(count($qa)!=0){$t.=" WHERE ";$e=array();if(isset($qa[0])){$t.=self::conditions($qa[0],$aa,$e,$x);self::append2($h,$e,$qa);}else{$t.=self::conditions($qa,$aa,$e,$x);}}if($ra){if(gettype($ra)=="integer"){$t.=" LIMIT ".$ra;}elseif(gettype($ra)=="string"){$t.="".$ra;}}returnarray($t,$aa,$h,$x);}staticfunctionINSERT($s,$ua){$t="INSERT INTO ".self::table($s)." (";$aa=array();$h=array();$x="";$va="";$q=0;$l=0;$i=array();$wa=isset($ua[0]);$j=$wa ?$ua[0]:$ua;foreach($jas$k=>$d){if(substr($k,0,1)==="#"){$ha=true;$k=substr($k,1);}else{$ha=false;}if($l!=0){$t.=", ";$va.=", ";}$v=self::getType($k);$t.="`".self::rmComments($k)."`";if($ha){$va.=$d;}else{$va.="?";array_push($aa,self::value($v,$d,$x));if($wa){$i[$k]=$q++;}else{self::append($h,$d,$q++);}}$l++;}if($wa)self::append2($h,$i,$ua);$t.=") VALUES (".$va.")";returnarray($t,$aa,$h,$x);}staticfunctionUPDATE($s,$ua,$qa){$t="UPDATE ".self::table($s)." SET ";$aa=array();$h=array();$x="";$q=0;$l=0;$i=array();$wa=isset($ua[0]);$j=$wa ?$ua[0]:$ua;foreach($jas$k=>$d){if(substr($k,0,1)==="#"){$ha=true;$k=substr($k,1);}else{$ha=false;}if($l!=0){$t.=", ";}if($ha){$t.="`".$k."` = ".$d;}else{$ia=self::getArg($k);$t.="`".$k."` = ";switch($ia){case"+=":$t.="`".$k."` + ?";break;case"-=":$t.="`".$k."` - ?";break;case"/=":$t.="`".$k."` / ?";break;case"*=":$t.="`".$k."` * ?";break;default:$t.="?";break;}$v=self::getType($k);array_push($aa,self::value($v,$d,$x));if($wa){$i[$k]=$q++;}else{self::append($h,$d,$q++);}}$l++;}if($wa)self::append2($h,$i,$ua);if(count($qa)!=0){$t.=" WHERE ";$e=array();if(isset($qa[0])){$t.=self::conditions($qa[0],$aa,$e,$x,$q);self::append2($h,$e,$qa);}else{$t.=self::conditions($qa,$aa,$e,$x,$q);}}returnarray($t,$aa,$h,$x);}staticfunctionDELETE($s,$qa){$t="DELETE FROM ".self::table($s);$aa=array();$h=array();$x="";if(count($qa)!=0){$t.=" WHERE ";$e=array();if(isset($qa[0])){$t.=self::conditions($qa[0],$aa,$e,$x);self::append2($h,$e,$qa);}else{$t.=self::conditions($qa,$aa,$e,$x);}}returnarray($t,$aa,$h,$x);}}
0 commit comments