public function crawl()
 {
     $logger = Logger::getInstance();
     // Include all the insights files so they register themselves
     foreach (glob(THINKUP_WEBAPP_PATH . "plugins/insightsgenerator/insights/*.php") as $filename) {
         require_once $filename;
     }
     //Get instances by owner
     $instance_dao = DAOFactory::getDAO('InstanceDAO');
     $owner_dao = DAOFactory::getDAO('OwnerDAO');
     $current_owner = $owner_dao->getByEmail(Session::getLoggedInUser());
     $instances = $instance_dao->getByOwner($current_owner, false, true);
     // Get posts for last 7 days
     $number_days = 7;
     $post_dao = DAOFactory::getDAO('PostDAO');
     $insights_plugin_registrar = PluginRegistrarInsights::getInstance();
     foreach ($instances as $instance) {
         $last_week_of_posts = $post_dao->getAllPostsByUsernameOrderedBy($instance->network_username, $network = $instance->network, $count = 0, $order_by = "pub_date", $in_last_x_days = $number_days, $iterator = false, $is_public = false);
         $insights_plugin_registrar->runRegisteredPluginsInsightGeneration($instance, $last_week_of_posts, $number_days);
         $logger->logUserSuccess("Completed insight generation for " . $instance->network_username . " on " . $instance->network, __METHOD__ . ',' . __LINE__);
     }
 }
Esempio n. 2
0
                }
            }
            if ($video_dao->doesUserHaveVideosWithLikesSinceDate($instance->network_username, $instance->network, 90, $since_date)) {
                //Save average likes over past 90 days
                $average_like_count_90_days = null;
                $average_like_count_90_days = $video_dao->getAverageLikeCount($instance->network_username, $instance->network, 90, $since_date);
                if ($average_like_count_90_days != null) {
                    $insight_baseline_dao->insertInsightBaseline('avg_like_count_last_90_days', $instance->id, $average_like_count_90_days, $since_date);
                    $this->logger->logSuccess("Averaged {$average_like_count_90_days} likes in the 90 days before " . $since_date, __METHOD__ . ',' . __LINE__);
                }
                //Save like high for last 90 days
                $high_like_count_90_days = $video_dao->getHighestLikes($instance->network_username, $instance->network, 90, $since_date);
                if ($high_like_count_90_days != null) {
                    $insight_baseline_dao->insertInsightBaseline('high_like_count_last_90_days', $instance->id, $high_like_count_90_days, $since_date);
                    $this->logger->logSuccess("High of {$high_like_count_90_days} likes in the 90 days before " . $since_date, __METHOD__ . ',' . __LINE__);
                }
            }
            if ($video_dao->doesUserHaveVideosWithLikesSinceDate($instance->network_username, $instance->network, 365, $since_date)) {
                //Save like high for last 365 days
                $high_like_count_365_days = $video_dao->getHighestLikes($instance->network_username, $instance->network, 365, $since_date);
                if ($high_like_count_365_days != null) {
                    $insight_baseline_dao->insertInsightBaseline('high_like_count_last_365_days', $instance->id, $high_like_count_365_days, $since_date);
                    $this->logger->logSuccess("High of {$high_like_count_365_days} likes in the 365 days before " . $since_date, __METHOD__ . ',' . __LINE__);
                }
            }
            $days_ago++;
        }
    }
}
$insights_plugin_registrar = PluginRegistrarInsights::getInstance();
$insights_plugin_registrar->registerInsightPlugin('LikeSpikeInsight');
 public function crawl()
 {
     $logger = Logger::getInstance();
     // Include all the insights files so they register themselves
     foreach (glob(THINKUP_WEBAPP_PATH . "plugins/insightsgenerator/insights/*.php") as $filename) {
         require_once $filename;
     }
     //Get instances by owner
     $instance_dao = DAOFactory::getDAO('InstanceDAO');
     $owner_dao = DAOFactory::getDAO('OwnerDAO');
     $current_owner = $owner_dao->getByEmail(Session::getLoggedInUser());
     $instances = $instance_dao->getByOwner($current_owner, false, true);
     // Get posts for last 7 days
     $number_days = 7;
     $post_dao = DAOFactory::getDAO('PostDAO');
     $insights_plugin_registrar = PluginRegistrarInsights::getInstance();
     foreach ($instances as $instance) {
         $last_week_of_posts = $post_dao->getAllPostsByUsernameOrderedBy($instance->network_username, $network = $instance->network, $count = 0, $order_by = "pub_date", $in_last_x_days = $number_days, $iterator = false, $is_public = false);
         $insights_plugin_registrar->runRegisteredPluginsInsightGeneration($instance, $last_week_of_posts, $number_days);
         $logger->logUserSuccess("Completed insight generation for " . $instance->network_username . " on " . $instance->network, __METHOD__ . ',' . __LINE__);
     }
     // Don't do email for regular users
     if (!$current_owner->is_admin) {
         return;
     }
     // Send email digest the first run after 4am
     if ((int) date('G', $this->current_timestamp) >= 4) {
         //Get plugin options
         $plugin_option_dao = DAOFactory::GetDAO('PluginOptionDAO');
         $options = $plugin_option_dao->getOptionsHash($this->folder_name, true);
         //Get plugin ID
         $plugin_dao = DAOFactory::getDAO('PluginDAO');
         $plugin_id = $plugin_dao->getPluginId($this->folder_name);
         //Get today's date
         $today = date('Y-m-d', $this->current_timestamp);
         $do_daily = false;
         $do_weekly = false;
         $last_daily = isset($options['last_daily_email']) ? $options['last_daily_email']->option_value : null;
         if ($last_daily != $today) {
             if ($last_daily === null) {
                 $plugin_option_dao->insertOption($plugin_id, 'last_daily_email', $today);
             } else {
                 $plugin_option_dao->updateOption($options['last_daily_email']->id, 'last_daily_email', $today);
             }
             $do_daily = true;
         }
         $last_weekly = isset($options['last_weekly_email']) ? $options['last_weekly_email']->option_value : null;
         if ($last_weekly != $today && date('w', $this->current_timestamp) == self::WEEKLY_DIGEST_DAY_OF_WEEK) {
             if ($last_weekly === null) {
                 $plugin_option_dao->insertOption($plugin_id, 'last_weekly_email', $today);
             } else {
                 $plugin_option_dao->updateOption($options['last_weekly_email']->id, 'last_weekly_email', $today);
             }
             $do_weekly = true;
         }
         if ($do_daily || $do_weekly) {
             $owners = $owner_dao->getAllOwners();
         }
         if ($do_daily) {
             foreach ($owners as $owner) {
                 if ($this->sendDailyDigest($owner, $options)) {
                     $logger->logUserSuccess("Mailed daily digest to " . $owner->email . ".", __METHOD__ . ',' . __LINE__);
                 }
             }
         }
         if ($do_weekly) {
             foreach ($owners as $owner) {
                 if ($this->sendWeeklyDigest($owner, $options)) {
                     $logger->logUserSuccess("Mailed weekly digest to " . $owner->email . ".", __METHOD__ . ',' . __LINE__);
                 }
             }
         }
     }
 }
 /**
  * Provided only for tests that want to kill object in tearDown()
  * @return void
  */
 public static function destroyInstance()
 {
     if (isset(self::$instance)) {
         self::$instance = null;
     }
 }