]> git.mxchange.org Git - friendica.git/blob - mod/ostatus_subscribe.php
Review changes
[friendica.git] / mod / ostatus_subscribe.php
1 <?php
2 /**
3  * @file mod/ostatus_subscribe.php
4  */
5 use Friendica\App;
6 use Friendica\Core\PConfig;
7 use Friendica\Core\System;
8 use Friendica\Model\Contact;
9 use Friendica\Network\Probe;
10
11 function ostatus_subscribe_content(App $a) {
12
13         if (! local_user()) {
14                 notice( t('Permission denied.') . EOL);
15                 goaway($_SESSION['return_url']);
16                 // NOTREACHED
17         }
18
19         $o = "<h2>".t("Subscribing to OStatus contacts")."</h2>";
20
21         $uid = local_user();
22
23         $a = get_app();
24
25         $counter = intval($_REQUEST['counter']);
26
27         if (PConfig::get($uid, "ostatus", "legacy_friends") == "") {
28
29                 if ($_REQUEST["url"] == "") {
30                         return $o.t("No contact provided.");
31                 }
32
33                 $contact = Probe::uri($_REQUEST["url"]);
34
35                 if (!$contact) {
36                         return $o.t("Couldn't fetch information for contact.");
37                 }
38
39                 $api = $contact["baseurl"]."/api/";
40
41                 // Fetching friends
42                 $data = z_fetch_url($api."statuses/friends.json?screen_name=".$contact["nick"]);
43
44                 if (!$data["success"]) {
45                         return $o.t("Couldn't fetch friends for contact.");
46                 }
47
48                 PConfig::set($uid, "ostatus", "legacy_friends", $data["body"]);
49         }
50
51         $friends = json_decode(PConfig::get($uid, "ostatus", "legacy_friends"));
52
53         $total = sizeof($friends);
54
55         if ($counter >= $total) {
56                 $a->page['htmlhead'] = '<meta http-equiv="refresh" content="0; URL='.System::baseUrl().'/settings/connectors">';
57                 PConfig::delete($uid, "ostatus", "legacy_friends");
58                 PConfig::delete($uid, "ostatus", "legacy_contact");
59                 $o .= t("Done");
60                 return $o;
61         }
62
63         $friend = $friends[$counter++];
64
65         $url = $friend->statusnet_profile_url;
66
67         $o .= "<p>".$counter."/".$total.": ".$url;
68
69         $data = Probe::uri($url);
70         if ($data["network"] == NETWORK_OSTATUS) {
71                 $result = Contact::create($uid, $url, true, NETWORK_OSTATUS);
72                 if ($result["success"]) {
73                         $o .= " - ".t("success");
74                 } else {
75                         $o .= " - ".t("failed");
76                 }
77         } else {
78                 $o .= " - ".t("ignored");
79         }
80
81         $o .= "</p>";
82
83         $o .= "<p>".t("Keep this window open until done.")."</p>";
84
85         $a->page['htmlhead'] = '<meta http-equiv="refresh" content="0; URL='.System::baseUrl().'/ostatus_subscribe?counter='.$counter.'">';
86
87         return $o;
88 }