1
script_fu
What else is wrong with 2.0.18? When is the patch going to be ready? Issues Issues...

There seems to be some issues with 2.0.18 as mention in this thread?

https://xoops.org/modules/news/article.php?storyid=4083

I went thru what was posted and I am still having problems with 2.0.18.

Is there any other issues with the last release that I missed.

Maybe somebody can post all known issues to this thread with the resolution.

2
script_fu
Re: When is the 2.0.18 patch going to be ready? Issues Issues...

Does this file need to be replaced?

Replace class/xoopsform/themeform.php

with this

<?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>&nbsp;</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; } } ?>

3
script_fu
Re: When is the 2.0.18 patch going to be ready? Issues Issues...

Does this file need replaced?

class/xoopstree.php

with this

<?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']."&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) ? $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>&nbsp;:&nbsp;".$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; } } ?>

4
script_fu
Re: When is the 2.0.18 patch going to be ready? Issues Issues...

What else is wrong with 2.0.18???

These two still have not solved my blank page in piCal... err

5
script_fu
Re: When is the 2.0.18 patch going to be ready? Issues Issues...

login issues

Does this file need replaced?

kernel/session.php

with this

<?php // $Id: session.php 1083 2007-10-16 16:42:51Z 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 // // ------------------------------------------------------------------------- // /** * @package kernel * * @author Kazumi Ono <onokazu@xoops.org> * @copyright copyright (c) 2000-2003 XOOPS.org */ /** * Handler for a session * @package kernel * * @author Kazumi Ono <onokazu@xoops.org> * @copyright copyright (c) 2000-2003 XOOPS.org */ class XoopsSessionHandler { /** * Database connection * * @var object * @access private */ var $db; /** * Security checking level * * Possible value: * 0 - no check; * 1 - check browser characteristics (HTTP_USER_AGENT/HTTP_ACCEPT_LANGUAGE), to be implemented in the future now; * 2 - check browser and IP A.B; * 3 - check browser and IP A.B.C, recommended; * 4 - check browser and IP A.B.C.D; * * @var int * @access public */ var $securityLevel = 3; /** * Enable regenerate_id * * @var bool * @access public */ var $enableRegenerateId = false; /** * Constructor * * @param object $db reference to the {@link XoopsDatabase} object * */ function XoopsSessionHandler(&$db) { $this->db =& $db; } /** * Open a session * * @param string $save_path * @param string $session_name * * @return bool */ function open($save_path, $session_name) { return true; } /** * Close a session * * @return bool */ function close() { $this->gc_force(); return true; } /** * Read a session from the database * * @param string &sess_id ID of the session * * @return array Session data */ function read($sess_id) { $sql = sprintf('SELECT sess_data, sess_ip FROM %s WHERE sess_id = %s', $this->db->prefix('session'), $this->db->quoteString($sess_id)); if (false != $result = $this->db->query($sql)) { if (list($sess_data, $sess_ip) = $this->db->fetchRow($result)) { if ($this->securityLevel > 1) { $pos = strpos($sess_ip, ".", $this->securityLevel - 1); if (strncmp($sess_ip, $_SERVER['REMOTE_ADDR'], $pos)) { $sess_data = ''; } } return $sess_data; } } return ''; } /** * Write a session to the database * * @param string $sess_id * @param string $sess_data * * @return bool **/ function write($sess_id, $sess_data) { $sess_id = $this->db->quoteString($sess_id); $sql = sprintf('UPDATE %s SET sess_updated = %u, sess_data = %s WHERE sess_id = %s', $this->db->prefix('session'), time(), $this->db->quoteString($sess_data), $sess_id); $this->db->queryF($sql); if (!$this->db->getAffectedRows()) { $sql = sprintf('INSERT INTO %s (sess_id, sess_updated, sess_ip, sess_data) VALUES (%s, %u, %s, %s)', $this->db->prefix('session'), $sess_id, time(), $this->db->quoteString($_SERVER['REMOTE_ADDR']), $this->db->quoteString($sess_data)); return $this->db->queryF($sql); } return true; } /** * Destroy a session * * @param string $sess_id * * @return bool **/ function destroy($sess_id) { $sql = sprintf('DELETE FROM %s WHERE sess_id = %s', $this->db->prefix('session'), $this->db->quoteString($sess_id)); if ( !$result = $this->db->queryF($sql) ) { return false; } return true; } /** * Garbage Collector * * @param int $expire Time in seconds until a session expires * @return bool **/ function gc($expire) { if (empty($expire)) { return true; } $mintime = time() - intval($expire); $sql = sprintf('DELETE FROM %s WHERE sess_updated < %u', $this->db->prefix('session'), $mintime); return $this->db->queryF($sql); } /** * Force gc for situations where gc is registered but not executed **/ function gc_force() { if (rand(1, 100) < 11) { $expiration = empty($GLOBALS["xoopsConfig"]["session_expire"]) ? @ini_get('session.gc_maxlifetime') : $GLOBALS["xoopsConfig"]["session_expire"] * 60; $this->gc($expiration); } } /** * Update the current session id with a newly generated one * * To be refactored * * @param bool $delete_old_session * @return bool **/ function regenerate_id($delete_old_session = false) { if (!$this->enableRegenerateId) { return true; } $phpversion = phpversion(); // parameter "delete_old_session" only available as of PHP 5.1.0 if (version_compare($phpversion, "5.1.0", ">=")) { $success = session_regenerate_id($delete_old_session); } else { $old_session_id = session_id(); // session_regenerate_id function available as of PHP 4.3.2 if (function_exists("session_regenerate_id")) { $success = session_regenerate_id(); if ($success && $delete_old_session) { // Extra step to destroy old session $this->destroy($old_session_id); } // For PHP prior to 4.3.2 } else { // session_regenerate_id is not defined, create new session ID $session_id = md5( uniqid(rand(), true) . @$_SERVER['HTTP_USER_AGENT'] ); // Set the new session ID session_id($session_id); // Destory old session on request if ($delete_old_session) { $this->destroy($old_session_id); // switch old session to new one } else { $sql = sprintf('UPDATE %s SET sess_id = %s WHERE sess_id = %s', $this->db->prefix('session'), $this->db->quoteString($session_id), $this->db->quoteString($old_session_id)); $this->db->queryF($sql); } $success = true; } } // Force updating cookie for session cookie is not issued correctly in some IE versions or not automatically issued prior to PHP 4.3.3 for all browsers if ($success) { $this->update_cookie(); } return $success; } /** * Update cookie status for current session * * To be refactored * FIXME: how about $xoopsConfig['use_ssl'] is enabled? * * @param string $sess_id session ID * @param int $expire Time in seconds until a session expires * @return bool **/ function update_cookie($sess_id = null, $expire = null) { global $xoopsConfig; $session_name = ($xoopsConfig['use_mysession'] && $xoopsConfig['session_name'] != '') ? $xoopsConfig['session_name'] : session_name(); $session_expire = !is_null($expire) ? intval($expire) : ( ($xoopsConfig['use_mysession'] && $xoopsConfig['session_name'] != '') ? $xoopsConfig['session_expire'] * 60 : ini_get("session.cookie_lifetime") ); $session_id = empty($sess_id) ? session_id() : $sess_id; setcookie($session_name, $session_id, $session_expire ? time() + $session_expire : 0, '/', '', 0); } } ?>

6
qcorek
Re: What else is wrong with 2.0.18? When is the patch going to be ready? Issues Issues...
  • 2008/1/24 18:29

  • qcorek

  • Just popping in

  • Posts: 68

  • Since: 2007/10/7


and u really count on some support here :)?

7
Will_H
Re: What else is wrong with 2.0.18? When is the patch going to be ready? Issues Issues...
  • 2008/1/24 19:22

  • Will_H

  • Friend of XOOPS

  • Posts: 1786

  • Since: 2004/10/10


well its 2pm EST, which means its the middle of the night in china. Should be answered by tomorrow if the topic stays on the front page.

8
script_fu
Re: What else is wrong with 2.0.18? When is the patch going to be ready? Issues Issues...

Quote:

qcorek wrote:
and u really count on some support here :)?


Huh? lol...
It was a post to get the ball rolling for 2.0.18.1rc nothing more or less.

As far as support goes I have given my share here thats foresure.

----------



After I did those three above... I was still having problems anyway to make a long story short. Once I turned off php debug piCal started showing again...


So im back on track for this new customer site...

I'll post if I find anything else. This is the first live site I have done with 2.0.18 its like any other release it has its lil qcorek's...

9
McDonald
Re: What else is wrong with 2.0.18? When is the patch going to be ready? Issues Issues...
  • 2008/1/24 21:48

  • McDonald

  • Home away from home

  • Posts: 1072

  • Since: 2005/8/15


Quote:
Does this file need to be replaced?

Replace class/xoopsform/themeform.php


Yes, otherwise the toolbar of tinyeditor gets screwed up and I guess also some other form issues.

Quote:
Does this file need replaced?

class/xoopstree.php


Yes, it gives faulty paths.
This is the correct one:
<?php // $Id$ // ------------------------------------------------------------------------ // // 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']."&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) ? $path . "&nbsp;:&nbsp;" : $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; } } ?>


I understood these issues will be fixed in 2.0.18.1

10
Mamba
Re: When is the 2.0.18 patch going to be ready? Issues Issues...
  • 2008/1/24 22:20

  • Mamba

  • Moderator

  • Posts: 11521

  • Since: 2004/4/23


hmm, I don't have any problems with piCal empty pages. I have updated from 2.0.17.

I also don't have any problems it tinyeditor toolbar.

Software server Apache
PHP version 4.4.7
MySql version 5.0.24

Are these issues related to a specific configurations, or to specific updates (e.g. from 2.0.16 to 2.0.18)?
Support XOOPS => DONATE
Use 2.5.11 | Docs | Modules | Bugs

Who's Online

184 user(s) are online (138 user(s) are browsing Support Forums)


Members: 0


Guests: 184


more...

Donat-O-Meter

Stats
Goal: $15.00
Due Date: Jul 31
Gross Amount: $0.00
Net Balance: $0.00
Left to go: $15.00
Make donations with PayPal!

Latest GitHub Commits