<?php
/*
Copyright (C) 2008 by oscim   Project lossim  [created : 30.07.2009, 10:54:30] @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
 */


/**
* Prise en charge du menu selectionne.
  @author oscim
  @version 1.3
  @dependance a:aff_menu et tab_menu
  @param
    @a array $s_printH
    @a string $lien
*/
function menu_selected($s_printH,$lien){
  if (!isset($s_printH['ch_reel']))  return false;

  $l=$lien=trim($lien);
  if(substr($lien,0,strlen(URL_DU_SITE)) == URL_DU_SITE ) $lien=substr($lien, strlen(URL_DU_SITE),-5);
  if ( ( trim($s_printH['ch_reel'])== trim(LANG_POST.'/'.$lien) ) || ( $s_printH['ch_reel']==trim($lien) ) ) return true;
  elseif ( ( trim($s_printH['rubrique'])== trim(LANG_POST.'/'.$lien) ) || ( $s_printH['rubrique']==trim($lien) ) ) return true;
  else return false;
}

/**
* menu d'accesibilité au contenu
  @author oscim
  @version 1.3
*/
function menu_access($id_menu='menu',$id_content='maine'){
    print '<p>'.GO_TO.'<a href="#'.$id_menu.'" title="'.GO_TO.GO_TO_MENU.'">'.GO_TO_MENU.'</a> - '.GO_TO.'<a href="#'.$id_content.'" title="'.GO_TO.GO_TO_CONTENT.'">'.GO_TO_CONTENT.'</a></p>';
}

/**
* langue pour un artcile, si AFF_LANG_NAV (sys_config) actif
  @author oscim
  @version 1.2
*/
function nav_lang($s){
    $present='';
    print'<div id="nav_lang" class="nav">';
    if( (defined('LANG_NAV'))AND test_const('AFF_LANG_NAV') ){ // Mulitlang
        while($q=each($s['lang_link'])){
            $test=eregi_replace("/$","",$q['value']);
            if (test_file_name_dater(eregi_replace("^[a-z0-9]{2,3}/",'',$test))) $present .= "<a href='".tep_url_link($test)."' lang=\"".$q['key']."\" title=\"".$q['key']."\" >\"".$q['key']."\"</a>";
  // else echo '<p>'.nett_acen(OUT_OFF_DATE.' '.$q['key']).'</p>';
        }
    } else  print '<p>'.nett_acen(MULTILANG_OFF).'</p>';

    if (tep_not_null($present)) print '<p>'.nett_acen(ARTICLE_LANG_DISPO.$present).'</p>';
    print '</div>';
}

/**
* Sortie du menu de choix des lang
  @package lossim 3.4.7
  @param
    @p obj cstr doit être accesibble
    @a array option
*/
function menu_lang($opt='') {
    global $cstr;

    $k=$cstr->_call_var('page','extract_nom');
    $img = (isset($opt['img'])) ? $opt['img'] : null;
    $img_h=(isset($opt['img_h'])) ? $opt['img_h'] : null;
    $img_s=(isset($opt['img_s'])) ? $opt['img_s'] : null;
    $prem_page=(isset($opt['prem_page'])) ? $opt['prem_page'] : PREM_PAGE;
    $select_debut=(isset($opt['select_debut'])) ? true: false;

    if (tep_not_null($img) && ( tep_not_null($img_h) ||tep_not_null($img_s) ) ){
        $supp = ' onmouseover="this.src=\''.$opt['path_img']."%1\$s"."%2\$s".'.'.$opt['ext_img'].'\'" onmouseout="this.src=\''.$opt['path_img']."%1\$s"."%3\$s".'.'.$opt['ext_img'].'\'" ';
        $dip="display:none;";
    }else {
        $dip="display:inline";
        $img_h= $img_s=$img;
    }
    $lg=appel_lang();
    print "<ul id=\"menu_lang\" >\n";
    while ($r=each($lg)){
        $d=tep_url_link($r['key'].'/'.$k['url']);
        $js_supp=(isset($opt['js_supp'])) ? ' onmouseover="'.$opt['js_supp'].$r['key'].'(\'on\')" onmouseout="'.$opt['js_supp'].$r['key'].'(\'off\')" ' : null;
        if(LANG_POST == $r['key'] && ( ($select_debut==true && isset($_POST['lang']) )|| ( $select_debut==false && !isset($_POST['lang'])) ) ) {
            $select = ' select ';
            $img_base= (tep_not_null($img_s)) ? $img.$img_s : $img.$img_h ;
            $img_hover=  (tep_not_null($img_s)) ? $img.$img_s : $img.$img_h ;
        } else{
            $select = '';
            $img_base=$img;
            $img_hover=  (tep_not_null($img_s)) ? $img.$img_s : $img.$img_h ;
        }

        $txt=(isset($opt['txt_lang'][$r['key']])) ? $opt['txt_lang'][$r['key']] : $r['value']['txt'];
        $i= (tep_not_null($img)) ? '<img src="'.$opt['path_img'].$r['key'].$img_base.'.'.$opt['ext_img'].'"  alt="'.$txt.'" '.sprintf($supp,$r['key'],$img_hover,$img_base).'/>':'';

        print "<li id=\"li_".$r['key']."\" class=\" ".$select."\"><form id=\"lang_".$r['key']."\"  name=\"lang_".$r['key']."\" action=\"".$d."\" method=\"post\" >";
        print "<input type='hidden' name='lang' value='".$r['key']."' />";
        print '<a id="bouton_'.$r['key'].'" class=" '.$select.'"  lang="'.$r['key'].'" href="#" onclick="document.lang_'.$r['key'].'.submit();"  style="width:inherit;" '.$js_supp.'><span style="'.$dip.'">'.$i/*$txt*/.'</span>'. $i."</a></form></li>";
    }
    print "</ul>\n";
}


/**
* Construction des sortie de rubriques, constructeur de la  list les element enfant de la rubrique, avec ou sans option
  @author oscim
  @version 1.9
*/
 function list_rub_sortie($element, $op){
   global $cstr;

     /* option */
     $type_sortie=@$op['type_s'];
     $js=@$op['js_format'];
     $img_defaut_post=@$op['img_defaut_post'];
     $class=@$op['class'];
     $random=(isset($op['random']))? true : false;
     $view_titre=(isset($op['view_titre_posts']) && $op['view_titre_posts']!='true') ? false : true ;
     $view_nav=(isset($op['view_nav'])&&$op['view_nav']!='true') ? false : true ;
     $view_posts=(isset($op['view_posts'])&&$op['view_posts']!='true') ? false : true ;
     $text_view_article=(isset($op['text_view_article']))? $op['text_view_article'] :VOIR_ARTICLE ;
     $text_rub_empty=(isset($op['text_rub_empty']))? $op['text_rub_empty'] :RUB_DEFAULT_EMPTY ;
     $f_titre=(isset($op['f_titre']) && tep_not_null($op['f_titre'])) ? $op['f_titre'] : "<h3 class=\"%1\$s\" ><a href=\"%2\$s\" title=\"%3\$s\" %4\$s >%5\$s</a></h3>" ;
     $f_block_txt=(isset($op['f_block_txt']) && tep_not_null($op['f_block_txt'])) ? $op['f_block_txt'] : "<div id=\"%1\$s\" class=\"%2\$s\">" ;

     $compt=0;
     $count_e=count($element);

     if (is_array($element) && tep_not_null($element)) {
         reset($element);
       if($random)shuffle($element);
//        print_r($element);
       while ($row = each($element)){
         $val=$row['value']['path'];
         $val_sans_lg=$row['value']['href'];
         if (!is_dir(REP_DATA.$val)){
           $path=$row['value']['href'];
           $href=$row['value']['href'];
           $title=(isset($row['value']['title_'.LANG_VIEW]))?$row['value']['title_'.LANG_VIEW] : basename($row['value']['path']);
           /* affiche titre */
           if($view_titre) printf($f_titre,' post min title ',$href,nett_acen($text_view_article),sprintf($js,$href), $title);

           switch ($type_sortie){

          //! mode menu , sortie sur format
            case 'menu':
              $for01=(isset($op['format_ss_menu'])) ?   $op['format_ss_menu'] : "<li %1\$s><a href=\"%2\$s\" title=\"%3\$s\" %4\$s >%5\$s</a></li>";
              $s_printH=$cstr->_call('page','arry_dest');
              if (menu_selected($s_printH,$href)) printf($for01,$class.' item_'.$compt.' '.$op['rubrique'].' select '.$row['key'],$href,nett_acen($text_view_article),sprintf($js,$href), nett_acen($title));
              else printf($for01,$class.' item_'.$compt.' '.$op['rubrique'].' '.$row['key'],$href,nett_acen($text_view_article),sprintf($js,$href), nett_acen($title));
            break;

         //! mode prem_img, recuper image du post
            case 'prem_img':
             $raw=file_get_contents(REP_DATA.$val.".xml");
             if (($raw)&&eregi("<img(.*)></img>",$raw,$rawitems)){
                 eregi(".*src=\"(.*)\".*",$rawitems[1],$reg);
                 $src=(isset($reg[1])) ? $reg[1] : $img_defaut_post;
             }
             if (tep_not_null($src))print ' <a href="'.$href.'" title="'.nett_acen($text_view_article).'" '.sprintf($js,$href).'><img src="'.$src.'" alt="'.'" /></a> ';
             $src='';
            break;

        //! mode normal
            default:
             if($view_posts){
               printf($f_block_txt,str_replace("/","_",$row['key']),' post min content');
                one_post($val);
               print '</div>';
             }
             if($view_nav)
              print '<div class="nav"><hr class="nav" />'
                     .'<a href="'.$href.'" title="'.nett_acen($text_view_article).'">'.nett_acen($text_view_article).'</a>'
                     .'</div>';
           }
         }
         unset($val);
         $compt++;
         if(isset($op['max']) && $compt>=$op['max']) break;
       }
     } else if (!empty($text_rub_empty)) printf("<p>%1\$s</p>",$text_rub_empty);
 }

/**
 * production d'un affiache avec precedent et suivant des elment d'une rubrique
   @author oscim
   @version 2.7
   @arg $page_fixe,$next='' (recoit txt ou balsie img), $prev='' (recoit txt ou balsie img), $js='' (evenement js),$depart_rub=0 (destination bouton suivant sur rubrique)
*/
 function suiv_prev_article($page_fixe,$next='', $prev='', $js='',$depart_rub=0){
     $compt=0;
     $s_next = (!empty($next)) ?$next : nett_acen(VOIR_SUIV);
     $s_prev= (!empty($prev)) ?$prev : nett_acen(VOIR_PREV);

     if (is_dir(REP_DATA.$page_fixe['dest'])) $page_fixe['rubrique']=eregi_replace("(.*/)*","",$page_fixe['dest']);
     $page_fixe['rubrique']=eregi_replace("/$","",$page_fixe['rubrique']);
     $element=NewFct('element_rub_unique_default',$page_fixe['rubrique'],"%2\$s%3\$s",'',array('force_liste_rub'=>true));
     $e=count($element);
     while ($row = each($element)){
         $val=eregi_replace("(".URL_DU_SITE."|mailto:|[?]|\.[a-z0-9]{3,4})",'',$row['value']);
         $d[$compt]=$val;
         if ($page_fixe['dest']==$val) {
             $c=$compt;
             $prev=  ($compt-1);
             $suiv=  $compt+1;
             $bingo=true;
         }
         elseif ($page_fixe['rubrique']==eregi_replace("(.*/)*","",$page_fixe['dest'])){
             $bingo=true;
             $c=  0;
             $suiv=$depart_rub;
         }
         $compt++;
     }
     if (isset($bingo)){
         print '<div class="nav" id="prev_suiv_nav"><hr class="nav" />';
         if ($c>0) print ' <a href="'.tep_url_link($d[$prev]).'" title="'.nett_acen(VOIR_PREV).'" '.sprintf($js,tep_url_link($d[$prev])).' style="float:left;">'.sprintf($s_prev,nett_acen(VOIR_PREV)).'</a> ';
         if ($c<$e-1) print' <a href="'.tep_url_link($d[$suiv]).'" title="'.nett_acen(VOIR_SUIV).'" '.sprintf($js,tep_url_link($d[$suiv])).' style="float:right;">'.sprintf($s_next,nett_acen(VOIR_PREV)).'</a> ';
         print '</div>';
     }
 }

/**
 *  production d'un affiache des elment d'une rubrique avec uniquement img + lien + titre ;
   @author oscim
   @version 1.5
   @arg $js >> evenement js ; $depart_rub >> destination bouton suivant sur rubrique
*/
 function listing_img_rub($page_fixe, $js='',$depart_rub=0){
     $compt=0;
     if (is_dir(REP_DATA.$page_fixe['dest'])) $page_fixe['rubrique']=eregi_replace("(.*/)*","",$page_fixe['dest']);
     $page_fixe['rubrique']=eregi_replace("/$","",$page_fixe['rubrique']);
     /* exec */
             $element=NewFct('element_rub_unique_default',$page_fixe['rubrique'],"%2\$s%3\$s",'',false, array('force_liste_rub'=>true,'config_rubrique'=>array('max'=>''),'force_file_dater'=>'false') );
     print "<div id=\"listing_img_rub\">";
     list_rub_sortie($element, array('type_s' => 'prem_img'));
     print "</div>";
 }



/**
 * Sortie des artile de la rubriques cf wiki
   @author oscim
   @version 1.3
*/
 function list_rub_avec_post($op){
   global $cstr;
     /* option */
// print_r($op);
     if(!isset($op['rubrique'])) return false;
//      $max=$op['max']; // sortie de boucle dans le while, recup complete
     $type_sortie=@$op['type_s'];
     $force_file_dater=@$op['force_file_dater'];
     $date_posts=@$op['date_posts'];
     $img_defaut_post=@$op['img_defaut_post'];
     $view_titre=(isset($op['view_titre_posts']) && $op['view_titre_posts']!='true') ? false : true ;
     $view_nav=(isset($op['view_nav'])&&$op['view_nav']!='true') ? false : true ;
     $view_posts=(isset($op['view_posts'])&&$op['view_posts']!='true') ? false : true ;
     $text_view_article=(isset($op['text_view_article']))? $op['text_view_article'] :VOIR_ARTICLE ;
     /* exec */
     $element=NewFct('element_rub_unique_default',$op['rubrique'],"%2\$s%3\$s",'',true, array('force_liste_rub'=>true,'config_rubrique'=>array('max'=>@$max),'force_file_dater'=>$force_file_dater, 'date_posts'=>$date_posts) );
// print_r($element);
     list_rub_sortie($element, $op);
 }


/**
 true/false si la rubrique, existe
 @author oscim
 @version 1.1
  @param
    @a array le $result de la p
     @a string $value:: le nom de la rubrique de comparaison
*/
function is_rubrique($s, $value=''){
  global $cstr;
  if($cstr->_call('rubrique','is_rubrique',$value)) return true;
  else return false;
}

/**
 true/false si on est en entete de rubrique,
 @author oscim
 @version 1.1
  @param
    @a array le $result de la p
     @a string vlaue:: le nom de la rubrique de comparaison
*/
function is_home_rubrique($s, $value=''){
  if (isset($s['rubrique']) && tep_not_null($s['rubrique']) && ( $s['rubrique']==$s['dest_ss_lg'] OR $s['dest_ss_lg']==$value)) return true;
  else return false;
}

/**
 true/false  si on est dans une rubrique Mode rubrique
 @author oscim
 @version 2.0
 @param
  @a array le $result de la p
*/
function in_rubrique($s){
   if (isset($s['rubrique']) && !empty($s['rubrique'])) return true;
   else return false;
}


/**
 true/false si on est dans la rub precisé, ou dans ses enfants. False sinon
 @author oscim
 @version 1.0
  @param
    @a array le $result de la p
    @a string vlaue:: le nom de la rubrique parent ou enfants
*/
function is_in_rubrique($s, $value){
     if (isset($s['rubrique']) && tep_not_null($s['rubrique']) &&
       ( ($s['rubrique']==$value) OR  (in_array($value,array_merge(explode('/',$s['rubrique']),explode('/',$s['dest_ss_lg']) )) ) ) ) return true;
     else return false;
}


/**
 * appel element (ou enfant) de la rubrique (en cours| precisé)
   @author oscim
   @version 2.0
   @param
   @a string params html for ul
*/
 function appel_menu_rub($param='',$option=''){
  global $cstr;

  $k=$cstr->_call_var('page','rubri');
  if(!is_array($option))$option=array();

  if (isset($k['keyrub']) || isset($option['keyrub']) ) {
  /**  la clef de la rubriques , peut être fournis par une option, celle ci est prioritaire */
    $option['rubrique']=( is_rubrique($k, @$option['keyrub']) ?$option['keyrub'] :$k['keyrub']);
    $option['max']=5; /** nbr d'element affiché */
    $option['type_s']=(isset($option['type_s']))? $option['type_s']:'menu'; /** normal | prem_img | menu */
    $option['text_view_article']=''; /** Texte pour voir la suite de l'articles  */
    $option['view_titre_posts']=(isset($option['view_titre_posts']))? $option['view_titre_posts']:'false'; /** Block sortie titre en h3 de chaque post */
    $option['text_rub_empty']=''; /** Block retour info liste vide*/
//     print '<ul>';
    list_rub_avec_post($option);
//     print '</ul>';
  }
}

/**
  Appel d'un menu specifique
*/
function draw_menu($menu){
  global $cstr;
  $opt['s_printH']=$s; /* transmission var etat page founi constructeur assure detection element selectionné */
  $opt['menu_specifique']=$menu; /* Nom du menu */
  // $opt['sepration']='&nbsp;|&nbsp;'; /* caractère de séparation des éléments */
  $opt['profondeur']=1;
  $opt['s_printH']['rubrique']=$menu; //'menucapital';

  /* Affiche le menu principal. prend en charge les sous menu, cf configurations */
  $cstr->_add_class('menu',"include/lib/class/class.menu.php");
  $cstr->_call('menu','init',$opt);
}

/**
  Appel one post
  @param
    @a string chemin complet depuis racine
*/
function one_post($val){
  global $cstr;
  $cstr->_add_class('xml_parser',"include/lib/class/class.xml_parser.php",REP_DATA.$val.'.xml');
  $cstr->_call('xml_parser','analyser');
}
?>