]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - classes/Profile.php
Don't preemptively close existing DB connections for web views (needed to keep #...
[quix0rs-gnu-social.git] / classes / Profile.php
index 8754c506ced67993b83ea0a4c68b22797fb0ac98..1076fb2cb3e09f8b95b1915b36f1b6bb5ffbcef6 100644 (file)
@@ -310,10 +310,12 @@ class Profile extends Memcached_DataObject
           'AND subscription.subscribed != subscription.subscriber ' .
           'ORDER BY subscription.created DESC ';
 
-        if (common_config('db','type') == 'pgsql') {
-            $qry .= ' LIMIT ' . $limit . ' OFFSET ' . $offset;
-        } else {
-            $qry .= ' LIMIT ' . $offset . ', ' . $limit;
+        if ($offset>0 && !is_null($limit)){
+            if (common_config('db','type') == 'pgsql') {
+                $qry .= ' LIMIT ' . $limit . ' OFFSET ' . $offset;
+            } else {
+                $qry .= ' LIMIT ' . $offset . ', ' . $limit;
+            }
         }
 
         $profile = new Profile();
@@ -333,7 +335,34 @@ class Profile extends Memcached_DataObject
           'AND subscription.subscribed != subscription.subscriber ' .
           'ORDER BY subscription.created DESC ';
 
-        if ($offset) {
+        if ($offset>0 && !is_null($limit)){
+            if ($offset) {
+                if (common_config('db','type') == 'pgsql') {
+                    $qry .= ' LIMIT ' . $limit . ' OFFSET ' . $offset;
+                } else {
+                    $qry .= ' LIMIT ' . $offset . ', ' . $limit;
+                }
+            }
+        }
+
+        $profile = new Profile();
+
+        $cnt = $profile->query(sprintf($qry, $this->id));
+
+        return $profile;
+    }
+
+    function getApplications($offset = 0, $limit = null)
+    {
+        $qry =
+          'SELECT a.* ' .
+          'FROM oauth_application_user u, oauth_application a ' .
+          'WHERE u.profile_id = %d ' .
+          'AND a.id = u.application_id ' .
+          'AND u.access_type > 0 ' .
+          'ORDER BY u.created DESC ';
+
+        if ($offset > 0) {
             if (common_config('db','type') == 'pgsql') {
                 $qry .= ' LIMIT ' . $limit . ' OFFSET ' . $offset;
             } else {
@@ -341,11 +370,11 @@ class Profile extends Memcached_DataObject
             }
         }
 
-        $profile = new Profile();
+        $application = new Oauth_application();
 
-        $cnt = $profile->query(sprintf($qry, $this->id));
+        $cnt = $application->query(sprintf($qry, $this->id));
 
-        return $profile;
+        return $application;
     }
 
     function subscriptionCount()
@@ -500,6 +529,7 @@ class Profile extends Memcached_DataObject
                          'Reply',
                          'Group_member',
                          );
+        Event::handle('ProfileDeleteRelated', array($this, &$related));
 
         foreach ($related as $cls) {
             $inst = new $cls();
@@ -590,9 +620,14 @@ class Profile extends Memcached_DataObject
 
     function hasRole($name)
     {
-        $role = Profile_role::pkeyGet(array('profile_id' => $this->id,
-                                            'role' => $name));
-        return (!empty($role));
+        $has_role = false;
+        if (Event::handle('StartHasRole', array($this, $name, &$has_role))) {
+            $role = Profile_role::pkeyGet(array('profile_id' => $this->id,
+                                                'role' => $name));
+            $has_role = !empty($role);
+            Event::handle('EndHasRole', array($this, $name, $has_role));
+        }
+        return $has_role;
     }
 
     function grantRole($name)
@@ -697,6 +732,7 @@ class Profile extends Memcached_DataObject
             case Right::PUBLICNOTICE:
             case Right::EMAILONREPLY:
             case Right::EMAILONSUBSCRIBE:
+            case Right::EMAILONFAVE:
                 $result = !$this->isSandboxed();
                 break;
             default:
@@ -706,4 +742,15 @@ class Profile extends Memcached_DataObject
         }
         return $result;
     }
+
+    function hasRepeated($notice_id)
+    {
+        // XXX: not really a pkey, but should work
+
+        $notice = Memcached_DataObject::pkeyGet('Notice',
+                                                array('profile_id' => $this->id,
+                                                      'repeat_of' => $notice_id));
+
+        return !empty($notice);
+    }
 }