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">&nbsp; &nbsp; &nbsp;</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" />&nbsp;<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