<?php
/*
Copyright (C) 2008 by oscim   Project lossim  [ 15.09.2009, 09:17:59] @oscim
// kate: replace-trailing-space-save true; space-indent on; indent-width 2; mixedindent off; indent-mode cstyle; word-wrap-marker-color #41C2A4
ENCODE UTF-8
*/
/**
  Classe de gestion d'un fichier

  @package lossim <web http://www.lossim.org>
  @author oscim <mail dom@oscim.fr > <web http://www.oscim.fr>
  @class files

*/
class files {
  /**
    path + Nom du fichier + ext , path apres xml/lang/
  */
  var $file;
  /**
    Contenu du fichier
  */
  var $content;
  /**
    Prefix des chemin,  absolu ou relatif
  */
  var $prefix ;

  /**
  Init
  @param
    @a string path/name , !! path sans ...xml/, uniqument lg/name.xml
    @a string code langue
  */
  function files($file, $lang=LANG_POST)        {
    clearstatcache();
    $this->path_bo=substr(CHEMIN_ADMIN, strlen(CHEMIN_DU_SITE));
    $this->file = $file;
    $this->lang=$lang;
    $this->prefix=ADD_PATH_ADMIN.REP_DATA;
    $file=$this->prefix.$lang.'/'.$file;

    if (file_exists($file)) {
      tep_file($file);
      $f = @fopen($file, 'r');
      $this->content = @fread($f, @filesize($file));
      fclose($f);
    } else {
      tep_file($file);
    }
  }

  /**
   Ajout de contenu
  */
  /*public*/ function AddContent($content){
    if ($this->file !== false){
      $this->content = $content;
      return true;
    }
    else return false;
  }


  /**
   Ajout de contenu
  */
  /*public*/  function AddContentVolee($content){
    if ($this->file !== false){
        $this->content .= $content;
        return true;
      }
    else return false;
  }

  /**
   sauvegarde du fichier
  */
  /*public*/  function saveFile(){
    if (($fp = @fopen($this->prefix.$this->lang.'/'.$this->file,'w')) !== false) {
      if (fwrite($fp,$this->content,strlen($this->content)) !== false) $res = true;
      else $res = false;
      fclose($fp);
      return $res;
    } else return false;
  }

  /**
   Rennome un fichier  La var conprend chemin et extention complete
  @param
    @a string path/name new fichier  !! le path sans xml/lang/
  */
  /*public*/  function RennFile($new_name_file) {
    chdir($this->prefix);
    $t=rename($this->lang.'/'.$this->file, $this->lang.'/'.$new_name_file);
    tep_file($new_name_file);
    chdir(ADD_PATH_ADMIN.$this->path_bo);
    if (!@file_exists($new_name_file)) return false;
    else return false;
  }

  /**
     Copie un fichier  La var conprend chemin et extention complete
  */
  /*public*/  function CopyFile($the_file,$new_name_file) {
    if (tep_not_null($the_file) && tep_not_null($new_name_file)  ) {
      if ($the_file == $new_name_file) return true;
      chdir($this->prefix);
      $v=true;
      $t=@rename($the_file, $new_name_file);
      if(!tep_file($new_name_file)) $v=false;
      chdir(ADD_PATH_ADMIN.$this->path_bo);
      if( ($t) && ($v) )return false;
      else return true;
    }
    else return false;
  }

  /**
   Suppression un fichier
  */
  /*public*/  function SuppFile() {
    $v=@unlink($this->prefix.$this->lang.'/'.$this->file);
    if (!$v) return false;
    return true;
  }

  /**
   Copie du fichier pour backup
  */
  /*public*/  function BackupFile() {
    ## recup du chemin
    $c=basename($this->file);
    if( (empty($c)) ) exit; //return null;
    $r = NewFct('extract_nom',$this->file);
    $d=date("s");
    $new_name_file = "".$d."_".$this->lang.'_'.$r['rub'].$r['file'].$r['ext'];
    ## copie en bak
    chdir($this->prefix);
    $t= @copy($this->lang.'/'.$this->file,$new_name_file);
    $t=@rename($new_name_file, "bak/".$new_name_file);
    tep_file("bak/".$new_name_file);
    chdir(ADD_PATH_ADMIN.$this->path_bo);
    if(!$t) return false;
    return true;
  }
}
?>