Merge pull request #8044 from annando/contact-adding
Don't add contacts when not needed
This commit is contained in:
commit
75c74e8562
6 changed files with 52 additions and 19 deletions
|
@ -269,29 +269,37 @@ class Contact
|
||||||
* @brief Get the basepath for a given contact link
|
* @brief Get the basepath for a given contact link
|
||||||
*
|
*
|
||||||
* @param string $url The contact link
|
* @param string $url The contact link
|
||||||
|
* @param boolean $dont_update Don't update the contact
|
||||||
*
|
*
|
||||||
* @return string basepath
|
* @return string basepath
|
||||||
* @return boolean $dont_update Don't update the contact
|
|
||||||
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
||||||
* @throws \ImagickException
|
* @throws \ImagickException
|
||||||
*/
|
*/
|
||||||
public static function getBasepath($url, $dont_update = false)
|
public static function getBasepath($url, $dont_update = false)
|
||||||
{
|
{
|
||||||
$contact = DBA::selectFirst('contact', ['baseurl'], ['uid' => 0, 'nurl' => Strings::normaliseLink($url)]);
|
$contact = DBA::selectFirst('contact', ['id', 'baseurl'], ['uid' => 0, 'nurl' => Strings::normaliseLink($url)]);
|
||||||
|
if (!DBA::isResult($contact)) {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
if (!empty($contact['baseurl'])) {
|
if (!empty($contact['baseurl'])) {
|
||||||
return $contact['baseurl'];
|
return $contact['baseurl'];
|
||||||
} elseif ($dont_update) {
|
} elseif ($dont_update) {
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
self::updateFromProbeByURL($url, true);
|
// Update the existing contact
|
||||||
|
self::updateFromProbe($contact['id'], '', true);
|
||||||
|
|
||||||
$contact = DBA::selectFirst('contact', ['baseurl'], ['uid' => 0, 'nurl' => Strings::normaliseLink($url)]);
|
// And fetch the result
|
||||||
if (!empty($contact['baseurl'])) {
|
$contact = DBA::selectFirst('contact', ['baseurl'], ['id' => $contact['id']]);
|
||||||
return $contact['baseurl'];
|
if (empty($contact['baseurl'])) {
|
||||||
|
Logger::info('No baseurl for contact', ['url' => $url]);
|
||||||
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
return '';
|
Logger::info('Found baseurl for contact', ['url' => $url, 'baseurl' => $contact['baseurl']]);
|
||||||
|
return $contact['baseurl'];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -216,7 +216,7 @@ class GContact
|
||||||
|
|
||||||
if (empty($gcontact['server_url'])) {
|
if (empty($gcontact['server_url'])) {
|
||||||
// We check the server url to be sure that it is a real one
|
// We check the server url to be sure that it is a real one
|
||||||
$server_url = Contact::getBasepath($gcontact['url']);
|
$server_url = self::getBasepath($gcontact['url']);
|
||||||
|
|
||||||
// We are now sure that it is a correct URL. So we use it in the future
|
// We are now sure that it is a correct URL. So we use it in the future
|
||||||
if ($server_url != '') {
|
if ($server_url != '') {
|
||||||
|
@ -1128,6 +1128,38 @@ class GContact
|
||||||
self::update($gcontact);
|
self::update($gcontact);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get the basepath for a given contact link
|
||||||
|
*
|
||||||
|
* @param string $url The gcontact link
|
||||||
|
* @param boolean $dont_update Don't update the contact
|
||||||
|
*
|
||||||
|
* @return string basepath
|
||||||
|
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
||||||
|
* @throws \ImagickException
|
||||||
|
*/
|
||||||
|
public static function getBasepath($url, $dont_update = false)
|
||||||
|
{
|
||||||
|
$gcontact = DBA::selectFirst('gcontact', ['server_url'], ['nurl' => Strings::normaliseLink($url)]);
|
||||||
|
if (!empty($gcontact['server_url'])) {
|
||||||
|
return $gcontact['server_url'];
|
||||||
|
} elseif ($dont_update) {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
self::updateFromProbe($url, true);
|
||||||
|
|
||||||
|
// Fetch the result
|
||||||
|
$gcontact = DBA::selectFirst('gcontact', ['server_url'], ['nurl' => Strings::normaliseLink($url)]);
|
||||||
|
if (empty($gcontact['server_url'])) {
|
||||||
|
Logger::info('No baseurl for gcontact', ['url' => $url]);
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
Logger::info('Found baseurl for gcontact', ['url' => $url, 'baseurl' => $gcontact['server_url']]);
|
||||||
|
return $gcontact['server_url'];
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Fetches users of given GNU Social server
|
* @brief Fetches users of given GNU Social server
|
||||||
*
|
*
|
||||||
|
|
|
@ -44,7 +44,7 @@ class GServer
|
||||||
public static function reachable(string $profile, string $server = '', string $network = '', bool $force = false)
|
public static function reachable(string $profile, string $server = '', string $network = '', bool $force = false)
|
||||||
{
|
{
|
||||||
if ($server == '') {
|
if ($server == '') {
|
||||||
$server = Contact::getBasepath($profile);
|
$server = GContact::getBasepath($profile);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($server == '') {
|
if ($server == '') {
|
||||||
|
|
|
@ -1131,12 +1131,6 @@ class Diaspora
|
||||||
private static function contactByHandle($uid, $handle)
|
private static function contactByHandle($uid, $handle)
|
||||||
{
|
{
|
||||||
$cid = Contact::getIdForURL($handle, $uid);
|
$cid = Contact::getIdForURL($handle, $uid);
|
||||||
if (!$cid) {
|
|
||||||
$handle_parts = explode("@", $handle);
|
|
||||||
$nurl_sql = "%%://" . $handle_parts[1] . "%%/profile/" . $handle_parts[0];
|
|
||||||
$cid = Contact::getIdForURL($nurl_sql, $uid);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!$cid) {
|
if (!$cid) {
|
||||||
Logger::log("Haven't found a contact for user " . $uid . " and handle " . $handle, Logger::DEBUG);
|
Logger::log("Haven't found a contact for user " . $uid . " and handle " . $handle, Logger::DEBUG);
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -10,7 +10,6 @@ use Friendica\Core\Logger;
|
||||||
use Friendica\Core\Protocol;
|
use Friendica\Core\Protocol;
|
||||||
use Friendica\Database\DBA;
|
use Friendica\Database\DBA;
|
||||||
use Friendica\Model\GContact;
|
use Friendica\Model\GContact;
|
||||||
use Friendica\Model\Contact;
|
|
||||||
use Friendica\Model\GServer;
|
use Friendica\Model\GServer;
|
||||||
use Friendica\Network\Probe;
|
use Friendica\Network\Probe;
|
||||||
use Friendica\Util\Network;
|
use Friendica\Util\Network;
|
||||||
|
@ -55,7 +54,7 @@ class SearchDirectory
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
$server_url = Contact::getBasepath($jj->url);
|
$server_url = GContact::getBasepath($jj->url, true);
|
||||||
if ($server_url != '') {
|
if ($server_url != '') {
|
||||||
if (!GServer::check($server_url)) {
|
if (!GServer::check($server_url)) {
|
||||||
Logger::info("Friendica server doesn't answer.", ['server' => $server_url]);
|
Logger::info("Friendica server doesn't answer.", ['server' => $server_url]);
|
||||||
|
|
|
@ -9,7 +9,7 @@ use Friendica\Core\Logger;
|
||||||
use Friendica\Core\Protocol;
|
use Friendica\Core\Protocol;
|
||||||
use Friendica\Core\Worker;
|
use Friendica\Core\Worker;
|
||||||
use Friendica\Database\DBA;
|
use Friendica\Database\DBA;
|
||||||
use Friendica\Model\Contact;
|
use Friendica\Model\GContact;
|
||||||
use Friendica\Model\GServer;
|
use Friendica\Model\GServer;
|
||||||
use Friendica\Util\DateTimeFormat;
|
use Friendica\Util\DateTimeFormat;
|
||||||
use Friendica\Util\Strings;
|
use Friendica\Util\Strings;
|
||||||
|
@ -53,7 +53,7 @@ class UpdateGContacts
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
$server_url = Contact::getBasepath($contact['url']);
|
$server_url = GContact::getBasepath($contact['url'], true);
|
||||||
$force_update = false;
|
$force_update = false;
|
||||||
|
|
||||||
if (!empty($contact['server_url'])) {
|
if (!empty($contact['server_url'])) {
|
||||||
|
|
Loading…
Reference in a new issue