/** * Executes index action * * @param sfRequest $request A request object */ public function executeIndex(sfWebRequest $request) { $user = PcUserPeer::getLoggedInUser(); $this->hasApiDetails = false; if (is_object($apiDetails = PcApiAppPeer::retrieveByUserId($user->getId()))) { $this->hasApiDetails = true; $this->apiDetails = $apiDetails; } $this->user = $user; $this->niceExpiryDate = ''; if ($user->isSupporter()) { $supporter = PcSupporterPeer::retrieveByPK($user->getId()); $this->niceExpiryDate = $supporter->getExpiryDate('j') . ' ' . PcUtils::fromIndexToMonth($supporter->getExpiryDate('n')) . ' ' . $supporter->getExpiryDate('Y'); } }
/** * It handles the case in which a user that already used a free trial, * try to get another free trial (that is not allowed) * * It also set the pc_user.has_requested_free_trial field * * @param PcUser $user * @param PcSubscriptionType $subscriptionType * @param bool $isGift (=false) * @param bool $isAutomatic (=false) * @param string $paypalTransactionId (='') * @return bool - false if a user who requested a free trial tries to get it again, true otherwise */ public static function createOrExtendSupporterAccount(PcUser $user, PcSubscriptionType $subscriptionType, $isGift = false, $isAutomatic = false, $paypalTransactionId = '') { if ($subscriptionType->getId() == PcSubscriptionTypePeer::FREE_TRIAL) { if ($user->getHasRequestedFreeTrial()) { return false; } else { $user->setHasRequestedFreeTrial(1)->save(); } } // 3 situations can happen: // 1) the user is not an supporter -> we add the record // 2) the user is still a supporter -> we extend the subscription from the last day of the current subscription // 3) the user used to be a supporter (the record is still in the table) but the subscription has expired -> we // start a new subscription from today $startDate = null; $today = date("Y-m-d"); $c = new Criteria(); $c->add(PcSupporterPeer::USER_ID, $user->getId()); $supporterAccount = PcSupporterPeer::doSelectOne($c); if (!$supporterAccount) { $supporterAccount = new PcSupporter(); $supporterAccount->setUserId($user->getId()); $startDate = $today; } else { $supporterAccountExpiryDate = $supporterAccount->getExpiryDate(); if ($today > $supporterAccountExpiryDate) { $startDate = $today; } else { $startDate = $supporterAccountExpiryDate; } } $newExpiryDateTimestamp = $supporterAccount->getNewExpiryDateAfterSubscription($subscriptionType, $startDate); $supporterAccount->setExpiryDate(date("Y-m-d", $newExpiryDateTimestamp))->save(); // recording the subscription $subscription = new PcSubscription(); $subscription->setUserId($user->getId())->setSubscriptionTypeId($subscriptionType->getId())->setWasGift($isGift)->setWasAutomatic($isAutomatic)->setPaypalTransactionId($paypalTransactionId)->save(); // sending email $email = $user->getEmail(); $from = sfConfig::get('app_emailAddress_contact'); $subject = sfConfig::get('app_subscriptionSuccess_emailSubject'); $body = sfConfig::get('app_subscriptionSuccess_emailBody'); $replyTo = sfConfig::get('app_emailAddress_director'); PcUtils::sendEmail($email, $subject, $body, $from, $replyTo); // creating task in the Inbox $user->addToInbox(__('ACCOUNT_SUBSCRIPTION_INBOX_MESSAGE') . ' ' . $supporterAccount->getExpiryDate('j F Y') . '.'); return true; }
/** * Populates the object using an array. * * This is particularly useful when populating an object from one of the * request arrays (e.g. $_POST). This method goes through the column * names, checking to see whether a matching key exists in populated * array. If so the setByName() method is called for that column. * * You can specify the key type of the array by additionally passing one * of the class type constants BasePeer::TYPE_PHPNAME, BasePeer::TYPE_STUDLYPHPNAME, * BasePeer::TYPE_COLNAME, BasePeer::TYPE_FIELDNAME, BasePeer::TYPE_NUM. * The default key type is the column's phpname (e.g. 'AuthorId') * * @param array $arr An array to populate the object from. * @param string $keyType The type of keys the array uses. * @return void */ public function fromArray($arr, $keyType = BasePeer::TYPE_PHPNAME) { $keys = PcSupporterPeer::getFieldNames($keyType); if (array_key_exists($keys[0], $arr)) { $this->setUserId($arr[$keys[0]]); } if (array_key_exists($keys[1], $arr)) { $this->setExpiryDate($arr[$keys[1]]); } if (array_key_exists($keys[2], $arr)) { $this->setIsRenewalAutomatic($arr[$keys[2]]); } }
/** * Retrieve multiple objects by pkey. * * @param array $pks List of primary keys * @param PropelPDO $con the connection to use * @throws PropelException Any exceptions caught during processing will be * rethrown wrapped into a PropelException. */ public static function retrieveByPKs($pks, PropelPDO $con = null) { if ($con === null) { $con = Propel::getConnection(PcSupporterPeer::DATABASE_NAME, Propel::CONNECTION_READ); } $objs = null; if (empty($pks)) { $objs = array(); } else { $criteria = new Criteria(PcSupporterPeer::DATABASE_NAME); $criteria->add(PcSupporterPeer::USER_ID, $pks, Criteria::IN); $objs = PcSupporterPeer::doSelect($criteria, $con); } return $objs; }
/** * We consider a subscription ending soon when there are less than 2 weeks left * * @return boolean */ public function isSubscriptionExpired() { $c = new Criteria(); $c->add(PcSupporterPeer::USER_ID, $this->getId()); $c->add(PcSupporterPeer::EXPIRY_DATE, date('Y-m-d'), Criteria::LESS_THAN); return is_object(PcSupporterPeer::doSelectOne($c)); }
public function executeSubscriptionContent() { $inputDiscountCode = trim($this->getContext()->getRequest()->getParameter('codeForDiscount')); $discount = PcPromotionCodePeer::getDiscountByCode($inputDiscountCode, $promotionErrorCode); $c = new Criteria(); $c->add(PcPaypalProductPeer::SUBSCRIPTION_TYPE_ID, 3); $c->add(PcPaypalProductPeer::ITEM_PRICE_CURRENCY, 'USD'); $this->oneYearUsdSubscription = PcPaypalProductPeer::doSelectOne($c); $c = new Criteria(); $c->add(PcPaypalProductPeer::SUBSCRIPTION_TYPE_ID, 3); $c->add(PcPaypalProductPeer::ITEM_PRICE_CURRENCY, 'GBP'); $this->oneYearGbpSubscription = PcPaypalProductPeer::doSelectOne($c); $c = new Criteria(); $c->add(PcPaypalProductPeer::SUBSCRIPTION_TYPE_ID, 3); $c->add(PcPaypalProductPeer::ITEM_PRICE_CURRENCY, 'EUR'); $this->oneYearEurSubscription = PcPaypalProductPeer::doSelectOne($c); $c = new Criteria(); $c->add(PcPaypalProductPeer::SUBSCRIPTION_TYPE_ID, 3); $c->add(PcPaypalProductPeer::ITEM_PRICE_CURRENCY, 'JPY'); $this->oneYearJpySubscription = PcPaypalProductPeer::doSelectOne($c); $c = new Criteria(); $c->add(PcPaypalProductPeer::SUBSCRIPTION_TYPE_ID, 2); $c->add(PcPaypalProductPeer::ITEM_PRICE_CURRENCY, 'USD'); $this->threeMonthUsdSubscription = PcPaypalProductPeer::doSelectOne($c); $c = new Criteria(); $c->add(PcPaypalProductPeer::SUBSCRIPTION_TYPE_ID, 2); $c->add(PcPaypalProductPeer::ITEM_PRICE_CURRENCY, 'GBP'); $this->threeMonthGbpSubscription = PcPaypalProductPeer::doSelectOne($c); $c = new Criteria(); $c->add(PcPaypalProductPeer::SUBSCRIPTION_TYPE_ID, 2); $c->add(PcPaypalProductPeer::ITEM_PRICE_CURRENCY, 'EUR'); $this->threeMonthEurSubscription = PcPaypalProductPeer::doSelectOne($c); $c = new Criteria(); $c->add(PcPaypalProductPeer::SUBSCRIPTION_TYPE_ID, 2); $c->add(PcPaypalProductPeer::ITEM_PRICE_CURRENCY, 'JPY'); $this->threeMonthJpySubscription = PcPaypalProductPeer::doSelectOne($c); $c = new Criteria(); $c->add(PcPaypalProductPeer::ID, 7); $this->testSubscription = PcPaypalProductPeer::doSelectOne($c); $this->yearlyUsdSaving = $this->threeMonthUsdSubscription->getItemPrice() * 4 - $this->oneYearUsdSubscription->getItemPrice(); $this->yearlyGbpSaving = $this->threeMonthGbpSubscription->getItemPrice() * 4 - $this->oneYearGbpSubscription->getItemPrice(); $this->yearlyEurSaving = $this->threeMonthEurSubscription->getItemPrice() * 4 - $this->oneYearEurSubscription->getItemPrice(); $this->yearlyJpySaving = $this->threeMonthJpySubscription->getItemPrice() * 4 - $this->oneYearJpySubscription->getItemPrice(); $this->niceExpiryDate = ''; $this->niceExpiryDateThreeMonthExtended = ''; $this->niceExpiryDateOneYearExtended = ''; $this->oneYearUsdDiscountedSubscription = null; $this->oneYearGbpDiscountedSubscription = null; $this->oneYearEurDiscountedSubscription = null; $this->oneYearJpyDiscountedSubscription = null; $loggedInUser = PcUserPeer::getLoggedInUser(); $this->promotionErrorCode = $promotionErrorCode; $this->discount = $discount; $this->hasDiscountCodeBeenEntered = false; if ($inputDiscountCode) { $this->hasDiscountCodeBeenEntered = true; } $this->isDiscountCodeValid = false; if ($discount > 0) { $this->isDiscountCodeValid = true; if ($loggedInUser) { $loggedInUser->setLastPromotionalCodeInserted($inputDiscountCode)->save(); } $c = new Criteria(); $c->add(PcPaypalProductPeer::SUBSCRIPTION_TYPE_ID, 3); $c->add(PcPaypalProductPeer::ITEM_PRICE_CURRENCY, 'USD'); $c->add(PcPaypalProductPeer::DISCOUNT_PERCENTAGE, $discount); $this->oneYearUsdDiscountedSubscription = PcPaypalProductPeer::doSelectOne($c); $c = new Criteria(); $c->add(PcPaypalProductPeer::SUBSCRIPTION_TYPE_ID, 3); $c->add(PcPaypalProductPeer::ITEM_PRICE_CURRENCY, 'GBP'); $c->add(PcPaypalProductPeer::DISCOUNT_PERCENTAGE, $discount); $this->oneYearGbpDiscountedSubscription = PcPaypalProductPeer::doSelectOne($c); $c = new Criteria(); $c->add(PcPaypalProductPeer::SUBSCRIPTION_TYPE_ID, 3); $c->add(PcPaypalProductPeer::ITEM_PRICE_CURRENCY, 'EUR'); $c->add(PcPaypalProductPeer::DISCOUNT_PERCENTAGE, $discount); $this->oneYearEurDiscountedSubscription = PcPaypalProductPeer::doSelectOne($c); $c = new Criteria(); $c->add(PcPaypalProductPeer::SUBSCRIPTION_TYPE_ID, 3); $c->add(PcPaypalProductPeer::ITEM_PRICE_CURRENCY, 'JPY'); $c->add(PcPaypalProductPeer::DISCOUNT_PERCENTAGE, $discount); $this->oneYearJpyDiscountedSubscription = PcPaypalProductPeer::doSelectOne($c); } $this->isSupporter = false; if ($loggedInUser) { $this->isSupporter = $loggedInUser->isSupporter(); $supporterAccount = PcSupporterPeer::retrieveByPK($loggedInUser->getId()); if ($this->isSupporter) { $this->niceExpiryDate = $supporterAccount->getExpiryDate('j') . ' ' . PcUtils::fromIndexToMonth($supporterAccount->getExpiryDate('n')) . ' ' . $supporterAccount->getExpiryDate('Y'); $newExpiryTimestamp = $supporterAccount->getNewExpiryDateAfterSubscription(PcSubscriptionTypePeer::retrieveByPK(2), $supporterAccount->getExpiryDate('Y-m-d')); $this->niceExpiryDateThreeMonthExtended = date('j', $newExpiryTimestamp) . ' ' . PcUtils::fromIndexToMonth(date('n', $newExpiryTimestamp)) . ' ' . date('Y', $newExpiryTimestamp); $newExpiryTimestamp = $supporterAccount->getNewExpiryDateAfterSubscription(PcSubscriptionTypePeer::retrieveByPK(3), $supporterAccount->getExpiryDate('Y-m-d')); $this->niceExpiryDateOneYearExtended = date('j', $newExpiryTimestamp) . ' ' . PcUtils::fromIndexToMonth(date('n', $newExpiryTimestamp)) . ' ' . date('Y', $newExpiryTimestamp); } } $userCulture = $this->getUser()->getCulture(); $this->cultureUrlPart = ''; if ($userCulture != SfConfig::get('app_site_defaultLang')) { $this->cultureUrlPart = '/' . $userCulture; } $this->isOnRegistration = $this->getContext()->getRequest()->getParameter('onRegistration') == '1'; /* if ($this->promoCode = $request->getParameter('promoCode')) { $this->hasPromoCodeBeenSubmitted = true; $promoCodeEntry = PcPromotionCodePeer::getValidPromoCodeEntry($this->promoCode); if (is_object($promoCodeEntry)) { $this->isPromoCodeValid = true; $buttonCode = $promoCodeEntry->getPaypalButtonCode(); $this->price *= 1 - ($promoCodeEntry->getDiscountPercentage() / 100); } } */ }
/** * Gets a single PcSupporter object, which is related to this object by a one-to-one relationship. * * @param PropelPDO $con * @return PcSupporter * @throws PropelException */ public function getPcSupporter(PropelPDO $con = null) { if ($this->singlePcSupporter === null && !$this->isNew()) { $this->singlePcSupporter = PcSupporterPeer::retrieveByPK($this->id, $con); } return $this->singlePcSupporter; }