Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP
Войти
Регистрация
Восстановить пароль
 
DenTheBeast
0 / 0 / 0
Регистрация: 28.03.2016
Сообщений: 21
#1

Неправильно выводятся Дни Рождения сотрудников

01.02.2017, 11:54. Просмотров 213. Ответов 3
Метки php (Все метки)

Есть сайт на wordpress, есть плагин birthday-widget, где файл class-birthdays-widget.php отвечает за вывод списка именинников. Наблюдается такая ошибка, что если сегодня есть у кого ДР, то он начинает выводить коряво (скрин приложен), а если сегодня нет ни у кого ДР, то выводит правильно.
В чем может быть ошибка при выводе?
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
wp_enqueue_script( 'jquery-ui-tooltip' );
                    wp_enqueue_script( 'birthdays-script' );
                    wp_enqueue_style ( 'jquery-style' );
                    $days_organized = self::organize_days( $filtered );
                    //TODO get current day in format MM-DD
                    $today_key = date( 'm-d' );
                    $upcoming_days = $birthdays_settings[ 'upcoming_days_birthdays' ];
                    $consecutive_days = $birthdays_settings[ 'upcoming_consecutive_days' ];
                    $upcoming_mode = $birthdays_settings[ 'upcoming_mode' ];
                    /* If today is not in the array, add the key and sort the array again */
                    if ( ! array_key_exists( $today_key, $days_organized ) ) {
                        $days_organized[ $today_key ] = array();
                        ksort( $days_organized );
                    }
                    /* Find the current day in the array, then iterate to it */
                    $offset = array_search( $today_key, array_keys( $days_organized ) );
                    for ( $i = 0; $i < $offset; $i++ ) {
                        next( $days_organized );
                    }
                    //var_dump( $days_organized );
                    /* Now show the number of days user desires */
                    $final_days = array();
                    $not_empty = false;
                    if ( $upcoming_mode ) {
                        $today = DateTime::createFromFormat( 'm-d', $today_key );
                        for ( $i = 0; $i < $consecutive_days; $i++ ) {
                            $today->add( new DateInterval( 'P1D' ) );
                            $tmp_day = $today->format( 'm-d' );
                            if ( ! array_key_exists( $tmp_day, $days_organized ) ) {
                                $days_organized[ $tmp_day ] = array();
                            }
                        }
                        ksort( $days_organized );
                        $offset = array_search( $today_key, array_keys( $days_organized ) );
                        for ( $i = 0; $i < $offset; $i++ ) {
                            next( $days_organized );
                        }
                        $tmp_count = $offset;
                        $total = count( $days_organized );
                        for ( $i = 0; $i < $consecutive_days; $i++ ) {
                            $final_days[] = current( $days_organized );
                            next( $days_organized );
                            $tmp_count++;
                            if ( current( $days_organized ) == false && ( $tmp_count == $total ) ) {
                                reset( $days_organized );
                                $tmp_count = 0;
                            }
                        }
                    } else {
                        $tmp_count = $offset;
                        $total = count( $days_organized );
                        for ( $i = 0; $i < $upcoming_days; $i++ ) {
                            if( ( current( $days_organized ) == false ) && ( $tmp_count == $total ) ) {
                                reset( $days_organized );
                                $tmp_count = 0;
                            } elseif( ( current( $days_organized ) == false ) && $i == 0 ) {
                                $tmp_count++;
                                if ( $tmp_count == $total ) {
                                    reset( $days_organized );
                                    $final_days[] = current( $days_organized );
                                    next( $days_organized );
                                    $tmp_count = 1;
                                    continue;
                                }
                                next( $days_organized );
                            }
                            if ( $tmp_count == $offset && $i != 0 ) {
                                break;
                            }
                            $final_days[] = current( $days_organized );
                            next( $days_organized );
                            $tmp_count++;
                        }
                    }
                    foreach( $final_days as $day ) {
                        if ( !empty( $day ) ) {
                            $not_empty = true;
                            break;
                        }
                    }
                    if ( !$not_empty ) {
                        if ( $birthdays_settings[ 'empty_response' ] ) {
                            $html = '<div class="birthday_error">';
                            $html .= $birthdays_settings[ 'empty_response_text' ];
                            $html .= '</div>';
                            return $html;
                        } else {
                            return;
                        }
                    } else {
                        $year_passed = false;
                        $format = get_option( 'date_format' );
                        $format = str_replace( 'Y', '', $format );
                        $today = new DateTime( "today" );
                        $year = date( 'Y' );
                        foreach ( $final_days as $day ) {
                            if ( !$day )
                                continue;
                            uasort( $day, "cmp" );
                            $html_date = date_i18n( $format, $day[ 0 ]->date );
                            $html_date = self::remove_empty( $html_date );
                            $date1 = new DateTime( date( 'j-m', $day[ 0 ]->date ). '-' .$year );
                            if ( $birthdays_settings[ 'upcoming_year_seperate' ] && !$year_passed ) {
                                if ( $date1 < $today && $date1 != $today ) {
                                    $tmp = $year + 1;
                                    $html .= '<div class="birthday_year" >'. __( 'Year' ) . ' ' . $tmp . '</div>';
                                    $year_passed = true;
                                }
                            }
                            if ( $birthdays_settings[ 'upcoming_year' ] ) {
                                if ( $date1 < $today ) {
                                    $year += 1;
                                }
                                $html_date .= '&nbsp;<span class="birthday_upcoming_year">' . $year . '</span>';
                            }
                            $html .= '<div class="birthday_date" >' . $html_date . '</div>';
                            $flag = false;
                            foreach ( $day as $row ) {
                                $html .= '<div class="birthday_element birthday_name">';
                                if ( $flag && $birthdays_settings[ 'comma' ] ) {
                                    $html .= ', ';
                                } else {
                                    $flag = true;
                                }
                                if ( isset( $row->link ) ) {
                                    $html .= $row->link;
                                } else {
                                    $html .= $row->name;
                                }
                                $age = date( "Y" ) - date( "Y", $row->date );
                                if ( $birthdays_settings[ 'user_image_enabled' ] ) {
                                    $html .= '<a href="' . $row->image . '" target="_blank" class="user_image_enabled" ';
                                } else {
                                    $html .= '<a href="#" target="_blank" ';
                                }
                                if( $birthdays_settings[ 'user_verbiage' ] ) {
                                    $html .= 'data-age="' . $age . ' ' . $birthdays_settings[ 'user_verbiage_text' ] . '" ';
                                }
                                $html .= '></a></div>';
                            }
                        }
                    }
0
Миниатюры
Неправильно выводятся Дни Рождения сотрудников  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.02.2017, 11:54
Ответы с готовыми решениями:

Неправильно выводятся страницы
Всем привет! Я в сайтостроении новичок. Не могу решить пробшему. Сайт написан на php, html и css....

Неправильно выводятся данные через printf
Здрасте! Имеется БД с полями id, Nick, Pass Хочу вывести на экран инфу из всех полей с id2....

Запрос. Дни Рождения сотрудников в ближайшие 3 дня
Добрый день. Необходимо решить задачу. &quot;При старте системы нужно сообщать сотрудников, у которых...

Дни рождения
Написать программу, пердупреждающую о днях рождениях друзей, желательно с подсказками ...

Дни рождения
Здравствуйте, помогите организовать оповещения о днях рождения. БД сделано в access.. как примерно...

3
Para bellum
Эксперт PHP
4032 / 3007 / 958
Регистрация: 06.01.2011
Сообщений: 8,827
01.02.2017, 13:29 #2
Цитата Сообщение от DenTheBeast Посмотреть сообщение
начинает выводить коряво (скрин приложен)
А что коряво? И как должно быть?
0
DenTheBeast
0 / 0 / 0
Регистрация: 28.03.2016
Сообщений: 21
01.02.2017, 13:33  [ТС] #3
В изображении видно: что так как сегодня есть ДР у людей, то он остальные дни рождения в этом месяце пропускает и выводит в других месяцах рандомно. А должен выводить на каждый день как обычно.
0
DenTheBeast
0 / 0 / 0
Регистрация: 28.03.2016
Сообщений: 21
02.02.2017, 14:31  [ТС] #4
Ошибки нет, условия не хватает - только не пойму какого.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.02.2017, 14:31

Дни рождения - 2
Вася снова составляет календарь дней рождения своих одноклассников. Теперь, зная месяц, он хочет...

Дни рождения
Какова вероятность того что из R людей хотя бы у двух совпадут дни рождения?29февраля не учитывать...

Дни Рождения В Представление Calendar
Есть форма А1 с полем даты рождения DataRoj. Как сдлать так чтобы в представлении Style:Calendar...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru