123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279 |
- <?php
- /**
- * This file is part of chamilo-pens.
- *
- * chamilo-pens 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.
- *
- * chamilo-pens 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 chamilo-pens. If not, see <http://www.gnu.org/licenses/>.
- */
- /**
- * ChamiloPens.
- *
- * This file provides the ChamiloPens class
- *
- * @author Guillaume Viguier-Just <guillaume@viguierjust.com>
- * @licence http://www.gnu.org/licenses/gpl.txt
- */
- require_once __DIR__.'/../../main/inc/global.inc.php';
- require_once __DIR__.'/lib/pens.php';
- /**
- * ChamiloPens.
- *
- * Model class that stores a PENS request made to a Chamilo server into the database
- *
- * @author Guillaume Viguier-Just <guillaume@viguierjust.com>
- * @licence http://www.gnu.org/licenses/gpl.txt
- */
- class ChamiloPens extends Plugin
- {
- /**
- * Database table to be used.
- */
- const TABLE_NAME = "plugin_pens";
- /**
- * Id of the object.
- *
- * @var int
- */
- protected $_id = null;
- /**
- * PENS Version to be used. Currently, the only valid value is 1.0.0. Required.
- *
- * @var string
- */
- protected $_pens_version = null;
- /**
- * Package type being used. The only valid values are aicc-pkg, scorm-pif, ims-qti. Required.
- *
- * @var string
- */
- protected $_package_type = null;
- /**
- * Package type version. Required.
- *
- * @var string
- */
- protected $_package_type_version = null;
- /**
- * Package format. The only valid values are zip, url, jar, war and xml. Required.
- *
- * @var string
- */
- protected $_package_format = null;
- /**
- * Package id. Requires a valid URI according to RFC 2396. Required.
- *
- * @var string
- */
- protected $_package_id = null;
- /**
- * Name or ID for client submitting the content package to the target system. Required.
- *
- * @var string
- */
- protected $_client = null;
- /**
- * Unstructured character string that may be used to transfer vendor-specific data such as processing hints or deployment information. Optional.
- *
- * @var string
- */
- protected $_vendor_data = null;
- /**
- * Package name.
- *
- * @var string
- */
- protected $_package_name = null;
- /**
- * Date of creation.
- *
- * @var DateTime
- */
- protected $_created_at = null;
- /**
- * Update date.
- *
- * @var DateTime
- */
- protected $_updated_at = null;
- /**
- * Constructor. Takes a PENSRequest as an argument.
- *
- * @param object $request Request
- */
- public function __construct($request)
- {
- if ($request instanceof PENSRequest) {
- $this->_id = 0;
- $this->_pens_version = $request->getPensVersion();
- $this->_package_type = $request->getPackageType();
- $this->_package_type_version = $request->getPackageTypeVersion();
- $this->_package_format = $request->getPackageFormat();
- $this->_package_id = $request->getPackageId();
- $this->_client = $request->getClient();
- $this->_vendor_data = $request->getVendorData();
- $this->_package_name = $request->getFilename();
- } else {
- if (is_array($request)) {
- $this->_id = $request['id'];
- $this->_pens_version = $request['pens_version'];
- $this->_package_type = $request['package_type'];
- $this->_package_type_version = $request['package_type_version'];
- $this->_package_format = $request['package_format'];
- $this->_package_id = $request['package_id'];
- $this->_client = $request['client'];
- $this->_vendor_data = $request['vendor_data'];
- $this->_package_name = $request['package_name'];
- $this->_created_at = new DateTime($request['created_at'], new DateTimeZone('UTC'));
- if (!empty($request['updated_at'])) {
- $this->_updated_at = new DateTime($request['updated_at'], new DateTimeZone('UTC'));
- }
- }
- }
- }
- /**
- * Saves the object in the DB.
- */
- public function save()
- {
- $clean_package_type_version = Database::escape_string($this->_package_type_version);
- $clean_package_id = Database::escape_string($this->_package_id);
- $clean_client = Database::escape_string($this->_client);
- $clean_vendor_data = Database::escape_string($this->_vendor_data);
- $created_at = api_get_utc_datetime();
- $table = Database::get_main_table(self::TABLE_NAME);
- $sql_query = "INSERT INTO $table (pens_version, package_type, package_type_version, package_format, package_id, client, vendor_data, package_name, created_at) VALUES (".
- "'".$this->_pens_version."', ".
- "'".$this->_package_type."', ".
- "'".$clean_package_type_version."', ".
- "'".$this->_package_format."', ".
- "'".$clean_package_id."', ".
- "'".$clean_client."', ".
- "'".$clean_vendor_data."', ".
- "'".$this->_package_name."', ".
- "'".$created_at."') ON DUPLICATE KEY UPDATE ".
- "pens_version = VALUES(pens_version), ".
- "package_type = VALUES(package_type), ".
- "package_type_version = VALUES(package_type_version), ".
- "package_format = VALUES(package_format), ".
- "client = VALUES(client), ".
- "vendor_data = VALUES(vendor_data), ".
- "package_name = VALUES(package_name), ".
- "updated_at = '".$created_at."';";
- Database::query($sql_query);
- }
- /**
- * Returns a ChamiloPens object, based on package id.
- *
- * @param string $package_id Package id
- *
- * @return ChamiloPens|null
- */
- public static function findByPackageId($package_id)
- {
- $table = Database::get_main_table(self::TABLE_NAME);
- $sql_query = "SELECT * FROM $table WHERE package_id = '".$package_id."';";
- $results = Database::query($sql_query);
- $number = Database::num_rows($results);
- if ($number == 1) {
- $obj = Database::fetch_assoc($results);
- return new ChamiloPens($obj);
- } else {
- return null;
- }
- }
- /**
- * Returns an array of all the objects of the DB.
- *
- * @return array Array of ChamiloPens objects
- */
- public static function findAll()
- {
- $table = Database::get_main_table(self::TABLE_NAME);
- $sql_query = "SELECT * FROM $table ORDER BY created_at;";
- $results = Database::query($sql_query);
- $return = [];
- while ($assoc = Database::fetch_assoc($results)) {
- $return[] = new ChamiloPens($assoc);
- }
- return $return;
- }
- public function getId()
- {
- return $this->_id;
- }
- public function getPensVersion()
- {
- return $this->_pens_version;
- }
- public function getPackageType()
- {
- return $this->_package_type;
- }
- public function getPackageTypeVersion()
- {
- return $this->_package_type_version;
- }
- public function getPackageFormat()
- {
- return $this->_package_format;
- }
- public function getPackageId()
- {
- return $this->_package_id;
- }
- public function getClient()
- {
- return $this->_client;
- }
- public function getVendorData()
- {
- return $this->_vendor_data;
- }
- public function getPackageName()
- {
- return $this->_package_name;
- }
- public function getCreatedAt()
- {
- return $this->_created_at;
- }
- }
|