Guest User

Untitled

a guest
May 26th, 2018
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.97 KB | None | 0 0
  1. /**
  2. * Разделение акциий на актуальные и предстоящие а также создает информацию для архива
  3. * @param array $offers
  4. * @return array
  5. */
  6. private function _upgradeOffers( $offers, $offerID = null ){
  7. if ( false === empty($offerID) ){
  8. return array( $offers, null, null );
  9. }
  10.  
  11. if ( $offers == null ) {
  12. return array( null, null, null );
  13. }
  14.  
  15.  
  16. $day = mktime(0, 0, 0, date('m'), date('d'), date('y'));
  17. $years = array();
  18. $actual_offers = array();
  19. $soon_offers = array();
  20.  
  21. foreach ( $offers as $offer ){
  22. # парсим актуальные акции
  23. if ( ( $offer['begin_ts'] <= $day) && ( $offer['end_ts'] >= $day) ){
  24. $actual_offers[] = $offer;
  25. }
  26. # парсим предстоящие акции
  27. elseif ( $offer['begin_ts'] > $day) {
  28. if ( false == isAdministrator() ){
  29. if ( round( ( strtotime( date('d', $offer['begin_ts']).".".date('m', $offer['begin_ts']).".".date('Y', $offer['begin_ts'])) - NOW)/60*60*24 ) < 30 ){
  30. $soon_offers[] = $offer;
  31. }
  32. }
  33. else {
  34. $soon_offers[] = $offer;
  35. }
  36. }
  37. # заносим в архив
  38. else { #dbg($offer);
  39. # считаем количество лет между датами
  40. $count_year = date('Y', $offer['end_ts']) - date("Y", $offer['begin_ts']);
  41. #dbg(date('d-m-Y', $offer['begin_ts'])." : ".date('d-m-Y', $offer['end_ts'])." ".$offer['name']." : ".$offer['title']);
  42.  
  43. # узнаем наличие акции в определенном месяце
  44. for ($i=0; $i <= $count_year; $i++) {
  45. # обновляем год в массиве лет
  46. #if ( false === in_array( date('Y', $offer['end_ts'] ), $years ) ){
  47. #dbg($years);
  48. if ( true === empty( $years[date('Y', $offer['begin_ts'] ) + $i] ) ) {
  49. #dbg("Новый год! - " . date('Y', $offer['begin_ts'] + $i ));
  50. $years[ date('Y', $offer['begin_ts'] ) + $i ] = array( '1'=>'0', '2'=>'0', '3'=>'0', '4'=>'0', '5'=>'0', '6'=>'0', '7'=>'0', '8'=>'0', '9'=>'0', '10'=>'0', '11'=>'0', '12'=>'0');
  51. }
  52.  
  53. # находим индексы месяцев для этого года
  54.  
  55. # если месяцы в одном году
  56. if ($count_year == 0) {
  57. if ( date('m', $offer['begin_ts']) == date('m', $offer['end_ts']) )
  58. $count_month = 0;
  59. else
  60. $count_month = date('m', $offer['end_ts']) - date('m',$offer['begin_ts']);
  61. for ($k = 0; $k <= $count_month; $k++){
  62. #echo "увеличиваем [" . (date('Y', $offer['begin_ts']))."][".(date('m', $offer['begin_ts'] ) + $k)."]<br>";
  63. $years[ date('Y', $offer['begin_ts'] ) + $i ][ date('m', $offer['begin_ts'] ) + $k ]++ ;
  64. }
  65. }
  66. # если это начальный год
  67. elseif ( $i == 0){
  68. for ($k = (integer)(date('m', $offer['begin_ts'] )); $k <= 12; $k++){
  69. #echo "увеличиваем [" . (date('Y', $offer['begin_ts']))."][".$k."]<br>";
  70. $years[ date('Y', $offer['begin_ts'] ) ][ $k ]++ ;
  71. }
  72. }
  73. # если это конечный год
  74. elseif ( $i == $count_year ){
  75. for ($k = 1; $k <= date('m', $offer['end_ts'] ); $k++){
  76. #echo "увеличиваем [" . (date('Y', $offer['begin_ts'] ) + $i)."][".$k."]<br>";
  77. $years[ date('Y', $offer['begin_ts'] ) + $i ][ $k ]++ ;
  78. }
  79. }
  80. # если это промежуточный год
  81. else {
  82. for ($k = 1; $k <= 12; $k++){
  83. #echo "увеличиваем [" . (date('Y', $offer['begin_ts'] ) + $i)."][".$k."]<br>";
  84. $years[ date('Y', $offer['begin_ts'] ) + $i ][ $k ]++ ;
  85. }
  86. }
  87. }
  88. }
  89. }#dbg($years);
  90. return array( $actual_offers, $soon_offers, $years );
  91. }
  92.  
  93. /**
  94. * Извлечение архивных акций по году и месяцу
  95. * @param array $offers
  96. * @param integer $year
  97. * @param integer $month
  98. * @return array
  99. */
  100. private function _upgradeArchiveOffers( $offers, $year, $month ){
  101. if ( $offers == null ) {
  102. return null;
  103. }
  104.  
  105. loadHelper('date');
  106. $day = mktime(0, 0, 0, date('m'), date('d'), date('y'));
  107. $result = array();
  108. # проходимся по всем акциям
  109. foreach ( $offers as $offer ){
  110. $begin_year = date('Y', $offer['begin_ts'] );
  111. $end_year = date('Y', $offer['end_ts'] );
  112.  
  113. $begin_month = date('m', $offer['begin_ts'] );
  114. $end_month = date('m', $offer['end_ts'] );
  115.  
  116. # если акция уже закончилась
  117. if ( ( $offer['end_ts'] < $day) ){
  118. # если искомый год между годами
  119. if ( ( date('Y', $offer['begin_ts'] ) < $year ) &&
  120. ( date('Y', $offer['end_ts'] ) > $year ) ){
  121. $result[] = $offer;
  122. }
  123. # если искомый год, начальный и конечный год равны
  124. elseif ( ( date('Y', $offer['begin_ts'] ) == date('Y', $offer['end_ts'] ) ) &&
  125. ( date('Y', $offer['begin_ts'] ) == $year ) ){
  126. # если искомый месяц между месяцами
  127. if ( ( date('m', $offer['begin_ts'] ) < $month ) &&
  128. ( date('m', $offer['end_ts'] ) > $month ) ){
  129. $result[] = $offer;
  130. }
  131. # если искомый месяц равен какому либо из месяцев
  132. elseif ( ( date('m', $offer['begin_ts'] ) == $month ) ||
  133. ( date('m', $offer['end_ts'] ) == $month ) ){
  134. $result[] = $offer;
  135. }
  136. }
  137. # если искомый и начальный год равны
  138. elseif ( date('Y', $offer['begin_ts'] ) == $year ){
  139. # если искомый месяц больше либо равен начальному месяцу
  140. if ( date('m', $offer['begin_ts'] ) <= $month ){
  141. $result[] = $offer;
  142. }
  143. }
  144. # если искомый и конечный год равны
  145. elseif ( date('Y', $offer['end_ts'] ) == $year ){
  146. # если искомый месяц меньше либо равен конечному месяцу
  147. if ( date('m', $offer['end_ts'] ) >= $month ){
  148. $result[] = $offer;
  149. }
  150. }
  151.  
  152. }
  153. }
  154. return $result;
  155. }
  156. }
Add Comment
Please, Sign In to add comment