//mi salvo la configurazione del sito per ripristinarla dopo aver incluso i moduli //la devo per forza includere qui perchè dalla configurazione capisco quali moduli includere $CONF_DA_RIPRISTINARE = array(); $CONF_DA_RIPRISTINARE_CON_MERGE = array();//per fare un array merge ricorsiva a un livello singolo foreach($CONF as $k=>$v){ if(is_array($v)){ //ATTENZIONE: qui damiano toglieva dalla configurazione pre moduli tutto ciò che è un array, per poi fare un merge (inteso come sovrascrittura) dopo aver incluso i moduli //questo vuol dire che se c'erano array con le chiavi numeriche i loro elementi vengono duplicati (ad esempio elementiDevice) $chiavi = array_keys($v); if($chiavi[0] !== 0){ $CONF_DA_RIPRISTINARE_CON_MERGE[$k] = $v; continue; } } //se non è un array o un array con chiavi numeriche $CONF_DA_RIPRISTINARE[$k] = $v; } //################### MODULI ################## if ($CONF['mod_html'] == "SI") require(INDI_PATH . "mod_html.inc.php"); if ($CONF['mod_grab'] == "SI") require(INDI_PATH . "mod_grab.inc.php"); if ($CONF['mod_menujb'] == "SI") require(INDI_PATH . "mod_menujb.inc.php"); if ($CONF['mod_menujb2'] == "SI") require(INDI_PATH . "mod_menujb2.inc.php"); if ($CONF['mod_pagine_dinamiche'] == "SI") require_once(INDI_PATH . "mod_pagine_dinamiche.inc.php"); else if ($CONF['mod_pagine_dinamiche2'] == "SI") require_once(INDI_PATH . "mod_pagine_dinamiche2.inc.php"); if ($CONF['mod_auth'] == "SI") require(INDI_PATH . "mod_auth.inc.php"); if ($CONF['mod_xfiles'] == "SI") require(INDI_PATH . "mod_xfiles.inc.php"); if ($CONF['mod_carr'] == "SI") require(INDI_PATH . "mod_carr.inc.php"); else if ($CONF['mod_carr2'] == "SI") require(INDI_PATH . "mod_carr2.inc.php"); if ($CONF['mod_smarty'] == "SI") require(INDI_PATH . "mod_smarty.inc.php"); if ($CONF['mod_form2'] == "SI") require(INDI_PATH . "mod_form2.inc.php"); if ($CONF['mod_snippet'] == "SI") require(INDI_PATH . "mod_snippet.inc.php"); if ($CONF['mod_disponibilita'] == "SI") require(INDI_PATH . "mod_disponibilita.inc.php"); if ($CONF['mod_newsletter'] == "SI") require(INDI_PATH . "mod_newsletter.inc.php"); if ($CONF['mod_moduli'] == "SI") require(INDI_PATH . "mod_moduli.inc.php"); if ($CONF['mod_templating'] == "SI") require(INDI_PATH . "mod_templating.inc.php"); if ($CONF['mod_apache_autoconf'] == "SI") require(INDI_PATH . "mod_apache_autoconf.inc.php"); if ($CONF['mod_invoicex'] == "SI"){ if($CONF['db_invoicex']){ $res = db_qa("SHOW DATABASES LIKE '" . $CONF['db_invoicex'] . "'"); if($res) require(INDI_PATH . "mod_invoicex.inc.php"); else d_err("Database inesistente: ".$CONF['db_invoicex']); } else d_err("inserisci variabile db_invoicex"); } if ($CONF['mod_invoicex2'] == "SI"){ if($CONF['db_invoicex']){ $res = db_qa("SHOW DATABASES LIKE '" . $CONF['db_invoicex'] . "'"); if($res) require(INDI_PATH . "mod_invoicex2.inc.php"); else d_err("Database inesistente: ".$CONF['db_invoicex']); } else d_err("inserisci variabile db_invoicex"); } if ($CONF['mod_privacy_cookie'] == "SI") require(INDI_PATH . "mod_privacy_cookie.inc.php"); //MODULI DEFAULT require_once(INDI_PATH . "mod_galleria.inc.php"); require_once(INDI_PATH . "mod_menu.inc.php"); require_once(INDI_PATH . "mod_form.inc.php"); require_once(INDI_PATH . "mod_visualizzazione.inc.php"); //aggiungo HACK REW ??? if($_GET["REW"] != "" and $indi_location == "loc") $CONF["REW"] = $_GET["REW"]; //faccio merge della variabili loc|rem //altrimenti non potrei più distinguerle da quelle loc|rem definite successivamente e non averei le giuste priorità $CONF = array_merge($CONF, $CONF[$indi_location]); unset($CONF['loc']); unset($CONF['rem']); if(function_exists(pre_configuration_function)) pre_configuration_function(); indi_do_action(pre_conf); //viene fatto un merge che da' priorità a quello che esisteva prima dell'inclusione moduli (ovvero proveniente da base + indi.inc.php) $CONF = array_merge($CONF, $CONF_DA_RIPRISTINARE); foreach($CONF_DA_RIPRISTINARE_CON_MERGE as $k=>$v){ if(is_array($CONF[$k])){ $CONF[$k] = array_merge_recursive_replace($CONF[$k], $v); // if(!in_array($CONF['sito'], ['cookietest', 'ordinalo'])){ // $primaEraCosì = array_merge($CONF[$k], $v); // if($primaEraCosì != $CONF[$k]){ // trigger_error_to_carlo("\$CONF array_merge_recursive_replace"); // if($_SERVER['REMOTE_ADDR'] == '192.168.0.177' || $_GET['debugtnx']){ // function arrayRecursiveDiff($aArray1, $aArray2) { // $aReturn = array(); // foreach ($aArray1 as $mKey => $mValue) { // if (array_key_exists($mKey, $aArray2)) { // if (is_array($mValue)) { // $aRecursiveDiff = arrayRecursiveDiff($mValue, $aArray2[$mKey]); // if (count($aRecursiveDiff)) { $aReturn[$mKey] = $aRecursiveDiff; } // } else { // if ($mValue != $aArray2[$mKey]) { // $aReturn[$mKey] = $mValue; // } // } // } else { // $aReturn[$mKey] = $mValue; // } // } // return $aReturn; // } // echo '
';
// $debugBacktrace = debug_backtrace(); array_unshift($debugBacktrace, array('file'=>__FILE__, 'line'=>__LINE__, 'function'=>'debugTnx')); foreach($debugBacktrace as $debugLine) echo "".str_replace("/tnx/www/html/www/", "", $debugLine['file']).""." ".$debugLine['function']."()
";
// $printMe = arrayRecursiveDiff($CONF[$k], $primaEraCosì); ob_start(); if(is_object($printMe)||is_array($printMe)) print_r($printMe); else var_dump($printMe); echo htmlentities(ob_get_clean(), ENT_COMPAT|ENT_HTML401|ENT_SUBSTITUTE, 'UTF-8');
// echo '';
// die;
// }
// }
// }
}
else{
$CONF[$k] = $v;
}
}
if(function_exists(post_configuration_function)) post_configuration_function();
indi_do_action(post_conf);
function wahaDebug(){
global $DATI;
$wahaOut = '';
if($_GET['debugtnx'] == "wahaSessions") $wahaOut = wahaSessions();
else if($_GET['debugtnx'] == "wahaContacts") $wahaOut = wahaContacts();
else if($_GET['debugtnx'] == "wahaSendText") $wahaOut = wahaSendText([
"chatId" => $_GET['to'] ? $_GET['to'] : "393346243294",
"text" => "Test delle ".strftime("%H:%M")." ".$DATI['baseurl']//." su https://www.tnx.it/ oppure su https://www.google.it/"
]);
if($wahaOut) print_r_tnx($wahaOut, true) || die;
}
indi_add_action("post_include", 'wahaDebug');
if($_GET['wahaMessage']){
$json = json_decode(file_get_contents("php://input"));
if(
!in_array($json->payload->from, [
'status@broadcast', //stati
'867051314767696@c.us' //metaAI
])
&& strpos($json->payload->from, "@lid") === false//Linked ID, viene mostrato quando WhatsApp non vuole esporre il numero
&& strpos($json->payload->from, "@g.us") === false//gruppi
&& strpos($json->payload->from, "@newsletter") === false//canali?
&& strpos($json->payload->from, "@broadcast") === false//messaggi broadcast (potrei comunque recuperare il mittente splittando l'id o dal _data->Info->Sender)
){
$from = str_replace("@c.us", "", $json->payload->from);
if(strpos($json->payload->from, "@c.us") === false || !intval($from) || $from > 9999999999999){//numero buono: +4915205927567
mailtnx($_SERVER['TNX_SERVER_ID']=='demo'?'c@localhost':"carlo@tnx.it", "Debug wahaEngagements", __FILE__.":".__LINE__."\n".print_r(array($json, $_REQUEST, $_SERVER), true));
}
else{
$to = str_replace("@c.us", "", $json->me->id);
$_DB->insert("indi_admin.wahaEngagements", compact("from", "to"), false, 'LOW_PRIORITY IGNORE');
// mailtnx($_SERVER['TNX_SERVER_ID']=='demo'?'c@localhost':"carlo@tnx.it", "Debug ".microtime(true), __FILE__.":".__LINE__."\n".print_r(array($from, $to), true));
}
}
die;
}
?>