11
noo-b
Re: xoopspolls - show total comment in block
  • 2007/12/27 5:43

  • noo-b

  • Just can't stay away

  • Posts: 456

  • Since: 2007/10/23


this is my edited class/xoopspoll.php..can u check ..did i put the function in the right place ?

<?php
// $Id: xoopspoll.php,v 1.9 2003/10/05 00:34:12 okazu Exp $
//  ------------------------------------------------------------------------ //
//                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                                                //
// ------------------------------------------------------------------------- //
include_once XOOPS_ROOT_PATH."/class/xoopsobject.php";



class 
XoopsPoll extends XoopsObject
{
    var 
$db;

    
//constructor
    
function XoopsPoll($id=null)
    {
        
$this->db =& Database::getInstance();
        
$this->initVar("poll_id"XOBJ_DTYPE_INTnullfalse);
        
$this->initVar("question"XOBJ_DTYPE_TXTBOXnulltrue255);
        
$this->initVar("description"XOBJ_DTYPE_TXTBOXnullfalse255);
        
$this->initVar("user_id"XOBJ_DTYPE_INTnullfalse);
        
$this->initVar("start_time"XOBJ_DTYPE_INTnullfalse);
        
$this->initVar("end_time"XOBJ_DTYPE_INTnulltrue);
        
$this->initVar("votes"XOBJ_DTYPE_INT0false);
        
$this->initVar("voters"XOBJ_DTYPE_INT0false);
        
$this->initVar("display"XOBJ_DTYPE_INT1false);
        
$this->initVar("weight"XOBJ_DTYPE_INT0false);
        
$this->initVar("multiple"XOBJ_DTYPE_INT0false);
        
$this->initVar("mail_status"XOBJ_DTYPE_INT1false);
        if ( !empty(
$id) ) {
            if ( 
is_array($id) ) {
                
$this->assignVars($id);
            } else {
                
$this->load(intval($id));
            }
        }
    }




    
// public
    
function store()
    {
        if ( !
$this->cleanVars() ) {
            return 
false;
        }
        foreach ( 
$this->cleanVars as $k=>$v ) {
            $
$k $v;
        }
        
$start_time = empty($start_time) ? time() : $start_time;
        if ( 
$end_time <= $start_time ) {
            
$this->setErrors("End time must be set to future");
            return 
false;
        }
        if ( empty(
$poll_id) ) {
            
$poll_id $this->db->genId($this->db->prefix("xoopspoll_desc")."_poll_id_seq");
            
$sql "INSERT INTO ".$this->db->prefix("xoopspoll_desc")." (poll_id, question, description, user_id, start_time, end_time, votes, voters, display, weight, multiple, mail_status) VALUES ($poll_id, ".$this->db->quoteString($question).", ".$this->db->quoteString($description).", $user_id$start_time$end_time, 0, 0, $display$weight$multiple$mail_status)";
        } else {
            
$sql ="UPDATE ".$this->db->prefix("xoopspoll_desc")." SET question=".$this->db->quoteString($question).", description=".$this->db->quoteString($description).", start_time=$start_time, end_time=$end_time, display=$display, weight=$weight, multiple=$multiple, mail_status=$mail_status WHERE poll_id=$poll_id";
        }
        
//echo $sql;
        
if ( !$result $this->db->query($sql) ) {
            
$this->setErrors("Could not store data in the database.");
            return 
false;
        }
        if ( empty(
$poll_id) ) {
            return 
$this->db->getInsertId();
        }
        return 
$poll_id;
    }

    
// private
    
function load($id)
    {
        
$sql "SELECT * FROM ".$this->db->prefix("xoopspoll_desc")." WHERE poll_id=".$id."";
        
$myrow $this->db->fetchArray($this->db->query($sql));
        
$this->assignVars($myrow);
    }

    
// public
    
function hasExpired()
    {
        if ( 
$this->getVar("end_time") > time() ) {
            return 
false;
        }
        return 
true;
    }

    
// public
    
function delete()
    {
        
$sql sprintf("DELETE FROM %s WHERE poll_id = %u"$this->db->prefix("xoopspoll_desc"), $this->getVar("poll_id"));
            if ( !
$this->db->query($sql) ) {
            return 
false;
        }
        return 
true;
    }

    
// private, static
    
function &getAll($criteria=array(), $asobject=true$orderby="end_time DESC"$limit=0$start=0)
    {
        
$db =& Database::getInstance();
        
$ret = array();
        
$where_query "";
        if ( 
is_array($criteria) && count($criteria) > ) {
            
$where_query " WHERE";
            foreach ( 
$criteria as $c ) {
                
$where_query .= $c AND";
            }
            
$where_query substr($where_query0, -4);
        }
        if ( !
$asobject ) {
            
$sql "SELECT poll_id FROM ".$db->prefix("xoopspoll_desc")."$where_query ORDER BY $orderby";
            
$result $db->query($sql,intval($limit),intval($start));
            while ( 
$myrow $db->fetchArray($result) ) {
                
$ret[] = $myrow['poll_id'];
            }
        } else {
            
$sql "SELECT * FROM ".$db->prefix("xoopspoll_desc")."".$where_query." ORDER BY $orderby";
            
$result $db->query($sql,$limit,$start);
            while ( 
$myrow $db->fetchArray($result) ) {
                
$ret[] = new XoopsPoll($myrow);
            }
        }
        
//echo $sql;
        
return $ret;
    }

function 
getcomments($poll_id){
        
$db =& Database::getInstance();
        global 
$module_handler;
        
$pollmod $module_handler->getByDirname('xoopspoll');
        
$sql"SELECT count(com_id) FROM ".$db->prefix('xoopscomments')." WHERE com_modid = '".$pollmod->getVar('mid')."' AND com_itemid = '".$poll_id."'";
        
$result $db->query($sql);
        while (
$row $db->fetchArray($result)) {
            
$amt=$row['count(com_id)'];
        }
        unset(
$pollmod);
        return 
$amt;
    }

    
// public
    
function vote($option_id$ip$user_id=null)
    {
        if (!empty(
$option_id)) {
            if (
is_array($option_id)) {
                foreach (
$option_id as $vote) {
                    
$option = new XoopsPollOption($vote);
                    if ( 
$this->getVar("poll_id") == $option->getVar("poll_id") ) {
                        
$log = new XoopsPollLog();
                        
$log->setVar("poll_id"$this->getVar("poll_id"));
                        
$log->setVar("option_id"$vote);
                        
$log->setVar("ip"$ip);
                        if ( isset(
$user_id) ) {
                            
$log->setVar("user_id"$user_id);
                        }
                        if(!
$log->store()) {
                        } else {
                            
$option->updateCount();
                        }
                    }
                }
            } else {
                
$option = new XoopsPollOption($option_id);
                if ( 
$this->getVar("poll_id") == $option->getVar("poll_id") ) {
                    
$log = new XoopsPollLog();
                    
$log->setVar("poll_id"$this->getVar("poll_id"));
                    
$log->setVar("option_id"$option_id);
                    
$log->setVar("ip"$ip);
                    if ( isset(
$user_id) ) {
                        
$log->setVar("user_id"$user_id);
                    }
                    
$log->store();
                    
$option->updateCount();
                }
            }
            return 
true;
        }
        return 
false;
    }

    
// public
    
function updateCount()
    {
        
$votes XoopsPollLog::getTotalVotesByPollId($this->getVar("poll_id"));
        
$voters XoopsPollLog::getTotalVotersByPollId($this->getVar("poll_id"));
        
$sql ="UPDATE ".$this->db->prefix("xoopspoll_desc")." SET votes=$votes, voters=$voters WHERE poll_id=".$this->getVar("poll_id")."";
        
$this->db->query($sql);
    }


}

?>
I Love Xoops

12
iHackCode
Re: xoopspolls - show total comment in block

good location. easy to find later on.

in post #9 in this thread i changed the code a bit to work with 2.0.17 . since earlier i had it on a 2.0.13 test site.

i changed
global $module_handler;

to
$module_handler = xoops_gethandler("module");

and i also sent u a PM with the modified file.(before i knew u replied again.)
CBB / LatestNews / Publisher / XM-Spotlight

(ノ◕ヮ◕)ノ*:・゚✧

13
noo-b
Re: xoopspolls - show total comment in block
  • 2007/12/27 6:18

  • noo-b

  • Just can't stay away

  • Posts: 456

  • Since: 2007/10/23


thank you very much banditx you're the man

it works perfectly

it would be nice if you also provide the same hack for umfrage module
I Love Xoops

14
iHackCode
Re: xoopspolls - show total comment in block

its basically the same thing.

edit the block's php file. blocks/umfrage.php
add 'comments' => umfrage::getcomments($polls[$i]->getVar('poll_id')) to the array. (two locations) in that file.
'options' => $options
                
'hasVoted' => hasVoted($polls[$i]->getVar('poll_id')) ? 0
                
'poll_end' => $poll_end
                
'polltype' => $polls[$i]->getVar('polltype'), 
                
'lang_result' => $lang_results,
                
'comments' => umfrage::getcomments($polls[$i]->getVar('poll_id'))
                );


edit the class/umfrage.php file
add this function to it.
function getcomments($poll_id){
        
$db =& Database::getInstance();
        
$module_handler xoops_gethandler("module"); 
        
$pollmod $module_handler->getByDirname('umfrage');
        
$sql"SELECT count(com_id) FROM ".$db->prefix('xoopscomments')." WHERE com_modid = '".$pollmod->getVar('mid')."' AND com_itemid = '".$poll_id."'";
        
$result $db->query($sql);
        while (
$row $db->fetchArray($result)) {
            
$amt=$row['count(com_id)'];
        }
        unset(
$pollmod);
        return 
$amt;
    }


then edit the umfrage_block_poll.html file
add the <{$poll.comments}> variable in that file.
i put it in two places. one on each of the locations where it displays the expiration dates
<tr><td class="foot" align="center" colspan="2"><b>Comments (<{$poll.comments}>)</b></td></tr>
<
tr><td colspan="3">
   <{
$block.lang_expiration}> <{$poll.poll_end}>
   </
td></tr>


umfrage 1.0.4
CBB / LatestNews / Publisher / XM-Spotlight

(ノ◕ヮ◕)ノ*:・゚✧

15
belia
Re: xoopspolls - show total comment in block
  • 2007/12/29 8:15

  • belia

  • Just popping in

  • Posts: 83

  • Since: 2007/12/18


thank you very much bandit-x..happy new year to you

16
noo-b
Re: xoopspolls - show total comment in block
  • 2008/1/6 9:59

  • noo-b

  • Just can't stay away

  • Posts: 456

  • Since: 2007/10/23


Bump....

what about showing the total comments in the index page of xoopspolls module ?

please help
I Love Xoops

Login

Who's Online

201 user(s) are online (125 user(s) are browsing Support Forums)


Members: 0


Guests: 201


more...

Donat-O-Meter

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

Latest GitHub Commits