コード例 #1
0
ファイル: WidgetLog.php プロジェクト: richhl/kalturaCE
 public static function createWidgetLog($referer, $ip, $kshow_id, $entry_id, $kmedia_type, $widget_type, $action = 0)
 {
     $entry_id = self::getKshowEntryId($kshow_id, $entry_id);
     $unwanted_pattern = "/MyToken=[^\\&]*/i";
     $fixed_referer = preg_replace($unwanted_pattern, "", $referer);
     $unwanted_pattern = "/#.*/i";
     $fixed_referer = preg_replace($unwanted_pattern, "", $fixed_referer);
     $c = new Criteria();
     $c->add(WidgetLogPeer::REFERER, $fixed_referer);
     $c->add(WidgetLogPeer::ENTRY_ID, $entry_id);
     $c->add(WidgetLogPeer::KSHOW_ID, $kshow_id);
     $widget_log = WidgetLogPeer::doSelectOne($c);
     $longIP = ip2long($ip);
     // to convert back, use long2ip
     if ($widget_log) {
         if ($longIP != -1) {
             if ($longIP == $widget_log->getIp1()) {
                 $widget_log->setIp1Count($widget_log->getIp1Count() + 1);
             } elseif ($longIP == $widget_log->getIp2()) {
                 $widget_log->setIp2Count($widget_log->getIp2Count() + 1);
             } else {
                 if ($widget_log->getIp1Count() < $widget_log->getIp2Count()) {
                     $widget_log->setIp1Count(1);
                     $widget_log->setIp1($longIP);
                 } else {
                     $widget_log->setIp2Count(1);
                     $widget_log->setIp2($longIP);
                 }
             }
             // make sure that ipCount1 is always the bigger one - to make sorting easiser
             if ($widget_log->getIp2Count() > $widget_log->getIp1Count()) {
                 // swap
                 $temp_count = $widget_log->getIp1Count();
                 $temp_ip = $widget_log->getIp1();
                 $widget_log->setIp1Count($widget_log->getIp2Count());
                 $widget_log->setIp1($widget_log->getIp2());
                 $widget_log->setIp2Count($temp_count);
                 $widget_log->setIp2($temp_ip);
             }
         }
     } else {
         $widget_log = new WidgetLog();
         $widget_log->setIp1Count(1);
         $widget_log->setIp1($longIP);
         $widget_log->setKshowId($kshow_id);
         $widget_log->setEntryId($entry_id);
         $widget_log->setKmediaType($kmedia_type);
         $widget_log->setWidgetType($widget_type);
         $widget_log->setReferer($fixed_referer);
         if ($entry_id) {
             $entry = entryPeer::retrieveByPK($entry_id);
             if ($entry) {
                 $widget_log->setPartnerId($entry->getPartnerId());
                 $widget_log->setSubpId($entry->getSubpId());
             }
         }
     }
     if ($action == 0) {
         $widget_log->setViews($widget_log->getViews() + 1);
     } elseif ($action == 1) {
         $widget_log->setPlays($widget_log->getPlays() + 1);
     }
     $widget_log->save();
 }