Merge branch '0.7.x' of git@gitorious.org:laconica/dev into 0.7.x
This commit is contained in:
		
							
								
								
									
										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
 | 
					EndShowLocalNavBlock: At the end of the local nav menu
 | 
				
			||||||
- $action: the current action
 | 
					- $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
 | 
					- $action: the current action
 | 
				
			||||||
 | 
					
 | 
				
			||||||
EndShowHTML: Showing after the html element
 | 
					EndShowHTML: Showing after the html element
 | 
				
			||||||
- $action: the current action
 | 
					- $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;
 | 
					            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_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_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_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'):$filedata['height'];
 | 
					        $dest_h = $this->arg('avatar_crop_h') ? $this->arg('avatar_crop_h'):$file_d;
 | 
				
			||||||
        $size = min($dest_w, $dest_h, MAX_ORIGINAL);
 | 
					        $size = min($dest_w, $dest_h, MAX_ORIGINAL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $user = common_current_user();
 | 
					        $user = common_current_user();
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -169,8 +169,14 @@ class FavoritedAction extends Action
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    function showContent()
 | 
					    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.*, '.
 | 
					        $qry = 'SELECT notice.*, '.
 | 
				
			||||||
          'sum(exp(-(now() - fave.modified) / %s)) as weight ' .
 | 
					          $weightexpr . ' as weight ' .
 | 
				
			||||||
          'FROM notice JOIN fave ON notice.id = fave.notice_id ' .
 | 
					          'FROM notice JOIN fave ON notice.id = fave.notice_id ' .
 | 
				
			||||||
          'GROUP BY fave.notice_id ' .
 | 
					          'GROUP BY fave.notice_id ' .
 | 
				
			||||||
          'ORDER BY weight DESC';
 | 
					          'ORDER BY weight DESC';
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -152,6 +152,11 @@ class NewnoticeAction extends Action
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $replyto = $this->trimmed('inreplyto');
 | 
					        $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,
 | 
					        $notice = Notice::saveNew($user->id, $content, 'web', 1,
 | 
				
			||||||
                                  ($replyto == 'false') ? null : $replyto);
 | 
					                                  ($replyto == 'false') ? null : $replyto);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -585,7 +585,7 @@ class Notice extends Memcached_DataObject
 | 
				
			|||||||
            $inbox = new Notice_inbox();
 | 
					            $inbox = new Notice_inbox();
 | 
				
			||||||
            $UT = common_config('db','type')=='pgsql'?'"user"':'user';
 | 
					            $UT = common_config('db','type')=='pgsql'?'"user"':'user';
 | 
				
			||||||
            $qry = 'INSERT INTO notice_inbox (user_id, notice_id, created) ' .
 | 
					            $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 " .
 | 
					              "FROM $UT JOIN subscription ON $UT.id = subscription.subscriber " .
 | 
				
			||||||
              'WHERE subscription.subscribed = ' . $this->profile_id . ' ' .
 | 
					              'WHERE subscription.subscribed = ' . $this->profile_id . ' ' .
 | 
				
			||||||
              'AND NOT EXISTS (SELECT user_id, notice_id ' .
 | 
					              'AND NOT EXISTS (SELECT user_id, notice_id ' .
 | 
				
			||||||
@@ -655,7 +655,7 @@ class Notice extends Memcached_DataObject
 | 
				
			|||||||
                $inbox = new Notice_inbox();
 | 
					                $inbox = new Notice_inbox();
 | 
				
			||||||
                $UT = common_config('db','type')=='pgsql'?'"user"':'user';
 | 
					                $UT = common_config('db','type')=='pgsql'?'"user"':'user';
 | 
				
			||||||
                $qry = 'INSERT INTO notice_inbox (user_id, notice_id, created, source) ' .
 | 
					                $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 " .
 | 
					                  "FROM $UT JOIN group_member ON $UT.id = group_member.profile_id " .
 | 
				
			||||||
                  'WHERE group_member.group_id = ' . $group->id . ' ' .
 | 
					                  'WHERE group_member.group_id = ' . $group->id . ' ' .
 | 
				
			||||||
                  'AND NOT EXISTS (SELECT user_id, notice_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
 | 
					# If you want logging sent to a file instead of syslog
 | 
				
			||||||
#$config['site']['logfile'] = '/tmp/laconica.log';
 | 
					#$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
 | 
					# 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
 | 
					# Set it to match your actual database
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@ create table profile (
 | 
				
			|||||||
    homepage varchar(255) /* comment 'identifying URL' */,
 | 
					    homepage varchar(255) /* comment 'identifying URL' */,
 | 
				
			||||||
    bio varchar(140) /* comment 'descriptive biography' */,
 | 
					    bio varchar(140) /* comment 'descriptive biography' */,
 | 
				
			||||||
    location varchar(255) /* comment 'physical location' */,
 | 
					    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' */,
 | 
					    modified timestamp /* comment 'date this record was modified' */,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    textsearch tsvector
 | 
					    textsearch tsvector
 | 
				
			||||||
@@ -23,7 +23,7 @@ create table avatar (
 | 
				
			|||||||
    mediatype varchar(32) not null /* comment 'file type' */,
 | 
					    mediatype varchar(32) not null /* comment 'file type' */,
 | 
				
			||||||
    filename varchar(255) null /* comment 'local filename, if local' */,
 | 
					    filename varchar(255) null /* comment 'local filename, if local' */,
 | 
				
			||||||
    url varchar(255) unique /* comment 'avatar location' */,
 | 
					    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' */,
 | 
					    modified timestamp /* comment 'date this record was modified' */,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    primary key(profile_id, width, height)
 | 
					    primary key(profile_id, width, height)
 | 
				
			||||||
@@ -34,7 +34,7 @@ create table sms_carrier (
 | 
				
			|||||||
    id serial primary key /* comment 'primary key for SMS carrier' */,
 | 
					    id serial primary key /* comment 'primary key for SMS carrier' */,
 | 
				
			||||||
    name varchar(64) unique /* comment 'name of the 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' */,
 | 
					    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 ' */
 | 
					    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' */,
 | 
					    emailnotifyfav integer default 1 /* comment 'Notify by email of favorites' */,
 | 
				
			||||||
    emailnotifynudge integer default 1 /* comment 'Notify by email of nudges' */,
 | 
					    emailnotifynudge integer default 1 /* comment 'Notify by email of nudges' */,
 | 
				
			||||||
    emailnotifymsg integer default 1 /* comment 'Notify by email of direct messages' */,
 | 
					    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' */,
 | 
					    emailmicroid integer default 1 /* comment 'whether to publish email microid' */,
 | 
				
			||||||
    language varchar(50) /* comment 'preferred language' */,
 | 
					    language varchar(50) /* comment 'preferred language' */,
 | 
				
			||||||
    timezone varchar(50) /* comment 'timezone' */,
 | 
					    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' */,
 | 
					    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' */,
 | 
					    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?' */, 
 | 
					    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' */
 | 
					    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' */,
 | 
					    uri varchar(255) unique /* comment 'universally unique identifier, usually a tag URI' */,
 | 
				
			||||||
    postnoticeurl varchar(255) /* comment 'URL we use for posting notices' */,
 | 
					    postnoticeurl varchar(255) /* comment 'URL we use for posting notices' */,
 | 
				
			||||||
    updateprofileurl varchar(255) /* comment 'URL we use for updates to this profile' */,
 | 
					    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' */
 | 
					    modified timestamp /* comment 'date this record was modified' */
 | 
				
			||||||
);
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -92,7 +93,7 @@ create table subscription (
 | 
				
			|||||||
    sms integer default 1 /* comment 'deliver sms messages' */,
 | 
					    sms integer default 1 /* comment 'deliver sms messages' */,
 | 
				
			||||||
    token varchar(255) /* comment 'authorization token' */,
 | 
					    token varchar(255) /* comment 'authorization token' */,
 | 
				
			||||||
    secret varchar(255) /* comment 'token secret' */,
 | 
					    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' */,
 | 
					    modified timestamp /* comment 'date this record was modified' */,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    primary key (subscriber, subscribed)
 | 
					    primary key (subscriber, subscribed)
 | 
				
			||||||
@@ -108,7 +109,7 @@ create table notice (
 | 
				
			|||||||
    content varchar(140) /* comment 'update content' */,
 | 
					    content varchar(140) /* comment 'update content' */,
 | 
				
			||||||
    rendered text /* comment 'HTML version of the content' */,
 | 
					    rendered text /* comment 'HTML version of the content' */,
 | 
				
			||||||
    url varchar(255) /* comment 'URL of any attachment (image, video, bookmark, whatever)' */,
 | 
					    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' */,
 | 
					    modified timestamp /* comment 'date this record was modified' */,
 | 
				
			||||||
    reply_to integer /* comment 'notice replied to (usually a guess)' */ references notice (id) ,
 | 
					    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' */,
 | 
					    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' */,
 | 
					     code varchar(32) primary key not null /* comment 'source code' */,
 | 
				
			||||||
     name varchar(255) not null /* comment 'name of the source' */,
 | 
					     name varchar(255) not null /* comment 'name of the source' */,
 | 
				
			||||||
     url varchar(255) not null /* comment 'url to link to' */,
 | 
					     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' */
 | 
					     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) ,
 | 
					    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) ,
 | 
					    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)' */,
 | 
					    replied_id integer /* comment 'notice replied to (not used, see notice.reply_to)' */,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    primary key (notice_id, profile_id)
 | 
					    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),
 | 
					    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) ,
 | 
					    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)
 | 
					    primary key (notice_id, user_id)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
);
 | 
					);
 | 
				
			||||||
@@ -159,7 +160,7 @@ create table consumer (
 | 
				
			|||||||
    consumer_key varchar(255) primary key /* comment 'unique identifier, root URL' */,
 | 
					    consumer_key varchar(255) primary key /* comment 'unique identifier, root URL' */,
 | 
				
			||||||
    seed char(32) not null /* comment 'seed for new tokens by this consumer' */,
 | 
					    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' */
 | 
					    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' */,
 | 
					    type integer not null default 0 /* comment 'request or access' */,
 | 
				
			||||||
    state integer default 0 /* comment 'for requests; 0 = initial, 1 = authorized, 2 = used' */,
 | 
					    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' */,
 | 
					    modified timestamp /* comment 'date this record was modified' */,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    primary key (consumer_key, tok)
 | 
					    primary key (consumer_key, tok)
 | 
				
			||||||
@@ -182,7 +183,7 @@ create table nonce (
 | 
				
			|||||||
    nonce char(32) not null /* comment 'nonce' */,
 | 
					    nonce char(32) not null /* comment 'nonce' */,
 | 
				
			||||||
    ts timestamp not null /* comment 'timestamp sent' */,
 | 
					    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' */,
 | 
					    modified timestamp /* comment 'date this record was modified' */,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    primary key (consumer_key, tok, nonce),
 | 
					    primary key (consumer_key, tok, nonce),
 | 
				
			||||||
@@ -195,7 +196,7 @@ create table user_openid (
 | 
				
			|||||||
    canonical varchar(255) primary key /* comment 'Canonical true URL' */,
 | 
					    canonical varchar(255) primary key /* comment 'Canonical true URL' */,
 | 
				
			||||||
    display varchar(255) not null unique /* comment 'URL for viewing, may be different from canonical' */,
 | 
					    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) ,
 | 
					    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' */
 | 
					    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) ,
 | 
					    notice_id integer not null /* comment 'notice queued' */ references notice (id) ,
 | 
				
			||||||
    transport varchar(8) not null /* comment 'queue for what? "email", "jabber", "sms", "irc", ...' */,
 | 
					    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' */,
 | 
					    claimed timestamp /* comment 'date this item was claimed' */,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    primary key (notice_id, transport)
 | 
					    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 (
 | 
					create table notice_tag (
 | 
				
			||||||
    tag varchar( 64 ) not null /* comment 'hash tag associated with this notice' */,
 | 
					    tag varchar( 64 ) not null /* comment 'hash tag associated with this notice' */,
 | 
				
			||||||
    notice_id integer not null /* comment 'notice tagged' */ references notice (id) ,
 | 
					    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)
 | 
					    primary key (tag, notice_id)
 | 
				
			||||||
);
 | 
					);
 | 
				
			||||||
@@ -265,7 +266,7 @@ create table foreign_service (
 | 
				
			|||||||
     id int not null primary key /* comment 'numeric key for service' */,
 | 
					     id int not null primary key /* comment 'numeric key for service' */,
 | 
				
			||||||
     name varchar(32) not null unique /* comment 'name of the service' */,
 | 
					     name varchar(32) not null unique /* comment 'name of the service' */,
 | 
				
			||||||
     description varchar(255) /* comment 'description' */,
 | 
					     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' */
 | 
					     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) ,
 | 
					     service int not null /* comment 'foreign key to service' */ references foreign_service(id) ,
 | 
				
			||||||
     uri varchar(255) not null unique /* comment 'identifying URI' */,
 | 
					     uri varchar(255) not null unique /* comment 'identifying URI' */,
 | 
				
			||||||
     nickname varchar(255) /* comment 'nickname on foreign service' */,
 | 
					     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' */,
 | 
					     modified timestamp /* comment 'date this record was modified' */,
 | 
				
			||||||
     
 | 
					     
 | 
				
			||||||
     primary key (id, service)
 | 
					     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' */,
 | 
					     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 */, 
 | 
					     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' */,
 | 
					     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' */,
 | 
					     created timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was created' */,
 | 
				
			||||||
     modified timestamp not null /* comment 'date this record was modified' */,
 | 
					     modified timestamp /* comment 'date this record was modified' */,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
     primary key (user_id,foreign_id,service)
 | 
					     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) ,
 | 
					     service int not null /* comment 'service where relationship happens' */ references foreign_service(id) ,
 | 
				
			||||||
     subscriber int not null /* comment 'subscriber on foreign service' */ ,
 | 
					     subscriber int not null /* comment 'subscriber on foreign service' */ ,
 | 
				
			||||||
     subscribed int not null /* comment 'subscribed user' */ ,
 | 
					     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)
 | 
					     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),
 | 
					     user_id int not null /* comment 'who sent the invitation' */ references "user" (id),
 | 
				
			||||||
     address varchar(255) not null /* comment 'invitation sent to' */,
 | 
					     address varchar(255) not null /* comment 'invitation sent to' */,
 | 
				
			||||||
     address_type varchar(8) not null /* comment 'address type ("email", "jabber", "sms") '*/,
 | 
					     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);
 | 
					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' */,
 | 
					    content varchar(140) /* comment 'message content' */,
 | 
				
			||||||
    rendered text /* comment 'HTML version of the content' */,
 | 
					    rendered text /* comment 'HTML version of the content' */,
 | 
				
			||||||
    url varchar(255) /* comment 'URL of any attachment (image, video, bookmark, whatever)' */,
 | 
					    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' */,
 | 
					    modified timestamp /* comment 'date this record was modified' */,
 | 
				
			||||||
    source varchar(32) /* comment 'source of comment, like "web", "im", or "clientname"' */
 | 
					    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),
 | 
					    user_id integer not null /* comment 'user receiving the message' */ references "user" (id),
 | 
				
			||||||
    notice_id integer not null /* comment 'notice received' */ references notice (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' */,
 | 
					    source integer default 1 /* comment 'reason it is in the inbox; 1=subscription' */,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    primary key (user_id, notice_id)
 | 
					    primary key (user_id, notice_id)
 | 
				
			||||||
@@ -382,7 +383,7 @@ create table user_group (
 | 
				
			|||||||
    stream_logo varchar(255) /* comment 'stream-sized logo' */,
 | 
					    stream_logo varchar(255) /* comment 'stream-sized logo' */,
 | 
				
			||||||
    mini_logo varchar(255) /* comment 'mini 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' */
 | 
					    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),
 | 
					    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?' */,
 | 
					    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' */,
 | 
					    modified timestamp /* comment 'date this record was modified' */,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    primary key (group_id, profile_id)
 | 
					    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) ,
 | 
					    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),
 | 
					    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)
 | 
					    primary key (group_id, related_group_id)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -414,7 +415,7 @@ create table related_group (
 | 
				
			|||||||
create table group_inbox (
 | 
					create table group_inbox (
 | 
				
			||||||
    group_id integer not null /* comment 'group receiving the message' references user_group (id) */,
 | 
					    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) */,
 | 
					    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)
 | 
					    primary key (group_id, notice_id)
 | 
				
			||||||
);
 | 
					);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -43,7 +43,11 @@ function handleError($error)
 | 
				
			|||||||
        return;
 | 
					        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, '.
 | 
					    $msg = sprintf(_('The database for %s isn\'t responding correctly, '.
 | 
				
			||||||
                     'so the site won\'t work properly. '.
 | 
					                     'so the site won\'t work properly. '.
 | 
				
			||||||
                     'The site admins probably know about the problem, '.
 | 
					                     'The site admins probably know about the problem, '.
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -37,10 +37,3 @@
 | 
				
			|||||||
			$('#avatar_crop_w').val(c.w);
 | 
								$('#avatar_crop_w').val(c.w);
 | 
				
			||||||
			$('#avatar_crop_h').val(c.h);
 | 
								$('#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',
 | 
					              'theme' => 'default',
 | 
				
			||||||
              'path' => $_path,
 | 
					              'path' => $_path,
 | 
				
			||||||
              'logfile' => null,
 | 
					              'logfile' => null,
 | 
				
			||||||
 | 
					              'logdebug' => false,
 | 
				
			||||||
              'fancy' => false,
 | 
					              'fancy' => false,
 | 
				
			||||||
              'locale_path' => INSTALLDIR.'/locale',
 | 
					              'locale_path' => INSTALLDIR.'/locale',
 | 
				
			||||||
              'language' => 'en_US',
 | 
					              'language' => 'en_US',
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -45,7 +45,7 @@ class GroupsByMembersSection extends GroupSection
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    function getGroups()
 | 
					    function getGroups()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $qry = 'SELECT user_group.*, count(*) as value ' .
 | 
					        $qry = 'SELECT user_group.id, count(*) as value ' .
 | 
				
			||||||
          'FROM user_group JOIN group_member '.
 | 
					          'FROM user_group JOIN group_member '.
 | 
				
			||||||
          'ON user_group.id = group_member.group_id ' .
 | 
					          'ON user_group.id = group_member.group_id ' .
 | 
				
			||||||
          'GROUP BY user_group.id ' .
 | 
					          'GROUP BY user_group.id ' .
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -45,7 +45,7 @@ class GroupsByPostsSection extends GroupSection
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    function getGroups()
 | 
					    function getGroups()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $qry = 'SELECT user_group.*, count(*) as value ' .
 | 
					        $qry = 'SELECT user_group.id, count(*) as value ' .
 | 
				
			||||||
          'FROM user_group JOIN group_inbox '.
 | 
					          'FROM user_group JOIN group_inbox '.
 | 
				
			||||||
          'ON user_group.id = group_inbox.group_id ' .
 | 
					          'ON user_group.id = group_inbox.group_id ' .
 | 
				
			||||||
          'GROUP BY user_group.id ' .
 | 
					          'GROUP BY user_group.id ' .
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -58,8 +58,14 @@ class GroupTagCloudSection extends TagCloudSection
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    function getTags()
 | 
					    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, '.
 | 
					        $qry = 'SELECT notice_tag.tag, '.
 | 
				
			||||||
          'sum(exp(-(now() - notice_tag.created)/%s)) as weight ' .
 | 
					          $weightexpr . ' as weight ' .
 | 
				
			||||||
          'FROM notice_tag JOIN notice ' .
 | 
					          'FROM notice_tag JOIN notice ' .
 | 
				
			||||||
          'ON notice_tag.notice_id = notice.id ' .
 | 
					          'ON notice_tag.notice_id = notice.id ' .
 | 
				
			||||||
          'JOIN group_inbox on group_inbox.notice_id = notice.id ' .
 | 
					          'JOIN group_inbox on group_inbox.notice_id = notice.id ' .
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -58,8 +58,14 @@ class PersonalTagCloudSection extends TagCloudSection
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    function getTags()
 | 
					    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, '.
 | 
					       $qry = 'SELECT notice_tag.tag, '.
 | 
				
			||||||
          'sum(exp(-(now() - notice_tag.created)/%s)) as weight ' .
 | 
					          $weightexpr . ' as weight ' .
 | 
				
			||||||
          'FROM notice_tag JOIN notice ' .
 | 
					          'FROM notice_tag JOIN notice ' .
 | 
				
			||||||
          'ON notice_tag.notice_id = notice.id ' .
 | 
					          'ON notice_tag.notice_id = notice.id ' .
 | 
				
			||||||
          'WHERE notice.profile_id = %d ' .
 | 
					          'WHERE notice.profile_id = %d ' .
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -48,10 +48,16 @@ class PopularNoticeSection extends NoticeSection
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    function getNotices()
 | 
					    function getNotices()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $qry = 'SELECT notice.*, '.
 | 
					        if (common_config('db', 'type') == 'pgsql') {
 | 
				
			||||||
          'sum(exp(-(now() - fave.modified) / %s)) as weight ' .
 | 
					            $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 ' .
 | 
					          'FROM notice JOIN fave ON notice.id = fave.notice_id ' .
 | 
				
			||||||
          'GROUP BY fave.notice_id ' .
 | 
					          'GROUP BY notice.id ' .
 | 
				
			||||||
          'ORDER BY weight DESC';
 | 
					          'ORDER BY weight DESC';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $offset = 0;
 | 
					        $offset = 0;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -39,6 +39,7 @@ require_once INSTALLDIR.'/lib/widget.php';
 | 
				
			|||||||
 * @category Output
 | 
					 * @category Output
 | 
				
			||||||
 * @package  Laconica
 | 
					 * @package  Laconica
 | 
				
			||||||
 * @author   Evan Prodromou <evan@controlyourself.ca>
 | 
					 * @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
 | 
					 * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
 | 
				
			||||||
 * @link     http://laconi.ca/
 | 
					 * @link     http://laconi.ca/
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
@@ -73,6 +74,7 @@ class PublicGroupNav extends Widget
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        $this->action->elementStart('ul', array('class' => 'nav'));
 | 
					        $this->action->elementStart('ul', array('class' => 'nav'));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (Event::handle('StartPublicGroupNav', array($this))) {
 | 
				
			||||||
            $this->out->menuItem(common_local_url('public'), _('Public'),
 | 
					            $this->out->menuItem(common_local_url('public'), _('Public'),
 | 
				
			||||||
                _('Public timeline'), $action_name == 'public', 'nav_timeline_public');
 | 
					                _('Public timeline'), $action_name == 'public', 'nav_timeline_public');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -90,6 +92,8 @@ class PublicGroupNav extends Widget
 | 
				
			|||||||
            $this->out->menuItem(common_local_url('favorited'), _('Popular'),
 | 
					            $this->out->menuItem(common_local_url('favorited'), _('Popular'),
 | 
				
			||||||
                _("Popular notices"), $action_name == 'favorited', 'nav_timeline_favorited');
 | 
					                _("Popular notices"), $action_name == 'favorited', 'nav_timeline_favorited');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            Event::handle('EndPublicGroupNav', array($this));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        $this->action->elementEnd('ul');
 | 
					        $this->action->elementEnd('ul');
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -393,6 +393,8 @@ class Router
 | 
				
			|||||||
                    array('action' => 'showstream'),
 | 
					                    array('action' => 'showstream'),
 | 
				
			||||||
                    array('nickname' => '[a-zA-Z0-9]{1,64}'));
 | 
					                    array('nickname' => '[a-zA-Z0-9]{1,64}'));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Event::handle('RouterInitialized', array($m));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return $m;
 | 
					        return $m;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,14 +2,21 @@
 | 
				
			|||||||
 *
 | 
					 *
 | 
				
			||||||
 * @package   Laconica
 | 
					 * @package   Laconica
 | 
				
			||||||
 * @author    Meitar Moscovitz <meitar@maymay.net>
 | 
					 * @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
 | 
					 * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
 | 
				
			||||||
 * @link      http://laconi.ca/
 | 
					 * @link      http://laconi.ca/
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Go linear. */
 | 
					body {
 | 
				
			||||||
 | 
					font-size:2.5em;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#wrap {
 | 
				
			||||||
 | 
					width:95%;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#header,
 | 
					#header,
 | 
				
			||||||
#header address,
 | 
					#header address,
 | 
				
			||||||
#site_nav_global_primary,
 | 
					 | 
				
			||||||
#anon_notice,
 | 
					#anon_notice,
 | 
				
			||||||
#site_nav_local_views .nav,
 | 
					#site_nav_local_views .nav,
 | 
				
			||||||
#form_notice,
 | 
					#form_notice,
 | 
				
			||||||
@@ -24,49 +31,120 @@
 | 
				
			|||||||
.notice .notice-options a,
 | 
					.notice .notice-options a,
 | 
				
			||||||
.pagination,
 | 
					.pagination,
 | 
				
			||||||
.pagination .nav,
 | 
					.pagination .nav,
 | 
				
			||||||
.aside .section { float: none; }
 | 
					.aside .section {
 | 
				
			||||||
 | 
					float:none;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.notice-options .notice_reply,
 | 
					.notice-options .notice_reply,
 | 
				
			||||||
.notice-options .notice_delete,
 | 
					.notice-options .notice_delete,
 | 
				
			||||||
.notice-options .form_favor,
 | 
					.notice-options .form_favor,
 | 
				
			||||||
.notice-options .form_disfavor { position: static; }
 | 
					.notice-options .form_disfavor {
 | 
				
			||||||
 | 
					position:static;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#form_notice,
 | 
					#form_notice,
 | 
				
			||||||
#anon_notice,
 | 
					#anon_notice,
 | 
				
			||||||
#content_inner,
 | 
					#footer,
 | 
				
			||||||
#footer { width: auto; }
 | 
					#form_notice .form_actions input.submit {
 | 
				
			||||||
 | 
					width:auto;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* And liquid. */
 | 
					.form_settings label {
 | 
				
			||||||
#wrap { width: 95%; }
 | 
					width:25%;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.form_settings .form_data p.form_guide {
 | 
				
			||||||
 | 
					margin-left:26%;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Make things bigger on smaller screens. */
 | 
					#site_nav_global_primary {
 | 
				
			||||||
body { font-size: 2em; }
 | 
					width:75%;
 | 
				
			||||||
.notices { font-size: 1.5em; }
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#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; }
 | 
					#form_notice,
 | 
				
			||||||
address { margin: 0; }
 | 
					#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; }
 | 
					#site_notice {
 | 
				
			||||||
#form_notice .form_note { right: 20%; top: 6em; }
 | 
					position:static;
 | 
				
			||||||
#form_notice .form_actions input.submit { width: auto; }
 | 
					float:right;
 | 
				
			||||||
 | 
					clear:right;
 | 
				
			||||||
 | 
					width:75%;
 | 
				
			||||||
 | 
					margin-right:0;
 | 
				
			||||||
 | 
					margin-bottom:11px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#content { padding: 18px 0; width: 100%; }
 | 
					.notices {
 | 
				
			||||||
#content h1, #page_notice, #content_inner { padding: 0 18px; }
 | 
					font-size:1.5em;
 | 
				
			||||||
.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; }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#aside_primary { margin: 10px 0 0 0; border: none; padding: 0; width: 100%; }
 | 
					#form_notice textarea {
 | 
				
			||||||
#popular_notices { float: none; width: auto; }
 | 
					width:80%;
 | 
				
			||||||
/* Columns for supplemental info. */
 | 
					height:5em;
 | 
				
			||||||
.aside .section { clear: none; padding: 9px; width: 45%; }
 | 
					}
 | 
				
			||||||
#top_groups_by_post { float: left; }
 | 
					#form_notice .form_note {
 | 
				
			||||||
#featured_users { float: right; }
 | 
					right:20%;
 | 
				
			||||||
#export_data { display: none; }
 | 
					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;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user