Пример #1
0
                        <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>";
Пример #2
0
    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 . '&nbsp;&nbsp;&nbsp;&nbsp;
				<label class="label label-success">Grade</label> :- ' . Subject::find($tutorial->subjectid)->grade;
                $out .= "&nbsp;<br>&nbsp;<br>" . $string;
                $out .= "&nbsp;<br><a class='btn btn-large' href='/tutorial/" . $tutorial->id . "/'>Read More ...</a>&nbsp;<br>&nbsp;<br>&nbsp;<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 . '&nbsp;&nbsp;&nbsp;&nbsp;<label class="label label-success">Grade</label> :- ' . Subject::find($tutorial->subjectid)->grade . '</p>';
                $out .= "&nbsp;<br>&nbsp;<br>" . $string;
                $out .= "<img src='" . $images[rand(0, count($images) - 1)] . "' class='' style='height:100%;'/>";
                $out .= "&nbsp;<br><a class='btn btn-large' href='/tutorial/" . $tutorial->id . "/'>Read More ...</a>&nbsp;<br>&nbsp;<br>&nbsp;<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();
    }
Пример #3
0
                <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;
 }
Пример #6
0
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>";
                }
Пример #7
0
 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());
 }
Пример #8
0
 public function tutorial($id)
 {
     return Cache::remember('tutorial' . $id, 60, function () use($id) {
         return Tutorials::find($id);
     });
 }