Beispiel #1
0
 /**
  * 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;
 }
Beispiel #2
0
/**
 * 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');
}