MDL-63280 core: removed 'message_conversation_area' table
authorMark Nelson <markn@moodle.com>
Thu, 25 Oct 2018 04:10:29 +0000 (12:10 +0800)
committerMark Nelson <markn@moodle.com>
Thu, 25 Oct 2018 10:05:20 +0000 (18:05 +0800)
These new fields have been added to the 'message_conversations'
table.

group/lib.php
group/tests/lib_test.php
lib/db/install.xml
lib/db/upgrade.php
message/classes/api.php
message/tests/api_test.php

index 8574a53..7ff6984 100644 (file)
@@ -278,8 +278,15 @@ function groups_create_group($data, $editform = false, $editoroptions = false) {
     // Group conversation messaging.
     if (\core_message\api::can_create_group_conversation($USER->id, $context)) {
         if (!empty($data->enablemessaging)) {
-            \core_message\api::create_conversation_area('core_group', 'groups', $group->id, $group->name, $context->id,
-                \core_message\api::MESSAGE_CONVERSATION_AREA_ENABLED);
+            \core_message\api::create_conversation(
+                \core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP,
+                [],
+                $group->name,
+                \core_message\api::MESSAGE_CONVERSATION_ENABLED,
+                'core_group',
+                'groups',
+                $group->id,
+                $context->id);
         }
     }
 
@@ -423,18 +430,26 @@ function groups_update_group($data, $editform = false, $editoroptions = false) {
 
     // Group conversation messaging.
     if (\core_message\api::can_create_group_conversation($USER->id, $context)) {
-        if ($conversationarea = \core_message\api::get_conversation_area('core_group', 'groups', $group->id, $context->id)) {
-            if ($data->enablemessaging && $data->enablemessaging != $conversationarea->enabled) {
-                \core_message\api::enable_conversation_area($conversationarea->id);
+        if ($conversation = \core_message\api::get_conversation_by_area('core_group', 'groups', $group->id, $context->id)) {
+            if ($data->enablemessaging && $data->enablemessaging != $conversation->enabled) {
+                \core_message\api::enable_conversation($conversation->id);
             }
-            if (!$data->enablemessaging && $data->enablemessaging != $conversationarea->enabled) {
-                \core_message\api::disable_conversation_area($conversationarea->id);
+            if (!$data->enablemessaging && $data->enablemessaging != $conversation->enabled) {
+                \core_message\api::disable_conversation($conversation->id);
             }
-            \core_message\api::update_conversation_name($conversationarea->conversationid, $group->name);
+            \core_message\api::update_conversation_name($conversation->id, $group->name);
         } else {
             if (!empty($data->enablemessaging)) {
-                \core_message\api::create_conversation_area('core_group', 'groups', $group->id, $group->name,
-                    \core_message\api::MESSAGE_CONVERSATION_AREA_ENABLED);
+                \core_message\api::create_conversation(
+                    \core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP,
+                    [],
+                    $group->name,
+                    \core_message\api::MESSAGE_CONVERSATION_ENABLED,
+                    'core_group',
+                    'groups',
+                    $group->id,
+                    $context->id
+                );
             }
         }
     }
index 01ad486..dd10f51 100644 (file)
@@ -530,9 +530,9 @@ class core_group_lib_testcase extends advanced_testcase {
     }
 
     /**
-     * Test groups_create_group enabling a group of conversation.
+     * Test groups_create_group enabling a group conversation.
      */
-    public function test_groups_create_group_with_conversation_area() {
+    public function test_groups_create_group_with_conversation() {
         global $DB;
 
         $this->resetAfterTest();
@@ -544,21 +544,21 @@ class core_group_lib_testcase extends advanced_testcase {
         $group1a = $this->getDataGenerator()->create_group(array('courseid' => $course1->id, 'enablemessaging' => 1));
         $group1b = $this->getDataGenerator()->create_group(array('courseid' => $course1->id, 'enablemessaging' => 0));
 
-        $conversationareas = $DB->get_records('message_conversation_area',
+        $conversations = $DB->get_records('message_conversations',
             [
                 'contextid' => $coursecontext1->id,
                 'component' => 'core_group',
                 'itemtype' => 'groups',
-                'enabled' => \core_message\api::MESSAGE_CONVERSATION_AREA_ENABLED
+                'enabled' => \core_message\api::MESSAGE_CONVERSATION_ENABLED
             ]
         );
-        $this->assertCount(1, $conversationareas);
+        $this->assertCount(1, $conversations);
 
-        $conversationarea = reset($conversationareas);
+        $conversation = reset($conversations);
         // Check groupid was stored in itemid on conversation area.
-        $this->assertEquals($group1a->id, $conversationarea->itemid);
+        $this->assertEquals($group1a->id, $conversation->itemid);
 
-        $conversations = $DB->get_records('message_conversations', ['id' => $conversationarea->conversationid]);
+        $conversations = $DB->get_records('message_conversations', ['id' => $conversation->id]);
         $this->assertCount(1, $conversations);
 
         $conversation = reset($conversations);
@@ -568,9 +568,9 @@ class core_group_lib_testcase extends advanced_testcase {
     }
 
     /**
-     * Test groups_update_group enabling and disabling a group of conversation.
+     * Test groups_update_group enabling and disabling a group conversation.
      */
-    public function test_groups_update_group_conversation_area() {
+    public function test_groups_update_group_conversation() {
         global $DB;
 
         $this->resetAfterTest();
@@ -582,41 +582,41 @@ class core_group_lib_testcase extends advanced_testcase {
         $group1a = $this->getDataGenerator()->create_group(array('courseid' => $course1->id, 'enablemessaging' => 1));
         $group1b = $this->getDataGenerator()->create_group(array('courseid' => $course1->id, 'enablemessaging' => 0));
 
-        $conversationareas = $DB->get_records('message_conversation_area',
+        $conversations = $DB->get_records('message_conversations',
             [
                 'contextid' => $coursecontext1->id,
                 'component' => 'core_group',
                 'itemtype' => 'groups',
-                'enabled' => \core_message\api::MESSAGE_CONVERSATION_AREA_ENABLED
+                'enabled' => \core_message\api::MESSAGE_CONVERSATION_ENABLED
             ]
         );
-        $this->assertCount(1, $conversationareas);
+        $this->assertCount(1, $conversations);
 
         // Check that the conversation area is created when group messaging is enabled in the course group.
         $group1b->enablemessaging = 1;
         groups_update_group($group1b);
 
-        $conversationareas = $DB->get_records('message_conversation_area',
+        $conversations = $DB->get_records('message_conversations',
             [
                 'contextid' => $coursecontext1->id,
                 'component' => 'core_group',
                 'itemtype' => 'groups',
-                'enabled' => \core_message\api::MESSAGE_CONVERSATION_AREA_ENABLED
+                'enabled' => \core_message\api::MESSAGE_CONVERSATION_ENABLED
             ],
         'id ASC');
-        $this->assertCount(2, $conversationareas);
+        $this->assertCount(2, $conversations);
 
-        $conversationarea1a = array_shift($conversationareas);
-        $conversationarea1b = array_shift($conversationareas);
+        $conversation1a = array_shift($conversations);
+        $conversation1b = array_shift($conversations);
 
-        $conversation1b = $DB->get_record('message_conversations', ['id' => $conversationarea1b->conversationid]);
+        $conversation1b = $DB->get_record('message_conversations', ['id' => $conversation1b->id]);
 
         // Check for group1b that group name was stored in conversation.
         $this->assertEquals($group1b->name, $conversation1b->name);
 
         $group1b->enablemessaging = 0;
         groups_update_group($group1b);
-        $this->assertEquals(0, $DB->get_field("message_conversation_area", "enabled", ['id' => $conversationarea1b->id]));
+        $this->assertEquals(0, $DB->get_field("message_conversations", "enabled", ['id' => $conversation1b->id]));
 
         // Check that the name of the conversation is changed when the name of the course group is updated.
         $group1b->name = 'New group name';
index 3148f14..d78f754 100644 (file)
         <FIELD NAME="type" TYPE="int" LENGTH="10" NOTNULL="true" DEFAULT="1" SEQUENCE="false"/>
         <FIELD NAME="name" TYPE="char" LENGTH="255" NOTNULL="false" SEQUENCE="false"/>
         <FIELD NAME="convhash" TYPE="char" LENGTH="40" NOTNULL="false" SEQUENCE="false"/>
+        <FIELD NAME="component" TYPE="char" LENGTH="100" NOTNULL="false" SEQUENCE="false" COMMENT="Defines the Moodle component which the area was added to"/>
+        <FIELD NAME="itemtype" TYPE="char" LENGTH="100" NOTNULL="false" SEQUENCE="false"/>
+        <FIELD NAME="itemid" TYPE="int" LENGTH="10" NOTNULL="false" SEQUENCE="false"/>
+        <FIELD NAME="contextid" TYPE="int" LENGTH="10" NOTNULL="false" SEQUENCE="false" COMMENT="The context id of the itemid or course of the itemtype was added"/>
+        <FIELD NAME="enabled" TYPE="int" LENGTH="1" NOTNULL="true" DEFAULT="0" SEQUENCE="false"/>
         <FIELD NAME="timecreated" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="false"/>
+        <FIELD NAME="timemodified" TYPE="int" LENGTH="10" NOTNULL="false" SEQUENCE="false"/>
       </FIELDS>
       <KEYS>
         <KEY NAME="primary" TYPE="primary" FIELDS="id"/>
+        <KEY NAME="contextid" TYPE="foreign" FIELDS="contextid" REFTABLE="context" REFFIELDS="id"/>
       </KEYS>
       <INDEXES>
         <INDEX NAME="type" UNIQUE="false" FIELDS="type"/>
         <INDEX NAME="convhash" UNIQUE="false" FIELDS="convhash"/>
-      </INDEXES>
-    </TABLE>
-    <TABLE NAME="message_conversation_area" COMMENT="Holds the information between Moodle components and conversations">
-      <FIELDS>
-        <FIELD NAME="id" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="true"/>
-        <FIELD NAME="conversationid" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="false"/>
-        <FIELD NAME="component" TYPE="char" LENGTH="100" NOTNULL="true" SEQUENCE="false" COMMENT="Defines the Moodle component which the area was added to"/>
-        <FIELD NAME="itemtype" TYPE="char" LENGTH="100" NOTNULL="true" SEQUENCE="false"/>
-        <FIELD NAME="itemid" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="false"/>
-        <FIELD NAME="contextid" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="false" COMMENT="The context id of the itemid or course of the itemtype was added"/>
-        <FIELD NAME="enabled" TYPE="int" LENGTH="1" NOTNULL="true" DEFAULT="0" SEQUENCE="false"/>
-        <FIELD NAME="timecreated" TYPE="int" LENGTH="10" NOTNULL="true" DEFAULT="0" SEQUENCE="false"/>
-        <FIELD NAME="timemodified" TYPE="int" LENGTH="10" NOTNULL="true" DEFAULT="0" SEQUENCE="false" COMMENT="timemodified"/>
-      </FIELDS>
-      <KEYS>
-        <KEY NAME="primary" TYPE="primary" FIELDS="id"/>
-        <KEY NAME="conversationid" TYPE="foreign" FIELDS="conversationid" REFTABLE="message_conversations" REFFIELDS="id"/>
-        <KEY NAME="contextid" TYPE="foreign" FIELDS="contextid" REFTABLE="context" REFFIELDS="id"/>
-      </KEYS>
-      <INDEXES>
-        <INDEX NAME="component-itemtype-contextid-itemid" UNIQUE="true" FIELDS="component, itemtype, contextid, itemid"/>
+        <INDEX NAME="component-itemtype-contextid-itemid" UNIQUE="false" FIELDS="component, itemtype, contextid, itemid"/>
       </INDEXES>
     </TABLE>
     <TABLE NAME="message_conversation_members" COMMENT="Stores all members in a conversations">
index 4c66eab..40924a1 100644 (file)
@@ -2606,26 +2606,47 @@ function xmldb_main_upgrade($oldversion) {
     }
 
     if ($oldversion < 2018102300.02) {
-        // Create new 'message_conversation_area' table.
-        $table = new xmldb_table('message_conversation_area');
-        $table->add_field('id', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, XMLDB_SEQUENCE, null, null);
-        $table->add_field('conversationid', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null, 'id');
-        $table->add_field('component',  XMLDB_TYPE_CHAR, '100', null, XMLDB_NOTNULL, null, null, 'conversationid');
-        $table->add_field('itemtype',  XMLDB_TYPE_CHAR, '100', null, XMLDB_NOTNULL, null, null, 'component');
-        $table->add_field('itemid', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null, 'itemtype');
-        $table->add_field('contextid', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null, 'itemid');
-        $table->add_field('enabled', XMLDB_TYPE_INTEGER, '1', null, XMLDB_NOTNULL, null, 0, 'contextid');
-        $table->add_field('timecreated', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null, 'enabled');
-        $table->add_field('timemodified', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null, 'timecreated');
-        $table->add_key('primary', XMLDB_KEY_PRIMARY, ['id'], null, null);
-        $table->add_key('conversationid', XMLDB_KEY_FOREIGN, ['conversationid'], 'message_conversations', ['id']);
-        $table->add_key('contextid', XMLDB_KEY_FOREIGN, ['contextid'], 'context', ['id']);
-        $table->add_index('component-itemtype-contextid-itemid', XMLDB_INDEX_UNIQUE, ['component',
-                                                                                      'itemtype',
-                                                                                      'itemid',
-                                                                                      'contextid']);
-        if (!$dbman->table_exists($table)) {
-            $dbman->create_table($table);
+        // Alter 'message_conversations' table to support groups.
+        $table = new xmldb_table('message_conversations');
+        $field = new xmldb_field('component', XMLDB_TYPE_CHAR, '100', null, null, null, null, 'convhash');
+        if (!$dbman->field_exists($table, $field)) {
+            $dbman->add_field($table, $field);
+        }
+
+        $field = new xmldb_field('itemtype', XMLDB_TYPE_CHAR, '100', null, null, null, null, 'component');
+        if (!$dbman->field_exists($table, $field)) {
+            $dbman->add_field($table, $field);
+        }
+
+        $field = new xmldb_field('itemid', XMLDB_TYPE_INTEGER, '10', null, null, null, null, 'itemtype');
+        if (!$dbman->field_exists($table, $field)) {
+            $dbman->add_field($table, $field);
+        }
+
+        $field = new xmldb_field('contextid', XMLDB_TYPE_INTEGER, '10', null, null, null, null, 'itemid');
+        if (!$dbman->field_exists($table, $field)) {
+            $dbman->add_field($table, $field);
+        }
+
+        $field = new xmldb_field('enabled', XMLDB_TYPE_INTEGER, '1', null, XMLDB_NOTNULL, null, 0, 'contextid');
+        if (!$dbman->field_exists($table, $field)) {
+            $dbman->add_field($table, $field);
+        }
+
+        $field = new xmldb_field('timemodified', XMLDB_TYPE_INTEGER, '10', null, null, null, null, 'enabled');
+        if (!$dbman->field_exists($table, $field)) {
+            $dbman->add_field($table, $field);
+        }
+
+        // Add key.
+        $key = new xmldb_key('contextid', XMLDB_KEY_FOREIGN, ['contextid'], 'context', ['id']);
+        $dbman->add_key($table, $key);
+
+        // Add index.
+        $index = new xmldb_index('component-itemtype-contextid-itemid', XMLDB_INDEX_NOTUNIQUE, ['component', 'itemtype',
+            'itemid', 'contextid']);
+        if (!$dbman->index_exists($table, $index)) {
+            $dbman->add_index($table, $index);
         }
 
         upgrade_main_savepoint(true, 2018102300.02);
index 5aff397..876a4a6 100644 (file)
@@ -76,12 +76,12 @@ class api {
     /**
      * The state for an enabled conversation area.
      */
-    const MESSAGE_CONVERSATION_AREA_ENABLED = 1;
+    const MESSAGE_CONVERSATION_ENABLED = 1;
 
     /**
      * The state for a disabled conversation area.
      */
-    const MESSAGE_CONVERSATION_AREA_DISABLED = 0;
+    const MESSAGE_CONVERSATION_DISABLED = 0;
 
     /**
      * Handles searching for messages in the message area.
@@ -1469,10 +1469,18 @@ class api {
      *
      * @param int $type The type of conversation
      * @param int[] $userids The array of users to add to the conversation
-     * @param string $name The name of the conversation
+     * @param string|null $name The name of the conversation
+     * @param int $enabled Determines if the conversation is created enabled or disabled
+     * @param string|null $component Defines the Moodle component which the conversation belongs to, if any
+     * @param string|null $itemtype Defines the type of the component
+     * @param int|null $itemid The id of the component
+     * @param int|null $contextid The id of the context
      * @return \stdClass
      */
-    public static function create_conversation(int $type, array $userids, string $name = null) {
+    public static function create_conversation(int $type, array $userids, string $name = null,
+            int $enabled = self::MESSAGE_CONVERSATION_ENABLED, string $component = null,
+            string $itemtype = null, int $itemid = null, int $contextid = null) {
+
         global $DB;
 
         // Sanity check.
@@ -1489,7 +1497,13 @@ class api {
         if ($type == self::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL) {
             $conversation->convhash = helper::get_conversation_hash($userids);
         }
+        $conversation->component = $component;
+        $conversation->itemtype = $itemtype;
+        $conversation->itemid = $itemid;
+        $conversation->contextid = $contextid;
+        $conversation->enabled = $enabled;
         $conversation->timecreated = time();
+        $conversation->timemodified = $conversation->timecreated;
         $conversation->id = $DB->insert_record('message_conversations', $conversation);
 
         // Add users to this conversation.
@@ -1986,39 +2000,6 @@ class api {
         return $DB->count_records('message_conversation_members', ['conversationid' => $convid]);
     }
 
-    /**
-     * Create message conversation area.
-     *
-     * @param string $component Defines the Moodle component which the area was added to
-     * @param string $itemtype Defines the type of the component
-     * @param int    $itemid The id of the component
-     * @param int    $contextid The id of the context
-     * @param string $name The main name of the area
-     * @param int    $enabled Enable or disable the conversation area
-     * @return \stdClass
-     */
-    public static function create_conversation_area(string $component, string $itemtype, int $itemid, int $contextid, string $name,
-            int $enabled = self::MESSAGE_CONVERSATION_AREA_DISABLED) {
-        global $DB;
-
-        // Create a conversation.
-        $conversation = self::create_conversation(self::MESSAGE_CONVERSATION_TYPE_GROUP, array(), $name);
-
-        // Create a conversation area.
-        $conversationarea = new \stdClass;
-        $conversationarea->conversationid = $conversation->id;
-        $conversationarea->component      = $component;
-        $conversationarea->itemtype       = $itemtype;
-        $conversationarea->itemid         = $itemid;
-        $conversationarea->contextid      = $contextid;
-        $conversationarea->enabled        = $enabled;
-        $conversationarea->timecreated    = time();
-        $conversationarea->timemodified   = $conversationarea->timecreated;
-        $conversationarea->id = $DB->insert_record('message_conversation_area', $conversationarea);
-
-        return $conversationarea;
-    }
-
     /**
      * Checks whether or not a conversation area is enabled.
      *
@@ -2031,30 +2012,30 @@ class api {
     public static function is_conversation_area_enabled(string $component, string $itemtype, int $itemid, int $contextid) : bool {
         global $DB;
 
-        return $DB->record_exists('message_conversation_area',
+        return $DB->record_exists('message_conversations',
             [
                 'itemid' => $itemid,
                 'contextid' => $contextid,
                 'component' => $component,
                 'itemtype' => $itemtype,
-                'enabled' => self::MESSAGE_CONVERSATION_AREA_ENABLED
+                'enabled' => self::MESSAGE_CONVERSATION_ENABLED
             ]
         );
     }
 
     /**
-     * Get conversation area.
+     * Get conversation by area.
      *
      * @param string $component Defines the Moodle component which the area was added to.
      * @param string $itemtype Defines the type of the component.
-     * @param int    $itemid The id of the component.
-     * @param int    $contextid The id of the context.
-     * @return object message_conversation_area.
+     * @param int $itemid The id of the component.
+     * @param int $contextid The id of the context.
+     * @return \stdClass
      */
-    public static function get_conversation_area(string $component, string $itemtype, int $itemid, int $contextid) {
+    public static function get_conversation_by_area(string $component, string $itemtype, int $itemid, int $contextid) {
         global $DB;
 
-        return $DB->get_record('message_conversation_area',
+        return $DB->get_record('message_conversations',
             [
                 'itemid' => $itemid,
                 'contextid' => $contextid,
@@ -2065,41 +2046,41 @@ class api {
     }
 
     /**
-     * Enable a conversation area.
+     * Enable a conversation.
      *
-     * @param int  $conversationareaid The id of a conversation area.
+     * @param int $conversationid The id of the conversation.
      * @return void
      */
-    public static function enable_conversation_area(int $conversationareaid) {
+    public static function enable_conversation(int $conversationid) {
         global $DB;
 
-        $conversationarea = new \stdClass();
-        $conversationarea->id = $conversationareaid;
-        $conversationarea->enabled = self::MESSAGE_CONVERSATION_AREA_ENABLED;
-        $conversationarea->timemodified = time();
-        $DB->update_record('message_conversation_area', $conversationarea);
+        $conversation = new \stdClass();
+        $conversation->id = $conversationid;
+        $conversation->enabled = self::MESSAGE_CONVERSATION_ENABLED;
+        $conversation->timemodified = time();
+        $DB->update_record('message_conversations', $conversation);
     }
 
     /**
-     * Disable a conversation area.
+     * Disable a conversation.
      *
-     * @param int  $conversationareaid The id of a conversation area.
+     * @param int $conversationid The id of the conversation.
      * @return void
      */
-    public static function disable_conversation_area(int $conversationareaid) {
+    public static function disable_conversation(int $conversationid) {
         global $DB;
 
-        $conversationarea = new \stdClass();
-        $conversationarea->id = $conversationareaid;
-        $conversationarea->enabled = self::MESSAGE_CONVERSATION_AREA_DISABLED;
-        $conversationarea->timemodified = time();
-        $DB->update_record('message_conversation_area', $conversationarea);
+        $conversation = new \stdClass();
+        $conversation->id = $conversationid;
+        $conversation->enabled = self::MESSAGE_CONVERSATION_DISABLED;
+        $conversation->timemodified = time();
+        $DB->update_record('message_conversations', $conversation);
     }
 
     /**
      * Update the name of a conversation.
      *
-     * @param int  $conversationid The id of a conversation.
+     * @param int $conversationid The id of a conversation.
      * @param string $name The main name of the area
      * @return void
      */
index 6ba1fdf..5aabfb2 100644 (file)
@@ -3264,91 +3264,113 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
     }
 
     /**
-     * Test create message conversation area.
+     * Test create message conversation with area.
      */
-    public function test_create_conversation_area() {
-        $this->resetAfterTest();
+    public function test_create_conversation_with_area() {
         $contextid = 111;
         $itemid = 222;
         $name = 'Name of conversation';
-        $conversationarea = \core_message\api::create_conversation_area('core_group', 'groups', $itemid, $contextid, $name);
+        $conversation = \core_message\api::create_conversation(
+            \core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP,
+            [],
+            $name,
+            \core_message\api::MESSAGE_CONVERSATION_DISABLED,
+            'core_group',
+            'groups',
+            $itemid,
+            $contextid
+        );
 
-        $this->assertEquals($itemid, $conversationarea->itemid);
-        $this->assertEquals($contextid, $conversationarea->contextid);
-        $this->assertEquals('core_group', $conversationarea->component);
-        $this->assertEquals('groups', $conversationarea->itemtype);
-        $this->assertEquals(\core_message\api::MESSAGE_CONVERSATION_AREA_DISABLED, $conversationarea->enabled);
+        $this->assertEquals(\core_message\api::MESSAGE_CONVERSATION_DISABLED, $conversation->enabled);
+        $this->assertEquals('core_group', $conversation->component);
+        $this->assertEquals('groups', $conversation->itemtype);
+        $this->assertEquals($itemid, $conversation->itemid);
+        $this->assertEquals($contextid, $conversation->contextid);
     }
 
     /**
-     * Test get_conversation_area.
+     * Test get_conversation_by_area.
      */
-    public function test_get_conversation_area() {
+    public function test_get_conversation_by_area() {
         $contextid = 111;
         $itemid = 222;
         $name = 'Name of conversation';
-        \core_message\api::create_conversation_area('core_group', 'groups', $itemid, $contextid, $name,
-            \core_message\api::MESSAGE_CONVERSATION_AREA_ENABLED);
-        $conversationarea = \core_message\api::get_conversation_area('core_group', 'groups', $itemid, $contextid);
+        $createconversation = \core_message\api::create_conversation(
+            \core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP,
+            [],
+            $name,
+            \core_message\api::MESSAGE_CONVERSATION_DISABLED,
+            'core_group',
+            'groups',
+            $itemid,
+            $contextid
+        );
+        $conversation = \core_message\api::get_conversation_by_area('core_group', 'groups', $itemid, $contextid);
 
-        $this->assertEquals($itemid, $conversationarea->itemid);
-        $this->assertEquals($contextid, $conversationarea->contextid);
-        $this->assertEquals('core_group', $conversationarea->component);
-        $this->assertEquals('groups', $conversationarea->itemtype);
-        $this->assertEquals(\core_message\api::MESSAGE_CONVERSATION_AREA_ENABLED, $conversationarea->enabled);
+        $this->assertEquals($createconversation->id, $conversation->id);
+        $this->assertEquals(\core_message\api::MESSAGE_CONVERSATION_DISABLED, $conversation->enabled);
+        $this->assertEquals('core_group', $conversation->component);
+        $this->assertEquals('groups', $conversation->itemtype);
+        $this->assertEquals($itemid, $conversation->itemid);
+        $this->assertEquals($contextid, $conversation->contextid);
     }
 
     /**
-     * Test enable_conversation_area.
+     * Test enable_conversation.
      */
-    public function test_enable_conversation_area() {
+    public function test_enable_conversation() {
         global $DB;
 
-        $contextid = 111;
-        $itemid = 222;
         $name = 'Name of conversation';
 
-        $conversationarea = \core_message\api::create_conversation_area('core_group', 'groups', $itemid, $contextid, $name);
-        \core_message\api::enable_conversation_area($conversationarea->id);
-        $conversationareaenabled = $DB->get_field('message_conversation_area', 'enabled', ['id' => $conversationarea->id]);
-        $this->assertEquals(\core_message\api::MESSAGE_CONVERSATION_AREA_ENABLED, $conversationareaenabled);
+        $conversation = \core_message\api::create_conversation(
+            \core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP,
+            [],
+            $name,
+            \core_message\api::MESSAGE_CONVERSATION_DISABLED
+        );
+
+        $this->assertEquals(\core_message\api::MESSAGE_CONVERSATION_DISABLED, $conversation->enabled);
+        \core_message\api::enable_conversation($conversation->id);
+        $conversationenabled = $DB->get_field('message_conversations', 'enabled', ['id' => $conversation->id]);
+        $this->assertEquals(\core_message\api::MESSAGE_CONVERSATION_ENABLED, $conversationenabled);
     }
 
     /**
-     * Test disable_conversation_area.
+     * Test disable_conversation.
      */
-    public function test_disable_conversation_area() {
+    public function test_disable_conversation() {
         global $DB;
 
-        $contextid = 111;
-        $itemid = 222;
         $name = 'Name of conversation';
 
-        $conversationarea = \core_message\api::create_conversation_area('core_group', 'groups', $itemid, $contextid, $name,
-            \core_message\api::MESSAGE_CONVERSATION_AREA_ENABLED);
-        $this->assertEquals(\core_message\api::MESSAGE_CONVERSATION_AREA_ENABLED, $conversationarea->enabled);
-        \core_message\api::disable_conversation_area($conversationarea->id);
-        $conversationareaenabled = $DB->get_field('message_conversation_area', 'enabled', ['id' => $conversationarea->id]);
-        $this->assertEquals(\core_message\api::MESSAGE_CONVERSATION_AREA_DISABLED, $conversationareaenabled);
+        $conversation = \core_message\api::create_conversation(
+            \core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP,
+            [],
+            $name,
+            \core_message\api::MESSAGE_CONVERSATION_ENABLED
+        );
+
+        $this->assertEquals(\core_message\api::MESSAGE_CONVERSATION_ENABLED, $conversation->enabled);
+        \core_message\api::disable_conversation($conversation->id);
+        $conversationenabled = $DB->get_field('message_conversations', 'enabled', ['id' => $conversation->id]);
+        $this->assertEquals(\core_message\api::MESSAGE_CONVERSATION_DISABLED, $conversationenabled);
     }
+
     /**
      * Test update_conversation_name.
      */
     public function test_update_conversation_name() {
         global $DB;
 
-        $contextid = 111;
-        $itemid = 222;
-        $name = 'Name of conversation';
-
-        $conversationarea = \core_message\api::create_conversation_area('core_group', 'groups', $itemid, $contextid, $name);
+        $conversation = \core_message\api::create_conversation(\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP, []);
 
         $newname = 'New name of conversation';
-        \core_message\api::update_conversation_name($conversationarea->conversationid, $newname);
+        \core_message\api::update_conversation_name($conversation->id, $newname);
 
         $this->assertEquals(
                 $newname,
-                $DB->get_field('message_conversations', 'name', ['id' => $conversationarea->conversationid])
+                $DB->get_field('message_conversations', 'name', ['id' => $conversation->id])
         );
     }