/** * Delete the resource link from the database * * @param LTI_Resource_Link $resource_link * @return bool */ public function Resource_Link_delete($resource_link) { $key = $resource_link->getKey(); $id = $resource_link->getId(); // 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) AND (primary_context_id = :id)'; $query = $this->db->prepare($sql); $query->bindValue('key', $key, PDO::PARAM_STR); $query->bindValue('id', $id, PDO::PARAM_STR); $ok = $query->execute(); // Delete users if ($ok) { $sql = 'DELETE FROM ' . $this->dbTableNamePrefix . LTI_Data_Connector::USER_TABLE_NAME . ' ' . 'WHERE (consumer_key = :key) AND (context_id = :id)'; $query = $this->db->prepare($sql); $query->bindValue('key', $key, PDO::PARAM_STR); $query->bindValue('id', $id, PDO::PARAM_STR); $ok = $query->execute(); } // Update any resource links for which this is the primary resource link if ($ok) { $sql = 'UPDATE ' . $this->dbTableNamePrefix . LTI_Data_Connector::RESOURCE_LINK_TABLE_NAME . ' ' . 'SET primary_consumer_key = NULL AND primary_context_id = NULL ' . 'WHERE (consumer_key = :key) AND (context_id = :id)'; $query = $this->db->prepare($sql); $query->bindValue('key', $key, PDO::PARAM_STR); $query->bindValue('id', $id, PDO::PARAM_STR); $ok = $query->execute(); } // Delete resource link if ($ok) { $sql = 'DELETE FROM ' . $this->dbTableNamePrefix . LTI_Data_Connector::RESOURCE_LINK_TABLE_NAME . ' ' . 'WHERE (consumer_key = :key) AND (context_id = :id)'; $query = $this->db->prepare($sql); $query->bindValue('key', $key, PDO::PARAM_STR); $query->bindValue('id', $id, PDO::PARAM_STR); $ok = $query->execute(); } if ($ok) { $resource_link->initialise(); } return $ok; }