AutorÃa | Ultima modificación | Ver Log |
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* File for training_data_storage class
*/
use phpbrowscap\Browscap;
/**
* Storage Class creates the object class element
*
* @package report_training
* @copyright 2016 Mark Heumueller <mark.heumueller@gmx.de>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class training_data_storage{
/**
* @var Object $instance holds the a instance of the class
*/
private static $instance;
/**
* init the instance for events.php
* @see db/events.php
*/
public function __construct() {
self::$instance = $this;
}
/**
* init the instace for events.php
* @return training_data_storage $instance
* @deprecated
*/
public static function getinstance() {
if (self::$instance === null) {
self::$instance = new self();
}
return self::$instance;
}
/**
* create the saved object
* @return int object id form db table
*/
public function training_user_loggedin() {
global $USER;
global $DB;
global $CFG;
$ipcurrent = getremoteaddr();
//var_dump($ipcurren);
$pluginsetting = $DB->get_record('report_training', array(), '*');
if ($pluginsetting->status == 0) {
return 0;
}
if ($pluginsetting->adminlog == 0) {
if ($this->getusersystemrole($USER->id) == 'admin') {
return 0;
}
}
$currentdevicedata = new training_data_object();
if ($pluginsetting->anonymous == 0) {
$currentdevicedata->userid = $USER->id;
}
$currentdevicedata->userhash = training_data_object::get_identify_hash($_SESSION['USER']);
$alreadyexits = $DB->get_record_sql('SELECT * FROM {report_training_data} WHERE userhash = ?',
array($currentdevicedata->userhash));
if (!empty($alreadyexits) || is_null($alreadyexits)) {
return 0;
}
$currentdevicedata->userrole = $this->getusersystemrole($USER->id);
$currentdevicedata->objectdate = time();
$currentdevicedata->activemoodlelang = $USER->lang;
$browscap = new Browscap($CFG->dataroot.'/cache/');
$browscap->doAutoUpdate = false;
$info = $browscap->getBrowser();
//var_dump($info);
//die();
$devicetype = $info->Device_Type;
$currentdevicedata->devicetype = $devicetype;
$currentdevicedata->devicebrand = $info->Parent;
$currentdevicedata->devicesystem = $info->Platform;
$currentdevicedata->devicebrowser = $info->Browser;
$currentdevicedata->devicebrowserversion = $info->Version;
$currentdevicedata->devicepointingmethod = $info->Device_Pointing_Method;
$currentdevicedata->ip = $ipcurrent;
$insertid = $DB->insert_record('report_training_data', $currentdevicedata, true);
return $insertid;
}
/**
* insert the js enabled sizes
* @see ajaxcall.php
* @param int $insertid row_id
* @param int $devicedisplaysizex display width
* @param int $devicedisplaysizey display height
* @param int $devicewindowsizex window width
* @param int $devicewindowsizey window height
*/
public function report_training_update_screensize(
$insertid,
$devicedisplaysizex,
$devicedisplaysizey,
$devicewindowsizex,
$devicewindowsizey) {
global $DB;
$recordwithout = $DB->get_record('report_training_data', array('id' => $insertid), '*');
$recordwithout->devicedisplaysizex = $devicedisplaysizex;
$recordwithout->devicedisplaysizey = $devicedisplaysizey;
$recordwithout->devicewindowsizex = $devicewindowsizex;
$recordwithout->devicewindowsizey = $devicewindowsizey;
$DB->update_record('report_training_data', $recordwithout);
}
/**
* check if user is admin
* @return String isadmin
* @param int $userid userid
*/
private function getusersystemrole($userid) {
if (is_siteadmin($userid)) {
return "admin";
} else {
return "user";
}
}
/**
*
*/
public function getlastaccess() {
global $CFG;
global $DB;
global $USER;
$userid = $USER->id;
$records = $DB->get_records('report_training_lastaccess', ['userid' => $userid], "timeaccess DESC LIMIT 1");
if($records) {
$record_lastaccess = array_pop($records);
$now = time();
$record_course = $DB->get_record('course', ['id' => $record_lastaccess->courseid ]);
if($record_course && $record_course->visible && $record_course->startdate <= $now) {
$record_module = $DB->get_record('course_modules', ['course' => $record_lastaccess->courseid, 'id' => $record_lastaccess->cmid ]);
if($record_module && $record_module->visible && $record_module->visibleoncoursepage) {
$viewurl = $record_lastaccess->viewurl;
if (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') {
$viewurl = str_replace('http:', 'https:', $viewurl);
}
return $viewurl;
}
}
}
$viewurl= $CFG->wwwroot . '/my';
if (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') {
$viewurl = str_replace('http:', 'https:', $viewurl);
}
return $viewurl;
}
}