/**
  * Delete tool consumer object.
  *
  * @param ToolConsumer $consumer Consumer object
  *
  * @return boolean True if the tool consumer object was successfully deleted
  */
 public function deleteToolConsumer($consumer)
 {
     // Delete any nonce values for this consumer
     $sql = sprintf("DELETE FROM {$this->dbTableNamePrefix}" . DataConnector::NONCE_TABLE_NAME . ' WHERE consumer_pk = %d', $consumer->getRecordId());
     mysql_query($sql);
     // Delete any outstanding share keys for resource links for this consumer
     $sql = sprintf('DELETE sk ' . "FROM {$this->dbTableNamePrefix}" . DataConnector::RESOURCE_LINK_SHARE_KEY_TABLE_NAME . ' sk ' . "INNER JOIN {$this->dbTableNamePrefix}" . DataConnector::RESOURCE_LINK_TABLE_NAME . ' rl ON sk.resource_link_pk = rl.resource_link_pk ' . 'WHERE rl.consumer_pk = %d', $consumer->getRecordId());
     mysql_query($sql);
     // Delete any outstanding share keys for resource links for contexts in this consumer
     $sql = sprintf('DELETE sk ' . "FROM {$this->dbTableNamePrefix}" . DataConnector::RESOURCE_LINK_SHARE_KEY_TABLE_NAME . ' sk ' . "INNER JOIN {$this->dbTableNamePrefix}" . DataConnector::RESOURCE_LINK_TABLE_NAME . ' rl ON sk.resource_link_pk = rl.resource_link_pk ' . "INNER JOIN {$this->dbTableNamePrefix}" . DataConnector::CONTEXT_TABLE_NAME . ' c ON rl.context_pk = c.context_pk ' . 'WHERE c.consumer_pk = %d', $consumer->getRecordId());
     mysql_query($sql);
     // Delete any users in resource links for this consumer
     $sql = sprintf('DELETE u ' . "FROM {$this->dbTableNamePrefix}" . DataConnector::USER_RESULT_TABLE_NAME . ' u ' . "INNER JOIN {$this->dbTableNamePrefix}" . DataConnector::RESOURCE_LINK_TABLE_NAME . ' rl ON u.resource_link_pk = rl.resource_link_pk ' . 'WHERE rl.consumer_pk = %d', $consumer->getRecordId());
     mysql_query($sql);
     // Delete any users in resource links for contexts in this consumer
     $sql = sprintf('DELETE u ' . "FROM {$this->dbTableNamePrefix}" . DataConnector::USER_RESULT_TABLE_NAME . ' u ' . "INNER JOIN {$this->dbTableNamePrefix}" . DataConnector::RESOURCE_LINK_TABLE_NAME . ' rl ON u.resource_link_pk = rl.resource_link_pk ' . "INNER JOIN {$this->dbTableNamePrefix}" . DataConnector::CONTEXT_TABLE_NAME . ' c ON rl.context_pk = c.context_pk ' . 'WHERE c.consumer_pk = %d', $consumer->getRecordId());
     mysql_query($sql);
     // Update any resource links for which this consumer is acting as a primary resource link
     $sql = sprintf("UPDATE {$this->dbTableNamePrefix}" . DataConnector::RESOURCE_LINK_TABLE_NAME . ' prl ' . "INNER JOIN {$this->dbTableNamePrefix}" . DataConnector::RESOURCE_LINK_TABLE_NAME . ' rl ON prl.primary_resource_link_pk = rl.resource_link_pk ' . 'SET prl.primary_resource_link_pk = NULL, prl.share_approved = NULL ' . 'WHERE rl.consumer_pk = %d', $consumer->getRecordId());
     $ok = mysql_query($sql);
     // Update any resource links for contexts in which this consumer is acting as a primary resource link
     $sql = sprintf("UPDATE {$this->dbTableNamePrefix}" . DataConnector::RESOURCE_LINK_TABLE_NAME . ' prl ' . "INNER JOIN {$this->dbTableNamePrefix}" . DataConnector::RESOURCE_LINK_TABLE_NAME . ' rl ON prl.primary_resource_link_pk = rl.resource_link_pk ' . "INNER JOIN {$this->dbTableNamePrefix}" . DataConnector::CONTEXT_TABLE_NAME . ' c ON rl.context_pk = c.context_pk ' . 'SET prl.primary_resource_link_pk = NULL, prl.share_approved = NULL ' . 'WHERE c.consumer_pk = %d', $consumer->getRecordId());
     $ok = mysql_query($sql);
     // Delete any resource links for this consumer
     $sql = sprintf('DELETE rl ' . "FROM {$this->dbTableNamePrefix}" . DataConnector::RESOURCE_LINK_TABLE_NAME . ' rl ' . 'WHERE rl.consumer_pk = %d', $consumer->getRecordId());
     mysql_query($sql);
     // Delete any resource links for contexts in this consumer
     $sql = sprintf('DELETE rl ' . "FROM {$this->dbTableNamePrefix}" . DataConnector::RESOURCE_LINK_TABLE_NAME . ' rl ' . "INNER JOIN {$this->dbTableNamePrefix}" . DataConnector::CONTEXT_TABLE_NAME . ' c ON rl.context_pk = c.context_pk ' . 'WHERE c.consumer_pk = %d', $consumer->getRecordId());
     mysql_query($sql);
     // Delete any contexts for this consumer
     $sql = sprintf('DELETE c ' . "FROM {$this->dbTableNamePrefix}" . DataConnector::CONTEXT_TABLE_NAME . ' c ' . 'WHERE c.consumer_pk = %d', $consumer->getRecordId());
     mysql_query($sql);
     // Delete consumer
     $sql = sprintf('DELETE c ' . "FROM {$this->dbTableNamePrefix}" . DataConnector::CONSUMER_TABLE_NAME . ' c ' . 'WHERE c.consumer_pk = %d', $consumer->getRecordId());
     $ok = mysql_query($sql);
     if ($ok) {
         $consumer->initialize();
     }
     return $ok;
 }
Beispiel #2
0
 /**
  * Delete tool consumer object and related records.
  *
  * @param ToolConsumer $consumer Consumer object
  * @return boolean True if the tool consumer object was successfully deleted
  */
 public function deleteToolConsumer($consumer)
 {
     global $DB;
     $consumerpk = $consumer->getRecordId();
     $deletecondition = ['consumerid' => $consumerpk];
     // Delete any nonce values for this consumer.
     $DB->delete_records($this->noncetable, $deletecondition);
     // Delete any outstanding share keys for resource links for this consumer.
     $where = "resourcelinkid IN (\n                      SELECT rl.id\n                        FROM {{$this->resourcelinktable}} rl\n                       WHERE rl.consumerid = :consumerid\n                  )";
     $DB->delete_records_select($this->sharekeytable, $where, $deletecondition);
     // Delete any outstanding share keys for resource links for contexts in this consumer.
     $where = "resourcelinkid IN (\n                      SELECT rl.id\n                        FROM {{$this->resourcelinktable}} rl\n                  INNER JOIN {{$this->contexttable}} c\n                          ON rl.contextid = c.id\n                       WHERE c.consumerid = :consumerid\n                )";
     $DB->delete_records_select($this->sharekeytable, $where, $deletecondition);
     // Delete any users in resource links for this consumer.
     $where = "resourcelinkid IN (\n                    SELECT rl.id\n                      FROM {{$this->resourcelinktable}} rl\n                     WHERE rl.consumerid = :consumerid\n                )";
     $DB->delete_records_select($this->userresulttable, $where, $deletecondition);
     // Delete any users in resource links for contexts in this consumer.
     $where = "resourcelinkid IN (\n                         SELECT rl.id\n                           FROM {{$this->resourcelinktable}} rl\n                     INNER JOIN {{$this->contexttable}} c\n                             ON rl.contextid = c.id\n                          WHERE c.consumerid = :consumerid\n                )";
     $DB->delete_records_select($this->userresulttable, $where, $deletecondition);
     // Update any resource links for which this consumer is acting as a primary resource link.
     $where = "primaryresourcelinkid IN (\n                    SELECT rl.id\n                      FROM {{$this->resourcelinktable}} rl\n                     WHERE rl.consumerid = :consumerid\n                )";
     $updaterecords = $DB->get_records_select($this->resourcelinktable, $where, $deletecondition);
     foreach ($updaterecords as $record) {
         $record->primaryresourcelinkid = null;
         $record->shareapproved = null;
         $DB->update_record($this->resourcelinktable, $record);
     }
     // Update any resource links for contexts in which this consumer is acting as a primary resource link.
     $where = "primaryresourcelinkid IN (\n                        SELECT rl.id\n                          FROM {{$this->resourcelinktable}} rl\n                    INNER JOIN {{$this->contexttable}} c\n                            ON rl.contextid = c.id\n                         WHERE c.consumerid = :consumerid\n                )";
     $updaterecords = $DB->get_records_select($this->resourcelinktable, $where, $deletecondition);
     foreach ($updaterecords as $record) {
         $record->primaryresourcelinkid = null;
         $record->shareapproved = null;
         $DB->update_record($this->resourcelinktable, $record);
     }
     // Delete any resource links for contexts in this consumer.
     $where = "contextid IN (\n                      SELECT c.id\n                        FROM {{$this->contexttable}} c\n                       WHERE c.consumerid = :consumerid\n                )";
     $DB->delete_records_select($this->resourcelinktable, $where, $deletecondition);
     // Delete any resource links for this consumer.
     $DB->delete_records($this->resourcelinktable, $deletecondition);
     // Delete any contexts for this consumer.
     $DB->delete_records($this->contexttable, $deletecondition);
     // Delete consumer.
     $DB->delete_records($this->consumertable, ['id' => $consumerpk]);
     $consumer->initialize();
     return true;
 }
 /**
  * Delete tool consumer object.
  *
  * @param ToolConsumer $consumer Consumer object
  *
  * @return boolean True if the tool consumer object was successfully deleted
  */
 public function deleteToolConsumer($consumer)
 {
     $id = $consumer->getRecordId();
     // Delete any nonce values for this consumer
     $sql = "DELETE FROM {$this->dbTableNamePrefix}" . DataConnector::NONCE_TABLE_NAME . ' WHERE consumer_pk = :id';
     $query = $this->db->prepare($sql);
     $query->bindValue('id', $id, PDO::PARAM_INT);
     $query->execute();
     // Delete any outstanding share keys for resource links for this consumer
     $sql = "DELETE FROM {$this->dbTableNamePrefix}" . DataConnector::RESOURCE_LINK_SHARE_KEY_TABLE_NAME . ' ' . "WHERE EXISTS (SELECT * FROM {$this->dbTableNamePrefix}" . DataConnector::RESOURCE_LINK_TABLE_NAME . ' rl ' . "WHERE ({$this->dbTableNamePrefix}" . DataConnector::RESOURCE_LINK_SHARE_KEY_TABLE_NAME . '.resource_link_pk = rl.resource_link_pk) AND (rl.consumer_pk = :id))';
     $query = $this->db->prepare($sql);
     $query->bindValue('id', $id, PDO::PARAM_INT);
     $query->execute();
     // Delete any outstanding share keys for resource links for contexts in this consumer
     $sql = "DELETE FROM {$this->dbTableNamePrefix}" . DataConnector::RESOURCE_LINK_SHARE_KEY_TABLE_NAME . ' ' . "WHERE EXISTS (SELECT * FROM {$this->dbTableNamePrefix}" . DataConnector::RESOURCE_LINK_TABLE_NAME . ' rl ' . "INNER JOIN {$this->dbTableNamePrefix}" . DataConnector::CONTEXT_TABLE_NAME . ' c ON rl.context_pk = c.context_pk ' . "WHERE ({$this->dbTableNamePrefix}" . DataConnector::RESOURCE_LINK_SHARE_KEY_TABLE_NAME . '.resource_link_pk = rl.resource_link_pk) AND (c.consumer_pk = :id))';
     $query = $this->db->prepare($sql);
     $query->bindValue('id', $id, PDO::PARAM_INT);
     $query->execute();
     // Delete any users in resource links for this consumer
     $sql = "DELETE FROM {$this->dbTableNamePrefix}" . DataConnector::USER_RESULT_TABLE_NAME . ' ' . "WHERE EXISTS (SELECT * FROM {$this->dbTableNamePrefix}" . DataConnector::RESOURCE_LINK_TABLE_NAME . ' rl ' . "WHERE ({$this->dbTableNamePrefix}" . DataConnector::USER_RESULT_TABLE_NAME . '.resource_link_pk = rl.resource_link_pk) AND (rl.consumer_pk = :id))';
     $query = $this->db->prepare($sql);
     $query->bindValue('id', $id, PDO::PARAM_INT);
     $query->execute();
     // Delete any users in resource links for contexts in this consumer
     $sql = "DELETE FROM {$this->dbTableNamePrefix}" . DataConnector::USER_RESULT_TABLE_NAME . ' ' . "WHERE EXISTS (SELECT * FROM {$this->dbTableNamePrefix}" . DataConnector::RESOURCE_LINK_TABLE_NAME . ' rl ' . "INNER JOIN {$this->dbTableNamePrefix}" . DataConnector::CONTEXT_TABLE_NAME . ' c ON rl.context_pk = c.context_pk ' . "WHERE ({$this->dbTableNamePrefix}" . DataConnector::USER_RESULT_TABLE_NAME . '.resource_link_pk = rl.resource_link_pk) AND (c.consumer_pk = :id))';
     $query = $this->db->prepare($sql);
     $query->bindValue('id', $id, PDO::PARAM_INT);
     $query->execute();
     // Update any resource links for which this consumer is acting as a primary resource link
     $sql = "UPDATE {$this->dbTableNamePrefix}" . DataConnector::RESOURCE_LINK_TABLE_NAME . ' ' . 'SET primary_resource_link_pk = NULL, share_approved = NULL ' . "WHERE EXISTS (SELECT * FROM {$this->dbTableNamePrefix}" . DataConnector::RESOURCE_LINK_TABLE_NAME . ' rl ' . "WHERE ({$this->dbTableNamePrefix}" . DataConnector::RESOURCE_LINK_TABLE_NAME . '.primary_resource_link_pk = rl.resource_link_pk) AND (rl.consumer_pk = :id))';
     $query = $this->db->prepare($sql);
     $query->bindValue('id', $id, PDO::PARAM_INT);
     $query->execute();
     // Update any resource links for contexts in which this consumer is acting as a primary resource link
     $sql = "UPDATE {$this->dbTableNamePrefix}" . DataConnector::RESOURCE_LINK_TABLE_NAME . ' ' . 'SET primary_resource_link_pk = NULL, share_approved = NULL ' . "WHERE EXISTS (SELECT * FROM {$this->dbTableNamePrefix}" . DataConnector::RESOURCE_LINK_TABLE_NAME . ' rl ' . "INNER JOIN {$this->dbTableNamePrefix}" . DataConnector::CONTEXT_TABLE_NAME . ' c ON rl.context_pk = c.context_pk ' . "WHERE ({$this->dbTableNamePrefix}" . DataConnector::RESOURCE_LINK_TABLE_NAME . '.primary_resource_link_pk = rl.resource_link_pk) AND (c.consumer_pk = :id))';
     $query = $this->db->prepare($sql);
     $query->bindValue('id', $id, PDO::PARAM_INT);
     $query->execute();
     // Delete any resource links for this consumer
     $sql = "DELETE FROM {$this->dbTableNamePrefix}" . DataConnector::RESOURCE_LINK_TABLE_NAME . ' ' . 'WHERE consumer_pk = :id';
     $query = $this->db->prepare($sql);
     $query->bindValue('id', $id, PDO::PARAM_INT);
     $query->execute();
     // Delete any resource links for contexts in this consumer
     $sql = "DELETE FROM {$this->dbTableNamePrefix}" . DataConnector::RESOURCE_LINK_TABLE_NAME . ' ' . "WHERE EXISTS (SELECT * FROM {$this->dbTableNamePrefix}" . DataConnector::CONTEXT_TABLE_NAME . ' c ' . "WHERE ({$this->dbTableNamePrefix}" . DataConnector::RESOURCE_LINK_TABLE_NAME . '.context_pk = c.context_pk) AND (c.consumer_pk = :id))';
     $query = $this->db->prepare($sql);
     $query->bindValue('id', $id, PDO::PARAM_INT);
     $query->execute();
     // Delete any contexts for this consumer
     $sql = "DELETE FROM {$this->dbTableNamePrefix}" . DataConnector::CONTEXT_TABLE_NAME . ' ' . 'WHERE consumer_pk = :id';
     $query = $this->db->prepare($sql);
     $query->bindValue('id', $id, PDO::PARAM_INT);
     $query->execute();
     // Delete consumer
     $sql = "DELETE FROM {$this->dbTableNamePrefix}" . DataConnector::CONSUMER_TABLE_NAME . ' ' . 'WHERE consumer_pk = :id';
     $query = $this->db->prepare($sql);
     $query->bindValue('id', $id, PDO::PARAM_INT);
     $ok = $query->execute();
     if ($ok) {
         $consumer->initialize();
     }
     return $ok;
 }
Beispiel #4
0
 /**
  * Fetches a resource link record that is associated with a ToolConsumer.
  *
  * @param ToolConsumer $consumer
  * @return ResourceLink
  */
 public function get_resourcelink_from_consumer(ToolConsumer $consumer)
 {
     global $DB;
     $resourcelink = null;
     if ($resourcelinkrecord = $DB->get_record($this->resourcelinktable, ['consumerid' => $consumer->getRecordId()], 'ltiresourcelinkkey')) {
         $resourcelink = ResourceLink::fromConsumer($consumer, $resourcelinkrecord->ltiresourcelinkkey);
     }
     return $resourcelink;
 }