/**
 * Return list of marked submissions that have not been mailed out for currently enrolled students
 */
function facetoface_get_unmailed_reminders() {
    global $CFG, $DB;

    $submissions = $DB->get_records_sql("
        SELECT
            su.*,
            f.course,
            f.id as facetofaceid,
            f.name as facetofacename,
            se.duration,
            se.normalcost,
            se.discountcost,
            se.details,
            se.datetimeknown
        FROM
            {facetoface_signups} su
        INNER JOIN
            {facetoface_signups_status} sus
         ON su.id = sus.signupid
        AND sus.superceded = 0
        AND sus.statuscode = ?
        JOIN
            {facetoface_sessions} se
         ON su.sessionid = se.id
        JOIN
            {facetoface} f
         ON se.facetoface = f.id
        WHERE
            su.mailedreminder = 0
        AND se.datetimeknown = 1
    ", array(MDL_F2F_STATUS_BOOKED));

    if ($submissions) {
        foreach ($submissions as $key => $value) {
            $submissions[$key]->duration = facetoface_minutes_to_hours($submissions[$key]->duration);
            $submissions[$key]->sessiondates = facetoface_get_session_dates($value->sessionid);
        }
    }

    return $submissions;
}
Example #2
0
/**
 * Import user and signup to session
 *
 * @access  public
 * @param   object  $course             Record from the course table
 * @param   object  $facetoface         Record from the facetoface table
 * @param   object  $session            Session to signup user to
 * @param   mixed   $userid             User to signup (normally int)
 * @param   array   $params             Optional suppressemail, ignoreconflicts, bulkaddsource, discountcode, notificationtype
 *          boolean $suppressemail      Suppress notifications flag
 *          boolean $ignoreconflicts    Ignore booking conflicts flag
 *          string  $bulkaddsource      Flag to indicate if $userid is actually another field
 *          string  $discountcode       Optional A user may specify a discount code
 *          integer $notificationtype   Optional A user may choose the type of notifications they will receive
 * @return  array
 */
function facetoface_user_import($course, $facetoface, $session, $userid, $params = array()) {
    global $DB, $CFG, $USER;

    $result = array();
    $result['id'] = $userid;

    $suppressemail    = (isset($params['suppressemail'])    ? $params['suppressemail']    : false);
    $ignoreconflicts  = (isset($params['ignoreconflicts'])  ? $params['ignoreconflicts']  : false);
    $bulkaddsource    = (isset($params['bulkaddsource'])    ? $params['bulkaddsource']    : 'bulkaddsourceuserid');
    $discountcode     = (isset($params['discountcode'])     ? $params['discountcode']     : '');
    $notificationtype = (isset($params['notificationtype']) ? $params['notificationtype'] : MDL_F2F_BOTH);

    if (isset($params['approvalreqd'])) {
        // Overwrite default behaviour as bulkadd_* is requested
        $facetoface->approvalreqd = $params['approvalreqd'];
        $facetoface->ccmanager = (isset($params['ccmanager']) ? $params['ccmanager'] : 0);
    }

    // Check parameters.
    if ($bulkaddsource == 'bulkaddsourceuserid') {
        if (!is_int($userid) && !ctype_digit($userid)) {
            $result['name'] = '';
            $result['result'] = get_string('error:userimportuseridnotanint', 'facetoface', $userid);
            return $result;
        }
    }

    // Get user.
    switch ($bulkaddsource) {
        case 'bulkaddsourceuserid':
            $user = $DB->get_record('user', array('id' => $userid));
            break;
        case 'bulkaddsourceidnumber':
            $user = $DB->get_record('user', array('idnumber' => $userid));
            break;
        case 'bulkaddsourceusername':
            $user = $DB->get_record('user', array('username' => $userid));
            break;
    }
    if (!$user) {
        $result['name'] = '';
        $a = array('fieldname' => get_string($bulkaddsource, 'facetoface'), 'value' => $userid);
        $result['result'] = get_string('userdoesnotexist', 'facetoface', $a);
        return $result;
    }

    $result['name'] = fullname($user);

    if (isguestuser($user)) {
        $a = array('fieldname' => get_string($bulkaddsource, 'facetoface'), 'value' => $userid);
        $result['result'] = get_string('cannotsignupguest', 'facetoface', $a);
        return $result;
    }

    // Make sure that the user is enroled in the course
    $context   = context_course::instance($course->id);
    if (!is_enrolled($context, $user)) {

        $defaultlearnerrole = $DB->get_record('role', array('id' => $CFG->learnerroleid));

        if (!enrol_try_internal_enrol($course->id, $user->id, $defaultlearnerrole->id, time())) {
            $result['result'] = get_string('error:enrolmentfailed', 'facetoface', fullname($user));
            return $result;
        }
    }

    // Check if they are already signed up
    $minimumstatus = ($session->datetimeknown) ? MDL_F2F_STATUS_BOOKED : MDL_F2F_STATUS_REQUESTED;
    // If multiple sessions are allowed then just check against this session
    // Otherwise check against all sessions
    $multisessionid = ($facetoface->multiplesessions ? $session->id : null);
    if (facetoface_get_user_submissions($facetoface->id, $user->id, $minimumstatus, MDL_F2F_STATUS_FULLY_ATTENDED, $multisessionid)) {
        if ($user->id == $USER->id) {
            $result['result'] = get_string('error:addalreadysignedupattendeeaddself', 'facetoface');
        } else {
            $result['result'] = get_string('error:addalreadysignedupattendee', 'facetoface');
        }
        return $result;
    }

    if (!facetoface_session_has_capacity($session, $context)) {
        if ($session->allowoverbook) {
            $status = MDL_F2F_STATUS_WAITLISTED;
        } else {
            $result['result'] = get_string('full', 'facetoface');
            return $result;
        }
    }

    // Check if we are waitlisting or booking
    if ($session->datetimeknown) {
        if (!isset($status)) {
            $status = MDL_F2F_STATUS_BOOKED;
        }

        // Check if there are any date conflicts
        if (!$ignoreconflicts) {
            $dates = facetoface_get_session_dates($session->id);
            if ($availability = facetoface_get_sessions_within($dates, $user->id)) {
                $result['result'] = facetoface_get_session_involvement($user, $availability);
                $result['conflict'] = true;
                return $result;
            }
        }
    } else {
        $status = MDL_F2F_STATUS_WAITLISTED;
    }

    // Finally attempt to enrol
    if (!facetoface_user_signup(
        $session,
        $facetoface,
        $course,
        $discountcode,
        $notificationtype,
        $status,
        $user->id,
        !$suppressemail)) {
            $result['result'] = get_string('error:addattendee', 'facetoface', fullname($user));
            return $result;
    }

    $result['result'] = true;
    return $result;
}
Example #3
0
function simple_template_for_batches($facetofaceid,$session_cancel=0){
     global $DB,$CFG,$USER,$SITE;
     
      $sentby_name=fullname($DB->get_record('user',array('id'=>$USER->id)));
      $sentby_id=$USER->id;
            
          $facetoface=$DB->get_record_sql("SELECT * FROM {facetoface} where id=$facetofaceid");
     
     if($session_cancel==0 || $session_cancel==2){
          $facetofacesessions=$DB->get_records_sql("SELECT * FROM {facetoface_sessions} fss
                                                JOIN {facetoface_sessions_dates} as fsd ON fsd.sessionid=fss.id
                                                where facetoface=$facetoface->id");
        
     }   //print_object($facetofacesessions);
         $facetoface_users=$DB->get_records_sql("SELECT * FROM {local_batch_users} where f2fid=$facetoface->id");
       
         $facetoface_course=$DB->get_record_sql("SELECT * FROM {local_batch_courses} where batchid=$facetoface->id");
       
           
    if((!empty($facetoface)) && (!empty($facetoface_users))){
        
             $mail=new stdClass();
                   
                 switch($facetoface->active){
                    case 1:
                        if($session_cancel==0){
                            $mailsubject=get_string('subject_active', 'facetoface');
                        }elseif($session_cancel==2){
                            $mailsubject=get_string('subject_active_session_cancel', 'facetoface');
                        }
                         $mail->batch_status=get_string('batch_active', 'facetoface');
                     break;
                     case 8:
                        $mailsubject=get_string('subject_complete', 'facetoface');
                        $mail->batch_status=get_string('batch_complete', 'facetoface');
                     break;
                     case 2:
                        $mailsubject=get_string('subject_cancel', 'facetoface');
                        $mail->batch_status=get_string('batch_cancel', 'facetoface');
                     break;
                   case 0:
                     $batch_cousre=$DB->get_record('course',array('id'=>$facetoface_course->courseid));
                    $tataaia = new stdclass();
                    $tataaia->picture3 = $CFG->wwwroot.'/mod/facetoface/pix/Picture3.png';
                    $tataaia->picture2 = $CFG->wwwroot.'/mod/facetoface/pix/Picture2.png';
                    $tataaia->programname = $batch_cousre->fullname;
                    $tataaia->date = date("d M, Y ",$facetoface->startdate);
                    $tataaia->time = date("g:i a",$facetoface->startdate);;
                    $tataaia->venue = 'Thane Training Room';
                    $tataaia->summary =strip_tags($batch_cousre->summary);
                    $tataaia->summary2 = 'Request you to please discuss with your supervisor, plan your work and make sure
                                        that you attend this program';
                    $tataaia->senderfullname = 'Jagadeep M.P';
                    $tataaia->designation = 'Manager-Training & Development';
                    $tataaia->mobileno = '9000 469 5151';
                    
                    $mailsubject="Batch Start Invitation";    
                    $mail->batch_status=get_string('batch_active', 'facetoface');
                        
                 }
                    $mail->batch_name=$facetoface->name;
                    $mail->batch_startdate=date("d M, Y ",$facetoface->startdate);
                    $mail->batch_enddate=date("d M, Y ",$facetoface->enddate);
                    
                    $tariner_name=$DB->get_record('user',array('id'=>$facetoface->trainerid));   
                    $mail->tariner_name=fullname($tariner_name);
                    
            if($facetoface_course){
                     if($facetoface_course->courseid!=0){
                       $batch_cousre=$DB->get_field('course','fullname',array('id'=>$facetoface_course->courseid));
                        $mail->batch_course=$batch_cousre;
                   
                     }else{
                         $mail->batch_course="-----";
                     }        
                    if($facetoface_course->testid!=0){
                        
                         $quiz=$DB->get_record('quiz',array('id'=>$facetoface_course->testid));
                    
                         $mail->test_name=$quiz->name;
                    
                         $course_completion_check=$DB->record_exists_sql("SELECT * FROM {course_completion_criteria} cc,
                                                                          {course} c
                                                                          Where c.id=$facetoface_course->courseid
                                                                          and c.id=cc.course
                                                                          and c.enablecompletion=1
                                                                          AND cc.module  IS NOT NULL
                                                                          AND cc.moduleinstance in (SELECT id FROM {course_modules} where course=$facetoface_course->courseid and instance=$facetoface_course->testid)");
                        if($course_completion_check==1){
                            
                           $mail->test_status=get_string('test_completed', 'facetoface');
                           
                        }else{
                            
                           $mail->test_status=get_string('test_not_completed', 'facetoface');
                            
                        }
                    }else{
                        $mail->test_name="-----";
                        $mail->test_status="-----";
                    }
            }
           if($facetofacesessions && ($session_cancel==0 || $session_cancel==2)){
            $session_mail='<h2 style="text-align:center;font-weight:bold;">SESSION DETAILS</h2>';
             $session_mail.='<table style="border:1px solid #333;">';
             $i=1;
            foreach($facetofacesessions as $sessiondate){
                //print_object($sessiondate);
                $sessiondates=new stdClass();
                $timenow = time();      
                if (!empty($html)) {
                        $html= html_writer::empty_tag('br');
                }
                
                $sessionobj = facetoface_format_session_times($sessiondate->timestart, $sessiondate->timefinish, $sessiondate->sessiontimezone);
                
                if ($sessionobj->startdate == $sessionobj->enddate) {
                        $html .= $sessionobj->startdate . ', ';
                } else {
                        $html .= $sessionobj->startdate . ' - ' . $sessionobj->enddate . ', ';
                }
                $html .= $sessionobj->starttime . ' - ' . $sessionobj->endtime . ' ' . $sessionobj->timezone;
                $duration=round(($sessiondate->duration/60),2);
                    
                $session_mail.='<tr>';
                $session_mail.='<td style="border:1px solid #333;">Session '.$i.' '.'Timings : </td>';
                $session_mail.='<td style="border:1px solid #333;"><b>'.$html.'</b></td>';
                $session_mail.='<td style="border:1px solid #333;">Duration : </td>';
                $session_mail.='<td style="border:1px solid #333;"><b>'.$duration.' Hours </b></td>';
                 if ($sessiondate->roomid) {
                    $room = $DB->get_record('facetoface_room', array('id' => $sessiondate->roomid));
                    $sessionroom = $room->name." ". $room->building." ".$room->address;
                }else{
                    $sessionroom = "----";
                }
                
                $sessiondates->datetimeknown=$sessiondate->datetimeknown;
                $sessiondates->sessiondates=facetoface_get_session_dates($sessiondate->id);
               //print_object($sessiondates);
               $session_cancel=$DB->get_record_sql("SELECT * FROM {facetoface_signups} as fsg
                                                  JOIN {facetoface_signups_status} as fsst on fsst.signupid=fsg.id
                                                  where fsg.sessionid=$sessiondate->id group by fsg.sessionid");
               
               if($session_cancel->statuscode==10){
                 $status = get_string('sessionincancel', 'facetoface');
               }else{
                if ($sessiondate->datetimeknown && facetoface_has_session_started($sessiondates, $timenow) && !facetoface_is_session_in_progress($sessiondates, $timenow)) {
                
                    $status = get_string('sessioninprogress', 'facetoface');
                
                } else if ($sessiondate->datetimeknown && facetoface_has_session_started($sessiondates, $timenow)&&facetoface_is_session_in_progress($sessiondates, $timenow)) {
                     $status = get_string('sessionover', 'facetoface');
                }
               }
                 $session_mail.='<td style="border:1px solid #333;">Room : </td>';
                 $session_mail.='<td style="border:1px solid #333;"><b>'.$sessionroom.'</b></td>';
                 
                 $session_mail.='<td style="border:1px solid #333;">Status : </td>';
                 $session_mail.='<td style="border:1px solid #333;"><b>'.$status.'</b></td>';
                 $session_mail.='</tr>';
                
                $i++;
     
            }
                    $session_mail.='</table>';
                     $mail->sessions_details=$session_mail;
           }else{
             $mail->sessions_details="";
           }
                   
                   $userenrolments=array();
                foreach($facetoface_users as $facetoface_user){
                    $user=$DB->get_record('user',array('id'=>$facetoface_user->userid));
                    if($facetoface_course){
                        $userenrolments[]=$DB->get_record_sql("SELECT * FROM {user_enrolments}
                                                            where userid=$facetoface_user->userid
                                                            and enrolid in (SELECT id FROM {enrol} where courseid=$facetoface_course->courseid and enrol='manual')");
                    }
                }
                 $emai_users=email_send_users_list($userenrolments,$facetoface_course->courseid,$facetoface->trainerid);
                 $to_emailid=$emai_users[0];
                 $to_userid=$emai_users[1];
                //print_object($emai_users);
                $from = $DB->get_record('user',array('id'=>2));
                $messagetext='Batch';
                if($facetoface->active==0){
                     $messagetext_fr=get_string('first_time_notify', 'facetoface',$tataaia);
                     $messagehtml=text_to_html($messagetext_fr);
                    
                }else{
                    $messagetext_fr=get_string('batch_mail', 'facetoface',$mail);
                    $messagehtml=text_to_html($messagetext_fr);
                }
                
                if((!empty($to_emailid))&&(!empty($to_userid))){
                  $sucess=email_logs_insert_table($to_emailid,$to_userid,$from->email,$from->id,$mailsubject,$messagehtml,$sentby_id,$sentby_name,$facetoface_course->courseid,$facetofaceid);
                 return $sucess;
                }   
    }

       
}
Example #4
0
/**
 * Return list of marked submissions that have not been mailed out for currently enrolled students
 */
function facetoface_get_unmailed_reminders()
{
    global $CFG, $DB;
    $submissions = $DB->get_records_sql("\n        SELECT\n            su.*,\n            f.course,\n            f.id as facetofaceid,\n            f.name as facetofacename,\n            f.reminderperiod,\n            se.duration,\n            se.normalcost,\n            se.discountcost,\n            se.details,\n            se.datetimeknown\n        FROM\n            {facetoface_signups} su\n        INNER JOIN\n            {facetoface_signups_status} sus\n         ON su.id = sus.signupid\n        AND sus.superceded = 0\n        AND sus.statuscode = ?\n        JOIN\n            {facetoface_sessions} se\n         ON su.sessionid = se.id\n        JOIN\n            {facetoface} f\n         ON se.facetoface = f.id\n        WHERE\n            su.mailedreminder = 0\n        AND se.datetimeknown = 1\n    ", array(MDL_F2F_STATUS_BOOKED));
    if ($submissions) {
        foreach ($submissions as $key => $value) {
            $submissions[$key]->duration = facetoface_minutes_to_hours($submissions[$key]->duration);
            $submissions[$key]->sessiondates = facetoface_get_session_dates($value->sessionid);
        }
    }
    return $submissions;
}
// Get signups from the DB
$bookings = $DB->get_records_sql("SELECT ss.timecreated, ss.statuscode, ss.grade, ss.note,
                                   c.id as courseid, c.fullname AS coursename,
                                   f.name, f.id as facetofaceid, s.id as sessionid,
                                   d.id, d.timestart, d.timefinish, d.sessiontimezone
                              FROM {facetoface_sessions_dates} d
                              JOIN {facetoface_sessions} s ON s.id = d.sessionid
                              JOIN {facetoface} f ON f.id = s.facetoface
                              JOIN {facetoface_signups} su ON su.sessionid = s.id
                              JOIN {facetoface_signups_status} ss ON ss.signupid = su.id
                              JOIN {course} c ON f.course = c.id
                              WHERE su.userid = ? AND su.sessionid = ? AND f.id = ?
                              ORDER BY ss.timecreated ASC", array($user->id, $session->id, $session->facetoface));

// Get session times
$sessiontimes = facetoface_get_session_dates($session->id);

if ($user->id != $USER->id) {
    $fullname = html_writer::link(new moodle_url('/user/view.php', array('id' => $user->id, 'course' => $course->id)), fullname($user));
    $heading = get_string('bookinghistoryfor', 'block_facetoface', $fullname);
    echo $OUTPUT->heading($heading);
} else {
    echo html_writer::empty_tag('br');
}

echo $OUTPUT->heading(get_string('sessiondetails', 'block_facetoface'));

// print the session information
$cm = get_coursemodule_from_instance('facetoface', $facetoface->id, $course->id);
$contextmodule = context_module::instance($cm->id);
$viewattendees = has_capability('mod/facetoface:viewattendees', $contextmodule);
function facetoface_get_custom_sessions($facetofaceid, $location='') {
    global $CFG,$DB,$USER;

  $fromclause = "FROM {facetoface} fa,{facetoface_sessions} s";
    $locationwhere = '';
    $locationparams = array();
    if (!empty($location)) {
        $fromclause = "FROM {facetoface_session_data} d
                       JOIN {facetoface_sessions} s ON s.id = d.sessionid";
        $locationwhere .= " AND d.data = ?";
        $locationparams[] = $location;
    }
    $sessions = $DB->get_records_sql("SELECT s.*,fa.name
                                   $fromclause
                        LEFT OUTER JOIN (SELECT sessionid, min(timestart) AS mintimestart
                                           FROM {facetoface_sessions_dates} GROUP BY sessionid) m ON m.sessionid = s.id
                                 LEFT JOIN {facetoface_signups} fs ON fs.sessionid=s.id WHERE s.facetoface=fa.id AND fs.userid={$USER->id}
                                        $locationwhere
                               ORDER BY s.datetimeknown, m.mintimestart");

    
    if ($sessions) {
        foreach ($sessions as $key => $value) {
            $sessions[$key]->duration = facetoface_minutes_to_hours($sessions[$key]->duration);
            $sessions[$key]->sessiondates = facetoface_get_session_dates($value->id);
        }
    }
    return $sessions;
}
Example #7
0
    function test_facetoface_get_session_dates() {
        // Test variables.
        $sessionid1 = 1;
        $sessionid2 = 10;

        // Test for valid case.
        $this->assertTrue((bool)facetoface_get_session_dates($sessionid1), $this->msgtrue);

        // Test for invalid case.
        $this->assertFalse((bool)facetoface_get_session_dates($sessionid2), $this->msgfalse);
        $this->resetAfterTest(true);
    }