diff options
Diffstat (limited to 'classes')
-rw-r--r-- | classes/Notice.php | 2 | ||||
-rw-r--r-- | classes/Session.php | 129 | ||||
-rw-r--r-- | classes/Status_network.php | 7 | ||||
-rw-r--r-- | classes/User_group.php | 24 | ||||
-rw-r--r--[-rwxr-xr-x] | classes/laconica.ini | 9 |
5 files changed, 169 insertions, 2 deletions
diff --git a/classes/Notice.php b/classes/Notice.php index d0ee1d925..502cc57b8 100644 --- a/classes/Notice.php +++ b/classes/Notice.php @@ -874,7 +874,6 @@ class Notice extends Memcached_DataObject $qry .= '('.$id.', '.$this->id.', '.$source.', "'.$this->created.'") '; $cnt++; if ($cnt >= MAX_BOXCARS) { - common_debug($qry); $inbox = new Notice_inbox(); $inbox->query($qry); $qry = $qryhdr; @@ -883,7 +882,6 @@ class Notice extends Memcached_DataObject } if ($cnt > 0) { - common_debug($qry); $inbox = new Notice_inbox(); $inbox->query($qry); } diff --git a/classes/Session.php b/classes/Session.php new file mode 100644 index 000000000..93fd99baa --- /dev/null +++ b/classes/Session.php @@ -0,0 +1,129 @@ +<?php +/** + * Table Definition for session + * + * Laconica - a distributed open-source microblogging tool + * Copyright (C) 2009, Control Yourself, Inc. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +if (!defined('LACONICA')) { exit(1); } + +require_once INSTALLDIR.'/classes/Memcached_DataObject.php'; + +class Session extends Memcached_DataObject +{ + ###START_AUTOCODE + /* the code below is auto generated do not remove the above tag */ + + public $__table = 'session'; // table name + public $id; // varchar(32) primary_key not_null + public $session_data; // text() + public $created; // datetime() not_null + public $modified; // timestamp() not_null default_CURRENT_TIMESTAMP + + /* Static get */ + function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Session',$k,$v); } + + /* the code above is auto generated do not remove the tag below */ + ###END_AUTOCODE + + static function logdeb($msg) + { + if (common_config('sessions', 'debug')) { + common_debug("Session: " . $msg); + } + } + + static function open($save_path, $session_name) + { + return true; + } + + static function close() + { + return true; + } + + static function read($id) + { + self::logdeb("Fetching session '$id'"); + + $session = Session::staticGet('id', $id); + + if (empty($session)) { + return ''; + } else { + return (string)$session->session_data; + } + } + + static function write($id, $session_data) + { + self::logdeb("Writing session '$id'"); + + $session = Session::staticGet('id', $id); + + if (empty($session)) { + $session = new Session(); + + $session->id = $id; + $session->session_data = $session_data; + $session->created = common_sql_now(); + + return $session->insert(); + } else { + $session->session_data = $session_data; + + return $session->update(); + } + } + + static function destroy($id) + { + self::logdeb("Deleting session $id"); + + $session = Session::staticGet('id', $id); + + if (!empty($session)) { + return $session->delete(); + } + } + + static function gc($maxlifetime) + { + self::logdeb("garbage collection (maxlifetime = $maxlifetime)"); + + $epoch = time() - $maxlifetime; + + $qry = 'DELETE FROM session ' . + 'WHERE modified < "'.$epoch.'"'; + + $session = new Session(); + + $result = $session->query($qry); + + self::logdeb("garbage collection result = $result"); + } + + static function setSaveHandler() + { + self::logdeb("setting save handlers"); + $result = session_set_save_handler('Session::open', 'Session::close', 'Session::read', + 'Session::write', 'Session::destroy', 'Session::gc'); + self::logdeb("save handlers result = $result"); + return $result; + } +} diff --git a/classes/Status_network.php b/classes/Status_network.php index f8d6756b6..dbd722e88 100644 --- a/classes/Status_network.php +++ b/classes/Status_network.php @@ -132,6 +132,13 @@ class Status_network extends DB_DataObject } } else { $sn = self::memGet('hostname', strtolower($servername)); + + if (empty($sn)) { + // Try for a no-www address + if (0 == strncasecmp($servername, 'www.', 4)) { + $sn = self::memGet('hostname', strtolower(substr($servername, 4))); + } + } } if (!empty($sn)) { diff --git a/classes/User_group.php b/classes/User_group.php index 9b4b01ead..27b444705 100644 --- a/classes/User_group.php +++ b/classes/User_group.php @@ -126,6 +126,30 @@ class User_group extends Memcached_DataObject return $members; } + function getAdmins($offset=0, $limit=null) + { + $qry = + 'SELECT profile.* ' . + 'FROM profile JOIN group_member '. + 'ON profile.id = group_member.profile_id ' . + 'WHERE group_member.group_id = %d ' . + 'AND group_member.is_admin = 1 ' . + 'ORDER BY group_member.modified ASC '; + + if ($limit != null) { + if (common_config('db','type') == 'pgsql') { + $qry .= ' LIMIT ' . $limit . ' OFFSET ' . $offset; + } else { + $qry .= ' LIMIT ' . $offset . ', ' . $limit; + } + } + + $admins = new Profile(); + + $admins->query(sprintf($qry, $this->id)); + return $admins; + } + function getBlocked($offset=0, $limit=null) { $qry = diff --git a/classes/laconica.ini b/classes/laconica.ini index 7e9b2b791..766bed75d 100755..100644 --- a/classes/laconica.ini +++ b/classes/laconica.ini @@ -380,6 +380,15 @@ replied_id = 1 notice_id = K profile_id = K +[session] +id = 130 +session_data = 34 +created = 142 +modified = 384 + +[session__keys] +id = K + [sms_carrier] id = 129 name = 2 |