Beispiel #1
0
function anonymousDataSend($fromTime, $toTime)
{
    $fromTime = (int) $fromTime;
    $anonymousData = array();
    $addons = DB::getFields("?:addons", "slug", "1", 'slug');
    if (!empty($addons)) {
        foreach ($addons as $slug => $v) {
            $addons[$slug] = getAddonVersion($slug);
        }
    }
    $anonymousData['addonsBought'] = $addons;
    $anonymousData['sites'] = DB::getField("?:sites", "count(siteID)", "1");
    $anonymousData['groups'] = DB::getField("?:groups", "count(groupID)", "1");
    $anonymousData['groupMaxSites'] = DB::getField("?:groups_sites", "count(siteID) as maxSiteCount", "1 GROUP BY groupID ORDER BY maxSiteCount DESC LIMIT 1", "maxSiteCount");
    $anonymousData['hiddenCount'] = DB::getField("?:hide_list", "count(ID)", "1");
    $anonymousData['favourites'] = DB::getField("?:favourites", "count(ID)", "1");
    $anonymousData['settings'] = DB::getArray("?:settings", "*", "1");
    $anonymousData['users'] = DB::getField("?:users", "count(userID)", "1");
    $anonymousData['allowedLoginIps'] = DB::getField("?:allowed_login_ips", "count(IP)", "1");
    $anonymousData['siteNameMaxLength'] = DB::getField("?:sites", "length(name) as siteNameLength", "1 ORDER BY siteNameLength DESC LIMIT 1");
    $anonymousData['groupNameMaxLength'] = DB::getField("?:groups", "length(name) as groupNameLength", "1 ORDER BY groupNameLength DESC LIMIT 1");
    //$anonymousData['appVersion'] 				= APP_VERSION;
    $anonymousData['appInstalledTime'] = getOption('installedTime');
    $anonymousData['lastHistoryActivityTime'] = DB::getField("?:history", "microtimeAdded", "1 ORDER BY historyID DESC");
    $anonymousData['updatesNotificationMailLastSent'] = getOption('updatesNotificationMailLastSent');
    //to find hostType
    $anonymousData['hostType'] = 'unknown';
    if (!empty($_SERVER['SERVER_ADDR'])) {
        $SERVER_ADDR = $_SERVER['SERVER_ADDR'];
    } else {
        $SERVER_ADDR = gethostbyname($_SERVER['HTTP_HOST']);
    }
    if (!empty($SERVER_ADDR)) {
        if (IPInRange($SERVER_ADDR, '127.0.0.0-127.255.255.255')) {
            $anonymousData['hostType'] = 'local';
        } elseif (IPInRange($SERVER_ADDR, '10.0.0.0-10.255.255.255') || IPInRange($SERVER_ADDR, '172.16.0.0-172.31.255.255') || IPInRange($SERVER_ADDR, '192.168.0.0-192.168.255.255')) {
            $anonymousData['hostType'] = 'private';
        } else {
            $anonymousData['hostType'] = 'public';
        }
    }
    //history stats
    $anonymousData['historyStatusStats'] = DB::getFields("?:history", "count(status) as statusCount, status", "microtimeAdded > '" . $fromTime . "' AND microtimeAdded <= '" . $toTime . "' GROUP BY status", "status");
    $tempHistoryData = DB::getRow("?:history", "count(historyID) as historyCount, count(DISTINCT actionID) as historyActions", "microtimeAdded > '" . $fromTime . "' AND microtimeAdded <= '" . $toTime . "'");
    $anonymousData['historyCount'] = $tempHistoryData['historyCount'];
    $anonymousData['historyActions'] = $tempHistoryData['historyActions'];
    $anonymousData['historyAdditionalStatusStats'] = DB::getFields("?:history H, ?:history_additional_data HAD", "count(HAD.status) as statusCount, HAD.status", "H.historyID = HAD.historyID AND H.microtimeAdded > '" . $fromTime . "' AND H.microtimeAdded <= '" . $toTime . "' GROUP BY HAD.status", "status");
    $anonymousData['historyAdditionalCount'] = DB::getField("?:history H, ?:history_additional_data HAD", "count(HAD.historyID) as historyCount", "H.historyID = HAD.historyID AND H.microtimeAdded > '" . $fromTime . "' AND H.microtimeAdded <= '" . $toTime . "'");
    $historyEventStatusStatsArray = DB::getArray("?:history H, ?:history_additional_data HAD", "H.type, H.action, HAD.detailedAction, HAD.status, COUNT(H.historyID) as events", "H.historyID = HAD.historyID AND H.microtimeAdded > '" . $fromTime . "' AND H.microtimeAdded <= '" . $toTime . "' GROUP BY H.type, H.action, HAD.detailedAction, HAD.status ORDER BY H.type, H.action, HAD.detailedAction, HAD.status");
    $historyEventErrorCodeStatsArray = DB::getArray("?:history H, ?:history_additional_data HAD", "H.type, H.action, HAD.detailedAction, HAD.status, HAD.error", "H.historyID = HAD.historyID AND H.microtimeAdded > '" . $fromTime . "' AND H.microtimeAdded <= '" . $toTime . "' AND HAD.status IN ('error', 'netError')");
    if (!empty($historyEventErrorCodeStatsArray)) {
        foreach ($historyEventErrorCodeStatsArray as $v) {
            if (!empty($v['error'])) {
                $errorCodes[$v['type']][$v['action']][$v['detailedAction']][$v['status']][] = $v['error'];
            }
        }
    }
    $historyEventStatusStats = array();
    if (!empty($historyEventStatusStatsArray)) {
        foreach ($historyEventStatusStatsArray as $v) {
            if (!isset($historyEventStatusStats[$v['type']][$v['action']][$v['detailedAction']]['total'])) {
                $historyEventStatusStats[$v['type']][$v['action']][$v['detailedAction']]['total'] = 0;
            }
            $historyEventStatusStats[$v['type']][$v['action']][$v['detailedAction']][$v['status']] = $v['events'];
            $historyEventStatusStats[$v['type']][$v['action']][$v['detailedAction']]['total'] += $v['events'];
            if (is_array($errorCodes[$v['type']][$v['action']][$v['detailedAction']])) {
                foreach ($errorCodes[$v['type']][$v['action']][$v['detailedAction']] as $key => $value) {
                    if ($key == $v['status']) {
                        $historyEventStatusStats[$v['type']][$v['action']][$v['detailedAction']]['errorStats'][$v['status']] = array_count_values($value);
                    }
                }
            }
        }
    }
    $anonymousData['historyEventStatusStats'] = $historyEventStatusStats;
    $tempSiteStats = DB::getArray("?:sites", "WPVersion, pluginVersion, isOpenSSLActive, callOpt, network, parent", "1");
    //To get contentType for sites.
    foreach ($tempSiteStats as $key => $siteStats) {
        if (!isset($anonymousData['siteStats']['WPVersion'][$siteStats['WPVersion']])) {
            $anonymousData['siteStats']['WPVersion'][$siteStats['WPVersion']] = 1;
        } else {
            $anonymousData['siteStats']['WPVersion'][$siteStats['WPVersion']] += 1;
        }
        if (!isset($anonymousData['siteStats']['pluginVersion'][$siteStats['pluginVersion']])) {
            $anonymousData['siteStats']['pluginVersion'][$siteStats['pluginVersion']] = 1;
        } else {
            $anonymousData['siteStats']['pluginVersion'][$siteStats['pluginVersion']] += 1;
        }
        if (!isset($anonymousData['siteStats']['WPAndClientVersion'][$siteStats['WPVersion'] . '-' . $siteStats['pluginVersion']])) {
            $anonymousData['siteStats']['WPAndClientVersion'][$siteStats['WPVersion'] . '-' . $siteStats['pluginVersion']] = 1;
        } else {
            $anonymousData['siteStats']['WPAndClientVersion'][$siteStats['WPVersion'] . '-' . $siteStats['pluginVersion']] += 1;
        }
        if (!isset($anonymousData['siteStats']['isOpenSSLActive'][$siteStats['isOpenSSLActive']])) {
            $anonymousData['siteStats']['isOpenSSLActive'][$siteStats['isOpenSSLActive']] = 1;
        } else {
            $anonymousData['siteStats']['isOpenSSLActive'][$siteStats['isOpenSSLActive']] += 1;
        }
        if (!isset($anonymousData['siteStats']['network'][$siteStats['network']])) {
            $anonymousData['siteStats']['network'][$siteStats['network']] = 1;
        } else {
            $anonymousData['siteStats']['network'][$siteStats['network']] += 1;
        }
        if (!isset($anonymousData['siteStats']['parent'][$siteStats['parent']])) {
            $anonymousData['siteStats']['parent'][$siteStats['parent']] = 1;
        } else {
            $anonymousData['siteStats']['parent'][$siteStats['parent']] += 1;
        }
        $siteStatsCallOpt = unserialize($siteStats['callOpt']);
        if (!isset($anonymousData['siteStats']['contentType'][$siteStatsCallOpt['contentType']])) {
            $anonymousData['siteStats']['contentType'][$siteStatsCallOpt['contentType']] = 1;
        } else {
            $anonymousData['siteStats']['contentType'][$siteStatsCallOpt['contentType']] += 1;
        }
    }
    //To get installed plugins
    $sitePlugins = array();
    $tempSitePlugins = panelRequestManager::getRecentPluginsStatus();
    foreach ($tempSitePlugins as $siteID => $sitePluginData) {
        foreach ($sitePluginData as $slug => $pluginData) {
            $sitePlugins[$slug] = array('isInstalled' => 0, 'isActivated' => 0, 'name' => $pluginData['name'], 'title' => $pluginData['title'], 'version' => array(), 'isnetworkActivated' => 0);
        }
    }
    foreach ($tempSitePlugins as $siteID => $sitePluginData) {
        foreach ($sitePluginData as $slug => $pluginData) {
            if ($pluginData['isInstalled']) {
                $sitePlugins[$slug]['isInstalled'] += 1;
            }
            if ($pluginData['isActivated']) {
                $sitePlugins[$slug]['isActivated'] += 1;
            }
            if ($pluginData['network']) {
                $sitePlugins[$slug]['isnetworkActivated'] += 1;
            }
            if (!isset($sitePlugins[$slug]['version'][$pluginData['version']])) {
                $sitePlugins[$slug]['version'][$pluginData['version']] = 1;
            } else {
                $sitePlugins[$slug]['version'][$pluginData['version']] += 1;
            }
        }
    }
    unset($tempSitePlugins);
    $anonymousData['sitePlugins'] = $sitePlugins;
    //To get installed themes
    $siteThemes = array();
    $tempSiteThemes = panelRequestManager::getRecentThemesStatus();
    foreach ($tempSiteThemes as $siteID => $siteThemeData) {
        if (isset($siteThemeData['inactive'])) {
            foreach ($siteThemeData['inactive'] as $themeData) {
                $siteThemes[$themeData['path']] = array('name' => $themeData['name'], 'version' => array(), 'stylesheet' => $themeData['stylesheet'], 'isActive' => 0, 'isInstalled' => 0);
            }
        }
        if (isset($siteThemeData['active'])) {
            $siteThemes[$siteThemeData['active'][0]['path']] = array('name' => $siteThemeData['active'][0]['name'], 'version' => array(), 'stylesheet' => $siteThemeData['active'][0]['stylesheet'], 'isActive' => 0, 'isInstalled' => 0);
        }
    }
    foreach ($tempSiteThemes as $siteID => $siteThemeData) {
        if (isset($siteThemeData['inactive'])) {
            foreach ($siteThemeData['inactive'] as $themeData) {
                $siteThemes[$themeData['path']]['isInstalled'] += 1;
                if (!isset($siteThemes[$themeData['path']]['version'][$themeData['version']])) {
                    $siteThemes[$themeData['path']]['version'][$themeData['version']] = 1;
                } else {
                    $siteThemes[$themeData['path']]['version'][$themeData['version']] += 1;
                }
            }
        }
        if (isset($siteThemeData['active'])) {
            $siteThemes[$siteThemeData['active'][0]['path']]['isInstalled'] += 1;
            $siteThemes[$siteThemeData['active'][0]['path']]['isActive'] += 1;
            if (!isset($siteThemes[$siteThemeData['active'][0]['path']]['version'][$siteThemeData['active'][0]['version']])) {
                $siteThemes[$siteThemeData['active'][0]['path']]['version'][$siteThemeData['active'][0]['version']] = 1;
            } else {
                $siteThemes[$siteThemeData['active'][0]['path']]['version'][$siteThemeData['active'][0]['version']] += 1;
            }
        }
    }
    unset($tempSiteThemes);
    $anonymousData['siteThemes'] = $siteThemes;
    $anonymousData['server']['PHP_VERSION'] = phpversion();
    $anonymousData['server']['PHP_CURL_VERSION'] = curl_version();
    $anonymousData['server']['MYSQL_VERSION'] = DB::getField("select version() as V");
    $anonymousData['server']['OS'] = php_uname('s');
    $anonymousData['server']['OSVersion'] = php_uname('v');
    $anonymousData['server']['Machine'] = php_uname('m');
    $anonymousData['server']['webServerSoftware'] = $_SERVER['SERVER_SOFTWARE'];
    //To get server interface. (ex: apache, apache2filter, apache2handler, caudium, cgi, ... more)
    $anonymousData['server']['PHP_SAPI'] = php_sapi_name();
    $anonymousData['server']['PHPDisabledFunctions'] = explode(',', ini_get('disable_functions'));
    array_walk($anonymousData['server']['PHPDisabledFunctions'], 'trimValue');
    $anonymousData['server']['PHPDisabledClasses'] = explode(',', ini_get('disable_classes'));
    array_walk($anonymousData['server']['PHPDisabledClasses'], 'trimValue');
    $anonymousData['browser'] = $_SERVER['HTTP_USER_AGENT'];
    $requestData = array('anonymousData' => serialize($anonymousData), 'appInstallHash' => APP_INSTALL_HASH, 'appVersion' => APP_VERSION);
    list($result) = doCall(getOption('serviceURL') . 'anonymous.php', $requestData, $timeout = 30);
    $result = getServiceResponseToArray($result);
    if ($result['status'] == 'true') {
        return true;
    }
    return false;
}