Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * Разделение акциий на актуальные и предстоящие а также создает информацию для архива
- * @param array $offers
- * @return array
- */
- private function _upgradeOffers( $offers, $offerID = null ){
- if ( false === empty($offerID) ){
- return array( $offers, null, null );
- }
- if ( $offers == null ) {
- return array( null, null, null );
- }
- $day = mktime(0, 0, 0, date('m'), date('d'), date('y'));
- $years = array();
- $actual_offers = array();
- $soon_offers = array();
- foreach ( $offers as $offer ){
- # парсим актуальные акции
- if ( ( $offer['begin_ts'] <= $day) && ( $offer['end_ts'] >= $day) ){
- $actual_offers[] = $offer;
- }
- # парсим предстоящие акции
- elseif ( $offer['begin_ts'] > $day) {
- if ( false == isAdministrator() ){
- if ( round( ( strtotime( date('d', $offer['begin_ts']).".".date('m', $offer['begin_ts']).".".date('Y', $offer['begin_ts'])) - NOW)/60*60*24 ) < 30 ){
- $soon_offers[] = $offer;
- }
- }
- else {
- $soon_offers[] = $offer;
- }
- }
- # заносим в архив
- else { #dbg($offer);
- # считаем количество лет между датами
- $count_year = date('Y', $offer['end_ts']) - date("Y", $offer['begin_ts']);
- #dbg(date('d-m-Y', $offer['begin_ts'])." : ".date('d-m-Y', $offer['end_ts'])." ".$offer['name']." : ".$offer['title']);
- # узнаем наличие акции в определенном месяце
- for ($i=0; $i <= $count_year; $i++) {
- # обновляем год в массиве лет
- #if ( false === in_array( date('Y', $offer['end_ts'] ), $years ) ){
- #dbg($years);
- if ( true === empty( $years[date('Y', $offer['begin_ts'] ) + $i] ) ) {
- #dbg("Новый год! - " . date('Y', $offer['begin_ts'] + $i ));
- $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');
- }
- # находим индексы месяцев для этого года
- # если месяцы в одном году
- if ($count_year == 0) {
- if ( date('m', $offer['begin_ts']) == date('m', $offer['end_ts']) )
- $count_month = 0;
- else
- $count_month = date('m', $offer['end_ts']) - date('m',$offer['begin_ts']);
- for ($k = 0; $k <= $count_month; $k++){
- #echo "увеличиваем [" . (date('Y', $offer['begin_ts']))."][".(date('m', $offer['begin_ts'] ) + $k)."]<br>";
- $years[ date('Y', $offer['begin_ts'] ) + $i ][ date('m', $offer['begin_ts'] ) + $k ]++ ;
- }
- }
- # если это начальный год
- elseif ( $i == 0){
- for ($k = (integer)(date('m', $offer['begin_ts'] )); $k <= 12; $k++){
- #echo "увеличиваем [" . (date('Y', $offer['begin_ts']))."][".$k."]<br>";
- $years[ date('Y', $offer['begin_ts'] ) ][ $k ]++ ;
- }
- }
- # если это конечный год
- elseif ( $i == $count_year ){
- for ($k = 1; $k <= date('m', $offer['end_ts'] ); $k++){
- #echo "увеличиваем [" . (date('Y', $offer['begin_ts'] ) + $i)."][".$k."]<br>";
- $years[ date('Y', $offer['begin_ts'] ) + $i ][ $k ]++ ;
- }
- }
- # если это промежуточный год
- else {
- for ($k = 1; $k <= 12; $k++){
- #echo "увеличиваем [" . (date('Y', $offer['begin_ts'] ) + $i)."][".$k."]<br>";
- $years[ date('Y', $offer['begin_ts'] ) + $i ][ $k ]++ ;
- }
- }
- }
- }
- }#dbg($years);
- return array( $actual_offers, $soon_offers, $years );
- }
- /**
- * Извлечение архивных акций по году и месяцу
- * @param array $offers
- * @param integer $year
- * @param integer $month
- * @return array
- */
- private function _upgradeArchiveOffers( $offers, $year, $month ){
- if ( $offers == null ) {
- return null;
- }
- loadHelper('date');
- $day = mktime(0, 0, 0, date('m'), date('d'), date('y'));
- $result = array();
- # проходимся по всем акциям
- foreach ( $offers as $offer ){
- $begin_year = date('Y', $offer['begin_ts'] );
- $end_year = date('Y', $offer['end_ts'] );
- $begin_month = date('m', $offer['begin_ts'] );
- $end_month = date('m', $offer['end_ts'] );
- # если акция уже закончилась
- if ( ( $offer['end_ts'] < $day) ){
- # если искомый год между годами
- if ( ( date('Y', $offer['begin_ts'] ) < $year ) &&
- ( date('Y', $offer['end_ts'] ) > $year ) ){
- $result[] = $offer;
- }
- # если искомый год, начальный и конечный год равны
- elseif ( ( date('Y', $offer['begin_ts'] ) == date('Y', $offer['end_ts'] ) ) &&
- ( date('Y', $offer['begin_ts'] ) == $year ) ){
- # если искомый месяц между месяцами
- if ( ( date('m', $offer['begin_ts'] ) < $month ) &&
- ( date('m', $offer['end_ts'] ) > $month ) ){
- $result[] = $offer;
- }
- # если искомый месяц равен какому либо из месяцев
- elseif ( ( date('m', $offer['begin_ts'] ) == $month ) ||
- ( date('m', $offer['end_ts'] ) == $month ) ){
- $result[] = $offer;
- }
- }
- # если искомый и начальный год равны
- elseif ( date('Y', $offer['begin_ts'] ) == $year ){
- # если искомый месяц больше либо равен начальному месяцу
- if ( date('m', $offer['begin_ts'] ) <= $month ){
- $result[] = $offer;
- }
- }
- # если искомый и конечный год равны
- elseif ( date('Y', $offer['end_ts'] ) == $year ){
- # если искомый месяц меньше либо равен конечному месяцу
- if ( date('m', $offer['end_ts'] ) >= $month ){
- $result[] = $offer;
- }
- }
- }
- }
- return $result;
- }
- }
Add Comment
Please, Sign In to add comment