/**
  * If table key (id) is NULL : inserts a new row
  * otherwise updates existing row in the database table
  *
  * Can be overridden or overloaded by the child class
  *
  * @param  boolean  $updateNulls  TRUE: null object variables are also updated, FALSE: not.
  * @return boolean                TRUE if successful otherwise FALSE
  *
  * @throws \InvalidArgumentException
  * @throws \RuntimeException
  */
 public function store($updateNulls = false)
 {
     cbimport('cb.tabs');
     cbimport('cb.imgtoolbox');
     cbimport('cb.adminfilesystem');
     cbimport('cb.installer');
     cbimport('cb.params');
     cbimport('cb.pagination');
     cbSpoofCheck('plugin');
     checkCanAdminPlugins('core.admin');
     ob_start();
     switch ($this->func) {
         case 'installPluginUpload':
             $success = $this->installPluginUpload();
             break;
         case 'installPluginDir':
             $success = $this->installPluginDir($this->localdirectory);
             break;
         case 'installPluginURL':
             $success = $this->installPluginURL($this->packageurl);
             break;
         case 'installPluginDisc':
             $success = $this->installPluginDisc($this->plgfile);
             break;
         default:
             throw new \InvalidArgumentException(CBTxt::T('INVALID_FUNCTION', 'Invalid function'), 500);
     }
     $html = ob_get_contents();
     ob_end_clean();
     $this->_resultMessage = $html;
     if (!$success) {
         $this->setError('Installation error');
     }
     return $success;
 }
            checkCanAdminPlugins('core.edit', $userIdPosted, 'com_users');
        }
        $cbController = _CBloadController('user');
        /** @var CBController_user $cbController */
        $cbController->saveUser($option, $task);
        break;
    case 'editPlugin':
        checkCanAdminPlugins('core.edit', $pluginId);
        $cbController = _CBloadController('plugin');
        /** @var CBController_plugin $cbController */
        $cbController->editPlugin($option, $task, $pluginId);
        break;
    case 'savePlugin':
    case 'applyPlugin':
        cbSpoofCheck('plugin');
        checkCanAdminPlugins('core.edit');
        $cbController = _CBloadController('plugin');
        /** @var CBController_plugin $cbController */
        $cbController->savePlugin($option, $task);
        break;
    case 'pluginmenu':
        $cbController = _CBloadController('plugin');
        /** @var CBController_plugin $cbController */
        $cbController->pluginMenu($option, $pluginId);
        break;
    default:
        _CBloadController('default');
        break;
}
ob_start();
/** @noinspection PhpIncludeInspection */
     checkCanAdminPlugins('core.admin');
     installPluginUpload();
     break;
 case 'installPluginDir':
     cbSpoofCheck('plugin');
     checkCanAdminPlugins('core.admin');
     installPluginDir();
     break;
 case 'installPluginURL':
     cbSpoofCheck('plugin');
     checkCanAdminPlugins('core.admin');
     installPluginURL();
     break;
 case 'installPluginDisc':
     cbSpoofCheck('plugin');
     checkCanAdminPlugins('core.admin');
     installPluginDisc();
     break;
 case 'latestVersion':
     latestVersion();
     break;
 case 'fieldclass':
 case 'tabclass':
 case 'pluginclass':
     tabClass($option, $task, (int) cbGetParam($_REQUEST, 'user', 0));
     break;
 case 'finishinstallation':
     finishInstallation($option);
     break;
 default:
     break;