public function handle()
 {
     include_once PATH_CORE . DS . 'components' . DS . 'com_storefront' . DS . 'models' . DS . 'Memberships.php';
     $ms = new StorefrontModelMemberships();
     /* NEW
     		$subscription = StorefrontModelMemberships::getSubscriptionObject($this->type, $this->pId, $this->uId);
     		// Get the expiration for the current subscription (if any)
     		$currentExpiration = $subscription->getExpiration();
     		*/
     // Get current registration
     $membership = $ms->getMembershipInfo($this->crtId, $this->item['info']->pId);
     $expiration = $membership['crtmExpires'];
     /* Add the user to the corresponding user access group (pull access group ID from the meta) */
     try {
         // Get user ID for the cart
         require_once PATH_CORE . DS . 'components' . DS . 'com_cart' . DS . 'models' . DS . 'Cart.php';
         $userId = CartModelCart::getCartUser($this->crtId);
         // Get user group ID to set the user to (from meta)
         require_once PATH_CORE . DS . 'components' . DS . 'com_storefront' . DS . 'models' . DS . 'Product.php';
         $userGId = StorefrontModelProduct::getMeta($this->item['info']->pId, 'userGroupId');
         $add = JUserHelper::addUserToGroup($userId, $userGId);
         if ($add instanceof Exception) {
             mail(Config::get('mailfrom'), 'Error adding to the group', $add->getMessage() . ' Cart #' . $this->crtId);
         }
         $table = JTable::getInstance('User', 'JTable', array());
         $table->load($userId);
         // Trigger the onAftereStoreUser event
         Event::trigger('onUserAfterSave', array($table->getProperties(), false, true, null));
     } catch (Exception $e) {
         // Error
         return false;
     }
 }
Exemplo n.º 2
0
 /**
  * Main handler. Does all the checks
  *
  * @param 	void
  * @return 	void
  */
 public function audit()
 {
     /* Membership may have a limit on when it can be extended */
     /* If no user, some checks may be skipped... */
     // Get user
     if (!User::isGuest()) {
         // Check if there is a limitation on when the subscription can be extended
         require_once PATH_CORE . DS . 'components' . DS . 'com_storefront' . DS . 'models' . DS . 'Product.php';
         $subscriptionMaxLen = StorefrontModelProduct::getMeta($this->pId, 'subscriptionMaxLen');
         if ($subscriptionMaxLen) {
             /* Check if the current user has the existing subscription and how much is left on it
             		 i.e. figure out if he may extend his current subscription */
             /*
              *  This is not working very well for multiple SKUs with multiple subscriptionMaxLen's
              *  at this point code doesn't know what SKU will be added,
              *  so for one SKU subscriptionMaxLen should
              *  be set to time less than actual membership length, ie if membership is sold for 1 year and
              *  cannot be renewed more than 6 month before it expires the subscriptionMaxLen must be set to 6 MONTH
              *  if it cannot be renewed more than 3 month before it expires the subscriptionMaxLen must be set to 3 MONTH
              *
              *  so subscriptionMaxLen = XX is actually "let renew XX time before expiration"
              */
             // Get the proper product type subscription object reference
             require_once PATH_CORE . DS . 'components' . DS . 'com_storefront' . DS . 'models' . DS . 'Memberships.php';
             $subscription = StorefrontModelMemberships::getSubscriptionObject($this->type, $this->pId, $this->uId);
             // Get the expiration for the current subscription (if any)
             $currentExpiration = $subscription->getExpiration();
             if ($currentExpiration && $currentExpiration['crtmActive']) {
                 // Do the check
                 $currentExpirationTime = $currentExpiration['crtmExpires'];
                 // See if current expiration is later than max allowed time from now (max allowed time + now)
                 if (strtotime('+' . $subscriptionMaxLen) < strtotime($currentExpirationTime)) {
                     // Expiration is not allowed -- the current expiration is too far in the future
                     $this->setResponseStatus('error');
                     $this->setResponseNotice('You already have an active subscription to this item. Subscription extension is not available at this time.');
                     $this->setResponseError(': you already have an active subscription. Subscription extension is not available at this time.');
                 }
             }
         }
     }
     return $this->getResponse();
 }
Exemplo n.º 3
0
 /**
  * Update product info
  *
  * @param  void
  * @return object	info
  */
 public function update()
 {
     // For single product update SKU must save the original SKU ID (since SKU was generated automatically)
     // Find the SKU ID for this product and save
     include_once PATH_CORE . DS . 'components' . DS . 'com_storefront' . DS . 'models' . DS . 'Warehouse.php';
     $warehouse = new StorefrontModelWarehouse();
     $sku = $warehouse->getProductSkus($this->data->id);
     // Must be just one SKU
     if (sizeof($sku) != 1) {
         throw new Exception(Lang::txt('Only one SKU is allowed'));
     }
     $skuId = $sku[0];
     // save product sku with the current ID to resave the changes with this ID
     $sku = $this->getSku()->setId($skuId);
     return parent::update();
 }