| [ Index ] |
krapohl.info |
[Summary view] [Print] [Text view]
1 <?php 2 @define('__POSTCALENDAR__','PostCalendar'); 3 /** 4 * $Id: pnadmin.php,v 1.1 2004/02/11 17:25:28 larsneo Exp $ 5 * 6 * PostCalendar::PostNuke Events Calendar Module 7 * Copyright (C) 2002 The PostCalendar Team 8 * http://postcalendar.tv 9 * 10 * This program is free software; you can redistribute it and/or modify 11 * it under the terms of the GNU General Public License as published by 12 * the Free Software Foundation; either version 2 of the License, or 13 * (at your option) any later version. 14 * 15 * This program is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU General Public License for more details. 19 * 20 * You should have received a copy of the GNU General Public License 21 * along with this program; if not, write to the Free Software 22 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 23 * 24 * To read the license please read the docs/license.txt or visit 25 * http://www.gnu.org/copyleft/gpl.html 26 * 27 */ 28 //========================================================================= 29 // Load the API Functions 30 //========================================================================= 31 pnModAPILoad(__POSTCALENDAR__,'admin'); 32 33 /** 34 * the main administration function 35 * This function is the default function, and is called whenever the 36 * module is initiated without defining arguments. As such it can 37 * be used for a number of things, but most commonly it either just 38 * shows the module menu and returns or calls whatever the module 39 * designer feels should be the default function (often this is the 40 * view() function) 41 */ 42 function postcalendar_admin_main() 43 { 44 if(!PC_ACCESS_ADMIN) { return _POSTCALENDAR_NOAUTH; } 45 return postcalendar_admin_modifyconfig(); 46 } 47 function postcalendar_admin_listapproved() { return postcalendar_admin_showlist('',_EVENT_APPROVED,'listapproved',_PC_APPROVED_ADMIN); } 48 function postcalendar_admin_listhidden() { return postcalendar_admin_showlist('',_EVENT_HIDDEN,'listhidden',_PC_HIDDEN_ADMIN); } 49 function postcalendar_admin_listqueued() { return postcalendar_admin_showlist('',_EVENT_QUEUED,'listqueued',_PC_QUEUED_ADMIN); } 50 function postcalendar_admin_showlist($e='',$type,$function,$title,$msg='') 51 { 52 if(!PC_ACCESS_ADMIN) { return _POSTCALENDAR_NOAUTH; } 53 54 $output = postcalendar_adminmenu(); 55 56 if(!empty($e)) { 57 $output .= '<div style="padding:5px; border:1px solid red; background-color: pink;">'; 58 $output .= '<center><b>'.$e.'</b></center>'; 59 $output .= '</div><br />'; 60 } 61 62 if(!empty($msg)) { 63 $output .= '<div style="padding:5px; border:1px solid green; background-color: lightgreen;">'; 64 $output .= '<center><b>'.$msg.'</b></center>'; 65 $output .= '</div><br />'; 66 } 67 68 $offset_increment = _SETTING_HOW_MANY_EVENTS; 69 if(empty($offset_increment)) $offset_increment = 15; 70 71 pnThemeLoad(pnUserGetTheme()); 72 // get the theme globals :: is there a better way to do this? 73 global $bgcolor1, $bgcolor2, $bgcolor3, $bgcolor4, $bgcolor5; 74 global $textcolor1, $textcolor2; 75 76 $offset = pnVarCleanFromInput('offset'); 77 $sort = pnVarCleanFromInput('sort'); 78 $sdir = pnVarCleanFromInput('sdir'); 79 if(!isset($sort)) $sort = 'time'; 80 if(!isset($sdir)) $sdir = 1; 81 if(!isset($offset)) $offset = 0; 82 83 $result = pnModAPIFunc(__POSTCALENDAR__,'admin','getAdminListEvents', 84 array('type'=>$type, 85 'sdir'=>$sdir, 86 'sort'=>$sort, 87 'offset'=>$offset, 88 'offset_increment'=>$offset_increment)); 89 90 $output .= pnModAPIFunc(__POSTCALENDAR__,'admin','buildAdminList', 91 array('type'=>$type, 92 'title'=>$title, 93 'sdir'=>$sdir, 94 'sort'=>$sort, 95 'offset'=>$offset, 96 'offset_increment'=>$offset_increment, 97 'function'=>$function, 98 'result'=>$result)); 99 100 101 return $output; 102 } 103 104 function postcalendar_admin_adminevents() 105 { 106 if(!PC_ACCESS_ADMIN) { return _POSTCALENDAR_NOAUTH; } 107 108 $output = ''; 109 list($action,$pc_event_id,$thelist) = pnVarCleanFromInput('action','pc_event_id','thelist'); 110 111 if(!isset($pc_event_id)) { 112 $e = _PC_NO_EVENT_SELECTED; 113 114 switch($thelist) { 115 case 'listqueued' : 116 $output .= postcalendar_admin_showlist($e,_EVENT_QUEUED,'showlist'); 117 break; 118 119 case 'listhidden' : 120 $output .= postcalendar_admin_showlist($e,_EVENT_HIDDEN,'showlist'); 121 break; 122 123 case 'listapproved' : 124 $output .= postcalendar_admin_showlist($e,_EVENT_APPROVED,'showlist'); 125 break; 126 } 127 return $output; 128 } 129 130 // main menu 131 $output = postcalendar_adminmenu(); 132 $function = ''; 133 switch ($action) { 134 case _ADMIN_ACTION_APPROVE : 135 $function = 'approveevents'; 136 $are_you_sure_text = _PC_APPROVE_ARE_YOU_SURE; 137 break; 138 139 case _ADMIN_ACTION_HIDE : 140 $function = 'hideevents'; 141 $are_you_sure_text = _PC_HIDE_ARE_YOU_SURE; 142 break; 143 144 case _ADMIN_ACTION_DELETE : 145 $function = 'deleteevents'; 146 $are_you_sure_text = _PC_DELETE_ARE_YOU_SURE; 147 break; 148 } 149 150 if(!empty($function)) { 151 $output .= '<form action="'.pnModUrl(__POSTCALENDAR__,'admin',$function).'" method="post">'; 152 $output .= $are_you_sure_text.' '; 153 $output .= '<input type="submit" name="submit" value="'._PC_ADMIN_YES.'" />'; 154 $output .= '<br /><br />'; 155 } 156 if(is_array($pc_event_id)) { 157 foreach($pc_event_id as $eid) { 158 $output .= pnModAPIFunc(__POSTCALENDAR__,'admin','eventDetail',array('eid'=>$eid,'nopop'=>true)); 159 $output .= '<br /><br />'; 160 $output .= '<input type="hidden" name="pc_eid[]" value="'.$eid.'" />'; 161 } 162 } else { 163 $output .= pnModAPIFunc(__POSTCALENDAR__,'admin','eventDetail',array('eid'=>$pc_event_id,'nopop'=>true)); 164 $output .= '<br /><br />'; 165 $output .= '<input type="hidden" name="pc_eid[]" value="'.$pc_event_id.'" />'; 166 } 167 if(!empty($function)) { 168 $output .= $are_you_sure_text.' '; 169 $output .= '<input type="submit" name="submit" value="'._PC_ADMIN_YES.'" />'; 170 $output .= '</form>'; 171 } 172 173 return $output; 174 } 175 176 function postcalendar_admin_approveevents() 177 { 178 if(!PC_ACCESS_ADMIN) { return _POSTCALENDAR_NOAUTH; } 179 180 $pc_eid = pnVarCleanFromInput('pc_eid'); 181 $approve_list = ''; 182 foreach($pc_eid as $eid) { 183 if(!empty($approve_list)) { $approve_list .= ','; } 184 $approve_list .= $eid; 185 } 186 187 list($dbconn) = pnDBGetConn(); 188 $pntable = pnDBGetTables(); 189 $events_table = $pntable['postcalendar_events']; 190 $events_column = &$pntable['postcalendar_events_column']; 191 192 $sql = "UPDATE $events_table 193 SET $events_column[eventstatus] = "._EVENT_APPROVED." 194 WHERE $events_column[eid] IN ($approve_list)"; 195 196 $dbconn->Execute($sql); 197 if ($dbconn->ErrorNo() != 0) { 198 $msg = _PC_ADMIN_EVENT_ERROR; 199 } else { 200 $msg = _PC_ADMIN_EVENTS_APPROVED; 201 } 202 203 // clear the template cache 204 $tpl =& new pcSmarty(); 205 $tpl->clear_all_cache(); 206 return postcalendar_admin_showlist('',_EVENT_APPROVED,'listapproved',_PC_APPROVED_ADMIN,$msg); 207 } 208 209 function postcalendar_admin_hideevents() 210 { 211 if(!PC_ACCESS_ADMIN) { return _POSTCALENDAR_NOAUTH; } 212 213 $pc_eid = pnVarCleanFromInput('pc_eid'); 214 $output = postcalendar_adminmenu(); 215 $event_list = ''; 216 foreach($pc_eid as $eid) { 217 if(!empty($event_list)) { $event_list .= ','; } 218 $event_list .= $eid; 219 } 220 221 list($dbconn) = pnDBGetConn(); 222 $pntable = pnDBGetTables(); 223 $events_table = $pntable['postcalendar_events']; 224 $events_column = &$pntable['postcalendar_events_column']; 225 226 $sql = "UPDATE $events_table 227 SET $events_column[eventstatus] = "._EVENT_HIDDEN." 228 WHERE $events_column[eid] IN ($event_list)"; 229 230 $dbconn->Execute($sql); 231 if ($dbconn->ErrorNo() != 0) { 232 $msg = _PC_ADMIN_EVENT_ERROR; 233 } else { 234 $msg = _PC_ADMIN_EVENTS_HIDDEN; 235 } 236 237 // clear the template cache 238 $tpl =& new pcSmarty(); 239 $tpl->clear_all_cache(); 240 return postcalendar_admin_showlist('',_EVENT_APPROVED,'listapproved',_PC_APPROVED_ADMIN,$msg); 241 } 242 243 function postcalendar_admin_deleteevents() 244 { 245 if(!PC_ACCESS_ADMIN) { return _POSTCALENDAR_NOAUTH; } 246 247 $pc_eid = pnVarCleanFromInput('pc_eid'); 248 $output = postcalendar_adminmenu(); 249 $event_list = ''; 250 foreach($pc_eid as $eid) { 251 if(!empty($event_list)) { $event_list .= ','; } 252 $event_list .= $eid; 253 } 254 255 list($dbconn) = pnDBGetConn(); 256 $pntable = pnDBGetTables(); 257 $events_table = $pntable['postcalendar_events']; 258 $events_column = &$pntable['postcalendar_events_column']; 259 260 $sql = "DELETE FROM $events_table WHERE $events_column[eid] IN ($event_list)"; 261 262 $dbconn->Execute($sql); 263 if ($dbconn->ErrorNo() != 0) { 264 $msg = _PC_ADMIN_EVENT_ERROR; 265 } else { 266 $msg = _PC_ADMIN_EVENTS_DELETED; 267 } 268 269 // clear the template cache 270 $tpl =& new pcSmarty(); 271 $tpl->clear_all_cache(); 272 return postcalendar_admin_showlist('',_EVENT_APPROVED,'listapproved',_PC_APPROVED_ADMIN,$msg); 273 } 274 275 function postcalendar_admin_edit($args) { return postcalendar_admin_submit($args); } 276 function postcalendar_admin_submit($args) 277 { 278 if(!PC_ACCESS_ADMIN) { return _POSTCALENDAR_NOAUTH; } 279 280 pnModAPILoad(__POSTCALENDAR__,'user'); 281 $output = postcalendar_adminmenu(); 282 283 // get the theme globals :: is there a better way to do this? 284 pnThemeLoad(pnUserGetTheme()); 285 global $bgcolor1, $bgcolor2, $bgcolor3, $bgcolor4, $bgcolor5, $textcolor1, $textcolor2; 286 287 extract($args); 288 289 $Date = postcalendar_getDate(); 290 $year = substr($Date,0,4); 291 $month = substr($Date,4,2); 292 $day = substr($Date,6,2); 293 294 // basic event information 295 $event_subject = pnVarCleanFromInput('event_subject'); 296 $event_desc = pnVarCleanFromInput('event_desc'); 297 $event_sharing = pnVarCleanFromInput('event_sharing'); 298 $event_category = pnVarCleanFromInput('event_category'); 299 $event_topic = pnVarCleanFromInput('event_topic'); 300 301 // event start information 302 $event_startmonth = pnVarCleanFromInput('event_startmonth'); 303 $event_startday = pnVarCleanFromInput('event_startday'); 304 $event_startyear = pnVarCleanFromInput('event_startyear'); 305 $event_starttimeh = pnVarCleanFromInput('event_starttimeh'); 306 $event_starttimem = pnVarCleanFromInput('event_starttimem'); 307 $event_startampm = pnVarCleanFromInput('event_startampm'); 308 309 // event end information 310 $event_endmonth = pnVarCleanFromInput('event_endmonth'); 311 $event_endday = pnVarCleanFromInput('event_endday'); 312 $event_endyear = pnVarCleanFromInput('event_endyear'); 313 $event_endtype = pnVarCleanFromInput('event_endtype'); 314 $event_dur_hours = pnVarCleanFromInput('event_dur_hours'); 315 $event_dur_minutes = pnVarCleanFromInput('event_dur_minutes'); 316 $event_duration = (60*60*$event_dur_hours) + (60*$event_dur_minutes); 317 $event_allday = pnVarCleanFromInput('event_allday'); 318 319 // location data 320 $event_location = pnVarCleanFromInput('event_location'); 321 $event_street1 = pnVarCleanFromInput('event_street1'); 322 $event_street2 = pnVarCleanFromInput('event_street2'); 323 $event_city = pnVarCleanFromInput('event_city'); 324 $event_state = pnVarCleanFromInput('event_state'); 325 $event_postal = pnVarCleanFromInput('event_postal'); 326 $event_location_info = serialize(compact('event_location', 'event_street1', 'event_street2', 327 'event_city', 'event_state', 'event_postal')); 328 // contact data 329 $event_contname = pnVarCleanFromInput('event_contname'); 330 $event_conttel = pnVarCleanFromInput('event_conttel'); 331 $event_contemail = pnVarCleanFromInput('event_contemail'); 332 $event_website = pnVarCleanFromInput('event_website'); 333 $event_fee = pnVarCleanFromInput('event_fee'); 334 335 // event repeating data 336 $event_repeat = pnVarCleanFromInput('event_repeat'); 337 $event_repeat_freq = pnVarCleanFromInput('event_repeat_freq'); 338 $event_repeat_freq_type = pnVarCleanFromInput('event_repeat_freq_type'); 339 $event_repeat_on_num = pnVarCleanFromInput('event_repeat_on_num'); 340 $event_repeat_on_day = pnVarCleanFromInput('event_repeat_on_day'); 341 $event_repeat_on_freq = pnVarCleanFromInput('event_repeat_on_freq'); 342 $event_recurrspec = serialize(compact('event_repeat_freq', 'event_repeat_freq_type', 'event_repeat_on_num', 343 'event_repeat_on_day', 'event_repeat_on_freq')); 344 345 $pc_html_or_text = pnVarCleanFromInput('pc_html_or_text'); 346 $form_action = pnVarCleanFromInput('form_action'); 347 $pc_event_id = pnVarCleanFromInput('pc_event_id'); 348 $data_loaded = pnVarCleanFromInput('data_loaded'); 349 $is_update = pnVarCleanFromInput('is_update'); 350 $authid = pnVarCleanFromInput('authid'); 351 352 if(pnUserLoggedIn()) { $uname = pnUserGetVar('uname'); } 353 else { $uname = pnConfigGetVar('anonymous'); } 354 if(!isset($event_repeat)) { $event_repeat = 0; } 355 356 // lets wrap all the data into array for passing to submit and preview functions 357 if(!isset($pc_event_id) || empty($pc_event_id) || $data_loaded) { 358 $eventdata = compact('event_subject','event_desc','event_sharing','event_category','event_topic', 359 'event_startmonth','event_startday','event_startyear','event_starttimeh','event_starttimem','event_startampm', 360 'event_endmonth','event_endday','event_endyear','event_endtype','event_dur_hours','event_dur_minutes', 361 'event_duration','event_allday','event_location','event_street1','event_street2','event_city','event_state', 362 'event_postal','event_location_info','event_contname','event_conttel','event_contemail', 363 'event_website','event_fee','event_repeat','event_repeat_freq','event_repeat_freq_type', 364 'event_repeat_on_num','event_repeat_on_day','event_repeat_on_freq','event_recurrspec','uname', 365 'Date','year','month','day','pc_html_or_text'); 366 $eventdata['is_update'] = $is_update; 367 $eventdata['pc_event_id'] = $pc_event_id; 368 $eventdata['data_loaded'] = true; 369 } else { 370 $event = postcalendar_userapi_pcGetEventDetails($pc_event_id); 371 $eventdata['event_subject'] = $event['title']; 372 $eventdata['event_desc'] = $event['hometext']; 373 $eventdata['event_sharing'] = $event['sharing']; 374 $eventdata['event_category'] = $event['catid']; 375 $eventdata['event_topic'] = $event['topic']; 376 $eventdata['event_startmonth'] = substr($event['eventDate'],5,2); 377 $eventdata['event_startday'] = substr($event['eventDate'],8,2); 378 $eventdata['event_startyear'] = substr($event['eventDate'],0,4); 379 $eventdata['event_starttimeh'] = substr($event['startTime'],0,2); 380 $eventdata['event_starttimem'] = substr($event['startTime'],3,2); 381 $eventdata['event_startampm'] = $eventdata['event_starttimeh'] < 12 ? _PC_AM : _PC_PM ; 382 $eventdata['event_endmonth'] = substr($event['endDate'],5,2); 383 $eventdata['event_endday'] = substr($event['endDate'],8,2); 384 $eventdata['event_endyear'] = substr($event['endDate'],0,4); 385 $eventdata['event_endtype'] = $event['endDate'] == '0000-00-00' ? '0' : '1' ; 386 $eventdata['event_dur_hours'] = $event['duration_hours']; 387 $eventdata['event_dur_minutes'] = $event['duration_minutes']; 388 $eventdata['event_duration'] = $event['duration']; 389 $eventdata['event_allday'] = $event['alldayevent']; 390 $loc_data = unserialize($event['location']); 391 $eventdata['event_location'] = $loc_data['event_location']; 392 $eventdata['event_street1'] = $loc_data['event_street1']; 393 $eventdata['event_street2'] = $loc_data['event_street2']; 394 $eventdata['event_city'] = $loc_data['event_city']; 395 $eventdata['event_state'] = $loc_data['event_state']; 396 $eventdata['event_postal'] = $loc_data['event_postal']; 397 $eventdata['event_location_info'] = $loc_data; 398 $eventdata['event_contname'] = $event['contname']; 399 $eventdata['event_conttel'] = $event['conttel']; 400 $eventdata['event_contemail'] = $event['contemail']; 401 $eventdata['event_website'] = $event['website']; 402 $eventdata['event_fee'] = $event['fee']; 403 $eventdata['event_repeat'] = $event['recurrtype']; 404 $rspecs = unserialize($event['recurrspec']); 405 $eventdata['event_repeat_freq'] = $rspecs['event_repeat_freq']; 406 $eventdata['event_repeat_freq_type'] = $rspecs['event_repeat_freq_type']; 407 $eventdata['event_repeat_on_num'] = $rspecs['event_repeat_on_num']; 408 $eventdata['event_repeat_on_day'] = $rspecs['event_repeat_on_day']; 409 $eventdata['event_repeat_on_freq'] = $rspecs['event_repeat_on_freq']; 410 $eventdata['event_recurrspec'] = $rspecs; 411 $eventdata['uname'] = $uname; 412 $eventdata['Date'] = $Date; 413 $eventdata['year'] = $year; 414 $eventdata['month'] = $month; 415 $eventdata['day'] = $day; 416 $eventdata['is_update'] = true; 417 $eventdata['pc_event_id'] = $pc_event_id; 418 $eventdata['data_loaded'] = true; 419 $eventdata['pc_html_or_text'] = $pc_html_or_text; 420 } 421 422 // lets get the module's information 423 $modinfo = pnModGetInfo(pnModGetIDFromName(__POSTCALENDAR__)); 424 $categories = pnModAPIFunc(__POSTCALENDAR__,'user','getCategories'); 425 426 //================================================================ 427 // ERROR CHECKING 428 //================================================================ 429 $required_vars = array('event_subject','event_desc'); 430 $required_name = array(_PC_EVENT_TITLE,_PC_EVENT_DESC); 431 $error_msg = ''; 432 $reqCount = count($required_vars); 433 for ($r=0; $r<$reqCount; $r++) { 434 if(empty($$required_vars[$r]) || !preg_match('/\S/i',$$required_vars[$r])) { 435 $error_msg .= '<b>' . $required_name[$r] . '</b> ' . _PC_SUBMIT_ERROR4 . '<br />'; 436 } 437 } 438 unset($reqCount); 439 // check repeating frequencies 440 if($event_repeat == REPEAT) { 441 if(!isset($event_repeat_freq) || $event_repeat_freq < 1 || empty($event_repeat_freq)) { 442 $error_msg .= _PC_SUBMIT_ERROR5 . '<br />'; 443 } elseif(!is_numeric($event_repeat_freq)) { 444 $error_msg .= _PC_SUBMIT_ERROR6 . '<br />'; 445 } 446 } elseif($event_repeat == REPEAT_ON) { 447 if(!isset($event_repeat_on_freq) || $event_repeat_on_freq < 1 || empty($event_repeat_on_freq)) { 448 $error_msg .= _PC_SUBMIT_ERROR5 . '<br />'; 449