public function crawl() { $logger = Logger::getInstance(); $config = Config::getInstance(); $id = DAOFactory::getDAO('InstanceDAO'); $oid = DAOFactory::getDAO('OwnerInstanceDAO'); $od = DAOFactory::getDAO('OwnerDAO'); $plugin_option_dao = DAOFactory::GetDAO('PluginOptionDAO'); $options = $plugin_option_dao->getOptionsHash('facebook', true); //get cached $current_owner = $od->getByEmail(Session::getLoggedInUser()); //crawl Facebook user profiles $instances = $id->getAllActiveInstancesStalestFirstByNetwork('facebook'); foreach ($instances as $instance) { if (!$oid->doesOwnerHaveAccess($current_owner, $instance)) { // Owner doesn't have access to this instance; let's not crawl it. continue; } $logger->setUsername($instance->network_username); $logger->logUserSuccess("Starting to collect data for " . $instance->network_username . " on Facebook.", __METHOD__ . ',' . __LINE__); $tokens = $oid->getOAuthTokens($instance->id); $access_token = $tokens['oauth_access_token']; $id->updateLastRun($instance->id); $crawler = new FacebookCrawler($instance, $access_token); try { $crawler->fetchInstanceUserInfo(); $crawler->fetchUserPostsAndReplies($instance->network_user_id); } catch (Exception $e) { $logger->logUserError('PROFILE EXCEPTION: ' . $e->getMessage(), __METHOD__ . ',' . __LINE__); } $id->save($crawler->instance, 0, $logger); $logger->logUserSuccess("Finished collecting data for " . $instance->network_username . " on Facebook.", __METHOD__ . ',' . __LINE__); } //crawl Facebook pages $instances = $id->getAllActiveInstancesStalestFirstByNetwork('facebook page'); foreach ($instances as $instance) { $logger->setUsername($instance->network_username); $logger->logUserSuccess("Starting to collect data for " . $instance->network_username . "'s Facebook Page.", __METHOD__ . ',' . __LINE__); $tokens = $oid->getOAuthTokens($instance->id); $access_token = $tokens['oauth_access_token']; $id->updateLastRun($instance->id); $crawler = new FacebookCrawler($instance, $access_token); try { $crawler->fetchPagePostsAndReplies($instance->network_user_id); } catch (Exception $e) { $logger->logUserError('PAGE EXCEPTION: ' . $e->getMessage(), __METHOD__ . ',' . __LINE__); } $id->save($crawler->instance, 0, $logger); $logger->logUserSuccess("Finished collecting data for " . $instance->network_username . "'s Facebook Page.", __METHOD__ . ',' . __LINE__); } }
public function crawl() { $logger = Logger::getInstance(); $config = Config::getInstance(); $id = DAOFactory::getDAO('InstanceDAO'); $oid = DAOFactory::getDAO('OwnerInstanceDAO'); $od = DAOFactory::getDAO('OwnerDAO'); $plugin_option_dao = DAOFactory::GetDAO('PluginOptionDAO'); $options = $plugin_option_dao->getOptionsHash('facebook', true); //get cached $current_owner = $od->getByEmail(Session::getLoggedInUser()); //crawl Facebook user profiles $instances = $id->getAllActiveInstancesStalestFirstByNetwork('facebook'); foreach ($instances as $instance) { if (!$oid->doesOwnerHaveAccess($current_owner, $instance)) { // Owner doesn't have access to this instance; let's not crawl it. continue; } $logger->setUsername($instance->network_username); $tokens = $oid->getOAuthTokens($instance->id); $session_key = $tokens['oauth_access_token']; $fb = new Facebook($options['facebook_api_key']->option_value, $options['facebook_api_secret']->option_value); $id->updateLastRun($instance->id); $crawler = new FacebookCrawler($instance, $fb); try { $crawler->fetchInstanceUserInfo($instance->network_user_id, $session_key); $crawler->fetchUserPostsAndReplies($instance->network_user_id, $session_key); } catch (Exception $e) { $logger->logStatus('PROFILE EXCEPTION: ' . $e->getMessage(), get_class($this)); } $id->save($crawler->instance, $crawler->owner_object->post_count, $logger); } //crawl Facebook pages $instances = $id->getAllActiveInstancesStalestFirstByNetwork('facebook page'); foreach ($instances as $instance) { $logger->setUsername($instance->network_username); $tokens = $oid->getOAuthTokens($instance->id); $session_key = $tokens['oauth_access_token']; $fb = new Facebook($options['facebook_api_key']->option_value, $options['facebook_api_secret']->option_value); $id->updateLastRun($instance->id); $crawler = new FacebookCrawler($instance, $fb); try { $crawler->fetchPagePostsAndReplies($instance->network_user_id, $instance->network_viewer_id, $session_key); } catch (Exception $e) { $logger->logStatus('PAGE EXCEPTION: ' . $e->getMessage(), get_class($this)); } $id->save($crawler->instance, 0, $logger); } $logger->close(); # Close logging }
public function crawl() { global $db; //TODO Remove when PDO port is complete global $conn; $logger = Logger::getInstance(); $config = Config::getInstance(); $id = DAOFactory::getDAO('InstanceDAO'); $oid = new OwnerInstanceDAO($db, $logger); //crawl Facebook user profiles $instances = $id->getAllActiveInstancesStalestFirstByNetwork('facebook'); foreach ($instances as $instance) { $logger->setUsername($instance->network_username); $tokens = $oid->getOAuthTokens($instance->id); $session_key = $tokens['oauth_access_token']; $fb = new Facebook($config->getValue('facebook_api_key'), $config->getValue('facebook_api_secret')); $id->updateLastRun($instance->id); $crawler = new FacebookCrawler($instance, $fb); $crawler->fetchInstanceUserInfo($instance->network_user_id, $session_key); $crawler->fetchUserPostsAndReplies($instance->network_user_id, $session_key); $id->save($crawler->instance, $crawler->owner_object->post_count, $logger, $fb); } //crawl Facebook pages $instances = $id->getAllActiveInstancesStalestFirstByNetwork('facebook page'); foreach ($instances as $instance) { $logger->setUsername($instance->network_username); $tokens = $oid->getOAuthTokens($instance->id); $session_key = $tokens['oauth_access_token']; $fb = new Facebook($config->getValue('facebook_api_key'), $config->getValue('facebook_api_secret')); $id->updateLastRun($instance->id); $crawler = new FacebookCrawler($instance, $fb); $crawler->fetchPagePostsAndReplies($instance->network_user_id, $instance->network_viewer_id, $session_key); $id->save($crawler->instance, 0, $logger, $fb); } $logger->close(); # Close logging }
public function testFetchPageStream() { $fbc = new FacebookCrawler($this->instance, 'fauxaccesstoken'); $fbc->fetchPagePostsAndReplies(7568536355); $pd = new PostMySQLDAO(); $post = $pd->getPost('437900891355', 'facebook page'); $this->assertEqual($post->post_text, 'Top 10 iOS Jailbreak Hacks'); $this->assertEqual($post->reply_count_cache, 8); //assert user network is set to Facebook, not Facebook Page $ud = new UserMySQLDAO(); $user = $ud->getUserByName('Matthew Fleisher', 'facebook'); $this->assertEqual($user->full_name, 'Matthew Fleisher'); $this->assertEqual($user->network, 'facebook'); $user = $ud->getUserByName('Matthew Fleisher', 'facebook page'); $this->assertEqual($user, null); }
public function testFetchPageStream() { $this->instance->network_user_id = '606837591'; $fbc = new FacebookCrawler($this->instance, $this->fb); $session_key = 'asdfasdfasdfadf'; $page_id = '63811549237'; $fbc->fetchPagePostsAndReplies($page_id, $this->instance->network_user_id, $session_key); $pd = DAOFactory::getDAO('PostDAO'); $p = $pd->getPost('125634574117714', 'facebook'); $this->assertEqual($p->post_text, "Thanks for checking out the West Wing Week, your guide to everything that's happening at " . "1600 Pennsylvania Ave."); }
public function testPostReplyPaging() { $fbc = new FacebookCrawler($this->instance, 'fauxaccesstoken'); $fbc->fetchPagePostsAndReplies('133954286636768'); $pd = new PostMySQLDAO(); $post = $pd->getPost('144568048938151', 'facebook page'); $this->assertEqual($post->reply_count_cache, 70); }