protected function discernIdentifier($cve, $title)
    {
        $identifier = $cve;
        if (!$identifier || $identifier === '~') {
            $identifier = explode(':', $title);
            $identifier = array_shift($identifier);
        }
        $this->extend('updateIdentifier', $identifier, $cve, $title);
        return $identifier;
    }
protected function discernIdentifier($cve, $title)
    {
        $identifier = $cve;
        if (!$identifier || $identifier === '~') {
            $identifier = explode(':', $title);
            $identifier = array_shift($identifier);
        }
        $this->extend('updateIdentifier', $identifier, $cve, $title);
        return $identifier;
    }
protected function discernIdentifier ( $ cve , $ title ) { $ identifier = $ cve ; if ( ! $ identifier || $ identifier === '~' ) { $ identifier = explode ( ':' , $ title ) ; $ identifier = array_shift ( $ identifier ) ; } $ this -> extend ( 'updateIdentifier' , $ identifier , $ cve , $ title ) ; return $ identifier ; }
Most SilverStripe issued alerts are _not_ assiged CVEs.
However they have their own identifier in the form of a
prefix to the title - we can use this instead of a CVE ID.

@param string $cve
@param string $title

@return string
Most SilverStripe issued alerts are _not_ assiged CVEs . However they have their own identifier in the form of a prefix to the title - we can use this instead of a CVE ID .