Exemple #1
0
 private function replace($string)
 {
     // Год
     $string = str_replace('[year]', $this->year, $string);
     // Img Alt
     $string = str_replace('[alt]', $this->replace($this->alt), $string);
     // Месяцы
     if (preg_match('@\\[month_([a-z]{1})\\]@si', $string)) {
         $string = preg_replace_callback('@\\[month_([a-z]{1})\\]@si', function ($matches) {
             return GlobalHelper::rusMonth((int) $this->month, $matches[1]);
         }, $string);
     }
     if (preg_match('@\\[engmonth_([a-z]{1})\\]@si', $string)) {
         $string = preg_replace_callback('@\\[engmonth_([a-z]{1})\\]@si', function ($matches) {
             return GlobalHelper::engMonth((int) $this->month, $matches[1]);
         }, $string);
     }
     // Знаки
     if (preg_match('@\\[znak_([a-z]{1})\\]@si', $string)) {
         $string = preg_replace_callback('@\\[znak_([a-z]{1})\\]@si', function ($matches) {
             return GlobalHelper::rusZodiac((int) $this->znak, $matches[1]);
         }, $string);
     }
     if (preg_match('@\\[engznak_([a-z]{1})\\]@si', $string)) {
         $string = preg_replace_callback('@\\[engznak_([a-z]{1})\\]@si', function ($matches) {
             return mb_strtolower(GlobalHelper::translit(GlobalHelper::rusZodiac((int) $this->znak, $matches[1])));
         }, $string);
     }
     return $string;
 }
Exemple #2
0
    /**
     * Дополнение для лунного календаря стрижек и всех статей из данной категории
     *
     * @param object $post Объект класса Post (статья)
     */
    public static function fullMoonHair($post)
    {
        // Если это не статья с ID 1266 (статья-категория)
        if ($post->id != 1266) {
            $showCurrent = true;
            $showNext = true;
            $currentMonth = date('n');
            $currentYear = date('Y');
            $currentMonthHairLink = '';
            // Ссылка на календарь стрижек на текущий месяц
            $currentLink = AppData::getMoonHairLinks($currentYear, $currentMonth);
            // Проверяем id статьи по ссылке и, если он совпадает с id статьи, не выводим ссылку на текущий месяц
            $currentLinkId = substr($currentLink, 0, 4);
            if ($currentLinkId == $post->id) {
                $showCurrent = false;
            }
            // Блок со ссылкой на текущий месяц лунного календаря стрижек
            if ($showCurrent && $currentLink) {
                $currentMonthHairLink = '<li class="li_links">Благоприятные дни для стрижек на текущий месяц
                    <span class="span_links">
                        <a href="' . $currentLink . '">
                            Лунный календарь стрижек на ' . GlobalHelper::rusMonth($currentMonth) . ' ' . $currentYear . ' года
                        </a>
                    </span></li>';
            }
            // Определяем следующий месяц и год, если текущий месяц - декабрь
            if ($currentMonth != 12) {
                $nextMonth = $currentMonth + 1;
                $nextYear = $currentYear;
            } else {
                $nextMonth = 1;
                $nextYear = $currentYear + 1;
            }
            // Ссылка на календарь стрижек на текущий месяц
            $nextLink = AppData::getMoonHairLinks($nextYear, $nextMonth);
            // Проверяем id статьи по ссылке и, если он совпадает с id статьи, не выводим ссылку на текущий месяц
            $nextLinkId = substr($nextLink, 0, 4);
            if ($nextLinkId == $post->id) {
                $showNext = false;
            }
            // Блок со ссылкой на следующий месяц лунного календаря стрижек
            if ($showNext && $nextLink) {
                $nextMonthHairLink = '<li class="li_links">Когда стричь волосы в следующем месяце
                    <span class="span_links">
                        <a href="' . $nextLink . '">
                            Лунный календарь стрижек на ' . GlobalHelper::rusMonth($nextMonth) . ' ' . $nextYear . ' года
                        </a>
                    </span></li>';
            }
            // Блок со ссылкой на текущий месяц общего лунного календаря
            if ($link = AppData::getMoonCalLinks($currentYear, $currentMonth)) {
                $currentMonthMoon = '<li class="li_links">Луна в знаках, фазы и лунные дни на текущий месяц
                    <span class="span_links">
                        <a href="' . $link . '">Лунный календарь на ' . GlobalHelper::rusMonth($currentMonth) . ' ' . $currentYear . ' года</a>
                    </span></li>';
            }
            $linksBlock = '<p>&nbsp;</p><ul class="ul_links"><h3>Актуальные календари</h3>' . $currentMonthHairLink . $nextMonthHairLink . $currentMonthMoon . '</ul>';
            $post->full .= $linksBlock;
        } else {
            if ($post->id == 1266) {
                $currentMonth = date('n');
                $currentYear = date('Y');
                $currentDay = date('d');
                $calCurrMonth = date('Y-m');
                $currCalText = '';
                $nextCalText = '';
                if ($currentMonth != 12) {
                    $nextMonth = $currentMonth + 1;
                    $nextYear = $currentYear;
                } else {
                    $nextMonth = 1;
                    $nextYear = $currentYear + 1;
                }
                $calNextMonth = $nextYear . '-' . sprintf('%02D', $nextMonth);
                // Заголовок
                $topH2 = '<h2>Лунный календарь стрижек на ' . $currentYear . ' год. Благоприятные дни для стрижки волос в ' . $currentYear . ' году</h2>';
                $post->full = str_replace('{top_h2}', $topH2, $post->full);
                // Список ссылок на месяцы
                $moonCal = '<h2 align="center">Лунный календарь стрижек на ' . $currentYear . ' год по месяцам</h2>';
                $year = $currentMonth == 12 ? ++$currentYear : $currentYear;
                $allMonths = '';
                for ($d = 1; $d <= 12; $d++) {
                    $currentFlag = '';
                    $calLinkClass = '';
                    if ($d == $currentMonth) {
                        $calLinkClass = '_big';
                        $currentFlag = '<strong>Сейчас:</strong> ';
                    }
                    if ($d == 12) {
                        $year = $currentYear;
                    }
                    $allMonths[] = $currentFlag . '<a href="' . AppData::getMoonHairLinks($year, $d) . '" class="moon_link' . $calLinkClass . '">Лунный календарь стрижек на ' . GlobalHelper::rusMonth($d) . ' ' . $year . ' года</a>';
                }
                $moonCal .= Html::ul($allMonths, ['encode' => false]) . '<p>&nbsp;</p>';
                $post->full .= $moonCal;
                // БЛОК СЕГОДНЯ
                // Основной запрос
                $moonQuery = MoonCal::find();
                $weekDays = [0 => "Воскресенье", "Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота"];
                $firstMoonPhase = 0;
                $currentMonthDays = date('t');
                $currentDay = date('j');
                $monthYear = date('Y-m');
                $moonQuery->where("date_format(date, '%Y-%m') = '{$monthYear}'");
                $nextMonthYear = date('Y-m', strtotime($monthYear) + 2764800);
                // Если сейчас последний день месяца
                if ($currentDay == $currentMonthDays) {
                    $moonQuery->orWhere("date_format(date, '%Y-%m') = '{$nextMonthYear}'");
                }
                $moonCalDays = $moonQuery->orderBy('date')->asArray()->all();
                //var_dump($moonCalDays);
                $phase_image_num = 0;
                $w = 0;
                foreach ($moonCalDays as $rows_moon) {
                    $w++;
                    $moon_date_base = $rows_moon['date'];
                    $moons[$moon_date_base]['w'] = $w;
                    $moons[$moon_date_base]['moon_date'] = date("j", strtotime($moon_date_base)) . " " . GlobalHelper::rusMonth(date("n", strtotime($moon_date_base))) . " " . date("Y", strtotime($moon_date_base));
                    $moons[$moon_date_base]['moon_day'] = $rows_moon['moon_day'];
                    $moons[$moon_date_base]['moon_day_from'] = substr($rows_moon['moon_day_from'], 0, 5);
                    $moons[$moon_date_base]['moon_day2'] = $rows_moon['moon_day2'];
                    $moons[$moon_date_base]['moon_day2_from'] = substr($rows_moon['moon_day2_from'], 0, 5);
                    $moons[$moon_date_base]['moon_zodiak'] = GlobalHelper::rusZodiac($rows_moon['zodiak']);
                    $moons[$moon_date_base]['moon_zodiak_from_ut'] = substr($rows_moon['zodiak_from_ut'], 0, 5);
                    $moons[$moon_date_base]['moon_phase'] = $rows_moon['phase'];
                    $moons[$moon_date_base]['$moon_phase_from'] = substr($rows_moon['phase_from'], 0, 5);
                    $moons[$moon_date_base]['blago'] = $rows_moon['blago'];
                    $moons[$moon_date_base]['moon_weekday'] = $weekDays[date("w", strtotime($moon_date_base))];
                    if ($rows_moon['moon_day2']) {
                        $moons[$moon_date_base]['moon_day'] = $moons[$moon_date_base]['moon_day'] . "/" . $moons[$moon_date_base]['moon_day2'];
                    }
                    if ($moons[$moon_date_base]['moon_phase']) {
                        $firstMoonPhase++;
                        $phase_image_num = $moons[$moon_date_base]['moon_phase'] * 2 - 1;
                        $phase_image[$w] = $phase_image_num;
                        if ($firstMoonPhase == 1 && $w != 1) {
                            $w_difference = $w - 1;
                            for ($e = 1; $e <= $w_difference; $e++) {
                                if ($phase_image_num != 1) {
                                    $phase_image[$e] = $phase_image_num - 1;
                                } else {
                                    $phase_image[$e] = 8;
                                }
                            }
                        }
                        //$moon_phase = $moon_phases[$moon_phase] . " с " . $moon_phase_from;
                    } else {
                        //$moon_phase = "";
                        $phase_image[$w] = $phase_image_num + 1;
                    }
                }
                $today = date("Y-m-d");
                $tomorrow = date('Y-m-d', time() + 86400);
                // Для Сегодня
                $moon_phase = $phase_image[$moons[$today]['w']];
                if ($moon_phase == 1) {
                    $rost_moon = "Новолуние";
                }
                if ($moon_phase > 1 && $moon_phase < 5) {
                    $rost_moon = "Луна Растущая";
                }
                if ($moon_phase == 1) {
                    $rost_moon = "Полнолуние";
                }
                if ($moon_phase > 5) {
                    $rost_moon = "Луна Убывающая";
                }
                $rost_moon_tomorrow = '';
                $blago_moon_tomorrow = '';
                // Для Завтра
                $moon_phase_tomorrow = $phase_image[$moons[$today]['w'] + 1];
                if ($moon_phase_tomorrow == 1) {
                    $rost_moon_tomorrow = "Новолуние";
                }
                if ($moon_phase_tomorrow > 1 && $moon_phase_tomorrow < 5) {
                    $rost_moon = "Луна Растущая";
                }
                if ($moon_phase_tomorrow == 5) {
                    $rost_moon_tomorrow = "Полнолуние";
                }
                if ($moon_phase_tomorrow > 5) {
                    $rost_moon_tomorrow = "Луна Убывающая";
                }
                // Для Сегодня
                if ($moons[$today]['blago'] == 1) {
                    $blago_moon = "<span style=\"color:#090;font-size:16px;\">Благоприятный день для стрижки</span>";
                }
                if ($moons[$today]['blago'] == 2) {
                    $blago_moon = "<span style=\"color:#c00;font-size:16px;\">Неблагоприятный день для стрижки</span>";
                }
                // Для Завтра
                if ($moons[$tomorrow]['blago'] == 1) {
                    $blago_moon_tomorrow = "<span style=\"color:#090;font-size:16px;\">Благоприятный день для стрижки</span>";
                }
                if ($moons[$tomorrow]['blago'] == 2) {
                    $blago_moon_tomorrow = "<span style=\"color:#c00;font-size:16px;\">Неблагоприятный день для стрижки</span>";
                }
                $today_box = '
                <div align="center">
                    <div class="today_box">
                        <div class="today_up">
                            <div id="moon_today" class="today_day today_active">Сегодня</div>
                            <div id="moon_tomorrow" class="today_day">Завтра</div>
                            <div style="clear:both;"></div>
                        </div>
				    <div id="today_block">
				        <div class="today_info">
					        <div class="today_moon">
					            <img src="/bw15/images/moon/phase_' . $phase_image[$moons[$today]['w']] . '.png" width="150">
					        </div>
					        <div class="today_moon_info">
						        <span style="font-size:16px;"><strong>Дата:</strong> ' . $moons[$today]['moon_date'] . ' (' . $moons[$today]['moon_weekday'] . ')</span><br />
                                ' . $moons[$today]['moon_day'] . ' лунный день<br />
                                <strong>' . $rost_moon . '</strong><br />
                                Луна в знаке ' . $moons[$today]['moon_zodiak'] . '<br />
                                <strong>' . $blago_moon . '</strong>
					</div>
					<div style="clear:both;"></div>
				</div>
				</div>
				<div id="tomorrow_block">
				    <div class="today_info">
					    <div class="today_moon"><img src="/bw15/images/moon/phase_' . $phase_image[$moons[$tomorrow]['w']] . '.png" width="150"></div>
					        <div class="today_moon_info">
						        <span style="font-size:16px;"><strong>Дата:</strong> ' . $moons[$tomorrow]['moon_date'] . ' (' . $moons[$tomorrow]['moon_weekday'] . ')</span><br />
						' . $moons[$tomorrow]['moon_day'] . ' лунный день<br />
						<strong>' . $rost_moon_tomorrow . '</strong><br />
						Луна в знаке ' . $moons[$tomorrow]['moon_zodiak'] . '<br />
						<strong>' . $blago_moon_tomorrow . '</strong>
					</div>
					<div style="clear:both;"></div>
				</div>
				</div>
			</div>
			<script>

			</script>
			</div>';
                $post->full = str_replace("[today]", $today_box, $post->full);
            }
        }
    }