* @file mod/follow.php
*/
use Friendica\App;
-use Friendica\Core\Config;
-use Friendica\Core\L10n;
use Friendica\Core\Protocol;
use Friendica\Core\Renderer;
-use Friendica\Core\System;
use Friendica\DI;
use Friendica\Model\Contact;
use Friendica\Model\Profile;
+use Friendica\Model\Item;
use Friendica\Network\Probe;
use Friendica\Database\DBA;
use Friendica\Util\Strings;
$result = Contact::createFromProbe($uid, $url, true);
if ($result['success'] == false) {
+ // Possibly it is a remote item and not an account
+ follow_remote_item($url);
+
if ($result['message']) {
notice($result['message']);
}
$protocol = Contact::getProtocol($ret['url'], $ret['network']);
- if (($protocol == Protocol::DIASPORA) && !Config::get('system', 'diaspora_enabled')) {
+ if (($protocol == Protocol::DIASPORA) && !DI::config()->get('system', 'diaspora_enabled')) {
notice(DI::l10n()->t("Diaspora support isn't enabled. Contact can't be added."));
$submit = '';
//$a->internalRedirect($_SESSION['return_path']);
// NOTREACHED
}
- if (($protocol == Protocol::OSTATUS) && Config::get('system', 'ostatus_disabled')) {
+ if (($protocol == Protocol::OSTATUS) && DI::config()->get('system', 'ostatus_disabled')) {
notice(DI::l10n()->t("OStatus support is disabled. Contact can't be added."));
$submit = '';
//$a->internalRedirect($_SESSION['return_path']);
}
if ($protocol == Protocol::PHANTOM) {
+ // Possibly it is a remote item and not an account
+ follow_remote_item($url);
+
notice(DI::l10n()->t("The network type couldn't be detected. Contact can't be added."));
$submit = '';
//$a->internalRedirect($_SESSION['return_path']);
return $o;
}
+
+function follow_remote_item($url)
+{
+ $item_id = Item::fetchByLink($url, local_user());
+ if (!$item_id) {
+ // If the user-specific search failed, we search and probe a public post
+ $item_id = Item::fetchByLink($url);
+ }
+
+ if (!empty($item_id)) {
+ $item = Item::selectFirst(['guid'], ['id' => $item_id]);
+ if (DBA::isResult($item)) {
+ DI::baseUrl()->redirect('display/' . $item['guid']);
+ }
+ }
+}