/** * @return Market_ProductModel * @throws Exception */ private function _setProductFromPost() { $productId = craft()->request->getPost('productId'); if ($productId) { $product = craft()->market_product->getById($productId); if (!$product) { throw new Exception(Craft::t('No product with the ID “{id}”', ['id' => $productId])); } } else { $product = new Market_ProductModel(); } $availableOn = craft()->request->getPost('availableOn'); $expiresOn = craft()->request->getPost('expiresOn'); $product->availableOn = $availableOn ? DateTime::createFromString($availableOn, craft()->timezone) : $product->availableOn; $product->expiresOn = $expiresOn ? DateTime::createFromString($expiresOn, craft()->timezone) : null; $product->typeId = craft()->request->getPost('typeId'); $product->enabled = craft()->request->getPost('enabled'); $product->promotable = craft()->request->getPost('promotable'); $product->freeShipping = craft()->request->getPost('freeShipping'); $product->authorId = craft()->userSession->id; $product->taxCategoryId = craft()->request->getPost('taxCategoryId', $product->taxCategoryId); if (!$product->availableOn) { $product->availableOn = new DateTime(); } $product->getContent()->title = craft()->request->getPost('title', $product->title); $product->slug = craft()->request->getPost('slug', $product->slug); $product->setContentFromPost('fields'); return $product; }
/** * Loops through the data and converts the times to DateTime objects. * * @access private * @param array &$value */ public function convertTimes(&$value, $timezone = null) { if (isset($value) && is_array($value)) { foreach ($value as &$day) { if (is_string($day['open']) && $day['open'] || is_array($day['open']) && $day['open']['time']) { $day['open'] = DateTime::createFromString($day['open'], $timezone); } else { $day['open'] = ''; } if (is_string($day['close']) && $day['close'] || is_array($day['close']) && $day['close']['time']) { $day['close'] = DateTime::createFromString($day['close'], $timezone); } else { $day['close'] = ''; } } } }
private function buildRRule($settings) { $allday = $settings['allday']; $startDate = $settings['start_date']; $endDate = $settings['end_date']; $startTime = $settings['start_time']; $endTime = $settings['end_time']; $repeats = $settings['repeats']; //Does it repeat? $frequency = $settings['frequency']; //Weekly, Daily, Monthly, Yearly $interval = $settings['interval']; // i.e. Every 1-30 Months? $weekDays = $settings['weekdays']; //Which weekdays $repeatBy = $settings['repeat_by']; //Monthly, by day of week, or day of month $ends = $settings['ends']; //how it ends (never, after, until) $count = $settings['count']; // if ending occurs amounts $untilDate = $settings['until']; // if ending until date $exDates = $settings['exdates']; $dbString = ''; //Builds RRULE based on UI Elements Input if ($repeats) { $rule = new Recurr\RecurrenceRule(); $rule->setStartDate(DateTime::createFromString($startDate, craft()->getTimeZone())); $rule->setInterval($interval); if ($ends == 'until') { $rule->setEndDate(DateTime::createFromString($untilDate, craft()->getTimeZone())); } else { if ($ends == 'after') { $rule->setCount($count); } } switch ($frequency) { case 'daily': $rule->setFreq(Recurr\RecurrenceRule::FREQ_DAILY); break; case 'weekly': $rule->setFreq(Recurr\RecurrenceRule::FREQ_WEEKLY); if (empty($weekDays)) { //If weekdays empty set monday by default $rule->setByDay(array('MO')); } else { $rule->setByDay($weekDays); } break; case 'monthly': $rule->setFreq(Recurr\RecurrenceRule::FREQ_MONTHLY); if ($repeatBy == 'month') { $dayOfMonth = date('j', $startDate); $rule->setByMonthDay(array($dayOfMonth)); } else { if ($repeatBy == 'week') { $uStartDate = $startDate; $dayOfWeek = strtoupper(substr(date('D', $uStartDate), 0, -1)); $numberOfWeek = ceil(date('j', $uStartDate) / 7); $rule->setByDay(array('+' . $numberOfWeek . $dayOfWeek)); } } break; case 'yearly': $rule->setFreq(Recurr\RecurrenceRule::FREQ_YEARLY); break; } if ($startTime) { $time = date('Ymd\\THis', strtotime(date('Y-m-d', $startDate) . date(' H:i:s', strtotime($startTime)))); $dbString .= 'DTSTART=' . $time . ';' . $rule->getString(); } else { $time = $startDate; var_dump($startDate); $dbString .= 'DTSTART=' . date('Ymd', $time) . ';' . $rule->getString(); } if (count($exDates) > 0) { $dbString .= ';EXDATE='; foreach ($exDates as $index => $date) { $dbString .= date('Ymd', $date); if ($date !== end($exDates)) { $dbString .= ','; } } $dbString .= ';'; } } else { if ($startTime) { $time = date('Ymd\\THis', strtotime(date('Ymd', $startDate) . date('\\THis', strtotime($startTime)))); $dbString .= 'DTSTART=' . $time . ';'; } else { $dbString .= 'DTSTART=' . date('Ymd', $startDate) . ';'; } } return $dbString; }