예제 #1
0
 public function buildForm(FormBuilderInterface $builder, array $options)
 {
     // Create the sample date and time data to be displayed
     // in the select form fields
     $now = new \DateTime();
     // Set user's timezone
     //$now->setTimezone(new \DateTimeZone($options['data']->getTimezone()));
     // Format output according to user's locale
     $localeFormat = new \IntlDateFormatter($options['data']->getLocale(), \IntlDateFormatter::FULL, \IntlDateFormatter::FULL, (new \DateTimeZone($options['data']->getTimezone()))->getName());
     if (is_array($this->formats['date']) && count($this->formats['date']) && is_array($this->formats['time']) && count($this->formats['time'])) {
         foreach ($this->formats['date'] as $dateFormat) {
             // Display format with current date to user
             $localeFormat->setPattern($dateFormat);
             $dateFormats[$dateFormat] = $localeFormat->format($now);
         }
         foreach ($this->formats['time'] as $timeFormat) {
             // Display format with current date to user
             $localeFormat->setPattern($timeFormat);
             $timeFormats[$timeFormat] = $localeFormat->format($now);
         }
     }
     $builder->add('username', 'text', array('constraints' => array(new Assert\NotBlank())))->add('email', 'email', array('constraints' => array(new Assert\NotBlank(), new Assert\Email())))->add('firstName', 'text', array('constraints' => array(new Assert\NotBlank())))->add('lastName', 'text', array('constraints' => array(new Assert\NotBlank())))->add('timezone', 'timezone')->add('avatarImage', new AvatarUploadType(), array('label' => 'Profile image'));
     if ($options['new']) {
         $builder->add('password', 'repeated', array('required' => true, 'type' => 'password', 'first_name' => 'password', 'second_name' => 'password_again', 'invalid_message' => 'The password fields must match.'));
     }
     //        $builder
     //            ->add('language', 'language', array(
     //                'data' => 'en_US',
     //                'disabled' => true
     //            ))
     //            ->add('locale', 'locale', array(
     //                'data' => 'en_US',
     //                'disabled' => true,
     //            ))
     //            ->add('currency', 'currency', array(
     //                'data' => 'USD',
     //                'disabled' => true
     //            ))
     //            ->add('dateFormat', 'choice', array(
     //                'data' => 'yyyy-MM-dd',
     //                'disabled' => true,
     //                'label' => 'Date Format',
     //                'choices'   => $dateFormats,
     //                'multiple'  => false,
     //             ))
     //            ->add('timeFormat', 'choice', array(
     //                'data' => 'HH:mm:ss',
     //                'disabled' => true,
     //                'label' => 'Time Format',
     //                'choices'   => $timeFormats,
     //                'multiple'  => false,
     //            ));
 }
 /**
  * @return array
  */
 protected function getMonthNames()
 {
     $formatter = new \IntlDateFormatter(Yii::$app->language, \IntlDateFormatter::FULL, \IntlDateFormatter::FULL);
     $formatter->setPattern('MMMM');
     $list = [];
     for ($i = 0; $i < 12; $i++) {
         $list[] = $formatter->format(mktime(0, 0, 0, $i, 1, 1970));
     }
     $list[] = array_shift($list);
     return $list;
 }
예제 #3
0
 public function ruDateFormat($dateRaw)
 {
     if ($dateRaw instanceof \DateTime) {
         $dateTime = $dateRaw;
     } else {
         $dateTime = new \DateTime($dateRaw);
     }
     $formatter = new \IntlDateFormatter('ru_RU', \IntlDateFormatter::NONE, \IntlDateFormatter::NONE);
     $formatter->setPattern('d MMMM YYYY');
     return $formatter->format($dateTime);
 }
예제 #4
0
 /**
  * Generates an array of localized month choices
  *
  * @param  array $months  The month numbers to generate
  * @return array          The localized months respecting the configured
  *                        locale and date format
  */
 protected function generateMonthChoices(array $months)
 {
     $pattern = $this->formatter->getPattern();
     if (preg_match('/M+/', $pattern, $matches)) {
         $this->formatter->setPattern($matches[0]);
         $choices = array();
         foreach ($months as $month) {
             $choices[$month] = $this->formatter->format(gmmktime(0, 0, 0, $month));
         }
         $this->formatter->setPattern($pattern);
     } else {
         $choices = $this->generatePaddedChoices($months, 2);
     }
     return $choices;
 }
 /**
  * 
  * @param string $time
  * @param string $formatDate
  * @param string $formatTime
  * @param string $seperator
  * @return string
  */
 public function __invoke($time = null, $formatDate = null, $formatTime = null, $pattern = null)
 {
     if (null === $time) {
         $datetime = new \DateTime();
     } else {
         $datetime = new \DateTime($time);
     }
     if (null === $formatDate) {
         $formatDate = \IntlDateFormatter::LONG;
     }
     if ('LONG' === $formatDate) {
         $formatDate = \IntlDateFormatter::LONG;
     }
     if ('FULL' === $formatDate) {
         $formatDate = \IntlDateFormatter::FULL;
     }
     if ('MEDIUM' === $formatDate) {
         $formatDate = \IntlDateFormatter::MEDIUM;
     }
     if ('SHORT' === $formatDate) {
         $formatDate = \IntlDateFormatter::SHORT;
     }
     if (false === $formatDate) {
         $formatDate = \IntlDateFormatter::NONE;
     }
     if ('LONG' === $formatTime) {
         $formatTime = \IntlDateFormatter::LONG;
     }
     if ('SHORT' === $formatTime) {
         $formatTime = \IntlDateFormatter::SHORT;
     }
     if (null === $formatTime) {
         $formatTime = \IntlDateFormatter::NONE;
     }
     $fmt = new \IntlDateFormatter("de-DE", $formatDate, $formatTime);
     // , "Europe/Berlin", \IntlDateFormatter::GREGORIAN );
     if (null !== $pattern) {
         $fmt->setPattern($pattern);
     }
     return $fmt->format($datetime);
 }
예제 #6
0
 /**
  * format ela date dd/MM/yyyy
  * @param  \IntlDateFormatter $formatter
  * @param  \Datetime          $date
  * @return string
  */
 protected function processDate(\IntlDateFormatter $formatter, \Datetime $date)
 {
     $formatter->setPattern('dd/MM/yyyy');
     return $formatter->format((int) $date->format('U'));
 }
<?php

$formatter = new \IntlDateFormatter('ru_RU', \IntlDateFormatter::FULL, \IntlDateFormatter::FULL);
$formatter->setPattern("d MMMM YYYY 'в' H:mm");
?>
<h3 class="text-center">Отчёт по расселению участников</h3>
<p>Список мест проживания участников <?php 
echo $this->pixie->config->get('party.event.title');
?>
 из других городов. Сформирован <?php 
echo $formatter->format(new \DateTime('now'));
?>
. Готов на <?php 
echo $page['ready'][0];
?>
%. Расселены <?php 
echo $page['ready'][1] . ' ' . $this->pixie->party->declension($page['ready'][1], array('участник', 'участника', 'участников'));
?>
 из <?php 
echo $page['ready'][2] . ' ' . $this->pixie->party->declension($page['ready'][2], array('нуждающегося', 'нуждающихся', 'нуждающихся'));
?>
 в жилье, использованы <?php 
echo $page['ready'][3] . ' ' . $this->pixie->party->declension($page['ready'][3], array('дом', 'дома', 'домов'));
?>
.</p>

<table class="table table-bordered1 table-condensed">
	<thead>
		<tr class="text-info">
			<th><i class="fa fa-home"></i> Хозяева</th>
			<th colspan="6"><i class="fa fa-child"></i> Гости</th>
예제 #8
0
    static function time($token, $options = array(), $attr)
    {
        $options['relative'] = $options['relative'] === 'true' || $options['relative'] == '1';
        $has_class = $options['class'] !== 'false';
        $options['rss'] = $options['rss'] !== 'false';
        if (!$token) {
            $token = array('timestamp' => time(), 'utc' => true);
        } else {
            if (!isset($token['timestamp'])) {
                if (isset($token['album'])) {
                    $token = $token['album']['date'];
                } else {
                    if (isset($token['date']) && isset($token['date']['timestamp'])) {
                        $token = $token['date'];
                    } else {
                        if (isset($token['event']) || isset($token['__koken__']) && $token['__koken__'] === 'event' || isset($token['year'])) {
                            $obj = isset($token['event']) ? $token['event'] : $token;
                            $str = $obj['year'] . '-';
                            $format = 'Y';
                            if (isset($obj['month'])) {
                                $str .= $obj['month'] . '-';
                                $format = 'F ' . $format;
                                if (isset($obj['day'])) {
                                    $str .= $obj['day'];
                                    $format = 'date';
                                } else {
                                    $str .= '01';
                                }
                            } else {
                                $str .= '01-01';
                            }
                            $token = array('timestamp' => strtotime($str), 'utc' => true);
                            $options['show'] = $format;
                        } else {
                            if (isset($token['year'])) {
                                $m = isset($token['month']) ? $token['month'] : 1;
                                $d = isset($token['day']) ? $token['day'] : 1;
                                $token = array('timestamp' => strtotime($token['year'] . '-' . $m . '-' . $d), 'utc' => true);
                                $options['show'] = 'F Y';
                            }
                        }
                    }
                }
            }
        }
        $timestamp = $token['timestamp'];
        // Don't timeshift dates where UTC param is false
        // Assume these dates are hardwired, like captured_on
        if (isset($token['utc']) && !$token['utc']) {
            date_default_timezone_set('UTC');
        }
        if ($options['rss']) {
            echo date('D, d M Y H:i:s O', $timestamp);
        } else {
            if ($has_class) {
                $klass = $options['class'];
            } else {
                $klass = '';
            }
            if ($options['relative']) {
                $klass .= ' k-relative-time';
            }
            if (!empty($klass)) {
                $klass = ' class="' . $klass . '"';
            }
            switch ($options['show']) {
                case 'both':
                    $f = self::$site['date_format'] . ' ' . self::$site['time_format'];
                    break;
                case 'date':
                    $f = self::$site['date_format'];
                    break;
                case 'time':
                    $f = self::$site['time_format'];
                    break;
                default:
                    $f = $options['show'];
                    break;
            }
            $dt = date('c', $timestamp);
            if (class_exists('IntlDateFormatter') && isset(self::$settings['language'])) {
                $df = new IntlDateFormatter(self::$settings['language'], IntlDateFormatter::NONE, IntlDateFormatter::NONE);
                $df->setPattern(self::to_date_field_symbol($f));
                $text = $df->format(new DateTime($dt));
            } else {
                $text = date($f, $timestamp);
            }
            $attr_clean = array();
            foreach ($attr as $key => $val) {
                $attr_clean[] = "{$key}=\"{$val}\"";
            }
            $attr = join(' ', $attr_clean);
            echo <<<OUT
<time{$klass} datetime="{$dt}" {$attr}>
\t{$text}
</time>
OUT;
        }
        date_default_timezone_set(Koken::$site['timezone']);
    }
 /**
  * @runInSeparateProcess
  */
 public function testFormatWithDefaultTimezoneIntlShouldUseDefaultDateTimeZoneVariable()
 {
     if (!$this->isGreaterOrEqualThanPhpVersion('5.5.0-dev')) {
         $this->markTestSkipped('Only in PHP 5.5 IntlDateFormatter depends on default timezone (`date_default_timezone_get()`).');
     }
     $this->skipIfIntlExtensionIsNotLoaded();
     $this->skipIfICUVersionIsTooOld();
     $tz = date_default_timezone_get();
     date_default_timezone_set('Europe/Paris');
     $formatter = new \IntlDateFormatter('en', StubIntlDateFormatter::MEDIUM, StubIntlDateFormatter::SHORT);
     $formatter->setPattern('yyyy-MM-dd HH:mm:ss');
     $this->assertEquals('Europe/Paris', date_default_timezone_get());
     $this->assertEquals($this->createDateTime(0, 'Europe/Paris')->format('Y-m-d H:i:s'), $formatter->format(0));
     // Restores TZ.
     date_default_timezone_set($tz);
 }
예제 #10
0
 public function getLocalizedTime(\DateTime $object, $timezone = null)
 {
     if (!$timezone) {
         $timezone = $this->container->get('session')->get('campaignchain.timezone');
     }
     // Apply timezone and locale to DateTime object
     $localeFormat = new \IntlDateFormatter($this->container->get('session')->get('campaignchain.locale'), \IntlDateFormatter::FULL, \IntlDateFormatter::FULL, $timezone);
     $localeFormat->setPattern($this->container->get('session')->get('campaignchain.timeFormat'));
     return $localeFormat->format($object);
 }
예제 #11
0
 public function action_message()
 {
     if ($this->request->post('action') == 'read') {
         if ($this->request->post('type') == 'user') {
             if (is_numeric($this->request->post('id'))) {
                 $msg = $this->pixie->orm->get('usermsg', $this->request->post('id'));
                 if ($msg->loaded()) {
                     $formatter = new \IntlDateFormatter('ru_RU', \IntlDateFormatter::FULL, \IntlDateFormatter::FULL);
                     $formatter->setPattern("d MMMM',' h:mm");
                     die(json_encode(array("status" => "success", "result" => $msg->content, "title" => "Сообщение от {$msg->sender->name} за " . $formatter->format(new \DateTime($msg->date)))));
                 }
             }
         }
     } else {
         if ($this->request->post('action') == 'send') {
             if ($this->request->post('type') == 'user' && is_numeric($this->request->post('id')) && is_numeric($this->request->post('template'))) {
                 $formatter = new \IntlDateFormatter('ru_RU', \IntlDateFormatter::FULL, \IntlDateFormatter::FULL);
                 $formatter->setPattern('d MMMM');
                 $htmlText = "";
                 $user = $this->pixie->orm->get('user', $this->request->post('id'));
                 if ($user->loaded()) {
                     // Шаблон "Напомнить об активации"
                     if ($this->request->post('template') == 1) {
                         $htmlText .= "Мир вам, {$user->name}!\n\nВы указали этот email ({$user->email}) " . $formatter->format(new \DateTime($user->codesent)) . " при регистрации на конференцию Я МОЛОДОЙ! 2014.\n\nМы заметили, что на сегодняшний день вы по каким-то причинам не прошли регистрацию до конца. Напоминаем, что регистрация считается завершённой после добавления анкеты участника и внесения предоплаты. Можем ли у вас узнать, что вам помешало? Может быть, возникли какие-нибудь трудности с самой регистрацией, и вам нужна помощь?\n\nПожалуйста, смело обращайтесь: мы готовы ответить на ваши вопросы и постараемся помочь!\n";
                         if (strtotime($user->codesent) < strtotime('2014-07-01')) {
                             $htmlText .= "\nВы приступали к регистрации заблаговременно, и мы ценим вашу пунктуальность! К сожалению, на тот момент у нас действовала старая форма регистрации на сайте imolod.ru, которую мы заменили 1 июля на новый сайт со всеми действующими условиями. Просим у вас прощения за то, что вначале мы не предусмотрели предоплату 500 руб., а потом её пришлось ввести! И поэтому индивидуально для вас мы отменяем повышение общего регистрационного взноса после 5 августа до 2000 рублей: для вас он в любое время останется равным 1500 руб.\n";
                         }
                         if ($user->pass && $user->active) {
                             $htmlText .= "\nДля продолжения регистрации вам нужно войти на сайт с помощью формы для входа:\nhttp://2014.imolod.ru/register#start\n";
                         } else {
                             if ($user->code) {
                                 $htmlText .= "\nДля продолжения регистрации вам нужно перейти по этой ссылке и придумать для себя пароль:\nhttp://2014.imolod.ru/register/confirm?email={$user->email}&code={$user->code}\n";
                             }
                         }
                         $htmlText .= "\nЗатем вы откроете свой профиль для добавления анкет участников. Проверьте, пожалуйста, что все сведения в анкете указаны верно. Дальнейшие инструкции по оплате вы увидите, нажав кнопку оплаты.\n\nЕсли у вас есть замечания или предложения по методу регистрации, сообщите их нам, пожалуйста!\n\n\nПрограмма конференции:\nhttps://vk.com/page-71444548_48399312\n\nПодробные условия регистрации:\nhttps://2014.imolod.ru/register\n\nИнструкция по регистрации с картинками:\nhttps://vk.com/page-71444548_48108588\n\nВопросы и ответы в группе ВКонтакте:\nhttps://vk.com/board71444548\n\nБлагословений! Ждём вас!\n\n--\nОрганизаторы конференции Я МОЛОДОЙ! 2014 в Волгограде\ninfo@imolod.ru\nhttp://2014.imolod.ru\nhttps://vk.com/imolod14\n";
                         // echo $htmlText;
                     } else {
                         if ($this->request->post('template') == 2) {
                             $htmlText .= "Мир вам, {$user->name}!\n\nМы, организаторы \"Я молодой\", очень рады, что вы собираетесь на эту конференцию и " . $formatter->format(new \DateTime($user->codesent)) . " решили зарегистрироваться на нашем сайте! Сейчас мы вовсю готовимся, ведь до начала осталось всего " . $this->pixie->party->daysLeft() . ".\n\nВаша регистрация очень важна для нас, чтобы спланировать все расходы и расселение. Ещё мы просим всех участников пожертвовать на нужды конференции по " . $this->pixie->config->get('party.periods.1.prices.full') . " рублей, из которых " . $this->pixie->config->get('party.periods.1.prices.prepay') . " нужно отправить заранее (можно и позже, но тогда вся сумма выйдет больше). Наше общее желание - чтобы во время всей конференции молодёжь могла вместе поклоняться Богу спокойно от бытовых проблем и суеты!\n\n";
                             $partsCount = $user->participants->where('cancelled', 0)->count_all();
                             if ($partsCount > 1) {
                                 $partsUnpayed = $user->participants->where('cancelled', 0)->where('money', '<', $this->pixie->config->get('party.periods.1.prices.prepay'))->find_all()->as_array();
                                 $names = array();
                                 foreach ($partsUnpayed as $part) {
                                     $names[] = $part->firstname . ' ' . $part->lastname;
                                 }
                                 $htmlText .= "Вы уже добавили анкеты {$partsCount} " . $this->pixie->party->declension($partsCount, array('участника', 'участников', 'участников')) . ", и для успешного завершения регистрации осталось внести предоплату за следующих из них: " . implode(", ", $names) . ".";
                             } else {
                                 if ($partsCount) {
                                     $htmlText .= "Вы уже добавили свою анкету участника, и для успешного завершения регистрации осталось только внести предоплату.";
                                 } else {
                                     $htmlText .= "Для успешного завершения регистрации вам нужно заполнить свою анкету участника и внести предоплату.";
                                 }
                             }
                             $htmlText .= "\n\nА сделать нам денежный перевод совсем не сложно, так как доступны разные способы оплаты, и многие участники уже с этим справились. По этой ссылке вы перейдёте к подробным условиям и ко входу в свой профиль на сайте:\nhttp://2014.imolod.ru/register\n\nНаша группа Вконтакте, в которой есть программа конференции и ответы на вопросы:\nhttp://vk.com/imolod14\n\n";
                             if (!$user->grace) {
                                 if (strtotime('today') == strtotime($this->pixie->config->get('party.periods.1.lastday'))) {
                                     $htmlText .= "Сегодня, " . $formatter->format(new \DateTime('today')) . ", последний день для внесения предоплаты, чтобы для вас общий размер взноса за одного участника сохранился равным " . $this->pixie->config->get('party.periods.1.prices.full') . " руб. ";
                                 } else {
                                     if (strtotime('tomorrow') == strtotime($this->pixie->config->get('party.periods.1.lastday'))) {
                                         $htmlText .= "Завтра, " . $formatter->format(new \DateTime('tomorrow')) . ", последний день для внесения предоплаты, чтобы для вас общий размер взноса за одного участника сохранился равным " . $this->pixie->config->get('party.periods.1.prices.full') . " руб. ";
                                     }
                                 }
                             }
                             $htmlText .= "Пожалуйста, смело обращайтесь к нам за помощью или с вопросами - мы готовы ответить и пойти вам на встречу!\n\n--\nКоманда организаторов конференции \"Я МОЛОДОЙ\" в Волгограде\ninfo@imolod.ru\nhttp://2014.imolod.ru\nhttp://vk.com/imolod14\n";
                         } else {
                             if ($this->request->post('template') == 3) {
                                 $htmlText .= "Мир вам, {$user->name}!\n\nСистема регистрации нам показывает, что вы заполнили анкету участника и пробовали отправить регистрационный взнос, но отправка не получилась. Вы можете проверить нынешнее состояние оплаты в своём профиле, в таблице с участниками:\nhttp://" . $this->pixie->config->get('party.event.domain') . "/register/profile\n\nЕсли вы совершали оплату через банковский перевод или Сбербанк Онлайн, то нормальный срок обработки составляет 2 рабочих дня. Остальные виды платежей исполняются всего за несколько минут. Если все сроки вышли, а в профиле сумма оплаты не появилась, значит платёж неудачный.\n\nМожем ли мы вам помочь? Пожалуйста, обращайтесь к нам со всеми вопросами и замечаниями! Осталось всего " . $this->pixie->party->daysLeft() . " до конференции, но ещё можно успеть. Мы учитываем, что вы пытались всё сделать ещё до конца льготного периода регистрации, поэтому, если вы сообщите нам свою проблему, размер взноса для вас не увеличится.\n\n--\nКоманда организаторов конференции \"Я МОЛОДОЙ\" в Волгограде\ninfo@imolod.ru\nhttp://2014.imolod.ru\nhttp://vk.com/imolod14\n";
                                 // die($htmlText);
                             }
                         }
                     }
                     // template 3
                     // Осталось отправить, если есть что:
                     if ($htmlText) {
                         $result = $this->pixie->email->send(array($user->email => "=?utf-8?B?" . base64_encode($user->name) . "?="), array($this->pixie->config->get('party.contacts.info') => "=?utf-8?B?" . base64_encode('Организаторы ' . $this->pixie->config->get('party.event.short_title')) . "?="), "Ваша регистрация на " . $this->pixie->config->get('party.event.short_title'), $htmlText, false);
                         if ($result) {
                             $newMsg = $this->pixie->orm->get('usermsg');
                             $newMsg->content = $htmlText;
                             $newMsg->type = 'email';
                             $newMsg->date = date('Y-m-d H:i:s', time());
                             $newMsg->save();
                             $newMsg->add('sender', $this->pixie->auth->user());
                             $newMsg->add('recipient', $user);
                             $newMsg->save();
                             die(json_encode(array("status" => "success")));
                         }
                     }
                     // Отправка
                 }
             }
         }
     }
 }
예제 #12
0
    private function formatMonths(\IntlDateFormatter $formatter, array $months)
    {
        $pattern = $formatter->getPattern();
        $timezone = $formatter->getTimezoneId();

        $formatter->setTimezoneId(\DateTimeZone::UTC);

        if (preg_match('/M+/', $pattern, $matches)) {
            $formatter->setPattern($matches[0]);

            foreach ($months as $key => $value) {
                $months[$key] = $formatter->format(gmmktime(0, 0, 0, $key, 15));
            }

            // I'd like to clone the formatter above, but then we get a
            // segmentation fault, so let's restore the old state instead
            $formatter->setPattern($pattern);
        }

        $formatter->setTimezoneId($timezone);

        return $months;
    }
예제 #13
0
 public function generateSprintsForTask($project)
 {
     $sprints_numbers = array();
     $sprints_dates = array();
     $sprints_dates_text = array();
     $interval = date_diff(new \DateTime(), $project->getCreatedAt())->days;
     $current_sprint = (int) ceil($interval / $project->getSprintLength());
     $formatter = new \IntlDateFormatter(\Locale::getDefault(), \IntlDateFormatter::NONE, \IntlDateFormatter::NONE);
     $formatter->setPattern('d MMMM Y');
     for ($i = 0; $i < 6; $i++) {
         $sprints_numbers[$i] = $current_sprint + $i;
         $start_date = clone $project->getCreatedAt();
         $start_date->add(date_interval_create_from_date_string($project->getSprintLength() * ($current_sprint + $i - 1) . ' days'));
         $end_date = clone $start_date;
         $end_date->add(date_interval_create_from_date_string($project->getSprintLength() - 1 . 'days'));
         $sprints_dates[$i] = ['start_date' => $start_date, 'end_date' => $end_date];
         $sprints_dates_text[$i] = $formatter->format($start_date) . ' — ' . $formatter->format($end_date);
     }
     return array($sprints_numbers, $sprints_dates, $sprints_dates_text, $current_sprint);
 }
예제 #14
0
<?php

$formatter = new \IntlDateFormatter('ru_RU', \IntlDateFormatter::FULL, \IntlDateFormatter::FULL);
$formatter->setPattern('d MMMM');
?>
<div class="table-responsive">
<table class="table table-condensed table-hover dataTables users">
	<thead>
		<tr>
			<th data-sort="ascending">id</th>
			<th>имя</th>
			<th>email</th>
			<th>дата</th>
			<th>участники</th>
			<th>незарег</th>
			<th>платежи</th>
			<th>льгота</th>
			<th>активен</th>
			<th>роль</th>
			<th data-orderable="0">&nbsp;</th>
		</tr>
	</thead>
	<tbody>
<?php 
foreach ($page['users'] as $user) {
    ?>
		<tr<?php 
    if (!$user->active) {
        echo " class=\"text-muted\"";
    }
    ?>
예제 #15
0
 public function action_birthdays()
 {
     $formatterShort = new \IntlDateFormatter('ru_RU', \IntlDateFormatter::FULL, \IntlDateFormatter::FULL);
     $formatterShort->setPattern("d MMMM");
     $birthdays = $this->pixie->party->getBirthdays();
     $this->page['title'] = 'Именинники';
     $this->page['content'] = "";
     foreach ($birthdays as $birthday) {
         $this->page['content'] .= $formatterShort->format(new \DateTime($birthday['date'])) . " &mdash; {$birthday['name']} {$birthday['age']} " . $this->pixie->party->declension($birthday['age'], array('год', 'года', 'лет')) . "<br/>\n";
     }
 }
예제 #16
0
}
?>

</div>

<div>Общая сумма полученных взносов: <strong><?php 
echo $page['totalMoney'];
?>
</strong> рублей.</div>

<!-- /. ROW  -->
<hr/>

<?php 
$formatter = new \IntlDateFormatter('ru_RU', \IntlDateFormatter::FULL, \IntlDateFormatter::FULL);
$formatter->setPattern('d/M');
?>
<div class="panel panel-default">
	<div class="panel-heading">Комментарии участников</div>
	<table class="table table-condensed dataTables comments">
		<thead class="hidden">
			<tr>
				<th>Комментарий</th>
			</tr>
		</thead>
		<tbody>
			<?php 
foreach ($page['comments'] as $part) {
    ?>
			<tr>
				<td>
예제 #17
0
 public function __toString()
 {
     $formatter = new \IntlDateFormatter(\Locale::getDefault(), \IntlDateFormatter::NONE, \IntlDateFormatter::NONE);
     $formatter->setPattern('d MMMM Y');
     return $formatter->format($this->getDateStart()) . ' — ' . $formatter->format($this->getDateEnd());
 }
예제 #18
0
파일: Utils.php 프로젝트: kletellier/mvc
 /**
  * Function for returning date in french format like Lundi 12 Mai 1999 23:12
  * @param \Datetime $datetime date to convert
  * @param type $lang Conversion language default french
  * @param type $pattern default pattern, french as default value
  * @return string
  */
 public static function getFrenchDate(\Datetime $datetime, $lang = 'fr_FR', $pattern = 'E dd MMM yyyy HH:mm ')
 {
     $formatter = new \IntlDateFormatter($lang, \IntlDateFormatter::LONG, \IntlDateFormatter::LONG);
     $formatter->setPattern($pattern);
     return $formatter->format($datetime);
 }
예제 #19
0
 private function formatTimestamps(\IntlDateFormatter $formatter, $regex, array $timestamps)
 {
     $pattern = $formatter->getPattern();
     $timezone = $formatter->getTimezoneId();
     if (version_compare(\PHP_VERSION, '5.5.0-dev', '>=')) {
         $formatter->setTimeZone(\DateTimeZone::UTC);
     } else {
         $formatter->setTimeZoneId(\DateTimeZone::UTC);
     }
     if (preg_match($regex, $pattern, $matches)) {
         $formatter->setPattern($matches[0]);
         foreach ($timestamps as $key => $timestamp) {
             $timestamps[$key] = $formatter->format($timestamp);
         }
         // I'd like to clone the formatter above, but then we get a
         // segmentation fault, so let's restore the old state instead
         $formatter->setPattern($pattern);
     }
     if (version_compare(\PHP_VERSION, '5.5.0-dev', '>=')) {
         $formatter->setTimeZone($timezone);
     } else {
         $formatter->setTimeZoneId($timezone);
     }
     return $timestamps;
 }
예제 #20
0
파일: LocaMon.php 프로젝트: efiku/locamon
 public function getResult()
 {
     $dateFormatter = new \IntlDateFormatter($this->locale, \IntlDateFormatter::FULL, \IntlDateFormatter::FULL);
     $dateFormatter->setPattern($this->format);
     return $dateFormatter->format($this->timestamp);
 }
예제 #21
0
 /**
  * @Then /^In DatePicker I select the day around "([^"]*)" "([^"]*)" today$/
  */
 public function inDatepickerISelectTheDayAroundToday($beforeAfter, $period)
 {
     $el = $this->getSession()->getPage()->findAll('css', '.ui-datepicker-calendar');
     if (null == $el) {
         throw new Exception("No date picker displayed");
     } else {
         $now = new \DateTime();
         if ("before" == $beforeAfter) {
             $now->sub(new \DateInterval($period));
         } elseif ("after" == $beforeAfter) {
             $now->add(new \DateInterval($period));
         }
         $formatter = new \IntlDateFormatter('fr_FR', \IntlDateFormatter::FULL, \IntlDateFormatter::FULL);
         $formatter->setPattern('MMMM');
         $monthSearched = ucfirst($formatter->format($now));
         foreach ($el as $index => $month) {
             $parent = $el[$index]->getParent();
             $isMonthSearched = $parent->find("xpath", "//span[text()='" . $monthSearched . "']");
             if ($isMonthSearched) {
                 $isLink = $el[$index]->find("xpath", "//a[text()='" . $now->format("j") . "']");
                 if ($isLink) {
                     $isLink->mouseOver();
                     $isLink->click();
                 } else {
                     throw new Exception("No link found");
                 }
             }
         }
     }
 }
예제 #22
0
 private function formatTimestamps(\IntlDateFormatter $formatter, $regex, array $timestamps)
 {
     $pattern = $formatter->getPattern();
     $timezone = $formatter->getTimezoneId();
     $formattedTimestamps = array();
     $formatter->setTimeZone('UTC');
     if (preg_match($regex, $pattern, $matches)) {
         $formatter->setPattern($matches[0]);
         foreach ($timestamps as $timestamp => $choice) {
             $formattedTimestamps[$formatter->format($timestamp)] = $choice;
         }
         // I'd like to clone the formatter above, but then we get a
         // segmentation fault, so let's restore the old state instead
         $formatter->setPattern($pattern);
     }
     $formatter->setTimeZone($timezone);
     return $formattedTimestamps;
 }
예제 #23
0
<?php

$formatter = new \IntlDateFormatter('ru_RU', \IntlDateFormatter::FULL, \IntlDateFormatter::FULL);
$formatter->setPattern("d MMMM YYYY 'в' H:mm");
$formatterShort = new \IntlDateFormatter('ru_RU', \IntlDateFormatter::FULL, \IntlDateFormatter::FULL);
$formatterShort->setPattern('d MMMM YYYY');
$formatterShort2 = new \IntlDateFormatter('ru_RU', \IntlDateFormatter::FULL, \IntlDateFormatter::FULL);
$formatterShort2->setPattern('d MMMM H:mm');
$panel = array('userIcon' => "<span class=\"pull-right label label-" . ($page['user']->active ? "success" : "danger") . "\">№ {$page['user']->id}</span>", 'identity' => array("<i class=\"fa fa-user fa-fw\"></i> {$page['user']->name}", "<i class=\"fa fa-envelope fa-fw\"></i> {$page['user']->email}", $page['user']->active ? "<i class=\"fa fa-check-circle fa-fw text-success\"></i> " . $formatterShort->format(new \DateTime($page['user']->codesent)) . " активирован" : "<i class=\"fa fa-times-circle fa-fw text-danger\"></i> " . $formatter->format(new \DateTime($page['user']->codesent)) . " <span class=\"text-muted\">отправлен код</span>", "<i class=\"fa fa-gift fa-fw\"></i> Льготный период <button data-userid=\"{$page['user']->id}\" class=\"pull-right btn btn-default btn-xs grace-user" . ($page['user']->grace ? " active" : "") . "\"><i class=\"fa fa-gift" . ($page['user']->grace ? " text-success" : "") . "\"></i> Льгота</button>"), 'participantsIcon' => '', 'participants' => array(), 'ordersIcon' => '', 'orders' => array(), 'inbox' => array(), 'outbox' => array());
if ($page['user']->role == 'admin') {
    $panel['identity'][] = "<span class=\"text-primary\"><i class=\"fa fa-certificate fa-fw\"></i> <strong>Администратор</strong></span>";
} else {
    if ($page['user']->role == 'operator') {
        $panel['identity'][] = "<span class=\"text-primary\"><i class=\"fa fa-certificate fa-fw\"></i> <strong>Оператор</strong></span>";
    } else {
        $panel['identity'][] = "<span class=\"text-muted\"><i class=\"fa fa-certificate fa-fw\"></i> Пользователь</span>";
    }
}
if ($page['user']->money) {
    $panel['identity'][] = "<i class=\"fa fa-money fa-fw text-danger\"></i> {$page['user']->money} <i class=\"fa fa-rouble\"></i> свободны";
}
if ($page['user']->participants->count_all()) {
    $team = $page['user']->participants->order_by('gender', 'asc')->find_all()->as_array();
    $teamCount = $page['user']->participants->where('cancelled', 0)->count_all();
    $panel['participantsIcon'] = " <span class=\"pull-right label label-default\"><i class=\"fa fa-users fa-lg fa-fw\"></i> {$teamCount}</span>";
    foreach ($team as $item) {
        $panel['participants'][] = ($item->cancelled ? "<s>" : "") . "<i class=\"fa fa-fw " . ($item->gender == 2 ? 'fa-female text-danger' : 'fa-male text-primary') . "\"></i> <a href=\"/admin/participants/{$item->id}\">{$item->firstname} {$item->lastname}</a>" . ($item->cancelled ? "</s>" : "") . ($item->money ? "<sup>{$item->money}</sup>" : "");
    }
}
if ($page['user']->orders->count_all()) {
    $panel['orders'] = $page['user']->orders->find_all()->as_array();
예제 #24
0
 public function getLibelle()
 {
     $formatter = new \IntlDateFormatter("fr_FR", \IntlDateFormatter::LONG, \IntlDateFormatter::LONG);
     if ($this->getMode() == self::MODE_DAY) {
         $formatter->setPattern("EEEE d MMMM Y");
         return ucfirst($formatter->format($this->getDate()));
     }
     if ($this->getMode() == self::MODE_MONTH) {
         $formatter->setPattern("MMMM Y");
         return ucfirst($formatter->format($this->getDateDebutMois()));
     }
     $formatter->setPattern("MMM");
     $firstMonth = $formatter->format($this->getDateDebutSemaine());
     $lastMonth = $formatter->format($this->getDateFinSemaine());
     if ($firstMonth == $lastMonth) {
         $firstMonth = "";
     } else {
         $firstMonth = " " . $firstMonth;
     }
     return sprintf("%s%s au %s %s %s", $this->getDateDebutSemaine()->format('j'), $firstMonth, $this->getDateFinSemaine()->format("j"), $lastMonth, $this->getDateFinSemaine()->format("Y"));
 }
예제 #25
0
} else {
    $user_id = "";
}
$enda = $page['part']->gender == 2 ? "а" : "";
$findabout = unserialize($page['part']->findabout);
foreach ($findabout as $key => $value) {
    $findabout[$key] = $this->pixie->config->get('party.userfields.findabout.options.' . $value);
}
$formatter = new \IntlDateFormatter('ru_RU', \IntlDateFormatter::FULL, \IntlDateFormatter::FULL);
$formatter->setPattern('d MMMM YYYY');
$formatterShort = new \IntlDateFormatter('ru_RU', \IntlDateFormatter::FULL, \IntlDateFormatter::FULL);
$formatterShort->setPattern('d MMMM');
$formatterShort2 = new \IntlDateFormatter('ru_RU', \IntlDateFormatter::FULL, \IntlDateFormatter::FULL);
$formatterShort2->setPattern('d MMMM H:mm');
$formatterShort3 = new \IntlDateFormatter('ru_RU', \IntlDateFormatter::FULL, \IntlDateFormatter::FULL);
$formatterShort3->setPattern("d.MM");
$age = date_diff(date_create($page['part']->birthday), date_create('now'))->y;
$daysTotal = $this->pixie->config->get('party.userfields.days.options');
$daysTotal = max(array_keys($daysTotal));
$subject_types = array(array('Республика', 'респ.', 'республики', 0), array('Край', 'кр.', 'края', 1), array('Область', 'обл.', 'области', 1), array('Автономная область', 'АО', 'автономной области', 1), array('Автономный округ', 'АО', 'автономного округа', 1), array('Город', 'г.', 'города', 0));
$panel = array('userIcon' => '', 'payIcon' => '', 'ordersIcon' => '', 'unknown' => array(), 'identity' => array(), 'conditions' => array(), 'geo' => array(), 'payment' => array(), 'orders' => array(), 'accomodation' => array());
// Панель недостающих данных
if (!$this->pixie->party->makeWebsiteLink($page['part']->website)) {
    $panel['unknown'][] = "Сайт неизвестен";
}
if ($age < 1 || $age >= 200) {
    $panel['unknown'][] = "Возраст неизвестен";
}
if (trim($page['part']->phone) == '') {
    $panel['unknown'][] = "Телефон неизвестен";
}
예제 #26
0
<?php

$formatter = new \IntlDateFormatter('ru_RU', \IntlDateFormatter::FULL, \IntlDateFormatter::FULL);
$formatter->setPattern('d MMMM, H:mm');
?>
<div class="table-responsive">
<table class="table table-condensed table-hover dataTables paylist">
	<thead>
		<tr>
			<th>№</th>
			<th><span class="hidden-xs">статус</span></th>
			<th>сумма</th>
			<th data-sort="descending">дата заявки</th>
			<th>дата завершения</th>
			<th>назначение</th>
			<th>отправитель</th>
		</tr>
	</thead>
	<tbody>
<?php 
foreach ($page['orders'] as $order) {
    ?>
		<tr<?php 
    if (!$order->payed) {
        echo " class=\"text-muted\"";
    }
    ?>
>
			<td class="text-muted"><small><?php 
    echo $order->id;
    ?>
예제 #27
0
 /**
  * It seems IntlDateFormatter caches the timezone id when not explicitly set via constructor or by the
  * setTimeZoneId() method. Since testFormatWithDefaultTimezoneIntl() runs using the default environment
  * time zone, this test would use it too if not running in a separated process.
  *
  * @runInSeparateProcess
  */
 public function testFormatWithDefaultTimezoneIntlShouldUseTheTzEnvironmentVariableWhenAvailable()
 {
     $this->skipIfIntlExtensionIsNotLoaded();
     $this->skipIfICUVersionIsTooOld();
     $tz = getenv('TZ');
     putenv('TZ=Europe/Paris');
     $formatter = new \IntlDateFormatter('en', StubIntlDateFormatter::MEDIUM, StubIntlDateFormatter::SHORT);
     $formatter->setPattern('yyyy-MM-dd HH:mm:ss');
     $this->assertEquals('Europe/Paris', getenv('TZ'));
     $this->assertEquals($this->createDateTime(0)->format('Y-m-d H:i:s'), $formatter->format(0));
     // Restores TZ.
     putenv('TZ=' . $tz);
 }
 public function testFormatWithDefaultTimezoneIntl()
 {
     $this->skipIfIntlExtensionIsNotLoaded();
     $this->skipIfICUVersionIsTooOld();
     $formatter = new \IntlDateFormatter('en', StubIntlDateFormatter::MEDIUM, StubIntlDateFormatter::SHORT);
     $formatter->setPattern('yyyy-MM-dd HH:mm:ss');
     $this->assertEquals($this->createDateTime(0)->format('Y-m-d H:i:s'), $formatter->format(0));
 }
 protected function getIntlDateFormatter() : \IntlDateFormatter
 {
     $intlDateFormatter = new \IntlDateFormatter(\Locale::getDefault(), $this->dateFormat, $this->timeFormat, $this->outputTimezone, $this->calendar, $this->pattern);
     $intlDateFormatter->setLenient(false);
     // Ensure the year is always four digits when no pattern is set
     if ('' === $this->pattern) {
         $intlDateFormatter->setPattern(str_replace(['yy', 'yyyyyyyy'], 'yyyy', $intlDateFormatter->getPattern()));
     }
     return $intlDateFormatter;
 }