original_string: protected function common_uninstall_check(\core\plugininfo\base $pluginfo) {
  
          if (!$pluginfo->is_uninstall_allowed()) {
              // The plugin's plugininfo class declares it should not be uninstalled.
              return false;
          }
  
          if ($pluginfo->get_status() === static::PLUGIN_STATUS_NEW) {
              // The plugin is not installed. It should be either installed or removed from the disk.
              // Relying on this temporary state may be tricky.
              return false;
          }
  
          if (method_exists($pluginfo, 'get_uninstall_url') and is_null($pluginfo->get_uninstall_url())) {
              // Backwards compatibility.
              debugging('\core\plugininfo\base subclasses should use is_uninstall_allowed() instead of returning null in get_uninstall_url()',
                  DEBUG_DEVELOPER);
              return false;
          }
  
          return true;
      }
code: protected function common_uninstall_check(\core\plugininfo\base $pluginfo) {
  
          if (!$pluginfo->is_uninstall_allowed()) {
              // The plugin's plugininfo class declares it should not be uninstalled.
              return false;
          }
  
          if ($pluginfo->get_status() === static::PLUGIN_STATUS_NEW) {
              // The plugin is not installed. It should be either installed or removed from the disk.
              // Relying on this temporary state may be tricky.
              return false;
          }
  
          if (method_exists($pluginfo, 'get_uninstall_url') and is_null($pluginfo->get_uninstall_url())) {
              // Backwards compatibility.
              debugging('\core\plugininfo\base subclasses should use is_uninstall_allowed() instead of returning null in get_uninstall_url()',
                  DEBUG_DEVELOPER);
              return false;
          }
  
          return true;
      }
code_tokens: protected function common_uninstall_check ( \ core \ plugininfo \ base $ pluginfo ) { if ( ! $ pluginfo -> is_uninstall_allowed ( ) ) { // The plugin's plugininfo class declares it should not be uninstalled. return false ; } if ( $ pluginfo -> get_status ( ) === static :: PLUGIN_STATUS_NEW ) { // The plugin is not installed. It should be either installed or removed from the disk. // Relying on this temporary state may be tricky. return false ; } if ( method_exists ( $ pluginfo , 'get_uninstall_url' ) and is_null ( $ pluginfo -> get_uninstall_url ( ) ) ) { // Backwards compatibility. debugging ( '\core\plugininfo\base subclasses should use is_uninstall_allowed() instead of returning null in get_uninstall_url()' , DEBUG_DEVELOPER ) ; return false ; } return true ; }
docstring: Helper method that implements common uninstall prerequisites
  
  @param \core\plugininfo\base $pluginfo
  @return bool
docstring_tokens: Helper method that implements common uninstall prerequisites