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"> $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 <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=""> </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~• $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> ... ~; 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> ~; 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> ~ 393 : qq~<a href="$scripturl?action=$action;newstart=$counter;vmonth=$vmonth$b_sort" class="norm">$tmpa</a> ~; 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~... ~; 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