<?php

include "../Database.class";
include "../Functions.php";

  error_reporting (22527);

//---------------------------------------------------------------------------------------------------------------- 
// 
//----------------------------------------------------------------------------------------------------------------  
  
  if(isset($_GET["output"]) == TRUE)
  {
    $Output = $_GET["output"];
  }
  else
  {
    $Output = "json";
  }
  
  if(isset($_POST["name"]) == TRUE)
  {
    $Name = $_POST["name"];
  }
  else
  {
    $Name = "";
  }
  
  if(isset($_POST["email"]) == TRUE)
  {
    $Email = $_POST["email"];
  }
  else
  {
    $Email = "";
  }
  
  if(isset($_POST["password"]) == TRUE)
  {
    $Password = $_POST["password"];
  }
  else
  {
    $Password = CONFIG_API_PASSWORD;
  }
  
  if(isset($_POST["lang"]) == TRUE)
  {
    $Lang = $_POST["lang"];
  }
  else
  {
    $Lang = "";
  }
  
  if(isset($_POST["gcm_regid"]) == TRUE)
  {
    $GcmRegId = $_POST["gcm_regid"];
  }
  else
  {
    $GcmRegId = "";
  }
  
  if(isset($_POST["polling"]) == TRUE)
  {
    $Polling = $_POST["polling"];
  }
  else
  {
    $Polling = "";
  }

//---------------------------------------------------------------------------------------------------------------- 
// INIT
//----------------------------------------------------------------------------------------------------------------  

  $Db = FN_DbOpen();
  
  $DataPost = print_r($_POST, True);
  $TabPost = array();
  $TabPost["QUERY_STRING"] = $DataPost;
  
  $IDLog = Log_Insert($Db, $CR, "setprofile", $TabPost);
  //echo "IDLog=".$IDLog.$CR;
 
//---------------------------------------------------------------------------------------------------------------- 
// GENERIC ERROR
//----------------------------------------------------------------------------------------------------------------  

  if (strlen($Email) == 0) 
  {
   	$TabJson["Result"]["code"]    = -1;
  	$TabJson["Result"]["details"] = "Email non specificato";
  	$Json = json_encode($TabJson);
    echo $Json;
    
    Log_SetRisposta($Db, $CR, $IDLog, $Json);
    exit();
  }

  if (strlen($Password) == 0) 
  {
   	$TabJson["Result"]["code"]    = -2;
  	$TabJson["Result"]["details"] = "Password non specificata";
  	$Json = json_encode($TabJson);
    echo $Json;
    
    Log_SetRisposta($Db, $CR, $IDLog, $Json);
    exit();
  }
  
  if (strlen($GcmRegId) == 0) 
  {
   	$TabJson["Result"]["code"]    = -3;
  	$TabJson["Result"]["details"] = "gcm_regid non specificato";
  	$Json = json_encode($TabJson);
    echo $Json;
    
    Log_SetRisposta($Db, $CR, $IDLog, $Json);
    exit();
  }
  
  
  $Pos = strpos($Email, "@");
  if (strlen($Pos) > 0) 
  {
  }
  else
  {
   	$TabJson["Result"]["code"]    = -4;
  	$TabJson["Result"]["details"] = "Formato Email non corretto";
  	$Json = json_encode($TabJson);
    echo $Json;
    
    Log_SetRisposta($Db, $CR, $IDLog, $Json);
    exit();
  }

  $Pos = strpos($Name, "@");
  if (strlen($Pos) > 0) 
  {
   	$TabJson["Result"]["code"]    = -5;
  	$TabJson["Result"]["details"] = "Formato Nome non corretto";
  	$Json = json_encode($TabJson);
    echo $Json;
    
    Log_SetRisposta($Db, $CR, $IDLog, $Json);
    exit();
  }
//---------------------------------------------------------------------------------------------------------------- 
// 
//----------------------------------------------------------------------------------------------------------------  
  
  $TabActivities = array();
  
  for ($Ind=1; $Ind<11; $Ind++)
  {
  	$LabelActivity = "id_activity".$Ind;
  	$LabelLevel    = "id_level".$Ind;
  	$LabelAlarm    = "alarm".$Ind;
  	
    if(isset($_POST[$LabelActivity]) == TRUE)
    {
    	if (strlen($_POST[$LabelActivity]) > 0)
    	{
    	  $Rec = count($TabActivities);
        $TabActivities[$Rec]["id_activity"] = $_POST[$LabelActivity];
        $TabActivities[$Rec]["id_level"]    = $_POST[$LabelLevel];
        $TabActivities[$Rec]["alarm"]       = $_POST[$LabelAlarm];
        
        if (strlen($TabActivities[$Rec]["id_level"]) == 0)
        {
        	$TabJson["Result"]["code"]    = -4;
  	      $TabJson["Result"]["details"] = "Livello non specificato";
  	      $Json = json_encode($TabJson);
          echo $Json;
    
          Log_SetRisposta($Db, $CR, $IDLog, $Json);
          exit();
        }
      }
    }
  }  
  
  //print_r($TabActivities);
  //exit();
 
//---------------------------------------------------------------------------------------------------------------- 
// Check EMAIL
//----------------------------------------------------------------------------------------------------------------  
 
  $Query  = "SELECT * FROM profiles WHERE email='".$Email."'";
  //echo "Query=".$Query.$CR;
  $Result = $Db->Exec($Query);
  $TotRec = $Db->Numrows($Result);
  //echo "TotRec=".$TotRec.$CR;
  
  if ($TotRec == 0) 
  {
  	$to       = "fishwolf@gmail.com, apps@meteospot.it";
  	$subject  = "Nuovo utente MeteoSpot";
  	$message  = "Name=".$Name."\n";
  	$message .= "Email=".$Email."\n";
  	$message .= "Lang=".$Lang."\n";
  	$message .= "Piattaforma=android\n";
  	$message .= "Activities=";
  	for ($IndActivities=0; $IndActivities<count($TabActivities); $IndActivities++)
  	{
    	$IDActivity = $TabActivities[$IndActivities]["id_activity"];
    	
    	$Query  = "SELECT * FROM activities WHERE id=".$IDActivity;
	  	$ResultActivities = $Db->Exec($Query);
	  	$RecordActivities = $Db->Fetch($ResultActivities, 0);
	  	$message .= $RecordActivities["name"].", ";
  	}
  	$message .= "\n";
  	
  	$headers  = 'From:  noreplay@meteospot.it' . "\r\n" .
   	            'Reply-To: noreplay@meteospot.it' . "\r\n" .
    	          'X-Mailer: PHP/' . phpversion();
  	mail($to, $subject, $message, $headers);
  	
  	
    $Query = "LOCK TABLES profiles WRITE";
    $Db->Exec($Query);	
	
    $Query  = "INSERT INTO profiles (name, email, password, lang, gcm_regid, polling, enable) VALUES (";
	  $Query .= "'".$Db->SpecialChars($Name)."', ";
	  $Query .= "'".$Db->SpecialChars($Email)."', ";
	  $Query .= "'".$Db->SpecialChars($Password)."', ";
	  $Query .= "'".$Lang."', ";
	  $Query .= "'".$GcmRegId."', ";
	  $Query .= "'".$Polling."', ";
	  $Query .= "1)";
	  //echo "Query=".$Query."<br>";
	  $Db->Exec($Query);
	
	  $Query = "SELECT MAX(id) FROM profiles";
	  //echo "Query=".$Query."<br>";
    $Result = $Db->Exec($Query);
	  $Record = $Db->Fetch($Result, 0);
	  $IDProfile = $Record[0];
	
	  $Query = "UNLOCK TABLES";
    $Db->Exec($Query);
  }
  else
  {
    $Record = $Db->Fetch($Result, 0);
	
	  $IDProfile = $Record["id"];
	
    $Query  = "UPDATE profiles SET name='".$Name."', email='".$Email."', password='".$Password."', lang='".$Lang."', gcm_regid='".$GcmRegId."', polling='".$Polling."' WHERE id=".$IDProfile;
	  //echo "Query=".$Query."<br>";
    $Db->Exec($Query);
	
	  $Query  = "DELETE FROM profiles_activities WHERE id_profile=".$IDProfile;
    //echo "Query=".$Query."<br>";
    $Db->Exec($Query);
  }
  
//---------------------------------------------------------------------------------------------------------------- 
// Load Data
//----------------------------------------------------------------------------------------------------------------  
  
  for ($IndActivities=0; $IndActivities<count($TabActivities); $IndActivities++)
  {
    $IDActivity = $TabActivities[$IndActivities]["id_activity"];
	  $IDLevel    = $TabActivities[$IndActivities]["id_level"];
	  $Alarm      = $TabActivities[$IndActivities]["alarm"];
	  //echo "IDActivity=".$IDActivity."<br>";
	  //echo "IDLevel=".$IDLevel."<br>";
	  //echo "Alarm=".$Alarm."<br>";
	  //exit();
		  
	  $Query  = "INSERT INTO profiles_activities (id_profile, id_activity, id_level, alarm) VALUES (";
	  $Query .= $IDProfile.", ";
	  $Query .= $IDActivity.", ";
	  $Query .= $IDLevel.", ";
	  $Query .= $Alarm.")";
	  $Db->Exec($Query);
  }

//---------------------------------------------------------------------------------------------------------------- 
// Load Data
//---------------------------------------------------------------------------------------------------------------- 
 
  $Query  = "SELECT * FROM gcm_users WHERE email='".$Email."'";
  //echo "Query=".$Query.$CR;
  $Result = $Db->Exec($Query);
  $TotRec = $Db->Numrows($Result);
  //echo "TotRec=".$TotRec.$CR;
  
  $Register = False;
  if ($TotRec == 0)
  {              
  	$Register = True; 
  }
  else
  {
  	$Record = $Db->Fetch($Result, 0);
  	
  	if ($GcmRegId != $Record["gcm_regid"])
  	{
	    $Register = True;
    }
  } 
  
  if ($GcmRegId == "null")
  {
	  $Register = False;
  }
  
  if ($Register == True)
  {
    //$GmcRegId = "AAA";
    $Url = "http://www.meteospot.it/gcm_server_php/register.php?name=".urlencode($Name)."&email=".$Email."&regId=".$GcmRegId;
    //$Url = urlencode($Url);
    //echo "Url=".$Url.$CR;
    $Handle = fopen($Url, "r");
    
    $Json = "";
    while(TRUE)
    {
    	$Block = fread($Handle, 1024);
    	
    	if (strlen($Block) == 0)
    	{
    		break;
    	}
    	$Json .= $Block;
    }
    
    fclose($Handle);
    
    //echo "Json=".$Json.$CR;
    
    $TabData = json_decode($Json);
    //print_r($TabData);
    //echo $CR.$CR;
    
    $TabResults = $TabData->results[0];
    
    //echo "Error=".$TabResults->error.$CR;
    //echo "Success=".$TabResults->message_id.$CR;
    
    if (strlen($TabResults->error) > 0)
    {
    	$TabJson["Result"]["code"]    = -5;
    	$TabJson["Result"]["details"] = "Registration gcm failed";
    	$Json = json_encode($TabJson);
      echo $Json;
      
      Log_SetRisposta($Db, $CR, $IDLog, $Json);
      exit();
    }
  }
  
  /*
  [results] => Array
        (
            [0] => stdClass Object
                (
                    [error]
  
  [results] => Array
        (
            [0] => stdClass Object
                (
                    [message_id] => 0:1390760459090583%978fee92f9fd7ecd
                )

        )

  */ 
//---------------------------------------------------------------------------------------------------------------- 
// 
//----------------------------------------------------------------------------------------------------------------  
  
  $TabJson = array();
  
  $TabJson["Result"]["code"]    = 0;
  $TabJson["Result"]["details"] = "OK";
  //$TabJson["Result"]["details"] = "OK"."-".$Url."-".$Json;
  
  if ($Output == "array")
  {
    $Json = print_r($TabJson, TRUE);
  }
  else
  {
    $Json = json_encode($TabJson);
  }
  
  echo $Json;
   
//---------------------------------------------------------------------------------------------------------------- 
// 
//----------------------------------------------------------------------------------------------------------------  
  
  //echo "IDLog=".$IDLog.$CR;
  Log_SetRisposta($Db, $CR, $IDLog, $Json);
  
  $Db->Close();
 
?>