public function actionIndex() { // проверяем передали ли нам месяц и год if (isset($_GET["ym"])) { $year = (int) substr($_GET["ym"], 0, 4); $month = (int) substr($_GET["ym"], 4, 2); $copyMonth = $month; // Копируем исходное значение месяца для ссылки, в блоке comment_day //$dayEnd = date("t", ); } else { // иначе выводить текущие месяц и год $month = date("m", mktime(0, 0, 0, date('m'), 1, date('Y'))); $year = date("Y", mktime(0, 0, 0, date('m'), 1, date('Y'))); $copyMonth = $month; // Копируем исходное значение месяца для ссылки, в блоке comment_day $month *= 1; // делаем формат даты месяца без 0 в переди } $skip = date("w", mktime(0, 0, 0, $month, 1, $year)) - 1; // узнаем номер дня недели if ($skip < 0) { $skip = 6; } $daysInMonth = date("t", mktime(0, 0, 0, $month, 1, $year)); // узнаем число дней в месяце $vstrechi = array(); // Переменные содержат массив даты звонков и встреч $zvonki = array(); //Запрос к бд , взять встречи и звонки с клиентами $model = Mainclientstable::model()->findAllBySql("SELECT * FROM {{mainclientstable}} WHERE DATE_FORMAT(pozvoniti, '%Y-%c') = '" . $year . "-" . $month . "' OR DATE_FORMAT(dataConsultacii, '%Y-%c') = '" . $year . "-" . $month . "'"); $s = 1; // Встреча по счету $s2 = 1; // Звонок по счету foreach ($model as $client) { if (substr($client->dataConsultacii, 5, 2) == $month) { $date_vstr = substr($client->dataConsultacii, 8); //$dd[] = $date_vstr; $date_vstr = $date_vstr * 1; $vstrechi[$date_vstr][$s] = array('id' => $client->id, 'name' => $client->name); $s++; } if (substr($client->pozvoniti, 5, 2) == $month) { $date_zvonka = substr($client->pozvoniti, 8); $dd2[] = $client->pozvoniti; $date_zvonka = $date_zvonka * 1; $zvonki[$date_zvonka][$s2] = array('id' => $client->id, 'name' => $client->name); $s2++; } } asort($vstrechi); // Сортируем массивы дат по возрастанию asort($zvonki); /* echo "Vstrechi: "; var_dump($dd); echo '<br>'; var_dump($vstrechi); echo 'Zvonki: '; var_dump($dd2); echo "<br>"; var_dump($zvonki); */ $calendar_head = ''; // обнуляем calendar $calendar_body = ''; // обнуляем calendar body $day = 1; // для цикла далее будем увеличивать значение for ($i = 0; $i < 6; $i++) { // Внешний цикл для недель 6 с неполыми $calendar_body .= '<tr>'; // открываем тэг строки for ($j = 0; $j < 7; $j++) { // Внутренний цикл для дней недели if ($zvonki[$day] || $vstrechi[$day]) { $block_note = '<div class="comment_day">'; $copyDay = $day < 10 ? '0' . $day : $day; if ($zvonki[$day]) { $block_note .= '<b><a href="' . Yii::app()->request->baseUrl . '/index.php?r=mainclientstable/index&cartsDate=' . $year . '-' . $copyMonth . '-' . $copyDay . '">Звонков: </b>' . count($zvonki[$day]) . '</a><br>'; } if ($vstrechi[$day]) { $block_note .= '<b><a href="' . Yii::app()->request->baseUrl . '/index.php?r=mainclientstable/index&cartsDate=' . $year . '-' . $copyMonth . '-' . $copyDay . '">Встреч: </b>' . count($vstrechi[$day]) . '</a>'; } $block_note .= '</div>'; } if ($skip > 0 or $day > $daysInMonth) { // выводим пустые ячейки до 1 го дня ип после полного количства дней $calendar_body .= '<td class="none"> </td>'; $skip--; } else { if ($j == 6) { // если воскресенье то омечаем выходной if ($zvonki[$day]) { $calendar_body .= '<td class="holiday zvonki">' . $day . '<br>' . $block_note . '</td>'; } else { if ($vstrechi[$day]) { $calendar_body .= '<td class="holiday vstrechi">' . $day . '<br>' . $block_note . '</td>'; } else { // Пустой день $calendar_body .= '<td class="holiday">' . $day . '</td>'; } } } else { // в противном случае просто выводим день в ячейке if (date(j) == $day && date(m) == $month && date(Y) == $year) { //проверяем на текущий день //День сегодняшний if ($zvonki[$day] || $vstrechi) { $calendar_body .= '<td class="today zvonki">' . $day . '<br>' . $block_note . '</td>'; } else { if ($vstrechi[$day]) { $calendar_body .= '<td class="today vstrechi">' . $day . '<br>' . $block_note . '</td>'; } else { $calendar_body .= '<td class="today">' . $day . '</td>'; } } } else { // День другой if ($zvonki[$day]) { $calendar_body .= '<td class="day zvonki">' . $day . '<br>' . $block_note . '</td>'; } else { if ($vstrechi[$day]) { $calendar_body .= '<td class="day vstrechi">' . $day . '<br>' . $block_note . '</td>'; } else { // Пустой день $calendar_body .= '<td class="day">' . $day . '</td>'; } } } } $day++; // увеличиваем $day } } $calendar_body .= '</tr>'; // закрываем тэг строки } $trans = array("January" => "ЯНВАРЬ", "February" => "ФЕВРАЛЬ", "March" => "МАРТ", "April" => "АПРЕЛЬ", "May" => "МАЙ", "June" => "ИЮНЬ", "July" => "ИЮЛЬ", "August" => "АВГУСТ", "September" => "СЕНТЯБРЬ", "October" => "ОКТЯБРЬ", "November" => "НОЯБРЬ", "December" => "ДЕКАБРЬ"); $month_name = date("F", mktime(0, 0, 0, $month, 1, $year)); $rus_month_name = strtr($month_name, $trans); // заголовок календаря $calendar_head = '<tr class="headerTopCalAll">' . '<th colspan="1"><a href="index.php?r=calendar/index&ym=' . date("Ym", mktime(0, 0, 0, $month - 1, 1, $year)) . '">« Пред</a></th>' . '<th colspan="5">' . strtr($month_name, $trans) . ' ' . date("Y", mktime(0, 0, 0, $month, 1, $year)) . '</th>' . '<th colspan="1"><a href="index.php?r=calendar/index&ym=' . date("Ym", mktime(0, 0, 0, $month + 1, 1, $year)) . '">След »</a></th>' . '</tr><tr>' . '<th class="headerBottom">Понедельник</th>' . '<th class="headerBottom">Вторник</th>' . '<th class="headerBottom">Среда</th>' . '<th class="headerBottom">Четверг</th>' . '<th class="headerBottom">Пятница</th>' . '<th class="headerBottom">Суббота</th>' . '<th class="headerBottom">Воскресенье</th>' . '</tr>'; $this->render('index', array('calendar_body' => $calendar_body, 'calendar_head' => $calendar_head)); }
/** * Returns the data model based on the primary key given in the GET variable. * If the data model is not found, an HTTP exception will be raised. * @param integer $id the ID of the model to be loaded * @return Mainclientstable the loaded model * @throws CHttpException */ public function loadModel($id) { $model = Mainclientstable::model()->findByPk($id); if ($model === null) { throw new CHttpException(404, 'Данная страница отсутсвует'); } return $model; }