2010-12-02 23:34:41 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
$request = isset($_POST['request'])? $_POST['request']: null;
|
|
|
|
|
if( !isset($request) ){
|
2012-01-12 11:05:45 -04:00
|
|
|
$request = isset($_GET['request'])? $_GET['request']: null;
|
2010-12-02 23:34:41 +00:00
|
|
|
}
|
|
|
|
|
if( isset($request) ){
|
2012-01-12 11:05:45 -04:00
|
|
|
switch($request){
|
|
|
|
|
case 'deleteGridRowOnDynaform':
|
|
|
|
|
|
|
|
|
|
if( isset($_SESSION['APPLICATION']) ){
|
|
|
|
|
G::LoadClass('case');
|
|
|
|
|
$oApp= new Cases();
|
|
|
|
|
$aFields = $oApp->loadCase($_SESSION['APPLICATION']);
|
|
|
|
|
unset($aFields['APP_DATA'][$_POST['gridname']][$_POST['rowpos']]);
|
|
|
|
|
$oApp->updateCase($_SESSION['APPLICATION'], $aFields);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
break;
|
2010-12-02 23:34:41 +00:00
|
|
|
/** widgets **/
|
|
|
|
|
case 'suggest':
|
|
|
|
|
|
2012-01-12 11:05:45 -04:00
|
|
|
try {
|
|
|
|
|
if(isset($_GET["inputEnconde64"])) {
|
|
|
|
|
$_GET['input'] = base64_decode($_GET['input']);
|
|
|
|
|
}
|
2010-12-02 23:34:41 +00:00
|
|
|
$sData = base64_decode(str_rot13($_GET['hash']));
|
2011-06-17 09:41:08 -04:00
|
|
|
list($SQL, $DB_UID) = explode('@|', $sData);
|
|
|
|
|
// Remplace values for dependent fields
|
|
|
|
|
$aDependentFieldsKeys = explode("|", base64_decode(str_rot13($_GET['dependentFieldsKeys'])));
|
|
|
|
|
$aDependentFieldsValue = explode("|", $_GET['dependentFieldsValue']);
|
|
|
|
|
if($aDependentFieldsKeys){
|
|
|
|
|
$SQL = str_replace($aDependentFieldsKeys, $aDependentFieldsValue, $SQL);
|
|
|
|
|
}
|
2012-01-12 11:05:45 -04:00
|
|
|
|
|
|
|
|
// Parsed SQL Structure
|
|
|
|
|
G::LoadClass('phpSqlParser');
|
|
|
|
|
|
|
|
|
|
$parser = new PHPSQLParser($SQL);
|
|
|
|
|
// Verif parsed array
|
|
|
|
|
// print_r($parser->parsed);
|
|
|
|
|
$SQL = queryModified($parser->parsed, $_GET['input']);
|
2011-06-17 09:41:08 -04:00
|
|
|
|
2010-12-02 23:34:41 +00:00
|
|
|
$aRows = Array();
|
|
|
|
|
try {
|
2012-01-12 11:05:45 -04:00
|
|
|
$con = Propel::getConnection($DB_UID);
|
|
|
|
|
$con->begin();
|
|
|
|
|
$rs = $con->executeQuery($SQL);
|
|
|
|
|
$con->commit();
|
2010-12-02 23:34:41 +00:00
|
|
|
|
2012-01-12 11:05:45 -04:00
|
|
|
while ( $rs->next() ) {
|
|
|
|
|
array_push($aRows, $rs->getRow());
|
|
|
|
|
}
|
2010-12-02 23:34:41 +00:00
|
|
|
} catch (SQLException $sqle) {
|
|
|
|
|
$con->rollback();
|
|
|
|
|
}
|
|
|
|
|
|
2012-01-12 11:05:45 -04:00
|
|
|
$input = strtolower( $_GET['input'] );
|
|
|
|
|
$len = strlen($input);
|
|
|
|
|
$limit = isset($_GET['limit']) ? (int) $_GET['limit'] : 0;
|
2010-12-02 23:34:41 +00:00
|
|
|
$aResults = array();
|
2012-01-12 11:05:45 -04:00
|
|
|
$count = 0;
|
|
|
|
|
$aRows = sortByChar($aRows, $input);
|
2010-12-02 23:34:41 +00:00
|
|
|
|
|
|
|
|
if ($len){
|
2012-01-12 11:05:45 -04:00
|
|
|
for ($i=0;$i<count($aRows);$i++){
|
|
|
|
|
$aRow = $aRows[$i];
|
|
|
|
|
$nCols = sizeof($aRow);
|
|
|
|
|
|
|
|
|
|
$aRow = array_values($aRow);
|
|
|
|
|
switch( $nCols ){
|
|
|
|
|
case 1:
|
|
|
|
|
$id = $aRow[0];
|
|
|
|
|
$value = $aRow[0];
|
|
|
|
|
$info = '';
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case 2:
|
|
|
|
|
$id = $aRow[0];
|
|
|
|
|
$value = $aRow[1];
|
|
|
|
|
$info = '';
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case $nCols >= 3:
|
|
|
|
|
$id = $aRow[0];
|
|
|
|
|
$value = $aRow[1];
|
|
|
|
|
$info = $aRow[2];
|
|
|
|
|
break;
|
2010-12-02 23:34:41 +00:00
|
|
|
}
|
2012-01-12 11:05:45 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
// had to use utf_decode, here
|
|
|
|
|
// not necessary if the results are coming from mysql
|
|
|
|
|
//
|
|
|
|
|
$count++;
|
|
|
|
|
$aResults[] = array( "id"=>$id ,"value"=>htmlspecialchars($value), "info"=>htmlspecialchars($info) );
|
|
|
|
|
|
|
|
|
|
if ($limit && $count==$limit)
|
|
|
|
|
break;
|
|
|
|
|
}
|
2010-12-02 23:34:41 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
|
|
|
|
|
header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // always modified
|
|
|
|
|
header ("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
|
|
|
|
|
header ("Pragma: no-cache"); // HTTP/1.0
|
|
|
|
|
|
|
|
|
|
if (isset($_REQUEST['json'])) {
|
2012-01-12 11:05:45 -04:00
|
|
|
header("Content-Type: application/json");
|
|
|
|
|
echo "{\"status\":0, \"results\": [";
|
|
|
|
|
$arr = array();
|
|
|
|
|
$aReplace = array("(\r\n)", "(\n\r)", "(\n)", "(\r)");
|
|
|
|
|
for ($i=0;$i<count($aResults);$i++) {
|
|
|
|
|
$arr[] = "{\"id\": \"".$aResults[$i]['id']."\", \"value\": \"". html_entity_decode(preg_replace($aReplace, "", $aResults[$i]['value']))."\", \"info\": \"".$aResults[$i]['info']."\"}";
|
|
|
|
|
}
|
|
|
|
|
echo implode(", ", $arr);
|
|
|
|
|
echo "]}";
|
2010-12-02 23:34:41 +00:00
|
|
|
} else {
|
2012-01-12 11:05:45 -04:00
|
|
|
header("Content-Type: text/xml");
|
2010-12-02 23:34:41 +00:00
|
|
|
|
2012-01-12 11:05:45 -04:00
|
|
|
echo "<?xml version=\"1.0\" encoding=\"utf-8\" ?><results>";
|
|
|
|
|
for ($i=0;$i<count($aResults);$i++)
|
|
|
|
|
{
|
|
|
|
|
echo "<rs id=\"".$aResults[$i]['id']."\" info=\"".$aResults[$i]['info']."\">".$aResults[$i]['value']."</rs>";
|
|
|
|
|
}
|
|
|
|
|
echo "</results>";
|
2010-12-02 23:34:41 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} catch(Exception $e){
|
|
|
|
|
$err = $e->getMessage();
|
2010-12-08 15:05:47 +00:00
|
|
|
//$err = eregi_replace("[\n|\r|\n\r]", ' ', $err);
|
|
|
|
|
$err = preg_replace("[\n|\r|\n\r]", ' ', $err);//Made compatible to PHP 5.3
|
2010-12-02 23:34:41 +00:00
|
|
|
echo '{"status":1, "message":"'.$err.'"}';
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
2012-01-12 11:05:45 -04:00
|
|
|
case 'storeInTmp':
|
|
|
|
|
try {
|
2010-12-02 23:34:41 +00:00
|
|
|
$con = Propel::getConnection($_GET['cnn']);
|
|
|
|
|
if($_GET['pkt'] == 'int'){
|
|
|
|
|
$rs = $con->executeQuery("SELECT MAX({$_GET['pk']}) as lastId FROM {$_GET['table']};");
|
|
|
|
|
$rs->next();
|
|
|
|
|
$row = $rs->getRow();
|
|
|
|
|
$gKey = (int)$row['lastId'] + 1;
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
$gKey = md5(date('Y-m-d H:i:s').'@'.rand());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$rs = $con->executeQuery("INSERT INTO {$_GET['table']} ({$_GET['pk']}, {$_GET['fld']}) VALUES ('$gKey', '{$_GET['value']}');");
|
|
|
|
|
echo '{status:0, message:"success"}';
|
|
|
|
|
}catch( Exception $e){
|
|
|
|
|
$err = $e->getMessage();
|
2010-12-08 15:05:47 +00:00
|
|
|
//$err = eregi_replace("[\n|\r|\n\r]", ' ', $err);
|
2012-01-12 11:05:45 -04:00
|
|
|
$err = preg_replace("[\n|\r|\n\r]", ' ', $err); // Made compatible to PHP 5.3
|
2010-12-02 23:34:41 +00:00
|
|
|
echo '{result:1, message:"'.$err.'"}';
|
|
|
|
|
}
|
|
|
|
|
break;
|
2012-01-12 11:05:45 -04:00
|
|
|
}
|
2010-12-02 23:34:41 +00:00
|
|
|
}
|
|
|
|
|
|
2011-12-16 12:30:57 -04:00
|
|
|
function sortByChar($aRows, $charSel)
|
|
|
|
|
{
|
|
|
|
|
$aIniChar = array();
|
|
|
|
|
$aRest = array();
|
|
|
|
|
for($i=0; $i<count($aRows) ;$i++){
|
2012-01-12 11:05:45 -04:00
|
|
|
$aRow = $aRows[$i];
|
|
|
|
|
$nCols = sizeof($aRow);
|
2011-12-16 12:30:57 -04:00
|
|
|
$aRowOrder = array_values($aRow);
|
|
|
|
|
switch( $nCols ){
|
|
|
|
|
case 1:
|
|
|
|
|
$value = $aRowOrder[0];
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
$value = $aRowOrder[1];
|
|
|
|
|
break;
|
|
|
|
|
case $nCols >= 3:
|
|
|
|
|
$value = $aRowOrder[1];
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
2012-01-12 11:05:45 -04:00
|
|
|
if(substr(strtolower($value), 0, 1) == substr( strtolower($charSel), 0, 1)){
|
2011-12-16 12:30:57 -04:00
|
|
|
array_push($aIniChar, $aRow);
|
|
|
|
|
} else {
|
|
|
|
|
array_push($aRest, $aRow);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return array_merge($aIniChar, $aRest);
|
|
|
|
|
}
|
2012-01-12 11:05:45 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Converts a SQL array parsing to a SQL string.
|
|
|
|
|
* @param string $sqlParsed
|
|
|
|
|
* @param string $inputSel default value empty string
|
|
|
|
|
* @return string
|
|
|
|
|
*/
|
|
|
|
|
function queryModified($sqlParsed, $inputSel = "")
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
if(!empty($sqlParsed['SELECT'])) {
|
|
|
|
|
|
|
|
|
|
$sqlSelect = "SELECT ";
|
|
|
|
|
$aSelect = $sqlParsed['SELECT'];
|
|
|
|
|
|
|
|
|
|
$sFieldSel = (count($aSelect)>1 ) ? $aSelect[1]['base_expr'] : $aSelect[0]['base_expr'];
|
|
|
|
|
foreach($aSelect as $key => $value ) {
|
|
|
|
|
if($key != 0)
|
|
|
|
|
$sqlSelect .= ", ";
|
|
|
|
|
$sAlias = str_replace("`","", $aSelect[$key]['alias']);
|
|
|
|
|
$sBaseExpr = $aSelect[$key]['base_expr'];
|
|
|
|
|
switch($aSelect[$key]['expr_type']){
|
|
|
|
|
case 'colref' : if($sAlias === $sBaseExpr)
|
|
|
|
|
$sqlSelect .= $sAlias;
|
|
|
|
|
else
|
|
|
|
|
$sqlSelect .= $sBaseExpr . ' AS ' . $sAlias;
|
|
|
|
|
break;
|
|
|
|
|
case 'expression' : if($sAlias === $sBaseExpr)
|
|
|
|
|
$sqlSelect .= $sBaseExpr;
|
|
|
|
|
else
|
|
|
|
|
$sqlSelect .= $sBaseExpr . ' AS ' . $sAlias;
|
|
|
|
|
break;
|
|
|
|
|
case 'subquery' : if(strpos($sAlias, $sBaseExpr,0) != 0)
|
|
|
|
|
$sqlSelect .= $sAlias;
|
|
|
|
|
else
|
|
|
|
|
$sqlSelect .= $sBaseExpr . " AS " . $sAlias;
|
|
|
|
|
break;
|
|
|
|
|
case 'operator' : $sqlSelect .= $sBaseExpr;
|
|
|
|
|
break;
|
|
|
|
|
default : $sqlSelect .= $sBaseExpr;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$sqlFrom = " FROM ";
|
|
|
|
|
if(!empty($sqlParsed['FROM'])){
|
|
|
|
|
$aFrom = $sqlParsed['FROM'];
|
|
|
|
|
if(count($aFrom) > 0){
|
|
|
|
|
foreach($aFrom as $key => $value ){
|
|
|
|
|
if($key == 0) {
|
|
|
|
|
$sqlFrom .= $aFrom[$key]['table'] . (($aFrom[$key]['table'] == $aFrom[$key]['alias'])?"" : " " . $aFrom[$key]['alias']);
|
|
|
|
|
} else {
|
|
|
|
|
$sqlFrom .= " " . (($aFrom[$key]['join_type']=='JOIN')?"INNER": $aFrom[$key]['join_type']) . " JOIN " . $aFrom[$key]['table']
|
|
|
|
|
. (($aFrom[$key]['table'] == $aFrom[$key]['alias'])?"" : " " . $aFrom[$key]['alias']) . " " . $aFrom[$key]['ref_type'] . " " . $aFrom[$key]['ref_clause'] ;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(!empty($sqlParsed['WHERE'])){
|
|
|
|
|
$sqlWhere = " WHERE ";
|
|
|
|
|
$aWhere = $sqlParsed['WHERE'];
|
|
|
|
|
foreach($aWhere as $key => $value ){
|
|
|
|
|
$sqlWhere .= $value['base_expr'] . " ";
|
|
|
|
|
}
|
|
|
|
|
$sqlWhere .= " AND " . $sFieldSel . " LIKE '%". $inputSel . "%'";
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
$sqlWhere = " WHERE " . $sFieldSel . " LIKE '%". $inputSel ."%' ";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$sqlGroupBy = "";
|
|
|
|
|
if(!empty($sqlParsed['GROUP'])){
|
|
|
|
|
$sqlGroupBy = "GROUP BY ";
|
|
|
|
|
$aGroup = $sqlParsed['GROUP'];
|
|
|
|
|
foreach($aGroup as $key => $value ){
|
|
|
|
|
if($key != 0)
|
|
|
|
|
$sqlGroupBy .= ", ";
|
|
|
|
|
if($value['direction'] == 'ASC' )
|
|
|
|
|
$sqlGroupBy .= $value['base_expr'];
|
|
|
|
|
else
|
|
|
|
|
$sqlGroupBy .= $value['base_expr'] . " " . $value['direction'];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$sqlHaving = "";
|
|
|
|
|
if(!empty($sqlParsed['HAVING'])){
|
|
|
|
|
$sqlHaving = "HAVING ";
|
|
|
|
|
$aHaving = $sqlParsed['HAVING'];
|
|
|
|
|
foreach($aHaving as $key => $value ){
|
|
|
|
|
$sqlHaving .= $value['base_expr'] . " ";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$sqlOrderBy = "";
|
|
|
|
|
if(!empty($sqlParsed['ORDER'])){
|
|
|
|
|
$sqlOrderBy = "ORDER BY ";
|
|
|
|
|
$aOrder = $sqlParsed['ORDER'];
|
|
|
|
|
foreach($aOrder as $key => $value ){
|
|
|
|
|
if($key != 0)
|
|
|
|
|
$sqlOrderBy .= ", ";
|
|
|
|
|
if($value['direction'] == 'ASC' )
|
|
|
|
|
$sqlOrderBy .= $value['base_expr'];
|
|
|
|
|
else
|
|
|
|
|
$sqlOrderBy .= $value['base_expr'] . " " . $value['direction'];
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
$sqlOrderBy = " ORDER BY " . $sFieldSel;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$sqlLimit = "";
|
|
|
|
|
if(!empty($sqlParsed['LIMIT'])){
|
|
|
|
|
$sqlLimit = "LIMIT ". $sqlParsed['LIMIT']['start'] . ", " . $sqlParsed['LIMIT']['end'];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $sqlSelect . $sqlFrom . $sqlWhere . $sqlGroupBy . $sqlHaving . $sqlOrderBy . $sqlLimit;
|
|
|
|
|
}
|
|
|
|
|
if(!empty($sqlParsed['CALL'])){
|
|
|
|
|
$sCall = "CALL ";
|
|
|
|
|
$aCall = $sqlParsed['CALL'];
|
|
|
|
|
foreach($aCall as $key => $value ){
|
|
|
|
|
$sCall .= $value . " ";
|
|
|
|
|
}
|
|
|
|
|
return $sCall;
|
|
|
|
|
}
|
|
|
|
|
if(!empty($sqlParsed['EXECUTE'])){
|
|
|
|
|
$sCall = "EXECUTE ";
|
|
|
|
|
$aCall = $sqlParsed['EXECUTE'];
|
|
|
|
|
foreach($aCall as $key => $value ){
|
|
|
|
|
$sCall .= $value . " ";
|
|
|
|
|
}
|
|
|
|
|
return $sCall;
|
|
|
|
|
}
|
|
|
|
|
if(!empty($sqlParsed[''])){
|
|
|
|
|
$sCall = "";
|
|
|
|
|
$aCall = $sqlParsed[''];
|
|
|
|
|
foreach($aCall as $key => $value ){
|
|
|
|
|
$sCall .= $value . " ";
|
|
|
|
|
}
|
|
|
|
|
return $sCall;
|
|
|
|
|
}
|
|
|
|
|
}
|