1###############################################################################
2# EventCalBirthdays.pm                                                        #
3# $Date: 12.02.14 $                                                           #
4###############################################################################
5# YaBB: Yet another Bulletin Board                                            #
6# Open-Source Community Software for Webmasters                               #
7# Version:        YaBB 2.6.11                                                 #
8# Packaged:       December 2, 2014                                            #
9# Distributed by: http://www.yabbforum.com                                    #
10# =========================================================================== #
11# Copyright (c) 2000-2014 YaBB (www.yabbforum.com) - All Rights Reserved.     #
12# Software by:  The YaBB Development Team                                     #
13#               with assistance from the YaBB community.                      #
14###############################################################################
15# use strict;
16#use warnings;
17#no warnings qw(uninitialized once redefine);
18use CGI::Carp qw(fatalsToBrowser);
19our $VERSION = '2.6.11';
20
21$eventcalbirthdayspmver = 'YaBB 2.6.11 $Revision: 1611 $';
22if ( $action eq 'detailedversion' ) { return 1; }
23
24LoadLanguage('EventCal');
25get_template('Bdaylist');
26
27sub birthdaylist {
28    if ( !$Show_BirthdaysList || ( $iamguest && $Show_BirthdaysList != 2 ) ) {
29        fatal_error('not_allowed');
30    }
31    $heute = $date;
32    my $toffs = 0;
33    if ($enabletz) {
34        $toffs = toffs($date);
35    }
36
37    ( $sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $dst ) =
38      gmtime( $heute + $toffs );
39    $year += 1900;
40    $mon       = $mon + 1;
41    $actualmon = $mon;
42    $actualday = $mday;
43    if ( $actualmon < 10 ) { $actualmon = "0$actualmon"; }
44    if ( $actualday < 10 ) { $actualday = "0$actualday"; }
45
46    timeformat($date);    # get only correct $mytimeselected
47
48    # GoTo begin
49
50    my $boxdays =
51qq~ <label for="selday"><span class="small">$var_cal{'calday'}</span></label>
52    <select class="input" name="selday" id="selday">
53    <option value="0">---</option>\n~;
54    for my $i ( 1 .. 31 ) {
55        my $sel = q{};
56        if ( $mday == $i && !$sel_day ) {
57            $sel = ' selected="selected"';
58        }
59        elsif ( $sel_day == $i ) {
60            $sel = ' selected="selected"';
61        }
62        $boxdays .=
63            q~      <option value="~
64          . sprintf( '%02d', $i )
65          . qq~"$sel>$i</option>\n~;
66    }
67    $boxdays .= '   </select>';
68
69    my $boxmonths =
70qq~ <label for="selmon"><span class="small">$var_cal{'calmonth'}</span></label>
71    <select class="input" name="selmon" id="selmon">\n~;
72    for my $i ( 1 .. 12 ) {
73        my $sel = q{};
74        if ( $mon == $i && !$sel_mon ) {
75            $sel = ' selected="selected"';
76        }
77        elsif ( $sel_mon == $i ) {
78            $sel = ' selected="selected"';
79        }
80        $boxmonths .=
81            q~      <option value="~
82          . sprintf( '%02d', $i )
83          . qq~"$sel>$i</option>\n~;
84    }
85    $boxmonths .= ' </select>';
86
87    my $gyears3 = $year - 3;
88    my $gyears2 = $year - 2;
89    my $gyears1 = $year - 1;
90    my $boxyears .=
91qq~ <label for="selyear"><span class="small">&nbsp;$var_cal{'calyear'}</span></label>
92    <select class="input" name="selyear" id="selyear">
93        <option value="$gyears3">$gyears3</option>
94        <option value="$gyears2">$gyears2</option>
95        <option value="$gyears1">$gyears1</option>\n~;
96    for my $i ( $year .. ( $year + 3 ) ) {
97        my $sel = q{};
98        if ( $year == $i && !$sel_year ) {
99            $sel = ' selected="selected"';
100        }
101        elsif ( $sel_year == $i ) {
102            $sel = ' selected="selected"';
103        }
104        $boxyears .= qq~        <option value="$i"$sel>$i</option>\n~;
105    }
106    $boxyears .= '  </select>';
107
108    my $calgotobox = qq~
109    <form action="$scripturl?action=eventcal;calshow=1;calgotobox=1" method="post">
110    <span class="small"><b>$var_cal{'calsubmit'}</b></span>~;
111
112    if ( $mytimeselected == 6 || $mytimeselected == 3 || $mytimeselected == 2 )
113    {
114        $calgotobox .= $boxdays . $boxmonths;
115    }
116    else {
117        $calgotobox .= $boxmonths . $boxdays;
118    }
119    $calgotobox .= qq~$boxyears
120    &nbsp; <input type="submit" name="Go" value="$var_cal{'calgo'}" />
121    </form>\n~;
122
123    # GoTo end
124
125    # Begin Birthdaylist
126
127    my $sortiert = $INFO{'sort'} || $FORM{'sort'};
128    my $letter   = lc $INFO{'letter'} || lc $FORM{'letter'};
129    $vmonth = $INFO{'vmonth'} || $FORM{'vmonth'};
130    # Begin Letter
131
132    if ( !$sortiert ) { $sortiert = 'sortdate'; }
133    my @abcde = ( 'a' .. 'z' );
134    my $letter_s = qq~
135<form method="post" action="$scripturl?action=birthdaylist">
136    <select size="1" name="letter" onchange="submit()" class="small" style="vertical-align: middle;">
137        <option value="">&nbsp;</option>
138        <option value="other">$var_cal{'other'}</option>~;
139    for my $i ( 0 .. ( @abcde - 1 ) ) {
140        $letter_s .= qq~        <option value="$abcde[$i]"$sel>$abcde[$i]</option>\n~;
141    }
142    $letter_s .=
143qq~    </select>
144    <input type="hidden" name="vmonth" value="$vmonth" />
145    <input type="hidden" name="sort" value="sortuser" />
146    <input type="submit" style="display:none" />
147</form>~;
148
149    ${"class_$sortiert"}     = ' class="selected-bg center"';
150    ${"styleletter_$letter"} = ' class="catbg center"';
151
152    if ( !$class_sortuser ) { $class_sortuser = ' class="catbg center"'; }
153    if ( !$class_sortage )  { $class_sortage  = ' class="catbg center"'; }
154    if ( !$class_sortstarsign ) {
155        $class_sortstarsign = ' class="catbg center"';
156    }
157    if ( !$class_sortdate ) { $class_sortdate = ' class="catbg center"'; }
158
159    if ($Show_BdStarsign) {
160        $cal_colspan       = '4';
161        $cal_col           = $cal_col_ss;
162        $cal_col_star_sort = $cal_col_ss_sort;
163        $cal_col_star      = $cal_col_ss_top;
164    }
165    else {
166        $cal_colspan       = '3';
167        $cal_col           = $cal_col_no_ss;
168        $cal_col_star_sort = q{};
169        $cal_col_star      = q{};
170    }
171
172    my @mont =
173      qw (null January February March April May June July August September October November December );
174
175    my @countmont = (
176        'null',           "$countJanuary",
177        "$countFebruary", "$countMarch",
178        "$countApril",    "$countMay",
179        "$countJune",     "$countJuly",
180        "$countAugust",   "$countSeptember",
181        "$countOctober",  "$countNovember",
182        "$countDecember",
183    );
184
185    my @viewmont = (
186        'null',           "$view_January",
187        "$view_February", "$view_March",
188        "$view_April",    "$view_May",
189        "$view_June",     "$view_July",
190        "$view_August",   "$view_September",
191        "$view_October",  "$view_November",
192        "$view_December",
193    );
194
195    my @calmont =
196      qw( null calmon_01 calmon_02 calmon_03 calmon_04 calmon_05 calmon_06 calmon_07 calmon_08 calmon_09 calmon_10 calmon_11 calmon_12 );
197
198    ManageMemberinfo('load');
199    fopen( EVENTBIRTH, "$vardir/eventcalbday.db" );
200    my @birthmembers = <EVENTBIRTH>;
201    fclose(EVENTBIRTH);
202
203    my @birthmembers1 = ();
204    my @birthmembers2 = ();
205
206    @no_birthday_found    = ();
207    $no_birthday_found[0] = q{};
208    @no_bd                = ();
209    $no_bd[0]             = 0;
210    foreach my $user_name (@birthmembers) {
211        chomp $user_name;
212        ( $user_bdyear, $user_bdmon, $user_bdday, $user_bdname, $user_bdhide )
213          = split /\|/xsm, $user_name;
214
215        $memrealname = ( split /\|/xsm, $memberinf{$user_bdname}, 2 )[0];
216
217        if (
218            ( $user_bdmon < $actualmon )
219            || (   ( $user_bdmon == $actualmon )
220                && ( $user_bdday <= $actualday ) )
221          )
222        {
223            $age = $year - $user_bdyear;
224        }
225        else { $age = $year - $user_bdyear; $age-- }
226        $sternzeichen = q{};
227        if ($Show_BdStarsign) {
228            $sternzeichen = starsign( $user_bdday, $user_bdmon );
229        }
230        if ( $age && $user_bdyear > 1904 && $user_bdmon && $user_bdday ) {
231            $string =
232"$user_bdyear|$user_bdmon|$user_bdday|$user_bdname|$age|$sternzeichen|$memrealname|$user_bdhide\n";
233            push @birthmembers1, $string;
234            $calsplit ||= 0;
235            if ( $calsplit > 0 && $vmonth eq $mont[$user_bdmon] ) {
236                $string =
237"$user_bdyear|$user_bdmon|$user_bdday|$user_bdname|$age|$sternzeichen|$memrealname|$user_bdhide\n";
238                push @birthmembers2, $string;
239            }
240        }
241    }
242    undef %memberinf;
243
244    $viewbirthdays = q{};
245    if ( !@birthmembers1 ) {
246        $viewbirthdays = $mybdlist_notbmember;
247    }
248    else {
249        foreach my $user_name (@birthmembers1) {
250            chomp $user_name;
251            (
252                $user_bdyear, $user_bdmon, $user_bdday, $user_bdname, $age,
253                $sternzeichen, $user_bdrealname, $user_bdhide
254            ) = split /\|/xsm, $user_name;
255
256            # what birthday should we show begin
257
258            if ( $user_bdmon == $actualmon && $user_bdday == $actualday ) {
259                if ($Show_BdColorLinks) {
260                    LoadUser($user_bdname);
261                    $user_linkprofile = $link{$user_bdname};
262                }
263                else {
264                    $user_linkname = $user_bdrealname;
265                    LoadUser($user_bdname);
266                    if ( $iamguest ) {
267                        $user_linkprofile = qq~$format_unbold{$user_bdname}~;
268                    }
269                    else {
270                        $user_linkprofile =
271qq~<a href="$scripturl?action=viewprofile;username=$useraccount{$user_bdname}" rel="nofollow">$format_unbold{$user_bdname}</a>~;
272                    }
273                }
274                if ( $showage && $user_bdhide ) {
275                    $myage = $var_cal{'hidden'};
276                }
277                else {
278                    $myage = $age;
279                }
280
281                $bd_today .=
282                  qq~$user_linkprofile <span class="small">($myage)</span>, ~;
283            }
284
285            $showviewbd = 1;
286            for my $i ( 1 .. 12 ) {
287                if ( $user_bdmon == $i || $user_bdmon eq "$i" ) {
288                    $countmont[$i]++;
289                    $no_bd[$i] = 1;
290                }
291            }
292        }
293    }
294
295    for my $i ( 1 .. 12 ) {
296        if ( $no_bd[$i] == 0 ) {
297            $no_birthday_found[$i] .= qq~&#8226; $var_cal{"$calmont[$i]"} ~;
298            $no_bd_found = 1;
299        }
300        else {
301            $no_birthday_found[$i] .= q{};
302        }
303    }
304
305    # handle with the months end
306
307    $cal_info_header = $mybdlist_calinfoheader;
308    $cal_info_header =~ s/{yabb cal_colspan}/$cal_colspan/gsm;
309    $cal_info_header =~ s/{yabb cal_col}/$cal_col/gsm;
310    $cal_info_header =~ s/{yabb cal_col_star_sort}/$cal_col_star_sort/gsm;
311    $cal_info_header =~ s/{yabb class_sortuser}/$class_sortuser/sm;
312    $cal_info_header =~ s/{yabb class_sortage}/$class_sortage/sm;
313    $cal_info_header =~ s/{yabb class_sortstarsign}/$class_sortstarsign/sm;
314    $cal_info_header =~ s/{yabb class_sortdate}/$class_sortdate/sm;
315
316    if ( $vmonth ) {
317        $myvmnthin = qq~;vmonth=$vmonth~;
318        $cal_info_header =~ s/{yabb vmonth}/$myvmnthin/gsm;
319    }
320
321    if ($bd_today) {
322        $bd_today =~ s/, $//sm;
323        $my_bdtoday = qq~
324        <br /><br /><span class="u">$var_cal{'calbirthdaytoday'}:</span><br /><br />
325$bd_today
326<br /><br />
327~;
328    }
329
330    if ( $calsplit > 0 && @birthmembers1 >= $calsplit ) {
331        for my $i ( 1 .. 12 ) {
332            if ( $countmont[$i] ) {
333                $bdmonthlinks .=
334qq~| <a href="$scripturl?action=birthdaylist;vmonth=$mont[$i]">$var_cal{$calmont[$i]}</a> ~;
335            }
336            else {
337                $bdmonthlinks .= qq~| <span class="off-color">$var_cal{$calmont[$i]}</a> ~;
338            }
339        }
340        $bdmonths = $mybd_months;
341        $bdmonths =~ s/{yabb bdmonthlink}/$bdmonthlinks/gsm;
342    }
343
344    for my $i ( a .. z ) {
345        $my_alpha_a .=
346            $mybdlist_alpha_a
347          . $i
348          . q~" style="text-decoration:none;">~
349          . uc($i)
350          . $mybdlist_alpha_b;
351        $my_alpha_a =~ s/{yabb sortiert}/$sortiert/sm;
352    }
353
354    for my $j ( 1 .. 12 ) {
355        if ( $calsplit > 0 &&  @birthmembers1 >= $calsplit && $vmonth eq $mont[$j] )
356        {
357            $datanum = @birthmembers2;
358            @birthmembers2 = sort { &{$sortiert}( $a, $b ); } @birthmembers2;
359            my $b_sort = q{};
360            if ( @birthmembers2 > 0 ) {
361                if ( $sortiert ) {
362                    $b_sort = qq~;sort=$sortiert~;
363                }
364                my $newstart = $INFO{'newstart'} || 0;
365                $dnprpage       = $calsplit;
366                $postdisplaynum = 8;
367                $max            = $datanum;
368                $tmpa           = 1;
369                if ( $newstart >= ( ( $postdisplaynum - 1 ) * $dnprpage ) ) {
370                    $startpage =
371                      $newstart - ( ( $postdisplaynum - 1 ) * $dnprpage );
372                    $tmpa = int( $startpage / $dnprpage ) + 1;
373                }
374                if ( $max >= $newstart + ( $postdisplaynum * $dnprpage ) ) {
375                    $endpage = $newstart + ( $postdisplaynum * $dnprpage );
376                }
377                else { $endpage = $max }
378                if ( $startpage > 0 ) {
379                    $pageindex =
380qq~<a href="$scripturl?action=$action;newstart=0;vmonth=$vmonth$b_sort" class="norm">1</a>&nbsp;...&nbsp;~;
381                    $pgstart = 0;
382                }
383                if ( $startpage == $dnprpage ) {
384                    $pageindex =
385qq~<a href="$scripturl?action=$action;newstart=0;vmonth=$vmonth$b_sort" class="norm">1</a>&nbsp;~;
386                    $pgstart = 0;
387                }
388                for my $counter ( $startpage .. ( $endpage - 1 ) ) {
389                    if ( $counter % $dnprpage == 0 ) {
390                        $pageindex .=
391                          $newstart == $counter
392                          ? qq~<b>$tmpa</b>&nbsp;~
393                          : qq~<a href="$scripturl?action=$action;newstart=$counter;vmonth=$vmonth$b_sort" class="norm">$tmpa</a>&nbsp;~;
394                        $pgstart = $counter;
395                        $tmpa++;
396                    }
397                }
398                $lastpn  = int( $datanum / $dnprpage ) + 1;
399                $lastptn = ( $lastpn - 1 ) * $dnprpage;
400                if ( $endpage < $max - ($dnprpage) ) {
401                    $pageindexadd = q~...&nbsp;~;
402                }
403                if ( $endpage != $max ) {
404                    $pageindexadd .=
405qq~<a href="$scripturl?action=$action;newstart=$lastptn;vmonth=$vmonth$b_sort">$lastpn</a>~;
406                    $pgstart = $lastptn;
407                }
408                $pageindex .= $pageindexadd;
409
410                $pageindex =
411qq~ <span class="small">$var_cal{'139'}: $pageindex</span>~;
412                $numbegin = ( $newstart + 1 );
413                $numend   = ( $newstart + $dnprpage );
414                if ( $numend > $datanum ) { $numend  = $datanum; }
415                if ( $datanum == 0 )      { $numshow = q{}; }
416                else { $numshow = qq~($numbegin - $numend)~; }
417                @birthmembers2 = splice @birthmembers2, $newstart, $dnprpage;
418            }
419            $yyvmon = $mybdlist_viewmont2;
420            $yyvmon =~ s/{yabb cal_colspan}/$cal_colspan/gsm;
421            $yyvmon =~ s/{yabb cal_col}/$cal_col/gsm;
422            $yyvmon =~ s/{yabb cal_col_star_sort}/$cal_col_star_sort/gsm;
423            $yyvmon =~ s/{yabb calmont}/$var_cal{$calmont[$j]}/sm;
424            $yyvmon =~ s/{yabb countmont}/$countmont[$j]/sm;
425            $yyvmon =~ s/{yabb cal_info_header}/$cal_info_header/sm;
426            $yyvmon =~ s/{yabb pagecall}/\;newstart=$pgstart/gsm;
427            $yyvmon =~ s/{yabb page}/$pageindex/gsm;
428            $yyvmon =~ s/{yabb input_letters}/$letter_s/sm;
429
430            for my $user_name (@birthmembers2) {
431                chomp $user_name;
432                (
433                    $user_bdyear, $user_bdmon, $user_bdday, $user_bdname, $age,
434                    $sternzeichen, $user_bdrealname, $user_bdhide
435                ) = split /\|/xsm, $user_name;
436                $showviewbd = 0;
437                if ( $letter ) {
438                    $searchbdname = $user_bdrealname;
439                    $searchbdname = isempty( $searchbdname, $user_bdname );
440                    if ( $searchbdname =~ /^$letter/i ) { $showviewbd = 1; }
441                }
442                else {
443                    $showviewbd = 1;
444                }
445                if ($showviewbd) {
446                    $cdate = $var_cal{'hidden'};
447                    if ( $Show_BirthdayDate == 2
448                        || ( $Show_BirthdayDate == 1 && !$iamguest ) )
449                    {
450                        $mybtime =
451                          stringtotime(
452                            qq~$user_bdmon/$user_bdday/$user_bdyear~);
453                        $mybtimein = timeformatcal($mybtime);
454                        $cdate     = dtonly($mybtimein);
455                        if ( $showage && $user_bdhide ) {
456                            $cdate = bdayno_year($mybtimein);
457                        }
458                    }
459                    if ($Show_BdColorLinks) {
460                        LoadUser($user_bdname);
461                        $user_linkprofile = $link{$user_bdname};
462                    }
463                    else {
464                        $user_linkname = $user_bdrealname;
465                        LoadUser($user_bdname);
466                        if ( $iamguest ) {
467                            $user_linkprofile = qq~$format_unbold{$user_bdname}~;
468                        }
469                        else {
470                            $user_linkprofile =
471qq~<a href="$scripturl?action=viewprofile;username=$useraccount{$user_bdname}" rel="nofollow">$format_unbold{$user_bdname}</a>~;
472                        }
473                    }
474                    if ( $showage && $user_bdhide ) {
475                        $myage = $var_cal{'hidden'};
476                    }
477                    else {
478                        $myage = $age;
479                    }
480
481                    $viewmont = $mybdlist_viewmont;
482                    $viewmont =~ s/{yabb cal_col_star}/$cal_col_star/sm;
483                    $viewmont =~ s/{yabb user_linkprofile}/$user_linkprofile/sm;
484                    $viewmont =~ s/{yabb myage}/$myage/sm;
485                    $viewmont =~ s/{yabb sternzeichen}/$sternzeichen/sm;
486                    $viewmont =~ s/{yabb cdate}/$cdate/sm;
487                    $montview .= $viewmont;
488                }
489            }
490            $yyvmon =~ s/{yabb viewmont}/$montview/sm;
491        }
492        elsif ( ( $calsplit == 0 || @birthmembers1 < $calsplit ) && $countmont[$j] ) {
493                $yyvmon .= $mybdlist_viewmont2;
494                $yyvmon =~ s/{yabb cal_colspan}/$cal_colspan/gsm;
495                $yyvmon =~ s/{yabb cal_col}/$cal_col/gsm;
496                $yyvmon =~ s/{yabb cal_col_star_sort}/$cal_col_star_sort/gsm;
497                $yyvmon =~ s/{yabb calmont}/$var_cal{$calmont[$j]}/sm;
498                $yyvmon =~ s/{yabb countmont}/$countmont[$j]/sm;
499                $yyvmon =~ s/{yabb cal_info_header}/$cal_info_header/sm;
500                $yyvmon =~ s/{yabb input_letters}/$letter_s/sm;
501                $montview = q{};
502                for my $user_name ( sort { &{$sortiert}( $a, $b ); } @birthmembers1) {
503                    chomp $user_name;
504                    (
505                        $user_bdyear, $user_bdmon, $user_bdday, $user_bdname, $age,
506                        $sternzeichen, $user_bdrealname, $user_bdhide
507                    ) = split /\|/xsm, $user_name;
508                    if ($user_bdmon == $j || $user_bdmon eq "$j") {
509                        $showviewbd = 0;
510                        if ($letter) {
511                            $searchbdname = $user_bdrealname;
512                            $searchbdname = isempty( $searchbdname, $user_bdname );
513                            if ( $searchbdname =~ /^$letter/ism ) { $showviewbd = 1; }
514                        }
515                        else {
516                            $showviewbd = 1;
517                        }
518                        if ($showviewbd) {
519                            $cdate = $var_cal{'hidden'};
520                            if ( $Show_BirthdayDate == 2 || ( $Show_BirthdayDate == 1 && !$iamguest ) ) {
521                                $mybtime = stringtotime( qq~$user_bdmon/$user_bdday/$user_bdyear~);
522                                $mybtimein = timeformatcal($mybtime);
523                                $cdate     = dtonly($mybtimein);
524                                if ( $showage && $user_bdhide ) {
525                                    $cdate = bdayno_year($mybtimein);
526                                }
527                            }
528                            if ($Show_BdColorLinks) {
529                                LoadUser($user_bdname);
530                                $user_linkprofile = $link{$user_bdname};
531                            }
532                            else {
533                                $user_linkname = $user_bdrealname;
534                                LoadUser($user_bdname);
535                                if ( $iamguest ) {
536                                    $user_linkprofile = qq~$format_unbold{$user_bdname}~;
537                                }
538                                else {
539                                    $user_linkprofile = qq~<a href="$scripturl?action=viewprofile;username=$useraccount{$user_bdname}" rel="nofollow">$format_unbold{$user_bdname}</a>~;
540                                }
541                            }
542                            if ( $showage && $user_bdhide ) {
543                                $myage = $var_cal{'hidden'};
544                            }
545                            else {
546                                $myage = $age;
547                            }
548
549                            $viewmont = $mybdlist_viewmont;
550                            $viewmont =~ s/{yabb cal_col_star}/$cal_col_star/sm;
551                            $viewmont =~ s/{yabb user_linkprofile}/$user_linkprofile/sm;
552                            $viewmont =~ s/{yabb myage}/$myage/sm;
553                            $viewmont =~ s/{yabb sternzeichen}/$sternzeichen/sm;
554                            $viewmont =~ s/{yabb cdate}/$cdate/sm;
555                            $montview .= $viewmont;
556                        }
557                    }
558                }
559                $yyvmon =~ s/{yabb viewmont}/$montview/sm;
560
561        }
562    }
563    $yymain .= $mybdlist_calgoto;
564    $yymain .= $my_alpha_a;
565    $yymain .= $viewbirthdays;
566    $yymain .= $bdmonths;
567    $yymain .= $yyvmon;
568    $yymain =~ s/{yabb calgotobox}/$calgotobox/sm;
569    $yymain =~ s/{yabb cal_colspan}/$cal_colspan/gsm;
570    $yymain =~ s/{yabb my_bdtoday}/$my_bdtoday/gsm;
571    $yymain =~ s/{yabb cal_col}/$cal_col/gsm;
572    $yymain =~ s/{yabb cal_col_star_sort}/$cal_col_star_sort/gsm;
573    $yymain =~ s/{yabb class_sortuser}/$class_sortuser/sm;
574    $yymain =~ s/{yabb class_sortage}/$class_sortage/sm;
575    $yymain =~ s/{yabb class_sortstarsign}/$class_sortstarsign/sm;
576    $yymain =~ s/{yabb class_sortdate}/$class_sortdate/sm;
577
578    if ( $no_bd_found == 1 && ( $calsplit == 0 || @birthmembers1 <= $calsplit ) ) {
579        $yymain .= $mybdlist_nobd;
580        for my $i ( 1 .. 12 ) {
581            $nobdays .= qq~$no_birthday_found[$i]~;
582        }
583
584        $yymain =~ s/{yabb cal_colspan}/$cal_colspan/gsm;
585        $yymain =~ s/{yabb nobdays}/$nobdays/sm;
586    }
587
588    # Birthdaylist output end
589
590    $yytitle = "$var_cal{yytitle} $var_cal{'calbirthdays'}";
591    template();
592    exit;
593}
594
595# view birthdays end
596
597# sort area begin
598
599sub sortdate {
600    my @zahl1 = split /\|/xsm, $a;
601    my @zahl2 = split /\|/xsm, $b;
602
603    return ( $zahl1[2] . $zahl1[0] <=> $zahl2[2] . $zahl2[0] );
604}
605
606sub sortage {
607    my @zahl1 = split /\|/xsm, $a;
608    my @zahl2 = split /\|/xsm, $b;
609
610    return ($zahl1[4]
611          . $zahl1[2]
612          . $zahl1[0] <=> $zahl2[4]
613          . $zahl2[2]
614          . $zahl2[0] );
615}
616
617sub sortstarsign {
618    my @name1 = split /\|/xsm, $a;
619    my @name2 = split /\|/xsm, $b;
620
621    return ( $name1[5] cmp $name2[5] );
622}
623
624sub sortuser {
625    my @name1 = split /\|/xsm, $a;
626    my @name2 = split /\|/xsm, $b;
627    return ( lc $name1[6] cmp lc $name2[6] );
628}
629
630sub starsign {
631    my ( $user_bdday, $user_bdmon, $text ) = @_;
632    my @stars =
633      qw(Capricorn Aquarius Aquarius Pisces Pisces Aries Aries Taurus Taurus Gemini Gemini Cancerian Cancerian Leo Leo Virgo Virgo Libra Libra Scorpio Scorpio Sagittarius Sagittarius Capricorn);
634    my @bd_1 = (
635        1, 21, 1, 20, 1, 21, 1, 21, 1, 21, 1, 22,
636        1, 23, 1, 24, 1, 24, 1, 24, 1, 23, 1, 22,
637    );
638    my @bd_2 = (
639        20, 31, 19, 29, 20, 31, 20, 30, 20, 31, 21, 30,
640        21, 31, 22, 31, 23, 30, 23, 31, 22, 30, 21, 31,
641    );
642    my @bd_3 = (
643        1, 1, 2, 2, 3, 3, 4,  4,  5,  5,  6,  6,
644        7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12,
645    );
646
647    for my $i ( 0 .. 23 ) {
648        if (   $user_bdday >= $bd_1[$i]
649            && $user_bdday <= $bd_2[$i]
650            && $user_bdmon == $bd_3[$i] )
651        {
652            if ($text) {
653                LoadLanguage('Profile');
654                $sternzeichen = "$zodiac_txt{$stars[$i]}";
655            }
656            else {
657                $sternzeichen = "$var_cal{$stars[$i]}";
658            }
659        }
660    }
661    return $sternzeichen;
662}
663
6641;
665