/** * Import articles (cron task function). * * @param vivvo_lite_site $sm */ function auto_import_feeds($sm) { require_once dirname(__FILE__) . '/../core/Feeds.class.php'; require_once VIVVO_FS_FRAMEWORK . 'vivvo_post.php'; $db = $sm->get_db(); if (VIVVO_PLUGIN_FEED_IMPORTER_AUTO_DELETE > 0) { $datetime = date('Y-m-d H:i:59', VIVVO_START_TIME - VIVVO_PLUGIN_FEED_IMPORTER_AUTO_DELETE * 86400); if (VIVVO_PLUGIN_FEED_IMPORTER_TRASH) { $db->exec('UPDATE ' . VIVVO_DB_PREFIX . "articles SET status = -2 WHERE created < '{$datetime}' AND feed_item_id IS NOT NULL AND status > -2"); } else { $db->exec('DELETE FROM ' . VIVVO_DB_PREFIX . "articles WHERE created < '{$datetime}' AND feed_item_id IS NOT NULL"); } } if (VIVVO_PLUGIN_FEED_IMPORTER_AUTO_ARCHIVE > 0) { $datetime = date('Y-m-d H:i:59', VIVVO_START_TIME - VIVVO_PLUGIN_FEED_IMPORTER_AUTO_ARCHIVE * 86400); $db->exec('UPDATE ' . VIVVO_DB_PREFIX . "articles SET status = -1 WHERE created < '{$datetime}' AND feed_item_id IS NOT NULL"); } $feed_list = Feeds_list::factory(); $feed_list->search(array()); $post_master = new vivvo_post_master($sm); $total_added = 0; $total_updated = 0; foreach ($feed_list->list as $feed) { $counts = $feed->import_articles(); $total_added += $counts[0]; $total_updated += $counts[1]; $post_master->set_data_object($feed); $post_master->sql_update(); } if (defined('VIVVO_CRONJOB_MODE')) { $feed_count = count($feed_list->list); echo "auto_import_feeds: Imported {$total_added} and updated {$total_updated} article(s) from {$feed_count} feed(s)." . PHP_EOL; } elseif (defined('VIVVO_FEED_IMPORTER_ADMIN_VIEW')) { echo json_encode(array('feeds' => count($feed_list->list), 'added' => $total_added, 'updated' => $total_updated)); } }
/** * Feed list view */ public function _list_output($assign_list = true) { $pm = vivvo_lite_site::get_instance()->get_plugin_manager(); $content_template = $this->load_template($this->_template_root . 'list.xml'); require_once dirname(__FILE__) . '/core/Feeds.class.php'; $feed_list = new Feeds_list(); $feed_list->search(array()); $content_template->assign('feed_list', $feed_list->list); return $content_template; }
/** * Edit feed * * @param integer $feed_id * @param array $data * @return boolean true on succes, or false on fail */ public function edit_feed($feed_id, $data) { if (!$this->check_token()) { return false; } $sm = vivvo_lite_site::get_instance(); if ($sm->user and $sm->user->can('MANAGE_PLUGIN', 'feed_importer')) { if (!vivvo_hooks_manager::call('feed_edit', array(&$feed_id, &$data))) { return vivvo_hooks_manager::get_status(); } $feed_list = new Feeds_list(); $feed_list->search(array()); if (!empty($data['feed'])) { $remove_keys = array_diff(array_keys($feed_list->list), array_keys($data['feed'])); } else { $remove_keys = array_keys($feed_list->list); } if (!empty($remove_keys)) { $feed_list->sql_delete_list($this->_post_master, $remove_keys); } $edit_keys = $feed_list->get_list_ids(); $feed_check = array(); require_once VIVVO_FS_INSTALL_ROOT . 'lib/simplepie/simplepie.php'; if (is_array($edit_keys) and !empty($edit_keys)) { foreach ($edit_keys as $edit_key) { if (!in_array($data['feed'][$edit_key]['feed'], $feed_check)) { $feed_check[] = $data['feed'][$edit_key]['feed']; $feed_list->list[$edit_key]->set_feed($data['feed'][$edit_key]['feed']); $feed_list->list[$edit_key]->set_category_id($data['feed'][$edit_key]['category_id']); $feed_list->list[$edit_key]->set_author($data['feed'][$edit_key]['author']); $simplepie = new SimplePie(); $simplepie->enable_cache(false); $simplepie->set_feed_url($data['feed'][$edit_key]['feed']); @$simplepie->init(); if (!$simplepie->error()) { $feed_list->list[$edit_key]->set_favicon($simplepie->get_favicon()); $this->_post_master->set_data_object($feed_list->list[$edit_key]); $this->_post_master->sql_update(); } } else { $this->_post_master->set_data_object($feed_list->list[$edit_key]); $this->_post_master->sql_delete(); } } } if (is_array($data['new_feed']) and !empty($data['new_feed'])) { foreach ($data['new_feed'] as $add_key => $value) { if (!in_array($data['new_feed'][$add_key]['feed'], $feed_check)) { $feed_check[] = $data['new_feed'][$add_key]['feed']; $new_feed_object = new Feeds(); $new_feed_object->set_feed($data['new_feed'][$add_key]['feed']); $new_feed_object->set_category_id($data['new_feed'][$add_key]['category_id']); $new_feed_object->set_author($data['new_feed'][$add_key]['author']); $simplepie = new SimplePie(); $simplepie->enable_cache(false); $simplepie->set_feed_url($data['new_feed'][$add_key]['feed']); @$simplepie->init(); if (!$simplepie->error()) { $new_feed_object->set_favicon($simplepie->get_favicon()); $this->_post_master->set_data_object($new_feed_object); $this->_post_master->sql_insert(); } } } } return true; } else { $this->set_error_code(10103); // you don't have sufficient privileges for this action return false; } }