/** * Delete the tool consumer from the database * * @param LTI_Tool_Consumer $consumer * @return bool */ public function Tool_Consumer_delete($consumer) { $key = $consumer->getKey(); // Delete any nonce values for this consumer $sql = 'DELETE FROM ' . $this->dbTableNamePrefix . LTI_Data_Connector::NONCE_TABLE_NAME . ' WHERE consumer_key = :key'; $query = $this->db->prepare($sql); $query->bindValue('key', $key, PDO::PARAM_STR); $query->execute(); // Delete any outstanding share keys for resource links for this consumer $sql = 'DELETE FROM ' . $this->dbTableNamePrefix . LTI_Data_Connector::RESOURCE_LINK_SHARE_KEY_TABLE_NAME . ' WHERE primary_consumer_key = :key'; $query = $this->db->prepare($sql); $query->bindValue('key', $key, PDO::PARAM_STR); $query->execute(); // Delete any users in resource links for this consumer $sql = 'DELETE FROM ' . $this->dbTableNamePrefix . LTI_Data_Connector::USER_TABLE_NAME . ' WHERE consumer_key = :key'; $query = $this->db->prepare($sql); $query->bindValue('key', $key, PDO::PARAM_STR); $query->execute(); // Update any resource links for which this consumer is acting as a primary resource link $sql = 'UPDATE ' . $this->dbTableNamePrefix . LTI_Data_Connector::RESOURCE_LINK_TABLE_NAME . ' ' . 'SET primary_consumer_key = NULL AND primary_context_id = NULL ' . 'WHERE primary_consumer_key = :key'; $query = $this->db->prepare($sql); $query->bindValue('key', $key, PDO::PARAM_STR); $query->execute(); // Delete any resource links for this consumer $sql = 'DELETE FROM ' . $this->dbTableNamePrefix . LTI_Data_Connector::RESOURCE_LINK_TABLE_NAME . ' WHERE consumer_key = :key'; $query = $this->db->prepare($sql); $query->bindValue('key', $key, PDO::PARAM_STR); $query->execute(); // Delete consumer $sql = 'DELETE FROM ' . $this->dbTableNamePrefix . LTI_Data_Connector::CONSUMER_TABLE_NAME . ' WHERE consumer_key = :key'; $query = $this->db->prepare($sql); $query->bindValue('key', $key, PDO::PARAM_STR); $ok = $query->execute(); if ($ok) { $consumer->initialise(); } return $ok; }