<th>Score out of 100</th> <th>Submitted By</th> </tr> </thead> <tbody> <?php $assessments = Assessments::all(); foreach ($assessments as $assessment) { $tutorialid = $assessment->tutorialid; $teacherid = $assessment->teacherid; $teacher = User::find($teacherid); $admin = Sentry::getUser()->inGroup(Sentry::findGroupByName('admin')); if (Sentry::getUser()->id == $teacherid || $admin) { $tutorial = DB::select(DB::raw('SELECT * FROM `tutorials` WHERE `id` = ' . $tutorialid)); $tutorial = array_dot(objectToArray($tutorial)); $tutorial = Tutorials::find((int) $assessment->tutorialid); $studentid = $assessment->studentid; $student = User::find($studentid); $subject = Subject::find($assessment->subjectid); echo "<tr>"; echo "<td>"; echo $assessment->id; echo "</td>"; echo "<td>"; echo "<a href='/assessment/" . $assessment->id . "/'>" . $assessment->title . '</a>'; echo "</td>"; echo "<td>"; echo "<a href='/tutorial/view/" . $tutorialid . "'>"; echo $tutorial->name; unset($tutorial); echo "</a>";
public function index() { $theme = Theme::uses('site')->layout('default'); $theme->setTitle('Home'); Cache::forget('latest_tr_slides'); Cache::forget('tutorials'); Cache::forget('latest_tutorials'); Cache::forget('latest_tutes'); Cache::forget('topstudents'); Cache::forget('topstudentlist'); $tutorialslides = Cache::remember('latest_tr_slides', 1, function () { $tutorials = Cache::remember('tutorials', 1, function () { return DB::select(DB::raw('SELECT tutorialid FROM assessments GROUP BY tutorialid HAVING(COUNT(*)) ORDER BY COUNT(*) DESC LIMIT 5 ;')); }); $out = ''; if ($tutorials == null) { return $out; } foreach ($tutorials as $tutorial_t) { $out .= "<div>"; $tutorial = Tutorials::find($tutorial_t->tutorialid); $string = $tutorial->content; $string = strlen($string) > 753 ? substr($string, 0, 750) . '...' : $string; $string = wordwrap($string, 200, "<br>\n"); $out .= '<h2 class="title">' . $tutorial->name . '</h2>'; $out .= '<label class="label label-success">Subject </label>' . Subject::find($tutorial->subjectid)->subjectname . ' <label class="label label-success">Grade</label> :- ' . Subject::find($tutorial->subjectid)->grade; $out .= " <br> <br>" . $string; $out .= " <br><a class='btn btn-large' href='/tutorial/" . $tutorial->id . "/'>Read More ...</a> <br> <br> <br>"; $out .= '</div>'; } return $out; }); $latest_tutorials = Cache::remember('latest_tutorials', 20, function () { $tutorials = Cache::remember('latest_tutes', 20, function () { return DB::select(DB::raw('SELECT id from tutorials WHERE published= 1 ORDER BY `created_at` DESC LIMIT 5;')); }); $out = ''; if ($tutorials == null) { return $out; } foreach ($tutorials as $tutorial_t) { $tutorial = Tutorials::find($tutorial_t->id); $string = $tutorial->content; $string = preg_replace("/<img[^>]+\\>/i", "", $string); $images = self::getTutorialImages($tutorial->content); if ($images == null) { // continue; } $string = strlen($string) > 753 ? substr($string, 0, 750) . '...' : $string; $string = wordwrap($string, 200, "<br>\n"); $out .= "<div>"; $out .= '<h2 class="title">' . $tutorial->name . '</h2>'; $out .= '<p style="display:inline-block;"> <label class="label label-success">Subject </label>' . Subject::find($tutorial->subjectid)->subjectname . ' <label class="label label-success">Grade</label> :- ' . Subject::find($tutorial->subjectid)->grade . '</p>'; $out .= " <br> <br>" . $string; $out .= "<img src='" . $images[rand(0, count($images) - 1)] . "' class='' style='height:100%;'/>"; $out .= " <br><a class='btn btn-large' href='/tutorial/" . $tutorial->id . "/'>Read More ...</a> <br> <br> <br>"; $out .= '</div>'; } return $out; }); $topstudents = Cache::remember('topstudents', 20, function () { $out = ''; $topstudentlist = Cache::remember('topstudentlist', 20, function () { return DB::select(DB::raw('SELECT studentid as sid,AVG(marks) as average FROM assessments WHERE `created_at` >= CURDATE() - INTERVAL 7 DAY GROUP BY studentid ORDER BY average DESC LIMIT 0,5;')); }); if ($topstudentlist == null) { return $out; } foreach ($topstudentlist as $student) { $user = User::find($student->sid); $url = Gravatarer::make(['email' => $user->email, 'size' => 200, 'defaultImage' => 'mm', 'rating' => 'g'])->url(); $out .= "<div>"; $out .= "<img style='clear:left;' class='avatar' alt='" . $user->email . "' src='" . $url . "'/>\n\t\t<br><strong>Name:</strong>" . $user->first_name . ' ' . $user->last_name . ''; $out .= "<br><label class='label label-success'>Average Score</label> is " . (int) $student->average . ""; $out .= "</div>"; } return $out; }); $add = ['tutorialslides' => $tutorialslides, 'latesttutorialslides' => $latest_tutorials, 'topstudents' => $topstudents]; return $theme->scope('index', $add)->content(); }
<th>Related Tutorial</th> <th>Submitted On</th> <th>Last Updated</th> <th>Marks</th> </tr> </thead> <tbody> <?php $assessments = Assessments::where('studentid', '=', Sentry::getUser()->id)->get(); foreach ($assessments as $assessment) { $subjectid = $assessment->subjectid; $subject = Subject::find($subjectid); $teacherid = $assessment->teacherid; $teacher = User::find($teacherid); $tutorialid = $assessment->tutorialid; $tutorial = Tutorials::find($tutorialid); echo "<tr>"; echo "<td>"; echo $assessment->id; echo "</td>"; echo "<td>"; echo "<a href='/assessment/update/" . $assessment->id . "'>{$assessment->title}"; echo "</td>"; echo "<td>"; echo $subject->subjectname; echo "</td>"; echo "<td>"; echo $teacher->first_name . ' ' . $teacher->last_name; echo "</td>"; echo "<td>"; echo $tutorial->name;
public function submit() { $userid = Sentry::getUser()->id; $user = Sentry::getUser(); $student = Student::findOrFail($user->id); $ssubjects = $student->extra; $subjects = unserialize($ssubjects); $truth = self::subjectValidator($user->id, $subjects, Input::get('subject')); if ($truth == 0) { return Redirect::to(URL::previous()); } $messages = array('title.required' => 'The :attribute is Required.', 'related_tutorial.unique' => 'You have already submitted a Assessment for this tutorial. Please Update it.You can only submit a Assessment Per Tutorial', 'required' => 'The :attribute is Required'); $validator = Validator::make(Input::all(), array('id' => 'required', 'title' => 'required|max:128|min:5', 'description' => 'max:1024', 'related_tutorial' => "required|unique:assessments,tutorialid,NULL,id,studentid," . $userid, 'submitted_to' => 'required', 'subject' => 'required', 'assessment_type' => 'required'), $messages); if ($validator->fails()) { Input::flash(); return Redirect::to('/assessment/submit')->withErrors($validator); } $assessment = new Assessments(); $assessment->title = Input::get('title'); $assessment->description = Input::get('description'); $assessment->assessmenttype = Input::get('assessment_type'); $assessment->tutorialid = Input::get('related_tutorial'); $assessment->teacherid = Input::get('submitted_to'); $assessment->subjectid = Input::get('subject'); $assessment->studentid = Sentry::getUser()->id; $assessment->save(); $newassessment = DB::table('assessments')->orderby('id', 'desc')->first(); $assessment = Assessments::find($newassessment->id); if (Input::hasFile('attachments')) { $files = Input::file('attachments'); foreach ($files as $file) { if ($file) { $name = $file->getClientOriginalName(); File::makeDirectory(app_path() . '/attachments/assessment-' . $newassessment->id . '/', 777); $file->move(app_path() . '/attachments/assessment-' . $newassessment->id . '/', $name); } } } $data = array(); $data['fname'] = User::find($assessment->studentid)->first_name; $data['lname'] = User::find($assessment->studentid)->last_name; $data['tutorial'] = Tutorials::find($assessment->tutorialid)->name; $data['submittedby'] = User::find($assessment->studentid)->first_name . ' ' . User::find($assessment->studentid)->last_name; $data['submittedon'] = $assessment->created_at; Mail::send('emails.assessmentsubmit', $data, function ($message) use($assessment) { $userid = $assessment->teacherid; $user = Sentry::findUserById($userid); $tutorial = Tutorials::find($assessment->tutorialid); $submittedby = User::find($assessment->studentid); $fullname = $user->first_name . ' ' . $user->last_name; $message->to($user->getLogin(), $fullname)->subject('New Assessment Submitted by ' . $submittedby->first_name . ' ' . $submittedby->last_name . ' on Tutorial ' . $tutorial->name); }); // Input::file('attachment1')->move(app_path().'/attachments/assessment-'.$assessment->id.'/',$name); $theme = Theme::uses('site')->layout('default'); $view = ['id' => $newassessment->id]; $theme->asset()->container('datatables')->writeScript('inline-script', '$(document).ready(function(){ $(\'#attachment\').dataTable({ "sDom": "<\'row\'<\'col-xs-5 col-sm-5 col-md-5\'l><\'col-xs-5 col-sm-5 col-md-5\'f>r>t<\'row\'<\'col-xs-5 col-sm-5 col-md-5\'i><\'col-xs-5 col-sm-5 col-md-5\'p>>", "oLanguage": { "sLengthMenu": "_MENU_ ' . ' Attachments per page" }, "sPagination":"bootstrap" }); });'); return $theme->scope('assessment.update', $view)->render(); }
private function updatetutorial($id) { $tutorial = Tutorials::find($id); $tutorial->name = Input::get('title'); $tutorial->description = Input::get('description'); $tutorial->content = Input::get('tutorial'); $examt = array(); if (Input::get('examstruth') == 'on') { $examt['true'] = true; $checkexamssubmit = DB::select(DB::raw('SELECT COUNT(`id`) as `exists` FROM `exams` WHERE `id` = ' . Input::get('exams', 0) . '')); if ($checkexamssubmit[0]->exists) { $examt['id'] = Input::get('exams'); } else { $examt['true'] = false; } } else { $examt['true'] = false; } $examt = serialize($examt); $tutorial->exams = $examt; unset($examt); if (Input::get('published') == 'on') { $tutorial->published = 1; } else { $tutorial->published = 0; } // if(Input::hasFile('attachments')){ $files = Input::file('attachments'); foreach ($files as $file) { if ($file) { $name = $file->getClientOriginalName(); $file->move(app_path() . '/attachments/tutorial-' . $tutorial->id . '/', $name); } } $tutorial->save(); return; }
if ($assessment->assessmenttype == 'exam') { ?> <div class="clearfix visible-sm visible-xs"></div> <div class="col-xs-12 col-sm-12 col-md-6 col-lg-6"> <h4>Table of Failed Questions and Answers by Student</h4> <table id="questionfail" class="table table-striped table-bordered bootstrap-datatable datatable"> <thead> <tr> <th>Question No</th> <th>Question</th> <th>Answer(s)</th> </tr> </thead> <tbody> <?php $examdata = unserialize(Tutorials::find($assessment->tutorialid)->exams); $wronganswers = File::get(app_path() . '/files/assessment/' . $assessment->id . '/exam-' . $examdata['id'] . '/questionfailed.json'); $examy = Exams::findOrFail($examdata['id']); $hash = $examy->hash; $wronganswers = json_decode($wronganswers, true); if (isset($wronganswers['questions'])) { foreach ($wronganswers['questions'] as $key => $value) { echo "<tr><td>" . $key . "</td>" . "<td>" . $value . "</td>"; echo "<td>"; $examdata_encoded = File::get(app_path() . '/files/exam-' . $examy->id . '/' . $hash . '.json'); $examdata = json_decode($examdata_encoded, true); foreach ($wronganswers['questions_fail'][$key][0] as $answerr) { if ($answerr != 0) { echo "<b>" . $answerr . "</b>. "; echo $examdata['questiondata']['question'][$key]['checkboxdata'][$answerr] . "<br>"; }
public function markExam($dash, $aid, $eid) { $assessment = Assessments::find($aid); $exam = Exams::find($eid); $tutorial = Tutorials::find($assessment->tutorialid); $questionpath = app_path() . '/files/exam-' . $eid . '/' . $exam->hash . '.json'; $studentanswer = app_path() . '/files/assessment/' . $aid . '/exam-' . $eid . '/questiondata.json'; $answers = File::get($questionpath); $bystudent = File::get($studentanswer); unset($studentanswer); $realcount = $exam->totalquestions; $json = json_decode($answers, true); settype($realcount, 'float'); $markscount = 0.0; settype($markscount, 'float'); $marksinc = 100.0 / $realcount; settype($realcount, 'integer'); $questionfailed = []; $studentanswer = json_decode($bystudent, true); $questioncount = Session::put('questioncount_key', 1); for ($questioncount = 0; $questioncount <= $realcount;) { $questioncount++; $acception = []; if (isset($studentanswer['answers'][$questioncount][1])) { $answerfailed = array(); if ($studentanswer['answers'][$questioncount][1] == 0 || $studentanswer['answers'][$questioncount][1] == "0") { //Adding 0 Marks if the Question Left Unanswered. $markscount += 0; } else { $ccount = 0; $answerfromstudent = $studentanswer['answers'][$questioncount]; if (isset($json['questiondata']['question'][$questioncount]['answers'][0])) { $ccount += 1; //Setting Simple Variable $a0 = $json['questiondata']['question'][$questioncount]['answers'][0]; $acception[] = self::checkAnswer($a0, $answerfromstudent); if (self::checkAnswer($a0, $answerfromstudent) == 0) { $answerfailed[] = $answerfromstudent; } } if (isset($json['questiondata']['question'][$questioncount]['answers'][1])) { $ccount += 1; //Setting Simple Variable $a1 = $json['questiondata']['question'][$questioncount]['answers'][1]; $acception[] = self::checkAnswer($a1, $answerfromstudent); if (self::checkAnswer($a1, $answerfromstudent) == 0) { $answerfailed[] = $answerfromstudent; } } if (isset($json['questiondata']['question'][$questioncount]['answers'][2])) { $ccount += 1; //Setting Simple Variable $a2 = $json['questiondata']['question'][$questioncount]['answers'][2]; $acception[] = self::checkAnswer($a2, $answerfromstudent); if (self::checkAnswer($a2, $answerfromstudent) == 0) { $answerfailed[] = $answerfromstudent; } } if (isset($json['questiondata']['question'][$questioncount]['answers'][3])) { $ccount += 1; //Setting Simple Variable $a3 = $json['questiondata']['question'][$questioncount]['answers'][3]; $acception[] = self::checkAnswer($a3, $answerfromstudent); if (self::checkAnswer($a3, $answerfromstudent) == 0) { $answerfailed[] = $answerfromstudent; } } if (isset($json['questiondata']['question'][$questioncount]['answers'][4])) { $ccount += 1; //Setting Simple Variable $a4 = $json['questiondata']['question'][$questioncount]['answers'][4]; $acception[] = self::checkAnswer($a4, $answerfromstudent); if (self::checkAnswer($a4, $answerfromstudent) == 0) { $answerfailed[] = $answerfromstudent; } } $resulttt = array_unique($acception); $counted = array_count_values($acception); if (isset($counted[1])) { if ($counted[1] == $ccount) { $markscount += $marksinc; } else { $questionfailed['questions'][$questioncount] = $json['questiondata']['questions'][$questioncount]; $questionfailed['questions_fail'][$questioncount] = $answerfailed; unset($answerfailed); } } unset($acception); } } } $failedquestions = json_encode($questionfailed); file_put_contents(app_path() . '/files/assessment/' . $assessment->id . '/exam-' . $exam->id . '/questionfailed.json', $failedquestions); $assessment->marks = $markscount; $assessment->save(); return Redirect::to(URL::previous()); }
public function tutorial($id) { return Cache::remember('tutorial' . $id, 60, function () use($id) { return Tutorials::find($id); }); }