/protected/controllers/HolidayController.php

https://bitbucket.org/markmoskalenko/svitor · PHP · 178 lines · 141 code · 31 blank · 6 comment · 32 complexity · a67c1e15dca302ea85c84b414b22cc0b MD5 · raw file

  1. <?php
  2. class HolidayController extends AppController
  3. {
  4. public $defaultAction = 'index';
  5. public $layout = 'planning';
  6. public $upbox_title = '';
  7. public function actionIndex()
  8. {
  9. if (User::isGuest())
  10. $this->redirect('/user/login/');
  11. if (mApi::getFunType() != 1)
  12. $this->redirect('/dashboard/');
  13. Yii::app()->name = 'Торжества - '.Yii::app()->name;
  14. $data = UserHolidays::model()->findAllByAttributes(array('uid' => User::getId()), array('order' => 'date ASC'));
  15. $this->render('index', array(
  16. 'data' => $data
  17. ));
  18. }
  19. public function actionSelect()
  20. {
  21. $this->upbox_title = 'Выберите торжество';
  22. $this->layout = 'upbox';
  23. if (User::isGuest())
  24. $this->redirect('/user/login/');
  25. $data = UserHolidays::model()->findAllByAttributes(array('uid' => User::getId()), array('order' => 'date ASC'));
  26. $this->render('select', array('data' => $data));
  27. }
  28. public function actionAdd()
  29. {
  30. if (User::isGuest() || mApi::getFunType() != 1)
  31. Yii::app()->end();
  32. $this->upbox_title = 'Новое торжество';
  33. $this->layout = 'upbox';
  34. $holiday = new UserHolidays('add');
  35. if (isset($_POST['UserHolidays']))
  36. {
  37. $holiday->attributes = $_POST['UserHolidays'];
  38. $holiday->uid = User::getId();
  39. if ($holiday->validate())
  40. {
  41. $date = explode('.', $holiday->date);
  42. $holiday->date = mktime(00, 00, 00, $date[1], $date[0], $date[2]);
  43. if ($holiday->date <= time())
  44. {
  45. $holiday->addError('date', 'Дата должна быть старше текущей');
  46. echo CHtml::errorSummary($holiday);
  47. }
  48. if (!$holiday->hasErrors() && $holiday->save(false))
  49. {
  50. // Создаем сайт торжества
  51. $usite = new UserSite('add');
  52. $usite['uid'] = User::getId();
  53. $usite['title'] = $holiday->title;
  54. $usite['holiday_id'] = $holiday->id;
  55. $usite['date'] = $holiday->date;
  56. $usite->save();
  57. // Заполнение категорий (из category_miniature)
  58. $criteria = new CDbCriteria;
  59. $criteria->condition = '(fun_type = "holiday" OR fun_type = "multi") AND show_in_vendors = 1';
  60. $categories = CategoryMiniatures::model()->findAll($criteria);
  61. if (!empty($categories))
  62. {
  63. foreach ($categories as $category)
  64. {
  65. if (empty($category['title']) || empty($category['name']) || empty($category['icon']))
  66. continue;
  67. $cat = new UserVendorCategories('add');
  68. $cat['name'] = $category->name;
  69. $cat['title'] = $category->title;
  70. $cat['icon'] = $category->icon;
  71. $cat['cat_link'] = $category->cat_link;
  72. $cat['uid'] = User::getId();
  73. $cat['holiday_id'] = $holiday->id;
  74. $cat->save(false);
  75. }
  76. }
  77. echo 'ok';
  78. }
  79. }
  80. else
  81. {
  82. echo CHtml::errorSummary($holiday);
  83. }
  84. }
  85. else
  86. {
  87. $this->render('_form', array(
  88. 'holiday' => $holiday
  89. ));
  90. }
  91. }
  92. public function actionEdit($id = 0)
  93. {
  94. if (User::isGuest() || mApi::getFunType() != 1)
  95. Yii::app()->end();
  96. $this->upbox_title = 'Редактирование торжества';
  97. $this->layout = 'upbox';
  98. $id = intval($id);
  99. if (empty($id))
  100. Yii::app()->end();
  101. $holiday = UserHolidays::model()->findByAttributes(array('uid' => User::getId(), 'id' => $id));
  102. if (empty($holiday))
  103. Yii::app()->end();
  104. if (isset($_POST['UserHolidays']))
  105. {
  106. $check_willdate = true;
  107. $old_date = date('d.m.Y', $holiday->date);
  108. $holiday->scenario = 'edit';
  109. $holiday->attributes = $_POST['UserHolidays'];
  110. if ($holiday->validate())
  111. {
  112. // Если дата не изменилась, то НЕ проверяем ее (дата должна быть > текущей)
  113. // потому что дата может быть == текущей (просто наступил этот день)
  114. if ($old_date == $holiday->date)
  115. $check_willdate = false;
  116. $date = explode('.', $holiday->date);
  117. $date = mktime(00, 00, 00, $date[1], $date[0], $date[2]);
  118. if ($check_willdate && $date <= time())
  119. {
  120. $holiday->addError('date', 'Дата должна быть старше текущей');
  121. echo CHtml::errorSummary($holiday);
  122. }
  123. $holiday->date = $date;
  124. if (!$holiday->hasErrors() && $holiday->save(false))
  125. echo 'ok';
  126. // Обновим название сайта, в соответствии с названием торжества
  127. UserSite::model()->updateAll(array('title' => $holiday->title, 'date' => $holiday->date), 'uid = '.User::getId().' AND holiday_id = '.$holiday->id);
  128. // Если редактировалось активное торжество, то после сохранения обновим данные в сессии
  129. $active_holiday = mApi::getHoliday();
  130. if (!empty($active_holiday) && $active_holiday->id == $holiday->id)
  131. {
  132. Yii::app()->user->setState('holiday', $holiday);
  133. }
  134. }
  135. else
  136. {
  137. echo CHtml::errorSummary($holiday);
  138. }
  139. }
  140. else
  141. {
  142. $this->render('_form', array(
  143. 'holiday' => $holiday
  144. ));
  145. }
  146. }
  147. }