Merge branch '0.7.x' of git@gitorious.org:laconica/dev into 0.7.x
This commit is contained in:
commit
8cc19b90ee
11
EVENTS.txt
11
EVENTS.txt
|
@ -88,9 +88,18 @@ StartShowLocalNavBlock: Showing the local nav menu
|
|||
EndShowLocalNavBlock: At the end of the local nav menu
|
||||
- $action: the current action
|
||||
|
||||
StartShowHTML: Chance to set document content type, charset, language, DOCTYPE and html element properties
|
||||
StartShowHTML: Chance to set document headers (e.g., content type, charset, language), DOCTYPE and html element properties
|
||||
- $action: the current action
|
||||
|
||||
EndShowHTML: Showing after the html element
|
||||
- $action: the current action
|
||||
|
||||
StartPublicGroupNav: Showing the public group nav menu
|
||||
- $action: the current action
|
||||
|
||||
EndPublicGroupNav: At the end of the public group nav menu
|
||||
- $action: the current action
|
||||
|
||||
RouterInitialized: After the router instance has been initialized
|
||||
- $m: the Net_URL_Mapper that has just been set up
|
||||
|
||||
|
|
|
@ -324,11 +324,13 @@ class AvatarsettingsAction extends AccountSettingsAction
|
|||
return;
|
||||
}
|
||||
|
||||
// If image is not being cropped assume pos & dimensions of original.
|
||||
$file_d = ($filedata['width'] > $filedata['height'])
|
||||
? $filedata['height'] : $filedata['width'];
|
||||
|
||||
$dest_x = $this->arg('avatar_crop_x') ? $this->arg('avatar_crop_x'):0;
|
||||
$dest_y = $this->arg('avatar_crop_y') ? $this->arg('avatar_crop_y'):0;
|
||||
$dest_w = $this->arg('avatar_crop_w') ? $this->arg('avatar_crop_w'):$filedata['width'];
|
||||
$dest_h = $this->arg('avatar_crop_h') ? $this->arg('avatar_crop_h'):$filedata['height'];
|
||||
$dest_w = $this->arg('avatar_crop_w') ? $this->arg('avatar_crop_w'):$file_d;
|
||||
$dest_h = $this->arg('avatar_crop_h') ? $this->arg('avatar_crop_h'):$file_d;
|
||||
$size = min($dest_w, $dest_h, MAX_ORIGINAL);
|
||||
|
||||
$user = common_current_user();
|
||||
|
|
|
@ -169,8 +169,14 @@ class FavoritedAction extends Action
|
|||
|
||||
function showContent()
|
||||
{
|
||||
if (common_config('db', 'type') == 'pgsql') {
|
||||
$weightexpr='sum(exp(-extract(epoch from (now() - fave.modified)) / %s))';
|
||||
} else {
|
||||
$weightexpr='sum(exp(-(now() - fave.modified) / %s))';
|
||||
}
|
||||
|
||||
$qry = 'SELECT notice.*, '.
|
||||
'sum(exp(-(now() - fave.modified) / %s)) as weight ' .
|
||||
$weightexpr . ' as weight ' .
|
||||
'FROM notice JOIN fave ON notice.id = fave.notice_id ' .
|
||||
'GROUP BY fave.notice_id ' .
|
||||
'ORDER BY weight DESC';
|
||||
|
|
|
@ -152,6 +152,11 @@ class NewnoticeAction extends Action
|
|||
}
|
||||
|
||||
$replyto = $this->trimmed('inreplyto');
|
||||
#If an ID of 0 is wrongly passed here, it will cause a database error,
|
||||
#so override it...
|
||||
if ($replyto == 0) {
|
||||
$replyto = 'false';
|
||||
}
|
||||
|
||||
$notice = Notice::saveNew($user->id, $content, 'web', 1,
|
||||
($replyto == 'false') ? null : $replyto);
|
||||
|
|
|
@ -585,7 +585,7 @@ class Notice extends Memcached_DataObject
|
|||
$inbox = new Notice_inbox();
|
||||
$UT = common_config('db','type')=='pgsql'?'"user"':'user';
|
||||
$qry = 'INSERT INTO notice_inbox (user_id, notice_id, created) ' .
|
||||
"SELECT $UT.id, " . $this->id . ', "' . $this->created . '" ' .
|
||||
"SELECT $UT.id, " . $this->id . ", '" . $this->created . "' " .
|
||||
"FROM $UT JOIN subscription ON $UT.id = subscription.subscriber " .
|
||||
'WHERE subscription.subscribed = ' . $this->profile_id . ' ' .
|
||||
'AND NOT EXISTS (SELECT user_id, notice_id ' .
|
||||
|
@ -655,7 +655,7 @@ class Notice extends Memcached_DataObject
|
|||
$inbox = new Notice_inbox();
|
||||
$UT = common_config('db','type')=='pgsql'?'"user"':'user';
|
||||
$qry = 'INSERT INTO notice_inbox (user_id, notice_id, created, source) ' .
|
||||
"SELECT $UT.id, " . $this->id . ', "' . $this->created . '", 2 ' .
|
||||
"SELECT $UT.id, " . $this->id . ", '" . $this->created . "', 2 " .
|
||||
"FROM $UT JOIN group_member ON $UT.id = group_member.profile_id " .
|
||||
'WHERE group_member.group_id = ' . $group->id . ' ' .
|
||||
'AND NOT EXISTS (SELECT user_id, notice_id ' .
|
||||
|
|
|
@ -34,6 +34,9 @@ $config['site']['path'] = 'laconica';
|
|||
# If you want logging sent to a file instead of syslog
|
||||
#$config['site']['logfile'] = '/tmp/laconica.log';
|
||||
|
||||
# Enables extra log information, for example full details of PEAR DB errors
|
||||
#$config['site']['logdebug'] = true;
|
||||
|
||||
# This is a PEAR DB DSN, see http://pear.php.net/manual/en/package.database.db.intro-dsn.php
|
||||
# Set it to match your actual database
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@ create table profile (
|
|||
homepage varchar(255) /* comment 'identifying URL' */,
|
||||
bio varchar(140) /* comment 'descriptive biography' */,
|
||||
location varchar(255) /* comment 'physical location' */,
|
||||
created timestamp not null /* comment 'date this record was created' */,
|
||||
created timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was created' */,
|
||||
modified timestamp /* comment 'date this record was modified' */,
|
||||
|
||||
textsearch tsvector
|
||||
|
@ -23,7 +23,7 @@ create table avatar (
|
|||
mediatype varchar(32) not null /* comment 'file type' */,
|
||||
filename varchar(255) null /* comment 'local filename, if local' */,
|
||||
url varchar(255) unique /* comment 'avatar location' */,
|
||||
created timestamp not null /* comment 'date this record was created' */,
|
||||
created timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was created' */,
|
||||
modified timestamp /* comment 'date this record was modified' */,
|
||||
|
||||
primary key(profile_id, width, height)
|
||||
|
@ -34,7 +34,7 @@ create table sms_carrier (
|
|||
id serial primary key /* comment 'primary key for SMS carrier' */,
|
||||
name varchar(64) unique /* comment 'name of the carrier' */,
|
||||
email_pattern varchar(255) not null /* comment 'sprintf pattern for making an email address from a phone number' */,
|
||||
created timestamp not null /* comment 'date this record was created' */,
|
||||
created timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was created' */,
|
||||
modified timestamp /* comment 'date this record was modified ' */
|
||||
);
|
||||
|
||||
|
@ -50,6 +50,7 @@ create table "user" (
|
|||
emailnotifyfav integer default 1 /* comment 'Notify by email of favorites' */,
|
||||
emailnotifynudge integer default 1 /* comment 'Notify by email of nudges' */,
|
||||
emailnotifymsg integer default 1 /* comment 'Notify by email of direct messages' */,
|
||||
emailnotifyattn integer default 1 /* command 'Notify by email of @-replies' */,
|
||||
emailmicroid integer default 1 /* comment 'whether to publish email microid' */,
|
||||
language varchar(50) /* comment 'preferred language' */,
|
||||
timezone varchar(50) /* comment 'timezone' */,
|
||||
|
@ -68,7 +69,7 @@ create table "user" (
|
|||
autosubscribe integer default 0 /* comment 'automatically subscribe to users who subscribe to us' */,
|
||||
urlshorteningservice varchar(50) default 'ur1.ca' /* comment 'service to use for auto-shortening URLs' */,
|
||||
inboxed integer default 0 /* comment 'has an inbox been created for this user?' */,
|
||||
created timestamp not null /* comment 'date this record was created' */,
|
||||
created timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was created' */,
|
||||
modified timestamp /* comment 'date this record was modified' */
|
||||
|
||||
);
|
||||
|
@ -81,7 +82,7 @@ create table remote_profile (
|
|||
uri varchar(255) unique /* comment 'universally unique identifier, usually a tag URI' */,
|
||||
postnoticeurl varchar(255) /* comment 'URL we use for posting notices' */,
|
||||
updateprofileurl varchar(255) /* comment 'URL we use for updates to this profile' */,
|
||||
created timestamp not null /* comment 'date this record was created' */,
|
||||
created timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was created' */,
|
||||
modified timestamp /* comment 'date this record was modified' */
|
||||
);
|
||||
|
||||
|
@ -92,7 +93,7 @@ create table subscription (
|
|||
sms integer default 1 /* comment 'deliver sms messages' */,
|
||||
token varchar(255) /* comment 'authorization token' */,
|
||||
secret varchar(255) /* comment 'token secret' */,
|
||||
created timestamp not null /* comment 'date this record was created' */,
|
||||
created timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was created' */,
|
||||
modified timestamp /* comment 'date this record was modified' */,
|
||||
|
||||
primary key (subscriber, subscribed)
|
||||
|
@ -108,7 +109,7 @@ create table notice (
|
|||
content varchar(140) /* comment 'update content' */,
|
||||
rendered text /* comment 'HTML version of the content' */,
|
||||
url varchar(255) /* comment 'URL of any attachment (image, video, bookmark, whatever)' */,
|
||||
created timestamp not null /* comment 'date this record was created' */,
|
||||
created timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was created' */,
|
||||
modified timestamp /* comment 'date this record was modified' */,
|
||||
reply_to integer /* comment 'notice replied to (usually a guess)' */ references notice (id) ,
|
||||
is_local integer default 0 /* comment 'notice was generated by a user' */,
|
||||
|
@ -123,7 +124,7 @@ create table notice_source (
|
|||
code varchar(32) primary key not null /* comment 'source code' */,
|
||||
name varchar(255) not null /* comment 'name of the source' */,
|
||||
url varchar(255) not null /* comment 'url to link to' */,
|
||||
created timestamp not null /* comment 'date this record was created' */,
|
||||
created timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was created' */,
|
||||
modified timestamp /* comment 'date this record was modified' */
|
||||
);
|
||||
|
||||
|
@ -131,7 +132,7 @@ create table reply (
|
|||
|
||||
notice_id integer not null /* comment 'notice that is the reply' */ references notice (id) ,
|
||||
profile_id integer not null /* comment 'profile replied to' */ references profile (id) ,
|
||||
modified timestamp not null default 'now' /* comment 'date this record was modified' */,
|
||||
modified timestamp /* comment 'date this record was modified' */,
|
||||
replied_id integer /* comment 'notice replied to (not used, see notice.reply_to)' */,
|
||||
|
||||
primary key (notice_id, profile_id)
|
||||
|
@ -145,7 +146,7 @@ create table fave (
|
|||
|
||||
notice_id integer not null /* comment 'notice that is the favorite' */ references notice (id),
|
||||
user_id integer not null /* comment 'user who likes this notice' */ references "user" (id) ,
|
||||
modified timestamp not null /* comment 'date this record was modified' */,
|
||||
modified timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was modified' */,
|
||||
primary key (notice_id, user_id)
|
||||
|
||||
);
|
||||
|
@ -159,7 +160,7 @@ create table consumer (
|
|||
consumer_key varchar(255) primary key /* comment 'unique identifier, root URL' */,
|
||||
seed char(32) not null /* comment 'seed for new tokens by this consumer' */,
|
||||
|
||||
created timestamp not null /* comment 'date this record was created' */,
|
||||
created timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was created' */,
|
||||
modified timestamp /* comment 'date this record was modified' */
|
||||
);
|
||||
|
||||
|
@ -170,7 +171,7 @@ create table token (
|
|||
type integer not null default 0 /* comment 'request or access' */,
|
||||
state integer default 0 /* comment 'for requests; 0 = initial, 1 = authorized, 2 = used' */,
|
||||
|
||||
created timestamp not null /* comment 'date this record was created' */,
|
||||
created timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was created' */,
|
||||
modified timestamp /* comment 'date this record was modified' */,
|
||||
|
||||
primary key (consumer_key, tok)
|
||||
|
@ -182,7 +183,7 @@ create table nonce (
|
|||
nonce char(32) not null /* comment 'nonce' */,
|
||||
ts timestamp not null /* comment 'timestamp sent' */,
|
||||
|
||||
created timestamp not null /* comment 'date this record was created' */,
|
||||
created timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was created' */,
|
||||
modified timestamp /* comment 'date this record was modified' */,
|
||||
|
||||
primary key (consumer_key, tok, nonce),
|
||||
|
@ -195,7 +196,7 @@ create table user_openid (
|
|||
canonical varchar(255) primary key /* comment 'Canonical true URL' */,
|
||||
display varchar(255) not null unique /* comment 'URL for viewing, may be different from canonical' */,
|
||||
user_id integer not null /* comment 'user owning this URL' */ references "user" (id) ,
|
||||
created timestamp not null /* comment 'date this record was created' */,
|
||||
created timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was created' */,
|
||||
modified timestamp /* comment 'date this record was modified' */
|
||||
|
||||
);
|
||||
|
@ -241,7 +242,7 @@ create table queue_item (
|
|||
|
||||
notice_id integer not null /* comment 'notice queued' */ references notice (id) ,
|
||||
transport varchar(8) not null /* comment 'queue for what? "email", "jabber", "sms", "irc", ...' */,
|
||||
created timestamp not null /* comment 'date this record was created' */,
|
||||
created timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was created' */,
|
||||
claimed timestamp /* comment 'date this item was claimed' */,
|
||||
|
||||
primary key (notice_id, transport)
|
||||
|
@ -253,7 +254,7 @@ create index queue_item_created_idx on queue_item using btree(created);
|
|||
create table notice_tag (
|
||||
tag varchar( 64 ) not null /* comment 'hash tag associated with this notice' */,
|
||||
notice_id integer not null /* comment 'notice tagged' */ references notice (id) ,
|
||||
created timestamp not null /* comment 'date this record was created' */,
|
||||
created timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was created' */,
|
||||
|
||||
primary key (tag, notice_id)
|
||||
);
|
||||
|
@ -265,7 +266,7 @@ create table foreign_service (
|
|||
id int not null primary key /* comment 'numeric key for service' */,
|
||||
name varchar(32) not null unique /* comment 'name of the service' */,
|
||||
description varchar(255) /* comment 'description' */,
|
||||
created timestamp not null /* comment 'date this record was created' */,
|
||||
created timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was created' */,
|
||||
modified timestamp /* comment 'date this record was modified' */
|
||||
);
|
||||
|
||||
|
@ -274,7 +275,7 @@ create table foreign_user (
|
|||
service int not null /* comment 'foreign key to service' */ references foreign_service(id) ,
|
||||
uri varchar(255) not null unique /* comment 'identifying URI' */,
|
||||
nickname varchar(255) /* comment 'nickname on foreign service' */,
|
||||
created timestamp not null /* comment 'date this record was created' */,
|
||||
created timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was created' */,
|
||||
modified timestamp /* comment 'date this record was modified' */,
|
||||
|
||||
primary key (id, service)
|
||||
|
@ -288,8 +289,8 @@ create table foreign_link (
|
|||
noticesync int not null default 1 /* comment 'notice synchronisation, bit 1 = sync outgoing, bit 2 = sync incoming, bit 3 = filter local replies' */,
|
||||
friendsync int not null default 2 /* comment 'friend synchronisation, bit 1 = sync outgoing, bit 2 = sync incoming */,
|
||||
profilesync int not null default 1 /* comment 'profile synchronization, bit 1 = sync outgoing, bit 2 = sync incoming' */,
|
||||
created timestamp not null /* comment 'date this record was created' */,
|
||||
modified timestamp not null /* comment 'date this record was modified' */,
|
||||
created timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was created' */,
|
||||
modified timestamp /* comment 'date this record was modified' */,
|
||||
|
||||
primary key (user_id,foreign_id,service)
|
||||
);
|
||||
|
@ -299,7 +300,7 @@ create table foreign_subscription (
|
|||
service int not null /* comment 'service where relationship happens' */ references foreign_service(id) ,
|
||||
subscriber int not null /* comment 'subscriber on foreign service' */ ,
|
||||
subscribed int not null /* comment 'subscribed user' */ ,
|
||||
created timestamp not null /* comment 'date this record was created' */,
|
||||
created timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was created' */,
|
||||
|
||||
primary key (service, subscriber, subscribed)
|
||||
);
|
||||
|
@ -311,7 +312,7 @@ create table invitation (
|
|||
user_id int not null /* comment 'who sent the invitation' */ references "user" (id),
|
||||
address varchar(255) not null /* comment 'invitation sent to' */,
|
||||
address_type varchar(8) not null /* comment 'address type ("email", "jabber", "sms") '*/,
|
||||
created timestamp not null /* comment 'date this record was created' */
|
||||
created timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was created' */
|
||||
|
||||
);
|
||||
create index invitation_address_idx on invitation using btree(address,address_type);
|
||||
|
@ -326,7 +327,7 @@ create table message (
|
|||
content varchar(140) /* comment 'message content' */,
|
||||
rendered text /* comment 'HTML version of the content' */,
|
||||
url varchar(255) /* comment 'URL of any attachment (image, video, bookmark, whatever)' */,
|
||||
created timestamp not null /* comment 'date this record was created' */,
|
||||
created timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was created' */,
|
||||
modified timestamp /* comment 'date this record was modified' */,
|
||||
source varchar(32) /* comment 'source of comment, like "web", "im", or "clientname"' */
|
||||
|
||||
|
@ -339,7 +340,7 @@ create table notice_inbox (
|
|||
|
||||
user_id integer not null /* comment 'user receiving the message' */ references "user" (id),
|
||||
notice_id integer not null /* comment 'notice received' */ references notice (id),
|
||||
created timestamp not null /* comment 'date the notice was created' */,
|
||||
created timestamp not null default CURRENT_TIMESTAMP /* comment 'date the notice was created' */,
|
||||
source integer default 1 /* comment 'reason it is in the inbox; 1=subscription' */,
|
||||
|
||||
primary key (user_id, notice_id)
|
||||
|
@ -382,7 +383,7 @@ create table user_group (
|
|||
stream_logo varchar(255) /* comment 'stream-sized logo' */,
|
||||
mini_logo varchar(255) /* comment 'mini logo' */,
|
||||
|
||||
created timestamp not null /* comment 'date this record was created' */,
|
||||
created timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was created' */,
|
||||
modified timestamp /* comment 'date this record was modified' */
|
||||
|
||||
);
|
||||
|
@ -394,7 +395,7 @@ create table group_member (
|
|||
profile_id integer not null /* comment 'foreign key to profile table' */ references profile (id),
|
||||
is_admin integer default 0 /* comment 'is this user an admin?' */,
|
||||
|
||||
created timestamp not null /* comment 'date this record was created' */,
|
||||
created timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was created' */,
|
||||
modified timestamp /* comment 'date this record was modified' */,
|
||||
|
||||
primary key (group_id, profile_id)
|
||||
|
@ -405,7 +406,7 @@ create table related_group (
|
|||
group_id integer not null /* comment 'foreign key to user_group' */ references user_group (id) ,
|
||||
related_group_id integer not null /* comment 'foreign key to user_group' */ references user_group (id),
|
||||
|
||||
created timestamp not null /* comment 'date this record was created' */,
|
||||
created timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was created' */,
|
||||
|
||||
primary key (group_id, related_group_id)
|
||||
|
||||
|
@ -414,7 +415,7 @@ create table related_group (
|
|||
create table group_inbox (
|
||||
group_id integer not null /* comment 'group receiving the message' references user_group (id) */,
|
||||
notice_id integer not null /* comment 'notice received' references notice (id) */,
|
||||
created timestamp not null /* comment 'date the notice was created' */,
|
||||
created timestamp not null default CURRENT_TIMESTAMP /* comment 'date the notice was created' */,
|
||||
|
||||
primary key (group_id, notice_id)
|
||||
);
|
||||
|
|
|
@ -43,7 +43,11 @@ function handleError($error)
|
|||
return;
|
||||
}
|
||||
|
||||
common_log(LOG_ERR, "PEAR error: " . $error->getMessage());
|
||||
$logmsg = "PEAR error: " . $error->getMessage();
|
||||
if(common_config('site', 'logdebug')) {
|
||||
$logmsg .= " : ". $error->getDebugInfo();
|
||||
}
|
||||
common_log(LOG_ERR, $logmsg);
|
||||
$msg = sprintf(_('The database for %s isn\'t responding correctly, '.
|
||||
'so the site won\'t work properly. '.
|
||||
'The site admins probably know about the problem, '.
|
||||
|
|
|
@ -37,10 +37,3 @@
|
|||
$('#avatar_crop_w').val(c.w);
|
||||
$('#avatar_crop_h').val(c.h);
|
||||
};
|
||||
|
||||
function checkCoords() {
|
||||
if (parseInt($('#avatar_crop_w').val())) return true;
|
||||
alert('Please select a crop region then press submit.');
|
||||
return false;
|
||||
};
|
||||
|
||||
|
|
|
@ -73,6 +73,7 @@ $config =
|
|||
'theme' => 'default',
|
||||
'path' => $_path,
|
||||
'logfile' => null,
|
||||
'logdebug' => false,
|
||||
'fancy' => false,
|
||||
'locale_path' => INSTALLDIR.'/locale',
|
||||
'language' => 'en_US',
|
||||
|
|
|
@ -45,7 +45,7 @@ class GroupsByMembersSection extends GroupSection
|
|||
{
|
||||
function getGroups()
|
||||
{
|
||||
$qry = 'SELECT user_group.*, count(*) as value ' .
|
||||
$qry = 'SELECT user_group.id, count(*) as value ' .
|
||||
'FROM user_group JOIN group_member '.
|
||||
'ON user_group.id = group_member.group_id ' .
|
||||
'GROUP BY user_group.id ' .
|
||||
|
|
|
@ -45,7 +45,7 @@ class GroupsByPostsSection extends GroupSection
|
|||
{
|
||||
function getGroups()
|
||||
{
|
||||
$qry = 'SELECT user_group.*, count(*) as value ' .
|
||||
$qry = 'SELECT user_group.id, count(*) as value ' .
|
||||
'FROM user_group JOIN group_inbox '.
|
||||
'ON user_group.id = group_inbox.group_id ' .
|
||||
'GROUP BY user_group.id ' .
|
||||
|
|
|
@ -58,8 +58,14 @@ class GroupTagCloudSection extends TagCloudSection
|
|||
|
||||
function getTags()
|
||||
{
|
||||
if (common_config('db', 'type') == 'pgsql') {
|
||||
$weightexpr='sum(exp(-extract(epoch from (now() - notice_tag.created)) / %s))';
|
||||
} else {
|
||||
$weightexpr='sum(exp(-(now() - notice_tag.created) / %s))';
|
||||
}
|
||||
|
||||
$qry = 'SELECT notice_tag.tag, '.
|
||||
'sum(exp(-(now() - notice_tag.created)/%s)) as weight ' .
|
||||
$weightexpr . ' as weight ' .
|
||||
'FROM notice_tag JOIN notice ' .
|
||||
'ON notice_tag.notice_id = notice.id ' .
|
||||
'JOIN group_inbox on group_inbox.notice_id = notice.id ' .
|
||||
|
|
|
@ -58,8 +58,14 @@ class PersonalTagCloudSection extends TagCloudSection
|
|||
|
||||
function getTags()
|
||||
{
|
||||
$qry = 'SELECT notice_tag.tag, '.
|
||||
'sum(exp(-(now() - notice_tag.created)/%s)) as weight ' .
|
||||
if (common_config('db', 'type') == 'pgsql') {
|
||||
$weightexpr='sum(exp(-extract(epoch from (now() - notice_tag.created)) / %s))';
|
||||
} else {
|
||||
$weightexpr='sum(exp(-(now() - notice_tag.created) / %s))';
|
||||
}
|
||||
|
||||
$qry = 'SELECT notice_tag.tag, '.
|
||||
$weightexpr . ' as weight ' .
|
||||
'FROM notice_tag JOIN notice ' .
|
||||
'ON notice_tag.notice_id = notice.id ' .
|
||||
'WHERE notice.profile_id = %d ' .
|
||||
|
|
|
@ -48,10 +48,16 @@ class PopularNoticeSection extends NoticeSection
|
|||
{
|
||||
function getNotices()
|
||||
{
|
||||
$qry = 'SELECT notice.*, '.
|
||||
'sum(exp(-(now() - fave.modified) / %s)) as weight ' .
|
||||
if (common_config('db', 'type') == 'pgsql') {
|
||||
$weightexpr='sum(exp(-extract(epoch from (now() - fave.modified)) / %s))';
|
||||
} else {
|
||||
$weightexpr='sum(exp(-(now() - fave.modified) / %s))';
|
||||
}
|
||||
|
||||
$qry = 'SELECT notice.id, '.
|
||||
$weightexpr . ' as weight ' .
|
||||
'FROM notice JOIN fave ON notice.id = fave.notice_id ' .
|
||||
'GROUP BY fave.notice_id ' .
|
||||
'GROUP BY notice.id ' .
|
||||
'ORDER BY weight DESC';
|
||||
|
||||
$offset = 0;
|
||||
|
|
|
@ -39,6 +39,7 @@ require_once INSTALLDIR.'/lib/widget.php';
|
|||
* @category Output
|
||||
* @package Laconica
|
||||
* @author Evan Prodromou <evan@controlyourself.ca>
|
||||
* @author Sarven Capadisli <csarven@controlyourself.ca>
|
||||
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
|
||||
* @link http://laconi.ca/
|
||||
*
|
||||
|
@ -73,23 +74,26 @@ class PublicGroupNav extends Widget
|
|||
|
||||
$this->action->elementStart('ul', array('class' => 'nav'));
|
||||
|
||||
$this->out->menuItem(common_local_url('public'), _('Public'),
|
||||
_('Public timeline'), $action_name == 'public', 'nav_timeline_public');
|
||||
if (Event::handle('StartPublicGroupNav', array($this))) {
|
||||
$this->out->menuItem(common_local_url('public'), _('Public'),
|
||||
_('Public timeline'), $action_name == 'public', 'nav_timeline_public');
|
||||
|
||||
$this->out->menuItem(common_local_url('groups'), _('Groups'),
|
||||
_('User groups'), $action_name == 'groups', 'nav_groups');
|
||||
$this->out->menuItem(common_local_url('groups'), _('Groups'),
|
||||
_('User groups'), $action_name == 'groups', 'nav_groups');
|
||||
|
||||
$this->out->menuItem(common_local_url('publictagcloud'), _('Recent tags'),
|
||||
_('Recent tags'), $action_name == 'publictagcloud', 'nav_recent-tags');
|
||||
$this->out->menuItem(common_local_url('publictagcloud'), _('Recent tags'),
|
||||
_('Recent tags'), $action_name == 'publictagcloud', 'nav_recent-tags');
|
||||
|
||||
if (count(common_config('nickname', 'featured')) > 0) {
|
||||
$this->out->menuItem(common_local_url('featured'), _('Featured'),
|
||||
_('Featured users'), $action_name == 'featured', 'nav_featured');
|
||||
if (count(common_config('nickname', 'featured')) > 0) {
|
||||
$this->out->menuItem(common_local_url('featured'), _('Featured'),
|
||||
_('Featured users'), $action_name == 'featured', 'nav_featured');
|
||||
}
|
||||
|
||||
$this->out->menuItem(common_local_url('favorited'), _('Popular'),
|
||||
_("Popular notices"), $action_name == 'favorited', 'nav_timeline_favorited');
|
||||
|
||||
Event::handle('EndPublicGroupNav', array($this));
|
||||
}
|
||||
|
||||
$this->out->menuItem(common_local_url('favorited'), _('Popular'),
|
||||
_("Popular notices"), $action_name == 'favorited', 'nav_timeline_favorited');
|
||||
|
||||
$this->action->elementEnd('ul');
|
||||
}
|
||||
}
|
||||
|
|
|
@ -393,6 +393,8 @@ class Router
|
|||
array('action' => 'showstream'),
|
||||
array('nickname' => '[a-zA-Z0-9]{1,64}'));
|
||||
|
||||
Event::handle('RouterInitialized', array($m));
|
||||
|
||||
return $m;
|
||||
}
|
||||
|
||||
|
|
|
@ -2,14 +2,21 @@
|
|||
*
|
||||
* @package Laconica
|
||||
* @author Meitar Moscovitz <meitar@maymay.net>
|
||||
* @author Sarven Capadisli <csarven@controlyourself.ca>
|
||||
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
|
||||
* @link http://laconi.ca/
|
||||
*/
|
||||
|
||||
/* Go linear. */
|
||||
body {
|
||||
font-size:2.5em;
|
||||
}
|
||||
|
||||
#wrap {
|
||||
width:95%;
|
||||
}
|
||||
|
||||
#header,
|
||||
#header address,
|
||||
#site_nav_global_primary,
|
||||
#anon_notice,
|
||||
#site_nav_local_views .nav,
|
||||
#form_notice,
|
||||
|
@ -24,49 +31,120 @@
|
|||
.notice .notice-options a,
|
||||
.pagination,
|
||||
.pagination .nav,
|
||||
.aside .section { float: none; }
|
||||
.aside .section {
|
||||
float:none;
|
||||
}
|
||||
|
||||
.notice-options .notice_reply,
|
||||
.notice-options .notice_delete,
|
||||
.notice-options .form_favor,
|
||||
.notice-options .form_disfavor { position: static; }
|
||||
.notice-options .form_disfavor {
|
||||
position:static;
|
||||
}
|
||||
|
||||
#form_notice,
|
||||
#anon_notice,
|
||||
#content_inner,
|
||||
#footer { width: auto; }
|
||||
#footer,
|
||||
#form_notice .form_actions input.submit {
|
||||
width:auto;
|
||||
}
|
||||
|
||||
/* And liquid. */
|
||||
#wrap { width: 95%; }
|
||||
.form_settings label {
|
||||
width:25%;
|
||||
}
|
||||
.form_settings .form_data p.form_guide {
|
||||
margin-left:26%;
|
||||
}
|
||||
|
||||
/* Make things bigger on smaller screens. */
|
||||
body { font-size: 2em; }
|
||||
.notices { font-size: 1.5em; }
|
||||
#site_nav_global_primary {
|
||||
width:75%;
|
||||
}
|
||||
|
||||
#site_nav_global_primary, #site_nav_global_secondary { text-align: center; }
|
||||
.entity_profile {
|
||||
width:65%;
|
||||
}
|
||||
.entity_actions {
|
||||
margin-left:0;
|
||||
}
|
||||
|
||||
.notice div.entry-content { margin-left: 0; }
|
||||
address { margin: 0; }
|
||||
#form_notice,
|
||||
#anon_notice {
|
||||
clear:both;
|
||||
}
|
||||
|
||||
#anon_notice, #footer { clear: left; font-size: .5em; }
|
||||
#content,
|
||||
#aside_primary {
|
||||
width:96%;
|
||||
padding-left:2%;
|
||||
padding-right:2%;
|
||||
}
|
||||
|
||||
#form_notice textarea { width: 80%; height: 5em; }
|
||||
#form_notice .form_note { right: 20%; top: 6em; }
|
||||
#form_notice .form_actions input.submit { width: auto; }
|
||||
#site_notice {
|
||||
position:static;
|
||||
float:right;
|
||||
clear:right;
|
||||
width:75%;
|
||||
margin-right:0;
|
||||
margin-bottom:11px;
|
||||
}
|
||||
|
||||
#content { padding: 18px 0; width: 100%; }
|
||||
#content h1, #page_notice, #content_inner { padding: 0 18px; }
|
||||
.notices .entry-title, .notices div.entry-content { width: 90%; }
|
||||
.notice .author .photo { height: 4.5em; width: 4.5em; } /* about double physical size; TODO: do this scaling better */
|
||||
.notice-options { position: absolute; top: 0; right: 0; padding-left: 7%; width: 3%; }
|
||||
.notice-options .notice_delete a { float: left; } /* Works, but feels like it shouldn't. */
|
||||
/* TODO: Make the icons of the notice options bigger. Probably with mobile-specific images. */
|
||||
.pagination .nav { overflow: auto; }
|
||||
.notices {
|
||||
font-size:1.5em;
|
||||
}
|
||||
|
||||
#aside_primary { margin: 10px 0 0 0; border: none; padding: 0; width: 100%; }
|
||||
#popular_notices { float: none; width: auto; }
|
||||
/* Columns for supplemental info. */
|
||||
.aside .section { clear: none; padding: 9px; width: 45%; }
|
||||
#top_groups_by_post { float: left; }
|
||||
#featured_users { float: right; }
|
||||
#export_data { display: none; }
|
||||
#form_notice textarea {
|
||||
width:80%;
|
||||
height:5em;
|
||||
}
|
||||
#form_notice .form_note {
|
||||
right:20%;
|
||||
top:6em;
|
||||
}
|
||||
|
||||
|
||||
.vcard .photo,
|
||||
.section .vcard .photo {
|
||||
margin-right:18px;
|
||||
}
|
||||
.notice,
|
||||
.profile {
|
||||
margin-bottom:18px;
|
||||
}
|
||||
|
||||
.notices .entry-title,
|
||||
.notices div.entry-content {
|
||||
width:90%;
|
||||
}
|
||||
.notice div.entry-content {
|
||||
margin-left:0;
|
||||
}
|
||||
|
||||
.notice .author .photo {
|
||||
height:4.5em;
|
||||
width:4.5em;
|
||||
}
|
||||
.notice-options {
|
||||
position:absolute;
|
||||
top:0;
|
||||
right:0;
|
||||
padding-left:7%;
|
||||
width:3%;
|
||||
}
|
||||
|
||||
.notice-options .notice_delete a {
|
||||
float:left;
|
||||
}
|
||||
.pagination .nav {
|
||||
overflow:auto;
|
||||
}
|
||||
|
||||
#export_data {
|
||||
display:none;
|
||||
}
|
||||
|
||||
#site_nav_local_views li {
|
||||
margin-right:4px;
|
||||
}
|
||||
#site_nav_local_views a {
|
||||
padding:18px 11px;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user