<?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
*/
/**
  Index des article et rubrique
  Affichage list sur admin

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

*/

error_reporting(E_ALL);
class db_rubrique  extends db{

  /**
    Tableau des fichier présents
  */
  var $files;


  function db_rubrique(){
    /**
      Recup db php detail des posts
    */
    $rubrique=$this->add_tbl_php(ADD_PATH_ADMIN.TBL_MODULE_RUBRIQUE_INC,'rubrique');
    $this->cat['racine']=array('key'=>'','base'=>'', 'path'=>'/', 'titre_'.LANG_POST=>RACINE_DATA);
    if(isset($rubrique) && is_array($rubrique))
    while ($rows =each($rubrique) ){
      $this->cat[$rows['key']]=$rubrique[$rows['key']];
      $this->cat[$rows['key']]['key']=$rows['key'];
    }

    $this->modele_db=array(
                'base'=> array( "auto"=>FORM_S_OP_AUTO, "inv_auto"=>FORM_S_OP_INV_AUTO, "normal_key"=>FORM_S_OP_N_KEY, "inv_normal_key"=>FORM_S_OP_INV_N_KEY) ,
                'path'=> 'text',
                'ss_rubrique'=> array( "auto" =>FORM_S_OP_C_AUTO, "file" =>FORM_S_OP_C_FILE ) ,
                'max'=>'numeric ',
            /** Colonne utiliser suffixer par la lang titre_fr ne preciser que le prefix */
                'lang'=> array(
                      'titre' => 'text',
                      'descri'=> 'text',
                      'tag'=> 'text'
                       )

               );

    $this->key_tbl_php='rubrique';
  }



  /**
    Creation de repertoire mutliple liée au lang
    @a string path rubrique (sans la lang)
  */
  /*private*/ function mkdir_rep_multi ($rub){
    $lg=appel_lang();
    $s='';
    while ($r=each($lg)){
      if(!tep_mkdir(ADD_PATH_ADMIN.REP_DATA.$r['key'].'/'.$rub)) $cstr->_call('message_stack','add_session',CREATE_REP_RUB_NOT_OK,'erreur');
    }
    return $s;
  }


  /**
    recuperation des elements des categories
    @param
      @p array db cat
      @a string (option) key categorie
  */
  /*public*/ function db_cat($key_cat=''){
    if (isset($this->cat[$key_cat])) return $this->cat[$key_cat];
    return $this->cat;
  }


  /**
    Affichage rubriques articles in select
    @param
      @a string $rep key rubrique actuel (page edition uniquement)
      @a string params html
      @a bollean  just_array pour un retour tableau uniquement
  */
  /*public*/ function c_cat($rep,$params='',$just_array=false){
    $arryData='';
    $cat_s=$this->db_cat($rep);
    foreach($this->db_cat() as $k=>$v){
      $arryData[$v['path']]=(isset($v['titre_'.LANG_POST]) && tep_not_null($v['titre_'.LANG_POST])) ? $v['titre_'.LANG_POST] : $k;
    }
    if (!$just_array) return input_select('file_rep',$arryData,@$cat_s['path'],$params);
    else return $arryData;
  }


  /**
    Add/up d'une cat
  @param
    @a string ckey de rubrique (new)
    @a string chek de rub (bak)
    @a array tableau retour des post
  */
  public function up_cat($new_key,$bak_key,$array){

    foreach($array as $k=>$v)
       if ($k =='lang') $this->add_array($this->prepa_lang($v));
       else $this->add_item($k,$v);

    $chemin = ( !preg_match( "/^.*\/$/", $array['rub_parent'] ) )? $array['rub_parent'].'/' : $array['rub_parent'];
    $path=$chemin.$new_key;

    $this->add_item('path',$path);

    $this->sync_db($new_key,$bak_key,$this->test_key_cat($new_key),$this->db_cat($new_key), TBL_MODULE_RUBRIQUE_INC, LANG_POST);
    //! add folder
    $this->mkdir_rep_multi($path);
  }

  /**
    Test la key de la cat
  */
  /*private*/ function test_key_cat($key_cat=''){
    if (isset($this->cat[$key_cat])) return true;
    return false;
  }

  /**
    Supp d'une entrée complete ds db
    @a string key a supp
  */
  public function del_item_db($key){
    $query =" DELETE FROM  ".TBL_MODULE_RUBRIQUE_INC." WHERE id  = '".$key."' ";
    return sql ('',ADD_PATH_ADMIN.TBL_MODULE_RUBRIQUE_INC,'rubrique',$query,'');
  }

  /**
    Supp reel des rep de maniere recursive + multilangue
  */
  public function del_dir_cat($path){
    $lg=appel_lang();
    while ($r=each($lg)){
     NewFct('advRmDir',ADD_PATH_ADMIN. REP_DATA.$r['key'].$path,true);
    }
  }

  /**
    Debugg
  */
  /*public*/ function debugg(){
      print_r($this);
  }
}

?>