]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - classes/User_urlshortener_prefs.php
Merge branch 'master' of gitorious.org:social/mainline
[quix0rs-gnu-social.git] / classes / User_urlshortener_prefs.php
old mode 100755 (executable)
new mode 100644 (file)
index aef39e3..a9a7011
@@ -21,7 +21,7 @@ if (!defined('STATUSNET') && !defined('LACONICA')) {
     exit(1);
 }
 
-class User_urlshortener_prefs extends Memcached_DataObject
+class User_urlshortener_prefs extends Managed_DataObject
 {
     ###START_AUTOCODE
     /* the code below is auto generated do not remove the above tag */
@@ -34,14 +34,88 @@ class User_urlshortener_prefs extends Memcached_DataObject
     public $created;                         // datetime   not_null default_0000-00-00%2000%3A00%3A00
     public $modified;                        // timestamp   not_null default_CURRENT_TIMESTAMP
 
-    /* Static get */
-    function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('User_urlshortener_prefs',$k,$v); }
-
     /* the code above is auto generated do not remove the tag below */
     ###END_AUTOCODE
 
-    function sequenceKey()
+    public static function schemaDef()
+    {
+        return array(
+            'fields' => array(
+                'user_id' => array('type' => 'int', 'not null' => true, 'description' => 'user'),
+                'urlshorteningservice' => array('type' => 'varchar', 'length' => 50, 'default' => 'internal', 'description' => 'service to use for auto-shortening URLs'),
+                'maxurllength' => array('type' => 'int', 'not null' => true, 'description' => 'urls greater than this length will be shortened, 0 = always, null = never'),
+                'maxnoticelength' => array('type' => 'int', 'not null' => true, 'description' => 'notices with content greater than this value will have all urls shortened, 0 = always, -1 = only if notice text is longer than max allowed'),
+        
+                '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('user_id'),
+            'foreign keys' => array(
+                'user_urlshortener_prefs_user_id_fkey' => array('user', array('user_id' => 'id')),
+            ),
+        );
+    }
+
+    static function maxUrlLength($user)
+    {
+        $def = common_config('url', 'maxurllength');
+
+        $prefs = self::getPrefs($user);
+
+        if (empty($prefs)) {
+            return $def;
+        } else {
+            return $prefs->maxurllength;
+        }
+    }
+
+    static function maxNoticeLength($user)
+    {
+        $def = common_config('url', 'maxnoticelength');
+
+        if ($def == -1) {
+            /*
+             * maxContent==0 means infinite length,
+             * but maxNoticeLength==0 means "always shorten"
+             * so if maxContent==0 we must set this to -1
+             */
+            $def = Notice::maxContent() ?: -1;
+        }
+
+        $prefs = self::getPrefs($user);
+
+        if (empty($prefs)) {
+            return $def;
+        } else {
+            return $prefs->maxnoticelength;
+        }
+    }
+
+    static function urlShorteningService($user)
     {
-        return array(false, false, false);
+        $def = common_config('url', 'shortener');
+
+        $prefs = self::getPrefs($user);
+
+        if (empty($prefs)) {
+            if (!empty($user)) {
+                return $user->urlshorteningservice;
+            } else {
+                return $def;
+            }
+        } else {
+            return $prefs->urlshorteningservice;
+        }
+    }
+
+    static function getPrefs($user)
+    {
+        if (empty($user)) {
+            return null;
+        }
+
+        $prefs = User_urlshortener_prefs::getKV('user_id', $user->id);
+
+        return $prefs;
     }
 }