Last active
October 24, 2017 21:22
-
-
Save DonPramis/b86965e9d801a8963a8aabef4411cd6b to your computer and use it in GitHub Desktop.
stats.class.php (all the social connections/data are not working)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <?php | |
| class stats | |
| { | |
| private $curl; | |
| private $whois; | |
| private $pagerank; | |
| private $dom_doc; | |
| /* Initializing Class Dependent Resources | |
| -------------------------------------------------- */ | |
| public function __construct() | |
| { | |
| $this->curl = new Curl; | |
| $this->curl->follow_redirects = true; | |
| $this->curl->options['CURLOPT_ENCODING'] = ""; // Empty Value Means: all supported encoding types | |
| $this->curl->options['CURLOPT_MAXREDIRS'] = 5; | |
| $this->curl->options['CURLOPT_AUTOREFERER'] = true; | |
| $this->curl->options['CURLOPT_CONNECTTIMEOUT'] = 60; | |
| $this->curl->options['CURLOPT_TIMEOUT'] = 120; | |
| $this->curl->options['CURLOPT_SSL_VERIFYPEER'] = true; | |
| $this->curl->options['CURLOPT_CAINFO'] = dirname(__FILE__) . '/shuber-curl/cacert.pem'; | |
| $this->whois = new Whois(); | |
| $this->pagerank = new GooglePageRankChecker(); | |
| $this->dom_doc = new DOMDocument(); | |
| } | |
| /* Get Meta Data | |
| -------------------------------------------------- */ | |
| public function getMeta($domain) | |
| { | |
| try | |
| { | |
| $callback_url = "http://" . $domain; | |
| $curl_response = $this->curl->get($callback_url); | |
| if (!empty($curl_response->headers['Status-Code'])) { | |
| libxml_use_internal_errors(TRUE); | |
| $this->dom_doc->loadHTML('<?xml encoding="utf-8" ?>' . $curl_response); | |
| libxml_use_internal_errors(FALSE); | |
| $xpath = new DOMXPath($this->dom_doc); | |
| $metas = $xpath->query('//meta'); | |
| foreach ($metas as $meta) { | |
| if (strtolower($meta->getAttribute('http-equiv')) == 'content-type') { | |
| $meta_charset = $meta->getAttribute('content'); | |
| } | |
| if ($meta->getAttribute('charset') != '') { | |
| $html5_charset = $meta->getAttribute('charset'); | |
| } | |
| } | |
| $header_charset = $curl_response->headers['Content-Type']; | |
| if (preg_match('/charset=(.+)/', $header_charset, $m)) { | |
| $charset = $m[1]; | |
| } elseif (preg_match('/charset=(.+)/', $meta_charset, $m)) { | |
| $charset = $m[1]; | |
| } elseif (!empty($html5_charset)) { | |
| $charset = $html5_charset; | |
| } else { | |
| // default charset | |
| // $charset = 'ISO-8859-1'; | |
| } | |
| if (!empty($charset) && $charset != "utf-8") { | |
| $tmp = iconv($charset,'utf-8', $curl_response); | |
| libxml_use_internal_errors(TRUE); | |
| $this->dom_doc->loadHTML('<?xml encoding="utf-8" ?>' . $tmp); | |
| libxml_use_internal_errors(FALSE); | |
| $xpath = new DOMXPath($this->dom_doc); | |
| } | |
| $page_title = $xpath->query('//title')->item(0)->nodeValue; | |
| $metas = $xpath->query('//meta'); | |
| foreach ($metas as $meta) { | |
| if (strtolower($meta->getAttribute('name')) == 'description') { | |
| $meta_description = $meta->getAttribute('content'); | |
| } | |
| if (strtolower($meta->getAttribute('name')) == 'keywords') { | |
| $meta_tags = $meta->getAttribute('content'); | |
| } | |
| } | |
| $page_title = htmlentities(trim($page_title), ENT_QUOTES, 'UTF-8', false); | |
| $meta_description = htmlentities(trim($meta_description), ENT_QUOTES, 'UTF-8', false); | |
| $meta_tags = htmlentities(trim($meta_tags), ENT_QUOTES, 'UTF-8', false); | |
| preg_match('/pub-[0-9]{16,16}/si', $curl_response, $output); | |
| $adsense_pub_id = ($output[0]) ? $output[0] : ''; | |
| preg_match('/UA-[0-9]{6,9}-[0-9]{1,2}/si', $curl_response, $output); | |
| $analytics_id = ($output[0]) ? $output[0] : ''; | |
| $links = $xpath->query('/html/body//a'); | |
| foreach ($links as $link) { | |
| if (!$link->hasAttribute('href')) { continue; } | |
| $href = trim($link->getAttribute('href')); | |
| $rel = trim($link->getAttribute('rel')); | |
| if (empty($href)) { continue; } | |
| $tmp = parse_url(strtolower($href)); | |
| if (substr($href, 0, 1) == '#' || (!empty($tmp['scheme']) && !in_array($tmp['scheme'], array('http', 'https')))) { continue; } | |
| if (empty($tmp['host']) || $tmp['host'] == $domain || strpos($tmp['host'], '.' . $domain) !== false) { | |
| $inlinks[] = $href; | |
| if (in_array("nofollow", explode(" ", $rel))) { | |
| $inlinks_nofollow[] = $href; | |
| } | |
| } else { | |
| $outlinks[] = $href; | |
| if (in_array("nofollow", explode(" ", $rel))) { | |
| $outlinks_nofollow[] = $href; | |
| } | |
| } | |
| } | |
| $inlinks = (is_array($inlinks)) ? array_unique(array_filter($inlinks)) : null ; | |
| $inlinks_nofollow = (is_array($inlinks_nofollow)) ? array_unique(array_filter($inlinks_nofollow)) : null ; | |
| $outlinks = (is_array($outlinks)) ? array_unique(array_filter($outlinks)) : null ; | |
| $outlinks_nofollow = (is_array($outlinks_nofollow)) ? array_unique(array_filter($outlinks_nofollow)) : null ; | |
| $inpage_analysis = array( | |
| 'h1' => $xpath->query("/html/body//h1")->length, | |
| 'h2' => $xpath->query("/html/body//h2")->length, | |
| 'h3' => $xpath->query("/html/body//h3")->length, | |
| 'h4' => $xpath->query("/html/body//h4")->length, | |
| 'h5' => $xpath->query("/html/body//h5")->length, | |
| 'h6' => $xpath->query("/html/body//h6")->length, | |
| 'iframe' => $xpath->query("/html/body//iframe")->length, | |
| 'img' => $xpath->query("/html/body//img")->length, | |
| 'analytics' => $analytics_id, | |
| 'inlinks' => count($inlinks), | |
| 'inlinks_nofollow' => count($inlinks_nofollow), | |
| 'outlinks' => count($outlinks), | |
| 'outlinks_nofollow' => count($outlinks_nofollow) | |
| ); | |
| $response = array( | |
| 'status' => 'success', | |
| 'data' => array( | |
| 'test' => $test, | |
| 'page_title' => $page_title, | |
| 'meta_description' => $meta_description, | |
| 'meta_tags' => $meta_tags, | |
| 'adsense_pub_id' => $adsense_pub_id, | |
| 'charset' => strtolower($charset), | |
| 'header_data' => $curl_response->headers, | |
| 'inpage_analysis' => $inpage_analysis | |
| ) | |
| ); | |
| } else { | |
| $response = array( | |
| 'status' => 'error', | |
| 'msg' => $this->curl->error() | |
| ); | |
| } | |
| } | |
| catch (Exception $e) | |
| { | |
| $response = array( | |
| 'status' => 'error', | |
| 'msg' => $e->getMessage() | |
| ); | |
| } | |
| return $response; | |
| } | |
| /* Get DNS Records | |
| -------------------------------------------------- */ | |
| public function getDNS($domain) | |
| { | |
| try | |
| { | |
| $data = dns_get_record($domain, DNS_ALL); | |
| $response = array( | |
| 'status' => 'success', | |
| 'data' => array( | |
| 'dns_records' => $data | |
| ) | |
| ); | |
| } | |
| catch (Exception $e) | |
| { | |
| $response = array( | |
| 'status' => 'error', | |
| 'msg' => $e->getMessage() | |
| ); | |
| } | |
| return $response; | |
| } | |
| /* Get Host Information | |
| -------------------------------------------------- */ | |
| public function getHost($domain, $api = "") | |
| { | |
| try | |
| { | |
| $hosted_ip = gethostbyname($domain); | |
| if ($hosted_ip == $domain || !filter_var($hosted_ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) { | |
| $response = array( | |
| 'status' => 'error', | |
| 'msg' => 'Unable to Get IP by Host Name.' | |
| ); | |
| } else { | |
| $callback_url = "http://api.ipinfodb.com/v3/ip-city/?"; | |
| $data = array( | |
| 'key' => (empty($api) ? $_SESSION['IPINFODB_API'] : $api), | |
| 'ip' => $hosted_ip, | |
| 'format' => 'json' | |
| ); | |
| $curl_response = $this->curl->get($callback_url . http_build_query($data, '', '&')); | |
| if ($curl_response->headers['Status-Code'] == "200") { | |
| $content = json_decode($curl_response, true); | |
| if ($content['statusCode'] == "OK") { | |
| $friendly_location = array(); | |
| $tmp = array('regionName', 'cityName', 'countryName', 'zipCode'); | |
| foreach ($tmp as $c) { | |
| if ($content[$c] != "" && $content[$c] != "-") { | |
| $friendly_location[] = ucwords(strtolower($content[$c])); | |
| } | |
| } | |
| $host_details = array( | |
| 'hosted_ip' => $hosted_ip, | |
| 'hosted_ip_latitude' => $content['latitude'], | |
| 'hosted_ip_longitude' => $content['longitude'], | |
| 'hosted_ip_country' => strtoupper($content['countryCode']), | |
| 'hosted_ip_friendly_location' => implode(", ", $friendly_location) | |
| ); | |
| $response = array( | |
| 'status' => 'success', | |
| 'data' => $host_details | |
| ); | |
| } else { | |
| $response = array( | |
| 'status' => 'error', | |
| 'msg' => 'IPINFODB Error Message: ' . $content['statusMessage'] | |
| ); | |
| } | |
| } else { | |
| $response = array( | |
| 'status' => 'error', | |
| 'msg' => 'IPINFODB Error. HTTP Code: ' . $curl_response->headers['Status-Code'] | |
| ); | |
| } | |
| } | |
| } | |
| catch (Exception $e) | |
| { | |
| $response = array( | |
| 'status' => 'error', | |
| 'msg' => $e->getMessage() | |
| ); | |
| } | |
| return $response; | |
| } | |
| /* Get WHOIS Information | |
| -------------------------------------------------- */ | |
| public function getWhois($domain) | |
| { | |
| try | |
| { | |
| $result = $this->whois->Lookup($domain); | |
| $registrar = $result['regyinfo']['registrar']; | |
| $domain_status = $result['regrinfo']['domain']['status']; | |
| $domain_registered = $result['regrinfo']['domain']['created']; | |
| $domain_modified = $result['regrinfo']['domain']['changed']; | |
| $domain_expires = $result['regrinfo']['domain']['expires']; | |
| $nameservers = $result['regrinfo']['domain']['nserver']; | |
| $owner_email = (empty($result['regrinfo']['owner']['email']) ? $result['regrinfo']['admin']['email'] : $result['regrinfo']['owner']['email']); | |
| $tmp = ""; | |
| foreach($result['rawdata'] as $line) { | |
| $line = trim($line); | |
| $tmp .= $line."\n"; | |
| } | |
| $tmp = trim($tmp); | |
| $tmp = strip_tags($tmp); | |
| $tmp = str_replace("\n", "<br/>", $tmp); | |
| $tmp = str_replace("<br/><br/><br/>", "<br/><br/>", $tmp); | |
| $tmp = preg_replace('/\s\s+/', ' ', $tmp); | |
| $full_whois = $tmp; | |
| if (is_array($nameservers) && count($nameservers) > 0) { | |
| $gi = geoip_open(dirname(__FILE__) . "/maxmind_geoip/GeoIP.dat", GEOIP_STANDARD); | |
| $nameservers_final = array(); | |
| foreach ($nameservers as $host => $ip) { | |
| if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) { | |
| $ns_ip = $ip; | |
| $ns_country = strtoupper(geoip_country_code_by_addr($gi, $ns_ip)); | |
| } | |
| $nameservers_final[] = array( | |
| 'ns_host' => $host, | |
| 'ns_ip' => $ns_ip, | |
| 'ns_country' => $ns_country | |
| ); | |
| } | |
| geoip_close($gi); | |
| } | |
| if (strpos($full_whois, "domain is not supported") !== false) { | |
| $full_whois = ""; | |
| } | |
| $response = array( | |
| 'status' => 'success', | |
| 'data' => array( | |
| 'registrar' => $registrar, | |
| 'domain_status' => $domain_status, | |
| 'domain_registered' => $domain_registered, | |
| 'domain_modified' => $domain_modified, | |
| 'domain_expires' => $domain_expires, | |
| 'nameservers' => $nameservers_final, | |
| 'owner_email' => $owner_email, | |
| 'full_whois' => $full_whois | |
| ) | |
| ); | |
| } | |
| catch (Exception $e) | |
| { | |
| $response = array( | |
| 'status' => 'error', | |
| 'msg' => 'Failed to Initialize WHOIS Lookup.' | |
| ); | |
| } | |
| return $response; | |
| } | |
| /* Get Google Indexed Page Data | |
| -------------------------------------------------- */ | |
| public function getGoogleIndexedPage($domain) | |
| { | |
| try | |
| { | |
| $callback_url = "http://www.google.com/search?"; | |
| $data = array( | |
| 'q' => 'site:' . $domain, | |
| 'hl' => 'en' | |
| ); | |
| $curl_response = $this->curl->get($callback_url . http_build_query($data, '', '&')); | |
| if ($curl_response->headers['Status-Code'] == "200") { | |
| libxml_use_internal_errors(TRUE); | |
| $this->dom_doc->loadHTML($curl_response); | |
| libxml_use_internal_errors(FALSE); | |
| $xpath = new DOMXPath($this->dom_doc); | |
| $tmp = $xpath->query('/html/body//div[@id="resultStats"]')->item(0)->nodeValue; | |
| $tmp = explode(' ', trim($tmp)); | |
| $google_indexed_page = str_replace(",", "", $tmp[1]); | |
| } else { | |
| $google_indexed_page = 0; | |
| } | |
| $response = array( | |
| 'status' => 'success', | |
| 'data' => array( | |
| 'google_indexed_page' => filter_var($google_indexed_page, FILTER_SANITIZE_NUMBER_INT) | |
| ) | |
| ); | |
| } | |
| catch (Exception $e) | |
| { | |
| $response = array( | |
| 'status' => 'error', | |
| 'msg' => $e->getMessage() | |
| ); | |
| } | |
| return $response; | |
| } | |
| /* Get Google Inbound Links Data | |
| -------------------------------------------------- */ | |
| public function getGoogleInboundLinks($domain) | |
| { | |
| try | |
| { | |
| $callback_url = "http://www.google.com/search?"; | |
| $data = array( | |
| 'q' => 'link:' . $domain, | |
| 'hl' => 'en' | |
| ); | |
| $curl_response = $this->curl->get($callback_url . http_build_query($data, '', '&')); | |
| if ($curl_response->headers['Status-Code'] == "200") { | |
| libxml_use_internal_errors(TRUE); | |
| $this->dom_doc->loadHTML($curl_response); | |
| libxml_use_internal_errors(FALSE); | |
| $xpath = new DOMXPath($this->dom_doc); | |
| $tmp = $xpath->query('/html/body//div[@id="resultStats"]')->item(0)->nodeValue; | |
| $tmp = explode(' ', trim($tmp)); | |
| $google_inbound_links = str_replace(",", "", $tmp[1]); | |
| } else { | |
| $google_inbound_links = 0; | |
| } | |
| $response = array( | |
| 'status' => 'success', | |
| 'data' => array( | |
| 'google_inbound_links' => filter_var($google_inbound_links, FILTER_SANITIZE_NUMBER_INT) | |
| ) | |
| ); | |
| } | |
| catch (Exception $e) | |
| { | |
| $response = array( | |
| 'status' => 'error', | |
| 'msg' => $e->getMessage() | |
| ); | |
| } | |
| return $response; | |
| } | |
| /* Get Google Pagerank Data | |
| -------------------------------------------------- */ | |
| public function getGooglePageRank($domain) | |
| { | |
| try | |
| { | |
| $pageRank = $this->pagerank->getRank($domain); | |
| $response = array( | |
| 'status' => 'success', | |
| 'data' => array( | |
| 'pagerank' => (int)$pageRank | |
| ) | |
| ); | |
| } | |
| catch (Exception $e) | |
| { | |
| $response = array( | |
| 'status' => 'error', | |
| 'msg' => $e->getMessage() | |
| ); | |
| } | |
| return $response; | |
| } | |
| /* Get Google Pagespeed Data | |
| -------------------------------------------------- */ | |
| public function getPageSpeed($domain, $api = "") | |
| { | |
| try | |
| { | |
| $callback_url = "https://www.googleapis.com/pagespeedonline/v1/runPagespeed?"; | |
| $data = array( | |
| 'url' => 'http://' . $domain, | |
| 'key' => (empty($api) ? $_SESSION['GOOGLE_API_SERVER_APPS'] : $api), | |
| 'fields' => 'score,pageStats(htmlResponseBytes,textResponseBytes,cssResponseBytes,imageResponseBytes,javascriptResponseBytes,flashResponseBytes,otherResponseBytes)' | |
| ); | |
| $curl_response = $this->curl->get($callback_url . http_build_query($data, '', '&')); | |
| if ($curl_response->headers['Status-Code'] == "200") { | |
| $content = json_decode($curl_response, true); | |
| $response = array( | |
| 'status' => 'success', | |
| 'data' => array( | |
| 'pagespeed_score' => (int)$content['score'], | |
| 'pagespeed_stats' => $content['pageStats'] | |
| ) | |
| ); | |
| } else { | |
| $response = array( | |
| 'status' => 'error', | |
| 'msg' => 'Google API Error. HTTP Code: ' . $curl_response->headers['Status-Code'] | |
| ); | |
| } | |
| } | |
| catch (Exception $e) | |
| { | |
| $response = array( | |
| 'status' => 'error', | |
| 'msg' => $e->getMessage() | |
| ); | |
| } | |
| return $response; | |
| } | |
| /* Get Yahoo Indexed Page Data | |
| -------------------------------------------------- */ | |
| public function getYahooIndexedPage($domain) | |
| { | |
| try | |
| { | |
| $callback_url = "http://search.yahoo.com/search?"; | |
| $data = array( | |
| 'p' => 'site:' . $domain | |
| ); | |
| $curl_response = $this->curl->get($callback_url . http_build_query($data, '', '&')); | |
| if ($curl_response->headers['Status-Code'] == "200") { | |
| libxml_use_internal_errors(TRUE); | |
| $this->dom_doc->loadHTML($curl_response); | |
| libxml_use_internal_errors(FALSE); | |
| $xpath = new DOMXPath($this->dom_doc); | |
| $tmp = $xpath->query('/html/body//span[@id="resultCount"]')->item(0)->nodeValue; | |
| $yahoo_indexed_page = str_replace(",", "", $tmp); | |
| } else { | |
| $yahoo_indexed_page = "0"; | |
| } | |
| $response = array( | |
| 'status' => 'success', | |
| 'data' => array( | |
| 'yahoo_indexed_page' => filter_var($yahoo_indexed_page, FILTER_SANITIZE_NUMBER_INT) | |
| ) | |
| ); | |
| } | |
| catch (Exception $e) | |
| { | |
| $response = array( | |
| 'status' => 'error', | |
| 'msg' => $e->getMessage() | |
| ); | |
| } | |
| return $response; | |
| } | |
| /* Get Bing Indexed Page Data | |
| -------------------------------------------------- */ | |
| public function getBingIndexedPage($domain) | |
| { | |
| try | |
| { | |
| $callback_url = "http://www.bing.com/search?"; | |
| $data = array( | |
| 'q' => 'site:' . $domain | |
| ); | |
| $curl_response = $this->curl->get($callback_url . http_build_query($data, '', '&')); | |
| if ($curl_response->headers['Status-Code'] == "200") { | |
| libxml_use_internal_errors(TRUE); | |
| $this->dom_doc->loadHTML($curl_response); | |
| libxml_use_internal_errors(FALSE); | |
| $xpath = new DOMXPath($this->dom_doc); | |
| $tmp = $xpath->query('/html/body//span[@id="count"]')->item(0)->nodeValue; | |
| $tmp = explode(' ', trim($tmp)); | |
| $bing_indexed_page = str_replace(",", "", $tmp[0]); | |
| } else { | |
| $bing_indexed_page = "0"; | |
| } | |
| $response = array( | |
| 'status' => 'success', | |
| 'data' => array( | |
| 'bing_indexed_page' => filter_var($bing_indexed_page, FILTER_SANITIZE_NUMBER_INT) | |
| ) | |
| ); | |
| } | |
| catch (Exception $e) | |
| { | |
| $response = array( | |
| 'status' => 'error', | |
| 'msg' => $e->getMessage() | |
| ); | |
| } | |
| return $response; | |
| } | |
| /* Get Bing Inbound Links Data | |
| -------------------------------------------------- */ | |
| public function getBingInboundLinks($domain) | |
| { | |
| try | |
| { | |
| $callback_url = "http://www.bing.com/search?"; | |
| $data = array( | |
| 'q' => "inbody:$domain -site:$domain" | |
| ); | |
| $curl_response = $this->curl->get($callback_url . http_build_query($data, '', '&')); | |
| if ($curl_response->headers['Status-Code'] == "200") { | |
| libxml_use_internal_errors(TRUE); | |
| $this->dom_doc->loadHTML($curl_response); | |
| libxml_use_internal_errors(FALSE); | |
| $xpath = new DOMXPath($this->dom_doc); | |
| $tmp = $xpath->query('/html/body//span[@id="count"]')->item(0)->nodeValue; | |
| $tmp = explode(' ', trim($tmp)); | |
| $bing_inbound_links = str_replace(",", "", $tmp[0]); | |
| } else { | |
| $bing_inbound_links = "0"; | |
| } | |
| $response = array( | |
| 'status' => 'success', | |
| 'data' => array( | |
| 'bing_inbound_links' => filter_var($bing_inbound_links, FILTER_SANITIZE_NUMBER_INT) | |
| ) | |
| ); | |
| } | |
| catch (Exception $e) | |
| { | |
| $response = array( | |
| 'status' => 'error', | |
| 'msg' => $e->getMessage() | |
| ); | |
| } | |
| return $response; | |
| } | |
| /* Get SEOmoz Data | |
| -------------------------------------------------- */ | |
| public function getSeoMoz($domain, $accessid = "", $secret = "") | |
| { | |
| try | |
| { | |
| $access_id = (empty($accessid) ? $_SESSION['SEOMOZ_API_ACCESSID'] : $accessid); | |
| $secret_key = (empty($secret) ? $_SESSION['SEOMOZ_API_SECRETKEY'] : $secret); | |
| $expires = time() + 300; | |
| $stringToSign = $access_id."\n".$expires; | |
| $binarySignature = hash_hmac('sha1', $stringToSign, $secret_key, true); | |
| $urlSafeSignature = base64_encode($binarySignature); | |
| $callback_url = "http://lsapi.seomoz.com/linkscape/url-metrics/www." . $domain . "?"; | |
| $data = array( | |
| 'Cols' => '68719476736', | |
| 'AccessID' => $access_id, | |
| 'Expires' => $expires, | |
| 'Signature' => $urlSafeSignature | |
| ); | |
| $curl_response = $this->curl->get($callback_url . http_build_query($data, '', '&')); | |
| if ($curl_response->headers['Status-Code'] == "200") { | |
| $parse_response = json_decode($curl_response, true); | |
| $domain_authority = $parse_response['pda']; | |
| $response = array( | |
| 'status' => 'success', | |
| 'data' => array( | |
| 'domain_authority' => (int)round($domain_authority) | |
| ) | |
| ); | |
| } else { | |
| $response = array( | |
| 'status' => 'error', | |
| 'msg' => 'SEOMoZ Response Error.' | |
| ); | |
| } | |
| } | |
| catch (Exception $e) | |
| { | |
| $response = array( | |
| 'status' => 'error', | |
| 'msg' => $e->getMessage() | |
| ); | |
| } | |
| return $response; | |
| } | |
| /* Get SiteAdvisor Rating Data | |
| -------------------------------------------------- */ | |
| public function getSiteAdvisor($domain) | |
| { | |
| try | |
| { | |
| $callback_url = "http://www.siteadvisor.com/sites/" . $domain; | |
| $curl_response = $this->curl->get($callback_url); | |
| if ($curl_response->headers['Status-Code'] == "200") { | |
| libxml_use_internal_errors(TRUE); | |
| $this->dom_doc->loadHTML($curl_response); | |
| libxml_use_internal_errors(FALSE); | |
| $xpath = new DOMXPath($this->dom_doc); | |
| $tmp = $xpath->query('/html/body//div[@id="siteVerdict"]//img')->item(0); | |
| if ($tmp->hasAttribute('src')) { | |
| $tmp = $tmp->getAttribute('src'); | |
| if (stripos($tmp, "green") !== false) { | |
| $siteadvisor_rating = 1; | |
| } elseif (stripos($tmp, "yellow") !== false) { | |
| $siteadvisor_rating = 2; | |
| } elseif (stripos($tmp, "red") !== false) { | |
| $siteadvisor_rating = 3; | |
| } else { | |
| $siteadvisor_rating = 0; | |
| } | |
| } else { | |
| $siteadvisor_rating = 0; | |
| } | |
| } else { | |
| $siteadvisor_rating = 0; | |
| } | |
| $response = array( | |
| 'status' => 'success', | |
| 'data' => array( | |
| 'siteadvisor' => (int)$siteadvisor_rating | |
| ) | |
| ); | |
| } | |
| catch (Exception $e) | |
| { | |
| $response = array( | |
| 'status' => 'error', | |
| 'msg' => $e->getMessage() | |
| ); | |
| } | |
| return $response; | |
| } | |
| /* Get Alexa Data | |
| -------------------------------------------------- */ | |
| public function getAlexa($domain) | |
| { | |
| try | |
| { | |
| $callback_url = "http://data.alexa.com/data?"; | |
| $data = array( | |
| 'cli' => '10', | |
| 'dat' => 's', | |
| 'url' => $domain | |
| ); | |
| $curl_response = $this->curl->get($callback_url . http_build_query($data, '', '&')); | |
| if ($curl_response->headers['Status-Code'] == "200") { | |
| $xml = simplexml_load_string($curl_response); | |
| $popularity = $xml->xpath('//SD/POPULARITY'); | |
| $links = $xml->xpath('//SD/LINKSIN'); | |
| $dmoz = $xml->xpath('//DMOZ/SITE/CATS/CAT'); | |
| $alexa_rank = $popularity[0]['TEXT']; | |
| $alexa_inbound_links = $links[0]['NUM']; | |
| $is_dmoz_listed = (count($dmoz) > 0 ? 1 : 0); | |
| } else { | |
| $alexa_rank = 0; | |
| $alexa_inbound_links = 0; | |
| $is_dmoz_listed = 0; | |
| } | |
| $response = array( | |
| 'status' => 'success', | |
| 'data' => array( | |
| 'alexa_rank' => filter_var($alexa_rank, FILTER_SANITIZE_NUMBER_INT), | |
| 'alexa_inbound_links' => filter_var($alexa_inbound_links, FILTER_SANITIZE_NUMBER_INT), | |
| 'is_dmoz_listed' => (int)$is_dmoz_listed | |
| ) | |
| ); | |
| } | |
| catch (Exception $e) | |
| { | |
| $response = array( | |
| 'status' => 'error', | |
| 'msg' => $e->getMessage() | |
| ); | |
| } | |
| return $response; | |
| } | |
| /* Get Facebook Data | |
| -------------------------------------------------- */ | |
| public function getFacebookData($domain) | |
| { | |
| try | |
| { | |
| $callback_url = "https://graph.facebook.com/fql?"; | |
| $data = array( | |
| 'q' => "SELECT comment_count, like_count, share_count FROM link_stat WHERE url='$domain'" | |
| ); | |
| $curl_response = $this->curl->get($callback_url . http_build_query($data, '', '&')); | |
| if ($curl_response->headers['Status-Code'] == "200") { | |
| $parse_response = json_decode($curl_response, true); | |
| $fb_share_count = $parse_response['data'][0]['share_count']; | |
| $fb_like_count = $parse_response['data'][0]['like_count']; | |
| $fb_comment_count = $parse_response['data'][0]['comment_count']; | |
| } else { | |
| $fb_share_count = 0; | |
| $fb_like_count = 0; | |
| $fb_comment_count = 0; | |
| } | |
| $response = array( | |
| 'status' => 'success', | |
| 'data' => array( | |
| 'fb_share_count' => filter_var($fb_share_count, FILTER_SANITIZE_NUMBER_INT), | |
| 'fb_like_count' => filter_var($fb_like_count, FILTER_SANITIZE_NUMBER_INT), | |
| 'fb_comment_count' => filter_var($fb_comment_count, FILTER_SANITIZE_NUMBER_INT) | |
| ) | |
| ); | |
| } | |
| catch (Exception $e) | |
| { | |
| $response = array( | |
| 'status' => 'error', | |
| 'msg' => $e->getMessage() | |
| ); | |
| } | |
| return $response; | |
| } | |
| /* Get Twitter Data | |
| -------------------------------------------------- */ | |
| public function getTwitterData($domain) | |
| { | |
| try | |
| { | |
| $curl_response_1 = $this->curl->get("http://urls.api.twitter.com/1/urls/count.json?url=" . $domain); | |
| $curl_response_2 = $this->curl->get("http://urls.api.twitter.com/1/urls/count.json?url=" . $domain); | |
| if ($curl_response_1->headers['Status-Code'] == "200" || $curl_response_2->headers['Status-Code'] == "200") { | |
| $parse_response_1 = json_decode($curl_response_1, true); | |
| $parse_response_2 = json_decode($curl_response_2, true); | |
| $twitter_count = $parse_response_1['count'] + $parse_response_2['count']; | |
| } else { | |
| $twitter_count = 0; | |
| } | |
| $response = array( | |
| 'status' => 'success', | |
| 'data' => array( | |
| 'twitter_count' => filter_var($twitter_count, FILTER_SANITIZE_NUMBER_INT) | |
| ) | |
| ); | |
| } | |
| catch (Exception $e) | |
| { | |
| $response = array( | |
| 'status' => 'error', | |
| 'msg' => $e->getMessage() | |
| ); | |
| } | |
| return $response; | |
| } | |
| /* Get LinkedIn Data | |
| -------------------------------------------------- */ | |
| public function getLinkedInData($domain) | |
| { | |
| try | |
| { | |
| $curl_response = $this->curl->get("http://www.linkedin.com/countserv/count/share?format=json&url=" . $domain); | |
| if ($curl_response->headers['Status-Code'] == "200") { | |
| $parse_response = json_decode($curl_response, true); | |
| $linkedin_share_count = $parse_response['count']; | |
| } else { | |
| $linkedin_share_count = 0; | |
| } | |
| $response = array( | |
| 'status' => 'success', | |
| 'data' => array( | |
| 'linkedin_share_count' => filter_var($linkedin_share_count, FILTER_SANITIZE_NUMBER_INT) | |
| ) | |
| ); | |
| } | |
| catch (Exception $e) | |
| { | |
| $response = array( | |
| 'status' => 'error', | |
| 'msg' => $e->getMessage() | |
| ); | |
| } | |
| return $response; | |
| } | |
| /* Get Delicious Data | |
| -------------------------------------------------- */ | |
| public function getDeliciousData($domain) | |
| { | |
| try | |
| { | |
| $curl_response_1 = $this->curl->get("http://feeds.delicious.com/v2/json/urlinfo/data?url=" . $domain); | |
| $curl_response_2 = $this->curl->get("http://feeds.delicious.com/v2/json/urlinfo/data?url=www." . $domain); | |
| if ($curl_response_1->headers['Status-Code'] == "200" || $curl_response_2->headers['Status-Code'] == "200") { | |
| $parse_response_1 = json_decode($curl_response_1, true); | |
| $parse_response_2 = json_decode($curl_response_2, true); | |
| $delicious_total_posts = $parse_response_1[0]['total_posts'] + $parse_response_2[0]['total_posts']; | |
| } else { | |
| $delicious_total_posts = 0; | |
| } | |
| $response = array( | |
| 'status' => 'success', | |
| 'data' => array( | |
| 'delicious_total_posts' => filter_var($delicious_total_posts, FILTER_SANITIZE_NUMBER_INT) | |
| ) | |
| ); | |
| } | |
| catch (Exception $e) | |
| { | |
| $response = array( | |
| 'status' => 'error', | |
| 'msg' => $e->getMessage() | |
| ); | |
| } | |
| return $response; | |
| } | |
| /* Get Google Plus Data | |
| -------------------------------------------------- */ | |
| public function getGooglePlusData($domain) | |
| { | |
| try | |
| { | |
| $this->curl->options['CURLOPT_POSTFIELDS'] = '[{ "method" : "pos.plusones.get", "id" : "p", "params" : { "nolog" : true, "id" : "http://' . $domain . '", "source" : "widget", "userId" : "@viewer", "groupId" : "@self" }, "jsonrpc" : "2.0", "key" : "p", "apiVersion" : "v1" }]'; | |
| $this->curl->headers['Content-type'] = 'application/json'; | |
| $curl_response = $this->curl->post("https://clients6.google.com/rpc?key=AIzaSyCKSbrvQasunBoV16zDH9R33D88CeLr9gQ"); | |
| if ($curl_response->headers['Status-Code'] == "200") { | |
| $parse_response = json_decode($curl_response, true); | |
| $g_plus_count = $parse_response[0]['result']['metadata']['globalCounts']['count']; | |
| } else { | |
| $g_plus_count = 0; | |
| } | |
| $response = array( | |
| 'status' => 'success', | |
| 'data' => array( | |
| 'g_plus_count' => filter_var($g_plus_count, FILTER_SANITIZE_NUMBER_INT) | |
| ) | |
| ); | |
| } | |
| catch (Exception $e) | |
| { | |
| $response = array( | |
| 'status' => 'error', | |
| 'msg' => $e->getMessage() | |
| ); | |
| } | |
| return $response; | |
| } | |
| /* Get Google Safe Browsing Data | |
| -------------------------------------------------- */ | |
| public function getSafeBrowsingData($domain, $api = "") | |
| { | |
| try | |
| { | |
| $callback_url = "https://sb-ssl.google.com/safebrowsing/api/lookup?"; | |
| $data = array( | |
| 'client' => 'api', | |
| 'apikey' => (empty($api) ? $_SESSION['GOOGLE_SAFE_BROWSING_API'] : $api), | |
| 'appver' => '1.0', | |
| 'pver' => '3.0', | |
| 'url' => $domain | |
| ); | |
| $curl_response = $this->curl->get($callback_url . http_build_query($data, '', '&')); | |
| if ($curl_response->headers['Status-Code'] == "200" || $curl_response->headers['Status-Code'] == "204") { | |
| if ($curl_response == "phishing") { | |
| $google_safe_browsing = 1; | |
| } elseif ($curl_response == "malware") { | |
| $google_safe_browsing = 2; | |
| } elseif ($curl_response == "phishing,malware") { | |
| $google_safe_browsing = 3; | |
| } else { | |
| $google_safe_browsing = 0; | |
| } | |
| } else { | |
| $google_safe_browsing = 0; | |
| } | |
| $response = array( | |
| 'status' => 'success', | |
| 'data' => array( | |
| 'google_safe_browsing' => (int)$google_safe_browsing | |
| ) | |
| ); | |
| } | |
| catch (Exception $e) | |
| { | |
| $response = array( | |
| 'status' => 'error', | |
| 'msg' => $e->getMessage() | |
| ); | |
| } | |
| return $response; | |
| } | |
| /* Get Web of Trust Data | |
| -------------------------------------------------- */ | |
| public function getWebOfTrustData($domain, $api = "") | |
| { | |
| try | |
| { | |
| $callback_url = "http://api.mywot.com/0.4/public_link_json2?"; | |
| $data = array( | |
| 'hosts' => $domain . '/', | |
| 'key' => (empty($api) ? $_SESSION['WOT_API'] : $api) | |
| ); | |
| $curl_response = $this->curl->get($callback_url . http_build_query($data, '', '&')); | |
| if ($curl_response->headers['Status-Code'] == "200") { | |
| $parse_response = json_decode($curl_response, true); | |
| if ($parse_response[$domain][0]) { | |
| $component['0'] = implode(",", $parse_response[$domain][0]); | |
| } | |
| if ($parse_response[$domain][1]) { | |
| $component['1'] = implode(",", $parse_response[$domain][1]); | |
| } | |
| if ($parse_response[$domain][2]) { | |
| $component['2'] = implode(",", $parse_response[$domain][2]); | |
| } | |
| if ($parse_response[$domain][4]) { | |
| $component['4'] = implode(",", $parse_response[$domain][4]); | |
| } | |
| $wot_rating = $component; | |
| } else { | |
| $wot_rating = ""; | |
| } | |
| $response = array( | |
| 'status' => 'success', | |
| 'data' => array( | |
| 'wot_rating' => $wot_rating | |
| ) | |
| ); | |
| } | |
| catch (Exception $e) | |
| { | |
| $response = array( | |
| 'status' => 'error', | |
| 'msg' => $e->getMessage() | |
| ); | |
| } | |
| return $response; | |
| } | |
| } | |
| ?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment