Vous êtes connecté en tant que anonymous Se Deconnecter
application/class/tri.class.php
8d6a2feb
 <?php
 /**
  * Created by PhpStorm.
  * User: roy
  * Date: 05/03/2019
  * Time: 16:08
  */
 class Tri{
 
     public static function cmp($a,$b){
         if ($a == $b) {
             return 0;
         }
         return ($a < $b) ? -1 : 1;
     }
74c94f79
 
     public static function cmpIp($ip1,$ip2){
 
         $tab_ip1 = explode(".",$ip1);
         $tab_ip2 = explode(".",$ip2);
 
         $octet0 = Tri::cmp($tab_ip1[0],$tab_ip2[0]);
         $octet1 = Tri::cmp($tab_ip1[1],$tab_ip2[1]);
         $octet2 = Tri::cmp($tab_ip1[2],$tab_ip2[2]);
         $octet3 = Tri::cmp($tab_ip1[3],$tab_ip2[3]);
 
         if($octet0 == 0){
             //égal
             if($octet1 == 0){
                 //égal
                 if($octet2 == 0){
                     //égal
                     if($octet3 == 0){
                         //égal
                         return 0;
                     }elseif($octet3 == 1){
                         //supérieur
                         return 1;
                     }else{
                         //inférieur
                         return -1;
                     }
                 }elseif($octet2 == 1){
                     //suppérieur
                     return 1;
                 }else{
                     //inférieur
                     return -1;
                 }
             }elseif($octet1 == 1){
                 //suppérieur
                 return 1;
             }else{
                 //inférieur
                 return -1;
             }
         }elseif($octet0 == 1){
             //suppérieur
             return 1;
         }else{
             //inférieur
             return -1;
         }
     }
 
     public static function cmpInterval($tab_ip1,$tab_ip2){
         $vlan_test_adresse_ip_debut = $tab_ip1[0];
         $vlan_test_adresse_ip_fin = $tab_ip1[1];
 
         $vlan_adresse_ip_debut = $tab_ip2[0];
         $vlan_adresse_ip_fin = $tab_ip2[1];
 
         $ip_debut_cmp = Tri::cmpIp($vlan_test_adresse_ip_debut,$vlan_adresse_ip_debut);
         $ip_debfin_cmp = Tri::cmpIp($vlan_test_adresse_ip_debut,$vlan_adresse_ip_fin);
         $ip_fin_cmp = Tri::cmpIp($vlan_test_adresse_ip_fin,$vlan_adresse_ip_fin);
         $ip_findeb_cmp = Tri::cmpIp($vlan_test_adresse_ip_fin,$vlan_adresse_ip_debut);
 
         //ip1_debut ? ip2_debut
         if($ip_debut_cmp == 0){
             //égal
             if ($ip_fin_cmp == 0) {
                 return 'sont égaux';
             }
             return 'chevauche par le debut (egalité debut)';
 
         }elseif($ip_debut_cmp == 1){
             //supérieur
             //ip1_debut ? ip2_fin
             if ($ip_debfin_cmp == 0) {
                 //égal
                 return 'forme une jonction par le debut avec';
             } elseif ($ip_debfin_cmp == 1) {
                 //supérieur
                 return 'est different (apres)';
             } else {
                 //inférieur
                 //ip1_fin ? ip2_fin
                 if ($ip_fin_cmp == 0) {
                     //égal
                     return 'chevauche par la fin (egalité fin)';
                 } elseif ($ip_fin_cmp == 1) {
                     //supérieur
                     return 'chevauche par le debut';
                 } else {
                     return 'est inclue dans';
                 }
             }
         } else {
             //inférieur
             if($ip_findeb_cmp == 0){
                 //égal
                 return 'forme une jonction par la fin avec';
 
             }elseif($ip_findeb_cmp == 1){
                 //supérieur
                 if($ip_fin_cmp == 0){
                     //égal
                     return 'est inclue dans (egalité fin)';
 
                 }elseif($ip_fin_cmp == 1){
                     //supérieur (3)
                     return 'inclue';
 
                 }else{
                     //inférieur (2)
                     return 'chevauche par la fin';
                 }
             }else{
                 return 'est different (avant)';
             }
         }
     }
8d6a2feb
 }