Lack of interest Deferred User & Thread class

This suggestion has been closed automatically because it did not receive enough votes over an extended period of time. If you wish to see this, please search for an open suggestion and, if you don't find any, post a new one.

xf_phantom

Well-known member
Please move this part
PHP:
if ($userDw->setExistingData($userId))
       {
         if ($userModel->isUserSuperAdmin($userDw->getMergedData()))
         {
           // no updating of super admins
           continue;
         }

         if (!empty($data['actions']['delete']))
         {
           if (!$userDw->get('is_admin') && !$userDw->get('is_moderator'))
           {
             $userDw->delete();
           }
         }
         else
         {
           if (!empty($data['actions']['set_primary_group_id']))
           {
             $userDw->set('user_group_id', $data['actions']['set_primary_group_id']);
           }

           $groups = explode(',', $userDw->get('secondary_group_ids'));

           if (!empty($data['actions']['add_group_id']))
           {
             $groups[] = $data['actions']['add_group_id'];
             $userDw->setSecondaryGroups($groups);
           }

           if (!empty($data['actions']['remove_group_id']))
           {
             $searchKey = array_search(intval($data['actions']['remove_group_id']), $groups);
             if ($searchKey !== false)
             {
               unset($groups[$searchKey]);
             }
             $userDw->setSecondaryGroups($groups);
           }

           if (!empty($data['actions']['discourage']))
           {
             $userDw->set('is_discouraged', 1);
           }

           if (!empty($data['actions']['undiscourage']))
           {
             $userDw->set('is_discouraged', 0);
           }

           if (!empty($data['actions']['remove_avatar']))
           {
             XenForo_Model::create('XenForo_Model_Avatar')->deleteAvatar($userId);
           }

           if (!empty($data['actions']['remove_signature']))
           {
             $userDw->set('signature', '');
           }

           if (!empty($data['actions']['remove_homepage']))
           {
             $userDw->set('homepage', '');
           }

           if (!empty($data['actions']['custom_title']))
           {
             $userDw->set('custom_title', $data['actions']['custom_title']);
           }

           if (!empty($data['actions']['ban']) && !$userDw->get('is_admin') && !$userDw->get('is_moderator'))
           {
             if ($ban = XenForo_Model::create('XenForo_Model_Banning')->getBannedUserById($userId))
             {
               $existing = true;
             }
             else
             {
               $existing = false;
             }

             $userModel->ban($userId, 0, '', $existing);
           }

           if (!empty($data['actions']['unban']))
           {
             $userModel->liftBan($userId);
           }

           $userDw->save();
         }
into a own method.

This way, we could add own actions ( via template admin template user_batch_update_confirm ) and then just use the proxy system to extend the deferred class.

if the code would be
PHP:
foreach ($userIds AS $key => $userId)
     {
       $data['count']++;
       $data['start'] = $userId;
       unset($userIds[$key]);

       /* @var $userDw XenForo_DataWriter_User */
       $userDw = XenForo_DataWriter::create('XenForo_DataWriter_User', XenForo_DataWriter::ERROR_SILENT);
       if ($userDw->setExistingData($userId))
       {
    
       $this->runActions($dw);

           $userDw->save();
         }
       }

       if ($limitTime && microtime(true) - $s > $targetRunTime)
       {
         break;
       }
     }
i could just overwrite runActions with an method calling parent::runActions and attach my own actions ...

ATM i have to overwrite the WHOLE execute method :/ => impossible to use with more addons....


The same is also valid for the ThreadAction Deferred Class
 
Upvote 0
This suggestion has been closed. Votes are no longer accepted.
Top Bottom