+ /**
+ * @brief Check for twitter contact
+ *
+ * @param string $uri
+ *
+ * @return array twitter data
+ */
+ private static function twitter($uri)
+ {
+ if (preg_match('=(.*)@twitter.com=i', $uri, $matches)) {
+ $nick = $matches[1];
+ } elseif (preg_match('=https?://twitter.com/(.*)=i', $uri, $matches)) {
+ $nick = $matches[1];
+ } else {
+ return [];
+ }
+
+ $data = [];
+ $data['url'] = 'https://twitter.com/' . $nick;
+ $data['addr'] = $nick . '@twitter.com';
+ $data['nick'] = $data['name'] = $nick;
+ $data['network'] = Protocol::TWITTER;
+ $data['baseurl'] = 'https://twitter.com';
+
+ $curlResult = Network::curl($data['url'], false);
+ if (!$curlResult->isSuccess()) {
+ return [];
+ }
+
+ $body = $curlResult->getBody();
+ $doc = new DOMDocument();
+ @$doc->loadHTML($body);
+ $xpath = new DOMXPath($doc);
+
+ $list = $xpath->query('//img[@class]');
+ foreach ($list as $node) {
+ $img_attr = [];
+ if ($node->attributes->length) {
+ foreach ($node->attributes as $attribute) {
+ $img_attr[$attribute->name] = $attribute->value;
+ }
+ }
+
+ if (empty($img_attr['class'])) {
+ continue;
+ }
+
+ if (strpos($img_attr['class'], 'ProfileAvatar-image') !== false) {
+ if (!empty($img_attr['src'])) {
+ $data['photo'] = $img_attr['src'];
+ }
+ if (!empty($img_attr['alt'])) {
+ $data['name'] = $img_attr['alt'];
+ }
+ }
+ }
+
+ return $data;
+ }
+