[ Index ]

PHP Cross Reference of Moodle 1.9.3 [Build 15-Oct-2008]

title

Body

[close]

/course/ -> pending.php (source)

   1  <?php  // $Id: pending.php,v 1.11.2.4 2008/05/01 22:15:44 skodak Exp $
   2         // allow the administrators to look through a list of course requests and either approve them or reject them.
   3  
   4      require_once ('../config.php');
   5      require_once($CFG->libdir.'/pagelib.php');
   6      require_once($CFG->libdir.'/blocklib.php');
   7      require_once ('lib.php');
   8  
   9      require_login();
  10  
  11      require_capability('moodle/site:approvecourse', get_context_instance(CONTEXT_SYSTEM));
  12  
  13      $approve      = optional_param('approve', 0, PARAM_INT);
  14      $reject       = optional_param('reject', 0, PARAM_INT);
  15      $rejectnotice = optional_param('rejectnotice', '', PARAM_CLEANHTML);
  16  
  17      if (!empty($approve) and confirm_sesskey()) {
  18          if ($course = get_record("course_request","id",$approve)) {
  19              foreach (array_keys((array)$course) as $key) {
  20                  $course->$key = addslashes($course->$key);
  21              }
  22  
  23              // place at beginning of category
  24              fix_course_sortorder();
  25  
  26              if (empty($CFG->defaultrequestcategory) or !record_exists('course_categories', 'id', $CFG->defaultrequestcategory)) {
  27                  // default to first top level directory, hacky but means things don't break
  28                  $CFG->defaultrequestcategory = get_field('course_categories', 'id', 'parent', '0');
  29              }
  30  
  31              $course->category = $CFG->defaultrequestcategory;
  32              $course->sortorder = get_field_sql("SELECT min(sortorder)-1 FROM {$CFG->prefix}course WHERE category=$course->category");
  33              if (empty($course->sortorder)) {
  34                  $course->sortorder = 1000;
  35              }
  36              $course->requested = 1;
  37              unset($course->reason);
  38              unset($course->id);
  39              $teacherid = $course->requester;
  40              unset($course->requester);
  41              $course->teacher = get_string("defaultcourseteacher");
  42              $course->teachers = get_string("defaultcourseteachers");
  43              $course->student = get_string("defaultcoursestudent");
  44              $course->students = get_string("defaultcoursestudents");
  45              if (!empty($CFG->restrictmodulesfor) && $CFG->restrictmodulesfor != 'none' && !empty($CFG->restrictbydefault)) {
  46                  $course->restrictmodules = 1;
  47              }
  48              if ($courseid = insert_record("course",$course)) {
  49                  $page = page_create_object(PAGE_COURSE_VIEW, $courseid);
  50                  blocks_repopulate_page($page); // Return value not checked because you can always edit later
  51                  $context = get_context_instance(CONTEXT_COURSE, $courseid);
  52                  role_assign($CFG->creatornewroleid, $teacherid, 0, $context->id); // assing teacher role
  53                  $course->id = $courseid;
  54                  if (!empty($CFG->restrictmodulesfor) && $CFG->restrictmodulesfor != 'none' && !empty($CFG->restrictbydefault)) { // if we're all or requested we're ok.
  55                      $allowedmods = explode(',',$CFG->defaultallowedmodules);
  56                      update_restricted_mods($course,$allowedmods);
  57                  }
  58                  delete_records('course_request','id',$approve);
  59                  $success = 1;
  60              }
  61              if (!empty($success)) {
  62                  $user = get_record('user','id',$teacherid);
  63                  $a->name = $course->fullname;
  64                  $a->url = $CFG->wwwroot.'/course/view.php?id='.$courseid;
  65                  $a->teacher = $course->teacher;
  66                  email_to_user($user,$USER,get_string('courseapprovedsubject'),get_string('courseapprovedemail','moodle',$a));
  67                  redirect($CFG->wwwroot.'/course/edit.php?id='.$courseid);
  68                  exit;
  69              }
  70              else {
  71                  print_error('courseapprovedfailed');
  72                  exit;
  73              }
  74          }
  75      }
  76  
  77      $strtitle = get_string('coursespending');
  78      $strheading = get_string(((!empty($reject)) ? 'coursereject' : 'coursespending'));
  79  
  80      print_header($strtitle,$strheading,build_navigation(array(array('name'=>$strheading,'link'=>'','type'=>'misc'))));
  81  
  82      if (!empty($reject) and confirm_sesskey()) {
  83          if ($reject = get_record("course_request","id",$reject)) {
  84              if (empty($rejectnotice)) {
  85                  //  display a form for writing a reason
  86                  print_simple_box_start('center');
  87                  print_string('courserejectreason');
  88                  include ('pending-reject.html');
  89                  print_simple_box_end();
  90              }
  91              else {
  92                  $user = get_record("user","id",$reject->requester);
  93                  email_to_user($user,$USER,get_string('courserejectsubject'),get_string('courserejectemail','moodle',$rejectnotice));
  94                  delete_records("course_request","id",$reject->id);
  95                  notice(get_string('courserejected'),'pending.php');
  96              }
  97          }
  98      } else if ($pending = get_records("course_request")) {
  99          // loop through
 100          $table->cellpadding = 4;
 101          $table->cellspacing = 3;
 102          $table->align = array('center','center','center','center','center','center','center');
 103          $table->head = array('&nbsp;',get_string('shortname'),get_string('fullname'),get_string('requestedby'),get_string('summary'),
 104                                 get_string('requestreason'),'');
 105          $strrequireskey = get_string('requireskey');
 106          foreach ($pending as $course) {
 107              $requester = get_record('user','id',$course->requester);
 108              // check here for shortname collisions and warn about them.
 109              if ($match = get_record("course","shortname",$course->shortname)) {
 110                  $course->shortname .= ' [*]';
 111                  $collision = 1;
 112              }
 113              //do not output raw html from request, quote html entities using s()!!
 114              $table->data[] = array(((!empty($course->password)) ?
 115                                      '<img hspace="1" alt="'.$strrequireskey.'" class="icon" src="'.$CFG->pixpath.'/i/key.gif" />' : ''),
 116                                     format_string($course->shortname),format_string($course->fullname),fullname($requester),
 117                                     format_string($course->summary),format_string($course->reason),
 118                                     '<a href="pending.php?approve='.$course->id.'&amp;sesskey='.sesskey().'">'.get_string('approve').'</a> | '
 119                                     .'<a href="pending.php?reject='.$course->id.'&amp;sesskey='.sesskey().'">'.get_string('reject').'</a>');
 120          }
 121          print_table($table);
 122          if (!empty($collision)) {
 123              print_string('shortnamecollisionwarning');
 124          }
 125      } else {
 126          notice(get_string('nopendingcourses'));
 127          // no pending messages.
 128      }
 129  
 130  print_footer();
 131  
 132  
 133  ?>


Generated: Wed Jan 14 11:33:29 2009 Cross-referenced by PHPXref 0.7