<?php
if (!empty($_SERVER["argv"][1])){
        $argument = $_SERVER["argv"][1];
	$ferfil = $_SERVER["argv"][2];
	$pub = $_SERVER["argv"][3];
} else {
// Presenta l'ajuda
        echo "NO HE REBUT la variable\n";
        echo "Cal el directori on s'executa el bot_plus.\n";
        exit;
}
$lloc = $argument;

// ara podrá carregar la configuració i el logger
include("".$lloc."/configuracio/bot_plus_cfg.php");
include("".$lloc."/utils/bot_plus_funcions.php");
require_once("".$lloc."/lib/logger.php");

// inicia el log
$log = new Logging();
$log->lfile("".$log_fitxer."");

$fitxer = $lloc."/fitxers/impulsos.json";
$json_dec = json_decode(file_get_contents($fitxer), true);
//print_r($json_dec);
$maxim = count($json_dec);

$k = 0;
//$ui_tot = 0;
for($k=0;$k<$maxim;$k++) {
	$usu_imp = $json_dec[$k]['qui'];
	$usu_mat[] = $usu_imp;
}
//print_r($usu_mat);
$usu_mat_ord = array_count_values($usu_mat);
arsort($usu_mat_ord);

//print_r($usu_mat_ord);

$l = 0;
$top = count($usu_mat_ord);
$usu_inv_mat = array();

foreach ($usu_mat_ord as $clau => $valor) {
	$usu_nom = explode("@",$clau);
	if( (count($usu_nom)==1) ) {
		$inst_t = "mastodont.cat";
	} else {
		$inst_t = $usu_nom[1];
	}

	$usu_inv_mat[] += $valor;
	$usu_ins_mat[] = [$inst_t => $valor];
	$usu_per_mat[] = [$usu_nom[0], $valor];
}

$pers_matriu = array_column($usu_per_mat, '1', '0');
//print_r($pers_matriu);
$pers_tot = count($pers_matriu);

$sum_insta = array();
array_walk_recursive($usu_ins_mat, function($item, $key) use (&$sum_insta){
    $sum_insta[$key] = isset($sum_insta[$key]) ?  $item + $sum_insta[$key] : $item;
});

//echo  "sum_insta";
arsort($sum_insta);
//print_r($sum_insta);
$sum_inst_mtr = array();
$sum_total = 0;
foreach ($sum_insta as $clau => $valor) {
//	echo $valor." impulsos des de ".$clau."\n";
//	$sum_inst_mtr[] = $valor." des de " .$clau. "\n";
	$sum_total += $valor;
}
foreach ($sum_insta as $clau => $valor) {
//	echo $valor." impulsos des de ".$clau."\n";
//	$sum_inst_mtr[] = $valor." des de " .$clau. "\n";
	$sum_inst_mtr[] = $valor." (".round((($valor/$sum_total)*100),2)."%) des de " .$clau. "\n";
//	$sum_total += $valor;
}

if ($pub !=0) {
	goto elaboracio;
} else {
	exit;
}

elaboracio:

$seguid   = shell_exec("cat ".$lloc."/fitxers/seg_cont.txt");
$a = count($sum_insta);

$part0 = "Els impulsos s'han fet: \n";
$part1 = implode("",$sum_inst_mtr);
$part2 = "Un total de ".$pers_tot." ".(($pers_tot<>1)?"persones han":"persona ha")." impulsat des de ".$a." ".(($a<>1)?"instàncies diferents":"instància").
	" i representen el ".round(($pers_tot/$seguid)*100,2)."% sobre els seguidors.\n";

$part3 =  "Amb un total de ".$sum_total." impulsos (favorits i reblocs)\n".
	  "Moltes gràcies!.\n".
	  "#SocUnBot #ResumSetmanal";

$tut = $part0."".$part1."".$part2."".$part3."\n";
//echo $tut;

$lletres = strlen($tut);
//echo $lletres." caracters \n";

$linies_tut = substr_count($tut, "\n");

$nlin = 11;
if($linies_tut>=$nlin) {

	$pasada = ceil($linies_tut/$nlin);

	for($r=1;$r<=$pasada;$r++) {
		$tut_complet = $tut;
		$linies = explode("\n", $tut_complet);
		if($r==1) {
		$linies = array_slice($linies, 0, $nlin*$r); //18 is how many lines you want to keep
		} else {
		$linies = array_slice($linies, $nlin*($r-1), $nlin); //18 is how many lines you want to keep
		}
		$tut_frag = implode("\n", $linies);
//		echo "linies: ".$nlin*$r."\n";
//		echo "Tut nº".$r."\n".$tut_frag."\n";
//		echo strlen($tut_frag)." caracters \n";
//		echo substr_count($tut_frag,"\n")." linies \n";
//		echo $linies_tut." linies \n";
		sleep(1);

		// publicacio per fer els tuts que calga, sempre múltiple de nlin
/**
                if($r == 1) {
//              echo "primer tut\n";
                        $tut_data = array(
                                "status" => $tut_frag,
                                "language" => $llengua,
                                "visibility" => $visib_imp_res
                        );
//              print_r($tut_data);
                } else {
**/
//              echo "tut nº".$r."\n";
                        $tut_data = array(
                                "status" => $tut_frag,
                                "language" => $llengua,
                                "visibility" => $visib_imp_res,
                                "in_reply_to_id" => $ferfil
                        );
//              print_r($tut_data);
//                }

                // no es pot aplicar la funció. no retrona el id per fer la resposta o fil.
//              PublicaMissatge($base_url,$headers,$tut_data);
                $bot_conn = curl_init();
                curl_setopt($bot_conn, CURLOPT_URL, $base_url . "/api/v1/statuses");
                curl_setopt($bot_conn, CURLOPT_POST, 1);
                curl_setopt($bot_conn, CURLOPT_POSTFIELDS, $tut_data);
                curl_setopt($bot_conn, CURLOPT_HTTPHEADER, $headers);
                curl_setopt($bot_conn, CURLOPT_RETURNTRANSFER, true);
//              $resposta_in = curl_exec($bot_conn);
//              $resposta_conn = json_decode($resposta_in,true);
                $resposta_conn = json_decode(curl_exec($bot_conn),true);
                curl_close ($bot_conn);

//              echo "resposta del servidor\n";
//              print_r($resposta_conn);
                $ferfil = $resposta_conn['id'];
                sleep(1);
//echo $tut_frag;
	}

} else {
// publica només un tut
echo $tut;
//echo strlen($tut)." caracters \n";
//echo "linies_tut: ".$linies_tut."\n";

	$tut_data = array(
		"status" => $tut,
		"language" => $llengua,
		"visibility" => $visib_imp_res,
		"in_reply_to_id" => $ferfil

	);

//	PublicaMissatge($base_url,$headers,$tut_data);
	$bot_conn = curl_init();
	curl_setopt($bot_conn, CURLOPT_URL, $base_url . "/api/v1/statuses");
	curl_setopt($bot_conn, CURLOPT_POST, 1);
	curl_setopt($bot_conn, CURLOPT_POSTFIELDS, $tut_data);
	curl_setopt($bot_conn, CURLOPT_HTTPHEADER, $headers);
	curl_setopt($bot_conn, CURLOPT_RETURNTRANSFER, true);
//              $resposta_in = curl_exec($bot_conn);
//              $resposta_conn = json_decode($resposta_in,true);
	$resposta_conn = json_decode(curl_exec($bot_conn),true);
	curl_close ($bot_conn);

//              echo "resposta del servidor\n";
//              print_r($resposta_conn);
	$ferfil = $resposta_conn['id'];

}
//print_r($resposta_conn);
//exit;
// aqui per que a impulsos em dona errada tot i que ho fa
$log -> lwrite("INFO: fer tut instàncies d'impulsos: ".( (($ferfil != null)||($ferfil != false))?"correcte":"ERRADA")."");

// fer tuts de impulsos i favorits per dies de la setmana
//$graf_imp_setm = shell_exec("/usr/bin/php -f ".$lloc."/proves/bot_plus_estadistiques_inst_impulsos.php ".$lloc." ".$ferfil." 1" );
$graf_imp_setm = shell_exec("/usr/bin/php -f ".$lloc."/utils/bot_plus_graficsxdies.php ".$lloc." ".$ferfil."");
$log -> lwrite("INFO: fer tut gràfics per dies: ".( (($graf_imp_setm != null)||($graf_imp_setm != false))?"correcte":"ERRADA")."");

?>