Support pour la version 2.0.0
Utilisateurs actuellement en ligne ?
- failrOn
- Hors Ligne
- Développeur Kunena
Moins
Plus d'informations
- Messages : 5366
- Remerciements reçus 722
20 Jan 2013 15:01 #13
par failrOn
Pour soutenir le projet Kunena : soutenir via le système de sponsor de github
Réponse de failrOn sur le sujet Utilisateurs actuellement en ligne ?
J'ai commencé à faire quelque chose, il faudrait modifier la classe kunena.who.class.php qui n’existe plus dans Kunena 2.0. On avait désactivé cette partie car ça grévait les performances.
Pour accéder à cette fonction tu devras entrer l'url : http://127.0.0.1/joomla_2.5.7/index.php/forum/who/
Dans le fichier \administrator\components\com_kunena\libraries\route\legacy.php ligne 446 ajoute :
Dans le fichier \administrator\components\com_kunena\libraries\route\route.php ligne 381 ajoute :
Crée le fichier suivant \components\com_kunena\lib\kunena.who.class.php en ajoutant le code :
Dans \components\com_kunena\views crée un répertoire "whoisonline" et à l'intérieur de celui-ci ajoute les fichiers suivants :
Crée le fichier suivant : \components\com_kunena\controllers\whoisonline.php avec le contenu :
Crée le fichier suivant \components\com_kunena\models\whoisonline.php avec le contenu :
Pour accéder à cette fonction tu devras entrer l'url : http://127.0.0.1/joomla_2.5.7/index.php/forum/who/
Dans le fichier \administrator\components\com_kunena\libraries\route\legacy.php ligne 446 ajoute :
Code:
case 'who':
$changed = true;
$uri->setVar('view', 'whoisonline');
break;
Dans le fichier \administrator\components\com_kunena\libraries\route\route.php ligne 381 ajoute :
Code:
case 'whoisonline':
$r = array();
break;
Crée le fichier suivant \components\com_kunena\lib\kunena.who.class.php en ajoutant le code :
Code:
<?php
/**
* @version $Id$
* Kunena Component
* @package Kunena
*
* @Copyright (C) 2008 - 2011 Kunena Team. All rights reserved.
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
* @link http://www.kunena.org
*
* Based on FireBoard Component
* @Copyright (C) 2006 - 2007 Best Of Joomla All rights reserved.
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
* @link http://www.bestofjoomla.com
*
* Based on Joomlaboard Component
* @copyright (C) 2000 - 2004 TSMF / Jan de Graaff / All rights reserved.
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
* @author TSMF & Jan de Graaff
**/
// Dont allow direct linking
defined( '_JEXEC' ) or die();
class CKunenaWhoIsOnline {
public $db = null;
public $my = null;
public $app = null;
public $config = null;
protected $myip = null;
protected $name = null;
protected function __construct($db, $config, $app) {
$this->db = $db;
$this->my = JFactory::getUser ();
$this->config = $config;
$this->app = $app;
$this->name = $this->config->username ? "username" : "name";
$this->now = JFactory::getDate();
$this->timeout = $this->now->toUnix() - $this->app->getCfg ( 'lifetime', 15 ) * 60;
}
public function &getInstance() {
static $instance = NULL;
if (! $instance) {
$kunena_db = & JFactory::getDBO ();
$kunena_config = KunenaFactory::getConfig ();
$kunena_app = & JFactory::getApplication ();
$instance = new CKunenaWhoIsOnline ( $kunena_db, $kunena_config, $kunena_app );
}
return $instance;
}
/**
* Escapes a value for output in a view script.
*
* If escaping mechanism is one of htmlspecialchars or htmlentities, uses
* {@link $_encoding} setting.
*
* @param mixed $var The output to escape.
* @return mixed The escaped value.
*/
function escape($var)
{
return htmlspecialchars($var, ENT_COMPAT, 'UTF-8');
}
public function getActiveUsersList() {
static $users = null;
if ($users) return $users;
// TODO: make this configurable: WHERE s.time > {$this->timeout}
$query = "SELECT s.userid, u.{$this->name} AS username, u.id, k.moderator, k.showOnline
FROM #__users AS u
LEFT JOIN #__kunena_users AS k ON k.userid=u.id
INNER JOIN #__session AS s ON s.client_id=0 AND s.userid=u.id AND s.userid>0
GROUP BY s.userid
ORDER BY username ASC";
$this->db->setQuery($query);
$users = $this->db->loadObjectList();
KunenaError::checkDatabaseError();
return $users;
}
public function getTotalRegistredUsers () {
$count = KunenaUser::getOnlineCount();
return $count['user'];
}
public function getTotalGuestUsers () {
if ( !$this->config->regonly ) {
$count = KunenaUser::getOnlineCount();
return $count['guest'];
}
return 0;
}
public function getTitleWho ($totaluser,$totalguests) {
$who_name = '<strong>'.$totaluser.' </strong>';
if($totaluser==1) {
$who_name .= JText::_('COM_KUNENA_WHO_ONLINE_MEMBER').' ';
} else {
$who_name .= JText::_('COM_KUNENA_WHO_ONLINE_MEMBERS').' ';
}
$who_name .= JText::_('COM_KUNENA_WHO_AND');
$who_name .= '<strong> '. $totalguests.' </strong>';
if($totalguests==1) {
$who_name .= JText::_('COM_KUNENA_WHO_ONLINE_GUEST').' ';
} else {
$who_name .= JText::_('COM_KUNENA_WHO_ONLINE_GUESTS').' ';
}
$who_name .= JText::_('COM_KUNENA_WHO_ONLINE_NOW');
return $who_name;
}
public function getUsersList () {
// TODO: make this configurable: WHERE s.time > {$this->timeout}
$query = "SELECT w.*, u.id, u.{$this->name} AS username, k.showOnline
FROM #__kunena_whoisonline AS w
LEFT JOIN #__users AS u ON w.userid=u.id
LEFT JOIN #__kunena_users AS k ON k.userid=u.id
LEFT JOIN #__session AS s ON s.client_id=0 AND s.userid=u.id AND s.userid>0
GROUP BY s.userid
ORDER BY w.time DESC";
$this->db->setQuery($query);
$users = $this->db->loadObjectList();
KunenaError::checkDatabaseError();
return $users;
}
protected function _deleteUsersOnline () {
$past = $this->now->toUnix() - max(intval(JFactory::getConfig()->getValue( 'config.lifetime' ))*60, intval(KunenaFactory::getConfig ()->fbsessiontimeout));
$this->db->setQuery("DELETE FROM #__kunena_whoisonline WHERE time < {$this->db->Quote($past)}");
$this->db->query();
KunenaError::checkDatabaseError();
}
protected function _getOnlineUsers () {
$this->db->setQuery("SELECT COUNT(*) FROM #__kunena_whoisonline WHERE userip={$this->db->Quote($this->myip)} AND userid={$this->db->Quote($this->my->id)}");
$online = $this->db->loadResult();
KunenaError::checkDatabaseError();
return $online;
}
protected function _IsUser() {
if ($this->my->id > 0) {
$isuser = 1;
} else {
$isuser = 0;
}
return $isuser;
}
public function insertOnlineDatas () {
$id = JRequest::getInt('id');
$catid = JRequest::getInt('catid');
$func = JString::strtolower ( JRequest::getCmd ( 'func', 'listcat' ) );
$task = JRequest::getCmd('task');
$do = JRequest::getCmd('do');
$isuser = $this->_IsUser();
$this->myip = $_SERVER ["REMOTE_ADDR"];
$online = $this->_getOnlineUsers();
if ( $func == 'showcat') {
$this->db->setQuery("SELECT name FROM #__kunena_categories WHERE id={$this->db->Quote($catid)}");
$what = JText::_('COM_KUNENA_WHO_VIEW_SHOWCAT').' '.$this->db->loadResult();
KunenaError::checkDatabaseError();
} else if ($func == 'listcat') {
$what = JText::_('COM_KUNENA_WHO_VIEW_LISCAT');
} else if ($func == 'latest') {
$what = JText::_('COM_KUNENA_WHO_ALL_DISCUSSIONS');
} else if ($func == 'mylatest') {
$what = JText::_('COM_KUNENA_WHO_MY_DISCUSSIONS');
} else if ($func == 'view') {
$this->db->setQuery("SELECT subject FROM #__kunena_messages WHERE id={$this->db->Quote($id)}");
$what = JText::_('COM_KUNENA_WHO_VIEW_TOPIC').' '.$this->db->loadResult();
KunenaError::checkDatabaseError();
} else if ($func == 'post' && $do == 'reply') {
$this->db->setQuery("SELECT subject FROM #__kunena_messages WHERE id={$this->db->Quote($id)}");
$what = JText::_('COM_KUNENA_WHO_REPLY_TOPIC').' '.$this->db->loadResult();
KunenaError::checkDatabaseError();
} else if ($func == 'post' && $do == 'edit') {
$this->db->setQuery("SELECT name FROM #__kunena_messages WHERE id={$this->db->Quote($id)}");
$what = JText::_('COM_KUNENA_WHO_POST_EDIT').' '.$this->db->loadResult();
KunenaError::checkDatabaseError();
} else if ($func == 'who') {
$what = JText::_('COM_KUNENA_WHO_VIEW_WHO');
} else if ($func== 'search') {
$what = JText::_('COM_KUNENA_WHO_SEARCH');
} else if ($func== 'profile') {
$what = JText::_('COM_KUNENA_WHO_PROFILE');
} else if ($func== 'stats') {
$what = JText::_('COM_KUNENA_WHO_STATS');
} else if ($func== 'userlist') {
$what = JText::_('COM_KUNENA_WHO_USERLIST');
} else {
$what = JText::_('COM_KUNENA_WHO_MAINPAGE');
}
$link = JURI::getInstance()->toString();
if ($online == 1) {
$sql = "UPDATE #__kunena_whoisonline SET ".
" time=".$this->db->quote($this->now->toUnix()).", ".
" what=".$this->db->quote($what).", ".
" do=".$this->db->quote($do).", ".
" task=".$this->db->quote($task).", ".
" link=".$this->db->quote($link).", ".
" func=".$this->db->quote($func).
" WHERE userid=".$this->db->quote($this->my->id).
" AND userip=".$this->db->quote($this->myip);
$this->db->setQuery($sql);
} else {
$this->_deleteUsersOnline();
$sql = "INSERT INTO #__kunena_whoisonline (`userid` , `time`, `what`, `task`, `do`, `func`,`link`, `userip`, `user`) "
. " VALUES (".
$this->db->quote($this->my->id).",".
$this->db->quote($this->now->toUnix()).",".
$this->db->quote($what).",".
$this->db->quote($task).",".
$this->db->quote($do).",".
$this->db->quote($func).",".
$this->db->quote($link).",".
$this->db->quote($this->myip).",".
$this->db->quote($isuser).")";
$this->db->setQuery($sql);
}
$this->db->query();
KunenaError::checkDatabaseError();
}
}
?>
Dans \components\com_kunena\views crée un répertoire "whoisonline" et à l'intérieur de celui-ci ajoute les fichiers suivants :
Crée le fichier suivant : \components\com_kunena\controllers\whoisonline.php avec le contenu :
Code:
<?php
/**
* Kunena Component
* @package Kunena.Site
* @subpackage Controllers
*
* @copyright (C) 2008 - 2012 Kunena Team. All rights reserved.
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
* @link http://www.kunena.org
**/
defined ( '_JEXEC' ) or die ();
/**
* Kunena Statistics Controller
*
* @since 2.0
*/
class KunenaControllerWhoisonline extends KunenaController {
}
Crée le fichier suivant \components\com_kunena\models\whoisonline.php avec le contenu :
Code:
<?php
/**
* Kunena Component
* @package Kunena.Site
* @subpackage Models
*
* @copyright (C) 2008 - 2012 Kunena Team. All rights reserved.
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
* @link http://www.kunena.org
**/
defined ( '_JEXEC' ) or die ();
/**
* Statistics Model for Kunena
*
* @since 2.0
*/
class KunenaModelWhoisonline extends KunenaModel {
}
Pour soutenir le projet Kunena : soutenir via le système de sponsor de github
Veuillez vous connecter ou vous enregistrer pour rejoindre la conversation.
- mimi
- Auteur du sujet
- Hors Ligne
- Membre junior
Moins
Plus d'informations
- Messages : 32
- Remerciements reçus 0
20 Jan 2013 19:11 #14
par mimi
Réponse de mimi sur le sujet Utilisateurs actuellement en ligne ?
Merci failrOn
J'ai tout fait ce que tu as listé mais rien n'a changé sur le forum. Toujours aucun lien sur "Utilisateurs actuellement en ligne"
Peut être n'ai-je pas tout compris... En tout cas ce qui est sûr c'est que je n'ai pas compris comment accéder à la fonction :
J'ai tout fait ce que tu as listé mais rien n'a changé sur le forum. Toujours aucun lien sur "Utilisateurs actuellement en ligne"
Peut être n'ai-je pas tout compris... En tout cas ce qui est sûr c'est que je n'ai pas compris comment accéder à la fonction :
failrOn écrit: Pour accéder à cette fonction tu devras entrer l'url : http://127.0.0.1/joomla_2.5.7/index.php/forum/who/
Veuillez vous connecter ou vous enregistrer pour rejoindre la conversation.
- failrOn
- Hors Ligne
- Développeur Kunena
Moins
Plus d'informations
- Messages : 5366
- Remerciements reçus 722
20 Jan 2013 20:45 - 20 Jan 2013 20:45 #15
par failrOn
Pour soutenir le projet Kunena : soutenir via le système de sponsor de github
Réponse de failrOn sur le sujet Utilisateurs actuellement en ligne ?
Mes changements n'ajoutent pas de liens, tu entrer l'url manuellement, je ne connais pas l'url de ton site. Par ici, ça serait :
kunena.aide-joomla.com/forum/who/
Par contre le fichier \components\com_kunena\lib\kunena.who.class.php nécessite une réécriture pour fonctionner avec Kunena 2.0 et cela va être long et/ou compliqué, en faite mes changements ne fonctionnent pas encore
Par contre le fichier \components\com_kunena\lib\kunena.who.class.php nécessite une réécriture pour fonctionner avec Kunena 2.0 et cela va être long et/ou compliqué, en faite mes changements ne fonctionnent pas encore
Pour soutenir le projet Kunena : soutenir via le système de sponsor de github
Dernière édition: 20 Jan 2013 20:45 par failrOn.
Veuillez vous connecter ou vous enregistrer pour rejoindre la conversation.
- mimi
- Auteur du sujet
- Hors Ligne
- Membre junior
Moins
Plus d'informations
- Messages : 32
- Remerciements reçus 0
20 Jan 2013 22:45 #16
par mimi
Réponse de mimi sur le sujet Utilisateurs actuellement en ligne ?
Je comprends mieux... merci failrOn
Dois-je conserver les modifs et ajouts en attendant que la fonction soit opérationnelle ?
Ceci étant je ne comprends pas que l'upgrade ait fait disparaître une fonctionnalité assez importante pour toute équipe d'administration et de modération...
Dois-je conserver les modifs et ajouts en attendant que la fonction soit opérationnelle ?
Ceci étant je ne comprends pas que l'upgrade ait fait disparaître une fonctionnalité assez importante pour toute équipe d'administration et de modération...
Veuillez vous connecter ou vous enregistrer pour rejoindre la conversation.
- failrOn
- Hors Ligne
- Développeur Kunena
Moins
Plus d'informations
- Messages : 5366
- Remerciements reçus 722
20 Jan 2013 23:30 #17
par failrOn
Pour soutenir le projet Kunena : soutenir via le système de sponsor de github
Réponse de failrOn sur le sujet Utilisateurs actuellement en ligne ?
Cette fonctionnalité impactait négativement les performances de Kunena, c'est pour cela qu'elle a disparue dans Kunena 2.0
Pour soutenir le projet Kunena : soutenir via le système de sponsor de github
Veuillez vous connecter ou vous enregistrer pour rejoindre la conversation.
- failrOn
- Hors Ligne
- Développeur Kunena
Moins
Plus d'informations
- Messages : 5366
- Remerciements reçus 722
10 Fév 2013 15:47 - 10 Fév 2013 17:58 #18
par failrOn
Pour soutenir le projet Kunena : soutenir via le système de sponsor de github
Réponse de failrOn sur le sujet Utilisateurs actuellement en ligne ?
Ne pas tenir compte de mon message ci-dessus qui ne contenait pas les changements complets :
kunena.aide-joomla.com/forum/kunena-2-0/...ligne?start=12#13546
Appliquer les modifications suivantes pour remettre en place cette fonctionnalité, tester en local les changements :
Dans le fichier \administrator\components\com_kunena\libraries\route\legacy.php ligne 446 ajoute :
Dans le fichier \administrator\components\com_kunena\libraries\route\route.php ligne 381 ajoute :
Dans \components\com_kunena\views crée un répertoire "whoisonline" et à l'intérieur de celui-ci ajoute les fichiers suivants :
Ajouter le fichier suivant dans \components\com_kunena\lib\ :
Dans \components\com_kunena\template\blue_eagle\html\whoisonline\ ajoute le fichier suivant default.php :
Dans le fichier \components\com_kunena\kunena.php ligne 66 ajoute le code suivant :
Crée le fichier suivant : \components\com_kunena\controllers\whoisonline.php avec le contenu :
Crée le fichier suivant \components\com_kunena\models\whoisonline.php avec le contenu :
Dans le fichier \components\com_kunena\template\blue_eagle\html\common\statistics.php ligne 31 ajoute, le lien devra être adapté à ton installation de Joomla! :
Vous devrez re-créer la table *_kunena_whoisonline avec la requête suivante, n'oubliez pas de personnaliser le préfixe de la table en fonction de votre installation :
Appliquer les modifications suivantes pour remettre en place cette fonctionnalité, tester en local les changements :
Dans le fichier \administrator\components\com_kunena\libraries\route\legacy.php ligne 446 ajoute :
Code:
case 'who':
$changed = true;
$uri->setVar('view', 'whoisonline');
break;
Dans le fichier \administrator\components\com_kunena\libraries\route\route.php ligne 381 ajoute :
Code:
case 'whoisonline':
$r = array();
break;
Dans \components\com_kunena\views crée un répertoire "whoisonline" et à l'intérieur de celui-ci ajoute les fichiers suivants :
Ajouter le fichier suivant dans \components\com_kunena\lib\ :
Dans \components\com_kunena\template\blue_eagle\html\whoisonline\ ajoute le fichier suivant default.php :
Code:
<?php
/**
* @version $Id$
* Kunena Component
* @package Kunena
*
* @Copyright (C) 2008 - 2011 Kunena Team. All rights reserved.
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
* @link http://www.kunena.org
*
* Based on FireBoard Component
* @Copyright (C) 2006 - 2007 Best Of Joomla All rights reserved.
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
* @link http://www.bestofjoomla.com
*
* Based on Joomlaboard Component
* @copyright (C) 2000 - 2004 TSMF / Jan de Graaff / All rights reserved.
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
* @author TSMF & Jan de Graaff
**/
// Dont allow direct linking
defined( '_JEXEC' ) or die();
if ($this->config->showwhoisonline) {
?>
<div class="kblock">
<div class="kheader">
<span class="ktoggler"><a class="ktoggler close" title="<?php echo JText::_('COM_KUNENA_TOGGLER_COLLAPSE') ?>" rel="kwhois_tbody"></a></span>
<h2><span><?php echo $this->app->getCfg('sitename'); ?> - <?php echo JText::_('COM_KUNENA_WHO_WHOIS_ONLINE'); ?></span></h2>
</div>
<div class="kcontainer" id="kwhois_tbody">
<table>
<tbody>
<tr class = "ksth">
<th class = "th-1 ksectiontableheader"><?php echo JText::_('COM_KUNENA_WHO_ONLINE_USER'); ?></th>
<th class = "th-2 ksectiontableheader"><?php echo JText::_('COM_KUNENA_WHO_ONLINE_TIME'); ?></th>
<th class = "th-3 ksectiontableheader"><?php echo JText::_('COM_KUNENA_WHO_ONLINE_FUNC'); ?></th>
</tr>
<?php
$k = 0; //for alternating rows
$tabclass = array ("row1","row2");
foreach ($this->listusers as $user) :
$k = 1 - $k;
$selected_user = KunenaUserHelper::get($user->userid);
if ($user->userid == 0) {
$user->username = JText::_('COM_KUNENA_GUEST');
} else if ($user->showOnline < 1 && !$this->kuser->isModerator()) {
continue;
}
?>
<tr class = "k<?php echo $this->escape($tabclass[$k]);?>">
<td class = "td-1">
<div style = "float: right; width: 14ex;"></div>
<span>
<?php
if ($this->kuser->userid == 0) :
echo JText::_('COM_KUNENA_GUEST');
else :
echo $selected_user ->getLink($selected_user ->name);
endif;
?>
</span>
<?php
if ($this->kuser->isAdmin() && $this->config->hide_ip) :
echo '('.$this->escape($user->userip).')';
elseif ($this->kuser->isModerator() && !$this->config->hide_ip) :
echo '('.$this->escape($user->userip).')';
endif;
?>
</td>
<td class = "td-2" nowrap = "nowrap">
<?php $kdate = KunenaDate::getInstance($user->time); ?>
<span title="<?php echo $kdate->toKunena('datetime_time') ?>">
<?php echo $kdate->toKunena('datetime_time') ?>
</span>
</td>
<td class = "td-3">
<strong><a href = "<?php echo $this->escape($user->link);?>" target = "_blank"><?php echo $this->escape($user->what); ?></a></strong>
</td>
</tr>
<?php endforeach; ?>
</table>
</div>
</div>
<?php } else { ?>
<div style = "border:1px solid #FF6600; background: #FF9966; padding:20px; text-align:center;">
<h1><?php echo JText::_('COM_KUNENA_WHO_IS_ONLINE_NOT_ACTIVE'); ?></h1>
</div>
<?php } ?>
Dans le fichier \components\com_kunena\kunena.php ligne 66 ajoute le code suivant :
Code:
require_once(JPATH_ROOT.'\components\com_kunena\lib\kunena.who.class.php');
$whoisonline = KunenaWhoIsOnline::getInstance();
$whoisonline->insertOnlineDatas();
Crée le fichier suivant : \components\com_kunena\controllers\whoisonline.php avec le contenu :
Code:
<?php
/**
* Kunena Component
* @package Kunena.Site
* @subpackage Controllers
*
* @copyright (C) 2008 - 2012 Kunena Team. All rights reserved.
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
* @link http://www.kunena.org
**/
defined ( '_JEXEC' ) or die ();
/**
* Kunena Statistics Controller
*
* @since 2.0
*/
class KunenaControllerWhoisonline extends KunenaController {
}
Crée le fichier suivant \components\com_kunena\models\whoisonline.php avec le contenu :
Code:
<?php
/**
* Kunena Component
* @package Kunena.Site
* @subpackage Models
*
* @copyright (C) 2008 - 2012 Kunena Team. All rights reserved.
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
* @link http://www.kunena.org
**/
defined ( '_JEXEC' ) or die ();
/**
* Statistics Model for Kunena
*
* @since 2.0
*/
class KunenaModelWhoisonline extends KunenaModel {
}
Dans le fichier \components\com_kunena\template\blue_eagle\html\common\statistics.php ligne 31 ajoute, le lien devra être adapté à ton installation de Joomla! :
Code:
<li><a href="<?php echo KunenaRoute::_ ( 'index.php?option=com_kunena&view=who' ), ?>">Who</a></li>
Vous devrez re-créer la table *_kunena_whoisonline avec la requête suivante, n'oubliez pas de personnaliser le préfixe de la table en fonction de votre installation :
Pour soutenir le projet Kunena : soutenir via le système de sponsor de github
Dernière édition: 10 Fév 2013 17:58 par failrOn.
Veuillez vous connecter ou vous enregistrer pour rejoindre la conversation.
Temps de génération de la page : 1.098 secondes