use Friendica\Core\System;
use Friendica\Database\DBM;
use Friendica\Model\Contact;
-use Friendica\Model\Profile;
use Friendica\Object\Post;
use Friendica\Object\Thread;
use Friendica\Util\DateTimeFormat;
}
}
- $A = '[url=' . Profile::zrl($Alink) . ']' . $Aname . '[/url]';
- $B = '[url=' . Profile::zrl($Blink) . ']' . $Bname . '[/url]';
+ $A = '[url=' . Contact::magicLink($Alink) . ']' . $Aname . '[/url]';
+ $B = '[url=' . Contact::magicLink($Blink) . ']' . $Bname . '[/url]';
if ($Bphoto != "") {
- $Bphoto = '[url=' . Profile::zrl($Blink) . '][img]' . $Bphoto . '[/img][/url]';
+ $Bphoto = '[url=' . Contact::magicLink($Blink) . '][img]' . $Bphoto . '[/img][/url]';
}
$item['body'] = L10n::t('%1$s is now friends with %2$s', $A, $B)."\n\n\n".$Bphoto;
}
}
- $A = '[url=' . Profile::zrl($Alink) . ']' . $Aname . '[/url]';
- $B = '[url=' . Profile::zrl($Blink) . ']' . $Bname . '[/url]';
+ $A = '[url=' . Contact::magicLink($Alink) . ']' . $Aname . '[/url]';
+ $B = '[url=' . Contact::magicLink($Blink) . ']' . $Bname . '[/url]';
if ($Bphoto != "") {
- $Bphoto = '[url=' . Profile::zrl($Blink) . '][img=80x80]' . $Bphoto . '[/img][/url]';
+ $Bphoto = '[url=' . Contact::magicLink($Blink) . '][img=80x80]' . $Bphoto . '[/img][/url]';
}
/*
$obj = $r[0];
- $author = '[url=' . Profile::zrl($item['author-link']) . ']' . $item['author-name'] . '[/url]';
- $objauthor = '[url=' . Profile::zrl($obj['author-link']) . ']' . $obj['author-name'] . '[/url]';
+ $author = '[url=' . Contact::magicLink($item['author-link']) . ']' . $item['author-name'] . '[/url]';
+ $objauthor = '[url=' . Contact::magicLink($obj['author-link']) . ']' . $obj['author-name'] . '[/url]';
switch ($obj['verb']) {
case ACTIVITY_POST:
$target = $r[0];
$Bname = $target['author-name'];
$Blink = $target['author-link'];
- $A = '[url=' . Profile::zrl($Alink) . ']' . $Aname . '[/url]';
- $B = '[url=' . Profile::zrl($Blink) . ']' . $Bname . '[/url]';
+ $A = '[url=' . Contact::magicLink($Alink) . ']' . $Aname . '[/url]';
+ $B = '[url=' . Contact::magicLink($Blink) . ']' . $Bname . '[/url]';
$P = '[url=' . $target['plink'] . ']' . L10n::t('post/item') . '[/url]';
$item['body'] = L10n::t('%1$s marked %2$s\'s %3$s as favorite', $A, $B, $P)."\n";
}
if (preg_match_all('/@\[url=(.*?)\]/is', $item['body'], $matches, PREG_SET_ORDER)) {
foreach ($matches as $mtch) {
if (!strpos($mtch[1], 'zrl=')) {
- $item['body'] = str_replace($mtch[0], '@[url=' . Profile::zrl($mtch[1]) . ']', $item['body']);
+ $item['body'] = str_replace($mtch[0], '@[url=' . Contact::magicLink($mtch[1]) . ']', $item['body']);
}
}
}
// add zrl's to public images
$photo_pattern = "/\[url=(.*?)\/photos\/(.*?)\/image\/(.*?)\]\[img(.*?)\]h(.*?)\[\/img\]\[\/url\]/is";
if (preg_match($photo_pattern, $item['body'])) {
- $photo_replace = '[url=' . Profile::zrl('$1' . '/photos/' . '$2' . '/image/' . '$3' ,true) . '][img' . '$4' . ']h' . '$5' . '[/img][/url]';
+ $photo_replace = '[url=' . Contact::magicLink('$1' . '/photos/' . '$2' . '/image/' . '$3' ,true) . '][img' . '$4' . ']h' . '$5' . '[/img][/url]';
$item['body'] = BBCode::pregReplaceInTag($photo_pattern, $photo_replace, 'url', $item['body']);
}
return $items;
}
-function best_link_url($item, &$sparkle, $url = '') {
-
- $best_url = '';
- $sparkle = false;
-
- $clean_url = normalise_link($item['author-link']);
-
- if (local_user()) {
- $condition = [
- 'network' => NETWORK_DFRN,
- 'uid' => local_user(),
- 'nurl' => normalise_link($clean_url),
- 'pending' => false
- ];
- $contact = dba::selectFirst('contact', ['id'], $condition);
- if (DBM::is_result($contact)) {
- $best_url = 'redir/' . $contact['id'];
- $sparkle = true;
- if ($url != '') {
- $hostname = get_app()->get_hostname();
- if (!strstr($url, $hostname)) {
- $best_url .= "?url=".$url;
- } else {
- $best_url = $url;
- }
- }
- }
- }
- if (!$best_url) {
- if ($url != '') {
- $best_url = $url;
- } elseif (strlen($item['author-link'])) {
- $best_url = $item['author-link'];
- } else {
- $best_url = $item['url'];
- }
- }
-
- return $best_url;
-}
-
-
function item_photo_menu($item) {
$sub_link = '';
$poke_link = '';
$photos_link = $profile_link . '?url=photos';
$profile_link = $profile_link . '?url=profile';
} else {
- $profile_link = Profile::zrl($profile_link);
+ $profile_link = Contact::magicLink($profile_link);
}
if ($cid && !$item['self']) {
$redir = false;
if ($redirect) {
- $redirect_url = 'redir/' . $contact['id'];
- if (local_user() && ($contact['uid'] == local_user()) && ($contact['network'] === NETWORK_DFRN)) {
- $redir = true;
- $url = $redirect_url;
+ $url = Contact::magicLink($contact['url']);
+ if (strpos($url, 'redir/') === 0) {
$sparkle = ' sparkle';
- } else {
- $url = Profile::zrl($url);
}
}
foreach ($matches as $mtch) {
$mime = $mtch[3];
- if ((local_user() == $item['uid']) && ($item['contact-id'] != $a->contact['id']) && ($item['network'] == NETWORK_DFRN)) {
- $the_url = 'redir/' . $item['contact-id'] . '?f=1&url=' . $mtch[1];
- } else {
- $the_url = $mtch[1];
- }
+ $the_url = Contact::magicLink($item['author-link'], $mtch[1]);
if (strpos($mime, 'video') !== false) {
if (!$vhead) {
} else {
$connlnk = System::baseUrl() . '/follow/?url=' . $rr['url'];
$photo_menu = [
- 'profile' => [L10n::t("View Profile"), Profile::zrl($rr['url'])],
+ 'profile' => [L10n::t("View Profile"), Contact::magicLink($rr['url'])],
'follow' => [L10n::t("Connect/Follow"), $connlnk]
];
}
$vcard_widget = replace_macros(get_markup_template("vcard-widget.tpl"), [
'$name' => htmlentities($a->data['contact']['name']),
'$photo' => $a->data['contact']['photo'],
- '$url' => ($a->data['contact']['network'] == NETWORK_DFRN) ? "redir/" . $a->data['contact']['id'] : $a->data['contact']['url'],
+ '$url' => Contact::MagicLink($a->data['contact']['url']),
'$addr' => (($a->data['contact']['addr'] != "") ? ($a->data['contact']['addr']) : ""),
'$network_name' => $networkname,
'$network' => L10n::t('Network:'),
$relation_text = sprintf($relation_text, htmlentities($contact['name']));
- if (($contact['network'] === NETWORK_DFRN) && ($contact['rel'])) {
- $url = "redir/{$contact['id']}";
+ $url = Contact::magicLink($contact['url']);
+ if (strpos($url, 'redir/') === 0) {
$sparkle = ' class="sparkle" ';
} else {
- $url = $contact['url'];
$sparkle = '';
}
default:
break;
}
- if (($rr['network'] === NETWORK_DFRN) && ($rr['rel'])) {
- $url = "redir/{$rr['id']}";
+
+ $url = Contact::magicLink($rr['url']);
+ if (strpos($url, 'redir/') === 0) {
$sparkle = ' class="sparkle" ';
} else {
- $url = $rr['url'];
$sparkle = '';
}
}
// (ignore reply, nothing we can do it failed)
- // Old: goaway(Profile::zrl($dfrn_url));
goaway($forwardurl);
return; // NOTREACHED
}
$location_e = $location;
$photo_menu = [
- 'profile' => [L10n::t("View Profile"), Profile::zrl($profile_link)]
+ 'profile' => [L10n::t("View Profile"), Contact::magicLink($profile_link)]
];
$entry = [
use Friendica\Core\Worker;
use Friendica\Model\Contact;
use Friendica\Model\GContact;
-use Friendica\Model\Profile;
use Friendica\Network\Probe;
use Friendica\Protocol\PortableContact;
use Friendica\Util\Network;
$connlnk = System::baseUrl().'/follow/?url='.(($jj->connect) ? $jj->connect : $jj->url);
$conntxt = L10n::t('Connect');
$photo_menu = [
- 'profile' => [L10n::t("View Profile"), Profile::zrl($jj->url)],
+ 'profile' => [L10n::t("View Profile"), Contact::magicLink($jj->url)],
'follow' => [L10n::t("Connect/Follow"), $connlnk]
];
}
$entry = [
'alt_text' => $alt_text,
- 'url' => Profile::magicLink($jj->url),
+ 'url' => Contact::magicLink($jj->url),
'itemurl' => $itemurl,
'name' => htmlentities($jj->name),
'thumb' => proxy_url($jj->photo, false, PROXY_SIZE_THUMB),
'nick' => $contact['nick'],
'addr' => defaults($contact, 'addr', $contact['url']),
'thumb' => proxy_url($contact['thumb'], false, PROXY_SIZE_THUMB),
- 'url' => $cid ? ('redir/' . $cid) : Profile::zrl($contact['url']),
+ 'url' => Contact::magicLink($contact['url']),
'nurl' => $contact['nurl'], // We additionally store the nurl as identifier
'location' => $contact['location'],
'gender' => $contact['gender'],
$jj->photo = str_replace("http:///photo/", get_server()."/photo/", $jj->photo);
$connlnk = System::baseUrl() . '/follow/?url=' . $jj->url;
$photo_menu = [
- 'profile' => [L10n::t("View Profile"), Profile::zrl($jj->url)],
+ 'profile' => [L10n::t("View Profile"), Contact::magicLink($jj->url)],
'follow' => [L10n::t("Connect/Follow"), $connlnk]
];
$contact_details = Contact::getDetailsByURL($jj->url, local_user());
$entry = [
- 'url' => Profile::zrl($jj->url),
+ 'url' => Contact::magicLink($jj->url),
'itemurl' => (($contact_details['addr'] != "") ? $contact_details['addr'] : $jj->url),
'name' => $jj->name,
'details' => $contact_details['location'],
if ($message['from-url'] == $myprofile) {
$from_url = $myprofile;
$sparkle = '';
- } elseif ($message['contact-id'] != 0) {
- $from_url = 'redir/' . $message['contact-id'];
- $sparkle = ' sparkle';
} else {
- $from_url = $message['from-url'] . "?zrl=" . urlencode($myprofile);
+ $from_url = Contact::magicLink($message['from-url']);
$sparkle = ' sparkle';
}
$rslt .= replace_macros($tpl, [
'$id' => $rr['id'],
'$from_name' => $participants,
- '$from_url' => (($rr['network'] === NETWORK_DFRN) ? 'redir/' . $rr['contact-id'] : $rr['url']),
+ '$from_url' => Contact::magicLink($rr['url']),
'$from_addr' => $contact['addr'],
'$sparkle' => ' sparkle',
'$from_photo' => proxy_url($from_photo, false, PROXY_SIZE_THUMB),
continue;
}
- $redirect_url = 'redir/' . $item['cid'];
-
- if (local_user() && ($item['contact-uid'] == local_user())
- && ($item['network'] == NETWORK_DFRN) && !$item['self']) {
- $profile_url = $redirect_url;
+ $profile_url = Contact::MagicLinkById($item['cid']);
+ if (strpos($profile_url, 'redir/') === 0) {
$sparkle = ' sparkle';
} else {
- $profile_url = $item['url'];
$sparkle = '';
}
*/
use Friendica\App;
use Friendica\Core\System;
+use Friendica\Model\Contact;
use Friendica\Model\GContact;
use Friendica\Model\Profile;
$x = GContact::getRandomUrl();
if ($x) {
- goaway(Profile::zrl($x));
+ goaway(Contact::magicLink($x));
}
goaway(System::baseUrl() . '/profile');
$connlnk = System::baseUrl() . '/follow/?url=' . (($rr['connect']) ? $rr['connect'] : $rr['url']);
$ignlnk = System::baseUrl() . '/suggest?ignore=' . $rr['id'];
$photo_menu = [
- 'profile' => [L10n::t("View Profile"), Profile::zrl($rr["url"])],
+ 'profile' => [L10n::t("View Profile"), Contact::magicLink($rr["url"])],
'follow' => [L10n::t("Connect/Follow"), $connlnk],
'hide' => [L10n::t('Ignore/Hide'), $ignlnk]
];
$contact_details = Contact::getDetailsByURL($rr["url"], local_user(), $rr);
$entry = [
- 'url' => Profile::zrl($rr['url']),
+ 'url' => Contact::magicLink($rr['url']),
'itemurl' => (($contact_details['addr'] != "") ? $contact_details['addr'] : $rr['url']),
'img_hover' => $rr['url'],
'name' => $contact_details['name'],
'$nickname' => "",
'$name' => $contact["name"],
'$url' => $contact["url"],
- '$zrl' => Profile::zrl($contact["url"]),
+ '$zrl' => Contact::magicLink($contact["url"]),
'$url_label' => L10n::t("Profile URL"),
'$myaddr' => $myaddr,
'$request' => $request,
continue;
}
- $url = $rr['url'];
-
- // route DFRN profiles through the redirect
- if ($is_owner && ($rr['network'] === NETWORK_DFRN) && ($rr['rel'])) {
- $url = 'redir/' . $rr['id'];
- } else {
- $url = Profile::zrl($url);
- }
-
$contact_details = Contact::getDetailsByURL($rr['url'], $a->profile['uid'], $rr);
$contacts[] = [
'tags' => $contact_details['keywords'],
'about' => $contact_details['about'],
'account_type' => Contact::getAccountType($contact_details),
- 'url' => $url,
+ 'url' => Contact::magicLink($rr['url']),
'sparkle' => '',
'itemurl' => (($contact_details['addr'] != "") ? $contact_details['addr'] : $rr['url']),
'network' => ContactSelector::networkToName($rr['network'], $rr['url']),
use Friendica\Content\Feature;
use Friendica\Core\L10n;
use Friendica\Core\System;
+use Friendica\Model\Contact;
use Friendica\Database\DBM;
use dba;
$entry = [
'url' => 'network?f=&cid=' . $contact['id'],
- 'external_url' => 'redir/' . $contact['id'],
+ 'external_url' => Contact::magicLink($contact['url']),
'name' => $contact['name'],
'cid' => $contact['id'],
'selected' => $selected,
'contact_id' => $it['contact-id'],
'photo' => ((x($it, 'fphoto')) ? proxy_url($it['fphoto'], false, PROXY_SIZE_SMALL) : "images/person-175.jpg"),
'name' => $it['fname'],
- 'url' => Profile::zrl($it['furl']),
+ 'url' => Contact::magicLink($it['furl']),
'hidden' => $it['hidden'] == 1,
'post_newfriend' => (intval(PConfig::get(local_user(), 'system', 'post_newfriend')) ? '1' : 0),
'knowyou' => $knowyou,
'hidden' => $it['hidden'] == 1,
'post_newfriend' => (intval(PConfig::get(local_user(), 'system', 'post_newfriend')) ? '1' : 0),
'url' => $it['url'],
- 'zrl' => Profile::zrl($it['url']),
+ 'zrl' => Contact::magicLink($it['url']),
'addr' => $it['gaddr'],
'network' => $it['gnetwork'],
'knowyou' => $it['knowyou'],
if ($contact['uid'] != $uid) {
if ($uid == 0) {
- $profile_link = Profile::zrl($contact['url']);
+ $profile_link = self::magicLink($contact['url']);
$menu = ['profile' => [L10n::t('View Profile'), $profile_link, true]];
return $menu;
if (DBM::is_result($contact_own)) {
return self::photoMenu($contact_own, $uid);
} else {
- $profile_link = Profile::zrl($contact['url']);
+ $profile_link = self::magicLink($contact['url']);
$connlnk = 'follow/?url=' . $contact['url'];
$menu = [
'profile' => [L10n::t('View Profile'), $profile_link, true],
*/
public static function magicLink($contact_url, $url = '')
{
- $cid = self::getIdForURL($contact_url);
+ $cid = self::getIdForURL($contact_url, 0, true);
if (empty($cid)) {
return ($url != '') ? $url : $contact_url;
}
{
// Direkt auf die URL verweisen, wenn die Host-Angaben unterschiedlich sind
- $contact = dba::selectFirst('contact', ['network', 'url'], ['id' => $cid]);
+ $contact = dba::selectFirst('contact', ['network', 'url', 'uid'], ['id' => $cid]);
if ($contact['network'] != NETWORK_DFRN) {
return ($url != '') ? $url : $contact['url'];
}
+ if ($contact['uid'] != 0) {
+ return self::magicLink($contact['url'], $url);
+ }
+
$redirect = 'redir/' . $cid;
if ($url != '') {
$location = self::locationToArray($item['event-location']);
// Construct the profile link (magic-auth).
- $sp = false;
- $profile_link = best_link_url($item, $sp);
-
- if (!$sp) {
- $profile_link = Profile::zrl($profile_link);
- }
+ $profile_link = Contact::magicLink($item['author-link']);
$tpl = get_markup_template('event_stream_item.tpl');
$return = replace_macros($tpl, [
$p['photo'] = proxy_url($p['photo'], false, PROXY_SIZE_SMALL);
}
- $p['url'] = self::magicLink($p['url']);
+ $p['url'] = Contact::magicLink($p['url']);
$tpl = get_markup_template('profile_vcard.tpl');
$o .= replace_macros($tpl, [
$cids[] = $rr['cid'];
$today = (((strtotime($rr['start'] . ' +00:00') < $now) && (strtotime($rr['finish'] . ' +00:00') > $now)) ? true : false);
- $url = $rr['url'];
- if ($rr['network'] === NETWORK_DFRN) {
- $url = System::baseUrl() . '/redir/' . $rr['cid'];
- }
- $rr['link'] = $url;
+ $rr['link'] = Contact::magicLink($rr['url']);
$rr['title'] = $rr['name'];
$rr['date'] = day_translate(DateTimeFormat::convert($rr['start'], $a->timezone, 'UTC', $rr['adjust'] ? $bd_format : $bd_short)) . (($today) ? ' ' . L10n::t('[today]') : '');
$rr['startime'] = null;
}
}
- /**
- * @brief Returns a magic link to authenticate remote visitors
- *
- * @param string $contact_url The address of the contact profile
- * @param integer $uid The user id, "local_user" is the default
- *
- * @return string with "redir" link
- */
- public static function magicLink($contact_url, $uid = -1)
- {
- if ($uid == -1) {
- $uid = local_user();
- }
- $condition = ['pending' => false, 'uid' => $uid,
- 'nurl' => normalise_link($contact_url),
- 'network' => NETWORK_DFRN, 'self' => false];
- $contact = dba::selectFirst('contact', ['id'], $condition);
- if (DBM::is_result($contact)) {
- return System::baseUrl() . '/redir/' . $contact['id'];
- }
- return self::zrl($contact_url);
- }
-
public static function zrl($s, $force = false)
{
if (!strlen($s)) {
$orig_tag = $tag["url"];
- $tag["url"] = best_link_url($item, $sp, $tag["url"]);
+ $tag["url"] = Contact::magicLink($item['author-link'], $tag['url']);
if ($tag["type"] == TERM_HASHTAG) {
if ($orig_tag != $tag["url"]) {
use Friendica\Core\PConfig;
use Friendica\Database\DBM;
use Friendica\Model\Contact;
-use Friendica\Model\Profile;
use Friendica\Util\DateTimeFormat;
use Friendica\Util\Temporal;
use dba;
}
$this->writable = $this->getDataValue('writable') || $this->getDataValue('self');
- $this->redirect_url = 'redir/' . $this->getDataValue('cid');
+ $this->redirect_url = Contact::magicLinkById($this->getDataValue('cid'));
if (!$this->isToplevel()) {
$this->threaded = true;
// This will have been stored in $a->page_contact by our calling page.
// Put this person as the wall owner of the wall-to-wall notice.
- $this->owner_url = Profile::zrl($a->page_contact['url']);
+ $this->owner_url = Contact::magicLink($a->page_contact['url']);
$this->owner_photo = $a->page_contact['thumb'];
$this->owner_name = $a->page_contact['name'];
$this->wall_to_wall = true;
$this->owner_photo = $this->getDataValue('owner-avatar');
$this->owner_name = $this->getDataValue('owner-name');
$this->wall_to_wall = true;
- // If it is our contact, use a friendly redirect link
- if ($this->getDataValue('network') === NETWORK_DFRN
- && link_compare($this->getDataValue('owner-link'), $this->getDataValue('url'))
- ) {
- $this->owner_url = $this->getRedirectUrl();
- } else {
- $this->owner_url = Profile::zrl($this->getDataValue('owner-link'));
- }
+ $this->owner_url = Contact::magicLink($this->getDataValue('owner-link'));
}
}
}
use Friendica\Core\PConfig;
use Friendica\Core\System;
use Friendica\Database\DBM;
+use Friendica\Model\Contact;
use Friendica\Model\GContact;
use Friendica\Model\Profile;
foreach ($r as $rr) {
$entry = replace_macros($tpl, [
'$id' => $rr['id'],
- //'$profile_link' => Profile::zrl($rr['url']),
'$profile_link' => 'follow/?url='.urlencode($rr['url']),
'$photo' => proxy_url($rr['photo'], false, PROXY_SIZE_MICRO),
'$alt_text' => $rr['name'],
$entry = [
'url' => 'network?f=&cid=' . $contact['id'],
- 'external_url' => 'redir/' . $contact['id'],
+ 'external_url' => Contact::magicLink($contact['url']),
'name' => $contact['name'],
'cid' => $contact['id'],
'selected' => $selected,
}
foreach ($r as $index => $helper) {
- $r[$index]["url"] = Profile::zrl($helper["url"]);
+ $r[$index]["url"] = Contact::magicLink($helper["url"]);
}
$r[] = ["url" => "help/Quick-Start-guide", "name" => L10n::t("Quick Start")];