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($classENT_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->renderValidationJStrue );
        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==) {
            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) ? $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."&".$this->id."=".$sel_id."'>".$name."</a>&nbsp;:&nbsp;".$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;
    }
}
?>

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_idtime(), $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(1100) < 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 md5uniqid(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==) {
            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) ? $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) == ) {
            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 == ) {
            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;
    }
}
?>


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: 11366

  • 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.10 | Docs | Modules | Bugs

Login

Who's Online

233 user(s) are online (149 user(s) are browsing Support Forums)


Members: 0


Guests: 233


more...

Donat-O-Meter

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

Latest GitHub Commits