public function create(string $prefix, string $email, array $related): OptInTokenInterface
    {
        if ($prefix) {
            $prefix = rtrim($prefix, '-');
        }

        if (\strlen($prefix) > 6) {
            throw new \InvalidArgumentException('The token prefix must not be longer than 6 characters');
        }

        $token = bin2hex(random_bytes(12));

        if ($prefix) {
            $token = $prefix.'-'.substr($token, \strlen($prefix) + 1);
        }

        /** @var OptInModel $optIn */
        $optIn = $this->framework->createInstance(OptInModel::class);
        $optIn->tstamp = time();
        $optIn->token = $token;
        $optIn->createdOn = time();

        // The token is required to remove unconfirmed subscriptions after 24 hours, so
        // keep it for 3 days to make sure it is not purged before the subscription
        $optIn->removeOn = strtotime('+3 days');
        $optIn->email = $email;
        $optIn->save();

        $optIn->setRelatedRecords($related);

        return new OptInToken($optIn, $this->framework);
    }
public function create(string $prefix, string $email, array $related): OptInTokenInterface
    {
        if ($prefix) {
            $prefix = rtrim($prefix, '-');
        }

        if (\strlen($prefix) > 6) {
            throw new \InvalidArgumentException('The token prefix must not be longer than 6 characters');
        }

        $token = bin2hex(random_bytes(12));

        if ($prefix) {
            $token = $prefix.'-'.substr($token, \strlen($prefix) + 1);
        }

        
        $optIn = $this->framework->createInstance(OptInModel::class);
        $optIn->tstamp = time();
        $optIn->token = $token;
        $optIn->createdOn = time();

        
        
        $optIn->removeOn = strtotime('+3 days');
        $optIn->email = $email;
        $optIn->save();

        $optIn->setRelatedRecords($related);

        return new OptInToken($optIn, $this->framework);
    }
public function create ( string $ prefix , string $ email , array $ related ) : OptInTokenInterface { if ( $ prefix ) { $ prefix = rtrim ( $ prefix , '-' ) ; } if ( \ strlen ( $ prefix ) > 6 ) { throw new \ InvalidArgumentException ( 'The token prefix must not be longer than 6 characters' ) ; } $ token = bin2hex ( random_bytes ( 12 ) ) ; if ( $ prefix ) { $ token = $ prefix . '-' . substr ( $ token , \ strlen ( $ prefix ) + 1 ) ; } /** @var OptInModel $optIn */ $ optIn = $ this -> framework -> createInstance ( OptInModel :: class ) ; $ optIn -> tstamp = time ( ) ; $ optIn -> token = $ token ; $ optIn -> createdOn = time ( ) ; // The token is required to remove unconfirmed subscriptions after 24 hours, so // keep it for 3 days to make sure it is not purged before the subscription $ optIn -> removeOn = strtotime ( '+3 days' ) ; $ optIn -> email = $ email ; $ optIn -> save ( ) ; $ optIn -> setRelatedRecords ( $ related ) ; return new OptInToken ( $ optIn , $ this -> framework ) ; }
{@inheritdoc}
{