<?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
*/
/**
  @package lossim <web http://www.lossim.org>
  @author oscim <mail dom@oscim.fr > <web http://www.oscim.fr>
  @class rubrique
  @version 2.0

  Recusivité dans les appels


Array return
(
    [etat] => 1
    [title_fr] => moi assui et plus et to in rubrique
    [date_modified] => 09-19-2009
    [author] => admin
    [format] => testtitre_test
    [key] => testtitre_test
    [href] => http://debian/apache2-default/web_local_develop/test/3.4.3/?fr/testtitre_test/moi_assui_et_plus_et_to_in_rubrique.html
    [path] => fr/testtitre_test/moi_assui_et_plus_et_to_in_rubrique
    [parent] => testtitre_test
)
*/

  error_reporting(E_ALL);

class rubrique extends cstr{

  /**
    Constructeur
  */
  function rubrique () {
    error_reporting(E_ALL);
    $this->rubrique=$this->add_tbl_php(TBL_MODULE_RUBRIQUE_INC,'rubrique');

      if (!defined('LONG_DES_LIENS')) { // si appel hors menu principal
          $this->config_menu=$this->add_tbl_php(TBL_MODULE_CONFIG_MENU_INC,'config_menu');
          define('LONG_DES_LIENS',$this->config_menu['long_des_liens']);

          $this->config_menu['rubrique']=(!isset($option['config_menu']['rubrique']))? $this->config_menu['rubrique'] :$option['config_menu']['rubrique'] ;
          $this->config_menu['menu_rubrique']=(!isset($option['config_menu']['menu_rubrique']))? $this->config_menu['menu_rubrique'] :$option['config_menu']['menu_rubrique'] ;
      }

  }


  /**
    Init de la class,  pour une rub
    La key de rubrique doit être precisé
  @param
   @a string key_cat la clef de la rubrique
   @a array option
  */
  /*public*/ function init($key_cat,$option) {
  error_reporting(E_ALL);

    if (empty($key_cat)) return false;
    if (!isset($this->rubrique[$key_cat])) return false;

    $this->key_cat= $key_cat;
    $this->option= $option;

    $this->rubrique[$key_cat]['path']=(!isset($option['config_rubrique']['path']))? $this->rubrique[$key_cat]['path'] :$option['config_rubrique']['path'] ;
    $this->rubrique[$key_cat]['max']=(!isset($option['config_rubrique']['max']))? $this->rubrique[$key_cat]['max'] :$option['config_rubrique']['max'] ;
    $this->rubrique[$key_cat]['ss_rubrique']=(!isset($option['config_rubrique']['ss_rubrique']))? $this->rubrique[$key_cat]['ss_rubrique'] :$option['config_rubrique']['ss_rubrique'] ;

    $this->i_links=$this->add_tbl_php(TBL_INDEX_LINKS_INC,'i_links');

  }


  /**
    Test la valeur de l'arguement est verifie que celui ci est une rubriques.
    @param
      @a string value la key de rubrique a testé
  */
  /*public*/ function is_rubrique($value){
    if (!isset($this->rubrique[$value])) return false;
    else return true;
  }


  /**
    construit la rubrique
  */
  /*public*/ function list_cat($format,$keyCat='',$Option=''){
     global $page;
    error_reporting(E_ALL);
    if (!isset($this->key_cat)) return null;
    $key_cat=(tep_not_null($keyCat))? $keyCat : $this->key_cat;
    $option=(tep_not_null($Option))? $Option : $this->option;
    if (!isset($key_cat)) return null;

     $this->format= $format;
    /* Boucle pour recuprer la valeur et clefs de la rubriques correspondantes , menu_rubrique true dans config_menu ou rubrique forcer par force_liste_rub*/
    if (!test_const('CONFIG_MENU_MENU_RUBRIQUE') && !test_bool(@$option['force_liste_rub'])) die('boucle bloquer par la configuration'); //return false;
      if ( (isset($this->rubrique[$key_cat]['ss_rubrique'])) AND  ($this->rubrique[$key_cat]['ss_rubrique']=="auto") ){
        $nom=NewFct('cstr_liste',REP_DATA.LANG_POST."/".$this->rubrique[$key_cat]['path']."","") ;

        if (!is_array($nom) )return null;

        switch ($this->rubrique[$key_cat]['base']){
          case "inv_auto": rsort($nom); break;
          case "normal_key":ksort($nom);break;
          case "inv_normal_key":krsort($nom);break;
          default:sort($nom);
        }

        $cpt_sortie="";$cpt=0;
        if(empty($this->rubrique[$key_cat]['max'])) $this->rubrique[$key_cat]['max']=10;

        if (is_array($nom))
          while ( $rows = each($nom)){
            $cpt++;$cpt_sortie++;

            $y=NewFct('extract_nom_dater_evoluer',$rows['value'],REP_DATA.LANG_POST."/".$this->rubrique[$key_cat]['path']."/");

            $this->key_post=md5 ($y['rub'].$y['nom_ss_ext'] );

            $f = (isset($this->i_links[$this->key_post]['title_'.LANG_POST]))? $this->i_links[$this->key_post]['title_'.LANG_POST] : $y['nom_ss_ext'];
            $e= $y['nom_ss_ext'];
            $href=(isset($this->i_links[$this->key_post]['href']))? $this->i_links[$this->key_post]['href'] :$this->rubrique[$key_cat]['path']."/".$e;
            $url_link=tep_url_link(LANG_POST.'/'.$href, true);
            if ( (
                   ( ($cpt_sortie<=$this->rubrique[$key_cat]['max']) && is_numeric($this->rubrique[$key_cat]['max']) ) || (!is_numeric($this->rubrique[$key_cat]['max']))
                 ) && tep_not_null($e)
                 && (
                    (test_bool(@$this->i_links[$this->key_post]['etat']) !=false)   || isset($this->rubrique[$rows['value']])
                  )
                 ) {

              $f=(strlen($f)>LONG_DES_LIENS) ? substr($f,0,LONG_DES_LIENS) : $f;
              $f=str_replace("&apos;","\'",unhtmlentities($f));
              if (test_file_name_dater($href)|| isset($this->rubrique[$e]) ) {

                $lesrubriques[$key_cat."_".$e]=(isset($this->i_links[$this->key_post])) ? $this->i_links[$this->key_post] : array();

                if ( isset($option['s_printH']) && menu_selected($option['s_printH'],$href) )
                  $lesrubriques[$key_cat."_".$e]['format'] = sprintf($this->format,$key_cat." select",$url_link,'',$f,$f,'',"  lang=\"".LANG_POST."\" ",'', '',$cpt);
                else
                  $lesrubriques[$key_cat."_".$e]['format'] = sprintf($this->format,$key_cat,$url_link,'',$f,$f,'',"  lang=\"".LANG_POST."\" ",'', '',$cpt);

                $lesrubriques[$key_cat."_".$e]['key'] = $key_cat;
                $lesrubriques[$key_cat."_".$e]['href'] = $url_link;
                $lesrubriques[$key_cat."_".$e]['path'] = LANG_POST.$this->rubrique[$key_cat]['path']."/".$e;
                $lesrubriques[$key_cat."_".$e]['parent'] = $this->rubrique[$key_cat]['path'];
              }

              if (is_dir(REP_DATA.LANG_POST.$this->rubrique[$key_cat]['path']."/".$e))  {  // RECURSIVITE
                $R = $this->list_cat($this->format,$e);
                if(is_array($R))$lesrubriques = array_merge($lesrubriques,$R);
              }
            }
            unset($url_link);
            unset($href);
          } // fin de while

        }
          ## appel du fichier fixe du menu de sous rubriques
        else{
          if(file_exists("include/menu/".Trim($key_cat)."_ss_rubrique.inc")) include("include/menu/".trim($key_cat)."_ss_rubrique.inc");
          elseif(file_exists("include/menu/".trim($key_cat).".inc")) include("include/menu/".trim($key_cat).".inc");
          else return false;
  /** Add appel vers le fichier  */
          while ( $menu_auto_list =each($menu_auto)){
            if ($menu_auto_list['value']['etat']=='true'){
              $liens_href= (!@eregi("(^http:|mailto|.(zip|tar|gz|pdf|ps|png|jpg|gif)$)",$menu_auto_list['value']['href']))? LANG_POST."/".$r.'/'.$menu_auto_list['value']['href']:$menu_auto_list['value']['href'];
              $liens_title= nett_acen($menu_auto_list['value']['title_'.LANG_POST]);
              $liens_txt= $menu_auto_list['value']['txt_'.LANG_POST];
              if (isset($menu_auto_list['value']['img_'.LANG_POST])) $liens_img='<img src="'.URL_DU_SITE.$menu_auto_list['value']['img_'.LANG_POST].'" alt="'.$liens_txt.'" />';
              if (isset($menu_auto_list['value']['img_s_'.LANG_POST]))$liens_img='<img src="'.URL_DU_SITE.$menu_auto_list['value']['img_'.LANG_POST].'" alt="'.$liens_txt.'"  onmouseover=\'this.src="'.URL_DU_SITE.$menu_auto_list['value']['img_s_'.LANG_POST].'"\' onmouseout=\'this.src="'.URL_DU_SITE.$menu_auto_list['value']['img_'.LANG_POST].'"\' />';
              $liens_html=$menu_auto_list['value']['html'];
              if (strlen($liens_txt)>LONG_DES_LIENS) $liens_txt=substr($liens_txt,0,LONG_DES_LIENS);
              $txt= (!empty($liens_img)) ? $liens_img: $liens_txt;
              reset($menu_auto_list);
              if (test_file_name_dater($menu_auto_list['value']['format']))
                $lesrubriques[$r."_".$menu_auto_list['key']]['format'] = sprintf($format,$r,'',tep_url_link($liens_href,true),$txt,$liens_title,'', " lang=\"".LANG_POST."\" ".$liens_html,'', '','');
            }
          }
        }
//         print_r($lesrubriques);
    return (isset($lesrubriques)) ? $lesrubriques : array();
  }
}
?>