1############################################################################### 2# EventCalSet.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############################################################################### 15use CGI::Carp qw(fatalsToBrowser); 16our $VERSION = '2.6.11'; 17 18$eventcalsetpmver = 'YaBB 2.6.11 $Revision: 1611 $'; 19if ( $action eq 'detailedversion' ) { return 1; } 20 21LoadLanguage('EventCal'); 22$admin_images = "$yyhtml_root/Templates/Admin/default"; 23 24## Calendar Setting ## 25 26sub EventCalSet { 27 is_admin_or_gmod(); 28 my ($caleventprivatechecked, $chkDelete_EventsUntil); 29 30 # figure out what to print 31 32 if ( !$Scroll_Events ) { $aevt1 = ' selected="selected"'; } 33 elsif ( $Scroll_Events == 1 ) { $aevt2 = ' selected="selected"'; } 34 elsif ( $Scroll_Events == 2 ) { $aevt3 = ' selected="selected"'; } 35 elsif ( $Scroll_Events == 3 ) { $aevt4 = ' selected="selected"'; } 36 37 if ( !$Show_EventCal ) { $bevt1 = ' selected="selected"'; } 38 elsif ( $Show_EventCal == 1 ) { 39 $bevt2 = ' selected="selected"'; 40 } 41 elsif ( $Show_EventCal == 2 ) { 42 $bevt3 = ' selected="selected"'; 43 } 44 45 if ( !$Show_EventButton ) { $cevt1 = ' selected="selected"'; } 46 elsif ( $Show_EventButton == 1 ) { $cevt2 = ' selected="selected"'; } 47 elsif ( $Show_EventButton == 2 ) { $cevt3 = ' selected="selected"'; } 48 49 if ( !$Show_BirthdaysList ) { $devt1 = ' selected="selected"'; } 50 elsif ( $Show_BirthdaysList == 1 ) { 51 $devt2 = ' selected="selected"'; 52 } 53 elsif ( $Show_BirthdaysList == 2 ) { 54 $devt3 = ' selected="selected"'; 55 } 56 57 if ( !$Show_BirthdayButton ) { $eevt1 = ' selected="selected"'; } 58 elsif ( $Show_BirthdayButton == 1 ) { $eevt2 = ' selected="selected"'; } 59 elsif ( $Show_BirthdayButton == 2 ) { $eevt3 = ' selected="selected"'; } 60 61 if ( !$Show_BirthdayDate ) { $fevt1 = ' selected="selected"'; } 62 elsif ( $Show_BirthdayDate == 1 ) { $fevt2 = ' selected="selected"'; } 63 elsif ( $Show_BirthdayDate == 2 ) { $fevt3 = ' selected="selected"'; } 64 65 if ( !$Show_EventBirthdays ) { $gevt1 = ' selected="selected"'; } 66 elsif ( $Show_EventBirthdays == 1 ) { $gevt2 = ' selected="selected"'; } 67 elsif ( $Show_EventBirthdays == 2 ) { $gevt3 = ' selected="selected"'; } 68 69 if ($Show_caltoday) { $Show_caltodaych = 'checked="checked"'; } 70 if ($Show_BirthdaysList) { $onbirthlistchecked = 'checked="checked"'; } 71 if ($Show_MiniCalIcons) { $onminiiconchecked = 'checked="checked"'; } 72 if ($ShowSunday) { $onsundaychecked = 'checked="checked"'; } 73 if ($CalEventPrivate) { $caleventprivatechecked = 'checked="checked"'; } 74 if ($Delete_EventsUntil) { $chkDelete_EventsUntil = 'checked="checked"'; } 75 if ($DisplayCalEvents) { $dcaleventschecked = 'checked="checked"'; } 76 if ($Show_ColorLinks) { $oncolorlinkschecked = 'checked="checked"'; } 77 if ($No_ShortUbbc) { $onnosubbcchecked = 'checked="checked"'; } 78 if ($Show_BdColorLinks) { $onbdcolorlinkschecked = 'checked="checked"'; } 79 if ($Show_BdStarsign) { $onbdstarchecked = 'checked="checked"'; } 80 $Event_TodayColor = lc $Event_TodayColor; 81 82 if ( !$CalEventNoName ) { $noname1 = ' selected="selected"'; } 83 elsif ( $CalEventNoName == 1 ) { $noname2 = ' selected="selected"'; } 84 elsif ( $CalEventNoName == 2 ) { $noname3 = ' selected="selected"'; } 85 86 require Admin::ManageBoards; 87 $CalEventPerms =~ s/,/, /gsm; 88 $CalEventPerms = DrawPerms($CalEventPerms); 89 90 $yymain .= qq~ 91 <form action="$adminurl?action=eventcal_set2" method="post" onsubmit="savealert()" accept-charset="$yymycharset"> 92 <div class="bordercolor rightboxdiv"> 93 <table class="border-space pad-cell" style="margin-bottom: .5em;"> 94 <colgroup> 95 <col span="2" style="width: 50%" /> 96 </colgroup> 97 <tr> 98 <td class="titlebg" colspan="2">$admin_img{'prefimg'} <b>$event_cal{'1'}</b></td> 99 </tr><tr> 100 <td class="catbg" colspan="2"><span class="small">$event_cal{'21'}</span></td> 101 </tr><tr> 102 <td class="windowbg2"><label for="Show_EventCal">$event_cal{'3'}</label></td> 103 <td class="windowbg2"> 104 <select name="Show_EventCal" id="Show_EventCal" size="1"> 105 <option value="0"$bevt1>$userlevel_txt{'none'}</option> 106 <option value="1"$bevt2>$userlevel_txt{'members'}</option> 107 <option value="2"$bevt3>$userlevel_txt{'all'}</option> 108 </select> 109 </td> 110 </tr><tr> 111 <td class="windowbg2"><label for="Show_EventButton">$event_cal{'4'}</label></td> 112 <td class="windowbg2"> 113 <select name="Show_EventButton" id="Show_EventButton" size="1"> 114 <option value="0"$cevt1>$userlevel_txt{'none'}</option> 115 <option value="1"$cevt2>$userlevel_txt{'members'}</option> 116 <option value="2"$cevt3>$userlevel_txt{'all'}</option> 117 </select> 118 </td> 119 </tr><tr> 120 <td class="windowbg2"><label for="Show_EventBirthdays">$event_cal{'5'}</label></td> 121 <td class="windowbg2"> 122 <select name="Show_EventBirthdays" id="Show_EventBirthdays" size="1"> 123 <option value="0"$gevt1>$userlevel_txt{'none'}</option> 124 <option value="1"$gevt2>$userlevel_txt{'members'}</option> 125 <option value="2"$gevt3>$userlevel_txt{'all'}</option> 126 </select> 127 </td> 128 </tr><tr> 129 <td class="windowbg2"><label for="ShowSunday">$event_cal{'36'}<br /><span class="small">$event_cal{'37'}</span></label></td> 130 <td class="windowbg2"><input type="checkbox" name="ShowSunday" id="ShowSunday" $onsundaychecked /></td> 131 </tr><tr> 132 <td class="windowbg2"><label for="Event_TodayColor">$event_cal{'8'}</label></td> 133 <td class="windowbg2"> 134 <input type="text" size="7" maxlength="7" name="Event_TodayColor" id="Event_TodayColor" value="$Event_TodayColor" onkeyup="previewColor(this.value);" /> 135 <span id="Event_TodayColor2" style="background-color:$Event_TodayColor"> </span> <img src="$admin_images/palette1.gif" style="cursor: pointer; vertical-align:top" onclick="window.open('$scripturl?action=palette;task=templ', '', 'height=308,width=302,menubar=no,toolbar=no,scrollbars=no')" alt="" /> 136 <script type="text/javascript"> 137 function previewColor(color) { 138 document.getElementById('Event_TodayColor2').style.background = color; 139 document.getElementsByName("Event_TodayColor")[0].value = color; 140 } 141 </script> 142 </td> 143 </tr><tr> 144 <td class="windowbg2"><label for="Show_caltoday">$event_cal{'showtoday'}</label></td> 145 <td class="windowbg2"><input type="checkbox" name="Show_caltoday" id="Show_caltoday" value="1" $Show_caltodaych /></td> 146 </tr><tr> 147 <td class="catbg" colspan="2"><span class="small">$event_cal{'22'}</span></td> 148 </tr><tr> 149 <td class="windowbg2"><label for="Show_MiniCalIcons">$event_cal{'43'}</label></td> 150 <td class="windowbg2"><input type="checkbox" name="Show_MiniCalIcons" id="Show_MiniCalIcons" $onminiiconchecked /></td> 151 </tr><tr> 152 <td class="windowbg2"><label for="Show_ColorLinks">$event_cal{'44'}<br /><span class="small">$event_cal{'45'}</span></label></td> 153 <td class="windowbg2"><input type="checkbox" name="Show_ColorLinks" id="Show_ColorLinks" $oncolorlinkschecked /></td> 154 </tr><tr> 155 <td class="windowbg2"><label for="Scroll_Events">$event_cal{'9'}<br /><span class="small">$event_cal{'10'}</span></label></td> 156 <td class="windowbg2"> 157 <select name="Scroll_Events" id="Scroll_Events" size="1"> 158 <option value="0"$aevt1>$userlevel_txt{'none'}</option> 159 <option value="1"$aevt2>$event_cal{'12'} ($event_cal{'56'})</option> 160 <option value="3"$aevt4>$event_cal{'12'} ($event_cal{'57'})</option> 161 <option value="2"$aevt3>$event_cal{'13'}</option> 162 </select> 163 </td> 164 </tr><tr> 165 <td class="windowbg2"><label for="DisplayCalEvents">$event_cal{'20'}</label></td> 166 <td class="windowbg2"><input type="checkbox" name="DisplayCalEvents" id="DisplayCalEvents" $dcaleventschecked /></td> 167 </tr><tr> 168 <td class="windowbg2"><label for="DisplayEvents">$event_cal{'34'}<br /><span class="small">$event_cal{'35'}</span></label></td> 169 <td class="windowbg2"><input type="text" name="DisplayEvents" id="DisplayEvents" size="5" value="$DisplayEvents" /></td> 170 </tr><tr> 171 <td class="windowbg2"><label for="CalShortEvent">$event_cal{'6'}<br /><span class="small">$event_cal{'7'}</span></label></td> 172 <td class="windowbg2"> 173 <input type="text" name="CalShortEvent" id="CalShortEvent" size="5" value="$CalShortEvent" /><br /> 174 <input type="checkbox" name="No_ShortUbbc" id="No_ShortUbbc" $onnosubbcchecked /> <span class="small"><label for="No_ShortUbbc">$event_cal{'58'}</label></span> 175 </td> 176 </tr><tr> 177 <td class="windowbg2"><label for="Delete_EventsUntil">$event_cal{'52'}</label></td> 178 <td class="windowbg2"><input type="checkbox" name="Delete_EventsUntil" id="Delete_EventsUntil" value="1" $chkDelete_EventsUntil /></td> 179 </tr><tr> 180 <td class="catbg" colspan="2"><span class="small">$event_cal{'23'}</span></td> 181 </tr><tr> 182 <td class="windowbg2"><label for="CalEventPerms">$event_cal{'14'}<br /><span class="small">$event_cal{'15'}</span></label></td> 183 <td class="windowbg2"><select multiple="multiple" name="CalEventPerms" id="CalEventPerms" size="5">$CalEventPerms</select></td> 184 </tr><tr> 185 <td class="windowbg2"><label for="CalEventMods">$event_cal{'16'}<br /><span class="small">$event_cal{'17'}</span></label></td> 186 <td class="windowbg2"><input type="text" name="CalEventMods" id="CalEventMods" size="35" value="$CalEventMods" /></td> 187 </tr><tr> 188 <td class="windowbg2"><label for="CalEventPrivate">$event_cal{'18'}<br /><span class="small">$event_cal{'19'}</span></label></td> 189 <td class="windowbg2"><input type="checkbox" name="CalEventPrivate" id="CalEventPrivate" $caleventprivatechecked /></td> 190 </tr><tr> 191 <td class="windowbg2"><label for="CalEventNoName">$event_cal{'24'}</label></td> 192 <td class="windowbg2"> 193 <select name="CalEventNoName" id="CalEventNoName" size="1"> 194 <option value="0"$noname1>$userlevel_txt{'gmodadmin'}</option> 195 <option value="1"$noname2>$userlevel_txt{'members'}</option> 196 <option value="2"$noname3>$userlevel_txt{'none'}</option> 197 </select> 198 </td> 199 </tr><tr> 200 <td class="catbg" colspan="2"><span class="small">$event_cal{'49'}</span></td> 201 </tr><tr> 202 <td class="windowbg2"><label for="Show_BirthdaysList">$event_cal{'42'}</label></td> 203 <td class="windowbg2"> 204 <select name="Show_BirthdaysList" id="Show_BirthdaysList" size="1"> 205 <option value="0"$devt1>$userlevel_txt{'none'}</option> 206 <option value="1"$devt2>$userlevel_txt{'members'}</option> 207 <option value="2"$devt3>$userlevel_txt{'all'}</option> 208 </select> 209 </td> 210 </tr><tr> 211 <td class="windowbg2"><label for="Show_BirthdayButton">$event_cal{'48'}</label></td> 212 <td class="windowbg2"> 213 <select name="Show_BirthdayButton" id="Show_BirthdayButton" size="1"> 214 <option value="0"$eevt1>$userlevel_txt{'none'}</option> 215 <option value="1"$eevt2>$userlevel_txt{'members'}</option> 216 <option value="2"$eevt3>$userlevel_txt{'all'}</option> 217 </select> 218 </td> 219 </tr><tr> 220 <td class="windowbg2"><label for="Show_BirthdayDate">$event_cal{'50'}</label></td> 221 <td class="windowbg2"> 222 <select name="Show_BirthdayDate" id="Show_BirthdayDate" size="1"> 223 <option value="0"$fevt1>$userlevel_txt{'none'}</option> 224 <option value="1"$fevt2>$userlevel_txt{'members'}</option> 225 <option value="2"$fevt3>$userlevel_txt{'all'}</option> 226 </select> 227 </td> 228 </tr><tr> 229 <td class="windowbg2"><label for="calsplit">$admin_txt{'calsplit'}</label></td> 230 <td class="windowbg2"><input type="text" size="5" name="calsplit" id="calsplit" value="$calsplit" /></td> 231 </tr><tr> 232 <td class="windowbg2"><label for="MaxCalMessLen">$admin_txt{'498e'}</label></td> 233 <td class="windowbg2"><input type="text" size="5" name="MaxCalMessLen" id="MaxCalMessLen" value="$MaxCalMessLen" /></td> 234 </tr><tr> 235 <td class="windowbg2"><label for="AdMaxCalMessLen">$admin_txt{'498f'}</label></td> 236 <td class="windowbg2"><input type="text" size="5" name="AdMaxCalMessLen" id="AdMaxCalMessLen" value="$AdMaxCalMessLen" /></td> 237 </tr><tr> 238 <td class="windowbg2"><label for="Show_BdColorLinks">$event_cal{'44'}<br /><span class="small">$event_cal{'45'}</span></label></td> 239 <td class="windowbg2"><input type="checkbox" name="Show_BdColorLinks" id="Show_BdColorLinks" $onbdcolorlinkschecked /></td> 240 </tr><tr> 241 <td class="windowbg2"><label for="Show_BdStarsign">$event_cal{'42a'}</label></td> 242 <td class="windowbg2"><input type="checkbox" name="Show_BdStarsign" id="Show_BdStarsign" $onbdstarchecked /></td> 243 </tr> 244 </table> 245 </div> 246 <div class="bordercolor rightboxdiv"> 247 <table class="border-space pad-cell" style="margin-bottom: .5em;"> 248 <tr> 249 <th class="titlebg">$admin_img{'prefimg'} $admin_txt{'10'}</th> 250 </tr><tr> 251 <td class="catbg center"> 252 <input type="submit" name="savesetting" value="$event_cal{'31'}" class="button" /> <input type="submit" name="rebuiltbd" value="$event_cal{'54'}" class="button" /> 253 <br /><input type="submit" name="del_old_events" value="$event_cal{'del'}" class="button" /> 254 </td> 255 </tr> 256 </table> 257 </div> 258 </form>~; 259 260 ## Calendar Event-Icon Setting ## 261 262 eval { require "$vardir/eventcalIcon.txt"; }; 263 264 $yymain .= qq~ 265 <form action="$adminurl?action=eventcal_set3" method="post" enctype="multipart/form-data" accept-charset="$yymycharset"> 266 <div class="bordercolor rightboxdiv"> 267 <table class="border-space pad-cell" style="margin-bottom: .5em;"> 268 <colgroup> 269 <col span="2" style="width:40%" /> 270 <col span="2" style="width:10%" /> 271 </colgroup> 272 <tr> 273 <td class="titlebg" colspan="4">$admin_img{'prefimg'} <b>$event_cal{'26'}</b></td> 274 </tr><tr> 275 <td class="windowbg2" colspan="4"><div class="pad-more">$event_cal{'33'}</div></td> 276 </tr><tr> 277 <td class="catbg center small">$event_cal{'27'}</td> 278 <td class="catbg center small">$event_cal{'28'}</td> 279 <td class="catbg center small">$event_cal{'29'}</td> 280 <td class="catbg center small">$var_cal{'caldel'}</td> 281 </tr>~; 282 283 $i = 0; 284 my $add_icon = 1; 285 while ( $CalIconURL[$i] ) { 286 $yymain .= qq~<tr> 287 <td class="windowbg2 center" style="white-space:nowrap"> 288 <input type="file" name="caliimg[$i]" id="caliimg[$i]" size="35" /> 289 <input type="hidden" name="cur_caliimg[$i]" value="$CalIconURL[$i]" /> <span class="cursor small bold" title="$admin_txt{'remove_file'}" onclick="document.getElementById('caliimg[$i]').value='';">X</span> 290 <div class="small bold">$admin_txt{'current_img'}: <a href="$yyhtml_root/EventIcons/$CalIconURL[$i]" target="_blank">$CalIconURL[$i]</a></div> 291 </td> 292 <td class="windowbg2 center"><input type="text" name="calidescr[$i]" value="$CalIDescription[$i]" /></td> 293 <td class="windowbg2 center"><img src="$yyhtml_root/EventIcons/$CalIconURL[$i]" alt="" /></td> 294 <td class="windowbg2 center"><input type="checkbox" name="calidelbox[$i]" value="1" /></td> 295 </tr>~; 296 $i++; 297 $add_icon++; 298 } 299 my $added_icons = $i; 300 $yymain .= qq~<tr> 301 <td class="windowbg2 center" style="white-space:nowrap"><input type="file" name="caliimg[$i]" id="caliimg[$i]" size="35" /> <span class="cursor small bold" title="$admin_txt{'remove_file'}" onclick="document.getElementById('caliimg[$i]').value='';">X</span></td> 302 <td class="windowbg2 center"><input type="text" name="calidescr[$i]" /></td> 303 <td class="windowbg2 center" colspan="2"> 304 <img src="$imagesdir/cat_expand.png" alt="$event_cal{'59'}" title="$event_cal{'59'}" class="cursor" style="visibility: visible;" id="add_icon$i" onclick="addIcons($add_icon);" /> 305 <img src="$imagesdir/cat_collapse.png" alt="" style="visibility: hidden;" /> <!-- Used only for alignment purposes --> 306 </td> 307 </tr>~; 308 for ( 1 .. 3 ) { 309 $i++; 310 $add_icon++; 311 $yymain .= qq~<tr id="add_icons$i" style="display: none;"> 312 <td class="windowbg2 center"><input type="file" name="caliimg[$i]" id="caliimg[$i]" size="35" /> <span class="cursor small bold" title="$admin_txt{'remove_file'}" onclick="document.getElementById('caliimg[$i]').value='';">X</span></td> 313 <td class="windowbg2 center"><input type="text" name="calidescr[$i]" id="calidescr[$i]" /></td> 314 <td class="windowbg2 center" colspan="2"> 315 <img src="$imagesdir/cat_expand.png" alt="$event_cal{'59'}" title="$event_cal{'59'}" class="cursor" style="visibility: visible;" id="add_icon$i" onclick="addIcons($add_icon);" /> 316 <img src="$imagesdir/cat_collapse.png" alt="$event_cal{'60'}" title="$event_cal{'60'}" class="cursor" style="visibility: visible;" id="col_icon$i" onclick="removeIcons($i);" /> 317 </td> 318 </tr>~; 319 } 320 321 $yymain .= qq~ 322 </table> 323 </div> 324 <div class="bordercolor rightboxdiv"> 325 <table class="border-space pad-cell" style="margin-bottom: .5em;"> 326 <tr> 327 <th class="titlebg">$admin_img{'prefimg'} $admin_txt{'10'}</th> 328 </tr><tr> 329 <td class="catbg center"> 330 <input type="hidden" name="calimg_count" value="$i" /> 331 <input type="submit" value="$event_cal{'32'}" class="button" /> 332 </td> 333 </tr> 334 </table> 335 </div> 336<script type="text/javascript"> 337ic_added = $added_icons + 1; 338 339function addIcons(addic_id) { 340 var curic_id = addic_id - 1; 341 var ic_count = $i; 342 document.getElementById('add_icons' + addic_id).style.display = 'table-row'; 343 document.getElementById('add_icon' + curic_id).style.visibility = 'hidden'; 344 if (addic_id != ic_added) { 345 document.getElementById('col_icon' + curic_id).style.visibility =' hidden'; 346 } 347 if (addic_id == ic_count) { 348 document.getElementById('add_icon' + ic_count).style.visibility = 'hidden'; 349 } 350} 351function removeIcons(remic_id) { 352 var previc_id = remic_id - 1; 353 document.getElementById('add_icons' + remic_id).style.display = 'none'; 354 document.getElementById('add_icon' + previc_id).style.visibility = 'visible'; 355 if (remic_id != ic_added) { 356 document.getElementById('col_icon' + previc_id).style.visibility = 'visible'; 357 } 358 ic_elements = ["caliimg","calidescr"]; 359 for (var i=0; i<ic_elements.length; i++) { 360 document.getElementById(ic_elements[i] + '[' + remic_id + ']').value = ''; 361 } 362} 363</script> 364 </form>~; 365 366 $yytitle = $event_cal{'1'}; 367 $action_area = 'eventcal_set'; 368 AdminTemplate(); 369 exit; 370} 371 372## Save Calendar Setting ## 373 374sub EventCalSet2 { 375 is_admin_or_gmod(); 376 377 if ( $FORM{'rebuiltbd'} eq "$event_cal{'54'}" ) { 378 unlink "$vardir/eventcalbday.db"; 379 380 fopen( FILE, "$memberdir/memberlist.txt" ); 381 @birthmembers = <FILE>; 382 fclose(FILE); 383 fopen( FILE, ">$vardir/eventcalbday.db" ); 384 foreach my $user_name (@birthmembers) { 385 ( $user_xy, $dummy ) = split /\t/sm, $user_name; 386 chomp $user_xy; 387 LoadUser($user_xy); 388 $user_xy_bd = ${ $uid . $user_xy }{'bday'}; 389 if ($user_xy_bd) { 390 ( $user_month, $user_day, $user_year ) = 391 split /\//xsm, $user_xy_bd; 392 if ( $user_month < 10 && length($user_month) == 1 ) { 393 $user_month = "0$user_month"; 394 } 395 if ( $user_day < 10 && length($user_day) == 1 ) { 396 $user_day = "0$user_day"; 397 } 398 if (${ $uid . $user_xy }{'hideage'}){$user_hide = 1;} 399 else {$user_hide = q{};} 400 print {FILE} qq~$user_year|$user_month|$user_day|$user_xy|$user_hide\n~ or qq~$croak{'print'} eventcalbday.db~; 401 } 402 } 403 fclose(FILE); 404 405 $yySetLocation = qq~$adminurl?action=eventcal_set;rebok=1~; 406 redirectexit(); 407 } 408 elsif ( $FORM{'del_old_events'} eq "$event_cal{'del'}" ) { 409 del_old_events(); 410 } 411 else { eventcal_save();} 412 return; 413} 414 415## Save Calendar Event-Icon Setting ## 416 417sub EventCalSet3 { 418 is_admin_or_gmod(); 419 420 my $count = 0; 421 my $tempA = 0; 422 my @eventcalIcon; 423 $calimg_count = $FORM{'calimg_count'}; 424 425 for ( 1 .. $calimg_count ) { 426 427 if ( $FORM{"calidescr[$tempA]"} ne q{} && ( $FORM{"caliimg[$tempA]"} eq q{} && $FORM{"cur_caliimg[$tempA]"} eq q{} ) ) { fatal_error('', $event_cal{'error_image'}); } 428 if ( $FORM{"calidescr[$tempA]"} eq q{} && ( $FORM{"caliimg[$tempA]"} ne q{} || $FORM{"cur_caliimg[$tempA]"} ne q{} ) ) { fatal_error('', $event_cal{'error_desc'}); } 429 if ( $FORM{"calidelbox[$tempA]"} != 1 && $FORM{"calidescr[$tempA]"} ne q{} && ( $FORM{"caliimg[$tempA]"} ne q{} || $FORM{"cur_caliimg[$tempA]"} ne q{} ) ) { 430 if ( $FORM{"caliimg[$tempA]"} ne q{} ) { 431 $FORM{"caliimg[$tempA]"} = UploadFile("caliimg[$tempA]", 'EventIcons', 'png jpg jpeg gif', '100', '0'); 432 unlink "$htmldir/EventIcons/$FORM{\"cur_caliimg[$tempA]\"}"; 433 } 434 else { 435 $FORM{"caliimg[$tempA]"} = $FORM{"cur_caliimg[$tempA]"}; 436 } 437 push @eventcalIcon, 438qq~\$CalIconURL[$count] = "$FORM{"caliimg[$tempA]"}";\n\$CalIDescription[$count] = "$FORM{"calidescr[$tempA]"}";\n\n~; 439 $count++; 440 } 441 if ( $FORM{"calidelbox[$tempA]"} == 1 ) { 442 unlink "$htmldir/EventIcons/$FORM{\"cur_caliimg[$tempA]\"}"; 443 } 444 $tempA++; 445 446 } 447 push @eventcalIcon, '1;'; 448 fopen( FILE, ">$vardir/eventcalIcon.txt" ); 449 print {FILE} @eventcalIcon or croak "$croak{'print'} eventcalIcon"; 450 fclose(FILE); 451 452 $yySetLocation = qq~$adminurl?action=eventcal_set~; 453 redirectexit(); 454 return; 455} 456 457sub eventcal_save { 458 is_admin_or_gmod(); 459 460 if ( $FORM{'Event_TodayColor'} eq q{} ) { fatal_error('invalid_value', "$event_cal{'8'}"); } 461 if ( $FORM{'DisplayEvents'} eq q{} ) { fatal_error('invalid_value', "$event_cal{'34'}"); } 462 if ( $FORM{'CalShortEvent'} eq q{} ) { fatal_error('invalid_value', "$event_cal{'6'}"); } 463 if ( $FORM{'MaxCalMessLen'} eq q{} ) { fatal_error('invalid_value', "$admin_txt{'498e'}"); } 464 if ( $FORM{'AdMaxCalMessLen'} eq q{} ) { fatal_error('invalid_value', "$admin_txt{'498f'}"); } 465 # Set 1 or 0 if box was checked or not 466 map { ${$_} = $FORM{$_} ? 1 : 0; } 467 qw{Show_MiniCalIcons CalEventPrivate DisplayCalEvents ShowSunday Show_ColorLinks No_ShortUbbc Show_BdColorLinks Show_BdStarsign}; 468 469# If empty fields are submitted, set them to default-values to save yabb from crashing 470 $DisplayEvents = $FORM{'DisplayEvents'}; 471 $DisplayEvents =~ s/[^\d]//gxsm; 472 $DisplayEvents = $DisplayEvents || 0; 473 $Scroll_Events = $FORM{'Scroll_Events'} || 0; 474 $Show_EventCal = $FORM{'Show_EventCal'} || 0; 475 $Show_EventButton = $FORM{'Show_EventButton'} || 0; 476 if ( $Show_EventButton > $Show_EventCal ) { 477 $Show_EventButton = $Show_EventCal; 478 } 479 $Show_EventBirthdays = $FORM{'Show_EventBirthdays'} || 0; 480 if ( $Show_EventBirthdays > $Show_EventCal ) { 481 $Show_EventBirthdays = $Show_EventCal; 482 } 483 $Show_BirthdaysList = $FORM{'Show_BirthdaysList'} || 0; 484 $Show_BirthdayButton = $FORM{'Show_BirthdayButton'} || 0; 485 if ( $Show_BirthdayButton > $Show_BirthdaysList ) { 486 $Show_BirthdayButton = $Show_BirthdaysList; 487 } 488 $Show_BirthdayDate = $FORM{'Show_BirthdayDate'} || 0; 489 $CalEventNoName = $FORM{'CalEventNoName'} || 0; 490 $Event_TodayColor = 491 uc( $FORM{'Event_TodayColor'} || '#f00' ) . '#000'; 492 $Event_TodayColor =~ s/[^a-fA-F0-9#]//gxsm; 493 $Event_TodayColor = substr $Event_TodayColor, 0, 7; 494 $Delete_EventsUntil = $FORM{'Delete_EventsUntil'} || 0; 495 $CalShortEvent = $FORM{'CalShortEvent'} || 0; 496 $CalShortEvent =~ s/[^\d]//gxsm; 497 $CalEventPerms = $FORM{'CalEventPerms'} || q{}; 498 $CalEventPerms =~ s/^\s*,\s*|\s*,\s*$//gsm; 499 $CalEventPerms =~ s/\s*,\s*/,/gsm; 500 $CalEventMods = $FORM{'CalEventMods'} || q{}; 501 $CalEventMods =~ s/^\s*,\s*|\s*,\s*$//gsm; 502 $CalEventMods =~ s/\s*,\s*/,/gsm; 503 $MaxCalMessLen = $FORM{'MaxCalMessLen'}; 504 $MaxCalMessLen =~ s/[^\d]//gxsm; 505 $AdMaxCalMessLen = $FORM{'AdMaxCalMessLen'}; 506 $AdMaxCalMessLen =~ s/[^\d]//gxsm; 507 $calsplit = $FORM{'calsplit'} || 0; 508 $calsplit =~ s/[^\d]//gxsm; 509 510 require Admin::NewSettings; 511 SaveSettingsTo('Settings.pm'); 512 513 $yySetLocation = qq~$adminurl?action=eventcal_set~; 514 redirectexit(); 515 return; 516} 517 518sub del_old_events { 519 $caltoday = 1; 520 my ( $sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $dst ) = gmtime( $date ); 521 $year += 1900; 522 $mon++; 523 $caltoday = $year . sprintf( '%02d', $mon ) . sprintf '%02d', $mday; 524 525 fopen( EVENTFILE, "$vardir/eventcal.db" ); 526 my @calinput = <EVENTFILE>; 527 fclose(EVENTFILE); 528 for my $i ( 0 .. ( @calinput - 1 ) ) { 529 ( $c_date, undef, undef, undef, undef, undef, undef, $c_type2, undef ) = 530 split /\|/xsm, $calinput[$i]; 531 chop $c_type2; 532 if ( $c_date < $caltoday && $c_type2 < 2 ) { $calinput[$i] = q{}; } 533 } 534 fopen( EVENTFILE, ">$vardir/eventcal.db" ); 535 print {EVENTFILE} @calinput or croak "$croak{'print'} EVENTFILE"; 536 fclose(EVENTFILE); 537 538 $yySetLocation = qq~$adminurl?action=eventcal_set~; 539 redirectexit(); 540 return; 541} 5421; 543