function statistics_json_init(&$a) { if (!get_config("system", "nodeinfo")) { http_status_exit(404); killme(); } $statistics = array("name" => $a->config["sitename"], "network" => FRIENDICA_PLATFORM, "version" => FRIENDICA_VERSION . "-" . DB_UPDATE_VERSION, "registrations_open" => $a->config['register_policy'] != 0, "total_users" => get_config('nodeinfo', 'total_users'), "active_users_halfyear" => get_config('nodeinfo', 'active_users_halfyear'), "active_users_monthly" => get_config('nodeinfo', 'active_users_monthly'), "local_posts" => get_config('nodeinfo', 'local_posts')); $statistics["services"] = array(); $statistics["services"]["appnet"] = nodeinfo_plugin_enabled("appnet"); $statistics["services"]["blogger"] = nodeinfo_plugin_enabled("blogger"); $statistics["services"]["buffer"] = nodeinfo_plugin_enabled("buffer"); $statistics["services"]["dreamwidth"] = nodeinfo_plugin_enabled("dwpost"); $statistics["services"]["facebook"] = nodeinfo_plugin_enabled("fbpost"); $statistics["services"]["gnusocial"] = nodeinfo_plugin_enabled("statusnet"); $statistics["services"]["googleplus"] = nodeinfo_plugin_enabled("gpluspost"); $statistics["services"]["libertree"] = nodeinfo_plugin_enabled("libertree"); $statistics["services"]["livejournal"] = nodeinfo_plugin_enabled("ljpost"); $statistics["services"]["pumpio"] = nodeinfo_plugin_enabled("pumpio"); $statistics["services"]["twitter"] = nodeinfo_plugin_enabled("twitter"); $statistics["services"]["tumblr"] = nodeinfo_plugin_enabled("tumblr"); $statistics["services"]["wordpress"] = nodeinfo_plugin_enabled("wppost"); $statistics["appnet"] = $statistics["services"]["appnet"]; $statistics["blogger"] = $statistics["services"]["blogger"]; $statistics["buffer"] = $statistics["services"]["buffer"]; $statistics["dreamwidth"] = $statistics["services"]["dreamwidth"]; $statistics["facebook"] = $statistics["services"]["facebook"]; $statistics["gnusocial"] = $statistics["services"]["gnusocial"]; $statistics["googleplus"] = $statistics["services"]["googleplus"]; $statistics["libertree"] = $statistics["services"]["libertree"]; $statistics["livejournal"] = $statistics["services"]["livejournal"]; $statistics["pumpio"] = $statistics["services"]["pumpio"]; $statistics["twitter"] = $statistics["services"]["twitter"]; $statistics["tumblr"] = $statistics["services"]["tumblr"]; $statistics["wordpress"] = $statistics["services"]["wordpress"]; header("Content-Type: application/json"); echo json_encode($statistics, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); logger("statistics_init: printed " . print_r($statistics, true), LOGGER_DATA); killme(); }
function nodeinfo_cron() { $a = get_app(); // If the plugin "statistics_json" is enabled then disable it and actrivate nodeinfo. if (nodeinfo_plugin_enabled("statistics_json")) { set_config("system", "nodeinfo", true); $plugin = "statistics_json"; $plugins = get_config("system", "addon"); $plugins_arr = array(); if ($plugins) { $plugins_arr = explode(",", str_replace(" ", "", $plugins)); $idx = array_search($plugin, $plugins_arr); if ($idx !== false) { unset($plugins_arr[$idx]); uninstall_plugin($plugin); set_config("system", "addon", implode(", ", $plugins_arr)); } } } if (!get_config("system", "nodeinfo")) { return; } $last = get_config('nodeinfo', 'last_calucation'); if ($last) { // Calculate every 24 hours $next = $last + 24 * 60 * 60; if ($next > time()) { logger("calculation intervall not reached"); return; } } logger("cron_start"); $users = q("SELECT profile.*, `user`.`login_date`, `lastitem`.`lastitem_date`\n\t\t\tFROM (SELECT MAX(`item`.`changed`) as `lastitem_date`, `item`.`uid`\n\t\t\t\tFROM `item`\n\t\t\t\t\tWHERE `item`.`type` = 'wall'\n\t\t\t\t\t\tGROUP BY `item`.`uid`) AS `lastitem`\n\t\t\t\t\t\tRIGHT OUTER JOIN `user` ON `user`.`uid` = `lastitem`.`uid`, `contact`, `profile`\n WHERE\n\t\t\t\t\t`user`.`uid` = `contact`.`uid` AND `profile`.`uid` = `user`.`uid`\n\t\t\t\t\tAND `profile`.`is-default` AND (`profile`.`publish` OR `profile`.`net-publish`)\n\t\t\t\t\tAND `user`.`verified` AND `contact`.`self`\n\t\t\t\t\tAND NOT `user`.`blocked`\n\t\t\t\t\tAND NOT `user`.`account_removed`\n\t\t\t\t\tAND NOT `user`.`account_expired`"); if (is_array($users)) { $total_users = count($users); $active_users_halfyear = 0; $active_users_monthly = 0; $halfyear = time() - 180 * 24 * 60 * 60; $month = time() - 30 * 24 * 60 * 60; foreach ($users as $user) { if (strtotime($user['login_date']) > $halfyear or strtotime($user['lastitem_date']) > $halfyear) { ++$active_users_halfyear; } if (strtotime($user['login_date']) > $month or strtotime($user['lastitem_date']) > $month) { ++$active_users_monthly; } } set_config('nodeinfo', 'total_users', $total_users); logger("total_users: " . $total_users, LOGGER_DEBUG); set_config('nodeinfo', 'active_users_halfyear', $active_users_halfyear); set_config('nodeinfo', 'active_users_monthly', $active_users_monthly); } //$posts = q("SELECT COUNT(*) AS local_posts FROM `item` WHERE `wall` AND `uid` != 0 AND `id` = `parent` AND left(body, 6) != '[share'"); $posts = q("SELECT COUNT(*) AS `local_posts` FROM `item`\n\t\t\tINNER JOIN `contact` ON `contact`.`id` = `item`.`contact-id`\n\t\t\tWHERE `contact`.`self` and `item`.`id` = `item`.`parent` AND left(body, 6) != '[share' AND `item`.`network` IN ('%s', '%s', '%s')", dbesc(NETWORK_OSTATUS), dbesc(NETWORK_DIASPORA), dbesc(NETWORK_DFRN)); if (!is_array($posts)) { $local_posts = -1; } else { $local_posts = $posts[0]["local_posts"]; } set_config('nodeinfo', 'local_posts', $local_posts); logger("local_posts: " . $local_posts, LOGGER_DEBUG); $posts = q("SELECT COUNT(*) AS `local_comments` FROM `item`\n\t\t\tINNER JOIN `contact` ON `contact`.`id` = `item`.`contact-id`\n\t\t\tWHERE `contact`.`self` and `item`.`id` != `item`.`parent` AND `item`.`network` IN ('%s', '%s', '%s')", dbesc(NETWORK_OSTATUS), dbesc(NETWORK_DIASPORA), dbesc(NETWORK_DFRN)); if (!is_array($posts)) { $local_comments = -1; } else { $local_comments = $posts[0]["local_comments"]; } set_config('nodeinfo', 'local_comments', $local_comments); // Now trying to register $url = "http://the-federation.info/register/" . $a->get_hostname(); logger('registering url: ' . $url, LOGGER_DEBUG); $ret = fetch_url($url); logger('registering answer: ' . $ret, LOGGER_DEBUG); logger("cron_end"); set_config('nodeinfo', 'last_calucation', time()); }