public static function feed_data($cmd, $dir_tmp_cache, $temps) { // cmd = insert_database if ($cmd == 'insert_database') { $dir = 'cache/temp_data.cache.php'; if (file_exists($dir)) { require $dir; if (isset($items) and $items) { foreach ($items as $key => $value) { // Feed::debug($value); $table = $value['table']; if (!DB::fetch('select id from ' . $table . ' where name="' . str_replace('"', '\\"', $value['name']) . '"')) { unset($value['table']); DB::insert($table, $value); } } @unlink($dir); } } header('Location:' . $_SERVER['REQUEST_URI']); } else { // Case lay du lieu if ($cmd == 'feed') { // Lấy tin $temps = implode(',', $temps); //require_once 'lib/simple_html_dom.php'; //require_once 'lib/crawler.php'; $_Feed = new Crowler(); // return $_Feed; $sites = $_Feed->get_site('declaration.id in (' . $temps . ')'); return $sites; if ($sites = $_Feed::get_site('declaration.id in (' . $temps . ')')) { // Feed::debug($sites); foreach ($sites as $key => $value) { $check_page = strpos($value['url'], '*'); // strpos : tim kiem chuoi if ($check_page === false) { Feed::get_data($value, Feed::get_pattern($key)); } else { if ($page_num = $value['page_num']) { $check_page_num = strpos($page_num, '-'); if ($check_page_num === false) { $value['url'] = str_replace('*', $page_num, $value['url']); Feed::get_data($value, Feed::get_pattern($key)); } else { $arr_page = explode('-', $page_num); for ($i = $arr_page[1]; $i >= $arr_page[0]; $i--) { $site = $value; $site['url'] = str_replace('*', $i, $value['url']); Feed::get_data($site, Feed::get_pattern($key)); } } } else { $value['url'] = str_replace('*', '1', $value['url']); Feed::get_data($value, Feed::get_pattern($key)); } } } // Lưu tin đã lấy vào file cache $path = 'cache/temp_data.cache.php'; $content = '<?php $items = ' . var_export(Feed::$items, true) . ';?>'; $handler = fopen($path, 'w+'); fwrite($handler, $content); fclose($handler); } header('Location:' . $_SERVER['REQUEST_URI']); } } }
function feed_controller() { global $mysqli, $redis, $session, $route, $feed_settings; $result = false; require_once "Modules/feed/feed_model.php"; $feed = new Feed($mysqli, $redis, $feed_settings); if ($route->format == 'html') { if ($route->action == "list" && $session['write']) { $result = view("Modules/feed/Views/feedlist_view.php", array()); } else { if ($route->action == "api" && $session['write']) { $result = view("Modules/feed/Views/feedapi_view.php", array()); } } } else { if ($route->format == 'json') { // Public actions available on public feeds. if ($route->action == "list") { if ($session['read']) { if (!isset($_GET['userid']) || isset($_GET['userid']) && $_GET['userid'] == $session['userid']) { $result = $feed->get_user_feeds($session['userid']); } else { if (isset($_GET['userid']) && $_GET['userid'] != $session['userid']) { $result = $feed->get_user_public_feeds(get('userid')); } } } else { if (isset($_GET['userid'])) { $result = $feed->get_user_public_feeds(get('userid')); } } } elseif ($route->action == "create" && $session['write']) { $result = $feed->create($session['userid'], get('tag'), get('name'), get('datatype'), get('engine'), json_decode(get('options'))); } elseif ($route->action == "updatesize" && $session['write']) { $result = $feed->update_user_feeds_size($session['userid']); } elseif ($route->action == "buffersize" && $session['write']) { $result = $feed->get_buffer_size(); // To "fetch" multiple feed values in a single request // http://emoncms.org/feed/fetch.json?ids=123,567,890 } elseif ($route->action == "fetch" && $session['read']) { $feedids = (array) explode(",", get('ids')); for ($i = 0; $i < count($feedids); $i++) { $feedid = (int) $feedids[$i]; if ($feed->exist($feedid)) { // if the feed exists $result[$i] = $feed->get_value($feedid); // null is a valid response } else { $result[$i] = false; } // false means feed not found } } else { $feedid = (int) get('id'); // Actions that operate on a single existing feed that all use the feedid to select: // First we load the meta data for the feed that we want if ($feed->exist($feedid)) { $f = $feed->get($feedid); // if public or belongs to user if ($f['public'] || $session['userid'] > 0 && $f['userid'] == $session['userid'] && $session['read']) { if ($route->action == "timevalue") { $result = $feed->get_timevalue($feedid); } else { if ($route->action == 'data') { $skipmissing = 1; $limitinterval = 1; if (isset($_GET['skipmissing']) && $_GET['skipmissing'] == 0) { $skipmissing = 0; } if (isset($_GET['limitinterval']) && $_GET['limitinterval'] == 0) { $limitinterval = 0; } $result = $feed->get_data($feedid, get('start'), get('end'), get('interval'), $skipmissing, $limitinterval); } else { if ($route->action == "value") { $result = $feed->get_value($feedid); } else { if ($route->action == "get") { $result = $feed->get_field($feedid, get('field')); } else { if ($route->action == "aget") { $result = $feed->get($feedid); } else { if ($route->action == 'histogram') { $result = $feed->histogram_get_power_vs_kwh($feedid, get('start'), get('end')); } else { if ($route->action == 'kwhatpower') { $result = $feed->histogram_get_kwhd_atpower($feedid, get('min'), get('max')); } else { if ($route->action == 'kwhatpowers') { $result = $feed->histogram_get_kwhd_atpowers($feedid, get('points')); } } } } } } } } } // write session required if (isset($session['write']) && $session['write'] && $session['userid'] > 0 && $f['userid'] == $session['userid']) { // Storage engine agnostic if ($route->action == 'set') { $result = $feed->set_feed_fields($feedid, get('fields')); } else { if ($route->action == "insert") { $result = $feed->insert_data($feedid, time(), get("time"), get("value")); } else { if ($route->action == "update") { $result = $feed->update_data($feedid, time(), get("time"), get('value')); } else { if ($route->action == "delete") { $result = $feed->delete($feedid); } else { if ($route->action == "getmeta") { $result = $feed->get_meta($feedid); } else { if ($route->action == "csvexport") { $result = $feed->csv_export($feedid, get('start'), get('end'), get('interval'), get('timeformat')); } else { if ($route->action == "process") { if ($f['engine'] != Engine::VIRTUALFEED) { $result = array('success' => false, 'message' => 'Feed is not Virtual'); } else { if ($route->subaction == "get") { $result = $feed->get_processlist($feedid); } else { if ($route->subaction == "set") { $result = $feed->set_processlist($feedid, post('processlist')); } else { if ($route->subaction == "reset") { $result = $feed->reset_processlist($feedid); } } } } } } } } } } } if ($f['engine'] == Engine::MYSQL || $f['engine'] == Engine::MYSQLMEMORY) { if ($route->action == "export") { $result = $feed->mysqltimeseries_export($feedid, get('start')); } else { if ($route->action == "deletedatapoint") { $result = $feed->mysqltimeseries_delete_data_point($feedid, get('feedtime')); } else { if ($route->action == "deletedatarange") { $result = $feed->mysqltimeseries_delete_data_range($feedid, get('start'), get('end')); } } } } elseif ($f['engine'] == Engine::PHPTIMESERIES) { if ($route->action == "export") { $result = $feed->phptimeseries_export($feedid, get('start')); } } elseif ($f['engine'] == Engine::PHPFIWA) { if ($route->action == "export") { $result = $feed->phpfiwa_export($feedid, get('start'), get('layer')); } } elseif ($f['engine'] == Engine::PHPFINA) { if ($route->action == "export") { $result = $feed->phpfina_export($feedid, get('start')); } } } } else { $result = array('success' => false, 'message' => 'Feed does not exist'); } } } } return array('content' => $result); }
function feed_controller() { global $mysqli, $redis, $session, $route, $feed_settings; $result = false; include "Modules/feed/feed_model.php"; $feed = new Feed($mysqli, $redis, $feed_settings); if ($route->format == 'html') { if ($route->action == "list" && $session['write']) { $result = view("Modules/feed/Views/feedlist_view.php", array()); } if ($route->action == "api" && $session['write']) { $result = view("Modules/feed/Views/feedapi_view.php", array()); } } if ($route->format == 'json') { // Public actions available on public feeds. if ($route->action == "list") { if (!isset($_GET['userid']) && $session['read']) { $result = $feed->get_user_feeds($session['userid']); } if (isset($_GET['userid']) && $session['read'] && $_GET['userid'] == $session['userid']) { $result = $feed->get_user_feeds($session['userid']); } if (isset($_GET['userid']) && $session['read'] && $_GET['userid'] != $session['userid']) { $result = $feed->get_user_public_feeds(get('userid')); } if (isset($_GET['userid']) && !$session['read']) { $result = $feed->get_user_public_feeds(get('userid')); } } elseif ($route->action == "getid" && $session['read']) { $result = $feed->get_id($session['userid'], get('name')); } elseif ($route->action == "create" && $session['write']) { $result = $feed->create($session['userid'], get('name'), get('datatype'), get('engine'), json_decode(get('options'))); } elseif ($route->action == "updatesize" && $session['write']) { $result = $feed->update_user_feeds_size($session['userid']); // To "fetch" multiple feed values in a single request // http://emoncms.org/feed/fetch.json?ids=123,567,890 } elseif ($route->action == "fetch" && $session['read']) { $feedids = (array) explode(",", get('ids')); for ($i = 0; $i < count($feedids); $i++) { $feedid = (int) $feedids[$i]; if ($feed->exist($feedid)) { $result[$i] = (double) $feed->get_value($feedid); } else { $result[$i] = ""; } } } else { $feedid = (int) get('id'); // Actions that operate on a single existing feed that all use the feedid to select: // First we load the meta data for the feed that we want if ($feed->exist($feedid)) { $f = $feed->get($feedid); // if public or belongs to user if ($f['public'] || $session['userid'] > 0 && $f['userid'] == $session['userid'] && $session['read']) { if ($route->action == "value") { $result = $feed->get_value($feedid); } if ($route->action == "timevalue") { $result = $feed->get_timevalue_seconds($feedid); } if ($route->action == "get") { $result = $feed->get_field($feedid, get('field')); } // '/[^\w\s-]/' if ($route->action == "aget") { $result = $feed->get($feedid); } if ($route->action == 'histogram') { $result = $feed->histogram_get_power_vs_kwh($feedid, get('start'), get('end')); } if ($route->action == 'kwhatpower') { $result = $feed->histogram_get_kwhd_atpower($feedid, get('min'), get('max')); } if ($route->action == 'kwhatpowers') { $result = $feed->histogram_get_kwhd_atpowers($feedid, get('points')); } if ($route->action == 'data') { $result = $feed->get_data($feedid, get('start'), get('end'), get('dp')); } if ($route->action == 'average') { $result = $feed->get_average($feedid, get('start'), get('end'), get('interval')); } if ($route->action == 'history') { $result = $feed->get_history($feedid, get('start'), get('end'), get('interval')); } } // write session required if (isset($session['write']) && $session['write'] && $session['userid'] > 0 && $f['userid'] == $session['userid']) { // Storage engine agnostic if ($route->action == 'set') { $result = $feed->set_feed_fields($feedid, get('fields')); } if ($route->action == "insert") { $result = $feed->insert_data($feedid, time(), get("time"), get("value")); } if ($route->action == "update") { $result = $feed->update_data($feedid, time(), get("time"), get('value')); } if ($route->action == "delete") { $result = $feed->delete($feedid); } if ($route->action == "getmeta") { $result = $feed->get_meta($feedid); } if ($route->action == "csvexport") { $feed->csv_export($feedid, get('start'), get('end'), get('interval')); } if ($f['engine'] == Engine::TIMESTORE) { if ($route->action == "export") { $result = $feed->timestore_export($feedid, get('start'), get('layer')); } if ($route->action == "exportmeta") { $result = $feed->timestore_export_meta($feedid); } if ($route->action == "scalerange") { $result = $feed->timestore_scale_range($feedid, get('start'), get('end'), get('value')); } } elseif ($f['engine'] == Engine::MYSQL) { if ($route->action == "export") { $result = $feed->mysqltimeseries_export($feedid, get('start')); } if ($route->action == "deletedatapoint") { $result = $feed->mysqltimeseries_delete_data_point($feedid, get('feedtime')); } if ($route->action == "deletedatarange") { $result = $feed->mysqltimeseries_delete_data_range($feedid, get('start'), get('end')); } } elseif ($f['engine'] == Engine::PHPTIMESERIES) { if ($route->action == "export") { $result = $feed->phptimeseries_export($feedid, get('start')); } } elseif ($f['engine'] == Engine::PHPFIWA) { if ($route->action == "export") { $result = $feed->phpfiwa_export($feedid, get('start'), get('layer')); } } elseif ($f['engine'] == Engine::PHPFINA) { if ($route->action == "export") { $result = $feed->phpfina_export($feedid, get('start')); } } } } else { $result = array('success' => false, 'message' => 'Feed does not exist'); } } } return array('content' => $result); }