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; }