<?PHP
/*
  %VERSION: 1.001
  
  1.001  2008-06-15  Artur Cieślak
         Zmieniono obsługę parametru DATACHUNKSIZE
     
*/
include_once(sprintf("echo-%s",$GLOBALS["WEBSYNC_OUTPUT_MODULE"]));

//$tt=time();

if(!isset($GLOBALS["SPLIT_DONE"]) || $GLOBALS["SPLIT_DONE"]==0) {
    if(isset($GLOBALS["DBFNAGL"])) {
          exec(sprintf("%s -t %s",$GLOBALS["PAR_PATH"],$GLOBALS["DBFNAGL"]),$tmpnagl);
          reset($tmpnagl);
          do {
            $ta = explode('#',current($tmpnagl));
            $fl = intval($ta[0],16);
            if($GLOBALS["PALM_DATABASE_INIT"]==0) {
              if($GLOBALS["TREAT_ALL_AS_DIRTY"]==1) {
                $fl = $fl | PDB_RECORD_ATTRIB_DIRTY;
              }
              if($fl) {
                if(($fl & PDB_RECORD_ATTRIB_DIRTY) || ($fl & PDB_RECORD_ATTRIB_DELETED)) {
                  $brudne[] = current($tmpnagl);
                }
              }
            } else {
              if($fl == 0 || !($fl & PDB_RECORD_ATTRIB_DELETED)) {
            $brudne[] = current($tmpnagl);
          }
            }
          } while(next($tmpnagl));
          $GLOBALS["ILENAGL"] = count($brudne);
    } else {
      $GLOBALS["ILENAGL"] = 0;
    }
        unset($tmpnagl);
        exec(sprintf("%s -t %s",$GLOBALS["PAR_PATH"],$GLOBALS["DBFILE"]),$tmppozy);
          reset($tmppozy);
          $cnt = 0;
          do {
            $ta = explode('#',current($tmppozy));
            $fl = intval($ta[0],16);
            if($GLOBALS["PALM_DATABASE_INIT"]==0) {
              if($GLOBALS["TREAT_ALL_AS_DIRTY"]==1) {
                $fl = $fl | PDB_RECORD_ATTRIB_DIRTY;
              }
              if($fl) {
                if(($fl & PDB_RECORD_ATTRIB_DIRTY) || ($fl & PDB_RECORD_ATTRIB_DELETED)) {
                  $brudne[] = current($tmppozy);
                }
              }
            } else {
              if($fl == 0 || !($fl & PDB_RECORD_ATTRIB_DELETED)) {
                $brudne[] = current($tmppozy);
              }
            }
          } while(next($tmppozy));

        $cb = count($brudne);
        if($cb>0) {
          // tutaj robie dzielenie na zbiory
          // 1. Czy jest katalog ???
          $tmpdir = sprintf("%s%s%s",$GLOBALS["SESDIR"],$GLOBALS["DIRECTORY_SEPARATOR"],$GLOBALS["ses"]);
          @mkDir($tmpdir,0700);

          $counter1=0;

          /* 1.001 */
          $totfsize = $GLOBALS["DATACHUNKSIZE"]+3;
          unset($fp);
          $endOfFile = "";
          $startOfFile = "";
          if ($GLOBALS["APPDATAVIDX"]>=5) {
            $endOfFile = "<END_OF_FILE>\n";
            $startOfFile = "<START_OF_FILE>\n";

            for($ii=0;$ii<$cb;$ii++) {
              $brudne[$ii] = $brudne[$ii]."<END>";
            }
          }
          $startOfFileLen = strLen($startOfFile);
          $endOfFileLen = strlen($endOfFile);

          $ii=0;
          $datafile = sprintf("%s/%d.dat",$tmpdir,$ii);
          $fp = @fopen($datafile,"w");
          fputs($fp, $startOfFile);
          $totfsize = $startOfFileLen;
          for($ii=0;$ii<$cb;$ii++) {
            $totfsize+=strlen($brudne[$ii])+2;  // + 0x0D0x0A
            if($totfsize + $endOfFileLen > $GLOBALS["DATACHUNKSIZE"]) {
              if($fp) {
                fputs($fp, $endOfFile);
                @fclose($fp);
              }
              $datafile = sprintf("%s/%d.dat",$tmpdir,$ii);
              $fp = @fopen($datafile,"w");
              fputs($fp, $startOfFile);
              $totfsize = $startOfFileLen;
              $totfsize += strlen($brudne[$ii])+2;
            }
            if($fp) {
              fprint_brudne($fp,$brudne[$ii],$ii);
            }
          }
          if($fp) {
            fputs($fp, $endOfFile);
            @fclose($fp);
          }


/* --- 1.001 : stara wersja podzialu na pliki ---- */
/*
          for($ii=0;$ii<$cb;$ii+=$GLOBALS["DATACHUNKSIZE"]) {
            $datafile = sprintf("%s/%d.dat",$tmpdir,$ii);
            $fp = @fopen($datafile,"w");
            if($fp) {
              for($jj=0;$jj<$GLOBALS["DATACHUNKSIZE"];$jj++) {
                if(($ii+$jj)<$cb)
                  fprint_brudne($fp,$brudne[($ii+$jj)],($ii+$jj));
              }
              @fclose($fp);
            }
          }
*/

          $fp = @fopen($sesfile,"a+");
          if($fp) {
            fputs($fp,'<?PHP');
            fputs($fp,"\n");
            fputs($fp,'$GLOBALS["SPLIT_DONE"]=1;');
            fputs($fp,"\n");
            fputs($fp,'?>');
            fclose($fp);
            $GLOBALS["SPLIT_DONE"]=1;
          }
        }
}

if(isset($GLOBALS["SPLIT_DONE"]) && $GLOBALS["SPLIT_DONE"]!=0) {
  $tmpdir = sprintf("%s%s%s",$GLOBALS["SESDIR"],$GLOBALS["DIRECTORY_SEPARATOR"],$GLOBALS["ses"]);
  $updated = isset($_GET["record_index"]) ? $_GET["record_index"] : $GLOBALS["UPDATED"];
  $datafile = sprintf("%s/%d.dat",$tmpdir,$updated);
  if(file_exists($datafile)) {
    $fcontents = @file($datafile);
    reset($fcontents);
    do {
      if(current($fcontents) != "")
        echo current($fcontents);
    } while(next($fcontents));
  }
}
?>
