Jump to content

Where is the author name for posts reset to be blank / Guest on delete


TSP

Recommended Posts

Posted

When members are deleted in IPS 4 the posts simply get the name "Guest". Which on a helpfulness scale from 0 to 10 is 0... I wish to change this to be set to "Guest_Thedeletedname". Like it was in IPS 4, but I can't find where the rows are updated to be guest posts. 

Posted

Aww man, I've been chasing this for one and a half hour now. I've created and deleted like 10+ test users on my test site. 

Turns out: 

1. When you delete a member and their posts are kept, it does a call to hideOrDeleteAllContent from the delete-method in system/Member/Member.php

	public function delete( $setAuthorToGuest = TRUE )
	{
        if( $setAuthorToGuest )
        {
            /* Clean up content - set to member ID 0 - We check $setAuthorToGuest because of member merging.
            As the member is immediately deleted we do not want to compete with the existing merge in progress. */
            $this->hideOrDeleteAllContent('merge', array('merge_with_id' => 0, 'merge_with_name' => '' ));
        }

Make a note of the merge_with_name here... Which in turn creates a task: 

\IPS\Task::queue( 'core', 'MemberContent', array_merge( array( 'initiated_by_member_id' => \IPS\Member::loggedIn()->member_id, 'member_id' => $this->member_id, 'name' => $this->name, 'class' => $class, 'action' => $action ), $extra ), 1 );

Which is handled in applications/core/extensions/core/Queue/MemberContent.php

You would believe that the 'merge_with_name' value sent to the MemberContent-task would be used to set the name of the posts to that name, like I believed at first... In which case I would only have to update from 'merge_with_name' => '' to 'merge_with_name' => $this->name. But no, that value isn't used at all in MemberContent.php.

					case 'merge':
						$item->changeAuthor( \IPS\Member::load( $data['merge_with_id'] ) );
						break;
				}

So at this point I tried to change it to: 

					case 'merge':
						$member = \IPS\Member::load( $data['merge_with_id'] );
						if ( $data['merge_with_name'] )
						{
							$member->name = $data['merge_with_name'];
						}

						$item->changeAuthor( $member );
						break;

Which seems sensible and I thought that would surely fix it so it would set it to the name defined from HideOrDeleteContent in the Member-class. 

But no... Because in the changeAuthor-method in system/Content/Content.php, this is done: 

					case 'author_name':
						$this->$col = $newAuthor->member_id ? $newAuthor->name : '';
						break;

 

:(

Something seems really wrong here. I mean it can't be intended that posts written by deleted members are losing the name on the post content when the member is deleted? That's just silly.

  • 10 months later...
Posted
39 minutes ago, pequeno said:

Hello @TSP, Have you found a way to keep the username when you delete this member?

I don´t like to put "Guest" in deleted member messages.

Greetings.

 

For the section I mentioned in system/Content/Content.php that I mentioned above I ended up replacing it with: (I also kept the other two changes mentioned in my previous reply)

                    case 'author_name':
                        /* HW_CUSTOM: Guestname on deletion */
                        if ( $newAuthor->member_id or ( ! $newAuthor->member_id and strlen( $newAuthor->name ) == 32 ) )
                        {
                            /* Default */
                            $newGuestName = isset($newAuthor->_data['name']) ? $newAuthor->_data['name'] : '';
                            $this->$col = $newAuthor->member_id ? $newAuthor->name : $newGuestName;
                        }
                        else
                        {
                            $this->$col = $newAuthor->name ? $newAuthor->name : '';

                        }

                        break;

Apparently an official fix will be coming for 4.1.16 though. 

 

Archived

This topic is now archived and is closed to further replies.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...