From 0bae60389bd020a02be5554516b86336e651e237 Mon Sep 17 00:00:00 2001 From: Jun Pataleta Date: Thu, 13 Oct 2016 14:07:46 +0800 Subject: [PATCH] New context type property for Context class * Also, assign context type to the ToolProvider's context instance if a 'context_type' parameter was submitted thru POST --- src/ToolProvider/Context.php | 6 ++++++ .../DataConnector/DataConnector_mysql.php | 16 ++++++++++------ .../DataConnector/DataConnector_pdo.php | 13 ++++++++----- src/ToolProvider/ToolProvider.php | 3 +++ 4 files changed, 27 insertions(+), 11 deletions(-) diff --git a/src/ToolProvider/Context.php b/src/ToolProvider/Context.php index 6f585ad..5a0c784 100644 --- a/src/ToolProvider/Context.php +++ b/src/ToolProvider/Context.php @@ -35,6 +35,12 @@ class Context * @var array $settings */ public $settings = null; +/** + * Context type. + * + * @var string $type + */ + public $type = null; /** * Date/time when the object was created. * diff --git a/src/ToolProvider/DataConnector/DataConnector_mysql.php b/src/ToolProvider/DataConnector/DataConnector_mysql.php index c0dc1ce..844a42c 100644 --- a/src/ToolProvider/DataConnector/DataConnector_mysql.php +++ b/src/ToolProvider/DataConnector/DataConnector_mysql.php @@ -390,12 +390,12 @@ public function loadContext($context) $ok = false; if (!empty($context->getRecordId())) { - $sql = sprintf('SELECT context_pk, consumer_pk, lti_context_id, settings, created, updated ' . + $sql = sprintf('SELECT context_pk, consumer_pk, lti_context_id, type, settings, created, updated ' . "FROM {$this->dbTableNamePrefix}" . DataConnector::CONTEXT_TABLE_NAME . ' ' . 'WHERE (context_pk = %d)', $context->getRecordId()); } else { - $sql = sprintf('SELECT context_pk, consumer_pk, lti_context_id, settings, created, updated ' . + $sql = sprintf('SELECT context_pk, consumer_pk, lti_context_id, type, settings, created, updated ' . "FROM {$this->dbTableNamePrefix}" . DataConnector::CONTEXT_TABLE_NAME . ' ' . 'WHERE (consumer_pk = %d) AND (lti_context_id = %s)', $context->getConsumer()->getRecordId(), DataConnector::quoted($context->ltiContextId)); @@ -407,6 +407,7 @@ public function loadContext($context) $context->setRecordId(intval($row->context_pk)); $context->setConsumerId(intval($row->consumer_pk)); $context->ltiContextId = $row->lti_context_id; + $context->type = $row->type; $settings = unserialize($row->settings); if (!is_array($settings)) { $settings = array(); @@ -439,17 +440,20 @@ public function saveContext($context) $consumer_pk = $context->getConsumer()->getRecordId(); if (empty($id)) { $sql = sprintf("INSERT INTO {$this->dbTableNamePrefix}" . DataConnector::CONTEXT_TABLE_NAME . ' (consumer_pk, lti_context_id, ' . - 'settings, created, updated) ' . - 'VALUES (%d, %s, %s, %s, %s)', + 'type, settings, created, updated) ' . + 'VALUES (%d, %s, %s, %s, %s, %s)', $consumer_pk, DataConnector::quoted($context->ltiContextId), + DataConnector::quoted($context->type), DataConnector::quoted($settingsValue), DataConnector::quoted($now), DataConnector::quoted($now)); } else { $sql = sprintf("UPDATE {$this->dbTableNamePrefix}" . DataConnector::CONTEXT_TABLE_NAME . ' SET ' . - 'lti_context_id = %s, settings = %s, '. + 'lti_context_id = %s, type = %s, settings = %s, '. 'updated = %s' . 'WHERE (consumer_pk = %d) AND (context_pk = %d)', - DataConnector::quoted($context->ltiContextId), DataConnector::quoted($settingsValue), + DataConnector::quoted($context->ltiContextId), + DataConnector::quoted($context->type), + DataConnector::quoted($settingsValue), DataConnector::quoted($now), $consumer_pk, $id); } $ok = mysql_query($sql); diff --git a/src/ToolProvider/DataConnector/DataConnector_pdo.php b/src/ToolProvider/DataConnector/DataConnector_pdo.php index 3528aca..9453d61 100644 --- a/src/ToolProvider/DataConnector/DataConnector_pdo.php +++ b/src/ToolProvider/DataConnector/DataConnector_pdo.php @@ -452,13 +452,13 @@ public function loadContext($context) $ok = false; if (!empty($context->getRecordId())) { - $sql = 'SELECT context_pk, consumer_pk, lti_context_id, settings, created, updated ' . + $sql = 'SELECT context_pk, consumer_pk, lti_context_id, type, settings, created, updated ' . "FROM {$this->dbTableNamePrefix}" . DataConnector::CONTEXT_TABLE_NAME . ' ' . 'WHERE (context_pk = :id)'; $query = $this->db->prepare($sql); $query->bindValue('id', $context->getRecordId(), PDO::PARAM_INT); } else { - $sql = 'SELECT context_pk, consumer_pk, lti_context_id, settings, created, updated ' . + $sql = 'SELECT context_pk, consumer_pk, lti_context_id, type, settings, created, updated ' . "FROM {$this->dbTableNamePrefix}" . DataConnector::CONTEXT_TABLE_NAME . ' ' . 'WHERE (consumer_pk = :cid) AND (lti_context_id = :ctx)'; $query = $this->db->prepare($sql); @@ -475,6 +475,7 @@ public function loadContext($context) $context->setRecordId(intval($row['context_pk'])); $context->setConsumerId(intval($row['consumer_pk'])); $context->ltiContextId = $row['lti_context_id']; + $context->type = $row['type']; $settings = unserialize($row['settings']); if (!is_array($settings)) { $settings = array(); @@ -505,21 +506,23 @@ public function saveContext($context) $consumer_pk = $context->getConsumer()->getRecordId(); if (empty($id)) { $sql = "INSERT INTO {$this->dbTableNamePrefix}" . DataConnector::CONTEXT_TABLE_NAME . ' (consumer_pk, lti_context_id, ' . - 'settings, created, updated) ' . - 'VALUES (:cid, :ctx, :settings, :created, :updated)'; + 'type, settings, created, updated) ' . + 'VALUES (:cid, :ctx, :type, :settings, :created, :updated)'; $query = $this->db->prepare($sql); $query->bindValue('cid', $consumer_pk, PDO::PARAM_INT); $query->bindValue('ctx', $context->ltiContextId, PDO::PARAM_STR); + $query->bindValue('type', $context->type, PDO::PARAM_STR); $query->bindValue('settings', $settingsValue, PDO::PARAM_STR); $query->bindValue('created', $now, PDO::PARAM_STR); $query->bindValue('updated', $now, PDO::PARAM_STR); } else { $sql = "UPDATE {$this->dbTableNamePrefix}" . DataConnector::CONTEXT_TABLE_NAME . ' SET ' . - 'lti_context_id = :ctx, settings = :settings, '. + 'lti_context_id = :ctx, type = :type, settings = :settings, '. 'updated = :updated ' . 'WHERE (consumer_pk = :cid) AND (context_pk = :ctxid)'; $query = $this->db->prepare($sql); $query->bindValue('ctx', $context->ltiContextId, PDO::PARAM_STR); + $query->bindValue('type', $context->type, PDO::PARAM_STR); $query->bindValue('settings', $settingsValue, PDO::PARAM_STR); $query->bindValue('updated', $now, PDO::PARAM_STR); $query->bindValue('cid', $consumer_pk, PDO::PARAM_INT); diff --git a/src/ToolProvider/ToolProvider.php b/src/ToolProvider/ToolProvider.php index b78b03e..27cbd6e 100644 --- a/src/ToolProvider/ToolProvider.php +++ b/src/ToolProvider/ToolProvider.php @@ -983,6 +983,9 @@ private function authenticate() if (empty($title)) { $title = "Course {$this->context->getId()}"; } + if (isset($_POST['context_type'])) { + $this->context->type = trim($_POST['context_type']); + } $this->context->title = $title; }