]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - plugins/GroupPrivateMessage/Group_message.php
Woops, forgot auto_increment (comes with 'serial')
[quix0rs-gnu-social.git] / plugins / GroupPrivateMessage / Group_message.php
index 53fe0fe90f211751ebb520abedcbff3a1b1b25ff..7e825d416deb1fb2c8a628317d63b09c8cdfe465 100644 (file)
@@ -44,7 +44,7 @@ require_once INSTALLDIR . '/classes/Memcached_DataObject.php';
  *
  * @see      DB_DataObject
  */
-class Group_message extends Memcached_DataObject
+class Group_message extends Managed_DataObject
 {
     public $__table = 'group_message'; // table name
     public $id;                        // char(36)  primary_key not_null
@@ -54,67 +54,37 @@ class Group_message extends Memcached_DataObject
     public $content;
     public $rendered;
     public $url;
-    public $created;
-
-    /**
-     * Get an instance by key
-     *
-     * This is a utility method to get a single instance with a given key value.
-     *
-     * @param string $k Key to use to lookup (usually 'user_id' for this class)
-     * @param mixed  $v Value to lookup
-     *
-     * @return Group_message object found, or null for no hits
-     */
-    function staticGet($k, $v=null)
-    {
-        return Memcached_DataObject::staticGet('Group_message', $k, $v);
-    }
-
-    /**
-     * return table definition for DB_DataObject
-     *
-     * DB_DataObject needs to know something about the table to manipulate
-     * instances. This method provides all the DB_DataObject needs to know.
-     *
-     * @return array array of column definitions
-     */
-    function table()
-    {
-        return array('id' => DB_DATAOBJECT_STR + DB_DATAOBJECT_NOTNULL,
-                     'uri' => DB_DATAOBJECT_STR + DB_DATAOBJECT_NOTNULL,
-                     'from_profile' => DB_DATAOBJECT_INT + DB_DATAOBJECT_NOTNULL,
-                     'to_group' => DB_DATAOBJECT_INT + DB_DATAOBJECT_NOTNULL,
-                     'content' => DB_DATAOBJECT_STR + DB_DATAOBJECT_NOTNULL,
-                     'rendered' => DB_DATAOBJECT_STR + DB_DATAOBJECT_NOTNULL,
-                     'url' => DB_DATAOBJECT_STR,
-                     'created' => DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME + DB_DATAOBJECT_NOTNULL);
-    }
-
-    /**
-     * return key definitions for DB_DataObject
-     *
-     * DB_DataObject needs to know about keys that the table has, since it
-     * won't appear in StatusNet's own keys list. In most cases, this will
-     * simply reference your keyTypes() function.
-     *
-     * @return array list of key field names
-     */
-    function keys()
-    {
-        return array_keys($this->keyTypes());
-    }
+    public $created;                   // datetime()   not_null
+    public $modified;                  // timestamp()   not_null default_CURRENT_TIMESTAMP
 
-    /**
-     * return key definitions for Memcached_DataObject
-     *
-     * @return array associative array of key definitions, field name to type:
-     *         'K' for primary key: for compound keys, add an entry for each component;
-     *         'U' for unique keys: compound keys are not well supported here.
-     */
-    function keyTypes()
+    public static function schemaDef()
     {
-        return array('id' => 'K', 'uri' => 'U');
+        return array(
+            'fields' => array(
+                'id' => array('type' => 'char', 'not null' => true, 'length' => 36, 'description' => 'message uuid'),
+                'uri' => array('type' => 'varchar', 'not null' => true, 'length' => 255, 'description' => 'message uri'),
+                'url' => array('type' => 'varchar', 'not null' => true, 'length' => 255, 'description' => 'representation url'),
+                'from_profile' => array('type' => 'int', 'not null' => true, 'description' => 'sending profile ID'),
+                'to_group' => array('type' => 'int', 'not null' => true, 'description' => 'receiving group ID'),
+                'content' => array('type' => 'text', 'not null' => true, 'description' => 'message content'),
+                'rendered' => array('type' => 'text', 'not null' => true, 'description' => 'rendered message'),
+                'created' => array('type' => 'datetime', 'not null' => true, 'description' => 'date this record was created'),
+                'modified' => array('type' => 'timestamp', 'not null' => true, 'description' => 'date this record was modified'),
+            ),
+            'primary key' => array('id'),
+            'unique keys' => array(
+                'group_message_uri_key' => array('uri'),
+            ),
+            'foreign keys' => array(
+                'group_message_from_profile_fkey' => array('profile', array('from_profile' => 'id')),
+                'group_message_to_group_fkey' => array('user_group', array('to_group' => 'id')),
+            ),
+            'indexes' => array(
+                'group_message_from_profile_idx' => array('from_profile'),
+                'group_message_to_group_idx' => array('to_group'),
+                'group_message_url_idx' => array('url'),
+            ),
+        );
     }
 
     static function send($user, $group, $text)
@@ -166,7 +136,7 @@ class Group_message extends Memcached_DataObject
 
     function distribute()
     {
-        $group = User_group::staticGet('id', $this->to_group);
+        $group = User_group::getKV('id', $this->to_group);
 
         $member = $group->getMembers();
 
@@ -177,7 +147,7 @@ class Group_message extends Memcached_DataObject
 
     function getGroup()
     {
-        $group = User_group::staticGet('id', $this->to_group);
+        $group = User_group::getKV('id', $this->to_group);
         if (empty($group)) {
             // TRANS: Exception thrown when trying to send group private message to a non-existing group.
             throw new ServerException(_m('No group for group message.'));
@@ -187,7 +157,7 @@ class Group_message extends Memcached_DataObject
 
     function getSender()
     {
-        $sender = Profile::staticGet('id', $this->from_profile);
+        $sender = Profile::getKV('id', $this->from_profile);
         if (empty($sender)) {
             // TRANS: Exception thrown when trying to send group private message without having a sender.
             throw new ServerException(_m('No sender for group message.'));