Seditio Source
Root |
./othercms/xenForo 2.2.8/src/XF/Repository/Purchase.php
<?php

namespace XF\Repository;

use
XF\Mvc\Entity\Repository;

class
Purchase extends Repository
{
    public function
insertPurchaseRequest(\XF\Purchasable\Purchase $purchase)
    {
       
$purchaseRequest = $this->em->create('XF:PurchaseRequest');

       
$purchaseRequest->request_key = $this->generateRequestKey();
       
$purchaseRequest->user_id = $purchase->purchaser->user_id;
       
$purchaseRequest->provider_id = $purchase->paymentProfile->provider_id;
       
$purchaseRequest->payment_profile_id = $purchase->paymentProfile->payment_profile_id;
       
$purchaseRequest->purchasable_type_id = $purchase->purchasableTypeId;
       
$purchaseRequest->cost_amount = $purchase->cost;
       
$purchaseRequest->cost_currency = $purchase->currency;
       
$purchaseRequest->extra_data = $purchase->extraData;

       
$purchaseRequest->save();

        return
$purchaseRequest;
    }

   
/**
     * @return string
     */
   
public function generateRequestKey()
    {
       
$finder = $this->finder('XF:PurchaseRequest');

        do
        {
           
$requestKey = \XF::generateRandomString(32);

           
$found = $finder->resetWhere()
                ->
where('request_key', $requestKey)
                ->
fetchOne();

            if (!
$found)
            {
                break;
            }
        }
        while (
true);

        return
$requestKey;
    }
}