示例#1
0
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();
}
示例#2
0
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());
}