<?PHP
/* ---------------------------------------------------------------
   %PROJECT:  WEBSYNC
   %FILENAME: main_2_db.inc
   %VERSION:  1.003

   %HISTORY:
     2008-05-10  Artur Cieślak 1.003
                Dodano inklud wsutils.inc
     2008-04-29 Artur Cieślak 1.002
                Zmienna APPVERSION była zapisywana w pliku sesji
                jako liczba a nie łańcuch znaków.
     2008-04-19 Artur Cieślak 1.001
                Dodano zapisywanie zmiennej APPVERSION do sesji.
------------------------------------------------------------------ */
include_once("wsutils.inc");

$ile_brudnych = 0;

//sprawdzenie czy nie chodzi tutaj o cało¶ć bazy
if(parm("pdbinit")=="1") {
  echo 'ALERT Proces pobierania nowej bazy skasuje aktualne dane. To jest ostatni moment w którym możesz przerwać (np. wył±cz telefon).
RESTOREDBMODE 1
';
  $GLOBALS["PALM_DATABASE_INIT"]=1;
} else {
  $GLOBALS["PALM_DATABASE_INIT"]=0;
}


if(!$GLOBALS["WEBSYNC_ERROR"]) {
  if(isset($GLOBALS["DBFNAGL"])) {
    $fd = @fopen($GLOBALS["DBFNAGL"],"r");
    if($fd) {
      $GLOBALS["npdb"]->ReadFile($fd,1);
      $keys= $GLOBALS["npdb"]->GetRecordIDs();
      for($ii=0;$ii<count($keys);$ii++) {
        $ra = $GLOBALS["npdb"]->GetRecordAttr($keys[$ii]);
        if($GLOBALS["PALM_DATABASE_INIT"]==0) {
          if($GLOBALS["TREAT_ALL_AS_DIRTY"]==1) {
            $ra = $ra | PDB_RECORD_ATTRIB_DIRTY;
          }
          if($ra)  {
            if(($ra & PDB_RECORD_ATTRIB_DIRTY) || ($ra & PDB_RECORD_ATTRIB_DELETED))
              $ile_brudnych++;
          }
        } else {
          if($ra==0 || !($ra & PDB_RECORD_ATTRIB_DELETED))
            $ile_brudnych++;
        }
      }
      fclose($fd);
    } else {
      applog(sprintf("Error: Nieudana próba otworzenia pliku z danymi [%s][main_2_db.inc]",$GLOBALS["DBFNAGL"]));
      echo 'ALERT Otwarcie pliku z danymi nieudane';
      $GLOBALS["WEBSYNC_ERROR"] = -9;
    }
  }
}

if(!$GLOBALS["WEBSYNC_ERROR"]) {
  $fd = @fopen($GLOBALS["DBFILE"],"r");
  if($fd) {
    $GLOBALS["tpdb"]->ReadFile($fd,1);
    $keys= $GLOBALS["tpdb"]->GetRecordIDs();
    for($ii=0;$ii<count($keys);$ii++) {
      $ra = $GLOBALS["tpdb"]->GetRecordAttr($keys[$ii]);
      if($GLOBALS["PALM_DATABASE_INIT"]==0) {
        if($GLOBALS["TREAT_ALL_AS_DIRTY"]==1) {
          $ra = $ra | PDB_RECORD_ATTRIB_DIRTY;
        }
        if($ra)  {
          if(($ra & PDB_RECORD_ATTRIB_DIRTY) || ($ra & PDB_RECORD_ATTRIB_DELETED))
            $ile_brudnych++;
        }
      } else {
        if($ra==0 || !($ra & PDB_RECORD_ATTRIB_DELETED)) {
          $ile_brudnych++;
        }
      }
    }
    fclose($fd);
  } else {
    applog(sprintf("Error: Nieudana próba otworzenia pliku z danymi [%s][main_2_db.inc]",$GLOBALS["DBFILE"]));
    echo 'ALERT Otwarcie pliku z danymi nieudane';
    $GLOBALS["WEBSYNC_ERROR"] = -10;
  }
}

//utworzenie pliku sesii:
if(!$GLOBALS["WEBSYNC_ERROR"]) {
  $GLOBALS["UPDATED"]=0;
  $GLOBALS["DIRTY"]=$ile_brudnych;
  $GLOBALS["PDAID"]=parm("pdaid");
  $fp = @fopen($sesfile,"w");
  if($fp) {
    fputs($fp,'<?PHP');
    fputs($fp,"\n");
    fputs($fp,sprintf('$GLOBALS["DDBNAME"]="%s";',$GLOBALS["DDBNAME"]));
    fputs($fp,"\n");
    fputs($fp,sprintf('$GLOBALS["DDBNAGL"]="%s";',$GLOBALS["DDBNAGL"]));
    fputs($fp,"\n");
    fputs($fp,sprintf('$GLOBALS["DBFNAME"]="%s";',$GLOBALS["DBFNAME"]));
    fputs($fp,"\n");
    fputs($fp,sprintf('$GLOBALS["DBFILE"]="%s";',$GLOBALS["DBFILE"]));
    fputs($fp,"\n");
    if(isset($GLOBALS["DBFNAGL"])) {
      fputs($fp,sprintf('$GLOBALS["DBFNAGL"]="%s";',$GLOBALS["DBFNAGL"]));
      fputs($fp,"\n");
    }
    fputs($fp,sprintf('$GLOBALS["UHOME"]="%s";',$GLOBALS["UHOME"]));
    fputs($fp,"\n");
    fputs($fp,sprintf('$GLOBALS["PHOME"]="%s";',$GLOBALS["PHOME"]));
    fputs($fp,"\n");
    fputs($fp,sprintf('$GLOBALS["UNAME"]="%s";',$GLOBALS["UNAME"]));
    fputs($fp,"\n");
    fputs($fp,sprintf('$GLOBALS["UID"]="%s";',$GLOBALS["UID"]));
    fputs($fp,"\n");
    fputs($fp,sprintf('$GLOBALS["PID"]="%s";',$GLOBALS["PID"]));
    fputs($fp,"\n");
    fputs($fp,sprintf('$GLOBALS["PDAID"]="%s";',$GLOBALS["PDAID"]));
    fputs($fp,"\n");
    fputs($fp,sprintf('$GLOBALS["DIRTY"]=%d;',$GLOBALS["DIRTY"]));
    fputs($fp,"\n");
    fputs($fp,sprintf('$GLOBALS["UPDATED"]=%d;',$GLOBALS["UPDATED"]));
    fputs($fp,"\n");
    fputs($fp,sprintf('$GLOBALS["PALM_DATABASE_INIT"]=%d;',$GLOBALS["PALM_DATABASE_INIT"]));
    fputs($fp,"\n");
    fputs($fp,sprintf('$GLOBALS["CAVER"]=%d;',$GLOBALS["CAVER"]));
    fputs($fp,"\n");
    fputs($fp,sprintf('$GLOBALS["APPVERSION"]="%s";',$GLOBALS["APPVERSION"])); // (1.001)(1.002)
    fputs($fp,"\n");
    fputs($fp,'?>');
    fclose($fp);
  } else {
    applog(sprintf("Error: Próba ustanowienia nowej sesji nieudana [%s][main_2_db.inc]",$sesfile));
    echo 'ALERT Próba ustanowienia nowej sesji nieudana';
    $GLOBALS["WEBSYNC_ERROR"] = -11;
  }
}

if(!$GLOBALS["WEBSYNC_ERROR"]) {
  if($GLOBALS["WORK_DIR"]=="/")
    $GLOBALS["WORK_DIR"]="";
  echo 'DBNAME ' . $GLOBALS["DDBNAME"] . '
';
if($GLOBALS["RAWDATA_ENABLED"]==0) echo '<br>';
  echo 'UPDATE ' . $ile_brudnych . '
';
if($GLOBALS["RAWDATA_ENABLED"]==0) echo '<br>';
  echo 'GETDBCONF ' . $GLOBALS["WORK_DIR"] . $GLOBALS["POTWFNAME"] . '.php?ses=' . $GLOBALS["ses"] . '
';
if($GLOBALS["RAWDATA_ENABLED"]==0) echo '<br>';
  echo 'GETDB ' . $GLOBALS["WORK_DIR"] . $GLOBALS["AKTFNAME"] . '.php?ses=' . $GLOBALS["ses"];
}
?>
