Fork me on GitHub

Rapport de message :*
 

Re: Modules ne fonctionnant pas avec Xoops 2.3

Titre du sujet : Re: Modules ne fonctionnant pas avec Xoops 2.3
par nendo sur 27/12/2008 14:20:09

Bonjour

Essaye avec ce code. Prend le fichier xoopstree.php qui se trouve dans le dossier class et remplace le code par celui ci-dessous.

Fait quand même une copie de xoopstree.php original avant de faire la modification !!!.

<?php
// $Id: xoopstree.php 1252 2008-01-13 17:48:35Z dugris $
//  ------------------------------------------------------------------------ //
//                XOOPS - PHP Content Management System                      //
//                    Copyright (c) 2000 XOOPS.org                           //
//                       <http://www.xoops.org/>   ... nbsp;   //
//  ------------------------------------------------------------------------ //
//  This program is free software; you can redistribute it and/or modify     //
//  it under the terms of the GNU General Public License as published by     //
//  the Free Software Foundation; either version 2 of the License, or        //
//  (at your option) any later version.                                      //
//                                                                           //
//  You may not change or alter any portion of this comment or credits       //
//  of supporting developers from this source code or any supporting         //
//  source code which is considered copyrighted (c) material of the          //
//  original comment or credit authors.                                      //
//                                                                           //
//  This program is distributed in the hope that it will be useful,          //
//  but WITHOUT ANY WARRANTY; without even the implied warranty of           //
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            //
//  GNU General Public License for more details.                             //
//                                                                           //
//  You should have received a copy of the GNU General Public License        //
//  along with this program; if not, write to the Free Software              //
//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA //
//  ------------------------------------------------------------------------ //
// Author: Kazumi Ono (AKA onokazu)                                          //
// URL: http://www.myweb.ne.jp/http://www.xoops.org/http://jp.xoops.org/ //
// Project: The XOOPS Project                                                //
// ------------------------------------------------------------------------- //

class XoopsTree
{
    var 
$table;     //table with parent-child structure
    
var $id;    //name of unique id for records in table $table
    
var $pid;     // name of parent id used in table $table
    
var $order;    //specifies the order of query results
    
var $title;     // name of a field in table $table which will be used when  selection box and paths are generated
    
var $db;

    
//constructor of class XoopsTree
    //sets the names of table, unique id, and parend id
    
function XoopsTree($table_name$id_name$pid_name)
    {
        
$this->db =& Database::getInstance();
        
$this->table $table_name;
        
$this->id $id_name;
        
$this->pid $pid_name;
    }


    
// returns an array of first child objects for a given id($sel_id)
    
function getFirstChild($sel_id$order="")
    {
        
$sel_id intval($sel_id);
        
$arr =array();
        
$sql "SELECT * FROM ".$this->table." WHERE ".$this->pid."=".$sel_id."";
        if ( 
$order != "" ) {
            
$sql .= " ORDER BY $order";
        }
        
$result $this->db->query($sql);
        
$count $this->db->getRowsNum($result);
        if ( 
$count==) {
            return 
$arr;
        }
        while ( 
$myrow=$this->db->fetchArray($result) ) {
            
array_push($arr$myrow);
        }
        return 
$arr;
    }

    
// returns an array of all FIRST child ids of a given id($sel_id)
    
function getFirstChildId($sel_id)
    {
        
$sel_id intval($sel_id);
        
$idarray =array();
        
$result $this->db->query("SELECT ".$this->id." FROM ".$this->table." WHERE ".$this->pid."=".$sel_id."");
        
$count $this->db->getRowsNum($result);
        if ( 
$count == ) {
            return 
$idarray;
        }
        while ( list(
$id) = $this->db->fetchRow($result) ) {
            
array_push($idarray$id);
        }
        return 
$idarray;
    }

    
//returns an array of ALL child ids for a given id($sel_id)
    
function getAllChildId($sel_id$order=""$idarray = array())
    {
        
$sel_id intval($sel_id);
        
$sql "SELECT ".$this->id." FROM ".$this->table." WHERE ".$this->pid."=".$sel_id."";
        if ( 
$order != "" ) {
            
$sql .= " ORDER BY $order";
        }
        
$result=$this->db->query($sql);
        
$count $this->db->getRowsNum($result);
        if ( 
$count==) {
            return 
$idarray;
        }
        while ( list(
$r_id) = $this->db->fetchRow($result) ) {
            
array_push($idarray$r_id);
            
$idarray $this->getAllChildId($r_id,$order,$idarray);
        }
        return 
$idarray;
    }

    
//returns an array of ALL parent ids for a given id($sel_id)
    
function getAllParentId($sel_id$order=""$idarray = array())
    {
        
$sel_id intval($sel_id);
        
$sql "SELECT ".$this->pid." FROM ".$this->table." WHERE ".$this->id."=".$sel_id."";
        if ( 
$order != "" ) {
            
$sql .= " ORDER BY $order";
        }
        
$result=$this->db->query($sql);
        list(
$r_id) = $this->db->fetchRow($result);
        if ( 
$r_id == ) {
            return 
$idarray;
        }
        
array_push($idarray$r_id);
        
$idarray $this->getAllParentId($r_id,$order,$idarray);
        return 
$idarray;
    }

    
//generates path from the root id to a given id($sel_id)
    // the path is delimetered with "/"
    
function getPathFromId($sel_id$title$path="")
    {
        
$sel_id intval($sel_id);
        
$result $this->db->query("SELECT ".$this->pid.", ".$title." FROM ".$this->table." WHERE ".$this->id."=$sel_id");
        if ( 
$this->db->getRowsNum($result) == ) {
            return 
$path;
        }
        list(
$parentid,$name) = $this->db->fetchRow($result);
        
$myts =& MyTextSanitizer::getInstance();
        
$name $myts->makeTboxData4Show($name);
        
$path "/".$name.$path."";
        if ( 
$parentid == ) {
            return 
$path;
        }
        
$path $this->getPathFromId($parentid$title$path);
        return 
$path;
    }

    
//makes a nicely ordered selection box
    //$preset_id is used to specify a preselected item
    //set $none to 1 to add a option with value 0
    
function makeMySelBox($title,$order="",$preset_id=0$none=0$sel_name=""$onchange="")
    {
        if ( 
$sel_name == "" ) {
            
$sel_name $this->id;
        }
        
$myts =& MyTextSanitizer::getInstance();
        echo 
"<select name='".$sel_name."'";
        if ( 
$onchange != "" ) {
            echo 
" onchange='".$onchange."'";
        }
        echo 
">n";
        
$sql "SELECT ".$this->id.", ".$title." FROM ".$this->table." WHERE ".$this->pid."=0";
        if ( 
$order != "" ) {
            
$sql .= " ORDER BY $order";
        }
        
$result $this->db->query($sql);
        if ( 
$none ) {
            echo 
"<option value='0'>----</option>n";
        }
        while ( list(
$catid$name) = $this->db->fetchRow($result) ) {
            
$sel "";
            if ( 
$catid == $preset_id ) {
                
$sel " selected='selected'";
            }
            echo 
"<option value='$catid'$sel>$name</option>n";
            
$sel "";
            
$arr $this->getChildTreeArray($catid$order);
            foreach ( 
$arr as $option ) {
                
$option['prefix'] = str_replace(".","--",$option['prefix']);
                
$catpath $option['prefix']."&nbsp;".$myts->makeTboxData4Show($option[$title]);
                if ( 
$option[$this->id] == $preset_id ) {
                    
$sel " selected='selected'";
                }
                echo 
"<option value='".$option[$this->id]."'$sel>$catpath</option>n";
                
$sel "";
            }
        }
        echo 
"</select>n";
    }

    
//generates nicely formatted linked path from the root id to a given id
    
function getNicePathFromId($sel_id$title$funcURL$path="")
    {
      
$path = !empty($path) ? "&nbsp;:&nbsp;" $path $path;
        
$sel_id intval($sel_id);
        
$sql "SELECT ".$this->pid.", ".$title." FROM ".$this->table." WHERE ".$this->id."=$sel_id";
        
$result $this->db->query($sql);
        if ( 
$this->db->getRowsNum($result) == ) {
            return 
$path;
        }
        list(
$parentid,$name) = $this->db->fetchRow($result);
        
$myts =& MyTextSanitizer::getInstance();
        
$name $myts->makeTboxData4Show($name);
        
$path "<a href='".$funcURL."&amp;".$this->id."=".$sel_id."'>".$name."</a>".$path."";
        if ( 
$parentid == ) {
            return 
$path;
        }
        
$path $this->getNicePathFromId($parentid$title$funcURL$path);
        return 
$path;
    }

    
//generates id path from the root id to a given id
    // the path is delimetered with "/"
    
function getIdPathFromId($sel_id$path="")
    {
        
$sel_id intval($sel_id);
        
$result $this->db->query("SELECT ".$this->pid." FROM ".$this->table." WHERE ".$this->id."=$sel_id");
        if ( 
$this->db->getRowsNum($result) == ) {
            return 
$path;
        }
        list(
$parentid) = $this->db->fetchRow($result);
        
$path "/".$sel_id.$path."";
        if ( 
$parentid == ) {
            return 
$path;
        }
        
$path $this->getIdPathFromId($parentid$path);
        return 
$path;
    }

    function 
getAllChild($sel_id=0,$order="",$parray = array())
    {
        
$sel_id intval($sel_id);
        
$sql "SELECT * FROM ".$this->table." WHERE ".$this->pid."=".$sel_id."";
        if ( 
$order != "" ) {
            
$sql .= " ORDER BY $order";
        }
        
$result $this->db->query($sql);
        
$count $this->db->getRowsNum($result);
        if ( 
$count == ) {
            return 
$parray;
        }
        while ( 
$row $this->db->fetchArray($result) ) {
            
array_push($parray$row);
            
$parray=$this->getAllChild($row[$this->id],$order,$parray);
        }
        return 
$parray;
    }

    function 
getChildTreeArray($sel_id=0,$order="",$parray = array(),$r_prefix="")
    {
        
$sel_id intval($sel_id);
        
$sql "SELECT * FROM ".$this->table." WHERE ".$this->pid."=".$sel_id."";
        if ( 
$order != "" ) {
            
$sql .= " ORDER BY $order";
        }
        
$result $this->db->query($sql);
        
$count $this->db->getRowsNum($result);
        if ( 
$count == ) {
            return 
$parray;
        }
        while ( 
$row $this->db->fetchArray($result) ) {
            
$row['prefix'] = $r_prefix.".";
            
array_push($parray$row);
            
$parray $this->getChildTreeArray($row[$this->id],$order,$parray,$row['prefix']);
        }
        return 
$parray;
    }
}
?>


A+
Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

146 Personne(s) en ligne (129 Personne(s) connectée(s) sur Forum) | Utilisateur(s): 0 | Invité(s): 146 | Plus ...