Class PHP CompareFile

Chciałem wam zaprezentować nową klasę, którą stworzyłem do porównywania plików z danego folderu z plikiem tekstowym, w którym podajemy pliki do usunięcia lub do pozostawienia. __construct( $file1, $file2, $numeric ); Wszystko do ustawienia w parametrze wejściowym do klasy. Klasa bardzo prosta a jak nie kiedy potrzebna może wam się przyda na coś

Link do download na github Github class php CompareFile

Plik CompareFile.php



 * Porównuje pliki z wybranego folderu z plikiem tekstowym, zawierającym podaną ścieżkę do pliku.
 * Pliki nie znajdujące się na liście usuwa z podanego folderu. 
 *  0 usuń pliki wskazane w pliku tekstowym
 *  1 zachowaj pliki wskazane w pliku tekstowym
 *******************************************************************************************
 * Compares files from the selected folder with a text file containing the specified path to the file.
 * Files that are not in the list are removed from the specified folder.
 * 0 delete the files indicated in the text file
 * 1 keep the files indicated in the text file
 */
   public $file1;
   public $file2;
   private $numeric;
   public $error = array();
   private $Tab  = array();
   private $Tab1 = array();
     /**
      *  _construct( $file1, $file2, $numeric )
      *  string $file1 lokalizacja pliku tekstowego
      *  string $file2 lokalizacja plików
      *  int $numeric wybór zadania
      *  return null
      *  0 usuń pliki wskazane w pliku tekstowym
      *  1 zachowaj pliki wskazane w pliku tekstowym
      */
      public function __construct( $file1, $file2, $numeric ){
             $this->file1 = $file1;
             $this->file2 = $file2;
       
     if(is_numeric($numeric)){
         
    $this->numeric = $numeric; 
         
     }else{
       
    $this->error[] = " Podaj prawidłowy parametr Numerik "; 
      
     }   
         }
   /**
   * string $file1
   * sprawdzenie czy plik znajduje się w podanej ścieżce 
   * return boolea
   */
      private function check_dir($file){
     
   //if(file_exists($file1) && is_dir($file1)){
       if(file_exists($file)){
       
         return true;
     
         }else{
     $this->error[] = " Błędna lokalizacja pliku lub folderu ";
          // throw new Exception(" Błędna lokalizacja pliku lub folderu ");
         return false;
          }
       }
        /**
          * plik tekstowy
          * obiekt string $this->file1
          * obiekt array() $this->error
          * obiekt array() $this->Tab
          */
       public function load_text_file(){
           if($this->check_dir($this->file1)){   
                if(is_array(file($this->file1))){
         // czyścimy trim ze śmieci
         $this->Tab = explode(",",implode(',', array_map('trim', file($this->file1))));
                  }else{
                    $this->error[] =" Tablica jest pusta ";
                   }
              }else{
  
               //throw new Exception("Błędna lokalizacja pliku tekstowego");
                 $this->error[] =" Błędna lokalizacja pliku tekstowego ";
              }
        }
     /**
      * obiekt string  $this->file1
      * obiekt array() $this->error
      * obiekt array() $this->Tab1
      */
      public function load_dir(){
           if($this->check_dir($this->file2)){
                // $dir  = dirname(__FILE__) .'/pliki';
        $this->Tab1 = array_diff(scandir($this->file2), array('..', '.'));
                // $this->Tab1 = scandir($this->file2);
              }else{
               //throw new Exception("Błędna lokalizacja pliku tekstowego");
              $this->error[]  =" Błędna lokalizacja pliku tekstowego ";
           }
        }
   /**
    *
    * obiekt array() $this->Tab1
    * obiekt array() $this->Tab
    * obiekt $this->file2
    * obiekt $this->numeric
    * array() $zle_usun
    * array() $dobre
    */
       public function compare_file(){
        if(is_array($this->Tab1)){
    //print_r($this->Tab1);
     //Var_dump($this->Tab);
    // Var_dump($this->Tab1);
    
         foreach($this->Tab1 as $spr){
     
    if(in_array( $spr, $this->Tab )){
                  // echo $spr;
                    $dobre[] = $spr;
    // numeric 0 
    if($this->numeric == 0){
    //  $wyn  = array_merge($this->Tab[0], $this->Tab1);        
                         //  $wyn1 = array_unique( $wyn );
     if($this->check_dir($this->file2)){
                     unlink($this->file2."/".$spr);
              }
           }
                }else{
        // numeric 1 
    if($this->numeric == 1){
                   $zle_usun[] = $spr;
    // Usuwamy pliki zbędne
         //array_map( "unlink", glob(dirname(__FILE__) .'/pliki/*'.$plik.'.clu') );
     if($this->check_dir($this->file2)){
                     unlink($this->file2."/".$spr);
              }
         }
                }
         
       
     }
             } else {
           $this->error[] =" Tablica jest pusta ";
          }
          
         if(!empty($dobre) || !empty($zle_usun)){
      
          $this->error[] ="Usunięto Wszystko OK  "; 
     }else{
    // throw new Exception("Tablica jest pusta");
     $this->error[] =" Usunięto ";
       }     
        }
     /**
      * obiekt string $this->error
      * return obiekt string $this->error
      */
      public function Error(){
          if(!empty($this->error)){
        
       return $this->error;           
            }
    }
}
?>

Plik index.php


load_text_file();
  $pliki->load_dir();
  $pliki->compare_file();
  
  // Wypisujemy błędy
   echo $pliki->Error()[0];
?>

Class modify date and time

Potrzebowałem klasy do obsługi czasu w PHP więc ją wykonałem.

Od jakiegoś czasu zajmowałem się projektem z dużą ilością danych zapisywanych w dwóch formatach do bazy danych i jeszcze parę innych, jak można tak napisać. Jeden unixsowy, a drugi mysql (tradycyjny).  Ciągłe zmienianie się zapisów do bazy danych, a to w jednym formacie, a to w drugim doprowadzało mnie do pi…pi…pi.  Postanowiłem zrobić klasę, która te wszystkie rzeczy będzie miała w sobie i będzie obsługiwać nie tylko konwersję pomiędzy formatami,  ale także jeszcze wyświetlała całą datę z polskimi dniami jak też z polskimi miesiącami. Ponadto potrzebowałem modyfikowania tej daty albo dodawanie albo odejmowanie dni miesięcy lat, a także czasu godzin, sekund, minut. Tak właśnie powstała klasa którą nazwałem modify_date_and_time czyli modyfikuj datę i czas. Myślę że nie jednemu z was się przyda do pracy, albo do zabawy.

 Wywołanie banalnie proste określamy datę i potem używamy tych metod które są nam potrzebne np. żeby przekonwertować datę na czas unixsowy wystarczy taki kawałek kodu:

 

                      

            
        $KK = new  modify_date_and_time();
	$KK->set_dates('2015-01-03 08:09:11');
	## czas mysql zmienia na uniksowy  ##
        echo  $KK->format_unix().'
';
	## czas uniksowy zmienia na mysql  ##
	$unix = new  modify_date_and_time();
	$unix->set_dates('1420268951');
echo '
'.$unix->format_mysql().'
';

Jeżeli natomiast chcemy całą datę z polskimi miesiącami to tak:

 

        $KK = new  modify_date_and_time();
	$KK->set_dates('2015-01-03 08:09:11');
	## Cała data z nazwami dni i miesięcy ##
   echo $KK->data_all($cale_nazwy=1).'
';

Możemy wyświetlać zmodyfikowaną całą datę jak też pojedyńcze wartości zmodyfikowane jak i nie zmienione.

 Klasa pozwala zrobić odlicznie od data-poczatek do data-koniec pokazuje ile pozostało lat, miesięcy, tygodni i dni.

Całość co potrafi klasa poniżej.

modify_date_and_time.php

/** 
* PHP 5.1
* @version v1 modify_date_and_time
* @license Apache License, Version 2.0.
* @author Adam Berger <ber34#o2.pl>
* @Site www.joomla-cms.com.pl
*/

Class modify_date_and_time{

	 private $years;
	 private $month;
	 private $day;
	 private $hour;
	 private $minutes;
	 private $seconds;
	 private $data_czas;
	  
	  
	public function __construct(){
	  $this->dates= new DateTime();
	}
	
	 public function data_day($plu_min, $day){
      $this->dates->modify( $plu_min.$day.' day' );
      return $this->dates->format('d');
  }
 
     public function data_month($plu_min, $month){
      $this->dates->modify( $plu_min.$month.' month');
      return $this->dates->format('m');
  }
  
     public function data_year($plu_min,$year){
     $this->dates->modify( $plu_min.$year.' years' );
      return $this->dates->format('Y'); 
  }
  
  
  	 public function time_hour($plu_min, $hour){
      $this->dates->modify( $plu_min.$hour.' hour' );
     // return date('G', strtotime($plu_min.$hour.' hour'));  
	   return $this->dates->format('G');
  }
 
     public function time_minute($plu_min, $minutes){
      $this->dates->modify( $plu_min.$minutes.' minutes');
      return $this->dates->format('i');
  }
  
     public function time_seconds($plu_min, $seconds){
      $this->dates->modify( $plu_min.$seconds.' seconds' );
      return $this->dates->format('s');  
  }
  
   
   public function set_dates($praca){
         $this->format = $praca;
		 $jj = preg_split('/[-: ]/', $this->format);
		 if(!empty($jj[2])){
		  		 $this->years =$jj[0];
				 $this->month =$jj[1];			 
				 $this->day   =$jj[2];
				  }
		if(!empty($jj[3])){  
				 $this->hour  = $jj[3];
				 $this->minutes =$jj[4];
				 $this->seconds =$jj[5]; 
				 }
	   }
   
       public function format_mysql(){
	##  format MySQL  ##
      return date('Y-m-d H:i:s', $this->format);
  }
  
  public function format_unix(){
	##  format unixsowy  ##
      return strtotime($this->format);  
  }
   
   
      public function get_years(){ 
		  		return $this->years; 
	   }
   
   public function get_month(){
		  		return $this->month;
	   }
	   
	public function get_day(){ 
		  		return $this->day;  
	   }

	   
	 public function get_hour(){
		  		return $this->hour; 
	   }

	 public function get_minutes(){ 
		  		return $this->minutes; 
	   }

	 public function get_seconds(){ 
		  		return $this->seconds;  
	   }  
   
   
  
	public function data_modifi(){
	 return  $this->dates->setDate($this->years, $this->month, $this->day); 
	   }
	   
	 public function time_modifi(){
	   return $this->dates->setTime($this->hour, $this->minutes, $this->seconds); 
	  }
	  
	  ## data mysql 2015-01-03 08:09:11 ##
	  ## parametr nazwy skrócone czy czałe ##
	 public function data_all($cale_nazwy=1){

   if($cale_nazwy === 1){
      $dni = array('niedziela','poniedziałek','wtorek','sroda','czwartek','piątek','sobota');

	  $miesiace = array(1 => 'styczeń',2 => 'luty',3 => 'marzec',4 => 'kwiecień',5 => 'maj',6 => 'czerwiec',7 => 'lipiec',
		              8 => 'sierpień',9 => 'wrzesień',10 => 'październik',11 => 'listopad',12 => 'grudzień');
   
   }else{
   	$dni = array('nie','pon','wto','sro','czw','pią','sob');

	$miesiace = array(1 => 'sty',2 => 'lut',3 => 'mar',4 => 'kwi',5 => 'maj',6 => 'cze',7 => 'lip',
		              8 => 'sie',9 => 'wrz',10 => 'paź',11 => 'lis',12 => 'gru');
   }
	   $czas = ' '.$dni[$this->dates->format('w')];
	   $czas.= ' '.$this->dates->format('d');
	   $czas.= ' '.$miesiace[$this->dates->format('n')];
	   $czas.= ' '.$this->dates->format('Y');
	
       return $czas .= ' r. Godzina '.$this->dates->format('H:i:s');
	} 
	
	
	## sprawdzamy ile dni pozostało ##
	## $param może być 1 albo 2 albo  albo 3 albo 123 albo 12 albo 13 albo 23
    ## Jeżeli data end jest pusta to liczy do obecnego czasu ##

    public function set_date_start_end($param, $data_end){

	$data_end = strtotime($data_end);
	
 if(in_array(1,$param)){
    $zostalo_dni = ' Dni '.floor(($data_end - $this->format_unix())/ 86400);
 }else{$zostalo_dni=null;}
 
 if(in_array(2,$param)){
    $zostalo_tygodni = ' Tygodni '.floor(($data_end - $this->format_unix())/ 604800);
 }else{$zostalo_tygodni=null;}
 
 if(in_array(3,$param)){
     $zostalo_miesiecy = ' Miesięcy '.floor(($data_end - $this->format_unix())/ 2592000);
   }else{$zostalo_miesiecy=null;}
   
   if(in_array(4,$param)){
    $zostalo_lat =' Lat '.floor(($data_end - $this->format_unix())/ 31104000);
   }else{$zostalo_lat=null;}

   $this->data_czas = 'Pozostało '. $zostalo_dni.$zostalo_tygodni.$zostalo_miesiecy.$zostalo_lat;
   	 
}

public function set_date_time_start_end($param, $data_end){

      $data_end = new DateTime($data_end);
     
         $diff  = $this->dates->diff($data_end);


 if(in_array(1,$param)){
    $zostalo_dni = ' Dni '.floor($diff->format("%d"));
 }else{$zostalo_dni=null;}
  
 if(in_array(2,$param)){ 
    $zostalo_tygodni = ' Tygodni '.floor(strtotime($diff->format("%Y-%m-%d"))/604800);
 }else{$zostalo_tygodni=null;}
  
 if(in_array(3,$param)){
     $zostalo_miesiecy = ' Miesięcy '.floor($diff->format("%m"));
   }else{$zostalo_miesiecy=null;}
    
   if(in_array(4,$param)){ 
    $zostalo_lat =' Lat '.floor($diff->format("%Y"));
   }else{$zostalo_lat=null;} 

   if(in_array(5,$param)){
    $zostalo_godzn =' Godzin '.floor($diff->format("%H")); 
   }else{$zostalo_godzn=null;} 
    
   if(in_array(6,$param)){ 
    $zostalo_minut =' Minut '.floor($diff->format("%i"));
   }else{$zostalo_minut=null;}
    
   if(in_array(7,$param)){
    $zostalo_sekund =' Sekund '.floor($diff->format("%s"));
   }else{$zostalo_sekund=null;}
   //$this->data_time_czas =  $diff->format("%Y-%m-%d %H:%I:%S");
     $this->data_time_czas = 'Pozostało '. $zostalo_dni.$zostalo_tygodni.$zostalo_miesiecy.$zostalo_lat.$zostalo_godzn.$zostalo_minut.$zostalo_sekund;
}

   public function get_date_time_start_end(){ 
         return $this->data_time_czas; 
     }
	 public function get_date_start_end(){
	     return $this->data_czas;
	 }
}

index.php



 $KK = new  modify_date_and_time();
		## czas start normalny ##
		$KK->set_dates('2015-01-03 08:09:11');
		## Co pokazać 1 = dni 2 = tygodnie 3 = Miesiące 4 = lata ##
		$param=array(1,2,3,4,5,6,7);
		                       ## czas koniec##
		     $KK->set_date_start_end($param, '2018-01-03 08:09:11');
		echo $KK->get_date_start_end().'
';
		
               ##  Cała data i czas ##
               $KK->set_date_time_start_end($param, '2018-01-03 08:09:11'); 
          echo $KK->get_date_time_start_end().'
'; 


	     ## Rok nie zmodyfikowany ##  
     echo $KK->get_years().'
'; 
     ## Miesuiąc nie zmodyfikowany ##
     echo $KK->get_month().'
';
	 ## Dzień nie zmodyfikowany ##
    echo $KK->get_day().'
';
     ##Godzina nie zmodyfikowana ##
    echo $KK->get_hour().'
';
     ## Minuty nie zmodyfikowane ##
    echo $KK->get_minutes().'
';
      ## Sekundy nie zmodyfikowane ##
   echo $KK->get_seconds().'
';

		## Cała data z nazwami dni i miesięcy ##
		 echo $KK->data_all($cale_nazwy=1).'
';
		
	## czas mysql zmienia na uniksowy  ## 
      echo  $KK->format_unix().'
';
		
 ## Date ##
 $KK->data_modifi();
 $year=8;
 $month=2;
 $day =19;
 
  echo $KK->data_year('-', $year);
  echo $KK->data_month('+', $month);
  echo $KK->data_day('-', $day);
 
 ## time ##
 $KK->time_modifi();
 $hour=10;
 $minute=5;
 $seconds= 10;
 
  echo $KK->time_hour('+', $hour);
  echo $KK->time_minute('-', $minute);
  echo $KK->time_seconds('+', $seconds);
    
	
	## czas uniksowy zmienia na mysql  ## 
	$unix = new  modify_date_and_time();
	$unix->set_dates('1420268951');
    echo '
'.($unix->format_mysql()).'
';




A to efekt końcowy:


 

 

Error log

Error Log

 

Od pewnego czasu potrzebowałem klasy do zapisywania błędów do pilków a także żeby ważniejsze informacje były wysyłane na e-mail.
Więc wykonałę taką klasę oparłę ją o gotową funkcję php w celu ułatwienia sobie pracy. Efekt można zobaczyć poniżej.

 

 

Klasa pozwala na zapisywanie błądów do plików .log i wysłaniu ich na wskazany e-mail,

Wybór zależy tylko od nas, można użyć obu na raz i zapis do pliku i wysłać e-mail.

W klasie należy podać ścieżkę do plików i przypisać e-mail gdzie nastąpi wysłanie nszych logów z błędami.

 

 

Sami ustalamy co chcemy tam umieścić, a klasa dopisuje dane

takie jak ip, host, serwer i jeszcze parę innych sami zobaczcie .

 

error-logi.class.php

 


#The MIT License
###############################
#Copyright (c) 2014 Adam Berger
###############################
#Permission is hereby granted, free of charge, to any person obtaining a copy
#of this software and associated documentation files (the "Software"), to deal
#in the Software without restriction, including without limitation the rights
#to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
#copies of the Software, and to permit persons to whom the Software is
#furnished to do so, subject to the following conditions:
###############################
#The above copyright notice and this permission notice shall be included in
#all copies or substantial portions of the Software.
###############################
#THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
#IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
#FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
#AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
#LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
#OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
#THE SOFTWARE.
##############################
 
/**
 * PHP 5.1
 */
  
/**
 * @version 1.00
 * error_logi
 * @author Adam Berger <ber34#o2.pl---->
 * Class allows you to save the log file error and send them to the e-mail,
 * The choice depends only on us, you can use both at once and save to a file and send an e-mail.
 * The class must specify the path to the file and assign e-mail address where you will send
 * Our logs with errors
 * Themselves we determine what we want to put there, and the class appends data
 * Such as ip, host, server, and a few others see for yourself.
 *
 * Klasa pozwala na zapisywanie błądów do plików .log i wysłaniu ich na wskazany e-mail, 
 * Wybór zależy tylko od nas, można użyć obu na raz i zapis do pliku i wysłać e-mail.
 * W klasie należy podać ścieżkę do plików i przypisać e-mail gdzie nastąpi wysłanie 
 * naszych logów z błędami
 * Sami ustalamy co chcemy tam umieścić, a klasa dopisuje dane 
 * takie jak ip, host, serwer i jeszcze parę innych sami zobaczcie .
   
 */
 
class error_logi {
 
      const USER_DIR   = "user_errors.log";
      const GLOBAL_DIR = 'global_errors.log'; 
      const EMAIL      = 'ber34#o2.pl'; 
 
     private $logi;
     private $ip;
     private $serwer;
     private $data;
      
    public function __construct($SERVER) {
        if(!empty($SERVER)){
            $this->serwer[] = $SERVER;
          while(list($kkk, $jjj)=each($this->serwer[0])){
            if(array_key_exists($kkk, $this->serwer[0])){
               $this->serwer[$kkk]=$jjj;
        }else{
              $this->serwer = false;
            }
          }
        }
        $this->data = date('d-m-Y h:i:s');
    }
     
    private function global_ip(){
 if(filter_var($this->serwer['REMOTE_ADDR'], FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE ) !== false){
       return  $this->ip = "Prywatny zakres ".$this->serwer['REMOTE_ADDR'];
     }else if(filter_var($this->serwer['REMOTE_ADDR'], FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) !== false){
        return  $this->ip = "IPV4 ".$this->serwer['REMOTE_ADDR'];
        }else if(filter_var($this->serwer['REMOTE_ADDR'], FILTER_VALIDATE_IP, FILTER_FLAG_IPV6) !== false){
        return  $this->ip = "IPV6 ".$this->serwer['REMOTE_ADDR'];
     }
 }
    private function global_host(){
      if(!empty($this->serwer['REMOTE_ADDR'])){
         return gethostbyaddr($this->serwer['REMOTE_ADDR']);
      }
    }
     
     private function global_ip_server(){
      if(!empty($this->serwer['SERVER_ADDR'])){
         return $this->serwer['SERVER_ADDR'];
      }
    }
     
     private function global_agent(){
      if(!empty($this->serwer['HTTP_USER_AGENT'])){
         return $this->serwer['HTTP_USER_AGENT'];
      }
    }
     
     private function global_port(){
      if(!empty($this->serwer['REMOTE_PORT'])){
         return $this->serwer['REMOTE_PORT'];
      }
    }
     
    private function global_server_name(){
      if(!empty($this->serwer['SERVER_NAME'])){
         return $this->serwer['SERVER_NAME'];
      }
    }
      ### zapisujemy logi na serwerze w podanej ścieżce ###
  public function user_logi_save($mesage,$user){
         
    $this->logi = "|  Data:  ".$this->data."  |  User:  ".$user." | Wiadomosc: ".$mesage." | IP: ".$this->global_ip()."| Global Port: ".$this->global_port()." | Host: ".$this->global_host()."| Agent: ".$this->global_agent()."| IP Server: ".$this->global_ip_server()." \n";
    error_log($this->logi, 3, self::USER_DIR); 
 } 
   ### wysyłamy logi na e-mail z loginem usera ###
  public function user_logi_email($mesage, $user, $html=false){
     
     $this->logi = "
|  Logi z:  ".$this->global_server_name()."
|  User:  ".$user."
|  Data:  ".$this->data."
| Wiadomosc: ".$mesage."
| IP: ".$this->global_ip()."
| Global Port: ".$this->global_port()."
| Host: ".$this->global_host()."
| Agent: ".$this->global_agent()."
| IP Server: ".$this->global_ip_server()."";
    ### wiadomość html ###
    if($html === true){
     $html='';
     $html.='

Logi z '.$this->global_server_name().'

$html.='

Data: '.$this->data.'

$html.='

User: '.$user.'

$html.='

IP: '.$this->global_ip().'

$html.='

Global Port: '.$this->global_port().'

$html.='

Host: '.$this->global_host().'

$html.='

Agent: '.$this->global_agent().'

$html.='

IP Server: '.$this->global_ip_server().'

$html.='

Wiadomosc: '.$mesage.'

### Wysyłamy w imieniu ber34#o2.pl z adresu ber34#o2.pl error_log($html, 1, self::EMAIL,"subject :lunch\nContent-Type: text/html; charset=UTF-8; Foo\nFrom:".self::EMAIL."\n"); }else{ error_log($this->logi, 1, self::EMAIL,"subject :lunch\nContent-Type: text/html;charset=UTF-8; Foo\nFrom:".self::EMAIL."\n"); } } ### zapisujemy logi na serwerze w podanej ścieżce ### public function global_logi_save($mesage){ $this->logi = "| Data: ".$this->data." | Wiadomosc: ".$mesage." | IP: ".$this->global_ip()."| Global Port: ".$this->global_port()." | Host: ".$this->global_host()."| Agent: ".$this->global_agent()."| IP Server: ".$this->global_ip_server()." \n"; error_log($this->logi, 3, self::GLOBAL_DIR); } ### wysyłamy logi na e-mail ### public function global_logi_email($mesage, $html=false){ $this->logi = " | Logi z: ".$this->global_server_name()." | Data: ".$this->data." | Wiadomosc: ".$mesage." | IP: ".$this->global_ip()." | Global Port: ".$this->global_port()." | Host: ".$this->global_host()." | Agent: ".$this->global_agent()." | IP Server: ".$this->global_ip_server()." "; if($html === true){ $html=''; $html.='

Logi z '.$this->global_server_name().'

$html.='

Data: '.$this->data.'

$html.='

IP: '.$this->global_ip().'

$html.='

Global Port: '.$this->global_port().'

$html.='

Host: '.$this->global_host().'

$html.='

Agent: '.$this->global_agent().'

$html.='

IP Server: '.$this->global_ip_server().'

$html.='

Wiadomosc: '.$mesage.'

### Wysyłamy w imieniu ber34#o2.pl z adresu ber34#o2.pl error_log($html, 1, self::EMAIL,"subject :lunch\nContent-Type: text/html; charset=UTF-8; Foo\nFrom: ".self::EMAIL."\n"); }else{ error_log($this->logi, 1, self::EMAIL,"subject :lunch\nContent-Type: text/html;charset=UTF-8; Foo\nFrom: ".self::EMAIL."\n"); } } }

test-logi.php

 


include("error-logi.class.php");
 
  $logi = new error_logi($_SERVER);
   
  $mesage='Błąd log przypisujemy np. błąd pdo lub mysql albo błąd logowania';
     $user='Adam ';
     $html=true;
   
  ## ustawiamy kiedy zapisujey logi urzytkownika ##
     $logi--->user_logi_save($mesage,$user);
     $logi->user_logi_email($mesage, $user, $html);
 
  ## ustawiamy kiedy zapisujey logi globalne ##
      $logi->global_logi_save($mesage);
      $logi->global_logi_email($mesage, $html);

 

 

{jcomments on}

Class Language

Class Language

Od pewnego czasu szukałem klasy, która była by odpowiednia do mojego projektu, postanowiłem wprowadzić dwu języczność. Poszukiwania nie przyniosły zadowalających efektów, które chciałem osiągnąć. Wykonałem klasę, którą nazwałem "Class Language". Klasa bardzo lekka, przejrzysta i bardzo wydajna zero zamuleń. Do "Class Language” można podpiąć dowolną ilość języków, które ma obsługiwać, cała treść tłumaczenia znajduje się w osobnym pliku nazwanym lang.ini, dane w nim się znajdujące są importowane do metody i tam przetwarzane w zależności od języka, jaki na chwilę obecną używamy.

Samo używanie jest banalnie proste sprowadza się do podania języka, jaki ma obowiązywać w danym momencie podajemy go, jako liczby 1 to polski 2 to angielski itd. trzeba zachować tylko jedną regułę w pliku .ini musimy podawać takie same nazwy dla poszczególnych języków.

Jeżeli język polski to w pliku lang.ini tablica [pl] jak angielski to tablica [en] jak czeski to tablica [cz] itd. Następną zmienną, którą należy podać do klasy jest położenie pliku lang.ini z naszymi tłumaczeniami podajemy ścieżkę do pliku. No i już na koniec pozostaje nam tylko określenie słów do tłumaczenia, przez odpowiednią metodę $lang->_lang("ZALOGUJ"); albo $lang->_lang("WYLOGUJ");

Jak wspomniałem wyżej klasa bardzo prosta i wydajna nie powinna przysporzyć w obsłudze żadnych problemów, życzę udanego użytkowania.

 

 

index.php



     require_once('class_lang.php'); 
/* Okresl ktory jezyk "1" to polski "2" to angielski */
/* Specify which language "1" is the Polish "2" is an English */
        $file="lang.ini"; 
        $pl=1; 
        $en=2; 
        $lang = new class_lang($en, $file); 
    echo $lang->_lang("ZALOGUJ");    
    echo $lang->_lang("WYLOGUJ");
lang.ini
 [pl]
 ZALOGUJ= "Zaloguj PL"
 WYLOGUJ= "Wyloguj PL"
 [en]
 ZALOGUJ= "Zaloguj EN"
 WYLOGUJ= "Wyloguj EN"
class_lang.php

 class class_lang{ 
     
   private $whatlang; 
   private $lang      = array(1=>"pl", 2=>"en", 3=>"cz", 4=>"br"); 
   private $lang_tabl = array(); 
   private $pl        = array(); 
           
     
    public function __construct($whatlangg, $file){ 
           if(file_exists($file)){ 
            $this->lang_tabl = parse_ini_file($file, true); 
           }else{ 
             die("Brak Pliku lang.ini"); 
           } 
           if(!empty($whatlangg)){ 
           $this->whatlang = $this->lang[(int)$whatlangg];     
           }else{ 
            die("Brak okreslonego jezyka"); 
           }        
      } 
 
    private function lang(){  
        if(!empty($this->whatlang)){ 
         return $this->whatlang;  
        }else{ 
         return "pl";  
        }          
    } 
      
    private function multi_lang($param){ 
      $this->pl = $this->lang_tabl[$param];    
    }  
 
    private function get_multi_lang(){ 
        return $this->pl; 
    } 
      
    public function _lang($langgg){   
           $this->multi_lang($this->lang()); 
           if($lan = $this->get_multi_lang()){ 
               return $lan[$langgg]; 
           } 
     }        
}

 

 

 

{jcomments on}

Uniwersal Import Xml

Uniwersal Import Xml

 

Od pewnego czasu podczas wykonywania różnych zleceń z plikami .xml napotykałem na problem , który mnie zawsze irytował.
Problem polegał na­ tym, że za każdym razem musiałem robić nowy integrator pod dany plik .xml i danych się tam znajdujących.
Jeżeli kiedykolwiek­ używaliście takie pliki i importowaliści dane do serwisu to zapewne spotkaliście się z takim problemem,
że nie które pliki .xml nie pasowały i nie szło przeprowadzić importu zawartości owego pliku. Postanowiłem zrobić klasę uniwersalną,
żeby każdy , no prawie każdy plik pasował i szło go zaimportować i odczytać. Pomysł oparłem na klasie którą nazwałem
Uniwersal Import Xml „ teraz w łatwy sposób mogę przeprowadzić operację na plikach .xml. Efekt mojej pracy chciałem wam
przedstawić.

Same działanie klasy jest banalnie proste. Podajemy ścieżkę z tablicy $_FILES i $_POST. $_FILES    
zawiera nasz>plik .xml do importu, a $_POST znaczniki, które chcemy zaimportować.
Dla lepszego zobrazowania działania pokażę formularz i znajdujące się tam dane.
Potrzebne dane do importu bierzemy z samego pliku .xml, które nas interesują. Pierwsze pole formularz przypisujemy nasz zbiór i
podzbiór oddzielone && , a potem w zależności od zapotrzebowania np. chcemy uzyskać takie dane jak : id, cena, tytuł, url,
trzy z nich są selektorami, a jeden to Tag pliku .xml. Teraz tak tytuł jest w tagach „<tytuł>Nasz tytuł</ tytuł >” , a
reszta danych znajduje się w tagch jak i w selektorach

 

<dane id=”123” cena=”34,66” url=”http://www.example.com”></dane>.

W polach formularza przypiszemy takie wartości.

 

1. nasz zbiór i podzbiór „zbior&&podzbior”

2. nasz tytuł w tagu „tytuł”

3. nasze dane w Tagu i selektorze „dane&&id”

 

4. nasze dane w Tagu i selektorze „dane&&cena”

 

5. nasze dane w Tagu i selektorze „dane&&url”

 

Reszta danych w pliku nas nie interesuje tak jakby jej tam nie było.
I tak wysłany formularz zwróci nam potrzebne dane w postaci tablicy.
Następny przykład jeżeli plik .xml ma w sobie dane w postaci tylko tagi <?> to wpisujemy
 
  1. nasz zbiór i podzbiór „zbior&&podzbior”
  2. nasz tytuł w tagu „tytuł”
  3. nasza cena w Tagu „cena”
  4. nasz url w Tagu „url”

 

 

 

 

I tak wysłany formularz zwróci nam potrzebne dane w postaci tablicy.

Prawda że to rozwiązanie jest bardziej przyjazne programiście niż dostosowywanie za każdym razem importera pod dany plik. Dla mnie jest to bardzo przydatne.

Może i wam ułatwi pracę w jakiś tam sposób.

 

test.php

 

* Zbiór znaczników podzielony && * Tytuł * * * *

 

test-post.php

 


include("uniwersal_import_xml.class.php");

   $import_xml = new uniwersal_import_xml($_FILES);
   $import_xml->save_xml();
   $import_xml->wczytaj_post($_POST['MARKA'], $_POST['MODEL'], $_POST['CENA'], $_POST['ID'], $_POST['VAT'],
                                $_POST['URL_IMG'], $_POST['URL_PROD'], $_POST['OPIS']);
                
               ### nasze aukcje ###
          $ff = $import_xml->uniwersal_plik_xml();
           //// print_r($ff);
          for($i=0; $i < count($ff['MARKA']); $i++){
             // print_r($ff);
               ### wyświetlamy ###
             if(!empty($ff['MARKA'])){
                echo "".$i."ID ".$ff['ID'][$i]."";
                echo "".$i."marka ".$ff['MARKA'][$i]."";
                echo ""."model ".$ff['MODEL'][$i]."";
                echo "".$i."cena ".$ff['CENA'][$i]."";
         // echo $ff['CENA_NETTO'][$i]."";
                echo "".$i.$ff['VAT'][$i]."";
                echo "".$i.$ff['URL_IMG'][$i]."";
                echo  "".$i.$ff['URL_PROD'][$i]."";
                echo "".$i."opis ".$ff['OPIS'][$i]."";
             }
         }

 

uniwersal_import_xml.class.php

 


#The MIT License
###############################
#Copyright (c) 2014 Adam Berger
###############################
#Permission is hereby granted, free of charge, to any person obtaining a copy
#of this software and associated documentation files (the "Software"), to deal
#in the Software without restriction, including without limitation the rights
#to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
#copies of the Software, and to permit persons to whom the Software is
#furnished to do so, subject to the following conditions:
###############################
#The above copyright notice and this permission notice shall be included in
#all copies or substantial portions of the Software.
###############################
#THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
#IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
#FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
#AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
#LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
#OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
#THE SOFTWARE.
##############################
/** * PHP 5.1 */ /** * @version 2.00 * Full uniwersal import xml * @author Adam Berger <ber34#o2.pl--> * Class allows you to import a variety of files. * Xml assigning appropriate tags that you want to read. * We read the same data from different files. * The structure of the document must remain the same in each of them. * Tags that you want to display the message given in the table. * * Klasa pozwala na import różnych plików .xml z przypisaniem odpowiednich tagów, * które chcemy odczytać. * Możemy odczytać te same dane z różnych plików. * Struktura dokumentu musi pozostać taka sama w każdym z nich. * Tagi które chcemy wyświetlić podajemy w tablicy post. * Pełny uniwersalny kontapitybilny z ceneo, nokut, okazje, aukcyjny i jeszcze parę innych */

class uniwersal_import_xml {

 public $file = array();

 public $type; 

public $xml_name;

 public $types;

 public $ile_xml;

 public $kk;

 public $ww;

 public $pp = array(); 

public $bb = array();

 public $error = false;

 public $post = array(); 

public $t = array();

public function __construct($files) {

 if(!empty($files)){ 

$this->file[] = $files;

list($kkk, $this->ww)=each($this->file[0]);
 } 

if(array_key_exists($kkk, $this->file[0])){

 $this->kk = $kkk;
 }else{ 
$this->kk = $this->error;
 } $this->error;
 }
 ### nazwa pliku. ###

 public function files_xml(){

 if(!empty($this->file)){

 return $this->kk;
 }else{ 

return $this->error;

 } }

 ### nazwa pliku. ###

 public function files_name_xml(){

 if(!empty($this->file)){
 return $this->ww['name'];
 }else{ 
return $this->error;
 } } 
### temp nazwa pliku. ###

 public function files_temp_name_xml(){

 if(!empty($this->file)){
 return $this->ww['tmp_name'];
 }else{
 return $this->error;
 } }

 ### Typ pliku. ###

 public function files_types_xml(){

 if(!empty($this->file)){

 return $this->ww['type'];

 }else{

 return $this->error;

 } }

 ### Błąd pliku. ###

 public function files_error_xml(){

 if(!empty($this->file)){
 return $this->ww['error'];
 }else{
 return $this->error;
 } }

### Rozmiar pliku. ###

 public function files_size_xml(){

 if(!empty($this->file)){

 return $this->ww['size'];
 }else{
 return $this->error; 
} } 

### Typ pliku. ###

 public function is_typee(){

 $typee = array('text/xml');

 if(in_array(self::files_types_xml(), $typee)){

 return true;

 }else{

 return $this->error;

 } } 

### wybierz który import swój czy obcy. ### 

public function select_tag_xml(){ 

if($this->kk == "fileimportxml"){ 

return true; 

}else{

 return $this->error;

 } }

 ## zamienienie i rozdzielenie ##

 protected function load_xml(){

 if(file_exists("xml/".basename($this->files_name_xml()))){

 // $this->xml_name 

if(self::files_name_xml()){

 $xml= new DOMDocument('1.0', 'utf-8');// iso-8859-2 

$xml->preserveWhiteSpace=false; 

$xml->loadXML(file_get_contents("xml/".basename($this->files_name_xml())));

 // $this->xml_name 

if($xml){
 return $xml;
 }else{
 return $this->error; 
 } 
}else{
 return $this->error;
 } } }

 #### pobieramy tablice post ####

 public function wczytaj_post(){

 if(func_num_args()>0){ 

$this->post_a = func_get_args();

 foreach($_POST as $bb =>$pp){

 if(in_array($pp,$this->post_a)){

 $this->pp[] = strip_tags($pp);

 if(array_key_exists($bb, $_POST)){ 

$this->bb[] = array($bb =>

 strip_tags($pp));

 } } } } }

 ### zapisz plik ###

 public function save_xml(){ 

$error =""; 

if(!file_exists($this->files_name_xml())){

 if ($this->files_error_xml() == '0') {

 $scie = "xml/".basename($this->files_name_xml()); 

//// gdzie wgrać plik //$scie = strtolower(strtr($scie, "ąęćłńóśźżĄĆĘŁŃÓŚŹŻ", "aeclnoszzACELNOSZZ"));
 /// wyczyszczenie nazwy + ustawienie małe litery

 if(is_uploaded_file($this->files_temp_name_xml())){ 

if($this->files_size_xml() == '0' or $this->files_size_xml() > '4096000'){

 /////Sprawdź czy jest mniejszy od 4MB @$this->error .= "Stop Plik większy Od 4MB";

 }elseif($this->is_typee() !== true){

 /// sprawdz czy zdięcie - image @$this->error .= "Stop Plik nie jest xml";

 }else{

 move_uploaded_file($this->files_temp_name_xml(), $scie);

 /// gdzie zapisac @$this->error.= "Zapis Udany"; 

} }else{ 

@$this->error.= "Stop Błąd Pliku";

 } } }

 return $this->error;

 }

 public function uniwersal_plik_xml(){

 $t=array();

 if($xml = $this->load_xml()){

 $domXPath = new DOMXPath($xml);

 foreach ($domXPath->query('//*') as $keyDOM) {

 foreach($this->bb as $sss){ 

foreach($sss as $kkkkkkk => $ssssssss){ 

$s = explode('&&', $ssssssss);

 if(!empty($s[1])){

 if($keyDOM->getAttribute($s[1]) && $keyDOM->tagName == $s[0]){

 $MARKA = $keyDOM->getAttribute($s[1]); @$t[$kkkkkkk][] = $MARKA;
 // for 
} }else if($keyDOM->tagName == $s[0]){ 
if(in_array($s[0],$this->pp)){

 $t[$kkkkkkk][] = $keyDOM->nodeValue;

 } } } } } }

 return $t;

 } }

 

 

Klasa Uniwerasl Import Xml współpracuje z „ceneo”, „nokaut”, „okazje” „aukcyjny” i jeszcze parę innych.
Jeżeli masz plik i struktura dokumentu jest taka jak w plikach wyżej wymienionych,
to twój plik też powinien współpracować z klasą Uniwerasl Import Xml.
Jeżeli nie jesteś pewien,to z kontaktuj się ze mną, a ja postaram się wyjaśnić wszystko w czym masz problem.

 

 

 

Używamy cookies i podobnych technologii m.in. w celach: świadczenia usług, reklamy, statystyk. Korzystanie z witryny bez zmiany ustawień Twojej przeglądarki oznacza, że będą one umieszczane w Twoim urządzeniu końcowym. Pamiętaj, że zawsze możesz zmienić te ustawienia. To find out more about the cookies we use and how to delete them, see our privacy policy.

I accept cookies from this site.

EU Cookie Directive Module Information