Merge remote-tracking branch 'upstream/develop' into develop

This commit is contained in:
Jens Tautenhahn 2016-11-14 09:52:01 +01:00
commit 31ad26aae2
17 changed files with 14710 additions and 14198 deletions

2
Vagrantfile vendored
View File

@ -1,6 +1,6 @@
server_ip = "192.168.22.10"
server_memory = "384" # MB
server_memory = "1024" # MB
server_timezone = "UTC"
public_folder = "/vagrant"

View File

@ -1897,11 +1897,12 @@ function get_max_import_size() {
* @brief Wrap calls to proc_close(proc_open()) and call hook
* so plugins can take part in process :)
*
* @param (string|integer) $cmd program to run or priority
* @param (string|integer|array) $cmd program to run, priority or parameter array
*
* next args are passed as $cmd command line
* e.g.: proc_run("ls","-la","/tmp");
* or: proc_run(PRIORITY_HIGH, "include/notifier.php", "drop", $drop_id);
* or: proc_run(array('priority' => PRIORITY_HIGH, 'dont_fork' => true), "include/create_shadowentry.php", $post_id);
*
* @note $cmd and string args are surrounded with ""
*
@ -1912,24 +1913,31 @@ function proc_run($cmd){
$a = get_app();
$args = func_get_args();
$proc_args = func_get_args();
$newargs = array();
if (!count($args))
$args = array();
if (!count($proc_args)) {
return;
// expand any arrays
foreach($args as $arg) {
if(is_array($arg)) {
foreach($arg as $n) {
$newargs[] = $n;
}
} else
$newargs[] = $arg;
}
$args = $newargs;
// Preserve the first parameter
// It could contain a command, the priority or an parameter array
// If we use the parameter array we have to protect it from the following function
$run_parameter = array_shift($proc_args);
// expand any arrays
foreach ($proc_args as $arg) {
if (is_array($arg)) {
foreach ($arg as $n) {
$args[] = $n;
}
} else {
$args[] = $arg;
}
}
// Now we add the run parameters back to the array
array_unshift($args, $run_parameter);
$arr = array('args' => $args, 'run_cmd' => true);
@ -1937,16 +1945,24 @@ function proc_run($cmd){
if (!$arr['run_cmd'] OR !count($args))
return;
if (!get_config("system", "worker") OR
(($args[0] != 'php') AND !is_int($args[0]))) {
if (!get_config("system", "worker") OR (is_string($run_parameter) AND ($run_parameter != 'php'))) {
$a->proc_run($args);
return;
}
if (is_int($args[0]))
$priority = $args[0];
else
$priority = PRIORITY_MEDIUM;
$priority = PRIORITY_MEDIUM;
$dont_fork = get_config("system", "worker_dont_fork");
if (is_int($run_parameter)) {
$priority = $run_parameter;
} elseif (is_array($run_parameter)) {
if (isset($run_parameter['priority'])) {
$priority = $run_parameter['priority'];
}
if (isset($run_parameter['dont_fork'])) {
$dont_fork = $run_parameter['dont_fork'];
}
}
$argv = $args;
array_shift($argv);
@ -1963,8 +1979,9 @@ function proc_run($cmd){
intval($priority));
// Should we quit and wait for the poller to be called as a cronjob?
if (get_config("system", "worker_dont_fork"))
if ($dont_fork) {
return;
}
// Checking number of workers
$workers = q("SELECT COUNT(*) AS `workers` FROM `workerqueue` WHERE `executed` != '0000-00-00 00:00:00'");

View File

@ -707,11 +707,6 @@ class Photo {
);
}
// Update the cached values
if ($album != 'Contact Photos') {
photo_albums($uid, true);
}
return $r;
}
}
@ -872,7 +867,7 @@ function get_photo_info($url) {
$data = Cache::get($url);
if (is_null($data) OR !$data) {
if (is_null($data) OR !$data OR !is_array($data)) {
$img_str = fetch_url($url, true, $redirects, 4);
$filesize = strlen($img_str);

View File

@ -281,16 +281,15 @@
logger("API call duration: ".round($duration, 2)."\t".$a->query_string, LOGGER_DEBUG);
if (get_config("system", "profiler")) {
logger(sprintf("Database: %s/%s, Network: %s, Rendering: %s, Session: %s, I/O: %s, Other: %s, Total: %s",
$duration = microtime(true)-$a->performance["start"];
logger(parse_url($a->query_string, PHP_URL_PATH).": ".sprintf("Database: %s/%s, Network: %s, I/O: %s, Other: %s, Total: %s",
round($a->performance["database"] - $a->performance["database_write"], 3),
round($a->performance["database_write"], 3),
round($a->performance["network"], 2),
round($a->performance["rendering"], 2),
round($a->performance["parser"], 2),
round($a->performance["file"], 2),
round($duration - $a->performance["database"]
- $a->performance["network"] - $a->performance["rendering"]
- $a->performance["parser"] - $a->performance["file"], 2),
round($duration - ($a->performance["database"] + $a->performance["network"]
+ $a->performance["file"]), 2),
round($duration, 2)),
LOGGER_DEBUG);

View File

@ -0,0 +1,40 @@
<?php
/**
* @file include/create_shadowentry.php
* @brief This script creates posts with UID = 0 for a given public post.
*
* This script is started from mod/item.php to save some time when doing a post.
*/
require_once("boot.php");
require_once("include/threads.php");
function create_shadowentry_run($argv, $argc) {
global $a, $db;
if (is_null($a))
$a = new App;
if (is_null($db)) {
@include(".htconfig.php");
require_once("include/dba.php");
$db = new dba($db_host, $db_user, $db_pass, $db_data);
unset($db_host, $db_user, $db_pass, $db_data);
}
load_config('config');
load_config('system');
if ($argc != 2) {
return;
}
$message_id = intval($argv[1]);
add_shadow_entry($message_id);
}
if (array_search(__file__,get_included_files())===0){
create_shadowentry_run($_SERVER["argv"],$_SERVER["argc"]);
killme();
}
?>

View File

@ -2876,8 +2876,10 @@ class diaspora {
"created_at" => $created,
"provider_display_name" => $item["app"]);
if (count($location) == 0)
// Diaspora rejects messages when they contain a location without "lat" or "lng"
if (!isset($location["lat"]) OR !isset($location["lng"])) {
unset($message["location"]);
}
$type = "status_message";
}

View File

@ -147,19 +147,23 @@ function add_page_info_data($data) {
// It maybe is a rich content, but if it does have everything that a link has,
// then treat it that way
if (($data["type"] == "rich") AND is_string($data["title"]) AND
is_string($data["text"]) AND (sizeof($data["images"]) > 0))
is_string($data["text"]) AND (sizeof($data["images"]) > 0)) {
$data["type"] = "link";
}
if ((($data["type"] != "link") AND ($data["type"] != "video") AND ($data["type"] != "photo")) OR ($data["title"] == $url))
return("");
if ((($data["type"] != "link") AND ($data["type"] != "video") AND ($data["type"] != "photo")) OR ($data["title"] == $data["url"])) {
return "";
}
if ($no_photos AND ($data["type"] == "photo"))
return("");
if ($no_photos AND ($data["type"] == "photo")) {
return "";
}
if (sizeof($data["images"]) > 0)
if (sizeof($data["images"]) > 0) {
$preview = $data["images"][0];
else
} else {
$preview = "";
}
// Escape some bad characters
$data["url"] = str_replace(array("[", "]"), array("&#91;", "&#93;"), htmlentities($data["url"], ENT_QUOTES, 'UTF-8', false));
@ -167,19 +171,33 @@ function add_page_info_data($data) {
$text = "[attachment type='".$data["type"]."'";
if ($data["url"] != "")
if ($data["text"] == "") {
$data["text"] = $data["title"];
}
if ($data["text"] == "") {
$data["text"] = $data["url"];
}
if ($data["url"] != "") {
$text .= " url='".$data["url"]."'";
if ($data["title"] != "")
}
if ($data["title"] != "") {
$text .= " title='".$data["title"]."'";
}
if (sizeof($data["images"]) > 0) {
$preview = str_replace(array("[", "]"), array("&#91;", "&#93;"), htmlentities($data["images"][0]["src"], ENT_QUOTES, 'UTF-8', false));
// if the preview picture is larger than 500 pixels then show it in a larger mode
// But only, if the picture isn't higher than large (To prevent huge posts)
if (($data["images"][0]["width"] >= 500) AND ($data["images"][0]["width"] >= $data["images"][0]["height"]))
if (($data["images"][0]["width"] >= 500) AND ($data["images"][0]["width"] >= $data["images"][0]["height"])) {
$text .= " image='".$preview."'";
else
} else {
$text .= " preview='".$preview."'";
}
}
$text .= "]".$data["text"]."[/attachment]";
$hashtags = "";

View File

@ -123,8 +123,19 @@ function add_shadow_thread($itemid) {
function add_shadow_entry($itemid) {
$items = q("SELECT * FROM `item` WHERE `id` = %d", intval($itemid));
if (!dbm::is_result($items)) {
return;
}
$item = $items[0];
// Is it a toplevel post?
if ($item['id'] == $item['parent']) {
add_shadow_thread($itemid);
return;
}
// Is this a shadow entry?
if ($item['uid'] == 0)
return;

View File

@ -269,13 +269,15 @@ function admin_page_federation(&$a) {
// off one % two of them are needed in the query
// Add more platforms if you like, when one returns 0 known nodes it is not
// displayed on the stats page.
$platforms = array('Friendica', 'Diaspora', '%%red%%', 'Hubzilla', 'GNU Social', 'StatusNet');
$platforms = array('Friendica', 'Diaspora', '%%red%%', 'Hubzilla', 'BlaBlaNet', 'GNU Social', 'StatusNet', 'Mastodon');
$colors = array('Friendica' => '#ffc018', // orange from the logo
'Diaspora' => '#a1a1a1', // logo is black and white, makes a gray
'Diaspora' => '#a1a1a1', // logo is black and white, makes a gray
'%%red%%' => '#c50001', // fire red from the logo
'Hubzilla' => '#43488a', // blue from the logo
'BlaBlaNet' => '#3B5998', // blue from the navbar at blablanet-dot-com
'GNU Social'=> '#a22430', // dark red from the logo
'StatusNet' => '#789240'); // the green from the logo (red and blue have already others
'StatusNet' => '#789240', // the green from the logo (red and blue have already others
'Mastodon' => '#1a9df9'); // blue from the Mastodon logo
$counts = array();
$total = 0;
@ -283,20 +285,27 @@ function admin_page_federation(&$a) {
// get a total count for the platform, the name and version of the
// highest version and the protocol tpe
$c = qu('SELECT COUNT(*) AS `total`, `platform`, `network`, `version` FROM `gserver`
WHERE `platform` LIKE "%s" AND `last_contact` > `last_failure` AND `version` != ""
WHERE `platform` LIKE "%s" AND `last_contact` > `last_failure`
ORDER BY `version` ASC;', $p);
$total = $total + $c[0]['total'];
// what versions for that platform do we know at all?
// again only the active nodes
$v = qu('SELECT COUNT(*) AS `total`, `version` FROM `gserver`
WHERE `last_contact` > `last_failure` AND `platform` LIKE "%s" AND `version` != ""
WHERE `last_contact` > `last_failure` AND `platform` LIKE "%s"
GROUP BY `version`
ORDER BY `version`;', $p);
//
// clean up version numbers
//
// some platforms do not provide version information, add a unkown there
// to the version string for the displayed list.
foreach ($v as $key => $value) {
if ($v[$key]['version'] == '') {
$v[$key] = array('total'=>$v[$key]['total'], 'version'=>t('unknown'));
}
}
// in the DB the Diaspora versions have the format x.x.x.x-xx the last
// part (-xx) should be removed to clean up the versions from the "head
// commit" information and combined into a single entry for x.x.x.x

View File

@ -1020,22 +1020,13 @@ function item_post(&$a) {
create_tags_from_item($post_id);
create_files_from_item($post_id);
// Insert an item entry for UID=0 for global entries
if ($post_id != $parent) {
add_shadow_thread($post_id);
} else {
add_shadow_entry($post_id);
}
// This is a real juggling act on shared hosting services which kill your processes
// e.g. dreamhost. We used to start delivery to our native delivery agents in the background
// and then run our plugin delivery from the foreground. We're now doing plugin delivery first,
// because as soon as you start loading up a bunch of remote delivey processes, *this* page is
// likely to get killed off. If you end up looking at an /item URL and a blank page,
// it's very likely the delivery got killed before all your friends could be notified.
// Currently the only realistic fixes are to use a reliable server - which precludes shared hosting,
// or cut back on plugins which do remote deliveries.
// Insert an item entry for UID=0 for global entries.
// We now do it in the background to save some time.
// This is important in interactive environments like the frontend or the API.
// We don't fork a new process since this is done anyway with the following command
proc_run(array('priority' => PRIORITY_HIGH, 'dont_fork' => true), "include/create_shadowentry.php", $post_id);
// Call the background process that is delivering the item to the receivers
proc_run(PRIORITY_HIGH, "include/notifier.php", $notify_type, $post_id);
logger('post_complete');

View File

@ -89,6 +89,13 @@ function parseurl_getsiteinfo($url, $no_guessing = false, $do_oembed = true, $co
$siteinfo = array();
// Check if the URL does contain a scheme
$scheme = parse_url($url, PHP_URL_SCHEME);
if ($scheme == "") {
$url = "http://".trim($url, "/");
}
if ($count > 10) {
logger("parseurl_getsiteinfo: Endless loop detected for ".$url, LOGGER_DEBUG);
return($siteinfo);
@ -102,6 +109,8 @@ function parseurl_getsiteinfo($url, $no_guessing = false, $do_oembed = true, $co
$siteinfo["url"] = $url;
$siteinfo["type"] = "link";
$check_cert = get_config('system','verifyssl');
$stamp1 = microtime(true);
$ch = curl_init();
@ -110,8 +119,9 @@ function parseurl_getsiteinfo($url, $no_guessing = false, $do_oembed = true, $co
curl_setopt($ch, CURLOPT_NOBODY, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 3);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
//curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_USERAGENT, $a->get_useragent());
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, (($check_cert) ? true : false));
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, (($check_cert) ? 2 : false));
$header = curl_exec($ch);
$curl_info = @curl_getinfo($ch);
@ -142,8 +152,9 @@ function parseurl_getsiteinfo($url, $no_guessing = false, $do_oembed = true, $co
$oembed_data = oembed_fetch_url($url);
if ($oembed_data->type != "error")
if (!in_array($oembed_data->type, array("error", "rich"))) {
$siteinfo["type"] = $oembed_data->type;
}
if (($oembed_data->type == "link") AND ($siteinfo["type"] != "photo")) {
if (isset($oembed_data->title))
@ -165,6 +176,8 @@ function parseurl_getsiteinfo($url, $no_guessing = false, $do_oembed = true, $co
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, $a->get_useragent());
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, (($check_cert) ? true : false));
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, (($check_cert) ? 2 : false));
$header = curl_exec($ch);
$curl_info = @curl_getinfo($ch);

View File

@ -1004,7 +1004,7 @@ function settings_content(&$a) {
'$noinfo' => array('noinfo', t("Don't show notices"), $noinfo, ''),
'$infinite_scroll' => array('infinite_scroll', t("Infinite scroll"), $infinite_scroll, ''),
'$no_auto_update' => array('no_auto_update', t("Automatic updates only at the top of the network page"), $no_auto_update, 'When disabled, the network page is updated all the time, which could be confusing while reading.'),
'$bandwidth_saver' => array('bandwidth_saver', t('Bandwith Saver Mode'), $bandwidth_saver, 'When enabled, embedded content is not displayed on automatic updates, they only show on page reload.'),
'$bandwidth_saver' => array('bandwidth_saver', t('Bandwith Saver Mode'), $bandwidth_saver, t('When enabled, embedded content is not displayed on automatic updates, they only show on page reload.')),
'$d_tset' => t('General Theme Settings'),
'$d_ctset' => t('Custom Theme Settings'),

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-11-06 16:00+0100\n"
"POT-Creation-Date: 2016-11-10 15:43+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -51,8 +51,8 @@ msgstr ""
msgid "Enter name or interest"
msgstr ""
#: include/contact_widgets.php:32 include/Contact.php:325
#: include/conversation.php:981 mod/follow.php:103 mod/allfriends.php:66
#: include/contact_widgets.php:32 include/conversation.php:981
#: include/Contact.php:347 mod/follow.php:103 mod/allfriends.php:66
#: mod/contacts.php:602 mod/dirfind.php:204 mod/match.php:72
#: mod/suggest.php:83
msgid "Connect/Follow"
@ -1146,57 +1146,6 @@ msgstr ""
msgid "noreply"
msgstr ""
#: include/Contact.php:119
msgid "stopped following"
msgstr ""
#: include/Contact.php:311 include/Contact.php:324 include/Contact.php:369
#: include/conversation.php:968 include/conversation.php:984
#: mod/allfriends.php:65 mod/directory.php:155 mod/dirfind.php:203
#: mod/match.php:71 mod/suggest.php:82
msgid "View Profile"
msgstr ""
#: include/Contact.php:368 include/conversation.php:967
msgid "View Status"
msgstr ""
#: include/Contact.php:370 include/conversation.php:969
msgid "View Photos"
msgstr ""
#: include/Contact.php:371 include/conversation.php:970
msgid "Network Posts"
msgstr ""
#: include/Contact.php:372 include/conversation.php:971
msgid "View Contact"
msgstr ""
#: include/Contact.php:373
msgid "Drop Contact"
msgstr ""
#: include/Contact.php:374 include/conversation.php:972
msgid "Send PM"
msgstr ""
#: include/Contact.php:375 include/conversation.php:976
msgid "Poke"
msgstr ""
#: include/Contact.php:748
msgid "Organisation"
msgstr ""
#: include/Contact.php:751
msgid "News"
msgstr ""
#: include/Contact.php:754
msgid "Forum"
msgstr ""
#: include/api.php:1019
#, php-format
msgid "Daily posting limit of %d posts reached. The post was rejected."
@ -1353,6 +1302,37 @@ msgstr ""
msgid "Follow Thread"
msgstr ""
#: include/conversation.php:967 include/Contact.php:390
msgid "View Status"
msgstr ""
#: include/conversation.php:968 include/conversation.php:984
#: include/Contact.php:333 include/Contact.php:346 include/Contact.php:391
#: mod/allfriends.php:65 mod/directory.php:155 mod/dirfind.php:203
#: mod/match.php:71 mod/suggest.php:82
msgid "View Profile"
msgstr ""
#: include/conversation.php:969 include/Contact.php:392
msgid "View Photos"
msgstr ""
#: include/conversation.php:970 include/Contact.php:393
msgid "Network Posts"
msgstr ""
#: include/conversation.php:971 include/Contact.php:394
msgid "View Contact"
msgstr ""
#: include/conversation.php:972 include/Contact.php:396
msgid "Send PM"
msgstr ""
#: include/conversation.php:976 include/Contact.php:397
msgid "Poke"
msgstr ""
#: include/conversation.php:1094
#, php-format
msgid "%s likes this."
@ -1564,8 +1544,8 @@ msgstr ""
#: mod/fbrowser.php:136 mod/tagrm.php:11 mod/tagrm.php:94 mod/follow.php:121
#: mod/editpost.php:148 mod/message.php:220 mod/dfrn_request.php:875
#: mod/contacts.php:445 mod/photos.php:235 mod/photos.php:322
#: mod/settings.php:677 mod/settings.php:703 mod/suggest.php:32
#: mod/videos.php:128
#: mod/suggest.php:32 mod/videos.php:128 mod/settings.php:677
#: mod/settings.php:703
msgid "Cancel"
msgstr ""
@ -2554,11 +2534,11 @@ msgstr ""
#: include/items.php:1914 mod/follow.php:110 mod/api.php:105
#: mod/message.php:217 mod/dfrn_request.php:861 mod/profiles.php:648
#: mod/profiles.php:651 mod/profiles.php:677 mod/contacts.php:442
#: mod/register.php:238 mod/settings.php:1158 mod/settings.php:1164
#: mod/settings.php:1172 mod/settings.php:1176 mod/settings.php:1181
#: mod/settings.php:1187 mod/settings.php:1193 mod/settings.php:1199
#: mod/settings.php:1225 mod/settings.php:1226 mod/settings.php:1227
#: mod/settings.php:1228 mod/settings.php:1229 mod/suggest.php:29
#: mod/register.php:238 mod/suggest.php:29 mod/settings.php:1158
#: mod/settings.php:1164 mod/settings.php:1172 mod/settings.php:1176
#: mod/settings.php:1181 mod/settings.php:1187 mod/settings.php:1193
#: mod/settings.php:1199 mod/settings.php:1225 mod/settings.php:1226
#: mod/settings.php:1227 mod/settings.php:1228 mod/settings.php:1229
msgid "Yes"
msgstr ""
@ -2579,8 +2559,8 @@ msgstr ""
#: mod/contacts.php:350 mod/dirfind.php:11 mod/display.php:475
#: mod/events.php:190 mod/item.php:198 mod/item.php:210 mod/network.php:4
#: mod/photos.php:159 mod/photos.php:1072 mod/register.php:42
#: mod/settings.php:22 mod/settings.php:128 mod/settings.php:663
#: mod/suggest.php:58 mod/viewcontacts.php:45 index.php:397
#: mod/suggest.php:58 mod/viewcontacts.php:45 mod/settings.php:22
#: mod/settings.php:128 mod/settings.php:663 index.php:397
msgid "Permission denied."
msgstr ""
@ -3075,6 +3055,26 @@ msgstr ""
msgid "Item filed"
msgstr ""
#: include/Contact.php:119
msgid "stopped following"
msgstr ""
#: include/Contact.php:395
msgid "Drop Contact"
msgstr ""
#: include/Contact.php:770
msgid "Organisation"
msgstr ""
#: include/Contact.php:773
msgid "News"
msgstr ""
#: include/Contact.php:776
msgid "Forum"
msgstr ""
#: mod/oexchange.php:25
msgid "Post successful."
msgstr ""
@ -7861,6 +7861,49 @@ msgstr ""
msgid "Import your profile to this friendica instance"
msgstr ""
#: mod/suggest.php:27
msgid "Do you really want to delete this suggestion?"
msgstr ""
#: mod/suggest.php:71
msgid ""
"No suggestions available. If this is a new site, please try again in 24 "
"hours."
msgstr ""
#: mod/suggest.php:84 mod/suggest.php:104
msgid "Ignore/Hide"
msgstr ""
#: mod/update_community.php:19 mod/update_display.php:23
#: mod/update_network.php:27 mod/update_notes.php:36 mod/update_profile.php:35
msgid "[Embedded content - reload page to view]"
msgstr ""
#: mod/videos.php:120
msgid "Do you really want to delete this video?"
msgstr ""
#: mod/videos.php:125
msgid "Delete Video"
msgstr ""
#: mod/videos.php:204
msgid "No videos selected"
msgstr ""
#: mod/videos.php:396
msgid "Recent Videos"
msgstr ""
#: mod/videos.php:398
msgid "Upload New Videos"
msgstr ""
#: mod/viewcontacts.php:72
msgid "No contacts."
msgstr ""
#: mod/settings.php:60
msgid "Display"
msgstr ""
@ -8181,6 +8224,12 @@ msgstr ""
msgid "Bandwith Saver Mode"
msgstr ""
#: mod/settings.php:1007
msgid ""
"When enabled, embedded content is not displayed on automatic updates, they "
"only show on page reload."
msgstr ""
#: mod/settings.php:1009
msgid "General Theme Settings"
msgstr ""
@ -8556,49 +8605,6 @@ msgstr ""
msgid "Resend relocate message to contacts"
msgstr ""
#: mod/suggest.php:27
msgid "Do you really want to delete this suggestion?"
msgstr ""
#: mod/suggest.php:71
msgid ""
"No suggestions available. If this is a new site, please try again in 24 "
"hours."
msgstr ""
#: mod/suggest.php:84 mod/suggest.php:104
msgid "Ignore/Hide"
msgstr ""
#: mod/update_community.php:19 mod/update_display.php:23
#: mod/update_network.php:27 mod/update_notes.php:36 mod/update_profile.php:35
msgid "[Embedded content - reload page to view]"
msgstr ""
#: mod/videos.php:120
msgid "Do you really want to delete this video?"
msgstr ""
#: mod/videos.php:125
msgid "Delete Video"
msgstr ""
#: mod/videos.php:204
msgid "No videos selected"
msgstr ""
#: mod/videos.php:396
msgid "Recent Videos"
msgstr ""
#: mod/videos.php:398
msgid "Upload New Videos"
msgstr ""
#: mod/viewcontacts.php:72
msgid "No contacts."
msgstr ""
#: object/Item.php:370
msgid "via"
msgstr ""

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff