move all message display sub-functions from boot.php into conversation.php

This commit is contained in:
Friendika 2011-04-12 17:58:16 -07:00
parent 38014e9b4d
commit 5654ce926c
9 changed files with 2277 additions and 2166 deletions

155
boot.php
View file

@ -1847,38 +1847,6 @@ function allowed_email($email) {
return $found;
}}
// Format the like/dislike text for a profile item
// $cnt = number of people who like/dislike the item
// $arr = array of pre-linked names of likers/dislikers
// $type = one of 'like, 'dislike'
// $id = item id
// returns formatted text
if(! function_exists('format_like')) {
function format_like($cnt,$arr,$type,$id) {
$o = '';
if($cnt == 1)
$o .= (($type === 'like') ? sprintf( t('%s likes this.'), $arr[0]) : sprintf( t('%s doesn\'t like this.'), $arr[0])) . EOL ;
else {
$spanatts = 'class="fakelink" onclick="openClose(\'' . $type . 'list-' . $id . '\');"';
$o .= (($type === 'like') ?
sprintf( t('<span %1$s>%2$d people</span> like this.'), $spanatts, $cnt)
:
sprintf( t('<span %1$s>%2$d people</span> don\'t like this.'), $spanatts, $cnt) );
$o .= EOL ;
$total = count($arr);
if($total >= MAX_LIKERS)
$arr = array_slice($arr, 0, MAX_LIKERS - 1);
if($total < MAX_LIKERS)
$arr[count($arr)-1] = t('and') . ' ' . $arr[count($arr)-1];
$str = implode(', ', $arr);
if($total >= MAX_LIKERS)
$str .= sprintf( t(', and %d other people'), $total - MAX_LIKERS );
$str = (($type === 'like') ? sprintf( t('%s like this.'), $str) : sprintf( t('%s don\'t like this.'), $str));
$o .= "\t" . '<div id="' . $type . 'list-' . $id . '" style="display: none;" >' . $str . '</div>';
}
return $o;
}}
// wrapper to load a view template, checking for alternate
@ -1976,29 +1944,6 @@ return str_replace ("%","=",rawurlencode($s));
}}
if(! function_exists('like_puller')) {
function like_puller($a,$item,&$arr,$mode) {
$url = '';
$sparkle = '';
$verb = (($mode === 'like') ? ACTIVITY_LIKE : ACTIVITY_DISLIKE);
if((activity_match($item['verb'],$verb)) && ($item['id'] != $item['parent'])) {
$url = $item['author-link'];
if((local_user()) && (local_user() == $item['uid']) && ($item['network'] === 'dfrn') && (! $item['self']) && (link_compare($item['author-link'],$item['url']))) {
$url = $a->get_baseurl() . '/redir/' . $item['contact-id'];
$sparkle = ' class="sparkle" ';
}
if(! ((isset($arr[$item['parent'] . '-l'])) && (is_array($arr[$item['parent'] . '-l']))))
$arr[$item['parent'] . '-l'] = array();
if(! isset($arr[$item['parent']]))
$arr[$item['parent']] = 1;
else
$arr[$item['parent']] ++;
$arr[$item['parent'] . '-l'][] = '<a href="'. $url . '"'. $sparkle .'>' . $item['author-name'] . '</a>';
}
return;
}}
if(! function_exists('get_mentions')) {
function get_mentions($item) {
@ -2680,106 +2625,6 @@ function unamp($s) {
return str_replace('&amp;', '&', $s);
}}
if(! function_exists('extract_item_authors')) {
function extract_item_authors($arr,$uid) {
if((! $uid) || (! is_array($arr)) || (! count($arr)))
return array();
$urls = array();
foreach($arr as $rr) {
if(! in_array("'" . dbesc($rr['author-link']) . "'",$urls))
$urls[] = "'" . dbesc($rr['author-link']) . "'";
}
// pre-quoted, don't put quotes on %s
if(count($urls)) {
$r = q("SELECT `id`,`network`,`url` FROM `contact` WHERE `uid` = %d AND `url` IN ( %s ) AND `self` = 0 AND `blocked` = 0 ",
intval($uid),
implode(',',$urls)
);
if(count($r)) {
$ret = array();
$authors = array();
foreach($r as $rr){
if ($rr['network']=='dfrn')
$ret[$rr['url']] = $rr['id'];
$authors[$r['url']]= $rr;
}
$a->authors = $authors;
return $ret;
}
}
return array();
}}
if(! function_exists('item_photo_menu')){
function item_photo_menu($item){
$a = get_app();
if (!isset($a->authors)){
$rr = q("SELECT `id`, `network`, `url` FROM `contact` WHERE `uid`=%d AND `self`=0 AND `blocked`=0 ", intval(local_user()));
$authors = array();
foreach($rr as $r) $authors[$r['url']]= $r;
$a->authors = $authors;
}
$contact_url="";
$pm_url="";
$status_link="";
$photo_link="";
$profile_link = ((strlen($item['author-link'])) ? $item['author-link'] : $item['url']);
$redirect_url = $a->get_baseurl() . '/redir/' . $item['cid'] ;
// $item['contact-uid'] is only set on profile page and indicates the uid of the user who owns the profile.
$profile_owner = ((x($item,'contact-uid')) && intval($item['contact-uid']) ? intval($item['contact-uid']) : 0);
// So we are checking that this is a logged in user on some page that *isn't* a profile page
// OR a profile page where the viewer owns the profile.
// Then check if we can use a sparkle (redirect) link to the profile by virtue of it being our contact
// or a friend's contact that we both have a connection to.
if((local_user() && ($profile_owner == 0))
|| ($profile_owner && $profile_owner == local_user())) {
if(strlen($item['author-link']) && link_compare($item['author-link'],$item['url']))
$redir = $redirect_url;
elseif(isset($a->authors[$item['author-link']])) {
$redir = $a->get_baseurl() . '/redir/' . $a->authors[$item['author-link']]['id'];
$cid = $a->authors[$item['author-link']]['id'];
}
if($item['network'] === 'dfrn' && (! $item['self'])) {
$status_link = $redir . "?url=status";
$profile_link = $redir . "?url=profile";
$photos_link = $redir . "?url=photos";
$pm_url = $a->get_baseurl() . '/message/new/' . $cid;
}
$contact_url = $item['self']?"":$a->get_baseurl() . '/contacts/' . (($item['cid']) ? $item['cid'] : $cid);
}
$menu = Array(
t("View status") => $status_link,
t("View profile") => $profile_link,
t("View photos") => $photos_link,
t("Edit contact") => $contact_url,
t("Send PM") => $pm_url,
);
$args = array($item, &$menu);
call_hooks('item_photo_menu', $args);
$o = "";
foreach($menu as $k=>$v){
if ($v!="") $o .= "<li><a href='$v'>$k</a></li>\n";
}
return $o;
}}
if(! function_exists('lang_selector')) {
function lang_selector() {

View file

@ -1,5 +1,15 @@
<?php
/**
* "Render" a conversation or list of items for HTML display.
* There are two major forms of display:
* - Sequential or unthreaded ("New Item View" or search results)
* - conversation view
* The $mode parameter decides between the various renderings and also
* figures out how to determine page owner and other contextual items
* that are based on unique features of the calling module.
*
*/
function conversation(&$a, $items, $mode, $update) {
@ -417,4 +427,165 @@ function conversation(&$a, $items, $mode, $update) {
$o .= '</div>';
return $o;
}
}
if(! function_exists('extract_item_authors')) {
function extract_item_authors($arr,$uid) {
if((! $uid) || (! is_array($arr)) || (! count($arr)))
return array();
$urls = array();
foreach($arr as $rr) {
if(! in_array("'" . dbesc($rr['author-link']) . "'",$urls))
$urls[] = "'" . dbesc($rr['author-link']) . "'";
}
// pre-quoted, don't put quotes on %s
if(count($urls)) {
$r = q("SELECT `id`,`network`,`url` FROM `contact` WHERE `uid` = %d AND `url` IN ( %s ) AND `self` = 0 AND `blocked` = 0 ",
intval($uid),
implode(',',$urls)
);
if(count($r)) {
$ret = array();
$authors = array();
foreach($r as $rr){
if ($rr['network']=='dfrn')
$ret[$rr['url']] = $rr['id'];
$authors[$r['url']]= $rr;
}
$a->authors = $authors;
return $ret;
}
}
return array();
}}
if(! function_exists('item_photo_menu')){
function item_photo_menu($item){
$a = get_app();
if (!isset($a->authors)){
$rr = q("SELECT `id`, `network`, `url` FROM `contact` WHERE `uid`=%d AND `self`=0 AND `blocked`=0 ", intval(local_user()));
$authors = array();
foreach($rr as $r) $authors[$r['url']]= $r;
$a->authors = $authors;
}
$contact_url="";
$pm_url="";
$status_link="";
$photo_link="";
$profile_link = ((strlen($item['author-link'])) ? $item['author-link'] : $item['url']);
$redirect_url = $a->get_baseurl() . '/redir/' . $item['cid'] ;
// $item['contact-uid'] is only set on profile page and indicates the uid of the user who owns the profile.
$profile_owner = ((x($item,'contact-uid')) && intval($item['contact-uid']) ? intval($item['contact-uid']) : 0);
// So we are checking that this is a logged in user on some page that *isn't* a profile page
// OR a profile page where the viewer owns the profile.
// Then check if we can use a sparkle (redirect) link to the profile by virtue of it being our contact
// or a friend's contact that we both have a connection to.
if((local_user() && ($profile_owner == 0))
|| ($profile_owner && $profile_owner == local_user())) {
if(strlen($item['author-link']) && link_compare($item['author-link'],$item['url']))
$redir = $redirect_url;
elseif(isset($a->authors[$item['author-link']])) {
$redir = $a->get_baseurl() . '/redir/' . $a->authors[$item['author-link']]['id'];
$cid = $a->authors[$item['author-link']]['id'];
}
if($item['network'] === 'dfrn' && (! $item['self'])) {
$status_link = $redir . "?url=status";
$profile_link = $redir . "?url=profile";
$photos_link = $redir . "?url=photos";
$pm_url = $a->get_baseurl() . '/message/new/' . $cid;
}
$contact_url = $item['self']?"":$a->get_baseurl() . '/contacts/' . (($item['cid']) ? $item['cid'] : $cid);
}
$menu = Array(
t("View status") => $status_link,
t("View profile") => $profile_link,
t("View photos") => $photos_link,
t("Edit contact") => $contact_url,
t("Send PM") => $pm_url,
);
$args = array($item, &$menu);
call_hooks('item_photo_menu', $args);
$o = "";
foreach($menu as $k=>$v){
if ($v!="") $o .= "<li><a href='$v'>$k</a></li>\n";
}
return $o;
}}
if(! function_exists('like_puller')) {
function like_puller($a,$item,&$arr,$mode) {
$url = '';
$sparkle = '';
$verb = (($mode === 'like') ? ACTIVITY_LIKE : ACTIVITY_DISLIKE);
if((activity_match($item['verb'],$verb)) && ($item['id'] != $item['parent'])) {
$url = $item['author-link'];
if((local_user()) && (local_user() == $item['uid']) && ($item['network'] === 'dfrn') && (! $item['self']) && (link_compare($item['author-link'],$item['url']))) {
$url = $a->get_baseurl() . '/redir/' . $item['contact-id'];
$sparkle = ' class="sparkle" ';
}
if(! ((isset($arr[$item['parent'] . '-l'])) && (is_array($arr[$item['parent'] . '-l']))))
$arr[$item['parent'] . '-l'] = array();
if(! isset($arr[$item['parent']]))
$arr[$item['parent']] = 1;
else
$arr[$item['parent']] ++;
$arr[$item['parent'] . '-l'][] = '<a href="'. $url . '"'. $sparkle .'>' . $item['author-name'] . '</a>';
}
return;
}}
// Format the like/dislike text for a profile item
// $cnt = number of people who like/dislike the item
// $arr = array of pre-linked names of likers/dislikers
// $type = one of 'like, 'dislike'
// $id = item id
// returns formatted text
if(! function_exists('format_like')) {
function format_like($cnt,$arr,$type,$id) {
$o = '';
if($cnt == 1)
$o .= (($type === 'like') ? sprintf( t('%s likes this.'), $arr[0]) : sprintf( t('%s doesn\'t like this.'), $arr[0])) . EOL ;
else {
$spanatts = 'class="fakelink" onclick="openClose(\'' . $type . 'list-' . $id . '\');"';
$o .= (($type === 'like') ?
sprintf( t('<span %1$s>%2$d people</span> like this.'), $spanatts, $cnt)
:
sprintf( t('<span %1$s>%2$d people</span> don\'t like this.'), $spanatts, $cnt) );
$o .= EOL ;
$total = count($arr);
if($total >= MAX_LIKERS)
$arr = array_slice($arr, 0, MAX_LIKERS - 1);
if($total < MAX_LIKERS)
$arr[count($arr)-1] = t('and') . ' ' . $arr[count($arr)-1];
$str = implode(', ', $arr);
if($total >= MAX_LIKERS)
$str .= sprintf( t(', and %d other people'), $total - MAX_LIKERS );
$str = (($type === 'like') ? sprintf( t('%s like this.'), $str) : sprintf( t('%s don\'t like this.'), $str));
$o .= "\t" . '<div id="' . $type . 'list-' . $id . '" style="display: none;" >' . $str . '</div>';
}
return $o;
}}

View file

@ -3,6 +3,11 @@
function display_content(&$a) {
require_once("include/bbcode.php");
require_once('include/security.php');
require_once('include/conversation.php');
$o = '<div id="live-display"></div>' . "\r\n";
$nick = (($a->argc > 1) ? $a->argv[1] : '');
@ -16,8 +21,6 @@ function display_content(&$a) {
return;
}
require_once("include/bbcode.php");
require_once('include/security.php');
$groups = array();
@ -113,7 +116,6 @@ function display_content(&$a) {
);
}
require_once('include/conversation.php');
$o .= conversation($a,$r,'display', false);

View file

@ -27,6 +27,8 @@ function network_init(&$a) {
function network_content(&$a, $update = 0) {
require_once('include/conversation.php');
if(! local_user())
return login(false);
@ -267,8 +269,6 @@ function network_content(&$a, $update = 0) {
$mode = (($nouveau) ? 'network-new' : 'network');
require_once('include/conversation.php');
$o .= conversation($a,$r,$mode,$update);
if(! $update) {

View file

@ -657,6 +657,10 @@ function photos_content(&$a) {
// photos/name/image/xxxxx/edit
require_once('include/bbcode.php');
require_once('include/security.php');
require_once('include/conversation.php');
if(! x($a->data,'user')) {
notice( t('No photos selected') . EOL );
return;
@ -893,8 +897,7 @@ function photos_content(&$a) {
if($datatype === 'image') {
require_once('security.php');
require_once('bbcode.php');
$o = '<div id="live-display"></div>' . "\r\n";
// fetch image, item containing image, then comments

View file

@ -50,6 +50,7 @@ function profile_content(&$a, $update = 0) {
require_once("include/bbcode.php");
require_once('include/security.php');
require_once('include/conversation.php');
$groups = array();
@ -289,7 +290,6 @@ function profile_content(&$a, $update = 0) {
$o .= get_birthdays();
require_once('include/conversation.php');
$o .= conversation($a,$r,'profile',$update);

View file

@ -9,6 +9,10 @@ function search_post(&$a) {
function search_content(&$a) {
require_once("include/bbcode.php");
require_once('include/security.php');
require_once('include/conversation.php');
if(x($_SESSION,'theme'))
unset($_SESSION['theme']);
@ -26,8 +30,6 @@ function search_content(&$a) {
if(! $search)
return $o;
require_once("include/bbcode.php");
require_once('include/security.php');
$sql_extra = "
AND `item`.`allow_cid` = ''
@ -81,7 +83,6 @@ function search_content(&$a) {
);
require_once('include/conversation.php');
$o .= conversation($a,$r,'search',false);

File diff suppressed because it is too large Load diff

View file

@ -71,6 +71,37 @@ $a->strings['%d Contact'] = array(
0 => '%d Contact',
1 => '%d Contacts',
);
$a->strings['Normal View'] = 'Normal View';
$a->strings['New Item View'] = 'New Item View';
$a->strings['Warning: This group contains %s from an insecure network.'] = 'Warning: This group contains %s from an insecure network.';
$a->strings['Private messages to this group are at risk of public disclosure.'] = 'Private messages to this group are at risk of public disclosure.';
$a->strings['Please enter a link URL:'] = 'Please enter a link URL:';
$a->strings['Please enter a YouTube link:'] = 'Please enter a YouTube link:';
$a->strings["Please enter a video\x28.ogg\x29 link/URL:"] = "Please enter a video\x28.ogg\x29 link/URL:";
$a->strings["Please enter an audio\x28.ogg\x29 link/URL:"] = "Please enter an audio\x28.ogg\x29 link/URL:";
$a->strings['Where are you right now?'] = 'Where are you right now?';
$a->strings['Enter a title for this item'] = 'Enter a title for this item';
$a->strings['Share'] = 'Share';
$a->strings['Upload photo'] = 'Upload photo';
$a->strings['Insert web link'] = 'Insert web link';
$a->strings['Insert YouTube video'] = 'Insert YouTube video';
$a->strings['Insert Vorbis [.ogg] video'] = 'Insert Vorbis [.ogg] video';
$a->strings['Insert Vorbis [.ogg] audio'] = 'Insert Vorbis [.ogg] audio';
$a->strings['Set your location'] = 'Set your location';
$a->strings['Clear browser location'] = 'Clear browser location';
$a->strings['Set title'] = 'Set title';
$a->strings['Please wait'] = 'Please wait';
$a->strings['Permission settings'] = 'Permission settings';
$a->strings['CC: email addresses'] = 'CC: email addresses';
$a->strings['Example: bob@example.com, mary@example.com'] = 'Example: bob@example.com, mary@example.com';
$a->strings['No such group'] = 'No such group';
$a->strings['Group is empty'] = 'Group is empty';
$a->strings['Group: '] = 'Group: ';
$a->strings['Shared content is covered by the <a href="http://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0</a> license.'] = 'Shared content is covered by the <a href="http://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0</a> license.';
$a->strings['%d member'] = array(
0 => '%d member',
1 => '%d members',
);
$a->strings['Applications'] = 'Applications';
$a->strings["Invite Friends"] = "Invite Friends";
$a->strings['Find People With Shared Interests'] = 'Find People With Shared Interests';
@ -195,33 +226,10 @@ $a->strings['Age: '] = 'Age: ';
$a->strings['Gender: '] = 'Gender: ';
$a->strings["No entries \x28some entries may be hidden\x29."] = "No entries \x28some entries may be hidden\x29.";
$a->strings['Item not found.'] = 'Item not found.';
$a->strings['Private Message'] = 'Private Message';
$a->strings["I like this \x28toggle\x29"] = "I like this \x28toggle\x29";
$a->strings["I don't like this \x28toggle\x29"] = "I don't like this \x28toggle\x29";
$a->strings['Share'] = 'Share';
$a->strings['Please wait'] = 'Please wait';
$a->strings['This is you'] = 'This is you';
$a->strings['Edit'] = 'Edit';
$a->strings['Delete'] = 'Delete';
$a->strings['View $name\'s profile'] = 'View $name\'s profile';
$a->strings['View $owner_name\'s profile'] = 'View $owner_name\'s profile';
$a->strings['to'] = 'to';
$a->strings['Wall-to-Wall'] = 'Wall-to-Wall';
$a->strings['via Wall-To-Wall:'] = 'via Wall-To-Wall:';
$a->strings['Item has been removed.'] = 'Item has been removed.';
$a->strings['Shared content is covered by the <a href="http://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0</a> license.'] = 'Shared content is covered by the <a href="http://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0</a> license.';
$a->strings['Item not found'] = 'Item not found';
$a->strings['Edit post'] = 'Edit post';
$a->strings['Upload photo'] = 'Upload photo';
$a->strings['Insert web link'] = 'Insert web link';
$a->strings['Insert YouTube video'] = 'Insert YouTube video';
$a->strings['Insert Vorbis [.ogg] video'] = 'Insert Vorbis [.ogg] video';
$a->strings['Insert Vorbis [.ogg] audio'] = 'Insert Vorbis [.ogg] audio';
$a->strings['Set your location'] = 'Set your location';
$a->strings['Clear browser location'] = 'Clear browser location';
$a->strings['Permission settings'] = 'Permission settings';
$a->strings['CC: email addresses'] = 'CC: email addresses';
$a->strings['Example: bob@example.com, mary@example.com'] = 'Example: bob@example.com, mary@example.com';
$a->strings['Edit'] = 'Edit';
$a->strings['The profile address specified does not provide adequate information.'] = 'The profile address specified does not provide adequate information.';
$a->strings['Limited profile. This person will be unable to receive direct/personal notifications from you.'] = 'Limited profile. This person will be unable to receive direct/personal notifications from you.';
$a->strings['Unable to retrieve contact information.'] = 'Unable to retrieve contact information.';
@ -238,13 +246,15 @@ $a->strings['Group created.'] = 'Group created.';
$a->strings['Could not create group.'] = 'Could not create group.';
$a->strings['Group not found.'] = 'Group not found.';
$a->strings['Group name changed.'] = 'Group name changed.';
$a->strings['Membership list updated.'] = 'Membership list updated.';
$a->strings['Create a group of contacts/friends.'] = 'Create a group of contacts/friends.';
$a->strings['Group Name: '] = 'Group Name: ';
$a->strings['Group removed.'] = 'Group removed.';
$a->strings['Unable to remove group.'] = 'Unable to remove group.';
$a->strings['Delete'] = 'Delete';
$a->strings['Click on a contact to add or remove.'] = 'Click on a contact to add or remove.';
$a->strings['Group Editor'] = 'Group Editor';
$a->strings['Members:'] = 'Members:';
$a->strings['Members'] = 'Members';
$a->strings['All Contacts'] = 'All Contacts';
$a->strings["Welcome to %s"] = "Welcome to %s";
$a->strings['Could not create/connect to database.'] = 'Could not create/connect to database.';
$a->strings['Connected to database.'] = 'Connected to database.';
@ -339,7 +349,6 @@ $a->strings['Outbox'] = 'Outbox';
$a->strings['New Message'] = 'New Message';
$a->strings['Message deleted.'] = 'Message deleted.';
$a->strings['Conversation removed.'] = 'Conversation removed.';
$a->strings['Please enter a link URL:'] = 'Please enter a link URL:';
$a->strings['Send Private Message'] = 'Send Private Message';
$a->strings['To:'] = 'To:';
$a->strings['Subject:'] = 'Subject:';
@ -349,26 +358,6 @@ $a->strings['D, d M Y - g:i A'] = 'D, d M Y - g:i A';
$a->strings['Message not available.'] = 'Message not available.';
$a->strings['Delete message'] = 'Delete message';
$a->strings['Send Reply'] = 'Send Reply';
$a->strings['Normal View'] = 'Normal View';
$a->strings['New Item View'] = 'New Item View';
$a->strings['Warning: This group contains %s from an insecure network.'] = 'Warning: This group contains %s from an insecure network.';
$a->strings['Private messages to this group are at risk of public disclosure.'] = 'Private messages to this group are at risk of public disclosure.';
$a->strings['Please enter a YouTube link:'] = 'Please enter a YouTube link:';
$a->strings["Please enter a video\x28.ogg\x29 link/URL:"] = "Please enter a video\x28.ogg\x29 link/URL:";
$a->strings["Please enter an audio\x28.ogg\x29 link/URL:"] = "Please enter an audio\x28.ogg\x29 link/URL:";
$a->strings['Where are you right now?'] = 'Where are you right now?';
$a->strings['Enter a title for this item'] = 'Enter a title for this item';
$a->strings['Set title'] = 'Set title';
$a->strings['No such group'] = 'No such group';
$a->strings['Group is empty'] = 'Group is empty';
$a->strings['Group: '] = 'Group: ';
$a->strings['View in context'] = 'View in context';
$a->strings['See more posts like this'] = 'See more posts like this';
$a->strings['See all %d comments'] = 'See all %d comments';
$a->strings['%d member'] = array(
0 => '%d member',
1 => '%d members',
);
$a->strings['Invalid request identifier.'] = 'Invalid request identifier.';
$a->strings['Discard'] = 'Discard';
$a->strings['Ignore'] = 'Ignore';
@ -413,6 +402,7 @@ $a->strings['Edit Album'] = 'Edit Album';
$a->strings['View Photo'] = 'View Photo';
$a->strings['Photo not available'] = 'Photo not available';
$a->strings['Edit photo'] = 'Edit photo';
$a->strings['Private Message'] = 'Private Message';
$a->strings['<< Prev'] = '<< Prev';
$a->strings['View Full Size'] = 'View Full Size';
$a->strings['Next >>'] = 'Next >>';
@ -422,6 +412,9 @@ $a->strings['New album name'] = 'New album name';
$a->strings['Caption'] = 'Caption';
$a->strings['Add a Tag'] = 'Add a Tag';
$a->strings['Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping'] = 'Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping';
$a->strings["I like this \x28toggle\x29"] = "I like this \x28toggle\x29";
$a->strings["I don't like this \x28toggle\x29"] = "I don't like this \x28toggle\x29";
$a->strings['This is you'] = 'This is you';
$a->strings['Recent Photos'] = 'Recent Photos';
$a->strings['Upload New Photos'] = 'Upload New Photos';
$a->strings['View Album'] = 'View Album';
@ -595,6 +588,13 @@ $a->strings['Twice daily'] = 'Twice daily';
$a->strings['Daily'] = 'Daily';
$a->strings['Weekly'] = 'Weekly';
$a->strings['Monthly'] = 'Monthly';
$a->strings['View %s\'s profile'] = 'View %s\'s profile';
$a->strings['View in context'] = 'View in context';
$a->strings['See more posts like this'] = 'See more posts like this';
$a->strings['See all %d comments'] = 'See all %d comments';
$a->strings['to'] = 'to';
$a->strings['Wall-to-Wall'] = 'Wall-to-Wall';
$a->strings['via Wall-To-Wall:'] = 'via Wall-To-Wall:';
$a->strings['Miscellaneous'] = 'Miscellaneous';
$a->strings['less than a second ago'] = 'less than a second ago';
$a->strings['year'] = 'year';
@ -616,6 +616,7 @@ $a->strings['Create a new group'] = 'Create a new group';
$a->strings['Everybody'] = 'Everybody';
$a->strings['Birthday:'] = 'Birthday:';
$a->strings['Home'] = 'Home';
$a->strings['Help'] = 'Help';
$a->strings['Apps'] = 'Apps';
$a->strings['Directory'] = 'Directory';
$a->strings['Network'] = 'Network';
@ -893,6 +894,7 @@ $a->strings['America/Managua'] = 'America/Managua';
$a->strings['America/Manaus'] = 'America/Manaus';
$a->strings['America/Marigot'] = 'America/Marigot';
$a->strings['America/Martinique'] = 'America/Martinique';
$a->strings['America/Matamoros'] = 'America/Matamoros';
$a->strings['America/Mazatlan'] = 'America/Mazatlan';
$a->strings['America/Mendoza'] = 'America/Mendoza';
$a->strings['America/Menominee'] = 'America/Menominee';
@ -911,6 +913,7 @@ $a->strings['America/Nome'] = 'America/Nome';
$a->strings['America/Noronha'] = 'America/Noronha';
$a->strings['America/North_Dakota/Center'] = 'America/North_Dakota/Center';
$a->strings['America/North_Dakota/New_Salem'] = 'America/North_Dakota/New_Salem';
$a->strings['America/Ojinaga'] = 'America/Ojinaga';
$a->strings['America/Panama'] = 'America/Panama';
$a->strings['America/Pangnirtung'] = 'America/Pangnirtung';
$a->strings['America/Paramaribo'] = 'America/Paramaribo';
@ -927,6 +930,7 @@ $a->strings['America/Regina'] = 'America/Regina';
$a->strings['America/Resolute'] = 'America/Resolute';
$a->strings['America/Rio_Branco'] = 'America/Rio_Branco';
$a->strings['America/Rosario'] = 'America/Rosario';
$a->strings['America/Santa_Isabel'] = 'America/Santa_Isabel';
$a->strings['America/Santarem'] = 'America/Santarem';
$a->strings['America/Santiago'] = 'America/Santiago';
$a->strings['America/Santo_Domingo'] = 'America/Santo_Domingo';
@ -955,6 +959,7 @@ $a->strings['America/Yellowknife'] = 'America/Yellowknife';
$a->strings['Antarctica/Casey'] = 'Antarctica/Casey';
$a->strings['Antarctica/Davis'] = 'Antarctica/Davis';
$a->strings['Antarctica/DumontDUrville'] = 'Antarctica/DumontDUrville';
$a->strings['Antarctica/Macquarie'] = 'Antarctica/Macquarie';
$a->strings['Antarctica/Mawson'] = 'Antarctica/Mawson';
$a->strings['Antarctica/McMurdo'] = 'Antarctica/McMurdo';
$a->strings['Antarctica/Palmer'] = 'Antarctica/Palmer';
@ -1017,6 +1022,7 @@ $a->strings['Asia/Makassar'] = 'Asia/Makassar';
$a->strings['Asia/Manila'] = 'Asia/Manila';
$a->strings['Asia/Muscat'] = 'Asia/Muscat';
$a->strings['Asia/Nicosia'] = 'Asia/Nicosia';
$a->strings['Asia/Novokuznetsk'] = 'Asia/Novokuznetsk';
$a->strings['Asia/Novosibirsk'] = 'Asia/Novosibirsk';
$a->strings['Asia/Omsk'] = 'Asia/Omsk';
$a->strings['Asia/Oral'] = 'Asia/Oral';