Compare commits
19 Commits
Author | SHA1 | Date | |
---|---|---|---|
3b8e6097c0 | |||
1b3364bc45 | |||
6d89c8e26c | |||
2afe6cb1be | |||
abd1f8d44b | |||
3e287f888a | |||
759b22b764 | |||
dac3ae9b23 | |||
c0a59c7196 | |||
dc9a1043a8 | |||
e777703589 | |||
fcf7a560ad | |||
c20ce515f4 | |||
92b8836b91 | |||
6caac005c8 | |||
e269bf7fbe | |||
98f7efbf59 | |||
44dbbfeaee | |||
952fd135ce |
26
.gitattributes
vendored
26
.gitattributes
vendored
@ -1,17 +1,29 @@
|
||||
* text=auto !eol
|
||||
changed_full/EE500-/modules/d3/d3usersonline/views/blocks/layout/d3usersonline_sidebar.tpl -text
|
||||
changed_full/PE470-/modules/d3/d3usersonline/views/blocks/layout/d3usersonline_sidebar.tpl -text
|
||||
Sources/Screenshots/Backend.jpg -text
|
||||
Sources/Screenshots/Frontend.jpg -text
|
||||
Sources/UsersOnline-Installation.docx -text
|
||||
copy_this/.noencode -text
|
||||
copy_this/modules/d3/d3usersonline/IntelliSenseHelper.php -text
|
||||
copy_this/modules/d3/d3usersonline/controllers/admin/d3_cfg_usersonline.php -text
|
||||
copy_this/modules/d3/d3usersonline/controllers/admin/d3_cfg_usersonline_licence.php -text
|
||||
copy_this/modules/d3/d3usersonline/controllers/admin/d3_cfg_usersonline_list.php -text
|
||||
copy_this/modules/d3/d3usersonline/controllers/admin/d3_cfg_usersonline_main.php -text
|
||||
copy_this/modules/d3/d3usersonline/controllers/admin/d3_usersonline.php -text
|
||||
copy_this/modules/d3/d3usersonline/controllers/admin/d3_usersonline_list.php -text
|
||||
copy_this/modules/d3/d3usersonline/controllers/admin/d3_usersonline_statistic.php -text
|
||||
copy_this/modules/d3/d3usersonline/menu.xml -text
|
||||
copy_this/modules/d3/d3usersonline/metadata.php -text
|
||||
copy_this/modules/d3/d3usersonline/models/d3usersonline.php -text
|
||||
copy_this/modules/d3/d3usersonline/models/d3usersonline_update.php -text
|
||||
copy_this/modules/d3/d3usersonline/modules/components/d3_oxcmp_utils_usersonline.php -text
|
||||
copy_this/modules/d3/d3usersonline/picture.png -text
|
||||
copy_this/modules/d3/d3usersonline/setup/d3usersonline_update.php -text
|
||||
copy_this/modules/d3/d3usersonline/translations/de/d3usersonline_lang.php -text
|
||||
copy_this/modules/d3/d3usersonline/translations/en/d3usersonline_lang.php -text
|
||||
copy_this/modules/d3/d3usersonline/views/admin/de/d3usersonline_lang.php -text
|
||||
copy_this/modules/d3/d3usersonline/views/admin/en/d3usersonline_lang.php -text
|
||||
copy_this/modules/d3/d3usersonline/views/admin/tpl/d3_cfg_usersonline_main.tpl -text
|
||||
copy_this/modules/d3/d3usersonline/views/admin/tpl/d3_usersonline_statistic.tpl -text
|
||||
copy_this/modules/d3/d3usersonline/views/blocks/layout/d3usersonline_sidebar.tpl -text
|
||||
setup+doku/Installation.pdf -text
|
||||
setup+doku/Precheck/d3precheck.php -text
|
||||
setup+doku/changelog.txt -text
|
||||
setup+doku/d3precheck.php -text
|
||||
source/Re[!!-~]D3[!!-~]Users[!!-~]Online[!!-~]kit[!!-~]Oxid[!!-~]CE[!!-~]4.7.eml -text
|
||||
source/UsersOnline[!!-~]v1.2.1[!!-~]CE4_Kundenversion_4.7.0.zip -text
|
||||
source/UsersOnline-Installation.docx -text
|
||||
|
BIN
Sources/Screenshots/Backend.jpg
Normal file
BIN
Sources/Screenshots/Backend.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 311 KiB |
BIN
Sources/Screenshots/Frontend.jpg
Normal file
BIN
Sources/Screenshots/Frontend.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 610 KiB |
BIN
Sources/UsersOnline-Installation.docx
Normal file
BIN
Sources/UsersOnline-Installation.docx
Normal file
Binary file not shown.
@ -1,49 +0,0 @@
|
||||
[{d3modcfgcheck modid="d3usersonline"}]
|
||||
[{if $oxcmp_user && $oxcmp_user->getFieldData('oxrights') == 'malladmin'}]
|
||||
<div class="box">
|
||||
<h3>[{oxmultilang ident="D3_USERSONLINE_USERSONLINE"}]</h3>
|
||||
<div class="content">
|
||||
<table style="border-style: none; width: 100%;">
|
||||
<tr>
|
||||
<td style="border-bottom: 1px solid silver;">
|
||||
[{oxmultilang ident="D3_USERSONLINE_ALL"}]
|
||||
</td>
|
||||
<td style="border-bottom: 1px solid silver; text-align: right; font-weight: bold;">
|
||||
[{$aUsersOnline.all}]
|
||||
</td>
|
||||
<td style="border-bottom: 1px solid silver; text-align: left;">
|
||||
[{if $aUsersOnline.all == 1}]
|
||||
[{oxmultilang ident="D3_USERSONLINE_USER"}]
|
||||
[{else}]
|
||||
[{oxmultilang ident="D3_USERSONLINE_USERS"}]
|
||||
[{/if}]
|
||||
</td>
|
||||
</tr>
|
||||
[{foreach from=$aUsersOnline.classes item="aClassUser"}]
|
||||
<tr>
|
||||
<td>
|
||||
[{if $aClassUser->classname}]
|
||||
[{$aClassUser->classname|ucfirst}]:
|
||||
[{else}]
|
||||
undefined:
|
||||
[{/if}]
|
||||
</td>
|
||||
<td style="text-align: right; font-weight: bold;">
|
||||
[{$aClassUser->counter}]
|
||||
</td>
|
||||
<td style="text-align: left;">
|
||||
[{if $aClassUser->counter == 1}]
|
||||
[{oxmultilang ident="D3_USERSONLINE_USER"}]
|
||||
[{else}]
|
||||
[{oxmultilang ident="D3_USERSONLINE_USERS"}]
|
||||
[{/if}]
|
||||
</td>
|
||||
</tr>
|
||||
[{/foreach}]
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
[{/if}]
|
||||
[{/d3modcfgcheck}]
|
||||
|
||||
[{$smarty.block.parent}]
|
@ -1,49 +0,0 @@
|
||||
[{d3modcfgcheck modid="d3usersonline"}]
|
||||
[{if $oxcmp_user && $oxcmp_user->getFieldData('oxrights') == 'malladmin'}]
|
||||
<div class="box">
|
||||
<h3>[{oxmultilang ident="D3_USERSONLINE_USERSONLINE"}]</h3>
|
||||
<div class="content">
|
||||
<table style="border-style: none; width: 100%;">
|
||||
<tr>
|
||||
<td style="border-bottom: 1px solid silver;">
|
||||
[{oxmultilang ident="D3_USERSONLINE_ALL"}]
|
||||
</td>
|
||||
<td style="border-bottom: 1px solid silver; text-align: right; font-weight: bold;">
|
||||
[{$aUsersOnline.all}]
|
||||
</td>
|
||||
<td style="border-bottom: 1px solid silver; text-align: left;">
|
||||
[{if $aUsersOnline.all == 1}]
|
||||
[{oxmultilang ident="D3_USERSONLINE_USER"}]
|
||||
[{else}]
|
||||
[{oxmultilang ident="D3_USERSONLINE_USERS"}]
|
||||
[{/if}]
|
||||
</td>
|
||||
</tr>
|
||||
[{foreach from=$aUsersOnline.classes item="aClassUser"}]
|
||||
<tr>
|
||||
<td>
|
||||
[{if $aClassUser->classname}]
|
||||
[{$aClassUser->classname|ucfirst}]:
|
||||
[{else}]
|
||||
undefined:
|
||||
[{/if}]
|
||||
</td>
|
||||
<td style="text-align: right; font-weight: bold;">
|
||||
[{$aClassUser->counter}]
|
||||
</td>
|
||||
<td style="text-align: left;">
|
||||
[{if $aClassUser->counter == 1}]
|
||||
[{oxmultilang ident="D3_USERSONLINE_USER"}]
|
||||
[{else}]
|
||||
[{oxmultilang ident="D3_USERSONLINE_USERS"}]
|
||||
[{/if}]
|
||||
</td>
|
||||
</tr>
|
||||
[{/foreach}]
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
[{/if}]
|
||||
[{/d3modcfgcheck}]
|
||||
|
||||
[{$smarty.block.parent}]
|
17
copy_this/modules/d3/d3usersonline/IntelliSenseHelper.php
Normal file
17
copy_this/modules/d3/d3usersonline/IntelliSenseHelper.php
Normal file
@ -0,0 +1,17 @@
|
||||
<?php
|
||||
/**
|
||||
* This Software is the property of Data Development and is protected
|
||||
* by copyright law - it is NOT Freeware.
|
||||
*
|
||||
* Any unauthorized use of this software without a valid license
|
||||
* is a violation of the license agreement and will be prosecuted by
|
||||
* civil and criminal law.
|
||||
*
|
||||
* http://www.shopmodule.com
|
||||
*
|
||||
* @copyright © D³ Data Development, Thomas Dartsch
|
||||
* @author D³ Data Development - Daniel Seifert <ds@shopmodule.com>
|
||||
* @link http://www.oxidmodule.com
|
||||
*/
|
||||
|
||||
class d3_oxcmp_utils_usersonline_parent extends oxcmp_utils {}
|
@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* This Software is the property of Data Development and is protected
|
||||
* by copyright law - it is NOT Freeware.
|
||||
* Any unauthorized use of this software without a valid license
|
||||
* is a violation of the license agreement and will be prosecuted by
|
||||
* civil and criminal law.
|
||||
* http://www.shopmodule.com
|
||||
*
|
||||
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
|
||||
* @author D3 Data Development - Daniel Seifert <ds@shopmodule.com>
|
||||
* @link http://www.oxidmodule.com
|
||||
*/
|
||||
|
||||
class d3_cfg_usersonline extends d3_cfg_mod_
|
||||
{
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function render()
|
||||
{
|
||||
$this->addTplParam('sListClass', 'd3_cfg_usersonline_list');
|
||||
$this->addTplParam('sMainClass', 'd3_cfg_usersonline_main');
|
||||
|
||||
return parent::render();
|
||||
}
|
||||
}
|
@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* This Software is the property of Data Development and is protected
|
||||
* by copyright law - it is NOT Freeware.
|
||||
* Any unauthorized use of this software without a valid license
|
||||
* is a violation of the license agreement and will be prosecuted by
|
||||
* civil and criminal law.
|
||||
* http://www.shopmodule.com
|
||||
*
|
||||
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
|
||||
* @author D3 Data Development - Daniel Seifert <ds@shopmodule.com>
|
||||
* @link http://www.oxidmodule.com
|
||||
*/
|
||||
|
||||
class d3_cfg_usersonline_licence extends d3_cfg_mod_licence
|
||||
{
|
||||
protected $_sModId = 'd3usersonline';
|
||||
|
||||
protected $_hasNewsletterForm = false;
|
||||
|
||||
protected $_sLogType = 2;
|
||||
}
|
@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* This Software is the property of Data Development and is protected
|
||||
* by copyright law - it is NOT Freeware.
|
||||
* Any unauthorized use of this software without a valid license
|
||||
* is a violation of the license agreement and will be prosecuted by
|
||||
* civil and criminal law.
|
||||
* http://www.shopmodule.com
|
||||
*
|
||||
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
|
||||
* @author D3 Data Development - Daniel Seifert <ds@shopmodule.com>
|
||||
* @link http://www.oxidmodule.com
|
||||
*/
|
||||
|
||||
class d3_cfg_usersonline_list extends d3_cfg_mod_list
|
||||
{
|
||||
protected $_blD3ShowLangSwitch = false;
|
||||
|
||||
/**
|
||||
* @return null
|
||||
*/
|
||||
public function render()
|
||||
{
|
||||
$sRet = parent::render();
|
||||
|
||||
$this->addTplParam("default_edit", "d3_cfg_usersonline_main");
|
||||
|
||||
return $sRet;
|
||||
}
|
||||
}
|
@ -0,0 +1,33 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* This Software is the property of Data Development and is protected
|
||||
* by copyright law - it is NOT Freeware.
|
||||
* Any unauthorized use of this software without a valid license
|
||||
* is a violation of the license agreement and will be prosecuted by
|
||||
* civil and criminal law.
|
||||
* http://www.shopmodule.com
|
||||
*
|
||||
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
|
||||
* @author D3 Data Development - Daniel Seifert <ds@shopmodule.com>
|
||||
* @link http://www.oxidmodule.com
|
||||
*/
|
||||
|
||||
class d3_cfg_usersonline_Main extends d3_cfg_mod_main
|
||||
{
|
||||
protected $_sThisTemplate = 'd3_cfg_usersonline_main.tpl';
|
||||
|
||||
protected $_sModId = 'd3usersonline';
|
||||
|
||||
protected $_blUseModCfgStdObject = true;
|
||||
|
||||
protected $_blHasDebugSwitch = false;
|
||||
|
||||
protected $_blHasTestModeSwitch = false;
|
||||
|
||||
protected $_sMenuItemTitle = 'd3mxusersonline';
|
||||
|
||||
protected $_sMenuSubItemTitle = 'd3mxusersonline_settings';
|
||||
|
||||
//protected $_sDebugHelpTextIdent = 'D3_INQUIRY_MAIN_DEBUGACTIVE_DESC';
|
||||
}
|
@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* This Software is the property of Data Development and is protected
|
||||
* by copyright law - it is NOT Freeware.
|
||||
* Any unauthorized use of this software without a valid license
|
||||
* is a violation of the license agreement and will be prosecuted by
|
||||
* civil and criminal law.
|
||||
* http://www.shopmodule.com
|
||||
*
|
||||
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
|
||||
* @author D3 Data Development - Daniel Seifert <ds@shopmodule.com>
|
||||
* @link http://www.oxidmodule.com
|
||||
*/
|
||||
|
||||
class d3_usersonline extends d3_cfg_mod_
|
||||
{
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function render()
|
||||
{
|
||||
$this->addTplParam('sListClass', 'd3_usersonline_list');
|
||||
$this->addTplParam('sMainClass', 'd3_usersonline_statistic');
|
||||
|
||||
return parent::render();
|
||||
}
|
||||
}
|
@ -0,0 +1,33 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* This Software is the property of Data Development and is protected
|
||||
* by copyright law - it is NOT Freeware.
|
||||
* Any unauthorized use of this software without a valid license
|
||||
* is a violation of the license agreement and will be prosecuted by
|
||||
* civil and criminal law.
|
||||
* http://www.shopmodule.com
|
||||
*
|
||||
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
|
||||
* @author D3 Data Development - Daniel Seifert <ds@shopmodule.com>
|
||||
* @link http://www.oxidmodule.com
|
||||
*/
|
||||
|
||||
class d3_usersonline_list extends d3_cfg_mod_list
|
||||
{
|
||||
protected $_blD3ShowLangSwitch = false;
|
||||
|
||||
/**
|
||||
* @return null
|
||||
*/
|
||||
public function render()
|
||||
{
|
||||
$this->_blD3ShowLangSwitch = false;
|
||||
|
||||
$sRet = parent::render();
|
||||
|
||||
$this->addTplParam("default_edit", "d3_usersonline_statistic");
|
||||
|
||||
return $sRet;
|
||||
}
|
||||
}
|
@ -0,0 +1,69 @@
|
||||
<?php
|
||||
/**
|
||||
* This Software is the property of Data Development and is protected
|
||||
* by copyright law - it is NOT Freeware.
|
||||
* Any unauthorized use of this software without a valid license
|
||||
* is a violation of the license agreement and will be prosecuted by
|
||||
* civil and criminal law.
|
||||
* http://www.shopmodule.com
|
||||
*
|
||||
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
|
||||
* @author D3 Data Development - Daniel Seifert <ds@shopmodule.com>
|
||||
* @link http://www.oxidmodule.com
|
||||
*/
|
||||
class d3_usersonline_statistic extends d3_cfg_mod_main
|
||||
{
|
||||
protected $_blUseOwnOxid = false;
|
||||
protected $_sThisTemplate = 'd3_usersonline_statistic.tpl';
|
||||
|
||||
protected $_sMenuItemTitle = 'd3mxusersonline';
|
||||
|
||||
protected $_sMenuSubItemTitle = 'd3mxusersonline_analysis';
|
||||
|
||||
public $blGroupByClass = false;
|
||||
|
||||
public function render()
|
||||
{
|
||||
$this->blGroupByClass = oxRegistry::getConfig()->getRequestParameter('groupbyclass') == 'true';
|
||||
$this->addTplParam('blGroupByClass', $this->blGroupByClass);
|
||||
return parent::render();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
public function getUserCount()
|
||||
{
|
||||
/** @var d3usersonline $oUsersOnline */
|
||||
$oUsersOnline = oxNew('d3usersonline');
|
||||
$oUsersOnline->clearOldItems();
|
||||
return $oUsersOnline->getUserCount($this->blGroupByClass);
|
||||
}
|
||||
|
||||
public function getControllerTitle($sControllerIdent)
|
||||
{
|
||||
$oLang = oxRegistry::getLang();
|
||||
$sTranslationIdent = 'D3_USERSONLINE_CLASS_'.strtoupper($sControllerIdent);
|
||||
$sTranslation = $oLang->translateString(
|
||||
$sTranslationIdent,
|
||||
null,
|
||||
false
|
||||
);
|
||||
|
||||
if ($sTranslation !== $sTranslationIdent) {
|
||||
return $sTranslation;
|
||||
} else {
|
||||
$sTranslationIdent = 'PAGE_TITLE_'.strtoupper($sControllerIdent);
|
||||
$sTranslation = $oLang->translateString(
|
||||
$sTranslationIdent,
|
||||
null,
|
||||
true
|
||||
);
|
||||
if ($sTranslation !== $sTranslationIdent) {
|
||||
return $sTranslation;
|
||||
}
|
||||
}
|
||||
|
||||
return ucfirst($sControllerIdent);
|
||||
}
|
||||
}
|
14
copy_this/modules/d3/d3usersonline/menu.xml
Normal file
14
copy_this/modules/d3/d3usersonline/menu.xml
Normal file
@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-15"?>
|
||||
<OX>
|
||||
<OXMENU id="d3mxd3modules">
|
||||
<MAINMENU id="d3mxusersonline">
|
||||
<SUBMENU id="d3mxusersonline_settings" cl="d3_cfg_usersonline" list="d3_cfg_usersonline_list">
|
||||
<TAB id="d3tbclussersonline_settings_main" cl="d3_cfg_usersonline_main" />
|
||||
<TAB id="d3tbcl_licence" cl="d3_cfg_usersonline_licence" />
|
||||
</SUBMENU>
|
||||
<SUBMENU id="d3mxusersonline_analysis" cl="d3_usersonline" list="d3_usersonline_list">
|
||||
<TAB id="d3tbclusersonline_currvisitors" cl="d3_usersonline_statistic" />
|
||||
</SUBMENU>
|
||||
</MAINMENU>
|
||||
</OXMENU>
|
||||
</OX>
|
@ -30,11 +30,13 @@ $aModule = array(
|
||||
'title' =>
|
||||
(class_exists('d3utils') ? d3utils::getInstance()->getD3Logo() : 'D³') . ' Users Online',
|
||||
'description' => array(
|
||||
'de' => 'Lassen Sie sich anonym im Shop anzeigen, wie viele Benutzer zur Zeit Ihren Shop besuchen und welche Seiten angezeigt werden. Das Modul speichert nicht die IP-Adresse oder sonstige Daten des Nutzers. Damit genügen Sie auch dem deutschen Recht.',
|
||||
'de' => 'Lassen Sie sich anonym im Shop anzeigen, wie viele Benutzer zur Zeit Ihren Shop besuchen und welche '.
|
||||
'Seiten angezeigt werden. Das Modul speichert nicht die IP-Adresse oder sonstige Daten des Nutzers. Damit '.
|
||||
'genügen Sie auch dem deutschen Recht.',
|
||||
'en' => '',
|
||||
),
|
||||
'thumbnail' => 'picture.png',
|
||||
'version' => '2.0.0.2',
|
||||
'version' => '2.1.0.0',
|
||||
'author' => 'D³ Data Development (Inh.: Thomas Dartsch)',
|
||||
'email' => 'support@shopmodule.com',
|
||||
'url' => 'http://www.oxidmodule.com/',
|
||||
@ -43,16 +45,28 @@ $aModule = array(
|
||||
),
|
||||
'files' => array(
|
||||
'd3usersonline' => 'd3/d3usersonline/models/d3usersonline.php',
|
||||
'd3usersonline_update' => 'd3/d3usersonline/models/d3usersonline_update.php',
|
||||
'd3usersonline_update' => 'd3/d3usersonline/setup/d3usersonline_update.php',
|
||||
'd3_cfg_usersonline' => 'd3/d3usersonline/controllers/admin/d3_cfg_usersonline.php',
|
||||
'd3_cfg_usersonline_licence' => 'd3/d3usersonline/controllers/admin/d3_cfg_usersonline_licence.php',
|
||||
'd3_cfg_usersonline_list' => 'd3/d3usersonline/controllers/admin/d3_cfg_usersonline_list.php',
|
||||
'd3_cfg_usersonline_main' => 'd3/d3usersonline/controllers/admin/d3_cfg_usersonline_main.php',
|
||||
'd3_usersonline' => 'd3/d3usersonline/controllers/admin/d3_usersonline.php',
|
||||
'd3_usersonline_list' => 'd3/d3usersonline/controllers/admin/d3_usersonline_list.php',
|
||||
'd3_usersonline_statistic' => 'd3/d3usersonline/controllers/admin/d3_usersonline_statistic.php',
|
||||
),
|
||||
'templates' => array(
|
||||
//'d3_cfg_extsearch_main.tpl' => 'd3/d3_extsearch/views/admin/tpl/d3_cfg_extsearch_main.tpl',
|
||||
'd3_cfg_usersonline_main.tpl' => 'd3/d3usersonline/views/admin/tpl/d3_cfg_usersonline_main.tpl',
|
||||
'd3_usersonline_statistic.tpl' => 'd3/d3usersonline/views/admin/tpl/d3_usersonline_statistic.tpl',
|
||||
),
|
||||
'events' => array(
|
||||
'onActivate' => 'd3install::checkUpdateStart',
|
||||
),
|
||||
'blocks' => array(
|
||||
array('template' => 'layout/sidebar.tpl', 'block' => 'sidebar_categoriestree',
|
||||
'file' => 'views/blocks/layout/d3usersonline_sidebar.tpl'),
|
||||
)
|
||||
'd3FileRegister' => array(
|
||||
'd3/d3usersonline/IntelliSenseHelper.php',
|
||||
'd3/d3usersonline/metadata.php',
|
||||
'd3/d3usersonline/translations/de/d3usersonline_lang.php',
|
||||
'd3/d3usersonline/translations/en/d3usersonline_lang.php',
|
||||
'd3/d3usersonline/views/admin/de/d3usersonline_lang.php',
|
||||
'd3/d3usersonline/views/admin/en/d3usersonline_lang.php',
|
||||
),
|
||||
);
|
@ -32,6 +32,9 @@ class d3usersonline extends oxbase
|
||||
protected $_httpXComingFrom = null;
|
||||
protected $_httpComingFrom = null;
|
||||
|
||||
protected $_iDeleteThreshold = 30; // Zeitdifferenz zwischen 2 Löschaufträgen
|
||||
protected $_iExpTime = 600; // Ablaufzeit für inaktive Benutzer
|
||||
|
||||
/**
|
||||
* constructor
|
||||
*/
|
||||
@ -44,12 +47,19 @@ class d3usersonline extends oxbase
|
||||
/**
|
||||
* @param $iExpTime
|
||||
*/
|
||||
public function clearOldItems($iExpTime)
|
||||
public function clearOldItems()
|
||||
{
|
||||
startProfile(__METHOD__);
|
||||
|
||||
$exptime = time() - $iExpTime;
|
||||
oxDb::getDb()->Execute("delete from ".$this->getViewName()." where timevisit < $exptime");
|
||||
$iTime = time();
|
||||
$iLastDeleteTime = oxRegistry::getConfig()->getShopConfVar('iLastDeleteTime', null, 'd3usersonline');
|
||||
|
||||
if ($iTime > $iLastDeleteTime + $this->_iDeleteThreshold) {
|
||||
$iExptime = $iTime - $this->_iExpTime;
|
||||
oxDb::getDb()->Execute("delete from " . $this->getViewName() . " where timevisit < $iExptime");
|
||||
|
||||
oxRegistry::getConfig()->saveShopConfVar('int', 'iLastDeleteTime', $iTime, null, 'd3usersonline');
|
||||
}
|
||||
|
||||
stopProfile(__METHOD__);
|
||||
}
|
||||
@ -57,23 +67,28 @@ class d3usersonline extends oxbase
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
public function getUserCount()
|
||||
public function getUserCount($blGroupByClass = false)
|
||||
{
|
||||
startProfile(__METHOD__);
|
||||
|
||||
$sSelect = "select count(oxid) AS counter, oxclass from ".$this->getViewName()." GROUP BY oxclass ORDER BY counter desc";
|
||||
$aRecords = oxDb::getDb(oxDb::FETCH_MODE_ASSOC)->getArray($sSelect);
|
||||
if ($blGroupByClass) {
|
||||
$sSelect = "SELECT count(oxid) AS counter, oxclass FROM " .
|
||||
$this->getViewName() . " GROUP BY oxclass ORDER BY counter DESC";
|
||||
} else {
|
||||
$sSelect = "select count(oxid) AS counter, oxclass, oxpage from ".
|
||||
$this->getViewName()." GROUP BY oxclass, oxpage ORDER BY counter desc";
|
||||
}
|
||||
$aRecords = oxDb::getDb(oxDb::FETCH_MODE_ASSOC)->getAll($sSelect);
|
||||
|
||||
$iAllCounter = 0;
|
||||
$aUserClasses = array();
|
||||
if ($aRecords && is_array($aRecords) && count($aRecords))
|
||||
{
|
||||
foreach ($aRecords as $aRecord)
|
||||
{
|
||||
if ($aRecords && is_array($aRecords) && count($aRecords)) {
|
||||
foreach ($aRecords as $aRecord) {
|
||||
$aRecord = array_change_key_case($aRecord, CASE_UPPER);
|
||||
|
||||
$oTmp = new stdClass;
|
||||
$oTmp->classname = $aRecord['OXCLASS'];
|
||||
$oTmp->page = $aRecord['OXPAGE'];
|
||||
$oTmp->counter = $aRecord['COUNTER'];
|
||||
$iAllCounter += $aRecord['COUNTER'];
|
||||
$aUserClasses['classes'][] = $oTmp;
|
||||
@ -95,7 +110,8 @@ class d3usersonline extends oxbase
|
||||
|
||||
$aValues = array(
|
||||
'timevisit' => time(),
|
||||
'oxclass' => oxRegistry::getConfig()->getActiveView()->getClassName()
|
||||
'oxclass' => oxRegistry::getConfig()->getActiveView()->getClassName(),
|
||||
'oxpage' => $this->getPageIdent(),
|
||||
);
|
||||
|
||||
$this->assign($aValues);
|
||||
@ -104,6 +120,51 @@ class d3usersonline extends oxbase
|
||||
stopProfile(__METHOD__);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return null|string
|
||||
*/
|
||||
public function getPageIdent()
|
||||
{
|
||||
switch (strtolower(oxRegistry::getConfig()->getActiveView()->getClassName()))
|
||||
{
|
||||
case 'details':
|
||||
case 'oxwarticledetails':
|
||||
if (($oView = oxRegistry::getConfig()->getActiveView())
|
||||
&& method_exists($oView, 'getProduct')
|
||||
) {
|
||||
return $oView->getProduct()->getFieldData('oxtitle');
|
||||
}
|
||||
return null;
|
||||
case 'alist':
|
||||
case 'manufacturerlist':
|
||||
case 'vendorlist':
|
||||
if (($oView = oxRegistry::getConfig()->getActiveView())
|
||||
&& method_exists($oView, 'getTitle')
|
||||
) {
|
||||
return $oView->getTitle();
|
||||
}
|
||||
return null;
|
||||
case 'search':
|
||||
return oxRegistry::getConfig()->getRequestParameter('searchparam');
|
||||
case 'content':
|
||||
if (($oView = oxRegistry::getConfig()->getActiveView())
|
||||
&& method_exists($oView, 'getContent')
|
||||
) {
|
||||
return $oView->getContent()->getFieldData('oxtitle');
|
||||
}
|
||||
return null;
|
||||
case 'tag':
|
||||
if (($oView = oxRegistry::getConfig()->getActiveView())
|
||||
&& method_exists($oView, 'getTag')
|
||||
) {
|
||||
return $oView->getTag();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
@ -130,50 +191,43 @@ class d3usersonline extends oxbase
|
||||
$this->_getIpData('_httpComingFrom', 'HTTP_COMING_FROM');
|
||||
|
||||
// Gets the default ip sent by the user
|
||||
if (!empty($this->_remoteAddr))
|
||||
if (!empty($this->_remoteAddr)) {
|
||||
$sDirectIp = $this->_remoteAddr;
|
||||
}
|
||||
|
||||
// Gets the proxy ip sent by the user
|
||||
if (!empty($this->_httpXForwardedFor))
|
||||
if (!empty($this->_httpXForwardedFor)) {
|
||||
$sProxyIp = $this->_httpXForwardedFor;
|
||||
else if (!empty($this->_httpXForwarded))
|
||||
} elseif (!empty($this->_httpXForwarded)) {
|
||||
$sProxyIp = $this->_httpXForwarded;
|
||||
else if (!empty($this->_httpForwardedFor))
|
||||
} elseif (!empty($this->_httpForwardedFor)) {
|
||||
$sProxyIp = $this->_httpForwardedFor;
|
||||
else if (!empty($this->_httpForwarded))
|
||||
} elseif (!empty($this->_httpForwarded)) {
|
||||
$sProxyIp = $this->_httpForwarded;
|
||||
else if (!empty($this->_httpVia))
|
||||
} elseif (!empty($this->_httpVia)) {
|
||||
$sProxyIp = $this->_httpVia;
|
||||
else if (!empty($this->_httpXComingFrom))
|
||||
} elseif (!empty($this->_httpXComingFrom)) {
|
||||
$sProxyIp = $this->_httpXComingFrom;
|
||||
else if (!empty($this->_httpComingFrom))
|
||||
} elseif (!empty($this->_httpComingFrom)) {
|
||||
$sProxyIp = $this->_httpComingFrom;
|
||||
}
|
||||
|
||||
// Returns the true IP if it has been found, else ...
|
||||
if (empty($sProxyIp))
|
||||
{
|
||||
if (empty($sProxyIp)) {
|
||||
// True IP without proxy
|
||||
return $sDirectIp;
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
$blIsIp = preg_match('@^([0-9]{1,3}.){3,3}[0-9]{1,3}@', $sProxyIp, $aMatches);
|
||||
|
||||
if ($blIsIp && (count($aMatches) > 0))
|
||||
{
|
||||
if ($blIsIp && (count($aMatches) > 0)) {
|
||||
// True IP behind a proxy
|
||||
return $aMatches[0];
|
||||
}
|
||||
else
|
||||
{
|
||||
if (empty($this->_httpClientIp))
|
||||
{
|
||||
} else {
|
||||
if (empty($this->_httpClientIp)) {
|
||||
// Can't define IP: there is a proxy but we don't have
|
||||
// information about the true IP
|
||||
return "(unbekannt) " . $sProxyIp;
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
// better than nothing
|
||||
return $this->_httpClientIp;
|
||||
}
|
||||
@ -187,14 +241,14 @@ class d3usersonline extends oxbase
|
||||
*/
|
||||
protected function _getIpData($sTargetVarName, $sDataName)
|
||||
{
|
||||
if (empty($this->{$sTargetVarName}))
|
||||
{
|
||||
if (!empty($_SERVER) && isset($_SERVER[$sDataName]))
|
||||
if (empty($this->{$sTargetVarName})) {
|
||||
if (!empty($_SERVER) && isset($_SERVER[$sDataName])) {
|
||||
$this->{$sTargetVarName} = $_SERVER[$sDataName];
|
||||
else if (!empty($_ENV) && isset($_ENV[$sDataName]))
|
||||
} elseif (!empty($_ENV) && isset($_ENV[$sDataName])) {
|
||||
$this->{$sTargetVarName} = $_ENV[$sDataName];
|
||||
else if (@getenv($sDataName))
|
||||
} elseif (@getenv($sDataName)) {
|
||||
$this->{$sTargetVarName} = getenv($sDataName);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -20,7 +20,6 @@
|
||||
class d3_oxcmp_utils_usersonline extends d3_oxcmp_utils_usersonline_parent
|
||||
{
|
||||
protected $_blIsComponent = true;
|
||||
protected $_iExpTime = 600; // (in seconds)
|
||||
protected $_sD3UsersOnlineModId = 'd3usersonline';
|
||||
|
||||
/**
|
||||
@ -30,16 +29,14 @@ class d3_oxcmp_utils_usersonline extends d3_oxcmp_utils_usersonline_parent
|
||||
{
|
||||
$sRet = parent::render();
|
||||
|
||||
if (d3_cfg_mod::get($this->_sD3UsersOnlineModId)->isActive())
|
||||
{
|
||||
if (d3_cfg_mod::get($this->_sD3UsersOnlineModId)->isActive()) {
|
||||
/** @var d3usersonline $oUsersOnline */
|
||||
$oUsersOnline = oxNew('d3usersonline');
|
||||
$oUsersOnline->clearOldItems($this->_iExpTime);
|
||||
$oUsersOnline->clearOldItems();
|
||||
$oUsersOnline->setActTimeVisit();
|
||||
|
||||
$oUser = $this->getUser();
|
||||
if ($oUser && strtolower($oUser->getFieldData('oxrights')) == 'malladmin')
|
||||
{
|
||||
if ($oUser && strtolower($oUser->getFieldData('oxrights')) == 'malladmin') {
|
||||
/** @var oxview $oActView */
|
||||
$oActView = $this->getParent();
|
||||
$oActView->addTplParam('aUsersOnline', $oUsersOnline->getUserCount());
|
||||
|
@ -22,20 +22,24 @@ class d3usersonline_update extends d3install_updatebase
|
||||
{
|
||||
public $sModKey = 'd3usersonline';
|
||||
public $sModName = 'Users Online';
|
||||
public $sModVersion = '2.0.0.2';
|
||||
public $sModRevision = '28';
|
||||
public $sBaseConf = 'Z5yR2NUcFoyV3BHTVFTZDZ5bFByMmtkTDh5YjFMUW5JV0QrZ0dTeEliMVJTREFSTzRkRTAySEJzblEwU
|
||||
GFXMjNMM0RCQXA0NzNEaXA2anJ0Y2dlRWNNM3l3UlB2M0ZoQlFwMkhsM1QwVjh1K0hmdTMzU0wyT3lKe
|
||||
k84UTQ2d0phQzlRcWdxOUZQNzIyVFlERHdUZm5YeENPanFlVTUxclJnZWtaTENOKzhuYkpvQ1N3eDBYO
|
||||
EEvRnFqQ2FzUXVCQnQ2QkJVOXBYSVNLOExnK3RTb2c1OTdzaE55N0d6ZnM5VFd4TE1oR09oZ0ZoK0RhL
|
||||
29tZ0pLWGhDWFpXK1ZncXpPOTZ2OTBSdEQzdnYyUTduZy96N1JYeGlrQ3JvNlplVEg1aHVEY2hJRTFha
|
||||
k09';
|
||||
public $sModVersion = '2.1.0.0';
|
||||
public $sModRevision = '2100';
|
||||
public $sBaseConf = 'qWOv2==Y0dBTjQ4SGQ5Z0wwRVduakMxL01XL1c2dWlpK0p0bEJQeGZEcldMN3hINm5jOTJCWmV6MWhyV
|
||||
FVDVS9KQ3hwWUtUQmM3d1RVLzBVNGZISCsxVG0wWmVlNTlYOUNGQ0g2b2Z0NGlYQWZXZGprUXdZTzE0c
|
||||
zRHbGJKaEx0aWZNc3ZSTC9FdU10eHhadDA1c3NZdFlaNmZGQWF0VzUzVWxRQllhTFYxdmQyQTBLekRRM
|
||||
jhrdDB5M0RnWWJQM3NMSVhBQ2RkS1l2WWJPV3lTNlNWOEwrSGxHdElTMmhoZ2FPYUhQN0lVOEpDZmVwY
|
||||
0JLWndPRjVidU4rQzM3V29lcXBuaFFGdEdQZGxZZUFyWjFIZkVXVnZpT0NzTkhjV2drRzJCVStIOHVRb
|
||||
0xLMGJvTTN5Z2ZYV0ZMY2NtY1dCVGkra0M=';
|
||||
public $sRequirements = '';
|
||||
public $sBaseValue = '';
|
||||
|
||||
public $sMinModCfgVersion = '4.4.0.0';
|
||||
|
||||
protected $_aUpdateMethods = array(
|
||||
array('check' => 'checkUsersOnlineTableExist',
|
||||
'do' => 'updateUsersOnlineTableExist'),
|
||||
array('check' => 'checkUsersOnlineTableEngine',
|
||||
'do' => 'updateUsersOnlineTableEngine'),
|
||||
array('check' => 'checkRenameFields',
|
||||
'do' => 'fixRenameFields'),
|
||||
array('check' => 'checkDeleteFields',
|
||||
@ -46,40 +50,58 @@ k09';
|
||||
'do' => 'fixFields'),
|
||||
array('check' => 'checkIndizes',
|
||||
'do' => 'fixIndizes'),
|
||||
array('check' => 'hasOldModuleFiles',
|
||||
'do' => 'deleteOldModuleFiles'),
|
||||
array('check' => 'hasUnregisteredFiles',
|
||||
'do' => 'showUnregisteredFiles'),
|
||||
array('check' => 'checkModCfgSameRevision',
|
||||
'do' => 'updateModCfgSameRevision'),
|
||||
);
|
||||
|
||||
public $aOldModuleFiles = array(
|
||||
'd3/d3usersonline/models/d3usersonline_update.php',
|
||||
);
|
||||
|
||||
public $aFields = array(
|
||||
'OXID' => array(
|
||||
'sTableName' => 'd3usersonline',
|
||||
'sFieldName' => 'OXID',
|
||||
'sType' => 'char(32)',
|
||||
'blNull' => FALSE,
|
||||
'sDefault' => FALSE,
|
||||
'blNull' => false,
|
||||
'sDefault' => false,
|
||||
'sComment' => '',
|
||||
'sExtra' => '',
|
||||
'blMultilang' => FALSE,
|
||||
'blMultilang' => false,
|
||||
),
|
||||
'TIMEVISIT' => array(
|
||||
'sTableName' => 'd3usersonline',
|
||||
'sFieldName' => 'TIMEVISIT',
|
||||
'sType' => 'INT(11)',
|
||||
'blNull' => FALSE,
|
||||
'blNull' => false,
|
||||
'sDefault' => '0',
|
||||
'sComment' => '',
|
||||
'sExtra' => '',
|
||||
'blMultilang' => FALSE,
|
||||
'blMultilang' => false,
|
||||
),
|
||||
'OXCLASS' => array(
|
||||
'sTableName' => 'd3usersonline',
|
||||
'sFieldName' => 'OXCLASS',
|
||||
'sType' => 'VARCHAR(32)',
|
||||
'blNull' => FALSE,
|
||||
'sDefault' => FALSE,
|
||||
'blNull' => false,
|
||||
'sDefault' => false,
|
||||
'sComment' => '',
|
||||
'sExtra' => '',
|
||||
'blMultilang' => FALSE,
|
||||
'blMultilang' => false,
|
||||
),
|
||||
'OXPAGE' => array(
|
||||
'sTableName' => 'd3usersonline',
|
||||
'sFieldName' => 'OXPAGE',
|
||||
'sType' => 'VARCHAR(32)',
|
||||
'blNull' => false,
|
||||
'sDefault' => false,
|
||||
'sComment' => '',
|
||||
'sExtra' => '',
|
||||
'blMultilang' => false,
|
||||
),
|
||||
);
|
||||
|
||||
@ -99,6 +121,23 @@ k09';
|
||||
'OXCLASS' => 'OXCLASS',
|
||||
),
|
||||
),
|
||||
'CLASSPAGE' => array(
|
||||
'sTableName' => 'd3usersonline',
|
||||
'sType' => '',
|
||||
'sName' => 'CLASSPAGE',
|
||||
'aFields' => array(
|
||||
'OXCLASS' => 'OXCLASS',
|
||||
'OXPAGE' => 'OXPAGE',
|
||||
),
|
||||
),
|
||||
'TIMEVISIT' => array(
|
||||
'sTableName' => 'd3usersonline',
|
||||
'sType' => '',
|
||||
'sName' => 'TIMEVISIT',
|
||||
'aFields' => array(
|
||||
'TIMEVISIT' => 'TIMEVISIT',
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
public $aRenameFields = array(
|
||||
@ -106,25 +145,25 @@ k09';
|
||||
'sTableName' => 'd3usersonline',
|
||||
'mOldFieldNames' => array('id', 'ID'), // is case sensitive
|
||||
'sFieldName' => 'OXID',
|
||||
'blMultilang' => FALSE,
|
||||
'blMultilang' => false,
|
||||
),
|
||||
'VISITOR' => array(
|
||||
'sTableName' => 'd3usersonline',
|
||||
'mOldFieldNames' => array('visitor'), // is case sensitive
|
||||
'sFieldName' => 'VISITOR',
|
||||
'blMultilang' => FALSE,
|
||||
'blMultilang' => false,
|
||||
),
|
||||
'TIMEVISIT' => array(
|
||||
'sTableName' => 'd3usersonline',
|
||||
'mOldFieldNames' => array('timevisit'), // is case sensitive
|
||||
'sFieldName' => 'TIMEVISIT',
|
||||
'blMultilang' => FALSE,
|
||||
'blMultilang' => false,
|
||||
),
|
||||
'OXCLASS' => array(
|
||||
'sTableName' => 'd3usersonline',
|
||||
'mOldFieldNames' => array('oxclass'), // is case sensitive
|
||||
'sFieldName' => 'OXCLASS',
|
||||
'blMultilang' => FALSE,
|
||||
'blMultilang' => false,
|
||||
),
|
||||
);
|
||||
|
||||
@ -132,14 +171,14 @@ k09';
|
||||
'VISITOR' => array(
|
||||
'sTableName' => 'd3usersonline',
|
||||
'sFieldName' => 'VISITOR',
|
||||
'blMultilang' => FALSE,
|
||||
'blMultilang' => false,
|
||||
),
|
||||
);
|
||||
|
||||
protected $_aRefreshMetaModuleIds = array('d3usersonline');
|
||||
|
||||
/**
|
||||
* @return bool TRUE, if table is missing
|
||||
* @return bool true, if table is missing
|
||||
*/
|
||||
public function checkUsersOnlineTableExist()
|
||||
{
|
||||
@ -151,26 +190,49 @@ k09';
|
||||
*/
|
||||
public function updateUsersOnlineTableExist()
|
||||
{
|
||||
$blRet = TRUE;
|
||||
$blRet = true;
|
||||
|
||||
if ($this->checkUsersOnlineTableExist())
|
||||
{
|
||||
$aRet = $this->_addTable('d3usersonline', $this->aFields, $this->aIndizes, 'users online', 'MyISAM');
|
||||
$blRet = $aRet['blRet'];
|
||||
$this->_setActionLog('SQL', $aRet['sql'], __METHOD__);
|
||||
if ($this->checkUsersOnlineTableExist()) {
|
||||
$blRet = $this->_addTable2('d3usersonline', $this->aFields, $this->aIndizes, 'users online', 'InnoDB');
|
||||
}
|
||||
|
||||
return $blRet;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool true, if table has wrong engine
|
||||
*/
|
||||
public function checkUsersOnlineTableEngine()
|
||||
{
|
||||
/** @var d3installdbtable $oDbTable */
|
||||
$oDbTable = oxNew('d3installdbtable', $this);
|
||||
$aData = $oDbTable->getTableData('d3usersonline');
|
||||
|
||||
if (isset($aData) && count($aData) && isset($aData['ENGINE']) && $aData['ENGINE'] == 'InnoDB') {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
public function updateUsersOnlineTableEngine()
|
||||
{
|
||||
/** @var d3installdbtable $oDbTable */
|
||||
$oDbTable = oxNew('d3installdbtable', $this);
|
||||
$blRet = $oDbTable->changeTableEngine('d3usersonline', 'InnoDB');
|
||||
return $blRet;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
public function checkModCfgItemExist()
|
||||
{
|
||||
$blRet = FALSE;
|
||||
foreach ($this->_getShopList() as $oShop)
|
||||
{
|
||||
$blRet = false;
|
||||
foreach ($this->getShopList() as $oShop) {
|
||||
/** @var $oShop oxshop */
|
||||
$aWhere = array(
|
||||
'oxmodid' => $this->sModKey,
|
||||
@ -180,8 +242,7 @@ k09';
|
||||
|
||||
$blRet = $this->_checkTableItemNotExist('d3_cfg_mod', $aWhere);
|
||||
|
||||
if ($blRet)
|
||||
{
|
||||
if ($blRet) {
|
||||
return $blRet;
|
||||
}
|
||||
}
|
||||
@ -194,12 +255,10 @@ k09';
|
||||
*/
|
||||
public function updateModCfgItemExist()
|
||||
{
|
||||
$blRet = FALSE;
|
||||
$blRet = false;
|
||||
|
||||
if ($this->checkModCfgItemExist())
|
||||
{
|
||||
foreach ($this->_getShopList() as $oShop)
|
||||
{
|
||||
if ($this->checkModCfgItemExist()) {
|
||||
foreach ($this->getShopList() as $oShop) {
|
||||
/** @var $oShop oxshop */
|
||||
$aWhere = array(
|
||||
'oxmodid' => $this->sModKey,
|
||||
@ -207,86 +266,98 @@ k09';
|
||||
'oxnewrevision' => $this->sModRevision,
|
||||
);
|
||||
|
||||
if ($this->_checkTableItemNotExist('d3_cfg_mod', $aWhere))
|
||||
{
|
||||
if ($this->_checkTableItemNotExist('d3_cfg_mod', $aWhere)) {
|
||||
// update don't use this property
|
||||
unset($aWhere['oxnewrevision']);
|
||||
|
||||
$aInsertFields = array(
|
||||
'OXID' => array (
|
||||
'content' => "md5('" . $this->sModKey . " " . $oShop->getId() . " de')",
|
||||
'force_update' => TRUE,
|
||||
'use_quote' => FALSE,
|
||||
'force_update' => true,
|
||||
'use_quote' => false,
|
||||
),
|
||||
'OXSHOPID' => array (
|
||||
'content' => $oShop->getId(),
|
||||
'force_update' => TRUE,
|
||||
'use_quote' => TRUE,
|
||||
'force_update' => true,
|
||||
'use_quote' => true,
|
||||
),
|
||||
'OXMODID' => array (
|
||||
'content' => $this->sModKey,
|
||||
'force_update' => TRUE,
|
||||
'use_quote' => TRUE,
|
||||
'force_update' => true,
|
||||
'use_quote' => true,
|
||||
),
|
||||
'OXNAME' => array (
|
||||
'content' => $this->sModName,
|
||||
'force_update' => TRUE,
|
||||
'use_quote' => TRUE,
|
||||
'force_update' => true,
|
||||
'use_quote' => true,
|
||||
),
|
||||
'OXACTIVE' => array (
|
||||
'content' => "0",
|
||||
'force_update' => FALSE,
|
||||
'use_quote' => FALSE,
|
||||
'force_update' => false,
|
||||
'use_quote' => false,
|
||||
),
|
||||
'OXBASECONFIG' => array (
|
||||
'content' => $this->sBaseConf,
|
||||
'force_update' => TRUE,
|
||||
'use_quote' => TRUE,
|
||||
'force_update' => true,
|
||||
'use_quote' => true,
|
||||
),
|
||||
'OXSERIAL' => array (
|
||||
'content' => "",
|
||||
'force_update' => FALSE,
|
||||
'use_quote' => TRUE,
|
||||
'force_update' => false,
|
||||
'use_quote' => true,
|
||||
),
|
||||
'OXINSTALLDATE' => array (
|
||||
'content' => "NOW()",
|
||||
'force_update' => TRUE,
|
||||
'use_quote' => FALSE,
|
||||
'force_update' => true,
|
||||
'use_quote' => false,
|
||||
),
|
||||
'OXVERSION' => array (
|
||||
'content' => $this->sModVersion,
|
||||
'force_update' => TRUE,
|
||||
'use_quote' => TRUE,
|
||||
'force_update' => true,
|
||||
'use_quote' => true,
|
||||
),
|
||||
'OXSHOPVERSION' => array (
|
||||
'content' => oxRegistry::getConfig()->getEdition(),
|
||||
'force_update' => TRUE,
|
||||
'use_quote' => TRUE,
|
||||
'force_update' => true,
|
||||
'use_quote' => true,
|
||||
),
|
||||
'OXREQUIREMENTS' => array (
|
||||
'content' => $this->sRequirements,
|
||||
'force_update' => TRUE,
|
||||
'use_quote' => TRUE,
|
||||
'force_update' => true,
|
||||
'use_quote' => true,
|
||||
),
|
||||
'OXVALUE' => array(
|
||||
'content' => $this->sBaseValue,
|
||||
'force_update' => FALSE,
|
||||
'use_quote' => TRUE,
|
||||
'force_update' => false,
|
||||
'use_quote' => true,
|
||||
),
|
||||
'OXNEWREVISION' => array(
|
||||
'content' => $this->sModRevision,
|
||||
'force_update' => TRUE,
|
||||
'use_quote' => TRUE,
|
||||
'force_update' => true,
|
||||
'use_quote' => true,
|
||||
)
|
||||
);
|
||||
$aRet = $this->_updateTableItem('d3_cfg_mod', $aInsertFields, $aWhere);
|
||||
$blRet = $aRet['blRet'];
|
||||
|
||||
$this->_setActionLog('SQL', $aRet['sql'], __METHOD__);
|
||||
$this->_setUpdateBreak(FALSE);
|
||||
$blRet = $this->_updateTableItem2('d3_cfg_mod', $aInsertFields, $aWhere);
|
||||
$this->setUpdateBreak(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
return $blRet;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
public function hasUnregisteredFiles()
|
||||
{
|
||||
return $this->_hasUnregisteredFiles($this->sModKey, array('d3FileRegister', 'blocks'));
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
public function showUnregisteredFiles()
|
||||
{
|
||||
return $this->_showUnregisteredFiles($this->sModKey, array('d3FileRegister', 'blocks'));
|
||||
}
|
||||
}
|
@ -0,0 +1,48 @@
|
||||
<?php
|
||||
/**
|
||||
* 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 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* 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, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @author D3 Data Development - Daniel Seifert <support@shopmodule.com>
|
||||
* @link http://www.oxidmodule.com
|
||||
*/
|
||||
|
||||
$sLangName = 'Deutsch';
|
||||
$iLangNr = 0;
|
||||
// -------------------------------
|
||||
// RESOURCE IDENTITFIER = STRING
|
||||
// -------------------------------
|
||||
$aLang = array(
|
||||
'charset' => 'ISO-8859-15',
|
||||
|
||||
'd3mxusersonline' => '<i class="fa fa-bar-chart"></i> Benutzer online',
|
||||
'd3mxusersonline_settings' => 'Einstellungen',
|
||||
'd3tbclussersonline_settings_main' => 'Grundeinstellungen',
|
||||
'd3mxusersonline_analysis' => 'Auswertungen',
|
||||
'd3tbclusersonline_currvisitors' => 'aktuelle Besucher',
|
||||
'D3USERSONLINE_NOTACTIVE' => 'Modul ist nicht aktiv',
|
||||
'D3_USERSONLINE_GROUPBYCLASS' => 'Besuche nur nach Shopseiten gruppieren',
|
||||
'D3_USERSONLINE_USERSONLINE' => 'Benutzer online',
|
||||
'D3_USERSONLINE_USER' => 'Benutzer',
|
||||
'D3_USERSONLINE_USERS' => 'Benutzer',
|
||||
'D3_USERSONLINE_ALL' => 'gesamt',
|
||||
'D3_USERSONLINE_SAVE' => 'Speichern',
|
||||
'D3_USERSONLINE_CLASS_ALIST' => 'Artikelliste aus Kategorie',
|
||||
'D3_USERSONLINE_CLASS_MANUFACTURERLIST' => 'Artikelliste aus Hersteller',
|
||||
'D3_USERSONLINE_CLASS_VENDORLIST' => 'Artikelliste aus Lieferant',
|
||||
'D3_USERSONLINE_CLASS_CONTENT' => 'Informationstext',
|
||||
'D3_USERSONLINE_CLASS_OXWARTICLEDETAILS' => 'Detailseite',
|
||||
'D3_USERSONLINE_CLASS_DETAILS' => 'Detailseite',
|
||||
'D3_USERSONLINE_CLASS_START' => 'Startseite',
|
||||
'D3_USERSONLINE_CLASS_TAGS' => 'Stichwort',
|
||||
);
|
@ -0,0 +1,48 @@
|
||||
<?php
|
||||
/**
|
||||
* 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 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* 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, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @author D3 Data Development - Daniel Seifert <support@shopmodule.com>
|
||||
* @link http://www.oxidmodule.com
|
||||
*/
|
||||
|
||||
$sLangName = 'Deutsch';
|
||||
$iLangNr = 0;
|
||||
// -------------------------------
|
||||
// RESOURCE IDENTITFIER = STRING
|
||||
// -------------------------------
|
||||
$aLang = array(
|
||||
'charset' => 'ISO-8859-15',
|
||||
|
||||
'd3mxusersonline' => '<i class="fa fa-bar-chart"></i> Users online',
|
||||
'd3mxusersonline_settings' => 'Settings',
|
||||
'd3tbclussersonline_settings_main' => 'Main Settings',
|
||||
'd3mxusersonline_analysis' => 'Analysis',
|
||||
'd3tbclusersonline_currvisitors' => 'current visitors',
|
||||
'D3USERSONLINE_NOTACTIVE' => "Module isn't active",
|
||||
'D3_USERSONLINE_GROUPBYCLASS' => 'group visitors by shop pages only',
|
||||
'D3_USERSONLINE_USERSONLINE' => 'Users online',
|
||||
'D3_USERSONLINE_USER' => 'user',
|
||||
'D3_USERSONLINE_USERS' => 'users',
|
||||
'D3_USERSONLINE_ALL' => 'all',
|
||||
'D3_USERSONLINE_SAVE' => 'save',
|
||||
'D3_USERSONLINE_CLASS_ALIST' => 'article list from category',
|
||||
'D3_USERSONLINE_CLASS_MANUFACTURERLIST' => 'article list from manufacturer',
|
||||
'D3_USERSONLINE_CLASS_VENDORLIST' => 'article list from vendor',
|
||||
'D3_USERSONLINE_CLASS_CONTENT' => 'information text',
|
||||
'D3_USERSONLINE_CLASS_OXWARTICLEDETAILS' => 'details page',
|
||||
'D3_USERSONLINE_CLASS_DETAILS' => 'details page',
|
||||
'D3_USERSONLINE_CLASS_START' => 'start page',
|
||||
'D3_USERSONLINE_CLASS_TAGS' => 'tag',
|
||||
);
|
@ -0,0 +1,144 @@
|
||||
[{include file="headitem.tpl" title="d3tbclussersonline_settings_main"|oxmultilangassign}]
|
||||
|
||||
<script type="text/javascript">
|
||||
<!--
|
||||
[{if $updatelist == 1}]
|
||||
UpdateList('[{$oxid}]');
|
||||
[{/if}]
|
||||
|
||||
function UpdateList( sID)
|
||||
{
|
||||
var oSearch = parent.list.document.getElementById("search");
|
||||
oSearch.oxid.value=sID;
|
||||
oSearch.fnc.value='';
|
||||
oSearch.submit();
|
||||
}
|
||||
|
||||
function EditThis( sID)
|
||||
{
|
||||
var oTransfer = document.getElementById("transfer");
|
||||
oTransfer.oxid.value=sID;
|
||||
oTransfer.cl.value='';
|
||||
oTransfer.submit();
|
||||
|
||||
var oSearch = parent.list.document.getElementById("search");
|
||||
oSearch.actedit.value = 0;
|
||||
oSearch.oxid.value=sID;
|
||||
oSearch.submit();
|
||||
}
|
||||
|
||||
function _groupExp(el) {
|
||||
var _cur = el.parentNode;
|
||||
|
||||
if (_cur.className == "exp") _cur.className = "";
|
||||
else _cur.className = "exp";
|
||||
}
|
||||
|
||||
-->
|
||||
</script>
|
||||
|
||||
<style type="text/css">
|
||||
<!--
|
||||
fieldset {
|
||||
border: 1px inset black;
|
||||
background-color: #F0F0F0;
|
||||
}
|
||||
|
||||
legend {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.groupExp dl dt {
|
||||
font-weight: normal;
|
||||
width: 55%;
|
||||
padding-left: 10px;
|
||||
}
|
||||
|
||||
.groupExp.highlighted {
|
||||
background-color: #CD0210;
|
||||
}
|
||||
|
||||
.groupExp.highlighted a.rc b {
|
||||
color: white;
|
||||
}
|
||||
|
||||
.groupExp.highlighted .exp a.rc b {
|
||||
color: black;
|
||||
}
|
||||
|
||||
.groupExp.highlighted .exp {
|
||||
background-color: #F0F0F0;
|
||||
}
|
||||
|
||||
.ext_edittext {
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
td.edittext {
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
.confinput {
|
||||
width: 300px;
|
||||
height: 70px;
|
||||
}
|
||||
|
||||
-->
|
||||
</style>
|
||||
|
||||
[{if $readonly}]
|
||||
[{assign var="readonly" value="readonly disabled"}]
|
||||
[{else}]
|
||||
[{assign var="readonly" value=""}]
|
||||
[{/if}]
|
||||
|
||||
<form name="transfer" id="transfer" action="[{$oViewConf->getSelfLink()}]" method="post">
|
||||
[{$oViewConf->getHiddenSid()}]
|
||||
<input type="hidden" name="oxid" value="[{$oxid}]">
|
||||
<input type="hidden" name="cl" value="[{$oViewConf->getActiveClassName()}]">
|
||||
<input type="hidden" name="actshop" value="[{$shop->id}]">
|
||||
<input type="hidden" name="editlanguage" value="[{$editlanguage}]">
|
||||
</form>
|
||||
|
||||
<form name="myedit" id="myedit" action="[{$oViewConf->getSelfLink()}]" method="post">
|
||||
[{$oViewConf->getHiddenSid()}]
|
||||
<input type="hidden" name="cl" value="[{$oViewConf->getActiveClassName()}]">
|
||||
<input type="hidden" name="fnc" value="save">
|
||||
<input type="hidden" name="oxid" value="[{$oxid}]">
|
||||
<input type="hidden" name="editval[oxid]" value="[{$oxid}]">
|
||||
|
||||
<table border="0" width="98%">
|
||||
<tr>
|
||||
<td valign="top" class="edittext">
|
||||
|
||||
[{include file="d3_cfg_mod_active.tpl"}]
|
||||
|
||||
[{if $oView->getValueStatus() == 'error'}]
|
||||
<hr>
|
||||
<b>[{oxmultilang ident="D3_CFG_MOD_GENERAL_NOCONFIG_DESC"}]</b>
|
||||
<br>
|
||||
<br>
|
||||
<span class="d3modcfg_btn fixed icon status_attention">
|
||||
<input type="submit" value="[{oxmultilang ident="D3_CFG_MOD_GENERAL_NOCONFIG_BTN"}]">
|
||||
<span></span>
|
||||
</span>
|
||||
[{else}]
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td class="edittext ext_edittext" align="left">
|
||||
<br>
|
||||
<span class="d3modcfg_btn icon status_ok">
|
||||
<input type="submit" name="save" value="[{oxmultilang ident="D3_USERSONLINE_SAVE"}]">
|
||||
<span></span>
|
||||
</span>
|
||||
<br><br>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
[{/if}]
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
|
||||
[{include file="d3_cfg_mod_inc.tpl"}]
|
@ -0,0 +1,161 @@
|
||||
[{include file="headitem.tpl" title="d3tbclussersonline_settings_main"|oxmultilangassign}]
|
||||
|
||||
<script type="text/javascript">
|
||||
<!--
|
||||
[{if $updatelist == 1}]
|
||||
UpdateList('[{$oxid}]');
|
||||
[{/if}]
|
||||
|
||||
function UpdateList( sID)
|
||||
{
|
||||
var oSearch = parent.list.document.getElementById("search");
|
||||
oSearch.oxid.value=sID;
|
||||
oSearch.fnc.value='';
|
||||
oSearch.submit();
|
||||
}
|
||||
|
||||
function EditThis( sID)
|
||||
{
|
||||
var oTransfer = document.getElementById("transfer");
|
||||
oTransfer.oxid.value=sID;
|
||||
oTransfer.cl.value='';
|
||||
oTransfer.submit();
|
||||
|
||||
var oSearch = parent.list.document.getElementById("search");
|
||||
oSearch.actedit.value = 0;
|
||||
oSearch.oxid.value=sID;
|
||||
oSearch.submit();
|
||||
}
|
||||
|
||||
function _groupExp(el) {
|
||||
var _cur = el.parentNode;
|
||||
|
||||
if (_cur.className == "exp") _cur.className = "";
|
||||
else _cur.className = "exp";
|
||||
}
|
||||
|
||||
-->
|
||||
</script>
|
||||
|
||||
<style type="text/css">
|
||||
<!--
|
||||
div.box h3 {
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
fieldset {
|
||||
border: 1px inset black;
|
||||
background-color: #F0F0F0;
|
||||
}
|
||||
|
||||
legend {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.groupExp dl dt {
|
||||
font-weight: normal;
|
||||
width: 55%;
|
||||
padding-left: 10px;
|
||||
}
|
||||
|
||||
.groupExp.highlighted {
|
||||
background-color: #CD0210;
|
||||
}
|
||||
|
||||
.groupExp.highlighted a.rc b {
|
||||
color: white;
|
||||
}
|
||||
|
||||
.groupExp.highlighted .exp a.rc b {
|
||||
color: black;
|
||||
}
|
||||
|
||||
.groupExp.highlighted .exp {
|
||||
background-color: #F0F0F0;
|
||||
}
|
||||
|
||||
.ext_edittext {
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
td.edittext {
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
.confinput {
|
||||
width: 300px;
|
||||
height: 70px;
|
||||
}
|
||||
|
||||
-->
|
||||
</style>
|
||||
|
||||
[{if $readonly}]
|
||||
[{assign var="readonly" value="readonly disabled"}]
|
||||
[{else}]
|
||||
[{assign var="readonly" value=""}]
|
||||
[{/if}]
|
||||
|
||||
<form name="transfer" id="transfer" action="[{$oViewConf->getSelfLink()}]" method="post">
|
||||
[{$oViewConf->getHiddenSid()}]
|
||||
<input type="hidden" name="oxid" value="[{$oxid}]">
|
||||
<input type="hidden" name="cl" value="[{$oViewConf->getActiveClassName()}]">
|
||||
<input type="hidden" name="actshop" value="[{$shop->id}]">
|
||||
<input type="hidden" name="editlanguage" value="[{$editlanguage}]">
|
||||
<input type="hidden" id="groupbyclass" name="groupbyclass" value="false">
|
||||
</form>
|
||||
|
||||
[{d3modcfgcheck modid="d3usersonline"}][{/d3modcfgcheck}]
|
||||
[{if $mod_d3usersonline}]
|
||||
[{assign var="aUsersOnline" value=$oView->getUserCount()}]
|
||||
<input id="groupbyclasscheckbox" value="1" type="checkbox" [{if $blGroupByClass}]checked[{/if}] onchange="document.getElementById('groupbyclass').value = this.checked; document.getElementById('transfer').submit();"> <label for="groupbyclasscheckbox">[{oxmultilang ident="D3_USERSONLINE_GROUPBYCLASS"}]</label>
|
||||
<h3>[{oxmultilang ident="D3_USERSONLINE_USERSONLINE"}]</h3>
|
||||
<div class="content">
|
||||
<table style="border-style: none; width: 100%;">
|
||||
<tr>
|
||||
<td style="border-bottom: 1px solid silver;">
|
||||
[{oxmultilang ident="D3_USERSONLINE_ALL"}]
|
||||
</td>
|
||||
<td style="border-bottom: 1px solid silver; text-align: right; font-weight: bold;">
|
||||
[{$aUsersOnline.all}]
|
||||
</td>
|
||||
<td style="border-bottom: 1px solid silver; text-align: left;">
|
||||
[{if $aUsersOnline.all == 1}]
|
||||
[{oxmultilang ident="D3_USERSONLINE_USER"}]
|
||||
[{else}]
|
||||
[{oxmultilang ident="D3_USERSONLINE_USERS"}]
|
||||
[{/if}]
|
||||
</td>
|
||||
</tr>
|
||||
[{foreach from=$aUsersOnline.classes item="aClassUser"}]
|
||||
<tr>
|
||||
<td>
|
||||
[{if $aClassUser->classname}]
|
||||
[{$oView->getControllerTitle($aClassUser->classname)}]
|
||||
[{else}]
|
||||
undefined
|
||||
[{/if}]
|
||||
[{if $aClassUser->page}]
|
||||
"[{$aClassUser->page}]"
|
||||
[{/if}]
|
||||
:
|
||||
</td>
|
||||
<td style="text-align: right; font-weight: bold;">
|
||||
[{$aClassUser->counter}]
|
||||
</td>
|
||||
<td style="text-align: left;">
|
||||
[{if $aClassUser->counter == 1}]
|
||||
[{oxmultilang ident="D3_USERSONLINE_USER"}]
|
||||
[{else}]
|
||||
[{oxmultilang ident="D3_USERSONLINE_USERS"}]
|
||||
[{/if}]
|
||||
</td>
|
||||
</tr>
|
||||
[{/foreach}]
|
||||
</table>
|
||||
</div>
|
||||
[{else}]
|
||||
[{oxmultilang ident="D3USERSONLINE_NOTACTIVE"}]
|
||||
[{/if}]
|
||||
|
||||
[{include file="d3_cfg_mod_inc.tpl"}]
|
Binary file not shown.
2609
setup+doku/Precheck/d3precheck.php
Normal file
2609
setup+doku/Precheck/d3precheck.php
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,3 +1,20 @@
|
||||
=> 2.1.0.0
|
||||
- Datenbank-Tabelle auf InnoDb geändert
|
||||
- Tabellenindizes für optimierte Abfragen ergänzt
|
||||
- Löschabfragen wegen mglw. hoher Datenbanklast begrenzt
|
||||
- Besuchereinträge wurden um Seitendetails ergänzt
|
||||
- Auswertung im Backend lässt sich zwischen bisheriger und neuer Gruppierung umschalten
|
||||
- Auswertung im Frontend entfernt (#6828)
|
||||
- fehlerhafte Übersetzung korrigiert (#6827)
|
||||
|
||||
=> 2.0.1.1
|
||||
- Precheck für PHP 5.5 und 5.6 angepasst
|
||||
|
||||
=> 2.0.1.0
|
||||
- Statistik steht auch im Adminbereich zur Verfügung
|
||||
- automatische Installation aktualisiert
|
||||
- Modulstruktur angepasst
|
||||
|
||||
=> 2.0.0.2
|
||||
- Datenbankstruktur in automatischer Installation korrigiert
|
||||
|
||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue
Block a user