forked from GNUsocial/gnu-social
		
	[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:
		@@ -345,18 +345,17 @@ class ActivityPubPlugin extends Plugin
 | 
			
		||||
     */
 | 
			
		||||
    public function onProfileDeleteRelated(Profile $profile, array &$related): void
 | 
			
		||||
    {
 | 
			
		||||
        if ($profile->isLocal()) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
        $related[] = 'Activitypub_profile';
 | 
			
		||||
        $related[] = 'Activitypub_rsa';
 | 
			
		||||
 | 
			
		||||
        try {
 | 
			
		||||
            $aprofile = Activitypub_profile::getKV('profile_id', $profile->getID());
 | 
			
		||||
            if ($aprofile instanceof Activitypub_profile) {
 | 
			
		||||
                // mark for deletion
 | 
			
		||||
                $related[] = 'Activitypub_profile';
 | 
			
		||||
        // 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;
 | 
			
		||||
 
 | 
			
		||||
@@ -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'
 | 
			
		||||
 
 | 
			
		||||
@@ -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;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user