228 lines
8.7 KiB
PHP
228 lines
8.7 KiB
PHP
<?php
|
|
class stUserTrackerLevelWidgetBackendActions extends stGadgetActions
|
|
{
|
|
|
|
public function executeUserTrackerEnteringWidget()
|
|
{
|
|
|
|
use_helper('I18N', 'Text', 'stAdminGenerator', 'ObjectAdmin', 'stDate', 'stProductImage', 'stCurrency');
|
|
|
|
sfLoader::loadHelpers('stProduct', 'stProduct');
|
|
|
|
$request = $this->getRequest();
|
|
$i18n = $this->getContext()->getI18N();
|
|
|
|
|
|
$context = $this->getContext();
|
|
$this->config = stConfig::getInstance($context);
|
|
$this->config->setCulture($this->getRequestParameter('culture', stLanguage::getOptLanguage()));
|
|
|
|
$config_user_tracker_level = stConfig::getInstance('stUserTrackerLevelBackend');
|
|
|
|
|
|
if (!$config_user_tracker_level->get('enabled_database')) {
|
|
|
|
$i18n = $this->getContext()->getI18n();
|
|
$notice = $i18n->__('Opcja trybu rozszerzonego monitorowania klientów jest wyłączona.')." ".$i18n->__('Aby ją włączyć przejdź do konfiguracji modułu.')." ".'<a href="'.$this->getController()->genUrl("stUserTrackerLevelBackend/config").'" target="_blank">'.$i18n->__('Konfiguracja').'</a>';
|
|
$this->setFlash("info", $notice, false);
|
|
|
|
}
|
|
|
|
$this->number_of_users = 0;
|
|
|
|
$this->is_enabled_database = $config_user_tracker_level->get('enabled_database');
|
|
|
|
if ($config_user_tracker_level->get('enabled_database')) {
|
|
|
|
$c = new Criteria();
|
|
$c->add(stUserTrackerLevelPeer::UPDATED_AT, time() - 1800, Criteria::GREATER_THAN); // tylko rekordy z ostatnich 30 minut
|
|
$c->addDescendingOrderByColumn(stUserTrackerLevelPeer::UPDATED_AT);
|
|
$c->setLimit(5000);
|
|
$stUserTrackerLevel = stUserTrackerLevelPeer::doSelect($c);
|
|
|
|
$this->all_visit = count($stUserTrackerLevel);
|
|
|
|
if($stUserTrackerLevel){
|
|
|
|
$data = array();
|
|
|
|
foreach($stUserTrackerLevel as $st_user_tracker_level)
|
|
{
|
|
|
|
$product = ProductPeer::retrieveByPk($st_user_tracker_level->getProductView());
|
|
|
|
$prodcut_name = "";
|
|
if($product){
|
|
$prodcut_name = $product->getName();
|
|
}
|
|
|
|
|
|
$product = ProductPeer::retrieveByPk($st_user_tracker_level->getAddToBasket());
|
|
$prodcut_basket = "";
|
|
if($product){
|
|
$prodcut_basket = $product->getName();
|
|
}
|
|
|
|
$size = $st_user_tracker_level->getVisitCount();
|
|
|
|
/*if($size == 1){
|
|
$size = 1;
|
|
}
|
|
if($size == 2){
|
|
$size = 2;
|
|
}
|
|
if($size >= 3){
|
|
$size = 3;
|
|
}
|
|
if($size >= 5){
|
|
$size = 5;
|
|
}
|
|
if($size >= 8){
|
|
$size = 8;
|
|
}
|
|
|
|
if($size > 10){
|
|
$size = 1000;
|
|
}*/
|
|
|
|
$active = stUserTrackerLevelInterface::getIsActive($st_user_tracker_level->getCookieId());
|
|
|
|
if($active){
|
|
|
|
if($st_user_tracker_level->getUtColor()==""){
|
|
|
|
$color = stUserTrackerLevelInterface::generateColor();
|
|
$st_user_tracker_level->setUtColor($color);
|
|
$st_user_tracker_level->save();
|
|
}
|
|
|
|
$color = $st_user_tracker_level->getUtColor();
|
|
|
|
}else{
|
|
|
|
$color = "#cccccc";
|
|
|
|
if($size == 1){
|
|
$color = "#eeeeee";
|
|
}
|
|
|
|
if($size == 2){
|
|
$color = "#dddddd";
|
|
}
|
|
}
|
|
|
|
$icon = $active ? st_admin_get_icon('check-circle') : " ";
|
|
|
|
$data[] = array(
|
|
"product" => $prodcut_name,
|
|
"basket" => $prodcut_basket,
|
|
"update" => st_format_date($st_user_tracker_level->getUpdatedAt())." ".$icon,
|
|
"visit" => $st_user_tracker_level->getVisitCount(),
|
|
"active" => $active,
|
|
"count" => $size,
|
|
"color" => $color
|
|
);
|
|
}
|
|
|
|
//emulowanie danych: ilość kółek, procent aktywnych
|
|
//$data = $this->emulateDate(33,80);
|
|
|
|
// zakładamy, że mamy tablicę $dane z wieloma rekordami
|
|
$number_of_row = count($data);
|
|
|
|
// pozostaw tylko ostatnie 500 rekordów, usuwając pozostałe
|
|
if ($number_of_row > 500) {
|
|
$data = array_slice($data, $number_of_row - 500, 500);
|
|
}
|
|
|
|
$number_of_row = count($data);
|
|
|
|
switch (true) {
|
|
case ($number_of_row >= 16):
|
|
$this->diameter = 600;
|
|
break;
|
|
case ($number_of_row >= 8):
|
|
$this->diameter = 500;
|
|
break;
|
|
case ($number_of_row >= 6):
|
|
$this->diameter = 400;
|
|
break;
|
|
case ($number_of_row >= 3):
|
|
$this->diameter = 300;
|
|
break;
|
|
case ($number_of_row >= 2):
|
|
$this->diameter = 200;
|
|
break;
|
|
case ($number_of_row == 1):
|
|
$this->diameter = 110;
|
|
break;
|
|
}
|
|
|
|
$this->number_of_users = $number_of_row;
|
|
$this->number_of_active = $this->count_active($data);
|
|
|
|
/*echo "<pre>";
|
|
print_r($data);
|
|
echo "<pre>";*/
|
|
|
|
|
|
$dataset = array("children" => $data);
|
|
|
|
$this->json_data = json_encode($dataset);
|
|
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
public function count_active($array) {
|
|
$count = 0;
|
|
foreach ($array as $item) {
|
|
if ($item['active'] == 1) {
|
|
$count++;
|
|
}
|
|
}
|
|
return $count;
|
|
}
|
|
|
|
public function isTruePercent($percent) {
|
|
$randNum = mt_rand(0, 99);
|
|
return $randNum < $percent;
|
|
}
|
|
|
|
public function emulateDate($count, $percent) {
|
|
|
|
$tablica = array();
|
|
|
|
for ($i = 0; $i < $count; $i++) {
|
|
|
|
$temp_visit = rand(1, 10);
|
|
$temp_visit_count = $temp_visit."000";
|
|
|
|
if($this->isTruePercent($percent)){
|
|
$color = stUserTrackerLevelInterface::generateColor();
|
|
$active = 1;
|
|
$icon = st_admin_get_icon('check-circle');
|
|
}else{
|
|
$color = "#cccccc";
|
|
$active = 0;
|
|
$icon = " ";
|
|
}
|
|
|
|
$tablica[$i] = array(
|
|
'product' => 'Produkt '.$i,
|
|
'basket' => 'Koszyk '.$i,
|
|
'update' => date('Y-m-d H:i:s')." ".$icon,
|
|
'visit' => $temp_visit,
|
|
'active' => $active,
|
|
'count' => $temp_visit_count,
|
|
'color' => $color
|
|
);
|
|
}
|
|
|
|
return $tablica;
|
|
}
|
|
|
|
|
|
}
|