<?php
// $Id: xoopstree.php 1099 2007-10-19 01:08:14Z dugris $
// ------------------------------------------------------------------------ //
// XOOPS - PHP Content Management System //
// Copyright (c) 2000 XOOPS.org //
// <https://xoops.org/> //
// ------------------------------------------------------------------------ //
// 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/, https://xoops.org/, http://www.xoopscube.jp/ //
// 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==0 ) {
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 == 0 ) {
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==0 ) {
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 == 0 ) {
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) == 0 ) {
return $path;
}
list($parentid,$name) = $this->db->fetchRow($result);
$myts =& MyTextSanitizer::getInstance();
$name = $myts->makeTboxData4Show($name);
$path = "/".$name.$path."";
if ( $parentid == 0 ) {
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']." ".$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) ? $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) == 0 ) {
return $path;
}
list($parentid,$name) = $this->db->fetchRow($result);
$myts =& MyTextSanitizer::getInstance();
$name = $myts->makeTboxData4Show($name);
$path = "<a
href='".$funcURL."&".$this->id."=".$sel_id."'>".$name."</a> : ".$path."";
if ( $parentid == 0 ) {
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) == 0 ) {
return $path;
}
list($parentid) = $this->db->fetchRow($result);
$path = "/".$sel_id.$path."";
if ( $parentid == 0 ) {
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 == 0 ) {
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 == 0 ) {
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;
}
}
?>
<?php
// $Id: themeform.php 1158 2007-12-08 06:24:20Z phppp $
// ------------------------------------------------------------------------ //
// XOOPS - PHP Content Management System //
// Copyright (c) 2000 XOOPS.org //
// <https://xoops.org/> //
// ------------------------------------------------------------------------ //
// 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/, https://xoops.org/, http://www.xoopscube.jp/ //
// Project: The XOOPS Project //
// ------------------------------------------------------------------------- //
if (!defined('XOOPS_ROOT_PATH')) {
die("XOOPS root path not defined");
}
/**
*
*
* @package kernel
* @subpackage form
*
* @author Kazumi Ono <onokazu@xoops.org>
* @copyright copyright (c) 2000-2003 XOOPS.org
*/
/**
* base class
*/
include_once XOOPS_ROOT_PATH."/class/xoopsform/form.php";
/**
* Form that will output as a theme-enabled HTML table
*
* Also adds JavaScript to validate required fields
*
* @author Kazumi Ono <onokazu@xoops.org>
* @copyright copyright (c) 2000-2003 XOOPS.org
*
* @package kernel
* @subpackage form
*/
class XoopsThemeForm extends XoopsForm
{
/**
* Insert an empty row in the table to serve as a seperator.
*
* @param string $extra HTML to be displayed in the empty row.
* @param string $class CSS class name for <td> tag
*/
function insertBreak($extra = '', $class= '')
{
$class = ($class != '') ? " class='".htmlspecialchars($class, ENT_QUOTES)."'" : '';
//Fix for $extra tag not showing
if ($extra) {
$extra = "<tr><td colspan='2' $class>$extra</td></tr>";
$this->addElement($extra);
} else {
$extra = "<tr><td colspan='2' $class> </td></tr>";
$this->addElement($extra);
}
}
/**
* create HTML to output the form as a theme-enabled table with validation.
*
* @return string
*/
function render()
{
$ele_name = $this->getName();
$ret = "
<form name='".$ele_name."' id='".$ele_name."' action='".$this->getAction()."' method='".$this->getMethod()."' onsubmit='return xoopsFormValidate_".$ele_name."();'".$this->getExtra().">
<table width='100%' class='outer' cellspacing='1'>
<tr><th colspan='2'>".$this->getTitle()."</th></tr>
";
$hidden = '';
$class ='even';
foreach ( $this->getElements() as $ele ) {
if (!is_object($ele)) {
$ret .= $ele;
} elseif ( !$ele->isHidden() ) {
$ret .= "<tr valign='top' align='left'><td class='head'>";
if ( ($caption = $ele->getCaption()) != '' ) {
$ret .=
"<div class='xoops-form-element-caption" . ($ele->isRequired() ? "-required" : "" ) . "'>".
"<span class='caption-text'>{$caption}</span>".
"<span class='caption-marker'>*</span>".
"</div>";
}
if ( ($desc = $ele->getDescription()) != '' ) {
$ret .= "<div class='xoops-form-element-help'>{$desc}</div>";
}
$ret .= "</td><td class='$class'>".$ele->render()."</td></tr>n";
} else {
$hidden .= $ele->render();
}
}
$ret .= "</table>n$hiddenn</form>n";
$ret .= $this->renderValidationJS( true );
return $ret;
}
}
?>
// XOOPS Physical Path
// Physical path to your main XOOPS directory WITHOUT trailing slash
// Example: define('XOOPS_ROOT_PATH', 'C:/wamp/www/xoops');
define('XOOPS_ROOT_PATH', 'C:/wamp/www/xoops');
// XOOPS Virtual Path (URL)
// Virtual path to your main XOOPS directory WITHOUT trailing slash
// Example: define('XOOPS_URL', 'http://localhost/xoops');
define('XOOPS_URL', 'http://localhost/xoops');
nakastarnet wrote:
Problem
Non-reporting of installation files modules smartmedia
And xfguestbook
In the control panel
Please help
Thank you