[ Index ]

krapohl.info

title

Body

[close]

/ -> pnadmin.php (source)

   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