/** * 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'); } }
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); } } */ }
/** * If possible, returns one of these strings (comparing today's date with the due date): * _ yesterday * _ today * _ tomorrow * _ the week-day corresponding to 'in2days, Wed' (i.e.: Wednesday) * _ the week-day corresponding to 'in3days, Thu' * _ the week-day corresponding to 'in4days, Fri' * _ the week-day corresponding to 'in5days, Sat' * If any of those is unapplicable, it returns getFormattedLocalDueDate() * * @return string */ public function getHumanFriendlyDueDate() { $dateFormat = DateFormat::getInstance(); $formattedDueDate = $this->getFormattedLocalDueDate(); if (!$formattedDueDate) { return ''; } $dueDateTimestamp = $dateFormat->getTimestamp($formattedDueDate); $todayTimestamp = PcUserPeer::getLoggedInUser()->getTime(); $tomorrowTimestamp = $todayTimestamp + 86400; $yesterdayTimestamp = $todayTimestamp - 86400; list($tomorrowDay, $tomorrowMonth, $tomorrowYear) = explode('-', date('d-m-Y', $tomorrowTimestamp)); list($todayDay, $todayMonth, $todayYear) = explode('-', date('d-m-Y', $todayTimestamp)); list($yesterdayDay, $yesterdayMonth, $yesterdayYear) = explode('-', date('d-m-Y', $yesterdayTimestamp)); $todayStart = mktime(0, 0, 0, $todayMonth, $todayDay, $todayYear); $todayEnd = mktime(23, 59, 59, $todayMonth, $todayDay, $todayYear); $tomorrowStart = mktime(0, 0, 0, $tomorrowMonth, $tomorrowDay, $tomorrowYear); $tomorrowEnd = mktime(23, 59, 59, $tomorrowMonth, $tomorrowDay, $tomorrowYear); $yesterdayStart = mktime(0, 0, 0, $yesterdayMonth, $yesterdayDay, $yesterdayYear); $yesterdayEnd = mktime(23, 59, 59, $yesterdayMonth, $yesterdayDay, $yesterdayYear); if ($todayStart < $dueDateTimestamp && $dueDateTimestamp < $todayEnd) { return __('ACCOUNT_MISC_TODAY'); } if ($dueDateTimestamp < $todayStart) { if ($yesterdayStart < $dueDateTimestamp && $dueDateTimestamp < $yesterdayEnd) { return __('ACCOUNT_MISC_YESTERDAY'); } } if ($dueDateTimestamp > $todayEnd) { if ($tomorrowStart < $dueDateTimestamp && $dueDateTimestamp < $tomorrowEnd) { return __('ACCOUNT_MISC_TOMORROW'); } // the task is not in the future but not tomorrow // we will check whether it is within the next 5 days $deltaSinceTomorrowSec = $dueDateTimestamp - $tomorrowEnd; $deltaSinceTomorrowDays = ceil($deltaSinceTomorrowSec / 86400); // I'm adding 1 because $deltaDays has got tomorrow as a reference $deltaDays = $deltaSinceTomorrowDays + 1; if ($deltaDays <= 5) { // We need to display something like 'in3days, Thu' // I need to get the day of the week to display $weekDays = array('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'); $localizedWeekDays = array(__('ACCOUNT_DOW_SUN'), __('ACCOUNT_DOW_MON'), __('ACCOUNT_DOW_TUE'), __('ACCOUNT_DOW_WED'), __('ACCOUNT_DOW_THU'), __('ACCOUNT_DOW_FRI'), __('ACCOUNT_DOW_SAT')); $todayWeekDay = date('D', PcUserPeer::getLoggedInUser()->getTime()); if (($todayWeekDayKey = array_search($todayWeekDay, $weekDays)) === FALSE) { throw new Exception('Couldn\'t find the right week day key for today'); } $dueDateWeekDayIndex = ($todayWeekDayKey + $deltaDays) % 7; $dueDateWeekDay = $localizedWeekDays[$dueDateWeekDayIndex]; return sprintf(__('ACCOUNT_MISC_IN_X_DAYS'), $deltaDays) . ', ' . ucfirst($dueDateWeekDay); } } // At this point, we realized we can't apply any shortcut // we don't specify the year if it is the current one if ($this->getDueDate('Y') == date('Y', PcUserPeer::getLoggedInUser()->getTime())) { return $this->getDueDate("j") . ' ' . PcUtils::fromIndexToMonth($this->getDueDate('n')) . ', ' . ucfirst(PcUtils::fromIndexToWeekday($this->getDueDate('N'))); } else { // return $this->getDueDate('j M Y'); return $this->getDueDate("j") . ' ' . PcUtils::fromIndexToMonth($this->getDueDate('n')) . ' ' . $this->getDueDate('Y'); } }