[ActivityPub] Fix some small known problems

ActivityPubPlugin:
- Rework onProfileDeleteRelated to account for the tables _rsa and _pending_follow_requests
- Update onEndShowAccountProfileBlock to stop creating the ap_profile if it doesn't exist (we'll handle this in a different manner)

Activitypub_profile:
- Remove unnecessary code from from_profile method and add return type information

Explorer:
- Update travel_collection to call itself instead of _lookup, that was wrong
This commit is contained in:
tenma 2019-10-20 20:07:46 +01:00 committed by Diogo Cordeiro
parent a06b33be66
commit a0d30b6872
3 changed files with 16 additions and 16 deletions

View File

@ -345,18 +345,17 @@ class ActivityPubPlugin extends Plugin
*/
public function onProfileDeleteRelated(Profile $profile, array &$related): void
{
if ($profile->isLocal()) {
return;
}
try {
$aprofile = Activitypub_profile::getKV('profile_id', $profile->getID());
if ($aprofile instanceof Activitypub_profile) {
// mark for deletion
$related[] = 'Activitypub_profile';
$related[] = 'Activitypub_rsa';
// pending_follow_requests doesn't have a profile_id column,
// so we must handle it manually
$follow = new Activitypub_pending_follow_requests(null, $profile->getID());
if ($follow->find()) {
while ($follow->fetch()) {
$follow->delete();
}
} catch (Exception $e) {
// nothing to do
}
}
@ -386,9 +385,9 @@ class ActivityPubPlugin extends Plugin
if ($profile->isLocal()) {
return true;
}
try {
Activitypub_profile::from_profile($profile);
} catch (Exception $e) {
$aprofile = Activitypub_profile::getKV('profile_id', $profile->getID());
if (!$aprofile instanceof Activitypub_profile) {
// Not a remote ActivityPub_profile! Maybe some other network
// that has imported a non-local user (e.g.: OStatus)?
return true;

View File

@ -201,7 +201,7 @@ class Activitypub_profile extends Managed_DataObject
* @throws Exception if no Activitypub_profile exists for given Profile
* @author Diogo Cordeiro <diogo@fc.up.pt>
*/
public static function from_profile(Profile $profile)
public static function from_profile(Profile $profile): Activitypub_profile
{
$profile_id = $profile->getID();
@ -216,8 +216,9 @@ class Activitypub_profile extends Managed_DataObject
}
}
// extend the ap_profile with some information we
// don't store in the database
$fields = [
'uri' => 'profileurl',
'nickname' => 'nickname',
'fullname' => 'fullname',
'bio' => 'bio'

View File

@ -450,7 +450,7 @@ class Activitypub_explorer
}
// Go through entire collection
if (!is_null($res["next"])) {
$this->_lookup($res["next"]);
$this->travel_collection($res["next"]);
}
return true;