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.')." ".''.$i18n->__('Konfiguracja').''; $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 "
";
print_r($data);
echo "";*/
$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;
}
}