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;
    }
  
   
}