예제 #1
0
 public function generateInsight(Instance $instance, User $user, $last_weeks_posts, $number_days)
 {
     parent::generateInsight($instance, $user, $last_week_of_posts, $number_days);
     $this->logger->logInfo("Begin generating insight", __METHOD__ . ',' . __LINE__);
     $filename = basename(__FILE__, ".php");
     $insight_text = '';
     $video_dao = DAOFactory::getDAO('VideoDAO');
     // Get the users subscriber count for comparing with later
     $subscriber_count = $user->follower_count;
     foreach ($last_weeks_posts as $post) {
         if ($post->network == 'youtube') {
             $video = $video_dao->getVideoByID($post->post_id, 'youtube');
             $simplified_post_date = date('Y-m-d', strtotime($video->pub_date));
         } else {
             break;
         }
         $gain_or_loss = $video->subscribers_gained - $video->subscribers_lost;
         // if we lost subscribers then we will be doing subscriber_count minus a negative number, so adding
         $total_before_video = $subscriber_count - $gain_or_loss;
         $percent_change = round(abs($gain_or_loss) / $total_before_video * 100, 2);
         $verb = $gain_or_loss < 0 ? ' decreased' : ' increased';
         $headline = $video->post_text . $verb . " " . $instance->network_username . "'s ";
         $headline .= "subscriber count by <strong>" . $percent_change . "%</strong>.";
         $insight_text = "<a href=http://plus.google.com/{$instance->network_user_id}>{$instance->network_username}</a>'s ";
         $insight_text .= "video <a href=http://www.youtube.com/watch?v={$video->post_id}>{$video->post_text}</a> ";
         $insight_text .= "left an impression on {$gain_or_loss} subscribers.";
         $subscriber_count = intval($subscriber_count);
         $total_before_video = intval($total_before_video);
         $rows = $video_dao->getNetSubscriberChange($instance->network_username, 'youtube', 10);
         $chart = VideoMySQLDAO::getHotVideosVisualizationData($rows, 'Subscriber Change');
         if ($percent_change >= 50) {
             $this->insight_dao->insertInsightDeprecated('subscriber_change' . $video->id, $instance->id, $simplified_post_date, $headline, $insight_text, $filename, Insight::EMPHASIS_HIGH, serialize(array($chart, $video)));
         } elseif ($percent_change >= 25) {
             $this->insight_dao->insertInsightDeprecated('subscriber_change' . $video->id, $instance->id, $simplified_post_date, $headline, $insight_text, $filename, Insight::EMPHASIS_MED, serialize(array($chart, $video)));
         } elseif ($percent_change >= 10) {
             $this->insight_dao->insertInsightDeprecated('subscriber_change' . $video->id, $instance->id, $simplified_post_date, $headline, $insight_text, $filename, Insight::EMPHASIS_LOW, serialize(array($chart, $video)));
         }
     }
 }
예제 #2
0
파일: likespike.php 프로젝트: dgw/ThinkUp
 public function generateInsight(Instance $instance, $last_week_of_posts, $number_days)
 {
     parent::generateInsight($instance, $last_week_of_posts, $number_days);
     self::generateInsightBaselines($instance, $number_days);
     $this->logger->logInfo("Begin generating insight", __METHOD__ . ',' . __LINE__);
     $insight_baseline_dao = DAOFactory::getDAO('InsightBaselineDAO');
     $filename = basename(__FILE__, ".php");
     $video_dao = DAOFactory::getDAO('VideoDAO');
     $simplified_post_date = "";
     foreach ($last_week_of_posts as $post) {
         if ($post->network == 'youtube') {
             $video = $video_dao->getVideoByID($post->post_id, 'youtube');
         } else {
             break;
         }
         if ($video->likes > 2) {
             //Only show insight for more than 2 likes
             // First get spike/high 30/90/365 day baselines
             if ($simplified_post_date != date('Y-m-d', strtotime($post->pub_date))) {
                 $simplified_post_date = date('Y-m-d', strtotime($post->pub_date));
                 $average_like_count_30_days = $insight_baseline_dao->getInsightBaseline('avg_like_count_last_30_days', $instance->id, $simplified_post_date);
                 $average_like_count_90_days = $insight_baseline_dao->getInsightBaseline('avg_like_count_last_90_days', $instance->id, $simplified_post_date);
                 $high_like_count_30_days = $insight_baseline_dao->getInsightBaseline('high_like_count_last_30_days', $instance->id, $simplified_post_date);
                 $high_like_count_90_days = $insight_baseline_dao->getInsightBaseline('high_like_count_last_90_days', $instance->id, $simplified_post_date);
                 $high_like_count_365_days = $insight_baseline_dao->getInsightBaseline('high_like_count_last_365_days', $instance->id, $simplified_post_date);
                 $hot_videos_data = $video_dao->getHotVideos($instance->network_username, 'youtube', 10, 'likes', 'Likes');
                 $chart_data = VideoMySQLDAO::getHotVideosVisualizationData($hot_videos_data, 'Likes');
             }
             // Next compare post like counts to baselines and store insights where there's a spike or high
             if (isset($high_like_count_365_days->value) && $video->likes >= $high_like_count_365_days->value) {
                 if (isset($chart_data)) {
                     $prefix = "New 365-day record!";
                     $text = "<strong>" . number_format($video->likes) . " people</strong> liked ";
                     $text .= "<a href=http://plus.google.com/{$instance->network_user_id}>";
                     $text .= "{$instance->network_username}</a>'s video <a href=http://www.youtube.com/watch?v=";
                     $text .= "{$video->post_id}>{$video->post_text}</a>.";
                     $this->insight_dao->insertInsightDeprecated('like_high_365_day_' . $video->id, $instance->id, $simplified_post_date, $prefix, $text, $filename, Insight::EMPHASIS_HIGH, serialize(array($video, $chart_data)));
                     $this->insight_dao->deleteInsight('like_high_90_day_' . $post->id, $instance->id, $simplified_post_date);
                     $this->insight_dao->deleteInsight('like_high_90_day_' . $post->id, $instance->id, $simplified_post_date);
                     $this->insight_dao->deleteInsight('like_spike_30_day_' . $post->id, $instance->id, $simplified_post_date);
                     $this->insight_dao->deleteInsight('like_spike_30_day_' . $post->id, $instance->id, $simplified_post_date);
                 }
             } elseif (isset($high_like_count_90_days->value) && $video->likes >= $high_like_count_90_days->value) {
                 if (isset($chart_data)) {
                     $prefix = "New 90-day record!";
                     $text = "<strong>" . number_format($video->likes) . " people</strong> liked ";
                     $text .= "<a href=http://plus.google.com/{$instance->network_user_id}>";
                     $text .= "{$instance->network_username}</a>'s video <a href=http://www.youtube.com/watch?v=";
                     $text .= "{$video->post_id}>{$video->post_text}</a>.";
                     $this->insight_dao->insertInsightDeprecated('like_high_90_day_' . $video->id, $instance->id, $simplified_post_date, $prefix, $text, $filename, Insight::EMPHASIS_HIGH, serialize(array($video, $chart_data)));
                     $this->insight_dao->deleteInsight('like_high_30_day_' . $post->id, $instance->id, $simplified_post_date);
                     $this->insight_dao->deleteInsight('like_spike_30_day_' . $post->id, $instance->id, $simplified_post_date);
                 }
             } elseif (isset($high_like_count_30_days->value) && $video->likes >= $high_like_count_30_days->value) {
                 if (isset($chart_data)) {
                     $prefix = "New 30-day record!";
                     $text = "<strong>" . number_format($video->likes) . " people</strong> liked ";
                     $text .= "<a href=http://plus.google.com/{$instance->network_user_id}>";
                     $text .= "{$instance->network_username}</a>'s video <a href=http://www.youtube.com/watch?v=";
                     $text .= "{$video->post_id}>{$video->post_text}</a>.";
                     $this->insight_dao->insertInsightDeprecated('like_high_30_day_' . $video->id, $instance->id, $simplified_post_date, $prefix, $text, $filename, Insight::EMPHASIS_HIGH, serialize(array($video, $chart_data)));
                 }
             }
             if (isset($average_like_count_90_days->value) && $video->likes > $average_like_count_90_days->value * 2) {
                 if (isset($chart_data)) {
                     $multiplier = floor($video->likes / $average_like_count_30_days->value);
                     $multiplier = $this->terms->getMultiplierAdverb($multiplier);
                     $prefix = "Thumbs up:";
                     $text = "<strong>" . number_format($video->likes) . " people</strong> liked ";
                     $text .= "<a href=http://plus.google.com/{$instance->network_user_id}>";
                     $text .= "{$instance->network_username}</a>'s video <a href=http://www.youtube.com/watch?v=";
                     $text .= "{$video->post_id}>{$video->post_text}</a>, more than <strong>" . $multiplier . "</strong> ";
                     $text .= "the 90-day average.";
                     $this->insight_dao->insertInsightDeprecated('like_spike_90_day_' . $post->id, $instance->id, $simplified_post_date, $prefix, $text, $filename, Insight::EMPHASIS_LOW, serialize(array($video, $chart_data)));
                     $this->insight_dao->deleteInsight('like_spike_30_day_' . $post->id, $instance->id, $simplified_post_date);
                 }
             } elseif (isset($average_like_count_30_days->value) && $video->likes > $average_like_count_30_days->value * 2) {
                 if (isset($chart_data)) {
                     $multiplier = floor($video->likes / $average_like_count_30_days->value);
                     $multiplier = $this->terms->getMultiplierAdverb($multiplier);
                     $prefix = "Thumbs up:";
                     $text = "<strong>" . number_format($video->likes) . " people</strong> liked ";
                     $text .= "<a href=http://plus.google.com/{$instance->network_user_id}>";
                     $text .= "{$instance->network_username}</a>'s video <a href=http://www.youtube.com/watch?v=";
                     $text .= "{$video->post_id}>{$video->post_text}</a>, more than <strong>" . $multiplier . "</strong> ";
                     $text .= "the 30-day average.";
                     $this->insight_dao->insertInsightDeprecated('like_spike_30_day_' . $post->id, $instance->id, $simplified_post_date, $prefix, $text, $filename, Insight::EMPHASIS_LOW, serialize(array($video, $chart_data)));
                 }
             }
         }
     }
     $this->logger->logInfo("Done generating insight", __METHOD__ . ',' . __LINE__);
 }
예제 #3
0
 public function generateInsight(Instance $instance, $last_week_of_posts, $number_days)
 {
     parent::generateInsight($instance, $last_week_of_posts, $number_days);
     $video_dao = DAOFactory::getDAO('VideoDAO');
     $baseline_dao = DAOFactory::getDAO('InsightBaselineDAO');
     self::generateBaselines($instance);
     $this->logger->logInfo("Begin generating insight", __METHOD__ . ',' . __LINE__);
     $filename = basename(__FILE__, ".php");
     foreach ($last_week_of_posts as $post) {
         $simplified_post_date = date('Y-m-d', strtotime($post->pub_date));
         if ($post->network == 'youtube') {
             $video = $video_dao->getVideoByID($post->post_id, 'youtube');
             $average_mins_viewed_month = $baseline_dao->getInsightBaseline('avg_minutes_viewed_month', $instance->id, date('Y-m-d'));
             $average_mins_viewed_90 = $baseline_dao->getInsightBaseline('avg_minutes_viewed_90', $instance->id, date('Y-m-d'));
             $average_mins_viewed_all_time = $baseline_dao->getInsightBaseline('avg_minutes_viewed_all_time', $instance->id, date('Y-m-d'));
             $max_mins_viewed = $baseline_dao->getInsightBaseline('all_time_mins_viewed_high', $instance->id, date('Y-m-d'));
             $year_mins_viewed = $baseline_dao->getInsightBaseline('year_mins_viewed_high', $instance->id, date('Y-m-d'));
             $ninety_mins_viewed = $baseline_dao->getInsightBaseline('90_mins_viewed_high', $instance->id, date('Y-m-d'));
             $hot_videos = $video_dao->getHotVideos($instance->network_username, 'youtube', 10, 'minutes_watched', 'Minutes Watched');
             $chart = VideoMySQLDAO::getHotVideosVisualizationData($hot_videos, 'Minutes Watched');
         } else {
             break;
         }
         $text = "Viewers watched ";
         $text .= "<a href=http://plus.google.com/{$instance->network_user_id}>" . $instance->network_username . "</a>'s ";
         $text .= "video <a href=http://www.youtube.com/watch?v={$video->post_id}>" . $video->post_text . "</a> ";
         $text .= 'for a total of <strong>';
         $text .= InsightTerms::getSyntacticTimeDifference($video->minutes_watched * 60) . ', ';
         $can_insert = false;
         $prefix = 'Making an impression:';
         // Higher than averages
         if ($video->minutes_watched >= $average_mins_viewed_all_time->value * 10 && $average_mins_viewed_all_time->value != 0) {
             $multiplier = $this->terms->getMultiplierAdverb(round($video->minutes_watched / $average_mins_viewed_all_time->value, 2), 'multiplier');
             $text .= $multiplier . "</strong> the all-time average.";
             $emphasis = Insight::EMPHASIS_HIGH;
             $can_insert = true;
         } elseif ($video->minutes_watched >= $average_mins_viewed_90->value * 10 && $average_mins_viewed_90->value != 0) {
             $multiplier = $this->terms->getMultiplierAdverb(round($video->minutes_watched / $average_mins_viewed_90->value, 2), 'multiplier');
             $text .= $multiplier . "</strong> the 90-day average.";
             $emphasis = Insight::EMPHASIS_HIGH;
             $can_insert = true;
         } elseif ($video->minutes_watched >= $average_mins_viewed_month->value * 10 && $average_mins_viewed_month->value != 0) {
             $multiplier = $this->terms->getMultiplierAdverb(round($video->minutes_watched / $average_mins_viewed_month->value, 2), 'multiplier');
             $text .= $multiplier . "</strong> the 30-day average.";
             $emphasis = Insight::EMPHASIS_HIGH;
             $can_insert = true;
         } elseif ($video->minutes_watched >= $average_mins_viewed_all_time->value * 5 && $average_mins_viewed_all_time->value != 0) {
             $multiplier = $this->terms->getMultiplierAdverb(round($video->minutes_watched / $average_mins_viewed_all_time->value, 2), 'multiplier');
             $text .= $multiplier . "</strong> the all-time average.";
             $emphasis = Insight::EMPHASIS_MED;
             $can_insert = true;
         } elseif ($video->minutes_watched >= $average_mins_viewed_90->value * 5 && $average_mins_viewed_90->value != 0) {
             $multiplier = $this->terms->getMultiplierAdverb(round($video->minutes_watched / $average_mins_viewed_90->value, 2), 'multiplier');
             $text .= $multiplier . "</strong> the 90-day average.";
             $emphasis = Insight::EMPHASIS_MED;
             $can_insert = true;
         } elseif ($video->minutes_watched >= $average_mins_viewed_month->value * 5 && $average_mins_viewed_month->value != 0) {
             $multiplier = $this->terms->getMultiplierAdverb(round($video->minutes_watched / $average_mins_viewed_month->value, 2), 'multiplier');
             $text .= $multiplier . "</strong> the 30-day average.";
             $emphasis = Insight::EMPHASIS_MED;
             $can_insert = true;
         } elseif ($video->minutes_watched >= $average_mins_viewed_all_time->value * 2 && $average_mins_viewed_all_time->value != 0) {
             $multiplier = $this->terms->getMultiplierAdverb(round($video->minutes_watched / $average_mins_viewed_all_time->value, 2), 'multiplier');
             $text .= $multiplier . "</strong> the all-time average.";
             $emphasis = Insight::EMPHASIS_LOW;
             $can_insert = true;
         } elseif ($video->minutes_watched >= $average_mins_viewed_90->value * 2 && $average_mins_viewed_90->value != 0) {
             $multiplier = $this->terms->getMultiplierAdverb(round($video->minutes_watched / $average_mins_viewed_90->value, 2), 'multiplier');
             $text .= $multiplier . "</strong> the 90-day average.";
             $emphasis = Insight::EMPHASIS_LOW;
             $can_insert = true;
         } elseif ($video->minutes_watched >= $average_mins_viewed_month->value * 2 && $average_mins_viewed_month->value != 0) {
             $multiplier = $this->terms->getMultiplierAdverb(round($video->minutes_watched / $average_mins_viewed_month->value, 2), 'multiplier');
             $text .= $multiplier . "</strong> the 30-day average.";
             $emphasis = Insight::EMPHASIS_LOW;
             $can_insert = true;
         }
         if ($can_insert) {
             $this->insight_dao->insertInsightDeprecated('minutes_viewed' . $video->id, $instance->id, $simplified_post_date, $prefix, $text, $filename, $emphasis, serialize(array($video, $chart)));
         }
         $text = "Viewers watched ";
         $text .= "<a href=http://plus.google.com/{$instance->network_user_id}>" . $instance->network_username . "</a>'s ";
         $text .= "video <a href=http://www.youtube.com/watch?v={$video->post_id}>" . $video->post_text . "</a> ";
         $text .= 'for a total of <strong>';
         $text .= InsightTerms::getSyntacticTimeDifference($video->minutes_watched * 60) . '</strong>.';
         $can_insert = false;
         // All time highs
         if ($video->minutes_watched >= $max_mins_viewed->value && $max_mins_viewed->value != 0) {
             $prefix = "New all-time high!";
             $emphasis = Insight::EMPHASIS_HIGH;
             $can_insert = true;
         } elseif ($video->minutes_watched >= $year_mins_viewed->value && $year_mins_viewed->value != 0) {
             $prefix = "New 365-day high!";
             $emphasis = Insight::EMPHASIS_MED;
             $can_insert = true;
         } elseif ($video->minutes_watched >= $ninety_mins_viewed->value && $ninety_mins_viewed->value != 0) {
             $prefix = "New 90-day high!";
             $emphasis = Insight::EMPHASIS_LOW;
             $can_insert = true;
         }
         if ($can_insert) {
             $this->insight_dao->insertInsightDeprecated('minutes_viewed_high' . $video->id, $instance->id, $simplified_post_date, $prefix, $text, $filename, $emphasis, serialize(array($video, $chart)));
         }
     }
     $this->logger->logInfo("Done generating insight", __METHOD__ . ',' . __LINE__);
 }
예제 #4
0
 public function generateInsight(Instance $instance, $last_weeks_posts, $number_days)
 {
     parent::generateInsight($instance, $last_weeks_posts, $number_days);
     self::generateBaselines($instance);
     $video_dao = DAOFactory::getDAO('VideoDAO');
     $baseline_dao = DAOFactory::getDAO('InsightBaselineDAO');
     $this->logger->logInfo("Begin generating insight", __METHOD__ . ',' . __LINE__);
     $filename = basename(__FILE__, ".php");
     foreach ($last_weeks_posts as $post) {
         // YouTube users can post replies to their videos and these get passed to us here also and have no
         // associated videos so check we actually got a video post.
         if ($post->network == 'youtube' && $post->in_reply_to_post_id == null) {
             $video = $video_dao->getVideoByID($post->post_id, 'youtube');
             $simplified_post_date = date('Y-m-d', strtotime($post->pub_date));
             $average_month = $baseline_dao->getInsightBaseline('avg_view_percentage_month', $instance->id, date('Y-m-d'));
             $average_all_time = $baseline_dao->getInsightBaseline('avg_view_percentage_all_time', $instance->id, date('Y-m-d'));
             $average_90 = $baseline_dao->getInsightBaseline('avg_view_percentage_90', $instance->id, date('Y-m-d'));
             $high = $baseline_dao->getInsightBaseline('view_percentage_all_time_high', $instance->id, date('Y-m-d'));
             $high_365 = $baseline_dao->getInsightBaseline('view_percentage_year_high', $instance->id, date('Y-m-d'));
             $high_90 = $baseline_dao->getInsightBaseline('view_percentage_90_high', $instance->id, date('Y-m-d'));
             $low = $baseline_dao->getInsightBaseline('view_percentage_all_time_low', $instance->id, date('Y-m-d'));
             $low_365 = $baseline_dao->getInsightBaseline('view_percentage_year_low', $instance->id, date('Y-m-d'));
             $low_90 = $baseline_dao->getInsightBaseline('view_percentage_90_low', $instance->id, date('Y-m-d'));
             $hot_videos = $video_dao->getHotVideos($instance->network_username, 'youtube', 10, 'average_view_percentage', 'Average View Percentage');
             $chart = VideoMySQLDAO::getHotVideosVisualizationData($hot_videos, 'Average View Percentage');
         } else {
             break;
         }
         $view_duration = round($video->average_view_percentage, 0);
         // The analytics data isn't always available for new videos so check this value isn't 0
         if ($view_duration == 0) {
             break;
         }
         $change_month = round($view_duration - $average_month->value, 0);
         $change_all_time = round($view_duration - $average_all_time->value, 0);
         $change_90 = round($view_duration - $average_90->value, 0);
         $text = "On average, viewers watched <a href=http://plus.google.com/" . $instance->network_user_id . ">";
         $text .= $instance->network_username . "</a>'s video";
         $text .= " <a href=http://www.youtube.com/watch?v=" . $video->post_id . ">" . $video->post_text . "</a> ";
         $text .= "<strong>" . $view_duration . "%</strong> of the way through, <strong>";
         $increase_prefix = 'Captive audience:';
         $decrease_prefix = 'Viewer time:';
         $can_insert = false;
         // Increases or decreases compared to the average
         if (abs($change_all_time) >= 30) {
             $can_insert = true;
             $emphasis = Insight::EMPHASIS_HIGH;
             if ($change_all_time >= 30) {
                 $prefix = $increase_prefix;
                 $text .= $change_all_time . "%</strong> longer than the all-time average.";
             } else {
                 $prefix = $decrease_prefix;
                 $text .= abs($change_all_time) . "%</strong> less than the all-time average.";
             }
         } elseif (abs($change_90) >= 30) {
             $can_insert = true;
             $emphasis = Insight::EMPHASIS_HIGH;
             if ($change_90 >= 30) {
                 $prefix = $increase_prefix;
                 $text .= $change_90 . "%</strong> longer than the 90-day average.";
             } else {
                 $prefix = $decrease_prefix;
                 $text .= abs($change_90) . "%</strong> less than the 90-day average.";
             }
         } elseif (abs($change_month) >= 30) {
             $can_insert = true;
             $emphasis = Insight::EMPHASIS_HIGH;
             if ($change_month >= 30) {
                 $prefix = $increase_prefix;
                 $text .= $change_month . "%</strong> longer than the 30-day average.";
             } else {
                 $prefix = $decrease_prefix;
                 $text .= abs($change_month) . "%</strong> less than the 30-day average.";
             }
         } elseif (abs($change_all_time) >= 15) {
             $can_insert = true;
             $emphasis = Insight::EMPHASIS_MED;
             if ($change_all_time >= 15) {
                 $prefix = $increase_prefix;
                 $text .= $change_all_time . "%</strong> longer than the all-time average.";
             } else {
                 $prefix = $decrease_prefix;
                 $text .= abs($change_all_time) . "%</strong> less than the all-time average.";
             }
         } elseif (abs($change_90) >= 15) {
             $can_insert = true;
             $emphasis = Insight::EMPHASIS_MED;
             if ($change_90 >= 15) {
                 $prefix = $increase_prefix;
                 $text .= $change_90 . "%</strong> longer than the 90-day average.";
             } else {
                 $prefix = $decrease_prefix;
                 $text .= abs($change_90) . "%</strong> less than the 90-day average.";
             }
         } elseif (abs($change_month) >= 15) {
             $can_insert = true;
             $emphasis = Insight::EMPHASIS_MED;
             if ($change_month >= 15) {
                 $prefix = $increase_prefix;
                 $text .= $change_month . "%</strong> longer than the 30-day average.";
             } else {
                 $prefix = $decrease_prefix;
                 $text .= abs($change_month) . "%</strong> less than the 30-day average.";
             }
         } elseif (abs($change_all_time) >= 5) {
             $can_insert = true;
             $emphasis = Insight::EMPHASIS_LOW;
             if ($change_all_time >= 5) {
                 $prefix = $increase_prefix;
                 $text .= $change_all_time . "%</strong> longer than the all-time average.";
             } else {
                 $prefix = $decrease_prefix;
                 $text .= abs($change_all_time) . "%</strong> less than the all-time average.";
             }
         } elseif (abs($change_90) >= 5) {
             $can_insert = true;
             $emphasis = Insight::EMPHASIS_LOW;
             if ($change_90 >= 5) {
                 $prefix = $increase_prefix;
                 $text .= $change_90 . "%</strong> longer than the 90-day average.";
             } else {
                 $prefix = $decrease_prefix;
                 $text .= abs($change_90) . "%</strong> less than the 90-day average.";
             }
         } elseif (abs($change_month) >= 5) {
             $can_insert = true;
             $emphasis = Insight::EMPHASIS_LOW;
             if ($change_month >= 5) {
                 $prefix = $increase_prefix;
                 $text .= $change_month . "%</strong> longer than the 30-day average.";
             } else {
                 $prefix = $decrease_prefix;
                 $text .= abs($change_month) . "%</strong> less than the 30-day average.";
             }
         }
         if ($can_insert) {
             $this->insight_dao->insertInsightDeprecated('view_duration', $instance->id, $simplified_post_date, $prefix, $text, $filename, $emphasis, serialize(array($chart, $video)));
         }
         // New highs and lows
         $can_insert = false;
         $text = "<a href=http://plus.google.com/{$instance->network_user_id}>{$instance->network_username}</a>'s ";
         $text .= "video <a href=http://www.youtube.com/watch?v={$video->post_id}>{$video->post_text}</a> was ";
         $text .= "viewed <strong>" . $view_duration . "%</strong> of the way through on average.";
         if ($view_duration >= $high->value && $high->value != 0) {
             $prefix = 'New all-time high!';
             $emphasis = Insight::EMPHASIS_HIGH;
             $can_insert = true;
         } elseif ($view_duration <= $low->value && $low->value != 0) {
             $prefix = 'New all-time low!';
             $emphasis = Insight::EMPHASIS_HIGH;
             $can_insert = true;
         } elseif ($view_duration >= $high_365->value && $high_365->value != 0) {
             $prefix = 'New 365-day record!';
             $emphasis = Insight::EMPHASIS_MED;
             $can_insert = true;
         } elseif ($view_duration <= $low_365->value && $low_365->value != 0) {
             $prefix = 'New 365-day record!';
             $emphasis = Insight::EMPHASIS_MED;
             $can_insert = true;
         } elseif ($view_duration >= $high_90->value && $high_90->value != 0) {
             $prefix = 'New 90-day record!';
             $emphasis = Insight::EMPHASIS_LOW;
             $can_insert = true;
         } elseif ($view_duration <= $low_90->value && $low_90->value != 0) {
             $prefix = 'New 90-day record!';
             $emphasis = Insight::EMPHASIS_LOW;
             $can_insert = true;
         }
         if ($can_insert) {
             $this->insight_dao->insertInsightDeprecated('view_duration_record', $instance->id, $simplified_post_date, $prefix, $text, $filename, $emphasis, serialize(array($chart, $video)));
         }
     }
     $this->logger->logInfo("Done generating insight", __METHOD__ . ',' . __LINE__);
 }