Beispiel #1
1
 /**
  * Delete plugin specific information.
  *
  * @param stdClass $instance
  * @return void
  */
 public function delete_instance($instance)
 {
     global $DB;
     // Get the tool associated with this instance.
     $tool = $DB->get_record('enrol_lti_tools', array('enrolid' => $instance->id), 'id', MUST_EXIST);
     // Delete any users associated with this tool.
     $DB->delete_records('enrol_lti_users', array('toolid' => $tool->id));
     // Get tool and consumer mappings.
     $rsmapping = $DB->get_recordset('enrol_lti_tool_consumer_map', array('toolid' => $tool->id));
     // Delete consumers that are linked to this tool and their related data.
     $dataconnector = new data_connector();
     foreach ($rsmapping as $mapping) {
         $consumer = new ToolConsumer(null, $dataconnector);
         $consumer->setRecordId($mapping->consumerid);
         $dataconnector->deleteToolConsumer($consumer);
     }
     $rsmapping->close();
     // Delete mapping records.
     $DB->delete_records('enrol_lti_tool_consumer_map', array('toolid' => $tool->id));
     // Delete the lti tool record.
     $DB->delete_records('enrol_lti_tools', array('id' => $tool->id));
     // Time for the parent to do it's thang, yeow.
     parent::delete_instance($instance);
 }
Beispiel #2
0
 /**
  * Test for data_connector::deleteToolConsumer().
  */
 public function test_delete_tool_consumer()
 {
     $dc = new data_connector();
     $data = ['name' => 'TestName', 'secret' => 'TestSecret', 'ltiversion' => ToolProvider::LTI_VERSION1];
     $consumer = new ToolConsumer(null, $dc);
     $consumer->name = $data['name'];
     $consumer->setKey('TestKey');
     $consumer->secret = $data['secret'];
     $consumer->save();
     $nonce = new ConsumerNonce($consumer, 'testnonce');
     $nonce->save();
     $context = Context::fromConsumer($consumer, 'testlticontext');
     $context->save();
     $resourcelink = ResourceLink::fromConsumer($consumer, 'testresourcelinkid');
     $resourcelink->setContextId($context->getRecordId());
     $resourcelink->save();
     $this->assertEquals($consumer->getRecordId(), $resourcelink->getConsumer()->getRecordId());
     $resourcelinkchild = ResourceLink::fromConsumer($consumer, 'testresourcelinkchildid');
     $resourcelinkchild->primaryResourceLinkId = $resourcelink->getRecordId();
     $resourcelinkchild->shareApproved = true;
     $resourcelinkchild->setContextId($context->getRecordId());
     $resourcelinkchild->save();
     $this->assertEquals($consumer->getRecordId(), $resourcelinkchild->getConsumer()->getRecordId());
     $this->assertEquals($resourcelink->getRecordId(), $resourcelinkchild->primaryResourceLinkId);
     $this->assertTrue($resourcelinkchild->shareApproved);
     $resourcelinkchild2 = clone $resourcelink;
     $resourcelinkchild2->setRecordId(null);
     $resourcelinkchild2->setConsumerId(null);
     $resourcelinkchild2->setContextId(0);
     $resourcelinkchild2->primaryResourceLinkId = $resourcelink->getRecordId();
     $resourcelinkchild2->shareApproved = true;
     $resourcelinkchild2->save();
     $this->assertNull($resourcelinkchild2->getConsumer()->getRecordId());
     $this->assertEquals(0, $resourcelinkchild2->getContextId());
     $this->assertNotEquals($resourcelink->getRecordId(), $resourcelinkchild2->getRecordId());
     $resourcelinksharekey = new ResourceLinkShareKey($resourcelink);
     $resourcelinksharekey->save();
     $user = User::fromResourceLink($resourcelink, '');
     $user->ltiResultSourcedId = 'testLtiResultSourcedId';
     $dc->saveUser($user);
     // Confirm that tool consumer deletion processing ends successfully.
     $this->assertTrue($dc->deleteToolConsumer($consumer));
     // Consumer object should have been initialised.
     foreach ($consumer as $key => $value) {
         $this->assertTrue(empty($value));
     }
     // Nonce record should have been deleted.
     $this->assertFalse($dc->loadConsumerNonce($nonce));
     // Share key record record should have been deleted.
     $this->assertFalse($dc->loadResourceLinkShareKey($resourcelinksharekey));
     // Resource record link should have been deleted.
     $this->assertFalse($dc->loadResourceLink($resourcelink));
     // Consumer record should have been deleted.
     $this->assertFalse($dc->loadToolConsumer($consumer));
     // Resource links for contexts in this consumer should have been deleted. Even child ones.
     $this->assertFalse($dc->loadResourceLink($resourcelinkchild));
     // Child resource link primaryResourceLinkId and shareApproved attributes should have been set to null.
     $this->assertTrue($dc->loadResourceLink($resourcelinkchild2));
     $this->assertNull($resourcelinkchild2->primaryResourceLinkId);
     $this->assertNull($resourcelinkchild2->shareApproved);
 }