Merge remote-tracking branch 'upstream/develop' into 1705-dbclean-advanced

This commit is contained in:
Michael 2017-06-06 17:30:40 +00:00
commit de9cddc82f
41 changed files with 19169 additions and 7944 deletions

148
CHANGELOG
View File

@ -1,10 +1,64 @@
Version 3.5.2 (2017-06-06)
Friendica Core:
Updates to the translations (DE, EN-GB, EN-US, ES, IT, PT-BR, RU) [translation teams]
Updates to the documentation [annando, beardyunixer, rabuzarus, tobiasd]
Updated the nginx example configuration [beardyunixer]
Code revision and refactoring [annando, hypolite, Quix0r, rebeka-catalina]
Background process is now done by the new worker process [annando]
Added support of Composer for dependencies [Hypolite]
Added support of Web app manifests [Rudloff]
Added basic robot.txt functionality if none exists [Shnoulle]
Added server blocklist [Hypolite, tobiasd]
Removed mcrypt dependency [annando]
Removed unused libraries [annando]
Removed Embedly integration [Hypolite]
Fixed a bug in the language detection for EN [Hypolite]
Fixed a bug in the probing mechanism on old PHP version [annando]
Improved API [annando, gerhard6380]
Improved Diaspora federation [annando]
Improved Mastodon federation [annando, Hypolite]
Improved import from OStatus threads [annando]
Improved the themes (frio, quattro) [fabrixxm, Hypolite, rabuzarus, Rudloff, strk, tobiasd]
Improved maintenance mode [annando]
Improved gcontact handling [annando]
Improved desktop notifications [rabuzarus]
Improved keyboard shortcuts for navigation [Rudloff]
Improved the installer [annando]
Improved openid handling [strk]
Improved php7 support [annando]
Improved display of notifications [annando]
Improved logging mechanism [beardyunixer]
Improved the worker [annando]
Behaviour clarification of the group filter / new tab [annando]
Old options for the pager and share element were removed [annando]
Support of PDO was added [annando]
Improved error logging for issues with the database [annando]
Improved compatibility to MySQL version 5.7+ [annando]
Friendica Addons:
Updates to the translation (RU) [pztrm]
(core) Fix blocking issue for Communityhome [annando]
Pledgie addon was updated to remove cert problems [tobiasd]
Securemail now uses openpgp-php and phpseclib [fabrixxm]
Superblock Configuration [tobiasd]
Twitter Connector updated to use with new deletion method [annando]
Closed Issues:
1626, 1720, 2432, 2792, 2833, 2364, 2448, 2496, 2690, 2752, 2775,
2803, 2956, 2957, 2961, 2971, 2995, 2999, 3011, 3053, 3107, 3114,
3134, 3138, 3142, 3157, 3172, 3189, 3194, 3195, 3198, 3206, 3215,
3217, 3220, 3237, 3242, 3255, 3256, 3260, 3268, 3273, 3274, 3285,
3288, 3292, 3293, 3300, 3314, 3316, 3317, 3322, 3325, 3327, 3328,
3331, 3334, 3336, 3346, 3347, 3358, 3359, 3383, 3387, 3401, 3406,
3428, 3440, 3435, 3436, 3452
Version 3.5.1 (2017-03-12)
Friendica Core:
Updates to the translations (BG, CA, CS, DE, EO, ES, FR, IS, IT, NL, PL, PT-BR, RU, SV) [translation teams]
Fix for a potential XSS vector [heluecht, thanks to Vít Šesták 'v6ak' for reporting the problem]
Fix for a potential XSS vector [annando, thanks to Vít Šesták 'v6ak' for reporting the problem]
Fix for ghost request notifications on single user instances [Hypolite]
Fix user language selection [tobiasd]
Fix a problem with communication to Diaspora with set posting locations [heluecht]
Fix a problem with communication to Diaspora with set posting locations [annando]
Fix schema handling of direct links to a original posting [Rabuzarus]
Fix a bug in notification handling [Rabuzarus]
Adjustments for the Vagrant VM settings [silke, eelcomaljaars]
@ -12,22 +66,22 @@ Version 3.5.1 (2017-03-12)
Improvements to the API and Friendica specific extensions [gerhard6380]
Improvements to the Browser Notification functionality [Hypolite]
Improvements to the themes [Hypolite, rabuzarus, rebeka-catalina, tobiasd]
Improvements to the database handling [heluecht]
Improvements to the database handling [annando]
Improvements to the admin panel [tobiasd, Hypolite]
Improvements to the update process [heluecht]
Improvements to the handling of worker processes [heluecht]
Improvements to the performance [heluecht, Hypolite]
Improvements to the update process [annando]
Improvements to the handling of worker processes [annando]
Improvements to the performance [annando, Hypolite]
Improvements to the documentation [Hypolite, tobiasd, rabuzarus, beardyunixer, eelcomaljaars]
Improvements to the BBCode / Markdown conversation [Hypolite]
Improvements to the OStatus protocol implementation [heluecht]
Improvements to the OStatus protocol implementation [annando]
Improvements to the installation wizzard [tobiasd]
Improvements to the Diaspora connectivity [heluecht, Hypolite]
Improvements to the Diaspora connectivity [annando, Hypolite]
Work on PHP7 compatibility [ddorian1]
Code cleanup [Hypolite, Quix0r]
Initial federation with Mastodon [heluecht]
The worker process can now also be started from the frontend [heluecht]
Deletion of postings is now done in the background [heluecht]
Extension of the DFRN transmitted information fields [heluecht]
Initial federation with Mastodon [annando]
The worker process can now also be started from the frontend [annando]
Deletion of postings is now done in the background [annando]
Extension of the DFRN transmitted information fields [annando]
Translations of the core are now in /view/lang [Hypolite, tobiasd]
Update of the fullCalendar library to 3.0.1 and adjusting the themes [rabuzarus]
ping now works with JSON as well [Hypolite]
@ -46,16 +100,16 @@ Version 3.5.1 (2017-03-12)
Updates to the translations (DE, ES, FR, IT, PT-BR) [translation teams]
Improvements to the IFTTT addon [Hypolite]
Improvements to the language filter addon [strk]
Improvements to the pump.io bridge [heluecht]
Improvements to the jappixmini addon [heluecht]
Improvements to the gpluspost addon [heluecht]
Improvements to the performance of the Twitter bridge when using workers [heluecht]
Diaspora Export addon is now working again [heluecht]
Improvements to the pump.io bridge [annando]
Improvements to the jappixmini addon [annando]
Improvements to the gpluspost addon [annando]
Improvements to the performance of the Twitter bridge when using workers [annando]
Diaspora Export addon is now working again [annando]
Pledgie badge now uses https protocol for embedding [tobiasd]
Better posting loop prevention for the Google+/Twitter/GS connectors [heluecht]
Better posting loop prevention for the Google+/Twitter/GS connectors [annando]
One can now configure the message for wppost bridged blog postings [tobiasd]
On some pages the result of the Rendertime is not shown anymore [heluecht]
Twitter-bridge now supports quotes and long posts when importing tweets [heluecht]
On some pages the result of the Rendertime is not shown anymore [annando]
Twitter-bridge now supports quotes and long posts when importing tweets [annando]
Closed Issues
1019, 1163, 1612, 1613, 2103, 2177, 2252, 2260, 2403, 2991, 2614,
@ -67,48 +121,48 @@ Version 3.5.1 (2017-03-12)
Version 3.5 (2016-09-13)
Friendica Core:
NEW Optional local directory with possible federated contacts [heluecht]
NEW Optional local directory with possible federated contacts [annando]
NEW Autocompletion for @-mentions and BBCode tags [rabuzarus]
NEW Added a composer derived autoloader which allows composer autoloaders in addons/libraries [fabrixxm]
NEW theme: frio [rabuzarus, heluecht, fabrixxm]
NEW theme: frio [rabuzarus, annando, fabrixxm]
Enhance .htaccess file (nerdoc, dissolve)
Updates to the translations (DE, ES, IS, IT, RU) [translation teams]
Updates to the documentation [tobiasd, heluecht, mexcon, silke, rabuzarus, fabrixxm, Olivier Mehani, gerhard6380, ben utzer]
Extended the BBCode by [abstract] tag used for bridged postings to networks with limited character length [heluecht]
Code cleanup [heluecht, QuixOr]
Improvements to the API and Friendica specific extensions [heluecht, fabrixxm, gerhard6380]
Updates to the documentation [tobiasd, annando, mexcon, silke, rabuzarus, fabrixxm, Olivier Mehani, gerhard6380, ben utzer]
Extended the BBCode by [abstract] tag used for bridged postings to networks with limited character length [annando]
Code cleanup [annando, QuixOr]
Improvements to the API and Friendica specific extensions [annando, fabrixxm, gerhard6380]
Improvements to the RSS/Atom feed import [mexcon]
Improvements to the communication with federated networks (Diaspora, Hubzilla, OStatus) [heluecht]
Improvements on the themes (quattro, vier, frost) [rabuzarus, fabrixxm, stieben, heluecht, Quix0r, tobiasd]
Improvements to the communication with federated networks (Diaspora, Hubzilla, OStatus) [annando]
Improvements on the themes (quattro, vier, frost) [rabuzarus, fabrixxm, stieben, annando, Quix0r, tobiasd]
Improvements to the ACL dialog [fabrixxm, rabuzarus]
Improvements to the database structure and optimization of queries [heluecht]
Improvements to the UI (contacts, hotkeys, remember me, ARIA, code hightlighting) [rabuzarus, heluecht, tobiasd]
Improvements to the background process (poller, worker) [heluecht]
Improvements to the admin panel [tobiasd, heluecht, fabrixxm]
Improvements to the performance [heluecht]
Improvements to the database structure and optimization of queries [annando]
Improvements to the UI (contacts, hotkeys, remember me, ARIA, code hightlighting) [rabuzarus, annando, tobiasd]
Improvements to the background process (poller, worker) [annando]
Improvements to the admin panel [tobiasd, annando, fabrixxm]
Improvements to the performance [annando]
Improvements to the installation wizzard (language selection, RINO version, check required PHP modules, default theme is now vier) [tobiasd]
Improvements to the relocation of nodes and accounts [heluecht]
Improvements to the DDoS detection [heluecht]
Improvements to the calendar/events module [heluecht, rabuzarus]
Improvements to the relocation of nodes and accounts [annando]
Improvements to the DDoS detection [annando]
Improvements to the calendar/events module [annando, rabuzarus]
Improvements to OpenID login [strk]
Improvements to the ShaShape font [andi]
Reworked the implementation of the DFRN, Diaspora protocols [heluecht]
Reworked the notifications code [fabrixxm, rabuzarus, heluecht]
Reworked the implementation of the DFRN, Diaspora protocols [annando]
Reworked the notifications code [fabrixxm, rabuzarus, annando]
Reworked the p/config code [fabrixxm, rabuzarus]
Reworked XML generation [heluecht]
Removed now unused simplepie from library [heluecht]
Reworked XML generation [annando]
Removed now unused simplepie from library [annando]
Friendica Addons
Updated to the translations (DE, ES, IS, NL, PT BR), [translation teams]
Piwik [tobiasd]
Twitter Connector [heluecht]
Pumpio Connector [heluecht]
Rendertime [heluecht]
wppost [heluecht]
Twitter Connector [annando]
Pumpio Connector [annando]
Rendertime [annando]
wppost [annando]
showmore [rabuzarus]
fromgplus [heluecht]
app.net Connector [heluecht]
GNU Social Connector [heluecht]
fromgplus [annando]
app.net Connector [annando]
GNU Social Connector [annando]
LDAP [Olivier Mehani]
smileybutton [rabuzarus]
retriver [mexon]

View File

@ -1 +1 @@
3.5.2-rc
3.5.3dev

View File

@ -38,9 +38,9 @@ require_once 'include/dbstructure.php';
define ( 'FRIENDICA_PLATFORM', 'Friendica');
define ( 'FRIENDICA_CODENAME', 'Asparagus');
define ( 'FRIENDICA_VERSION', '3.5.2-rc' );
define ( 'FRIENDICA_VERSION', '3.5.3dev' );
define ( 'DFRN_PROTOCOL_VERSION', '2.23' );
define ( 'DB_UPDATE_VERSION', 1225 );
define ( 'DB_UPDATE_VERSION', 1227 );
/**
* @brief Constant with a HTML line break.
@ -457,6 +457,13 @@ if (!defined("SIGTERM")) {
define("SIGTERM", 15);
}
/**
* Depending on the PHP version this constant does exist - or not.
* See here: http://php.net/manual/en/curl.constants.php#117928
*/
if (!defined('CURLE_OPERATION_TIMEDOUT')) {
define('CURLE_OPERATION_TIMEDOUT', CURLE_OPERATION_TIMEOUTED);
}
/**
*
* Reverse the effect of magic_quotes_gpc if it is enabled.
@ -1375,7 +1382,7 @@ function get_server() {
$server = get_config("system", "directory");
if ($server == "") {
$server = "http://dir.friendi.ca";
$server = "http://dir.friendica.social";
}
return($server);

View File

@ -1,6 +1,6 @@
-- ------------------------------------------
-- Friendica 3.5.2-dev (Asparagus)
-- DB_UPDATE_VERSION 1221
-- Friendica 3.5.2-rc (Asparagus)
-- DB_UPDATE_VERSION 1227
-- ------------------------------------------
@ -193,7 +193,7 @@ CREATE TABLE IF NOT EXISTS `contact` (
--
CREATE TABLE IF NOT EXISTS `conv` (
`id` int(10) unsigned NOT NULL auto_increment,
`guid` varchar(64) NOT NULL DEFAULT '',
`guid` varchar(255) NOT NULL DEFAULT '',
`recips` text,
`uid` int(11) NOT NULL DEFAULT 0,
`creator` varchar(255) NOT NULL DEFAULT '',
@ -270,7 +270,7 @@ CREATE TABLE IF NOT EXISTS `fcontact` (
`updated` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
PRIMARY KEY(`id`),
INDEX `addr` (`addr`(32)),
INDEX `url` (`url`)
UNIQUE INDEX `url` (`url`(190))
) DEFAULT COLLATE utf8mb4_general_ci;
--
@ -355,7 +355,7 @@ CREATE TABLE IF NOT EXISTS `gcontact` (
`generation` tinyint(3) NOT NULL DEFAULT 0,
`server_url` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY(`id`),
INDEX `nurl` (`nurl`(64)),
UNIQUE INDEX `nurl` (`nurl`(190)),
INDEX `name` (`name`(64)),
INDEX `nick` (`nick`(32)),
INDEX `addr` (`addr`(64)),
@ -425,7 +425,7 @@ CREATE TABLE IF NOT EXISTS `gserver` (
`last_contact` datetime DEFAULT '0001-01-01 00:00:00',
`last_failure` datetime DEFAULT '0001-01-01 00:00:00',
PRIMARY KEY(`id`),
INDEX `nurl` (`nurl`(32))
UNIQUE INDEX `nurl` (`nurl`(190))
) DEFAULT COLLATE utf8mb4_general_ci;
--
@ -544,6 +544,7 @@ CREATE TABLE IF NOT EXISTS `item` (
INDEX `uid_parenturi` (`uid`,`parent-uri`(190)),
INDEX `uid_contactid_created` (`uid`,`contact-id`,`created`),
INDEX `authorid_created` (`author-id`,`created`),
INDEX `ownerid` (`owner-id`),
INDEX `uid_uri` (`uid`,`uri`(190)),
INDEX `resource-id` (`resource-id`),
INDEX `contactid_allowcid_allowpid_denycid_denygid` (`contact-id`,`allow_cid`(10),`allow_gid`(10),`deny_cid`(10),`deny_gid`(10)),
@ -589,7 +590,7 @@ CREATE TABLE IF NOT EXISTS `locks` (
CREATE TABLE IF NOT EXISTS `mail` (
`id` int(10) unsigned NOT NULL auto_increment,
`uid` int(10) unsigned NOT NULL DEFAULT 0,
`guid` varchar(64) NOT NULL DEFAULT '',
`guid` varchar(255) NOT NULL DEFAULT '',
`from-name` varchar(255) NOT NULL DEFAULT '',
`from-photo` varchar(255) NOT NULL DEFAULT '',
`from-url` varchar(255) NOT NULL DEFAULT '',
@ -608,7 +609,8 @@ CREATE TABLE IF NOT EXISTS `mail` (
INDEX `uid_seen` (`uid`,`seen`),
INDEX `convid` (`convid`),
INDEX `uri` (`uri`(64)),
INDEX `parent-uri` (`parent-uri`(64))
INDEX `parent-uri` (`parent-uri`(64)),
INDEX `contactid` (`contact-id`)
) DEFAULT COLLATE utf8mb4_general_ci;
--
@ -746,6 +748,7 @@ CREATE TABLE IF NOT EXISTS `photo` (
`deny_cid` mediumtext,
`deny_gid` mediumtext,
PRIMARY KEY(`id`),
INDEX `contactid` (`contact-id`),
INDEX `uid_contactid` (`uid`,`contact-id`),
INDEX `uid_profile` (`uid`,`profile`),
INDEX `uid_album_scale_created` (`uid`,`album`(32),`scale`,`created`),
@ -1019,6 +1022,9 @@ CREATE TABLE IF NOT EXISTS `thread` (
INDEX `uid_network_created` (`uid`,`network`,`created`),
INDEX `uid_contactid_commented` (`uid`,`contact-id`,`commented`),
INDEX `uid_contactid_created` (`uid`,`contact-id`,`created`),
INDEX `contactid` (`contact-id`),
INDEX `ownerid` (`owner-id`),
INDEX `authorid` (`author-id`),
INDEX `uid_created` (`uid`,`created`),
INDEX `uid_commented` (`uid`,`commented`),
INDEX `uid_wall_created` (`uid`,`wall`,`created`)
@ -1108,6 +1114,8 @@ CREATE TABLE IF NOT EXISTS `workerqueue` (
`created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
`pid` int(11) NOT NULL DEFAULT 0,
`executed` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
PRIMARY KEY(`id`)
PRIMARY KEY(`id`),
INDEX `pid` (`pid`),
INDEX `priority_created` (`priority`,`created`)
) DEFAULT COLLATE utf8mb4_general_ci;

View File

@ -14,7 +14,7 @@ Especially don't do that with undocumented values.
The header of the section describes the category, the value is the parameter.
Example: To set the directory value please add this line to your .htconfig.php:
$a->config['system']['directory'] = 'http://dir.friendi.ca';
$a->config['system']['directory'] = 'http://dir.friendica.social';
## jabber ##
* **debug** (Boolean) - Enable debug level for the jabber account synchronisation.
@ -39,7 +39,7 @@ Example: To set the directory value please add this line to your .htconfig.php:
* **default_service_class** -
* **delivery_batch_count** - Number of deliveries per process. Default value is 1. (Disabled when using the worker)
* **diaspora_test** (Boolean) - For development only. Disables the message transfer.
* **directory** - The path to global directory. If not set then "http://dir.friendi.ca" is used.
* **directory** - The path to global directory. If not set then "http://dir.friendica.social" is used.
* **disable_email_validation** (Boolean) - Disables the check if a mail address is in a valid format and can be resolved via DNS.
* **disable_url_validation** (Boolean) - Disables the DNS lookup of an URL.
* **dlogfile - location of the developer log file

View File

@ -4,10 +4,12 @@
* @brief Methods for read and write notifications from/to database
* or for formatting notifications
*/
require_once 'include/html2plain.php';
require_once 'include/probe.php';
require_once 'include/datetime.php';
require_once 'include/bbcode.php';
require_once 'include/Contact.php';
/**
* @brief Methods for read and write notifications from/to database
@ -720,10 +722,12 @@ class NotificationsManager {
$sql_extra = " AND `ignore` = 0 ";
/// @todo Fetch contact details by "get_contact_details_by_url" instead of queries to contact, fcontact and gcontact
$r = q("SELECT `intro`.`id` AS `intro_id`, `intro`.*, `contact`.*, `fcontact`.`name` AS `fname`,`fcontact`.`url` AS `furl`,`fcontact`.`photo` AS `fphoto`,`fcontact`.`request` AS `frequest`,
$r = q("SELECT `intro`.`id` AS `intro_id`, `intro`.*, `contact`.*,
`fcontact`.`name` AS `fname`, `fcontact`.`url` AS `furl`,
`fcontact`.`photo` AS `fphoto`, `fcontact`.`request` AS `frequest`,
`gcontact`.`location` AS `glocation`, `gcontact`.`about` AS `gabout`,
`gcontact`.`keywords` AS `gkeywords`, `gcontact`.`gender` AS `ggender`,
`gcontact`.`network` AS `gnetwork`
`gcontact`.`network` AS `gnetwork`, `gcontact`.`addr` AS `gaddr`
FROM `intro`
LEFT JOIN `contact` ON `contact`.`id` = `intro`.`contact-id`
LEFT JOIN `gcontact` ON `gcontact`.`nurl` = `contact`.`nurl`
@ -786,11 +790,7 @@ class NotificationsManager {
// Normal connection requests
} else {
// Probe the contact url to get missing data
$ret = probe_url($it["url"]);
if ($it['gnetwork'] == "")
$it['gnetwork'] = $ret["network"];
$it = $this->getMissingIntroData($it);
// Don't show these data until you are connected. Diaspora is doing the same.
if($it['gnetwork'] === NETWORK_DIASPORA) {
@ -815,7 +815,7 @@ class NotificationsManager {
'post_newfriend' => (intval(get_pconfig(local_user(),'system','post_newfriend')) ? '1' : 0),
'url' => $it['url'],
'zrl' => zrl($it['url']),
'addr' => $ret['addr'],
'addr' => $it['gaddr'],
'network' => $it['gnetwork'],
'knowyou' => $it['knowyou'],
'note' => $it['note'],
@ -827,4 +827,38 @@ class NotificationsManager {
return $arr;
}
/**
* @brief Check for missing contact data and try to fetch the data from
* from other sources
*
* @param array $arr The input array with the intro data
*
* @return array The array with the intro data
*/
private function getMissingIntroData($arr) {
// If the network and the addr isn't available from the gcontact
// table entry, take the one of the contact table entry
if ($arr['gnetwork'] == "") {
$arr['gnetwork'] = $arr['network'];
}
if ($arr['gaddr'] == "") {
$arr['gaddr'] = $arr['addr'];
}
// If the network and addr is still not available
// get the missing data data from other sources
if ($arr['gnetwork'] == "" || $arr['gaddr'] == "") {
$ret = get_contact_details_by_url($arr['url']);
if ($arr['gnetwork'] == "" && $ret['network'] != "") {
$arr['gnetwork'] = $ret['network'];
}
if ($arr['gaddr'] == "" && $ret['addr'] != "") {
$arr['gaddr'] = $ret['addr'];
}
}
return $arr;
}
}

View File

@ -2289,6 +2289,11 @@ $called_api = null;
$statushtml = "<h4>" . bbcode($item['title']) . "</h4>\n" . $statushtml;
}
// feeds without body should contain the link
if (($item['network'] == NETWORK_FEED) && (strlen($item['body']) == 0)) {
$statushtml .= bbcode($item['plink']);
}
$entities = api_get_entitities($statustext, $body);
return array(

View File

@ -49,12 +49,14 @@ class dba {
function __construct($server,$user,$pass,$db,$install = false) {
$a = get_app();
# work around, to store the database - configuration in DDDBL
$objDataObjectPool = new DataObjectPool('Database-Definition');
$objDataObjectPool->add('DEFAULT', array('CONNECTION' => "mysql:host=$server;dbname=$db",
'USER' => $user,
'PASS' => $pass,
'DEFAULT' => true));
// work around, to store the database - configuration in DDDBL
$objDataObjectPool = new DataObjectPool('Database-Definition');
$objDataObjectPool->add('DEFAULT', array(
'CONNECTION' => "mysql:host=$server;dbname=$db",
'USER' => $user,
'PASS' => $pass,
'DEFAULT' => true
));
$stamp1 = microtime(true);
@ -63,35 +65,34 @@ class dba {
$pass = trim($pass);
$db = trim($db);
if (!(strlen($server) && strlen($user))){
if (!(strlen($server) && strlen($user))) {
$this->connected = false;
$this->db = null;
return;
}
if ($install) {
if (strlen($server) && ($server !== 'localhost') && ($server !== '127.0.0.1')) {
if (! dns_get_record($server, DNS_A + DNS_CNAME + DNS_PTR)) {
$this->error = sprintf( t('Cannot locate DNS info for database server \'%s\''), $server);
$this->connected = false;
$this->db = null;
return;
}
if ($install && strlen($server) && ($server !== 'localhost') && ($server !== '127.0.0.1')) {
if (! dns_get_record($server, DNS_A + DNS_CNAME + DNS_PTR)) {
$this->error = sprintf( t('Cannot locate DNS info for database server \'%s\''), $server);
$this->connected = false;
$this->db = null;
return;
}
}
# etablish connection to database and store PDO object
DDDBL\connect();
$this->db = DDDBL\getDB();
// Establish connection to database and store PDO object
DDDBL\connect();
$this->db = DDDBL\getDB();
if (DDDBL\isConnected()) {
$this->connected = true;
}
if (DDDBL\isConnected()) {
$this->connected = true;
}
if (! $this->connected) {
$this->db = null;
if (! $install)
if (! $install) {
system_unavailable();
}
}
$a->save_timestamp($stamp1, "network");
@ -104,44 +105,49 @@ class dba {
public function q($sql, $onlyquery = false) {
$a = get_app();
$strHandler = (true === $onlyquery) ? 'PDOStatement' : 'MULTI';
$strHandler = (true === $onlyquery) ? 'PDOStatement' : 'MULTI';
$strQueryAlias = md5($sql);
$strSQLType = strtoupper(strstr($sql, ' ', true));
$strQueryAlias = md5($sql);
$strSQLType = strtoupper(strstr($sql, ' ', true));
$objPreparedQueryPool = new DataObjectPool('Query-Definition');
$objPreparedQueryPool = new DataObjectPool('Query-Definition');
# check if query do not exists till now, if so create its definition
if (!$objPreparedQueryPool->exists($strQueryAlias))
$objPreparedQueryPool->add($strQueryAlias, array('QUERY' => $sql,
'HANDLER' => $strHandler));
// check if query do not exists till now, if so create its definition
if (!$objPreparedQueryPool->exists($strQueryAlias)) {
$objPreparedQueryPool->add($strQueryAlias, array(
'QUERY' => $sql,
'HANDLER' => $strHandler
));
}
if ((! $this->db) || (! $this->connected))
if ((! $this->db) || (! $this->connected)) {
return false;
}
$this->error = '';
$stamp1 = microtime(true);
try {
$r = DDDBL\get($strQueryAlias);
try {
$r = DDDBL\get($strQueryAlias);
# bad workaround to emulate the bizzare behavior of mysql_query
if (in_array($strSQLType, array('INSERT', 'UPDATE', 'DELETE', 'CREATE', 'DROP', 'SET')))
$result = true;
$intErrorCode = false;
} catch (Exception $objException) {
$result = false;
$intErrorCode = $objPreparedQueryPool->get($strQueryAlias)->get('PDOStatement')->errorCode();
}
// bad workaround to emulate the bizzare behavior of mysql_query
if (in_array($strSQLType, array('INSERT', 'UPDATE', 'DELETE', 'CREATE', 'DROP', 'SET'))) {
$result = true;
}
$intErrorCode = false;
} catch (Exception $objException) {
$result = false;
$intErrorCode = $objPreparedQueryPool->get($strQueryAlias)->get('PDOStatement')->errorCode();
}
$stamp2 = microtime(true);
$duration = (float)($stamp2-$stamp1);
$a->save_timestamp($stamp1, "database");
if (x($a->config,'system') && x($a->config['system'],'db_log')) {
/// @TODO really check $a->config for 'system'? it is very generic and should be there
if (x($a->config, 'system') && x($a->config['system'], 'db_log')) {
if (($duration > $a->config["system"]["db_loglimit"])) {
$duration = round($duration, 3);
$backtrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
@ -152,24 +158,24 @@ class dba {
}
}
if ($intErrorCode)
$this->error = $intErrorCode;
if ($intErrorCode) {
$this->error = $intErrorCode;
}
if (strlen($this->error)) {
logger('dba: ' . $this->error);
}
if ($this->debug) {
$mesg = '';
if ($result === false)
if ($result === false) {
$mesg = 'false';
elseif ($result === true)
} elseif ($result === true) {
$mesg = 'true';
else {
# this needs fixing, but is a bug itself
#$mesg = mysql_num_rows($result) . ' results' . EOL;
} else {
/// @TODO this needs fixing, but is a bug itself
// $mesg = mysql_num_rows($result) . ' results' . EOL;
}
$str = 'SQL = ' . printable($sql) . EOL . 'SQL returned ' . $mesg
@ -179,46 +185,49 @@ class dba {
logger('dba: ' . $str );
}
/**
/*
* If dbfail.out exists, we will write any failed calls directly to it,
* regardless of any logging that may or may nor be in effect.
* These usually indicate SQL syntax errors that need to be resolved.
*/
if (isset($result) AND ($result === false)) {
logger('dba: ' . printable($sql) . ' returned false.' . "\n" . $this->error);
if (file_exists('dbfail.out'))
if (file_exists('dbfail.out')) {
file_put_contents('dbfail.out', datetime_convert() . "\n" . printable($sql) . ' returned false' . "\n" . $this->error . "\n", FILE_APPEND);
}
}
if (isset($result) AND (($result === true) || ($result === false)))
if (isset($result) AND (($result === true) || ($result === false))) {
return $result;
}
if ($onlyquery) {
$this->result = $r; # this will store an PDOStatement Object in result
$this->result->execute(); # execute the Statement, to get its result
$this->result->execute(); # execute the Statement, to get its result
return true;
}
//$a->save_timestamp($stamp1, "database");
if ($this->debug)
if ($this->debug) {
logger('dba: ' . printable(print_r($r, true)));
return($r);
}
return $r;
}
public function qfetch() {
if (false === $this->result) {
return false;
}
if (false === $this->result)
return false;
return $this->result->fetch();
return $this->result->fetch();
}
public function qclose() {
if ($this->result)
return $this->result->closeCursor();
if ($this->result) {
return $this->result->closeCursor();
}
}
public function dbg($dbg) {
@ -227,17 +236,20 @@ class dba {
public function escape($str) {
if ($this->db && $this->connected) {
$strQuoted = $this->db->quote($str);
# this workaround is needed, because quote creates "'" and the beginning and the end
# of the string, which is correct. but until now the queries set this delimiter manually,
# so we must remove them from here and wait until everything uses prepared statements
return mb_substr($strQuoted, 1, mb_strlen($strQuoted) - 2);
$strQuoted = $this->db->quote($str);
/*
* this workaround is needed, because quote creates "'" and the beginning and the end
* of the string, which is correct. but until now the queries set this delimiter manually,
* so we must remove them from here and wait until everything uses prepared statements
*/
return mb_substr($strQuoted, 1, mb_strlen($strQuoted) - 2);
}
}
function __destruct() {
if ($this->db)
DDDBL\disconnect();
public function __destruct() {
if ($this->db) {
DDDBL\disconnect();
}
}
}}
@ -267,14 +279,13 @@ function dbesc($str) {
return(str_replace("'","\\'",$str));
}}
// Function: q($sql,$args);
// Description: execute SQL query with printf style args.
// Example: $r = q("SELECT * FROM `%s` WHERE `uid` = %d",
// 'user', 1);
if (! function_exists('q')) {
/**
* Function: q($sql,$args);
* Description: execute SQL query with printf style args.
* Example: $r = q("SELECT * FROM `%s` WHERE `uid` = %d",
* 'user', 1);
*/
function q($sql) {
global $db;
@ -284,8 +295,9 @@ function q($sql) {
if ($db && $db->connected) {
$stmt = @vsprintf($sql,$args); // Disabled warnings
//logger("dba: q: $stmt", LOGGER_ALL);
if ($stmt === false)
if ($stmt === false) {
logger('dba: vsprintf error: ' . print_r(debug_backtrace(),true), LOGGER_DEBUG);
}
return $db->q($stmt);
}
@ -300,34 +312,33 @@ function q($sql) {
}}
/**
*
* Raw db query, no arguments
*
*/
if (! function_exists('dbq')) {
/**
* Raw db query, no arguments
*/
function dbq($sql) {
global $db;
if ($db && $db->connected)
if ($db && $db->connected) {
$ret = $db->q($sql);
else
} else {
$ret = false;
}
return $ret;
}}
// Caller is responsible for ensuring that any integer arguments to
// dbesc_array are actually integers and not malformed strings containing
// SQL injection vectors. All integer array elements should be specifically
// cast to int to avoid trouble.
/*
* Caller is responsible for ensuring that any integer arguments to
* dbesc_array are actually integers and not malformed strings containing
* SQL injection vectors. All integer array elements should be specifically
* cast to int to avoid trouble.
*/
if (! function_exists('dbesc_array_cb')) {
function dbesc_array_cb(&$item, $key) {
if (is_string($item))
if (is_string($item)) {
$item = dbesc($item);
}
}}
@ -340,5 +351,5 @@ function dbesc_array(&$arr) {
if (! function_exists('dba_timer')) {
function dba_timer() {
return microtime(true);
return microtime(true);
}}

View File

@ -3,8 +3,8 @@
use Friendica\App;
use Friendica\Core\Config;
require_once("boot.php");
require_once("include/text.php");
require_once "boot.php";
require_once "include/text.php";
define('NEW_UPDATE_ROUTINE_VERSION', 1170);
@ -1742,6 +1742,8 @@ function db_definition() {
),
"indexes" => array(
"PRIMARY" => array("id"),
"pid" => array("pid"),
"priority_created" => array("priority", "created"),
)
);
@ -1766,7 +1768,7 @@ function dbstructure_run(&$argv, &$argc) {
unset($db_host, $db_user, $db_pass, $db_data);
}
if ($argc==2) {
if ($argc == 2) {
switch ($argv[1]) {
case "dryrun":
update_structure(true, false);
@ -1776,7 +1778,7 @@ function dbstructure_run(&$argv, &$argc) {
$build = get_config('system','build');
if (!x($build)) {
set_config('system','build',DB_UPDATE_VERSION);
set_config('system', 'build', DB_UPDATE_VERSION);
$build = DB_UPDATE_VERSION;
}
@ -1786,7 +1788,9 @@ function dbstructure_run(&$argv, &$argc) {
// run any left update_nnnn functions in update.php
for ($x = $stored; $x < $current; $x ++) {
$r = run_update_function($x);
if (!$r) break;
if (!$r) {
break;
}
}
set_config('system','build',DB_UPDATE_VERSION);
@ -1813,7 +1817,7 @@ function dbstructure_run(&$argv, &$argc) {
}
if (array_search(__file__,get_included_files())===0) {
if (array_search(__FILE__,get_included_files())===0) {
dbstructure_run($_SERVER["argv"],$_SERVER["argc"]);
killme();
}

View File

@ -3788,8 +3788,10 @@ class Diaspora {
$message = self::construct_like($r[0], $contact);
$message["author_signature"] = self::signature($contact, $message);
// We now store the signature more flexible to dynamically support new fields.
// This will break Diaspora compatibility with Friendica versions prior to 3.5.
/*
* Now store the signature more flexible to dynamically support new fields.
* This will break Diaspora compatibility with Friendica versions prior to 3.5.
*/
q("INSERT INTO `sign` (`iid`,`signed_text`) VALUES (%d,'%s')",
intval($message_id),
dbesc(json_encode($message))
@ -3821,9 +3823,11 @@ class Diaspora {
$message = self::construct_comment($item, $contact);
$message["author_signature"] = self::signature($contact, $message);
// We now store the signature more flexible to dynamically support new fields.
// This will break Diaspora compatibility with Friendica versions prior to 3.5.
q("INSERT INTO `sign` (`iid`,`signed_text`) VALUES (%d,'%s')",
/*
* Now store the signature more flexible to dynamically support new fields.
* This will break Diaspora compatibility with Friendica versions prior to 3.5.
*/
q("INSERT INTO `sign` (`iid`, `signed_text`) VALUES (%d, '%s')",
intval($message_id),
dbesc(json_encode($message))
);

View File

@ -19,18 +19,17 @@ function expire_run(&$argv, &$argc){
}
// make this optional as it could have a performance impact on large sites
if (intval(get_config('system','optimize_items'))) {
if (intval(get_config('system', 'optimize_items'))) {
q("OPTIMIZE TABLE `item`");
}
logger('expire: start');
$r = q("SELECT `uid`,`username`,`expire` FROM `user` WHERE `expire` != 0");
$r = q("SELECT `uid`, `username`, `expire` FROM `user` WHERE `expire` != 0");
if (dbm::is_result($r)) {
foreach ($r as $rr) {
logger('Expire: ' . $rr['username'] . ' interval: ' . $rr['expire'], LOGGER_DEBUG);
item_expire($rr['uid'],$rr['expire']);
item_expire($rr['uid'], $rr['expire']);
}
}

View File

@ -12,15 +12,15 @@
use Friendica\Core\Config;
require_once("include/dba.php");
require_once "include/dba.php";
if(! function_exists('get_browser_language')) {
if (! function_exists('get_browser_language')) {
/**
* @brief get the prefered language from the HTTP_ACCEPT_LANGUAGE header
*/
function get_browser_language() {
if (x($_SERVER,'HTTP_ACCEPT_LANGUAGE')) {
if (x($_SERVER, 'HTTP_ACCEPT_LANGUAGE')) {
// break up string into pieces (languages and q factors)
preg_match_all('/([a-z]{1,8}(-[a-z]{1,8})?)\s*(;\s*q\s*=\s*(1|0\.[0-9]+))?/i',
$_SERVER['HTTP_ACCEPT_LANGUAGE'], $lang_parse);
@ -29,11 +29,11 @@ function get_browser_language() {
if (count($lang_parse[1])) {
// go through the list of prefered languages and add a generic language
// for sub-linguas (e.g. de-ch will add de) if not already in array
for ($i=0; $i<count($lang_parse[1]); $i++) {
for ($i = 0; $i < count($lang_parse[1]); $i++) {
$lang_list[] = strtolower($lang_parse[1][$i]);
if ( strlen($lang_parse[1][$i])>3 ) {
if (strlen($lang_parse[1][$i])>3 ) {
$dashpos = strpos($lang_parse[1][$i], '-');
if (! in_array(substr($lang_parse[1][$i], 0, $dashpos), $lang_list ) ) {
if (!in_array(substr($lang_parse[1][$i], 0, $dashpos), $lang_list ) ) {
$lang_list[] = strtolower(substr($lang_parse[1][$i], 0, $dashpos));
}
}
@ -42,7 +42,7 @@ function get_browser_language() {
}
// check if we have translations for the preferred languages and pick the 1st that has
for ($i=0; $i<count($lang_list); $i++) {
for ($i = 0; $i < count($lang_list); $i++) {
$lang = $lang_list[$i];
if ($lang === 'en' || (file_exists("view/lang/$lang") && is_dir("view/lang/$lang"))) {
$preferred = $lang;
@ -63,10 +63,11 @@ function push_lang($language) {
$a->langsave = $lang;
if($language === $lang)
if ($language === $lang) {
return;
}
if(isset($a->strings) && count($a->strings)) {
if (isset($a->strings) && count($a->strings)) {
$a->stringsave = $a->strings;
}
$a->strings = array();
@ -77,13 +78,15 @@ function push_lang($language) {
function pop_lang() {
global $lang, $a;
if($lang === $a->langsave)
if ($lang === $a->langsave) {
return;
}
if(isset($a->stringsave))
if (isset($a->stringsave)) {
$a->strings = $a->stringsave;
else
} else {
$a->strings = array();
}
$lang = $a->langsave;
}
@ -91,7 +94,7 @@ function pop_lang() {
// l
if(! function_exists('load_translation_table')) {
if (! function_exists('load_translation_table')) {
/**
* load string translation table for alternate language
*
@ -106,15 +109,15 @@ function load_translation_table($lang) {
// load enabled plugins strings
$plugins = q("SELECT name FROM addon WHERE installed=1;");
if ($plugins!==false) {
foreach($plugins as $p) {
foreach ($plugins as $p) {
$name = $p['name'];
if(file_exists("addon/$name/lang/$lang/strings.php")) {
if (file_exists("addon/$name/lang/$lang/strings.php")) {
include("addon/$name/lang/$lang/strings.php");
}
}
}
if(file_exists("view/lang/$lang/strings.php")) {
if (file_exists("view/lang/$lang/strings.php")) {
include("view/lang/$lang/strings.php");
}
@ -122,27 +125,27 @@ function load_translation_table($lang) {
// translate string if translation exists
if(! function_exists('t')) {
if (! function_exists('t')) {
function t($s) {
$a = get_app();
if(x($a->strings,$s)) {
if (x($a->strings,$s)) {
$t = $a->strings[$s];
return is_array($t)?$t[0]:$t;
}
return $s;
}}
if(! function_exists('tt')){
if (! function_exists('tt')){
function tt($singular, $plural, $count){
global $lang;
$a = get_app();
if(x($a->strings,$singular)) {
if (x($a->strings,$singular)) {
$t = $a->strings[$singular];
$f = 'string_plural_select_' . str_replace('-','_',$lang);
if(! function_exists($f))
if (! function_exists($f))
$f = 'string_plural_select_default';
$k = $f($count);
return is_array($t)?$t[$k]:$t;
@ -158,7 +161,7 @@ function tt($singular, $plural, $count){
// provide a fallback which will not collide with
// a function defined in any language file
if(! function_exists('string_plural_select_default')) {
if (! function_exists('string_plural_select_default')) {
function string_plural_select_default($n) {
return ($n != 1);
}}
@ -185,7 +188,7 @@ function get_available_languages() {
$strings_file_paths[] = 'view/lang/en/strings.php';
}
asort($strings_file_paths);
foreach($strings_file_paths as $strings_file_path) {
foreach ($strings_file_paths as $strings_file_path) {
$path_array = explode('/', $strings_file_path);
$langs[$path_array[2]] = $path_array[2];
}

View File

@ -21,7 +21,7 @@ function uninstall_plugin($plugin){
);
@include_once('addon/' . $plugin . '/' . $plugin . '.php');
if(function_exists($plugin . '_uninstall')) {
if (function_exists($plugin . '_uninstall')) {
$func = $plugin . '_uninstall';
$func();
}
@ -37,12 +37,12 @@ if (! function_exists('install_plugin')){
function install_plugin($plugin) {
// silently fail if plugin was removed
if(! file_exists('addon/' . $plugin . '/' . $plugin . '.php'))
if (! file_exists('addon/' . $plugin . '/' . $plugin . '.php'))
return false;
logger("Addons: installing " . $plugin);
$t = @filemtime('addon/' . $plugin . '/' . $plugin . '.php');
@include_once('addon/' . $plugin . '/' . $plugin . '.php');
if(function_exists($plugin . '_install')) {
if (function_exists($plugin . '_install')) {
$func = $plugin . '_install';
$func();
@ -58,7 +58,7 @@ function install_plugin($plugin) {
// once most site tables have been updated.
// This way the system won't fall over dead during the update.
if(file_exists('addon/' . $plugin . '/.hidden')) {
if (file_exists('addon/' . $plugin . '/.hidden')) {
q("UPDATE `addon` SET `hidden` = 1 WHERE `name` = '%s'",
dbesc($plugin)
);
@ -74,10 +74,10 @@ function install_plugin($plugin) {
// reload all updated plugins
if(! function_exists('reload_plugins')) {
if (! function_exists('reload_plugins')) {
function reload_plugins() {
$plugins = get_config('system','addon');
if(strlen($plugins)) {
if (strlen($plugins)) {
$r = q("SELECT * FROM `addon` WHERE `installed` = 1");
if (dbm::is_result($r))
@ -87,25 +87,25 @@ function reload_plugins() {
$parr = explode(',',$plugins);
if(count($parr)) {
foreach($parr as $pl) {
if (count($parr)) {
foreach ($parr as $pl) {
$pl = trim($pl);
$fname = 'addon/' . $pl . '/' . $pl . '.php';
if(file_exists($fname)) {
if (file_exists($fname)) {
$t = @filemtime($fname);
foreach($installed as $i) {
if(($i['name'] == $pl) && ($i['timestamp'] != $t)) {
foreach ($installed as $i) {
if (($i['name'] == $pl) && ($i['timestamp'] != $t)) {
logger('Reloading plugin: ' . $i['name']);
@include_once($fname);
if(function_exists($pl . '_uninstall')) {
if (function_exists($pl . '_uninstall')) {
$func = $pl . '_uninstall';
$func();
}
if(function_exists($pl . '_install')) {
if (function_exists($pl . '_install')) {
$func = $pl . '_install';
$func();
}
@ -143,7 +143,7 @@ function plugin_enabled($plugin) {
* @param int $priority A priority (defaults to 0)
* @return mixed|bool
*/
if(! function_exists('register_hook')) {
if (! function_exists('register_hook')) {
function register_hook($hook,$file,$function,$priority=0) {
$r = q("SELECT * FROM `hook` WHERE `hook` = '%s' AND `file` = '%s' AND `function` = '%s' LIMIT 1",
@ -171,7 +171,7 @@ function register_hook($hook,$file,$function,$priority=0) {
* @param string $function the name of the function that the hook called
* @return array
*/
if(! function_exists('unregister_hook')) {
if (! function_exists('unregister_hook')) {
function unregister_hook($hook,$file,$function) {
$r = q("DELETE FROM `hook` WHERE `hook` = '%s' AND `file` = '%s' AND `function` = '%s'",
@ -183,7 +183,7 @@ function unregister_hook($hook,$file,$function) {
}}
if(! function_exists('load_hooks')) {
if (! function_exists('load_hooks')) {
function load_hooks() {
$a = get_app();
$a->hooks = array();
@ -191,7 +191,7 @@ function load_hooks() {
if (dbm::is_result($r)) {
foreach ($r as $rr) {
if(! array_key_exists($rr['hook'],$a->hooks))
if (! array_key_exists($rr['hook'],$a->hooks))
$a->hooks[$rr['hook']] = array();
$a->hooks[$rr['hook']][] = array($rr['file'],$rr['function']);
}
@ -245,13 +245,13 @@ function call_single_hook($a, $name, $hook, &$data = null) {
//check if an app_menu hook exist for plugin $name.
//Return true if the plugin is an app
if(! function_exists('plugin_is_app')) {
if (! function_exists('plugin_is_app')) {
function plugin_is_app($name) {
$a = get_app();
if(is_array($a->hooks) && (array_key_exists('app_menu',$a->hooks))) {
foreach($a->hooks['app_menu'] as $hook) {
if($hook[0] == 'addon/'.$name.'/'.$name.'.php')
if (is_array($a->hooks) && (array_key_exists('app_menu',$a->hooks))) {
foreach ($a->hooks['app_menu'] as $hook) {
if ($hook[0] == 'addon/'.$name.'/'.$name.'.php')
return true;
}
}
@ -298,7 +298,7 @@ function get_plugin_info($plugin){
if ($r){
$ll = explode("\n", $m[0]);
foreach( $ll as $l ) {
foreach ( $ll as $l ) {
$l = trim($l,"\t\n\r */");
if ($l!=""){
list($k,$v) = array_map("trim", explode(":",$l,2));
@ -353,9 +353,9 @@ function get_theme_info($theme){
'unsupported' => false
);
if(file_exists("view/theme/$theme/experimental"))
if (file_exists("view/theme/$theme/experimental"))
$info['experimental'] = true;
if(file_exists("view/theme/$theme/unsupported"))
if (file_exists("view/theme/$theme/unsupported"))
$info['unsupported'] = true;
if (!is_file("view/theme/$theme/theme.php")) return $info;
@ -369,7 +369,7 @@ function get_theme_info($theme){
if ($r){
$ll = explode("\n", $m[0]);
foreach( $ll as $l ) {
foreach ( $ll as $l ) {
$l = trim($l,"\t\n\r */");
if ($l!=""){
list($k,$v) = array_map("trim", explode(":",$l,2));
@ -413,7 +413,7 @@ function get_theme_info($theme){
*/
function get_theme_screenshot($theme) {
$exts = array('.png','.jpg');
foreach($exts as $ext) {
foreach ($exts as $ext) {
if (file_exists('view/theme/' . $theme . '/screenshot' . $ext)) {
return(App::get_baseurl() . '/view/theme/' . $theme . '/screenshot' . $ext);
}
@ -512,11 +512,11 @@ function service_class_fetch($uid,$property) {
$service_class = $r[0]['service_class'];
}
}
if(! x($service_class))
if (! x($service_class))
return false; // everything is allowed
$arr = get_config('service_class',$service_class);
if(! is_array($arr) || (! count($arr)))
if (! is_array($arr) || (! count($arr)))
return false;
return((array_key_exists($property,$arr)) ? $arr[$property] : false);
@ -525,12 +525,14 @@ function service_class_fetch($uid,$property) {
function upgrade_link($bbcode = false) {
$l = get_config('service_class','upgrade_link');
if(! $l)
if (! $l) {
return '';
if($bbcode)
}
if ($bbcode) {
$t = sprintf('[url=%s]' . t('Click here to upgrade.') . '[/url]', $l);
else
} else {
$t = sprintf('<a href="%s">' . t('Click here to upgrade.') . '</div>', $l);
}
return $t;
}
@ -557,13 +559,15 @@ function upgrade_bool_message($bbcode = false) {
*/
function theme_include($file, $root = '') {
// Make sure $root ends with a slash / if it's not blank
if($root !== '' && $root[strlen($root)-1] !== '/')
if ($root !== '' && $root[strlen($root)-1] !== '/') {
$root = $root . '/';
}
$theme_info = $a->theme_info;
if(is_array($theme_info) AND array_key_exists('extends',$theme_info))
if (is_array($theme_info) AND array_key_exists('extends',$theme_info)) {
$parent = $theme_info['extends'];
else
} else {
$parent = 'NOPATH';
}
$theme = current_theme();
$thname = $theme;
$ext = substr($file,strrpos($file,'.')+1);
@ -572,12 +576,13 @@ function theme_include($file, $root = '') {
"{$root}view/theme/$parent/$ext/$file",
"{$root}view/$ext/$file",
);
foreach($paths as $p) {
foreach ($paths as $p) {
// strpos() is faster than strstr when checking if one string is in another (http://php.net/manual/en/function.strstr.php)
if(strpos($p,'NOPATH') !== false)
if (strpos($p,'NOPATH') !== false) {
continue;
if(file_exists($p))
} elseif (file_exists($p)) {
return $p;
}
}
return '';
}

View File

@ -23,7 +23,7 @@ function poller_run($argv, $argc){
$a = new App(dirname(__DIR__));
}
if(is_null($db)) {
if (is_null($db)) {
@include(".htconfig.php");
require_once("include/dba.php");
$db = new dba($db_host, $db_user, $db_pass, $db_data);
@ -55,7 +55,7 @@ function poller_run($argv, $argc){
return;
}
if(($argc <= 1) OR ($argv[1] != "no_cron")) {
if (($argc <= 1) OR ($argv[1] != "no_cron")) {
poller_run_cron();
}
@ -79,22 +79,28 @@ function poller_run($argv, $argc){
// Check free memory
if ($a->min_memory_reached()) {
logger('Memory limit reached, quitting.', LOGGER_DEBUG);
return;
}
// Count active workers and compare them with a maximum value that depends on the load
if (poller_too_much_workers()) {
logger('Active worker limit reached, quitting.', LOGGER_DEBUG);
return;
}
if (!poller_execute($r[0])) {
logger('Process execution failed, quitting.', LOGGER_DEBUG);
return;
}
// Quit the poller once every hour
if (time() > ($starttime + 3600))
if (time() > ($starttime + 3600)) {
logger('Process lifetime reachted, quitting.', LOGGER_DEBUG);
return;
}
}
logger("Couldn't select a workerqueue entry, quitting.", LOGGER_DEBUG);
}
/**
@ -146,7 +152,6 @@ function poller_execute($queue) {
if (function_exists($funcname)) {
poller_exec_function($queue, $funcname, $argv);
dba::delete('workerqueue', array('id' => $queue["id"]));
} else {
logger("Function ".$funcname." does not exist");
@ -361,8 +366,9 @@ function poller_kill_stale_workers() {
// Kill long running processes
// Check if the priority is in a valid range
if (!in_array($pid["priority"], array(PRIORITY_CRITICAL, PRIORITY_HIGH, PRIORITY_MEDIUM, PRIORITY_LOW, PRIORITY_NEGLIGIBLE)))
if (!in_array($pid["priority"], array(PRIORITY_CRITICAL, PRIORITY_HIGH, PRIORITY_MEDIUM, PRIORITY_LOW, PRIORITY_NEGLIGIBLE))) {
$pid["priority"] = PRIORITY_MEDIUM;
}
// Define the maximum durations
$max_duration_defaults = array(PRIORITY_CRITICAL => 360, PRIORITY_HIGH => 10, PRIORITY_MEDIUM => 60, PRIORITY_LOW => 180, PRIORITY_NEGLIGIBLE => 360);
@ -400,6 +406,8 @@ function poller_too_much_workers() {
$maxqueues = $queues;
$active = poller_active_workers();
// Decrease the number of workers at higher load
$load = current_load();
if ($load) {
@ -412,8 +420,6 @@ function poller_too_much_workers() {
$slope = $maxworkers / pow($maxsysload, $exponent);
$queues = ceil($slope * pow(max(0, $maxsysload - $load), $exponent));
$active = 0;
// Create a list of queue entries grouped by their priority
$listitem = array();
@ -421,17 +427,15 @@ function poller_too_much_workers() {
$processes = dba::p("SELECT COUNT(*) AS `running` FROM `process` WHERE NOT EXISTS (SELECT id FROM `workerqueue` WHERE `workerqueue`.`pid` = `process`.`pid`)");
if ($process = dba::fetch($processes)) {
$listitem[0] = "0:".$process["running"];
$active += $process["running"];
}
dba::close($processes);
// Now adding all processes with workerqueue entries
$entries = dba::p("SELECT COUNT(*) AS `entries`, `priority` FROM `workerqueue` GROUP BY `priority`");
while ($entry = dba::fetch($entries)) {
$processes = dba::p("SELECT COUNT(*) AS `running` FROM `process` LEFT JOIN `workerqueue` ON `workerqueue`.`pid` = `process`.`pid` WHERE `priority` = ?", $entry["priority"]);
$processes = dba::p("SELECT COUNT(*) AS `running` FROM `process` INNER JOIN `workerqueue` ON `workerqueue`.`pid` = `process`.`pid` WHERE `priority` = ?", $entry["priority"]);
if ($process = dba::fetch($processes)) {
$listitem[$entry["priority"]] = $entry["priority"].":".$process["running"]."/".$entry["entries"];
$active += $process["running"];
}
dba::close($processes);
}
@ -465,8 +469,6 @@ function poller_too_much_workers() {
$a = get_app();
$a->proc_run($args);
}
} else {
$active = poller_active_workers();
}
return($active >= $queues);
@ -540,16 +542,16 @@ function poller_passing_slow(&$highest_priority) {
*/
function poller_worker_process() {
dba::transaction();
// Check if we should pass some low priority process
$highest_priority = 0;
if (poller_passing_slow($highest_priority)) {
dba::e('LOCK TABLES `workerqueue` WRITE');
// Are there waiting processes with a higher priority than the currently highest?
$r = q("SELECT * FROM `workerqueue`
WHERE `executed` <= '%s' AND `priority` < %d
ORDER BY `priority`, `created` LIMIT 1 FOR UPDATE",
ORDER BY `priority`, `created` LIMIT 1",
dbesc(NULL_DATE),
intval($highest_priority));
if (dbm::is_result($r)) {
@ -558,18 +560,25 @@ function poller_worker_process() {
// Give slower processes some processing time
$r = q("SELECT * FROM `workerqueue`
WHERE `executed` <= '%s' AND `priority` > %d
ORDER BY `priority`, `created` LIMIT 1 FOR UPDATE",
ORDER BY `priority`, `created` LIMIT 1",
dbesc(NULL_DATE),
intval($highest_priority));
if (dbm::is_result($r)) {
return $r;
}
} else {
dba::e('LOCK TABLES `workerqueue` WRITE');
}
// If there is no result (or we shouldn't pass lower processes) we check without priority limit
if (!dbm::is_result($r)) {
$r = q("SELECT * FROM `workerqueue` WHERE `executed` <= '%s' ORDER BY `priority`, `created` LIMIT 1 FOR UPDATE", dbesc(NULL_DATE));
$r = q("SELECT * FROM `workerqueue` WHERE `executed` <= '%s' ORDER BY `priority`, `created` LIMIT 1", dbesc(NULL_DATE));
}
// We only unlock the tables here, when we got no data
if (!dbm::is_result($r)) {
dba::e('UNLOCK TABLES');
}
return $r;
@ -578,7 +587,7 @@ function poller_worker_process() {
/**
* @brief Assigns a workerqueue entry to the current process
*
* All the checks after the update are only needed with MyISAM.
* When we are sure that the table locks are working correctly, we can remove the checks from here
*
* @param array $queue Workerqueue entry
*
@ -587,10 +596,12 @@ function poller_worker_process() {
function poller_claim_process($queue) {
$mypid = getmypid();
if (!dba::update('workerqueue', array('executed' => datetime_convert(), 'pid' => $mypid),
array('id' => $queue["id"], 'pid' => 0))) {
$success = dba::update('workerqueue', array('executed' => datetime_convert(), 'pid' => $mypid),
array('id' => $queue["id"], 'pid' => 0));
dba::e('UNLOCK TABLES');
if (!$success) {
logger("Couldn't update queue entry ".$queue["id"]." - skip this execution", LOGGER_DEBUG);
dba::commit();
return false;
}
@ -598,18 +609,14 @@ function poller_claim_process($queue) {
$id = q("SELECT `pid`, `executed` FROM `workerqueue` WHERE `id` = %d", intval($queue["id"]));
if (!$id) {
logger("Queue item ".$queue["id"]." vanished - skip this execution", LOGGER_DEBUG);
dba::commit();
return false;
} elseif ((strtotime($id[0]["executed"]) <= 0) OR ($id[0]["pid"] == 0)) {
logger("Entry for queue item ".$queue["id"]." wasn't stored - skip this execution", LOGGER_DEBUG);
dba::commit();
return false;
} elseif ($id[0]["pid"] != $mypid) {
logger("Queue item ".$queue["id"]." is to be executed by process ".$id[0]["pid"]." and not by me (".$mypid.") - skip this execution", LOGGER_DEBUG);
dba::commit();
return false;
}
dba::commit();
return true;
}

View File

@ -68,7 +68,7 @@ function post_update_1192() {
}
// Set the "gcontact-id" in the item table and add a new gcontact entry if needed
foreach($item_arr AS $item) {
foreach ($item_arr AS $item) {
$gcontact_id = get_gcontact_id(array("url" => $item['author-link'], "network" => $item['network'],
"photo" => $item['author-avatar'], "name" => $item['author-name']));
q("UPDATE `item` SET `gcontact-id` = %d WHERE `uid` = %d AND `author-link` = '%s' AND `gcontact-id` = 0",
@ -204,7 +204,7 @@ function post_update_1198() {
}
// Set the "gcontact-id" in the item table and add a new gcontact entry if needed
foreach($item_arr AS $item) {
foreach ($item_arr AS $item) {
$author_id = get_contact($item["author-link"], 0);
$owner_id = get_contact($item["owner-link"], 0);

View File

@ -8,8 +8,8 @@ function gender_selector($current="",$suffix="") {
call_hooks('gender_selector', $select);
$o .= "<select name=\"gender$suffix\" id=\"gender-select$suffix\" size=\"1\" >";
foreach($select as $selection) {
if($selection !== 'NOTRANSLATION') {
foreach ($select as $selection) {
if ($selection !== 'NOTRANSLATION') {
$selected = (($selection == $current) ? ' selected="selected" ' : '');
$o .= "<option value=\"$selection\" $selected >$selection</option>";
}
@ -26,8 +26,8 @@ function sexpref_selector($current="",$suffix="") {
call_hooks('sexpref_selector', $select);
$o .= "<select name=\"sexual$suffix\" id=\"sexual-select$suffix\" size=\"1\" >";
foreach($select as $selection) {
if($selection !== 'NOTRANSLATION') {
foreach ($select as $selection) {
if ($selection !== 'NOTRANSLATION') {
$selected = (($selection == $current) ? ' selected="selected" ' : '');
$o .= "<option value=\"$selection\" $selected >$selection</option>";
}
@ -44,8 +44,8 @@ function marital_selector($current="",$suffix="") {
call_hooks('marital_selector', $select);
$o .= "<select name=\"marital\" id=\"marital-select\" size=\"1\" >";
foreach($select as $selection) {
if($selection !== 'NOTRANSLATION') {
foreach ($select as $selection) {
if ($selection !== 'NOTRANSLATION') {
$selected = (($selection == $current) ? ' selected="selected" ' : '');
$o .= "<option value=\"$selection\" $selected >$selection</option>";
}

View File

@ -30,10 +30,11 @@ function handle_pubsubhubbub($id) {
global $a;
$r = q("SELECT * FROM `push_subscriber` WHERE `id` = %d", intval($id));
if (!$r)
if (!dbm::is_result($r)) {
return;
else
$rr = $r[0];
}
$rr = $r[0];
/// @todo Check server status with poco_check_server()
// Before this can be done we need a way to safely detect the server url.

View File

@ -32,7 +32,8 @@ function queue_run(&$argv, &$argc){
$r = q("SELECT `queue`.*, `contact`.`name`, `contact`.`uid` FROM `queue`
INNER JOIN `contact` ON `queue`.`cid` = `contact`.`id`
WHERE `queue`.`created` < UTC_TIMESTAMP() - INTERVAL 3 DAY");
if ($r) {
if (dbm::is_result($r)) {
foreach ($r as $rr) {
logger('Removing expired queue item for ' . $rr['name'] . ', uid=' . $rr['uid']);
logger('Expired queue data: ' . $rr['content'], LOGGER_DATA);

View File

@ -49,23 +49,24 @@ function was_recently_delayed($cid) {
function add_to_queue($cid,$network,$msg,$batch = false) {
$max_queue = get_config('system','max_contact_queue');
if($max_queue < 1)
if ($max_queue < 1) {
$max_queue = 500;
}
$batch_queue = get_config('system','max_batch_queue');
if($batch_queue < 1)
if ($batch_queue < 1) {
$batch_queue = 1000;
}
$r = q("SELECT COUNT(*) AS `total` FROM `queue` INNER JOIN `contact` ON `queue`.`cid` = `contact`.`id`
WHERE `queue`.`cid` = %d AND `contact`.`self` = 0 ",
intval($cid)
);
if (dbm::is_result($r)) {
if($batch && ($r[0]['total'] > $batch_queue)) {
if ($batch && ($r[0]['total'] > $batch_queue)) {
logger('add_to_queue: too many queued items for batch server ' . $cid . ' - discarding message');
return;
}
elseif((! $batch) && ($r[0]['total'] > $max_queue)) {
} elseif ((! $batch) && ($r[0]['total'] > $max_queue)) {
logger('add_to_queue: too many queued items for contact ' . $cid . ' - discarding message');
return;
}

View File

@ -83,7 +83,7 @@ function removetofu($message)
$start = 0;
while(($pos = strpos($message, '[quote', $start)) > 0) {
while (($pos = strpos($message, '[quote', $start)) > 0) {
$quotes[$pos] = -1;
$start = $pos + 7;
$startquotes++;
@ -92,7 +92,7 @@ function removetofu($message)
$endquotes = 0;
$start = 0;
while(($pos = strpos($message, '[/quote]', $start)) > 0) {
while (($pos = strpos($message, '[/quote]', $start)) > 0) {
$start = $pos + 7;
$endquotes++;
}
@ -104,7 +104,7 @@ function removetofu($message)
$start = 0;
while(($pos = strpos($message, '[/quote]', $start)) > 0) {
while (($pos = strpos($message, '[/quote]', $start)) > 0) {
$quotes[$pos] = 1;
$start = $pos + 7;
}

View File

@ -9,6 +9,7 @@ require_once('include/group.php');
require_once('mod/proxy.php');
require_once('include/xml.php');
require_once('include/cache.php');
require_once('include/enotify.php');
/**
* @brief Outputs the counts and the lists of various notifications

View File

@ -900,12 +900,12 @@ class App {
return;
}
// If the last worker fork was less than 10 seconds before then don't fork another one.
// If the last worker fork was less than 2 seconds before then don't fork another one.
// This should prevent the forking of masses of workers.
$cachekey = 'app:proc_run:started';
$result = Cache::get($cachekey);
if (!is_null($result) AND ( time() - $result) < 10) {
if (!is_null($result) AND ( time() - $result) < 2) {
return;
}

View File

@ -123,13 +123,13 @@ class Probe {
}
if (!is_object($xrd)) {
logger("No xrd object found for ".$host, LOGGER_DEBUG);
return false;
return array();
}
$links = xml::element_to_array($xrd);
if (!isset($links["xrd"]["link"])) {
logger("No xrd data found for ".$host, LOGGER_DEBUG);
return false;
return array();
}
$xrd_data = array();
@ -222,6 +222,10 @@ class Probe {
$lrdd = self::xrd($uri);
$webfinger = null;
if (is_bool($lrdd)) {
return array();
}
if (!$lrdd) {
$parts = @parse_url($uri);
if (!$parts) {
@ -424,6 +428,10 @@ class Probe {
}
$lrdd = self::xrd($host);
if (is_bool($lrdd)) {
return array();
}
$path_parts = explode("/", trim($parts["path"], "/"));
while (!$lrdd AND (sizeof($path_parts) > 1)) {
@ -462,6 +470,10 @@ class Probe {
}
$lrdd = self::xrd($host);
if (is_bool($lrdd)) {
return array();
}
if (!$lrdd) {
logger('No XRD data was found for '.$uri, LOGGER_DEBUG);
return self::mail($uri, $uid);

View File

@ -1,6 +1,6 @@
<?php
define('UPDATE_VERSION' , 1225);
define('UPDATE_VERSION' , 1227);
/**
*

View File

@ -13,6 +13,7 @@ Andreas H.
Andrej Stieben
André Alves
André Lohan
Andy H3
Anthronaut
Arian - Cazare Muncitori
Athalbert

View File

@ -69,7 +69,7 @@ $a->config['system']['no_regfullname'] = true;
//$a->config['system']['block_local_dir'] = false;
// Location of the global directory
$a->config['system']['directory'] = 'http://dir.friendi.ca';
$a->config['system']['directory'] = 'http://dir.friendica.social';
// turn on friendica's log
$a->config['system']['debugging'] = true;

File diff suppressed because it is too large Load Diff

View File

@ -544,7 +544,7 @@ $a->strings["New Message"] = "New Message";
$a->strings["Manage"] = "Manage";
$a->strings["Manage other pages"] = "Manage other pages";
$a->strings["Delegations"] = "Delegations";
$a->strings["Delegate Page Management"] = "Delegate page management";
$a->strings["Delegate Page Management"] = "Delegate Page Management";
$a->strings["Settings"] = "Settings";
$a->strings["Account settings"] = "Account settings";
$a->strings["Profiles"] = "Profiles";
@ -644,10 +644,10 @@ $a->strings["Hobbies/Interests:"] = "Hobbies/Interests:";
$a->strings["Likes:"] = "Likes:";
$a->strings["Dislikes:"] = "Dislikes:";
$a->strings["Contact information and Social Networks:"] = "Contact information and social networks:";
$a->strings["Musical interests:"] = "Musical interests:";
$a->strings["Musical interests:"] = "Music:";
$a->strings["Books, literature:"] = "Books/Literature:";
$a->strings["Television:"] = "Television:";
$a->strings["Film/dance/culture/entertainment:"] = "Arts, film, dance, culture, entertainment:";
$a->strings["Film/dance/culture/entertainment:"] = "Arts, culture, entertainment:";
$a->strings["Love/Romance:"] = "Love/Romance:";
$a->strings["Work/employment:"] = "Work/Employment:";
$a->strings["School/education:"] = "School/Education:";
@ -772,7 +772,7 @@ $a->strings["Group: %s"] = "Group: %s";
$a->strings["This entry was edited"] = "This entry was edited";
$a->strings["%d comment"] = array(
0 => "%d comment",
1 => "%d comments:",
1 => "%d comments -",
);
$a->strings["Private Message"] = "Private message";
$a->strings["I like this (toggle)"] = "I like this (toggle)";
@ -1271,7 +1271,7 @@ $a->strings["Choose a profile nickname. This must begin with a text character. Y
$a->strings["Choose a nickname: "] = "Choose a nickname: ";
$a->strings["Import"] = "Import profile";
$a->strings["Import your profile to this friendica instance"] = "Import an existing Friendica profile to this node.";
$a->strings["Remove My Account"] = "Remove my account";
$a->strings["Remove My Account"] = "Remove My Account";
$a->strings["This will completely remove your account. Once this has been done it is not recoverable."] = "This will completely remove your account. Once this has been done it is not recoverable.";
$a->strings["Please enter your password for verification:"] = "Please enter your password for verification:";
$a->strings["Resubscribing to OStatus contacts"] = "Resubscribing to OStatus contacts";
@ -1405,16 +1405,16 @@ $a->strings["Recipient Name"] = "Recipient name";
$a->strings["Recipient Profile"] = "Recipient profile";
$a->strings["Created"] = "Created";
$a->strings["Last Tried"] = "Last Tried";
$a->strings["This page lists the content of the queue for outgoing postings. These are postings the initial delivery failed for. They will be resend later and eventually deleted if the delivery fails permanently."] = "";
$a->strings["Your DB still runs with MyISAM tables. You should change the engine type to InnoDB. As Friendica will use InnoDB only features in the future, you should change this! See <a href=\"%s\">here</a> for a guide that may be helpful converting the table engines. You may also use the command <tt>php include/dbstructure.php toinnodb</tt> of your Friendica installation for an automatic conversion.<br />"] = "";
$a->strings["The database update failed. Please run \"php include/dbstructure.php update\" from the command line and have a look at the errors that might appear."] = "";
$a->strings["This page lists the content of the queue for outgoing postings. These are postings the initial delivery failed for. They will be resend later and eventually deleted if the delivery fails permanently."] = "This page lists the content of the queue for outgoing postings. These are postings the initial delivery failed for. They will be resend later and eventually deleted if the delivery fails permanently.";
$a->strings["Your DB still runs with MyISAM tables. You should change the engine type to InnoDB. As Friendica will use InnoDB only features in the future, you should change this! See <a href=\"%s\">here</a> for a guide that may be helpful converting the table engines. You may also use the command <tt>php include/dbstructure.php toinnodb</tt> of your Friendica installation for an automatic conversion.<br />"] = "Your DB still runs with MyISAM tables. You should change the engine type to InnoDB. As Friendica will use InnoDB only features in the future, you should change this! See <a href=\"%s\">here</a> for a guide that may be helpful converting the table engines. You may also use the command <tt>php include/dbstructure.php toinnodb</tt> of your Friendica installation for an automatic conversion.<br />";
$a->strings["The database update failed. Please run \"php include/dbstructure.php update\" from the command line and have a look at the errors that might appear."] = "The database update failed. Please run 'php include/dbstructure.php update' from the command line and have a look at the errors that might appear.";
$a->strings["Normal Account"] = "Standard account";
$a->strings["Soapbox Account"] = "Soapbox account";
$a->strings["Community/Celebrity Account"] = "";
$a->strings["Automatic Friend Account"] = "";
$a->strings["Blog Account"] = "";
$a->strings["Private Forum"] = "";
$a->strings["Message queues"] = "";
$a->strings["Community/Celebrity Account"] = "Community/Celebrity account";
$a->strings["Automatic Friend Account"] = "Automatic friend account";
$a->strings["Blog Account"] = "Blog account";
$a->strings["Private Forum"] = "Private forum";
$a->strings["Message queues"] = "Message queues";
$a->strings["Summary"] = "Summary";
$a->strings["Registered users"] = "Registered users";
$a->strings["Pending registrations"] = "Pending registrations";
@ -1445,7 +1445,7 @@ $a->strings["Self-signed certificate, use SSL for local links only (discouraged)
$a->strings["Save Settings"] = "Save settings";
$a->strings["File upload"] = "File upload";
$a->strings["Policies"] = "Policies";
$a->strings["Auto Discovered Contact Directory"] = "";
$a->strings["Auto Discovered Contact Directory"] = "Auto-discovered contact directory";
$a->strings["Performance"] = "Performance";
$a->strings["Worker"] = "Worker";
$a->strings["Relocate - WARNING: advanced function. Could make this server unreachable."] = "Relocate - Warning, advanced function: This could make this server unreachable.";
@ -1476,195 +1476,195 @@ $a->strings["Make this instance multi-user or single-user for the named user"] =
$a->strings["Maximum image size"] = "Maximum image size";
$a->strings["Maximum size in bytes of uploaded images. Default is 0, which means no limits."] = "Maximum size in bytes of uploaded images. Default is 0, which means no limits.";
$a->strings["Maximum image length"] = "Maximum image length";
$a->strings["Maximum length in pixels of the longest side of uploaded images. Default is -1, which means no limits."] = "";
$a->strings["Maximum length in pixels of the longest side of uploaded images. Default is -1, which means no limits."] = "Maximum length in pixels of the longest side of uploaded images. Default is -1, which means no limits.";
$a->strings["JPEG image quality"] = "JPEG image quality";
$a->strings["Uploaded JPEGS will be saved at this quality setting [0-100]. Default is 100, which is full quality."] = "";
$a->strings["Uploaded JPEGS will be saved at this quality setting [0-100]. Default is 100, which is full quality."] = "Uploaded JPEGS will be saved at this quality setting [0-100]. Default is 100, which is the original quality level.";
$a->strings["Register policy"] = "Register policy";
$a->strings["Maximum Daily Registrations"] = "";
$a->strings["If registration is permitted above, this sets the maximum number of new user registrations to accept per day. If register is set to closed, this setting has no effect."] = "";
$a->strings["Register text"] = "";
$a->strings["Will be displayed prominently on the registration page."] = "";
$a->strings["Accounts abandoned after x days"] = "";
$a->strings["Will not waste system resources polling external sites for abandonded accounts. Enter 0 for no time limit."] = "";
$a->strings["Allowed friend domains"] = "";
$a->strings["Comma separated list of domains which are allowed to establish friendships with this site. Wildcards are accepted. Empty to allow any domains"] = "";
$a->strings["Allowed email domains"] = "";
$a->strings["Comma separated list of domains which are allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains"] = "";
$a->strings["Block public"] = "";
$a->strings["Check to block public access to all otherwise public personal pages on this site unless you are currently logged in."] = "";
$a->strings["Force publish"] = "";
$a->strings["Check to force all profiles on this site to be listed in the site directory."] = "";
$a->strings["Maximum Daily Registrations"] = "Maximum daily registrations";
$a->strings["If registration is permitted above, this sets the maximum number of new user registrations to accept per day. If register is set to closed, this setting has no effect."] = "If registration is permitted above, this sets the maximum number of new user registrations to accept per day. If register is set to closed, this setting has no effect.";
$a->strings["Register text"] = "Register text";
$a->strings["Will be displayed prominently on the registration page."] = "Will be displayed prominently on the registration page.";
$a->strings["Accounts abandoned after x days"] = "Accounts abandoned after so many days";
$a->strings["Will not waste system resources polling external sites for abandonded accounts. Enter 0 for no time limit."] = "Will not waste system resources polling external sites for abandoned accounts. Enter 0 for no time limit.";
$a->strings["Allowed friend domains"] = "Allowed friend domains";
$a->strings["Comma separated list of domains which are allowed to establish friendships with this site. Wildcards are accepted. Empty to allow any domains"] = "Comma separated list of domains which are allowed to establish friendships with this site. Wildcards are accepted. Leave empty to allow any domains";
$a->strings["Allowed email domains"] = "Allowed email domains";
$a->strings["Comma separated list of domains which are allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains"] = "Comma separated list of domains which are allowed in email addresses for registrations to this site. Wildcards are accepted. Leave empty to allow any domains";
$a->strings["Block public"] = "Block public";
$a->strings["Check to block public access to all otherwise public personal pages on this site unless you are currently logged in."] = "Block public access to all otherwise public personal pages on this site, except for local users when logged in.";
$a->strings["Force publish"] = "Mandatory directory listing";
$a->strings["Check to force all profiles on this site to be listed in the site directory."] = "Force all profiles on this site to be listed in the site directory.";
$a->strings["Global directory URL"] = "Global directory URL";
$a->strings["URL to the global directory. If this is not set, the global directory is completely unavailable to the application."] = "URL to the global directory: If this is not set, the global directory is completely unavailable to the application.";
$a->strings["Allow threaded items"] = "";
$a->strings["Allow infinite level threading for items on this site."] = "";
$a->strings["Private posts by default for new users"] = "";
$a->strings["Set default post permissions for all new members to the default privacy group rather than public."] = "";
$a->strings["Don't include post content in email notifications"] = "";
$a->strings["Don't include the content of a post/comment/private message/etc. in the email notifications that are sent out from this site, as a privacy measure."] = "";
$a->strings["Disallow public access to addons listed in the apps menu."] = "";
$a->strings["Checking this box will restrict addons listed in the apps menu to members only."] = "";
$a->strings["Don't embed private images in posts"] = "";
$a->strings["Don't replace locally-hosted private photos in posts with an embedded copy of the image. This means that contacts who receive posts containing private photos will have to authenticate and load each image, which may take a while."] = "";
$a->strings["Allow Users to set remote_self"] = "";
$a->strings["With checking this, every user is allowed to mark every contact as a remote_self in the repair contact dialog. Setting this flag on a contact causes mirroring every posting of that contact in the users stream."] = "";
$a->strings["Block multiple registrations"] = "";
$a->strings["Disallow users to register additional accounts for use as pages."] = "";
$a->strings["OpenID support"] = "";
$a->strings["OpenID support for registration and logins."] = "";
$a->strings["Fullname check"] = "";
$a->strings["Force users to register with a space between firstname and lastname in Full name, as an antispam measure"] = "";
$a->strings["Community Page Style"] = "";
$a->strings["Type of community page to show. 'Global community' shows every public posting from an open distributed network that arrived on this server."] = "";
$a->strings["Posts per user on community page"] = "";
$a->strings["The maximum number of posts per user on the community page. (Not valid for 'Global Community')"] = "";
$a->strings["Enable OStatus support"] = "";
$a->strings["Provide built-in OStatus (StatusNet, GNU Social etc.) compatibility. All communications in OStatus are public, so privacy warnings will be occasionally displayed."] = "";
$a->strings["OStatus conversation completion interval"] = "";
$a->strings["How often shall the poller check for new entries in OStatus conversations? This can be a very ressource task."] = "";
$a->strings["Only import OStatus threads from our contacts"] = "";
$a->strings["Normally we import every content from our OStatus contacts. With this option we only store threads that are started by a contact that is known on our system."] = "";
$a->strings["OStatus support can only be enabled if threading is enabled."] = "";
$a->strings["Diaspora support can't be enabled because Friendica was installed into a sub directory."] = "";
$a->strings["Enable Diaspora support"] = "";
$a->strings["Provide built-in Diaspora network compatibility."] = "";
$a->strings["Only allow Friendica contacts"] = "";
$a->strings["All contacts must use Friendica protocols. All other built-in communication protocols disabled."] = "";
$a->strings["Verify SSL"] = "";
$a->strings["If you wish, you can turn on strict certificate checking. This will mean you cannot connect (at all) to self-signed SSL sites."] = "";
$a->strings["Proxy user"] = "";
$a->strings["Allow threaded items"] = "Allow threaded items";
$a->strings["Allow infinite level threading for items on this site."] = "Allow infinite levels of threading for items on this site.";
$a->strings["Private posts by default for new users"] = "Private posts by default for new users";
$a->strings["Set default post permissions for all new members to the default privacy group rather than public."] = "Set default post permissions for all new members to the default privacy group rather than public.";
$a->strings["Don't include post content in email notifications"] = "Don't include post content in email notifications";
$a->strings["Don't include the content of a post/comment/private message/etc. in the email notifications that are sent out from this site, as a privacy measure."] = "Don't include the content of a post/comment/private message in the email notifications sent from this site, as a privacy measure.";
$a->strings["Disallow public access to addons listed in the apps menu."] = "Disallow public access to addons listed in the apps menu.";
$a->strings["Checking this box will restrict addons listed in the apps menu to members only."] = "Checking this box will restrict addons listed in the apps menu to members only.";
$a->strings["Don't embed private images in posts"] = "Don't embed private images in posts";
$a->strings["Don't replace locally-hosted private photos in posts with an embedded copy of the image. This means that contacts who receive posts containing private photos will have to authenticate and load each image, which may take a while."] = "Don't replace locally-hosted private photos in posts with an embedded copy of the image. This means that contacts who receive posts containing private photos will have to authenticate and load each image, which may take a while.";
$a->strings["Allow Users to set remote_self"] = "Allow users to set \"Remote self\"";
$a->strings["With checking this, every user is allowed to mark every contact as a remote_self in the repair contact dialog. Setting this flag on a contact causes mirroring every posting of that contact in the users stream."] = "This allows every user to mark contacts as a \"Remote self\" in the repair contact dialogue. Setting this flag on a contact will mirror every posting of that contact in the users stream.";
$a->strings["Block multiple registrations"] = "Block multiple registrations";
$a->strings["Disallow users to register additional accounts for use as pages."] = "Disallow users to register additional accounts for use as pages.";
$a->strings["OpenID support"] = "OpenID support";
$a->strings["OpenID support for registration and logins."] = "OpenID support for registration and logins.";
$a->strings["Fullname check"] = "Full name check";
$a->strings["Force users to register with a space between firstname and lastname in Full name, as an antispam measure"] = "Force users to register with a space between first name and last name in the full name field; it may reduce spam and abuse registrations.";
$a->strings["Community Page Style"] = "Community page style";
$a->strings["Type of community page to show. 'Global community' shows every public posting from an open distributed network that arrived on this server."] = "Type of community page to show. 'Global community' shows every public posting from an open distributed network that arrived on this server.";
$a->strings["Posts per user on community page"] = "Posts per user on community page";
$a->strings["The maximum number of posts per user on the community page. (Not valid for 'Global Community')"] = "Maximum number of posts per user on the community page (not valid for 'Global Community').";
$a->strings["Enable OStatus support"] = "Enable OStatus support";
$a->strings["Provide built-in OStatus (StatusNet, GNU Social etc.) compatibility. All communications in OStatus are public, so privacy warnings will be occasionally displayed."] = "Provide built-in OStatus (StatusNet, GNU Social, etc.) compatibility. All communications in OStatus are public, so privacy warnings will be occasionally displayed.";
$a->strings["OStatus conversation completion interval"] = "OStatus conversation completion interval";
$a->strings["How often shall the poller check for new entries in OStatus conversations? This can be a very ressource task."] = "How often shall the poller check for new entries in OStatus conversations? This can be rather resources consuming.";
$a->strings["Only import OStatus threads from our contacts"] = "Only import OStatus threads from known contacts";
$a->strings["Normally we import every content from our OStatus contacts. With this option we only store threads that are started by a contact that is known on our system."] = "Normally we import every content from our OStatus contacts. With this option we only store threads that are started by a contact that is known on our system.";
$a->strings["OStatus support can only be enabled if threading is enabled."] = "OStatus support can only be enabled if threading is enabled.";
$a->strings["Diaspora support can't be enabled because Friendica was installed into a sub directory."] = "Diaspora support can't be enabled because Friendica was installed into a sub directory.";
$a->strings["Enable Diaspora support"] = "Enable Diaspora support";
$a->strings["Provide built-in Diaspora network compatibility."] = "Provide built-in Diaspora network compatibility.";
$a->strings["Only allow Friendica contacts"] = "Only allow Friendica contacts";
$a->strings["All contacts must use Friendica protocols. All other built-in communication protocols disabled."] = "All contacts must use Friendica protocols. All other built-in communication protocols will be disabled.";
$a->strings["Verify SSL"] = "Verify SSL";
$a->strings["If you wish, you can turn on strict certificate checking. This will mean you cannot connect (at all) to self-signed SSL sites."] = "If you wish, you can turn on strict certificate checking. This will mean you cannot connect (at all) to self-signed SSL sites.";
$a->strings["Proxy user"] = "Proxy user";
$a->strings["Proxy URL"] = "Proxy URL";
$a->strings["Network timeout"] = "";
$a->strings["Value is in seconds. Set to 0 for unlimited (not recommended)."] = "";
$a->strings["Maximum Load Average"] = "";
$a->strings["Maximum system load before delivery and poll processes are deferred - default 50."] = "";
$a->strings["Maximum Load Average (Frontend)"] = "";
$a->strings["Maximum system load before the frontend quits service - default 50."] = "";
$a->strings["Minimal Memory"] = "";
$a->strings["Minimal free memory in MB for the poller. Needs access to /proc/meminfo - default 0 (deactivated)."] = "";
$a->strings["Maximum table size for optimization"] = "";
$a->strings["Maximum table size (in MB) for the automatic optimization - default 100 MB. Enter -1 to disable it."] = "";
$a->strings["Minimum level of fragmentation"] = "";
$a->strings["Minimum fragmenation level to start the automatic optimization - default value is 30%."] = "";
$a->strings["Periodical check of global contacts"] = "";
$a->strings["If enabled, the global contacts are checked periodically for missing or outdated data and the vitality of the contacts and servers."] = "";
$a->strings["Days between requery"] = "";
$a->strings["Number of days after which a server is requeried for his contacts."] = "";
$a->strings["Discover contacts from other servers"] = "";
$a->strings["Network timeout"] = "Network timeout";
$a->strings["Value is in seconds. Set to 0 for unlimited (not recommended)."] = "Value is in seconds. Set to 0 for unlimited (not recommended).";
$a->strings["Maximum Load Average"] = "Maximum load average";
$a->strings["Maximum system load before delivery and poll processes are deferred - default 50."] = "Maximum system load before delivery and poll processes are deferred (default 50).";
$a->strings["Maximum Load Average (Frontend)"] = "Maximum load average (frontend)";
$a->strings["Maximum system load before the frontend quits service - default 50."] = "Maximum system load before the frontend quits service (default 50).";
$a->strings["Minimal Memory"] = "Minimal memory";
$a->strings["Minimal free memory in MB for the poller. Needs access to /proc/meminfo - default 0 (deactivated)."] = "Minimal free memory in MB for the poller. Needs access to /proc/meminfo (default 0 - deactivated).";
$a->strings["Maximum table size for optimization"] = "Maximum table size for optimization";
$a->strings["Maximum table size (in MB) for the automatic optimization - default 100 MB. Enter -1 to disable it."] = "Maximum table size (in MB) for the automatic optimization (default 100 MB; -1 to deactivate).";
$a->strings["Minimum level of fragmentation"] = "Minimum level of fragmentation";
$a->strings["Minimum fragmenation level to start the automatic optimization - default value is 30%."] = "Minimum fragmentation level to start the automatic optimization (default 30%).";
$a->strings["Periodical check of global contacts"] = "Periodical check of global contacts";
$a->strings["If enabled, the global contacts are checked periodically for missing or outdated data and the vitality of the contacts and servers."] = "This checks global contacts periodically for missing or outdated data and the vitality of the contacts and servers.";
$a->strings["Days between requery"] = "Days between enquiry";
$a->strings["Number of days after which a server is requeried for his contacts."] = "Number of days after which a server is required check contacts.";
$a->strings["Discover contacts from other servers"] = "Discover contacts from other servers";
$a->strings["Periodically query other servers for contacts. You can choose between 'users': the users on the remote system, 'Global Contacts': active contacts that are known on the system. The fallback is meant for Redmatrix servers and older friendica servers, where global contacts weren't available. The fallback increases the server load, so the recommened setting is 'Users, Global Contacts'."] = "Periodically query other servers for contacts. You can choose between 'Users': the users on the remote system, 'Global Contacts': active contacts that are known on the system. The fallback is meant for Redmatrix servers and older Friendica servers, where global contacts weren't available. The fallback increases the server load, so the recommend setting is 'Users, Global Contacts'.";
$a->strings["Timeframe for fetching global contacts"] = "";
$a->strings["When the discovery is activated, this value defines the timeframe for the activity of the global contacts that are fetched from other servers."] = "";
$a->strings["Search the local directory"] = "";
$a->strings["Search the local directory instead of the global directory. When searching locally, every search will be executed on the global directory in the background. This improves the search results when the search is repeated."] = "";
$a->strings["Publish server information"] = "";
$a->strings["If enabled, general server and usage data will be published. The data contains the name and version of the server, number of users with public profiles, number of posts and the activated protocols and connectors. See <a href='http://the-federation.info/'>the-federation.info</a> for details."] = "";
$a->strings["Suppress Tags"] = "";
$a->strings["Suppress showing a list of hashtags at the end of the posting."] = "";
$a->strings["Path to item cache"] = "";
$a->strings["The item caches buffers generated bbcode and external images."] = "";
$a->strings["Cache duration in seconds"] = "";
$a->strings["How long should the cache files be hold? Default value is 86400 seconds (One day). To disable the item cache, set the value to -1."] = "";
$a->strings["Maximum numbers of comments per post"] = "";
$a->strings["How much comments should be shown for each post? Default value is 100."] = "";
$a->strings["Temp path"] = "";
$a->strings["If you have a restricted system where the webserver can't access the system temp path, enter another path here."] = "";
$a->strings["Base path to installation"] = "";
$a->strings["If the system cannot detect the correct path to your installation, enter the correct path here. This setting should only be set if you are using a restricted system and symbolic links to your webroot."] = "";
$a->strings["Disable picture proxy"] = "";
$a->strings["The picture proxy increases performance and privacy. It shouldn't be used on systems with very low bandwith."] = "";
$a->strings["Only search in tags"] = "";
$a->strings["On large systems the text search can slow down the system extremely."] = "";
$a->strings["Timeframe for fetching global contacts"] = "Time-frame for fetching global contacts";
$a->strings["When the discovery is activated, this value defines the timeframe for the activity of the global contacts that are fetched from other servers."] = "If discovery is activated, this value defines the time-frame for the activity of the global contacts that are fetched from other servers.";
$a->strings["Search the local directory"] = "Search the local directory";
$a->strings["Search the local directory instead of the global directory. When searching locally, every search will be executed on the global directory in the background. This improves the search results when the search is repeated."] = "Search the local directory instead of the global directory. When searching locally, every search will be executed on the global directory in the background. This improves the search results when the search is repeated.";
$a->strings["Publish server information"] = "Publish server information";
$a->strings["If enabled, general server and usage data will be published. The data contains the name and version of the server, number of users with public profiles, number of posts and the activated protocols and connectors. See <a href='http://the-federation.info/'>the-federation.info</a> for details."] = "This publishes generic data about the server and its usage. The data contains the name and version of the server, number of users with public profiles, number of posts and the activated protocols and connectors. See <a href='http://the-federation.info/'>the-federation.info</a> for details.";
$a->strings["Suppress Tags"] = "Suppress tags";
$a->strings["Suppress showing a list of hashtags at the end of the posting."] = "Suppress listed hashtags at the end of posts.";
$a->strings["Path to item cache"] = "Path to item cache";
$a->strings["The item caches buffers generated bbcode and external images."] = "The item caches buffers generated bbcode and external images.";
$a->strings["Cache duration in seconds"] = "Cache duration in seconds";
$a->strings["How long should the cache files be hold? Default value is 86400 seconds (One day). To disable the item cache, set the value to -1."] = "How long should cache files be held? (Default 86400 seconds - one day; -1 disables item cache)";
$a->strings["Maximum numbers of comments per post"] = "Maximum numbers of comments per post";
$a->strings["How much comments should be shown for each post? Default value is 100."] = "How many comments should be shown for each post? (Default 100)";
$a->strings["Temp path"] = "Temp path";
$a->strings["If you have a restricted system where the webserver can't access the system temp path, enter another path here."] = "Enter a different tmp path, if your system restricts the webserver's access to the system temp path.";
$a->strings["Base path to installation"] = "Base path to installation";
$a->strings["If the system cannot detect the correct path to your installation, enter the correct path here. This setting should only be set if you are using a restricted system and symbolic links to your webroot."] = "If the system cannot detect the correct path to your installation, enter the correct path here. This setting should only be set if you are using a restricted system and symbolic links to your webroot.";
$a->strings["Disable picture proxy"] = "Disable picture proxy";
$a->strings["The picture proxy increases performance and privacy. It shouldn't be used on systems with very low bandwith."] = "The picture proxy increases performance and privacy. It shouldn't be used on systems with very low bandwith.";
$a->strings["Only search in tags"] = "Only search in tags";
$a->strings["On large systems the text search can slow down the system extremely."] = "On large systems the text search can slow down the system significantly.";
$a->strings["New base url"] = "New base URL";
$a->strings["Change base url for this server. Sends relocate message to all DFRN contacts of all users."] = "Change base URL for this server. Sends relocate message to all DFRN contacts of all users.";
$a->strings["RINO Encryption"] = "";
$a->strings["Encryption layer between nodes."] = "";
$a->strings["Maximum number of parallel workers"] = "";
$a->strings["On shared hosters set this to 2. On larger systems, values of 10 are great. Default value is 4."] = "";
$a->strings["Don't use 'proc_open' with the worker"] = "";
$a->strings["Enable this if your system doesn't allow the use of 'proc_open'. This can happen on shared hosters. If this is enabled you should increase the frequency of poller calls in your crontab."] = "";
$a->strings["Enable fastlane"] = "";
$a->strings["When enabed, the fastlane mechanism starts an additional worker if processes with higher priority are blocked by processes of lower priority."] = "";
$a->strings["Enable frontend worker"] = "";
$a->strings["When enabled the Worker process is triggered when backend access is performed (e.g. messages being delivered). On smaller sites you might want to call yourdomain.tld/worker on a regular basis via an external cron job. You should only enable this option if you cannot utilize cron/scheduled jobs on your server. The worker background process needs to be activated for this."] = "";
$a->strings["Update has been marked successful"] = "";
$a->strings["Database structure update %s was successfully applied."] = "";
$a->strings["Executing of database structure update %s failed with error: %s"] = "";
$a->strings["Executing %s failed with error: %s"] = "";
$a->strings["Update %s was successfully applied."] = "";
$a->strings["Update %s did not return a status. Unknown if it succeeded."] = "";
$a->strings["There was no additional update function %s that needed to be called."] = "";
$a->strings["No failed updates."] = "";
$a->strings["Check database structure"] = "";
$a->strings["Failed Updates"] = "";
$a->strings["This does not include updates prior to 1139, which did not return a status."] = "";
$a->strings["Mark success (if update was manually applied)"] = "";
$a->strings["Attempt to execute this update step automatically"] = "";
$a->strings["\n\t\t\tDear %1\$s,\n\t\t\t\tthe administrator of %2\$s has set up an account for you."] = "";
$a->strings["\n\t\t\tThe login details are as follows:\n\n\t\t\tSite Location:\t%1\$s\n\t\t\tLogin Name:\t\t%2\$s\n\t\t\tPassword:\t\t%3\$s\n\n\t\t\tYou may change your password from your account \"Settings\" page after logging\n\t\t\tin.\n\n\t\t\tPlease take a few moments to review the other account settings on that page.\n\n\t\t\tYou may also wish to add some basic information to your default profile\n\t\t\t(on the \"Profiles\" page) so that other people can easily find you.\n\n\t\t\tWe recommend setting your full name, adding a profile photo,\n\t\t\tadding some profile \"keywords\" (very useful in making new friends) - and\n\t\t\tperhaps what country you live in; if you do not wish to be more specific\n\t\t\tthan that.\n\n\t\t\tWe fully respect your right to privacy, and none of these items are necessary.\n\t\t\tIf you are new and do not know anybody here, they may help\n\t\t\tyou to make some new and interesting friends.\n\n\t\t\tThank you and welcome to %4\$s."] = "";
$a->strings["RINO Encryption"] = "RINO Encryption";
$a->strings["Encryption layer between nodes."] = "Encryption layer between nodes.";
$a->strings["Maximum number of parallel workers"] = "Maximum number of parallel workers";
$a->strings["On shared hosters set this to 2. On larger systems, values of 10 are great. Default value is 4."] = "On shared hosters set this to 2. On larger systems, values of 10 are great. Default value is 4.";
$a->strings["Don't use 'proc_open' with the worker"] = "Don't use 'proc_open' with the worker";
$a->strings["Enable this if your system doesn't allow the use of 'proc_open'. This can happen on shared hosters. If this is enabled you should increase the frequency of poller calls in your crontab."] = "Enable this if your system doesn't allow the use of 'proc_open'. This can happen on shared hosts. If this is enabled you should increase the frequency of poller calls in your crontab.";
$a->strings["Enable fastlane"] = "Enable fast-lane";
$a->strings["When enabed, the fastlane mechanism starts an additional worker if processes with higher priority are blocked by processes of lower priority."] = "The fast-lane mechanism starts an additional worker if processes with higher priority are blocked by processes of lower priority.";
$a->strings["Enable frontend worker"] = "Enable frontend worker";
$a->strings["When enabled the Worker process is triggered when backend access is performed (e.g. messages being delivered). On smaller sites you might want to call yourdomain.tld/worker on a regular basis via an external cron job. You should only enable this option if you cannot utilize cron/scheduled jobs on your server. The worker background process needs to be activated for this."] = "If enabled the Worker process is triggered when backend access is performed (e.g. messages being delivered). On smaller sites you might want to call yourdomain.tld/worker on a regular basis via an external cron job. You should only enable this option if you cannot utilize cron/scheduled jobs on your server. The worker background process needs to be activated for this.";
$a->strings["Update has been marked successful"] = "Update has been marked successful";
$a->strings["Database structure update %s was successfully applied."] = "Database structure update %s was successfully applied.";
$a->strings["Executing of database structure update %s failed with error: %s"] = "Executing of database structure update %s failed with error: %s";
$a->strings["Executing %s failed with error: %s"] = "Executing %s failed with error: %s";
$a->strings["Update %s was successfully applied."] = "Update %s was successfully applied.";
$a->strings["Update %s did not return a status. Unknown if it succeeded."] = "Update %s did not return a status. Unknown if it succeeded.";
$a->strings["There was no additional update function %s that needed to be called."] = "There was no additional update function %s that needed to be called.";
$a->strings["No failed updates."] = "No failed updates.";
$a->strings["Check database structure"] = "Check database structure";
$a->strings["Failed Updates"] = "Failed updates";
$a->strings["This does not include updates prior to 1139, which did not return a status."] = "This does not include updates prior to 1139, which did not return a status.";
$a->strings["Mark success (if update was manually applied)"] = "Mark success (if update was manually applied)";
$a->strings["Attempt to execute this update step automatically"] = "Attempt to execute this update step automatically";
$a->strings["\n\t\t\tDear %1\$s,\n\t\t\t\tthe administrator of %2\$s has set up an account for you."] = "\n\t\t\tDear %1\$s,\n\t\t\t\tThe administrator of %2\$s has set up an account for you.";
$a->strings["\n\t\t\tThe login details are as follows:\n\n\t\t\tSite Location:\t%1\$s\n\t\t\tLogin Name:\t\t%2\$s\n\t\t\tPassword:\t\t%3\$s\n\n\t\t\tYou may change your password from your account \"Settings\" page after logging\n\t\t\tin.\n\n\t\t\tPlease take a few moments to review the other account settings on that page.\n\n\t\t\tYou may also wish to add some basic information to your default profile\n\t\t\t(on the \"Profiles\" page) so that other people can easily find you.\n\n\t\t\tWe recommend setting your full name, adding a profile photo,\n\t\t\tadding some profile \"keywords\" (very useful in making new friends) - and\n\t\t\tperhaps what country you live in; if you do not wish to be more specific\n\t\t\tthan that.\n\n\t\t\tWe fully respect your right to privacy, and none of these items are necessary.\n\t\t\tIf you are new and do not know anybody here, they may help\n\t\t\tyou to make some new and interesting friends.\n\n\t\t\tThank you and welcome to %4\$s."] = "\n\t\t\tThe login details are as follows:\n\n\t\t\tSite Location:\t%1\$s\n\t\t\tLogin Name:\t\t%2\$s\n\t\t\tPassword:\t\t%3\$s\n\n\t\t\tYou may change your password from your account \"Settings\" page after logging\n\t\t\tin.\n\n\t\t\tPlease take a few moments to review the other account settings on that page.\n\n\t\t\tYou may also wish to add some basic information to your default profile\n\t\t\t(on the \"Profiles\" page) so that other people can easily find you.\n\n\t\t\tWe recommend setting your full name, adding a profile photo,\n\t\t\tadding some profile \"keywords\" (very useful in making new friends) - and\n\t\t\tperhaps what country you live in; if you do not wish to be more specific\n\t\t\tthan that.\n\n\t\t\tWe fully respect your right to privacy and none of these items are necessary.\n\t\t\tIf you are new and do not know anybody here, this may help\n\t\t\tyou to make some new and interesting friends.\n\n\t\t\tThank you and welcome to %4\$s.";
$a->strings["%s user blocked/unblocked"] = array(
0 => "",
1 => "",
0 => "%s user blocked/unblocked",
1 => "%s users blocked/unblocked",
);
$a->strings["%s user deleted"] = array(
0 => "",
1 => "",
0 => "%s user deleted",
1 => "%s users deleted",
);
$a->strings["User '%s' deleted"] = "";
$a->strings["User '%s' unblocked"] = "";
$a->strings["User '%s' blocked"] = "";
$a->strings["Register date"] = "";
$a->strings["Last login"] = "";
$a->strings["Last item"] = "";
$a->strings["Account"] = "";
$a->strings["Add User"] = "";
$a->strings["select all"] = "";
$a->strings["User registrations waiting for confirm"] = "";
$a->strings["User waiting for permanent deletion"] = "";
$a->strings["Request date"] = "";
$a->strings["No registrations."] = "";
$a->strings["Note from the user"] = "";
$a->strings["Deny"] = "";
$a->strings["User '%s' deleted"] = "User '%s' deleted";
$a->strings["User '%s' unblocked"] = "User '%s' unblocked";
$a->strings["User '%s' blocked"] = "User '%s' blocked";
$a->strings["Register date"] = "Register date";
$a->strings["Last login"] = "Last login";
$a->strings["Last item"] = "Last item";
$a->strings["Account"] = "Account";
$a->strings["Add User"] = "Add user";
$a->strings["select all"] = "select all";
$a->strings["User registrations waiting for confirm"] = "User registrations awaiting confirmation";
$a->strings["User waiting for permanent deletion"] = "User awaiting permanent deletion";
$a->strings["Request date"] = "Request date";
$a->strings["No registrations."] = "No registrations.";
$a->strings["Note from the user"] = "Note from the user";
$a->strings["Deny"] = "Deny";
$a->strings["Block"] = "Block";
$a->strings["Unblock"] = "Unblock";
$a->strings["Site admin"] = "";
$a->strings["Account expired"] = "";
$a->strings["New User"] = "";
$a->strings["Deleted since"] = "";
$a->strings["Selected users will be deleted!\\n\\nEverything these users had posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "";
$a->strings["The user {0} will be deleted!\\n\\nEverything this user has posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "";
$a->strings["Name of the new user."] = "";
$a->strings["Nickname"] = "";
$a->strings["Nickname of the new user."] = "";
$a->strings["Email address of the new user."] = "";
$a->strings["Plugin %s disabled."] = "";
$a->strings["Plugin %s enabled."] = "";
$a->strings["Disable"] = "";
$a->strings["Enable"] = "";
$a->strings["Toggle"] = "";
$a->strings["Author: "] = "";
$a->strings["Maintainer: "] = "";
$a->strings["Reload active plugins"] = "";
$a->strings["There are currently no plugins available on your node. You can find the official plugin repository at %1\$s and might find other interesting plugins in the open plugin registry at %2\$s"] = "";
$a->strings["No themes found."] = "";
$a->strings["Screenshot"] = "";
$a->strings["Reload active themes"] = "";
$a->strings["No themes found on the system. They should be paced in %1\$s"] = "";
$a->strings["[Experimental]"] = "";
$a->strings["[Unsupported]"] = "";
$a->strings["Log settings updated."] = "";
$a->strings["PHP log currently enabled."] = "";
$a->strings["PHP log currently disabled."] = "";
$a->strings["Clear"] = "";
$a->strings["Enable Debugging"] = "";
$a->strings["Log file"] = "";
$a->strings["Must be writable by web server. Relative to your Friendica top-level directory."] = "";
$a->strings["Log level"] = "";
$a->strings["PHP logging"] = "";
$a->strings["To enable logging of PHP errors and warnings you can add the following to the .htconfig.php file of your installation. The filename set in the 'error_log' line is relative to the friendica top-level directory and must be writeable by the web server. The option '1' for 'log_errors' and 'display_errors' is to enable these options, set to '0' to disable them."] = "";
$a->strings["Off"] = "";
$a->strings["On"] = "";
$a->strings["Lock feature %s"] = "";
$a->strings["Manage Additional Features"] = "";
$a->strings["Site admin"] = "Site admin";
$a->strings["Account expired"] = "Account expired";
$a->strings["New User"] = "New user";
$a->strings["Deleted since"] = "Deleted since";
$a->strings["Selected users will be deleted!\\n\\nEverything these users had posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "Selected users will be deleted!\\n\\nEverything these users has posted on this site will be permanently deleted!\\n\\nAre you sure?";
$a->strings["The user {0} will be deleted!\\n\\nEverything this user has posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "The user {0} will be deleted!\\n\\nEverything this user has posted on this site will be permanently deleted!\\n\\nAre you sure?";
$a->strings["Name of the new user."] = "Name of the new user.";
$a->strings["Nickname"] = "Nickname";
$a->strings["Nickname of the new user."] = "Nickname of the new user.";
$a->strings["Email address of the new user."] = "Email address of the new user.";
$a->strings["Plugin %s disabled."] = "Plugin %s disabled.";
$a->strings["Plugin %s enabled."] = "Plugin %s enabled.";
$a->strings["Disable"] = "Disable";
$a->strings["Enable"] = "Enable";
$a->strings["Toggle"] = "Toggle";
$a->strings["Author: "] = "Author: ";
$a->strings["Maintainer: "] = "Maintainer: ";
$a->strings["Reload active plugins"] = "Reload active plugins";
$a->strings["There are currently no plugins available on your node. You can find the official plugin repository at %1\$s and might find other interesting plugins in the open plugin registry at %2\$s"] = "There are currently no plugins available on your node. You can find the official plugin repository at %1\$s and might find other interesting plugins in the open plugin registry at %2\$s";
$a->strings["No themes found."] = "No themes found.";
$a->strings["Screenshot"] = "Screenshot";
$a->strings["Reload active themes"] = "Reload active themes";
$a->strings["No themes found on the system. They should be paced in %1\$s"] = "No themes found on the system. They should be paced in %1\$s";
$a->strings["[Experimental]"] = "[Experimental]";
$a->strings["[Unsupported]"] = "[Unsupported]";
$a->strings["Log settings updated."] = "Log settings updated.";
$a->strings["PHP log currently enabled."] = "PHP log currently enabled.";
$a->strings["PHP log currently disabled."] = "PHP log currently disabled.";
$a->strings["Clear"] = "Clear";
$a->strings["Enable Debugging"] = "Enable debugging";
$a->strings["Log file"] = "Log file";
$a->strings["Must be writable by web server. Relative to your Friendica top-level directory."] = "Must be writable by web server and relative to your Friendica top-level directory.";
$a->strings["Log level"] = "Log level";
$a->strings["PHP logging"] = "PHP logging";
$a->strings["To enable logging of PHP errors and warnings you can add the following to the .htconfig.php file of your installation. The filename set in the 'error_log' line is relative to the friendica top-level directory and must be writeable by the web server. The option '1' for 'log_errors' and 'display_errors' is to enable these options, set to '0' to disable them."] = "To enable logging of PHP errors and warnings you can add the following to the .htconfig.php file of your installation. The file name set in the 'error_log' line is relative to the Friendica top-level directory and must be writeable by the web server. The option '1' for 'log_errors' and 'display_errors' is to enable these options, set to '0' to disable them.";
$a->strings["Off"] = "Off";
$a->strings["On"] = "On";
$a->strings["Lock feature %s"] = "Lock feature %s";
$a->strings["Manage Additional Features"] = "Manage additional features";
$a->strings["%d contact edited."] = array(
0 => "%d contact edited.",
1 => "%d contacts edited.",
@ -1759,165 +1759,165 @@ $a->strings["Please adjust the image cropping for optimum viewing."] = "Please a
$a->strings["Done Editing"] = "Done editing";
$a->strings["Image uploaded successfully."] = "Image uploaded successfully.";
$a->strings["Profile deleted."] = "Profile deleted.";
$a->strings["Profile-"] = "";
$a->strings["New profile created."] = "";
$a->strings["Profile unavailable to clone."] = "";
$a->strings["Profile Name is required."] = "";
$a->strings["Marital Status"] = "";
$a->strings["Romantic Partner"] = "";
$a->strings["Work/Employment"] = "";
$a->strings["Religion"] = "";
$a->strings["Political Views"] = "";
$a->strings["Gender"] = "";
$a->strings["Sexual Preference"] = "";
$a->strings["XMPP"] = "";
$a->strings["Profile-"] = "Profile-";
$a->strings["New profile created."] = "New profile created.";
$a->strings["Profile unavailable to clone."] = "Profile unavailable to clone.";
$a->strings["Profile Name is required."] = "Profile name is required.";
$a->strings["Marital Status"] = "Marital status";
$a->strings["Romantic Partner"] = "Romantic partner";
$a->strings["Work/Employment"] = "Work/Employment:";
$a->strings["Religion"] = "Religion";
$a->strings["Political Views"] = "Political views";
$a->strings["Gender"] = "Gender";
$a->strings["Sexual Preference"] = "Sexual preference";
$a->strings["XMPP"] = "XMPP";
$a->strings["Homepage"] = "Homepage";
$a->strings["Interests"] = "";
$a->strings["Address"] = "";
$a->strings["Location"] = "";
$a->strings["Profile updated."] = "";
$a->strings[" and "] = "";
$a->strings["public profile"] = "";
$a->strings["%1\$s changed %2\$s to &ldquo;%3\$s&rdquo;"] = "";
$a->strings[" - Visit %1\$s's %2\$s"] = "";
$a->strings["%1\$s has an updated %2\$s, changing %3\$s."] = "";
$a->strings["Hide contacts and friends:"] = "";
$a->strings["Hide your contact/friend list from viewers of this profile?"] = "";
$a->strings["Show more profile fields:"] = "";
$a->strings["Profile Actions"] = "";
$a->strings["Edit Profile Details"] = "";
$a->strings["Change Profile Photo"] = "";
$a->strings["View this profile"] = "";
$a->strings["Create a new profile using these settings"] = "";
$a->strings["Clone this profile"] = "";
$a->strings["Delete this profile"] = "";
$a->strings["Basic information"] = "";
$a->strings["Profile picture"] = "";
$a->strings["Preferences"] = "";
$a->strings["Status information"] = "";
$a->strings["Additional information"] = "";
$a->strings["Relation"] = "";
$a->strings["Your Gender:"] = "";
$a->strings["<span class=\"heart\">&hearts;</span> Marital Status:"] = "";
$a->strings["Example: fishing photography software"] = "";
$a->strings["Profile Name:"] = "";
$a->strings["This is your <strong>public</strong> profile.<br />It <strong>may</strong> be visible to anybody using the internet."] = "";
$a->strings["Your Full Name:"] = "";
$a->strings["Title/Description:"] = "";
$a->strings["Street Address:"] = "";
$a->strings["Locality/City:"] = "";
$a->strings["Region/State:"] = "";
$a->strings["Postal/Zip Code:"] = "";
$a->strings["Country:"] = "";
$a->strings["Who: (if applicable)"] = "";
$a->strings["Examples: cathy123, Cathy Williams, cathy@example.com"] = "";
$a->strings["Since [date]:"] = "";
$a->strings["Tell us about yourself..."] = "";
$a->strings["XMPP (Jabber) address:"] = "";
$a->strings["The XMPP address will be propagated to your contacts so that they can follow you."] = "";
$a->strings["Interests"] = "Interests";
$a->strings["Address"] = "Address";
$a->strings["Location"] = "Location";
$a->strings["Profile updated."] = "Profile updated.";
$a->strings[" and "] = " and ";
$a->strings["public profile"] = "public profile";
$a->strings["%1\$s changed %2\$s to &ldquo;%3\$s&rdquo;"] = "%1\$s changed %2\$s to &ldquo;%3\$s&rdquo;";
$a->strings[" - Visit %1\$s's %2\$s"] = " - Visit %1\$s's %2\$s";
$a->strings["%1\$s has an updated %2\$s, changing %3\$s."] = "%1\$s has an updated %2\$s, changing %3\$s.";
$a->strings["Hide contacts and friends:"] = "Hide contacts and friends:";
$a->strings["Hide your contact/friend list from viewers of this profile?"] = "Hide your contact/friend list from viewers of this profile?";
$a->strings["Show more profile fields:"] = "Show more profile fields:";
$a->strings["Profile Actions"] = "Profile actions";
$a->strings["Edit Profile Details"] = "Edit Profile Details";
$a->strings["Change Profile Photo"] = "Change profile photo";
$a->strings["View this profile"] = "View this profile";
$a->strings["Create a new profile using these settings"] = "Create a new profile using these settings";
$a->strings["Clone this profile"] = "Clone this profile";
$a->strings["Delete this profile"] = "Delete this profile";
$a->strings["Basic information"] = "Basic information";
$a->strings["Profile picture"] = "Profile picture";
$a->strings["Preferences"] = "Preferences";
$a->strings["Status information"] = "Status information";
$a->strings["Additional information"] = "Additional information";
$a->strings["Relation"] = "Relation";
$a->strings["Your Gender:"] = "Gender:";
$a->strings["<span class=\"heart\">&hearts;</span> Marital Status:"] = "<span class=\"heart\">&hearts;</span> Marital status:";
$a->strings["Example: fishing photography software"] = "Example: fishing photography software";
$a->strings["Profile Name:"] = "Profile name:";
$a->strings["This is your <strong>public</strong> profile.<br />It <strong>may</strong> be visible to anybody using the internet."] = "This is your <strong>public</strong> profile.<br />It <strong>may</strong> be visible to anybody using the internet.";
$a->strings["Your Full Name:"] = "My full name:";
$a->strings["Title/Description:"] = "Title/Description:";
$a->strings["Street Address:"] = "Street address:";
$a->strings["Locality/City:"] = "Locality/City:";
$a->strings["Region/State:"] = "Region/State:";
$a->strings["Postal/Zip Code:"] = "Postcode:";
$a->strings["Country:"] = "Country:";
$a->strings["Who: (if applicable)"] = "Who: (if applicable)";
$a->strings["Examples: cathy123, Cathy Williams, cathy@example.com"] = "Examples: cathy123, Cathy Williams, cathy@example.com";
$a->strings["Since [date]:"] = "Since when:";
$a->strings["Tell us about yourself..."] = "About myself:";
$a->strings["XMPP (Jabber) address:"] = "XMPP (Jabber) address:";
$a->strings["The XMPP address will be propagated to your contacts so that they can follow you."] = "The XMPP address will be propagated to your contacts so that they can follow you.";
$a->strings["Homepage URL:"] = "Homepage URL:";
$a->strings["Religious Views:"] = "";
$a->strings["Public Keywords:"] = "";
$a->strings["(Used for suggesting potential friends, can be seen by others)"] = "";
$a->strings["Private Keywords:"] = "";
$a->strings["(Used for searching profiles, never shown to others)"] = "";
$a->strings["Musical interests"] = "";
$a->strings["Books, literature"] = "";
$a->strings["Television"] = "";
$a->strings["Film/dance/culture/entertainment"] = "";
$a->strings["Hobbies/Interests"] = "";
$a->strings["Love/romance"] = "";
$a->strings["Work/employment"] = "";
$a->strings["School/education"] = "";
$a->strings["Contact information and Social Networks"] = "";
$a->strings["Edit/Manage Profiles"] = "";
$a->strings["Display"] = "";
$a->strings["Religious Views:"] = "Religious views:";
$a->strings["Public Keywords:"] = "Public keywords:";
$a->strings["(Used for suggesting potential friends, can be seen by others)"] = "Used for suggesting potential friends, can be seen by others.";
$a->strings["Private Keywords:"] = "Private keywords:";
$a->strings["(Used for searching profiles, never shown to others)"] = "Used for searching profiles, never shown to others.";
$a->strings["Musical interests"] = "Music:";
$a->strings["Books, literature"] = "Books, literature, poetry:";
$a->strings["Television"] = "Television:";
$a->strings["Film/dance/culture/entertainment"] = "Film, dance, culture, entertainment";
$a->strings["Hobbies/Interests"] = "Hobbies/Interests:";
$a->strings["Love/romance"] = "Love/Romance:";
$a->strings["Work/employment"] = "Work/Employment:";
$a->strings["School/education"] = "School/Education:";
$a->strings["Contact information and Social Networks"] = "Contact information and other social networks:";
$a->strings["Edit/Manage Profiles"] = "Edit/Manage Profiles";
$a->strings["Display"] = "Display";
$a->strings["Social Networks"] = "Social networks";
$a->strings["Connected apps"] = "";
$a->strings["Remove account"] = "";
$a->strings["Missing some important data!"] = "";
$a->strings["Failed to connect with email account using the settings provided."] = "";
$a->strings["Email settings updated."] = "";
$a->strings["Features updated"] = "";
$a->strings["Connected apps"] = "Connected apps";
$a->strings["Remove account"] = "Remove account";
$a->strings["Missing some important data!"] = "Missing some important data!";
$a->strings["Failed to connect with email account using the settings provided."] = "Failed to connect with email account using the settings provided.";
$a->strings["Email settings updated."] = "Email settings updated.";
$a->strings["Features updated"] = "Features updated";
$a->strings["Relocate message has been send to your contacts"] = "Relocate message has been send to your contacts";
$a->strings["Empty passwords are not allowed. Password unchanged."] = "";
$a->strings["Wrong password."] = "";
$a->strings["Password changed."] = "";
$a->strings["Password update failed. Please try again."] = "";
$a->strings[" Please use a shorter name."] = "";
$a->strings[" Name too short."] = "";
$a->strings["Wrong Password"] = "";
$a->strings[" Not valid email."] = "";
$a->strings[" Cannot change to that email."] = "";
$a->strings["Private forum has no privacy permissions. Using default privacy group."] = "";
$a->strings["Private forum has no privacy permissions and no default privacy group."] = "";
$a->strings["Settings updated."] = "";
$a->strings["Add application"] = "";
$a->strings["Consumer Key"] = "";
$a->strings["Consumer Secret"] = "";
$a->strings["Redirect"] = "";
$a->strings["Empty passwords are not allowed. Password unchanged."] = "Empty passwords are not allowed. Password unchanged.";
$a->strings["Wrong password."] = "Wrong password.";
$a->strings["Password changed."] = "Password changed.";
$a->strings["Password update failed. Please try again."] = "Password update failed. Please try again.";
$a->strings[" Please use a shorter name."] = " Please use a shorter name.";
$a->strings[" Name too short."] = " Name too short.";
$a->strings["Wrong Password"] = "Wrong password";
$a->strings[" Not valid email."] = "Invalid email.";
$a->strings[" Cannot change to that email."] = " Cannot change to that email.";
$a->strings["Private forum has no privacy permissions. Using default privacy group."] = "Private forum has no privacy permissions. Using default privacy group.";
$a->strings["Private forum has no privacy permissions and no default privacy group."] = "Private forum has no privacy permissions and no default privacy group.";
$a->strings["Settings updated."] = "Settings updated.";
$a->strings["Add application"] = "Add application";
$a->strings["Consumer Key"] = "Consumer key";
$a->strings["Consumer Secret"] = "Consumer secret";
$a->strings["Redirect"] = "Redirect";
$a->strings["Icon url"] = "Icon URL";
$a->strings["You can't edit this application."] = "";
$a->strings["Connected Apps"] = "";
$a->strings["Client key starts with"] = "";
$a->strings["No name"] = "";
$a->strings["Remove authorization"] = "";
$a->strings["No Plugin settings configured"] = "";
$a->strings["Plugin Settings"] = "";
$a->strings["Additional Features"] = "";
$a->strings["General Social Media Settings"] = "";
$a->strings["Disable intelligent shortening"] = "";
$a->strings["You can't edit this application."] = "You cannot edit this application.";
$a->strings["Connected Apps"] = "Connected Apps";
$a->strings["Client key starts with"] = "Client key starts with";
$a->strings["No name"] = "No name";
$a->strings["Remove authorization"] = "Remove authorization";
$a->strings["No Plugin settings configured"] = "No plugin settings configured";
$a->strings["Plugin Settings"] = "Plugin Settings";
$a->strings["Additional Features"] = "Additional Features";
$a->strings["General Social Media Settings"] = "General Social Media Settings";
$a->strings["Disable intelligent shortening"] = "Disable intelligent shortening";
$a->strings["Normally the system tries to find the best link to add to shortened posts. If this option is enabled then every shortened post will always point to the original friendica post."] = "Normally the system tries to find the best link to add to shortened posts. If this option is enabled then every shortened post will always point to the original Friendica post.";
$a->strings["Automatically follow any GNU Social (OStatus) followers/mentioners"] = "";
$a->strings["If you receive a message from an unknown OStatus user, this option decides what to do. If it is checked, a new contact will be created for every unknown user."] = "";
$a->strings["Default group for OStatus contacts"] = "";
$a->strings["Your legacy GNU Social account"] = "";
$a->strings["If you enter your old GNU Social/Statusnet account name here (in the format user@domain.tld), your contacts will be added automatically. The field will be emptied when done."] = "";
$a->strings["Repair OStatus subscriptions"] = "";
$a->strings["Built-in support for %s connectivity is %s"] = "";
$a->strings["enabled"] = "";
$a->strings["disabled"] = "";
$a->strings["GNU Social (OStatus)"] = "";
$a->strings["Email access is disabled on this site."] = "";
$a->strings["Email/Mailbox Setup"] = "";
$a->strings["If you wish to communicate with email contacts using this service (optional), please specify how to connect to your mailbox."] = "";
$a->strings["Last successful email check:"] = "";
$a->strings["IMAP server name:"] = "";
$a->strings["IMAP port:"] = "";
$a->strings["Security:"] = "";
$a->strings["None"] = "";
$a->strings["Email login name:"] = "";
$a->strings["Email password:"] = "";
$a->strings["Reply-to address:"] = "";
$a->strings["Send public posts to all email contacts:"] = "";
$a->strings["Action after import:"] = "";
$a->strings["Automatically follow any GNU Social (OStatus) followers/mentioners"] = "Automatically follow any GNU Social (OStatus) followers/mentioners";
$a->strings["If you receive a message from an unknown OStatus user, this option decides what to do. If it is checked, a new contact will be created for every unknown user."] = "Create a new contact for every unknown OStatus user from whom you receive a message.";
$a->strings["Default group for OStatus contacts"] = "Default group for OStatus contacts";
$a->strings["Your legacy GNU Social account"] = "Your legacy GNU Social account";
$a->strings["If you enter your old GNU Social/Statusnet account name here (in the format user@domain.tld), your contacts will be added automatically. The field will be emptied when done."] = "Entering your old GNU Social/Statusnet account name here (format: user@domain.tld), will automatically added your contacts. The field will be emptied when done.";
$a->strings["Repair OStatus subscriptions"] = "Repair OStatus subscriptions";
$a->strings["Built-in support for %s connectivity is %s"] = "Built-in support for %s connectivity is %s";
$a->strings["enabled"] = "enabled";
$a->strings["disabled"] = "disabled";
$a->strings["GNU Social (OStatus)"] = "GNU Social (OStatus)";
$a->strings["Email access is disabled on this site."] = "Email access is disabled on this site.";
$a->strings["Email/Mailbox Setup"] = "Email/Mailbox setup";
$a->strings["If you wish to communicate with email contacts using this service (optional), please specify how to connect to your mailbox."] = "Specify how to connect to your mailbox, if you wish to communicate with existing email contacts.";
$a->strings["Last successful email check:"] = "Last successful email check:";
$a->strings["IMAP server name:"] = "IMAP server name:";
$a->strings["IMAP port:"] = "IMAP port:";
$a->strings["Security:"] = "Security:";
$a->strings["None"] = "None";
$a->strings["Email login name:"] = "Email login name:";
$a->strings["Email password:"] = "Email password:";
$a->strings["Reply-to address:"] = "Reply-to address:";
$a->strings["Send public posts to all email contacts:"] = "Send public posts to all email contacts:";
$a->strings["Action after import:"] = "Action after import:";
$a->strings["Move to folder"] = "Move to folder";
$a->strings["Move to folder:"] = "Move to folder:";
$a->strings["Display Settings"] = "";
$a->strings["Display Theme:"] = "";
$a->strings["Mobile Theme:"] = "";
$a->strings["Suppress warning of insecure networks"] = "";
$a->strings["Should the system suppress the warning that the current group contains members of networks that can't receive non public postings."] = "";
$a->strings["Display Settings"] = "Display Settings";
$a->strings["Display Theme:"] = "Display theme:";
$a->strings["Mobile Theme:"] = "Mobile theme:";
$a->strings["Suppress warning of insecure networks"] = "Suppress warning of insecure networks";
$a->strings["Should the system suppress the warning that the current group contains members of networks that can't receive non public postings."] = "Suppresses warnings if groups contains members whose networks that cannot receive non-public postings.";
$a->strings["Update browser every xx seconds"] = "Update browser every so many seconds:";
$a->strings["Minimum of 10 seconds. Enter -1 to disable it."] = "";
$a->strings["Number of items to display per page:"] = "";
$a->strings["Maximum of 100 items"] = "";
$a->strings["Number of items to display per page when viewed from mobile device:"] = "";
$a->strings["Don't show emoticons"] = "";
$a->strings["Calendar"] = "";
$a->strings["Beginning of week:"] = "";
$a->strings["Don't show notices"] = "";
$a->strings["Infinite scroll"] = "";
$a->strings["Automatic updates only at the top of the network page"] = "";
$a->strings["Bandwith Saver Mode"] = "";
$a->strings["When enabled, embedded content is not displayed on automatic updates, they only show on page reload."] = "";
$a->strings["Minimum of 10 seconds. Enter -1 to disable it."] = "Minimum 10 seconds; to disable -1.";
$a->strings["Number of items to display per page:"] = "Number of items displayed per page:";
$a->strings["Maximum of 100 items"] = "Maximum of 100 items";
$a->strings["Number of items to display per page when viewed from mobile device:"] = "Number of items displayed per page on mobile devices:";
$a->strings["Don't show emoticons"] = "Don't show emoticons";
$a->strings["Calendar"] = "Calendar";
$a->strings["Beginning of week:"] = "Week begins: ";
$a->strings["Don't show notices"] = "Don't show notices";
$a->strings["Infinite scroll"] = "Infinite scroll";
$a->strings["Automatic updates only at the top of the network page"] = "Automatically updates only top of the network page";
$a->strings["Bandwith Saver Mode"] = "Bandwith saving mode";
$a->strings["When enabled, embedded content is not displayed on automatic updates, they only show on page reload."] = "If enabled, embedded content is not displayed on automatic updates; it is only shown on page reload.";
$a->strings["General Theme Settings"] = "Themes";
$a->strings["Custom Theme Settings"] = "Theme customisation";
$a->strings["Content Settings"] = "Content/Layout";
$a->strings["Theme settings"] = "";
$a->strings["Theme settings"] = "Theme settings";
$a->strings["Account Types"] = "Account types:";
$a->strings["Personal Page Subtypes"] = "Personal Page subtypes";
$a->strings["Community Forum Subtypes"] = "";
$a->strings["Community Forum Subtypes"] = "Community forum subtypes";
$a->strings["Personal Page"] = "Personal Page";
$a->strings["This account is a regular personal profile"] = "Regular personal profile";
$a->strings["Organisation Page"] = "Organisation Page";
@ -1930,14 +1930,14 @@ $a->strings["Normal Account Page"] = "Standard";
$a->strings["This account is a normal personal profile"] = "Regular personal profile";
$a->strings["Soapbox Page"] = "Soapbox";
$a->strings["Automatically approve all connection/friend requests as read-only fans"] = "Automatically approves contact requests as followers";
$a->strings["Public Forum"] = "";
$a->strings["Automatically approve all contact requests"] = "";
$a->strings["Public Forum"] = "Public forum";
$a->strings["Automatically approve all contact requests"] = "Automatically approve all contact requests";
$a->strings["Automatic Friend Page"] = "Popularity";
$a->strings["Automatically approve all connection/friend requests as friends"] = "Automatically approves contact requests as friends";
$a->strings["Private Forum [Experimental]"] = "";
$a->strings["Private forum - approved members only"] = "";
$a->strings["OpenID:"] = "";
$a->strings["(Optional) Allow this OpenID to login to this account."] = "";
$a->strings["Private Forum [Experimental]"] = "Private forum [Experimental]";
$a->strings["Private forum - approved members only"] = "Private forum - approved members only";
$a->strings["OpenID:"] = "OpenID:";
$a->strings["(Optional) Allow this OpenID to login to this account."] = "(Optional) Allow this OpenID to login to this account.";
$a->strings["Publish your default profile in your local site directory?"] = "Publish default profile in local site directory?";
$a->strings["Your profile may be visible in public."] = "Your local directory may be publicly visible";
$a->strings["Publish your default profile in the global social directory?"] = "Publish default profile in global directory?";
@ -1945,46 +1945,46 @@ $a->strings["Hide your contact/friend list from viewers of your default profile?
$a->strings["If enabled, posting public messages to Diaspora and other networks isn't possible."] = "Posting public messages to Diaspora and other networks will not be possible if enabled";
$a->strings["Allow friends to post to your profile page?"] = "Allow friends to post to my wall?";
$a->strings["Allow friends to tag your posts?"] = "Allow friends to tag my post?";
$a->strings["Allow us to suggest you as a potential friend to new members?"] = "";
$a->strings["Allow us to suggest you as a potential friend to new members?"] = "Allow us to suggest you as a potential friend to new members?";
$a->strings["Permit unknown people to send you private mail?"] = "Allow unknown people to send me private messages?";
$a->strings["Profile is <strong>not published</strong>."] = "";
$a->strings["Profile is <strong>not published</strong>."] = "Profile is <strong>not published</strong>.";
$a->strings["Your Identity Address is <strong>'%s'</strong> or '%s'."] = "My identity address: <strong>'%s'</strong> or '%s'";
$a->strings["Automatically expire posts after this many days:"] = "Automatically expire posts after this many days:";
$a->strings["If empty, posts will not expire. Expired posts will be deleted"] = "Posts will not expire if empty; expired posts will be deleted";
$a->strings["Advanced expiration settings"] = "Advanced expiration settings";
$a->strings["Advanced Expiration"] = "Advanced expiration";
$a->strings["Expire posts:"] = "";
$a->strings["Expire personal notes:"] = "";
$a->strings["Expire starred posts:"] = "";
$a->strings["Expire photos:"] = "";
$a->strings["Only expire posts by others:"] = "";
$a->strings["Account Settings"] = "";
$a->strings["Expire posts:"] = "Expire posts:";
$a->strings["Expire personal notes:"] = "Expire personal notes:";
$a->strings["Expire starred posts:"] = "Expire starred posts:";
$a->strings["Expire photos:"] = "Expire photos:";
$a->strings["Only expire posts by others:"] = "Only expire posts by others:";
$a->strings["Account Settings"] = "Account Settings";
$a->strings["Password Settings"] = "Password change";
$a->strings["Leave password fields blank unless changing"] = "";
$a->strings["Leave password fields blank unless changing"] = "Leave password fields blank unless changing";
$a->strings["Current Password:"] = "Current password:";
$a->strings["Your current password to confirm the changes"] = "Current password to confirm change";
$a->strings["Password:"] = "";
$a->strings["Password:"] = "Password:";
$a->strings["Basic Settings"] = "Basic information";
$a->strings["Email Address:"] = "Email address:";
$a->strings["Your Timezone:"] = "Time zone:";
$a->strings["Your Language:"] = "Language:";
$a->strings["Set the language we use to show you friendica interface and to send you emails"] = "";
$a->strings["Set the language we use to show you friendica interface and to send you emails"] = "Set the language of your Friendica interface and emails receiving";
$a->strings["Default Post Location:"] = "Posting location:";
$a->strings["Use Browser Location:"] = "Use browser location:";
$a->strings["Security and Privacy Settings"] = "Security and privacy";
$a->strings["Maximum Friend Requests/Day:"] = "Maximum friend requests per day:";
$a->strings["(to prevent spam abuse)"] = "May prevent spam or abuse registrations";
$a->strings["Default Post Permissions"] = "Default post permissions";
$a->strings["(click to open/close)"] = "";
$a->strings["Default Private Post"] = "";
$a->strings["Default Public Post"] = "";
$a->strings["Default Permissions for New Posts"] = "";
$a->strings["(click to open/close)"] = "(click to open/close)";
$a->strings["Default Private Post"] = "Default private post";
$a->strings["Default Public Post"] = "Default public post";
$a->strings["Default Permissions for New Posts"] = "Default permissions for new posts";
$a->strings["Maximum private messages per day from unknown people:"] = "Maximum private messages per day from unknown people:";
$a->strings["Notification Settings"] = "Notification";
$a->strings["By default post a status message when:"] = "By default post a status message when:";
$a->strings["accepting a friend request"] = "accepting friend requests";
$a->strings["joining a forum/community"] = "joining forums or communities";
$a->strings["making an <em>interesting</em> profile change"] = "";
$a->strings["making an <em>interesting</em> profile change"] = "making an <em>interesting</em> profile change";
$a->strings["Send a notification email when:"] = "Send notification email when:";
$a->strings["You receive an introduction"] = "Receiving an introduction";
$a->strings["Your introductions are confirmed"] = "My introductions are confirmed";
@ -2002,54 +2002,54 @@ $a->strings["Advanced Account/Page Type Settings"] = "Advanced account types";
$a->strings["Change the behaviour of this account for special situations"] = "Change behaviour of this account for special situations";
$a->strings["Relocate"] = "Recent relocation";
$a->strings["If you have moved this profile from another server, and some of your contacts don't receive your updates, try pushing this button."] = "If you have moved this profile from another server and some of your contacts don't receive your updates:";
$a->strings["Resend relocate message to contacts"] = "";
$a->strings["via"] = "";
$a->strings["greenzero"] = "";
$a->strings["purplezero"] = "";
$a->strings["easterbunny"] = "";
$a->strings["darkzero"] = "";
$a->strings["comix"] = "";
$a->strings["slackr"] = "";
$a->strings["Variations"] = "";
$a->strings["Repeat the image"] = "";
$a->strings["Will repeat your image to fill the background."] = "";
$a->strings["Stretch"] = "";
$a->strings["Will stretch to width/height of the image."] = "";
$a->strings["Resize fill and-clip"] = "";
$a->strings["Resize to fill and retain aspect ratio."] = "";
$a->strings["Resize best fit"] = "";
$a->strings["Resize to best fit and retain aspect ratio."] = "";
$a->strings["Default"] = "";
$a->strings["Note: "] = "";
$a->strings["Check image permissions if all users are allowed to visit the image"] = "";
$a->strings["Select scheme"] = "";
$a->strings["Navigation bar background color"] = "Navigation bar background colour";
$a->strings["Navigation bar icon color "] = "Navigation bar icon colour ";
$a->strings["Link color"] = "Link colour";
$a->strings["Set the background color"] = "Set the background colour";
$a->strings["Content background transparency"] = "";
$a->strings["Set the background image"] = "";
$a->strings["Guest"] = "";
$a->strings["Visitor"] = "";
$a->strings["Alignment"] = "";
$a->strings["Left"] = "";
$a->strings["Resend relocate message to contacts"] = "Resend relocation message to contacts";
$a->strings["via"] = "via";
$a->strings["greenzero"] = "greenzero";
$a->strings["purplezero"] = "purplezero";
$a->strings["easterbunny"] = "easterbunny";
$a->strings["darkzero"] = "darkzero";
$a->strings["comix"] = "comix";
$a->strings["slackr"] = "slackr";
$a->strings["Variations"] = "Variations";
$a->strings["Repeat the image"] = "Repeat the image";
$a->strings["Will repeat your image to fill the background."] = "Will repeat your image to fill the background.";
$a->strings["Stretch"] = "Stretch";
$a->strings["Will stretch to width/height of the image."] = "Will stretch to width/height of the image.";
$a->strings["Resize fill and-clip"] = "Resize fill and-clip";
$a->strings["Resize to fill and retain aspect ratio."] = "Resize to fill and retain aspect ratio.";
$a->strings["Resize best fit"] = "Resize to best fit";
$a->strings["Resize to best fit and retain aspect ratio."] = "Resize to best fit and retain aspect ratio.";
$a->strings["Default"] = "Default";
$a->strings["Note: "] = "Note - ";
$a->strings["Check image permissions if all users are allowed to visit the image"] = "Check image permissions if all users are allowed to visit the image";
$a->strings["Select scheme"] = "Select scheme:";
$a->strings["Navigation bar background color"] = "Navigation bar background colour:";
$a->strings["Navigation bar icon color "] = "Navigation bar icon colour:";
$a->strings["Link color"] = "Link colour:";
$a->strings["Set the background color"] = "Background colour:";
$a->strings["Content background transparency"] = "Content background transparency:";
$a->strings["Set the background image"] = "Background image:";
$a->strings["Guest"] = "Guest";
$a->strings["Visitor"] = "Visitor";
$a->strings["Alignment"] = "Alignment";
$a->strings["Left"] = "Left";
$a->strings["Center"] = "Centre";
$a->strings["Color scheme"] = "Colour scheme";
$a->strings["Posts font size"] = "";
$a->strings["Textareas font size"] = "";
$a->strings["Comma separated list of helper forums"] = "";
$a->strings["Set style"] = "";
$a->strings["Community Pages"] = "";
$a->strings["Community Profiles"] = "";
$a->strings["Help or @NewHere ?"] = "";
$a->strings["Connect Services"] = "";
$a->strings["Find Friends"] = "";
$a->strings["Last users"] = "";
$a->strings["Local Directory"] = "";
$a->strings["Quick Start"] = "";
$a->strings["Posts font size"] = "Posts font size";
$a->strings["Textareas font size"] = "Textareas font size";
$a->strings["Comma separated list of helper forums"] = "Comma separated list of helper forums";
$a->strings["Set style"] = "Set style";
$a->strings["Community Pages"] = "Community pages";
$a->strings["Community Profiles"] = "Community profiles";
$a->strings["Help or @NewHere ?"] = "Help or @NewHere ?";
$a->strings["Connect Services"] = "Connect services";
$a->strings["Find Friends"] = "Find friends";
$a->strings["Last users"] = "Last users";
$a->strings["Local Directory"] = "Local directory";
$a->strings["Quick Start"] = "Quick start";
$a->strings["Delete this item?"] = "Delete this item?";
$a->strings["show fewer"] = "Show fewer.";
$a->strings["toggle mobile"] = "";
$a->strings["toggle mobile"] = "Toggle mobile";
$a->strings["Update %s failed. See error logs."] = "Update %s failed. See error logs.";
$a->strings["Create a New Account"] = "Create a new account";
$a->strings["Password: "] = "Password: ";
@ -2058,5 +2058,5 @@ $a->strings["Or login using OpenID: "] = "Or login with OpenID: ";
$a->strings["Forgot your password?"] = "Forgot your password?";
$a->strings["Website Terms of Service"] = "Website Terms of Service";
$a->strings["terms of service"] = "Terms of service";
$a->strings["Website Privacy Policy"] = "";
$a->strings["Website Privacy Policy"] = "Website Privacy Policy";
$a->strings["privacy policy"] = "Privacy policy";

8943
view/lang/en-us/messages.po Normal file

File diff suppressed because it is too large Load Diff

2062
view/lang/en-us/strings.php Normal file

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

View File

@ -3,7 +3,7 @@
/* ********************************************************************
* The following configuration has to be within the .htconfig file
* and will not be overruled by decisions made in the admin panel.
*
*
* See below for variables that may be overruled by the admin panel.
* ********************************************************************/
@ -43,7 +43,7 @@ $a->config['system']['allowed_link_protocols'] = array('ftp', 'ftps', 'mailto',
* Changes made below will only have an effect if the database does
* not contain any configuration for the friendica system.
* *********************************************************************/
// Choose a legal default timezone. If you are unsure, use "America/Los_Angeles".
// It can be changed later and only applies to timestamps for anonymous viewers.
@ -98,7 +98,7 @@ $a->config['system']['no_regfullname'] = true;
//$a->config['system']['block_local_dir'] = false;
// Location of the global directory
$a->config['system']['directory'] = 'http://dir.friendi.ca';
$a->config['system']['directory'] = 'http://dir.friendica.social';
// Authentication cookie lifetime, in days
$a->config['system']['auth_cookie_lifetime'] = 7;

View File

@ -37,19 +37,11 @@ function insertFormatting(BBcode, id) {
if (document.selection) {
textarea.focus();
selected = document.selection.createRange();
if (BBcode == "url") {
selected.text = "["+BBcode+"]" + "http://" + selected.text + "[/"+BBcode+"]";
} else {
selected.text = "["+BBcode+"]" + selected.text + "[/"+BBcode+"]";
}
selected.text = "["+BBcode+"]" + selected.text + "[/"+BBcode+"]";
} else if (textarea.selectionStart || textarea.selectionStart == "0") {
var start = textarea.selectionStart;
var end = textarea.selectionEnd;
if (BBcode == "url") {
textarea.value = textarea.value.substring(0, start) + "["+BBcode+"]" + "http://" + textarea.value.substring(start, end) + "[/"+BBcode+"]" + textarea.value.substring(end, textarea.value.length);
} else {
textarea.value = textarea.value.substring(0, start) + "["+BBcode+"]" + textarea.value.substring(start, end) + "[/"+BBcode+"]" + textarea.value.substring(end, textarea.value.length);
}
textarea.value = textarea.value.substring(0, start) + "["+BBcode+"]" + textarea.value.substring(start, end) + "[/"+BBcode+"]" + textarea.value.substring(end, textarea.value.length);
}
return true;

View File

@ -3,7 +3,7 @@
*/
function insertFormatting(BBcode,id) {
function insertFormatting(BBcode, id) {
var tmpStr = $("#comment-edit-text-" + id).val();
if (tmpStr == '') {
$("#comment-edit-text-" + id).addClass("comment-edit-text-full");
@ -11,23 +11,15 @@ function insertFormatting(BBcode,id) {
openMenu("comment-edit-submit-wrapper-" + id);
}
textarea = document.getElementById("comment-edit-text-" +id);
textarea = document.getElementById("comment-edit-text-" + id);
if (document.selection) {
textarea.focus();
selected = document.selection.createRange();
if (BBcode == "url") {
selected.text = "["+BBcode+"]" + "http://" + selected.text + "[/"+BBcode+"]";
} else {
selected.text = "["+BBcode+"]" + selected.text + "[/"+BBcode+"]";
}
selected.text = "[" + BBcode + "]" + selected.text + "[/" + BBcode + "]";
} else if (textarea.selectionStart || textarea.selectionStart == "0") {
var start = textarea.selectionStart;
var end = textarea.selectionEnd;
if (BBcode == "url") {
textarea.value = textarea.value.substring(0, start) + "["+BBcode+"]" + "http://" + textarea.value.substring(start, end) + "[/"+BBcode+"]" + textarea.value.substring(end, textarea.value.length);
} else {
textarea.value = textarea.value.substring(0, start) + "["+BBcode+"]" + textarea.value.substring(start, end) + "[/"+BBcode+"]" + textarea.value.substring(end, textarea.value.length);
}
textarea.value = textarea.value.substring(0, start) + "[" + BBcode + "]" + textarea.value.substring(start, end) + "[/" + BBcode + "]" + textarea.value.substring(end, textarea.value.length);
}
$(textarea).trigger('change');
@ -62,7 +54,7 @@ function commentExpand(id) {
return true;
}
function commentClose(obj,id) {
function commentClose(obj, id) {
if (obj.value == '') {
$("#comment-edit-text-" + id).removeClass("comment-edit-text-full");
$("#comment-edit-text-" + id).addClass("comment-edit-text-empty");
@ -74,10 +66,9 @@ function commentClose(obj,id) {
}
function showHideCommentBox(id) {
if( $('#comment-edit-form-' + id).is(':visible')) {
if ($('#comment-edit-form-' + id).is(':visible')) {
$('#comment-edit-form-' + id).hide();
}
else {
} else {
$('#comment-edit-form-' + id).show();
}
}
@ -86,8 +77,8 @@ function commentOpenUI(obj, id) {
$("#comment-edit-text-" + id).addClass("comment-edit-text-full").removeClass("comment-edit-text-empty");
// Choose an arbitrary tab index that's greater than what we're using in jot (3 of them)
// The submit button gets tabindex + 1
$("#comment-edit-text-" + id).attr('tabindex','9');
$("#comment-edit-submit-" + id).attr('tabindex','10');
$("#comment-edit-text-" + id).attr('tabindex', '9');
$("#comment-edit-submit-" + id).attr('tabindex', '10');
$("#comment-edit-submit-wrapper-" + id).show();
// initialize autosize for this comment
autosize($("#comment-edit-text-" + id + ".text-autosize"));
@ -120,7 +111,7 @@ function jotTextCloseUI(obj) {
}
}
function commentOpen(obj,id) {
function commentOpen(obj, id) {
if (obj.value == '') {
$("#comment-edit-text-" + id).addClass("comment-edit-text-full");
$("#comment-edit-text-" + id).removeClass("comment-edit-text-empty");
@ -131,7 +122,7 @@ function commentOpen(obj,id) {
return false;
}
function commentInsert(obj,id) {
function commentInsert(obj, id) {
var tmpStr = $("#comment-edit-text-" + id).val();
if (tmpStr == '') {
$("#comment-edit-text-" + id).addClass("comment-edit-text-full");
@ -139,14 +130,14 @@ function commentInsert(obj,id) {
openMenu("comment-edit-submit-wrapper-" + id);
}
var ins = $(obj).html();
ins = ins.replace('&lt;','<');
ins = ins.replace('&gt;','>');
ins = ins.replace('&amp;','&');
ins = ins.replace('&quot;','"');
ins = ins.replace('&lt;', '<');
ins = ins.replace('&gt;', '>');
ins = ins.replace('&amp;', '&');
ins = ins.replace('&quot;', '"');
$("#comment-edit-text-" + id).val(tmpStr + ins);
}
function qCommentInsert(obj,id) {
function qCommentInsert(obj, id) {
var tmpStr = $("#comment-edit-text-" + id).val();
if (tmpStr == '') {
$("#comment-edit-text-" + id).addClass("comment-edit-text-full");
@ -154,15 +145,17 @@ function qCommentInsert(obj,id) {
openMenu("comment-edit-submit-wrapper-" + id);
}
var ins = $(obj).val();
ins = ins.replace('&lt;','<');
ins = ins.replace('&gt;','>');
ins = ins.replace('&amp;','&');
ins = ins.replace('&quot;','"');
ins = ins.replace('&lt;', '<');
ins = ins.replace('&gt;', '>');
ins = ins.replace('&amp;', '&');
ins = ins.replace('&quot;', '"');
$("#comment-edit-text-" + id).val(tmpStr + ins);
$(obj).val('');
}
function confirmDelete() { return confirm(aStr.delitem); }
function confirmDelete() {
return confirm(aStr.delitem);
}
/**
* Hide and removes an item element from the DOM after the deletion url is

View File

@ -423,19 +423,11 @@ function insertFormatting(BBcode, id) {
if (document.selection) {
textarea.focus();
selected = document.selection.createRange();
if (BBcode == "url") {
selected.text = "["+BBcode+"=http://]" + selected.text + "[/"+BBcode+"]";
} else {
selected.text = "["+BBcode+"]" + selected.text + "[/"+BBcode+"]";
}
selected.text = "["+BBcode+"]" + selected.text + "[/"+BBcode+"]";
} else if (textarea.selectionStart || textarea.selectionStart == "0") {
var start = textarea.selectionStart;
var end = textarea.selectionEnd;
if (BBcode == "url") {
textarea.value = textarea.value.substring(0, start) + "["+BBcode+"=http://]" + textarea.value.substring(start, end) + "[/"+BBcode+"]" + textarea.value.substring(end, textarea.value.length);
} else {
textarea.value = textarea.value.substring(0, start) + "["+BBcode+"]" + textarea.value.substring(start, end) + "[/"+BBcode+"]" + textarea.value.substring(end, textarea.value.length);
}
textarea.value = textarea.value.substring(0, start) + "["+BBcode+"]" + textarea.value.substring(start, end) + "[/"+BBcode+"]" + textarea.value.substring(end, textarea.value.length);
}
return true;

View File

@ -603,19 +603,11 @@ function insertFormatting(BBcode, id) {
if (document.selection) {
textarea.focus();
selected = document.selection.createRange();
if (BBcode == "url") {
selected.text = "["+BBcode+"=http://]" + selected.text + "[/"+BBcode+"]";
} else {
selected.text = "["+BBcode+"]" + selected.text + "[/"+BBcode+"]";
}
selected.text = "["+BBcode+"]" + selected.text + "[/"+BBcode+"]";
} else if (textarea.selectionStart || textarea.selectionStart == "0") {
var start = textarea.selectionStart;
var end = textarea.selectionEnd;
if (BBcode == "url") {
textarea.value = textarea.value.substring(0, start) + "["+BBcode+"=http://]" + textarea.value.substring(start, end) + "[/"+BBcode+"]" + textarea.value.substring(end, textarea.value.length);
} else {
textarea.value = textarea.value.substring(0, start) + "["+BBcode+"]" + textarea.value.substring(start, end) + "[/"+BBcode+"]" + textarea.value.substring(end, textarea.value.length);
}
textarea.value = textarea.value.substring(0, start) + "["+BBcode+"]" + textarea.value.substring(start, end) + "[/"+BBcode+"]" + textarea.value.substring(end, textarea.value.length);
}
return true;

View File

@ -71,19 +71,11 @@ function insertFormatting(BBcode, id) {
if (document.selection) {
textarea.focus();
selected = document.selection.createRange();
if (BBcode == "url") {
selected.text = "["+BBcode+"]" + "http://" + selected.text + "[/"+BBcode+"]";
} else {
selected.text = "["+BBcode+"]" + selected.text + "[/"+BBcode+"]";
}
selected.text = "["+BBcode+"]" + selected.text + "[/"+BBcode+"]";
} else if (textarea.selectionStart || textarea.selectionStart == "0") {
var start = textarea.selectionStart;
var end = textarea.selectionEnd;
if (BBcode == "url") {
textarea.value = textarea.value.substring(0, start) + "["+BBcode+"]" + "http://" + textarea.value.substring(start, end) + "[/"+BBcode+"]" + textarea.value.substring(end, textarea.value.length);
} else {
textarea.value = textarea.value.substring(0, start) + "["+BBcode+"]" + textarea.value.substring(start, end) + "[/"+BBcode+"]" + textarea.value.substring(end, textarea.value.length);
}
textarea.value = textarea.value.substring(0, start) + "["+BBcode+"]" + textarea.value.substring(start, end) + "[/"+BBcode+"]" + textarea.value.substring(end, textarea.value.length);
}
return true;

View File

@ -20,23 +20,13 @@ function insertFormatting(BBcode, id) {
if (document.selection) {
textarea.focus();
selected = document.selection.createRange();
if (BBcode == "url") {
selected.text = "["+BBcode+"]" + "http://" + selected.text + "[/"+BBcode+"]";
} else {
selected.text = "["+BBcode+"]" + selected.text + "[/"+BBcode+"]";
}
selected.text = "["+BBcode+"]" + selected.text + "[/"+BBcode+"]";
} else if (textarea.selectionStart || textarea.selectionStart == "0") {
var start = textarea.selectionStart;
var end = textarea.selectionEnd;
if (BBcode == "url") {
textarea.value = textarea.value.substring(0, start) + "["+BBcode+"]"
+ "http://" + textarea.value.substring(start, end)
+ "[/"+BBcode+"]" + textarea.value.substring(end, textarea.value.length);
} else {
textarea.value = textarea.value.substring(0, start)
+ "["+BBcode+"]" + textarea.value.substring(start, end) + "[/"+BBcode+"]"
+ textarea.value.substring(end, textarea.value.length);
}
textarea.value = textarea.value.substring(0, start)
+ "["+BBcode+"]" + textarea.value.substring(start, end) + "[/"+BBcode+"]"
+ textarea.value.substring(end, textarea.value.length);
}
return true;

View File

@ -33,19 +33,11 @@ function insertFormatting(BBcode, id) {
if (document.selection) {
textarea.focus();
selected = document.selection.createRange();
if (BBcode == "url") {
selected.text = "["+BBcode+"]" + "http://" + selected.text + "[/"+BBcode+"]";
} else {
selected.text = "["+BBcode+"]" + selected.text + "[/"+BBcode+"]";
}
selected.text = "["+BBcode+"]" + selected.text + "[/"+BBcode+"]";
} else if (textarea.selectionStart || textarea.selectionStart == "0") {
var start = textarea.selectionStart;
var end = textarea.selectionEnd;
if (BBcode == "url") {
textarea.value = textarea.value.substring(0, start) + "["+BBcode+"]" + "http://" + textarea.value.substring(start, end) + "[/"+BBcode+"]" + textarea.value.substring(end, textarea.value.length);
} else {
textarea.value = textarea.value.substring(0, start) + "["+BBcode+"]" + textarea.value.substring(start, end) + "[/"+BBcode+"]" + textarea.value.substring(end, textarea.value.length);
}
textarea.value = textarea.value.substring(0, start) + "["+BBcode+"]" + textarea.value.substring(start, end) + "[/"+BBcode+"]" + textarea.value.substring(end, textarea.value.length);
}
return true;

View File

@ -50,19 +50,11 @@ function insertFormatting(BBcode, id) {
if (document.selection) {
textarea.focus();
selected = document.selection.createRange();
if (BBcode == "url") {
selected.text = "["+BBcode+"]" + "http://" + selected.text + "[/"+BBcode+"]";
} else {
selected.text = "["+BBcode+"]" + selected.text + "[/"+BBcode+"]";
}
selected.text = "["+BBcode+"]" + selected.text + "[/"+BBcode+"]";
} else if (textarea.selectionStart || textarea.selectionStart == "0") {
var start = textarea.selectionStart;
var end = textarea.selectionEnd;
if (BBcode == "url") {
textarea.value = textarea.value.substring(0, start) + "["+BBcode+"]" + "http://" + textarea.value.substring(start, end) + "[/"+BBcode+"]" + textarea.value.substring(end, textarea.value.length);
} else {
textarea.value = textarea.value.substring(0, start) + "["+BBcode+"]" + textarea.value.substring(start, end) + "[/"+BBcode+"]" + textarea.value.substring(end, textarea.value.length);
}
textarea.value = textarea.value.substring(0, start) + "["+BBcode+"]" + textarea.value.substring(start, end) + "[/"+BBcode+"]" + textarea.value.substring(end, textarea.value.length);
}
return true;