Ejemplo n.º 1
0
 /**
  * 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');
     }
 }
Ejemplo n.º 2
0
 /**
  * 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;
 }
Ejemplo n.º 3
0
 /**
  * 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;
 }
Ejemplo n.º 5
0
 /**
  * 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));
 }
Ejemplo n.º 6
0
 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);
        }
         }
     */
 }
Ejemplo n.º 7
0
 /**
  * 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;
 }