/** * displayImportBlogPosts * * @return void */ function displayImportBlogPosts() { $this->displayHeader(); // setup familynew obj $newsObj = new FamilyNews($this->fcmsError, $this->fcmsDatabase, $this->fcmsUser); // get external ids $external_ids = $newsObj->getExternalPostIds(); // Get import blog settings $sql = "SELECT `user`, `blogger`, `tumblr`, `wordpress`, `posterous`\n FROM `fcms_user_settings`\n WHERE `user` = ?"; $r = $this->fcmsDatabase->getRow($sql, $this->fcmsUser->id); if ($r === false) { $this->fcmsError->displayError(); $this->displayFooter(); return; } if (empty($r)) { echo '<div class="error-alert">' . T_('Nothing to import.') . '</div>'; $this->fcmsSettings->displayFamilyNews(); $this->displayFooter(); return; } $count = 0; switch ($_GET['import']) { case 'blogger': $count = $newsObj->importBloggerPosts($r['blogger'], $this->fcmsUser->id, '', $external_ids); if ($count === false) { $this->fcmsSettings->displayFamilyNews(); $this->displayFooter(); return; } break; case 'tumblr': $count = $newsObj->importTumblrPosts($r['tumblr'], $this->fcmsUser->id, '', $external_ids); if ($count === false) { $this->fcmsSettings->displayFamilyNews(); $this->displayFooter(); return; } break; case 'wordpress': $count = $newsObj->importWordpressPosts($r['wordpress'], $this->fcmsUser->id, '', $external_ids); if ($count === false) { $this->fcmsSettings->displayFamilyNews(); $this->displayFooter(); return; } break; case 'posterous': $count = $newsObj->importPosterousPosts($r['posterous'], $this->fcmsUser->id, '', $external_ids); if ($count === false) { $this->fcmsSettings->displayFamilyNews(); $this->displayFooter(); return; } break; } displayOkMessage(sprintf(T_ngettext('%d post has been imported.', '%d posts have been imported.', $count), $count)); $this->fcmsSettings->displayFamilyNews(); $this->displayFooter(); return; }
/** * runFamilyNewsJob * * Checks if any user has an external blog setup. * Imports posts from those blogs if they haven't been imported already. * * @return void */ function runFamilyNewsJob() { include_once 'familynews_class.php'; $fcmsError = FCMS_Error::getInstance(); $fcmsDatabase = Database::getInstance($fcmsError); $newsObj = new FamilyNews($fcmsError, $fcmsDatabase, 1); // Get date we last checked for external news $sql = "SELECT `value` AS 'external_news_date'\n FROM `fcms_config`\n WHERE `name` = 'external_news_date'\n LIMIT 1"; $r = $fcmsDatabase->getRow($sql); if ($r === false) { logError(__FILE__ . ' [' . __LINE__ . '] - Could not get external_news_date.'); die; } $last_checked = strtotime($r['external_news_date']); // RFC 3339 format $atomDate = 0; if (!empty($r['external_news_date'])) { $atomDate = date('Y-m-d\\TH:i:s\\Z', strtotime($r['external_news_date'])); } // Get import blog settings $sql = "SELECT `user`, `blogger`, `tumblr`, `wordpress`, `posterous`\n FROM `fcms_user_settings`"; $rows = $fcmsDatabase->getRows($sql); if ($rows === false) { logError(__FILE__ . ' [' . __LINE__ . '] - Could not get blog settings.'); die; } if (count($rows) <= 0) { logError(__FILE__ . ' [' . __LINE__ . '] - No blog settings found.'); updateLastRun(date('Y-m-d H:i:s'), 'familynews'); die; } $external_ids = $newsObj->getExternalPostIds(); foreach ($rows as $r) { // Blogger if (!empty($r['blogger'])) { $ret = $newsObj->importBloggerPosts($r['blogger'], $r['user'], $atomDate, $external_ids); if ($ret === false) { logError(__FILE__ . ' [' . __LINE__ . '] - No posts to import from blogger for user [' . $r['user'] . '].'); continue; } } // Tumblr if (!empty($r['tumblr'])) { $ret = $newsObj->importTumblrPosts($r['tumblr'], $r['user'], $atomDate, $external_ids); if ($ret === false) { logError(__FILE__ . ' [' . __LINE__ . '] - No posts to import from tumblr for user [' . $r['user'] . '].'); continue; } } // Wordpress if (!empty($r['wordpress'])) { $ret = $newsObj->importWordpressPosts($r['wordpress'], $r['user'], $atomDate, $external_ids); if ($ret === false) { logError(__FILE__ . ' [' . __LINE__ . '] - No posts to import from wordpress for user [' . $r['user'] . '].'); continue; } } // Posterous if (!empty($r['posterous'])) { $ret = $newsObj->importPosterousPosts($r['posterous'], $r['user'], $atomDate, $external_ids); if ($ret === false) { logError(__FILE__ . ' [' . __LINE__ . '] - No posts to import from posterous for user [' . $r['user'] . '].'); continue; } } } // Update date we last imported news $now = date('Y-m-d H:i:s'); $sql = "UPDATE `fcms_config`\n SET `value` = '{$now}'\n WHERE `name` = 'external_news_date'"; if (!$fcmsDatabase->update($sql)) { logError(__FILE__ . ' [' . __LINE__ . '] - Could not update last imported news date.'); die; } // Update date we last ran this job updateLastRun($now, 'familynews'); }