Merge pull request #6377 from annando/ostatus-notice
authorHypolite Petovan <hypolite@mrpetovan.com>
Fri, 4 Jan 2019 16:28:31 +0000 (11:28 -0500)
committerGitHub <noreply@github.com>
Fri, 4 Jan 2019 16:28:31 +0000 (11:28 -0500)
Prevent a notice ... again

31 files changed:
VERSION
boot.php
config/addon-sample.config.php
config/defaults.config.php
config/local-sample.config.php
config/settings.config.php
mod/admin.php
mod/lostpass.php
mod/message.php
mod/ping.php
src/Model/Contact.php
src/Model/User.php
src/Protocol/DFRN.php
src/Protocol/Diaspora.php
view/templates/admin/summary.tpl
view/templates/auto_request.tpl
view/templates/contact_edit.tpl
view/templates/dfrn_request.tpl
view/templates/email_notify_text.tpl
view/templates/photo_view.tpl
view/templates/register.tpl
view/theme/frio/templates/admin/summary.tpl
view/theme/frio/templates/auto_request.tpl
view/theme/frio/templates/contact_edit.tpl
view/theme/frio/templates/dfrn_request.tpl
view/theme/frio/templates/mail_list.tpl
view/theme/frio/templates/profile_entry.tpl
view/theme/frio/templates/register.tpl
view/theme/quattro/templates/photo_view.tpl
view/theme/vier/templates/contact_edit.tpl
view/theme/vier/templates/photo_view.tpl

diff --git a/VERSION b/VERSION
index d04d731..eb42f1a 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-2018.12-rc
+2019.01-rc
index eb8176b..be217ea 100644 (file)
--- a/boot.php
+++ b/boot.php
@@ -164,21 +164,21 @@ define('MAX_LIKERS',    75);
  * Email notification options
  * @{
  */
-define('NOTIFY_INTRO',    0x0001);
-define('NOTIFY_CONFIRM',  0x0002);
-define('NOTIFY_WALL',     0x0004);
-define('NOTIFY_COMMENT',  0x0008);
-define('NOTIFY_MAIL',     0x0010);
-define('NOTIFY_SUGGEST',  0x0020);
-define('NOTIFY_PROFILE',  0x0040);
-define('NOTIFY_TAGSELF',  0x0080);
-define('NOTIFY_TAGSHARE', 0x0100);
-define('NOTIFY_POKE',     0x0200);
-define('NOTIFY_SHARE',    0x0400);
-
-define('SYSTEM_EMAIL',    0x4000);
-
-define('NOTIFY_SYSTEM',   0x8000);
+define('NOTIFY_INTRO',        1);
+define('NOTIFY_CONFIRM',      2);
+define('NOTIFY_WALL',         4);
+define('NOTIFY_COMMENT',      8);
+define('NOTIFY_MAIL',        16);
+define('NOTIFY_SUGGEST',     32);
+define('NOTIFY_PROFILE',     64);
+define('NOTIFY_TAGSELF',    128);
+define('NOTIFY_TAGSHARE',   256);
+define('NOTIFY_POKE',       512);
+define('NOTIFY_SHARE',     1024);
+
+define('SYSTEM_EMAIL',    16384);
+
+define('NOTIFY_SYSTEM',   32768);
 /* @}*/
 
 
index 5ebbf11..5159370 100644 (file)
@@ -1,12 +1,12 @@
-<?php\r
-\r
-// Addon configuration\r
-\r
-// Copy this configuration file to addon.config.php and edit it if you want to configure addons, see below example for the twitter addon\r
-\r
-return [\r
-       'twitter' => [\r
-               'consumerkey' => '1234567890',\r
-               'consumersecret' => 'ABCDEFGHIJKLMONPQRSTUVWXYZ',\r
-       ],\r
-];\r
+<?php
+
+// Addon configuration
+
+// Copy this configuration file to addon.config.php and edit it if you want to configure addons, see below example for the twitter addon
+
+return [
+       'twitter' => [
+               'consumerkey' => '1234567890',
+               'consumersecret' => 'ABCDEFGHIJKLMONPQRSTUVWXYZ',
+       ],
+];
index ec855ab..90596a8 100644 (file)
-<?php\r
-\r
-// CONFIG.PHP\r
-\r
-/* This file declares the default values for the base config of Friendica.\r
- *\r
- * These configuration values aren't accessible from the admin settings page and custom values must be set in config/local.config.php\r
- *\r
- * Please don't edit this file directly as its content may change in the upcoming versions.\r
- */\r
-\r
-return [\r
-       'database' => [\r
-               // host (String)\r
-               // Hostname or IP address of the database server.\r
-               // Can contain the port number with the syntax "hostname:port".\r
-               'hostname' => '',\r
-\r
-               // user (String)\r
-               // Database user name. Please don't use "root".\r
-               'username' => '',\r
-\r
-               // pass (String)\r
-               // Database user password. Please don't use empty passwords.\r
-               'password' => '',\r
-\r
-               // base (String)\r
-               // Database name.\r
-               'database' => '',\r
-\r
-               // charset (String)\r
-               // Database connexion charset. Changing this value will likely corrupt special characters.\r
-               'charset' => 'utf8mb4',\r
-       ],\r
-       'config' => [\r
-               // admin_email (Comma-separated list)\r
-               // In order to perform system administration via the admin panel,\r
-               // this must precisely match the email address of the person logged in.\r
-               'admin_email' => '',\r
-\r
-               // admin_nickname (String)\r
-               // Nickname of the main admin user, used if there are more than one admin user defined in config => admin_email.\r
-               'admin_nickname' => '',\r
-\r
-               // max_import_size (Integer)\r
-               // Maximum body size of DFRN and Mail messages in characters. 0 is unlimited.\r
-               'max_import_size' => 200000,\r
-\r
-               // php_path (String)\r
-               // Location of PHP command line processor.\r
-               'php_path' => 'php',\r
-       ],\r
-       'system' => [\r
-               // allowed_link_protocols (Array)\r
-               // Allowed protocols in links URLs, add at your own risk. http is always allowed.\r
-               'allowed_link_protocols' => ['ftp', 'ftps', 'mailto', 'cid', 'gopher'],\r
-\r
-               // always_show_preview (Boolean)\r
-               // Only show small preview pictures.\r
-               'always_show_preview' => false,\r
-\r
-               // archival_days (Integer)\r
-               // Number of days that we try to deliver content before we archive a contact.\r
-               'archival_days' => 32,\r
-\r
-               // auth_cookie_lifetime (Integer)\r
-               // Number of days that should pass without any activity before a user who\r
-               // chose "Remember me" when logging in is considered logged out.\r
-               'auth_cookie_lifetime' => 7,\r
-\r
-               // block_local_dir (Boolean)\r
-               // Deny public access to the local user directory.\r
-               'block_local_dir' => false,\r
-\r
-               // cache_driver (database|memcache|memcached|redis)\r
-               // Whether to use Memcache or Memcached or Redis to store temporary cache.\r
-               'cache_driver' => 'database',\r
-\r
-               // config_adapter (jit|preload)\r
-               // Allow to switch the configuration adapter to improve performances at the cost of memory consumption.\r
-               'config_adapter' => 'jit',\r
-\r
-               // curl_range_bytes (Integer)\r
-               // Maximum number of bytes that should be fetched. Default is 0, which mean "no limit".\r
-               'curl_range_bytes' => 0,\r
-\r
-               // crawl_permit_period (Integer)\r
-               // Period in seconds between allowed searches when the number of free searches is reached and "permit_crawling" is activated.\r
-               'crawl_permit_period' => 60,\r
-\r
-               // db_log (Path)\r
-               // Name of a logfile to log slow database queries.\r
-               'db_log' => '',\r
-\r
-               // db_log_index (Path)\r
-               // Name of a logfile to log queries with bad indexes.\r
-               'db_log_index' => '',\r
-\r
-               // db_log_index_watch (Comma-separated list)\r
-               // Watchlist of indexes to watch.\r
-               'db_log_index_watch' => '',\r
-\r
-               // db_log_index_blacklist (Comma-separated list)\r
-               // Blacklist of indexes that shouldn't be watched.\r
-               'db_log_index_blacklist' => '',\r
-\r
-               // db_loglimit (Integer)\r
-               // If a database call lasts longer than this value in seconds it is logged.\r
-               // Inactive if system => db_log is empty.\r
-               'db_loglimit' => 10,\r
-\r
-               // db_loglimit_index (Integer)\r
-               // Number of index rows needed to be logged for indexes on the watchlist. 0 to disable.\r
-               'db_loglimit_index' => 0,\r
-\r
-               // db_loglimit_index_high (Integer)\r
-               // Number of index rows to be logged anyway (for any index). 0 to disable.\r
-               'db_loglimit_index_high' => 0,\r
-\r
-               // dbclean_expire_conversation (Integer)\r
-               // When DBClean is enabled, any entry in the conversation table will be deleted after this many days.\r
-               // This data is used for ActivityPub, so it shouldn't be lower than the average duration of a discussion.\r
-               'dbclean_expire_conversation' => 90,\r
-\r
-               // dbclean-expire-limit (Integer)\r
-               // This defines the number of items that are to be deleted in a single call.\r
-               // Reduce this value when you are getting memory issues.\r
-               'dbclean-expire-limit' => 1000,\r
-\r
-               // diaspora_test (Boolean)\r
-               // For development only. Disables the message transfer.\r
-               'diaspora_test' => false,\r
-\r
-               // disable_email_validation (Boolean)\r
-               // Disables the check if a mail address is in a valid format and can be resolved via DNS.\r
-               'disable_email_validation' => false,\r
-\r
-               // disable_url_validation (Boolean)\r
-               // Disables the DNS lookup of an URL.\r
-               'disable_url_validation' => false,\r
-\r
-               // disable_password_exposed (Boolean)\r
-               // Disable the exposition check against the remote haveibeenpwned API on password change.\r
-               'disable_password_exposed' => false,\r
-\r
-               // disable_polling (Boolean)\r
-               // Disable the polling of DFRN and OStatus contacts through onepoll.php.\r
-               'disable_polling' => false,\r
-\r
-               // dlogfile (Path)\r
-               // location of the developer log file.\r
-               'dlogfile' => '',\r
-\r
-               // dlogip (String)\r
-               // restricts develop log writes to requests originating from this IP address.\r
-               'dlogip' => '',\r
-\r
-               // free_crawls (Integer)\r
-               // Number of "free" searches when system => permit_crawling is enabled.\r
-               'free_crawls' => 10,\r
-\r
-               // frontend_worker_timeout (Integer)\r
-               // Value in minutes after we think that a frontend task was killed by the webserver.\r
-               'frontend_worker_timeout' => 10,\r
-\r
-               // groupedit_image_limit (Integer)\r
-               // Number of contacts at which the group editor should switch from display the profile pictures of the contacts to only display the names.\r
-               // This can alternatively be set on a per account basis in the pconfig table.\r
-               'groupedit_image_limit' => 400,\r
-\r
-               // hsts (Boolean)\r
-               // Enables the sending of HTTP Strict Transport Security headers.\r
-               'hsts' => false,\r
-\r
-               // ignore_cache (Boolean)\r
-               // For development only. Disables the item cache.\r
-               'ignore_cache' => false,\r
-\r
-               // instances_social_key (String)\r
-               // Key to the API of https://instances.social which retrieves data about mastodon servers.\r
-               // See https://instances.social/api/token to get an API key.\r
-               'instances_social_key' => '',\r
-\r
-               // ipv4_resolve (Boolean)\r
-               // Resolve IPV4 addresses only. Don't resolve to IPV6.\r
-               'ipv4_resolve' => false,\r
-\r
-               // invitation_only (Boolean)\r
-               // If set true registration is only possible after a current member of the node has send an invitation.\r
-               'invitation_only' => false,\r
-\r
-               // like_no_comment (Boolean)\r
-               // Don't update the "commented" value of an item when it is liked.\r
-               'like_no_comment' => false,\r
-\r
-               // local_block (Boolean)\r
-               // Used in conjunction with "block_public".\r
-               'local_block' => false,\r
-\r
-               // local_search (Boolean)\r
-               // Blocks search for users who are not logged in to prevent crawlers from blocking your system.\r
-               'local_search' => false,\r
-\r
-               // local_tags (Boolean)\r
-               // If activated, all hashtags will point to the local server.\r
-               'local_tags' => false,\r
-\r
-               // max_batch_queue (Integer)\r
-               // Maximum number of batched queue items for a single contact before subsequent messages are discarded.\r
-               'max_batch_queue' => 1000,\r
-\r
-               // max_connections (Integer)\r
-               // The maximum number of database connections which can be in use before the worker process is deferred to its next interval.\r
-               // When the system can't detect the maximum numbers of connection then this value can be used. Use 0 for auto-detection.\r
-               'max_connections' => 0,\r
-\r
-               // max_connections_level (Integer 0-100)\r
-               // The maximum percentage of connections that are allowed to let the worker start.\r
-               'max_connections_level' => 75,\r
-\r
-               // max_contact_queue (Integer)\r
-               // Maximum number of queue items for a single contact before subsequent messages are discarded.\r
-               'max_contact_queue' => 500,\r
-\r
-               // max_image_length (Integer)\r
-               // An alternate way of limiting picture upload sizes.\r
-               // Specify the maximum pixel  length that pictures are allowed to be (for non-square pictures, it will apply to the longest side).\r
-               // Pictures longer than this length will be resized to be this length (on the longest side, the other side will be scaled appropriately).\r
-               // If you don't want to set a maximum length, set to -1.\r
-               'max_image_length' => -1,\r
-\r
-               // max_processes_backend (Integer)\r
-               // Maximum number of concurrent database processes for background tasks.\r
-               'max_processes_backend' => 5,\r
-\r
-               // max_processes_frontend (Integer)\r
-               // Maximum number of concurrent database processes for foreground tasks.\r
-               'max_processes_frontend' => 20,\r
-\r
-               // maximagesize (Integer)\r
-               // Maximum size in bytes of an uploaded photo.\r
-               'maximagesize' => 800000,\r
-\r
-               // memcache_host (String)\r
-               // Host name of the memcache daemon.\r
-               'memcache_host' => '127.0.0.1',\r
-\r
-               // memcache_port (Integer)\r
-               // Port number of the memcache daemon.\r
-               'memcache_port' => 11211,\r
-\r
-               // memcached_hosts (Array)\r
-               // Array of Memcached servers info [host, port(, weight)], see Memcached::addServers.\r
-               'memcached_hosts' => [\r
-                       ['127.0.0.1', '11211'],\r
-               ],\r
-\r
-               // min_poll_interval (Integer)\r
-               // minimal distance in minutes between two polls for a contact. Reasonable values are between 1 and 59.\r
-               'min_poll_interval' => 1,\r
-\r
-               // no_count (Boolean)\r
-               // Don't do count calculations (currently only when showing photo albums).\r
-               'no_count' => false,\r
-\r
-               // no_oembed (Boolean)\r
-               // Don't use OEmbed to fetch more information about a link.\r
-               'no_oembed' => false,\r
-\r
-               // no_smilies (Boolean)\r
-               // Don't show smilies.\r
-               'no_smilies' => false,\r
-\r
-               // no_view_full_size (Boolean)\r
-               // Don't add the link "View full size" under a resized image.\r
-               'no_view_full_size' => false,\r
-\r
-               // optimize_items (Boolean)\r
-               // Triggers an SQL command to optimize the item table before expiring items.\r
-               'optimize_items' => false,\r
-\r
-               // paranoia (Boolean)\r
-               // Log out users if their IP address changed.\r
-               'paranoia' => false,\r
-\r
-               // permit_crawling (Boolean)\r
-               // Restricts the search for not logged in users to one search per minute.\r
-               'permit_crawling' => false,\r
-\r
-               // pidfile (Path)\r
-               // Daemon pid file path. For example: pidfile = /path/to/daemon.pid\r
-               'pidfile' => '',\r
-\r
-               // png_quality (Integer)\r
-               // Sets the ImageMagick compression level for PNG images. Values ranges from 0 (uncompressed) to 9 (most compressed).\r
-               'png_quality' => 8,\r
-\r
-               // profiler (Boolean)\r
-               // Enable internal timings to help optimize code. Needed for "rendertime" addon.\r
-               'profiler' => false,\r
-\r
-               // proxy_cache_time (Integer)\r
-               // Period in seconds after which the cache is cleared.\r
-               'proxy_cache_time' => 86400,\r
-\r
-               // pushpoll_frequency (Integer)\r
-               // Frequency of contact poll for subhub contact using the DFRM or OStatus network.\r
-               // Available values:\r
-               // - 5 = every month\r
-               // - 4 = every week\r
-               // - 3 = every day\r
-               // - 2 = twice a day\r
-               // - 1 = every hour\r
-               // - 0 = every minute\r
-               'pushpoll_frequency' => 3,\r
-\r
-               // queue_no_dead_check (Boolean)\r
-               // Ignore if the target contact or server seems to be dead during queue delivery.\r
-               'queue_no_dead_check' => false,\r
-\r
-               // redis_host (String)\r
-               // Host name of the redis daemon.\r
-               'redis_host' => '127.0.0.1',\r
-\r
-               // redis_port (String)\r
-               // Port number of the redis daemon.\r
-               'redis_port' => 6379,\r
-\r
-               // session_handler (database|cache|native)\r
-               // Whether to use Cache to store session data or to use PHP native session storage.\r
-               'session_handler' => 'database',\r
-\r
-               // remove_multiplicated_lines (Boolean)\r
-               // If enabled, multiple linefeeds in items are stripped to a single one.\r
-               'remove_multiplicated_lines' => false,\r
-\r
-               // sendmail_params (Boolean)\r
-               // Normal sendmail command parameters will be added when the PHP mail() function is called for sending e-mails.\r
-               // This ensures the Sender Email address setting is applied to the message envelope rather than the host's default address.\r
-               // Set to false if your non-sendmail agent is incompatible, or to restore old behavior of using the host address.\r
-               'sendmail_params' => true,\r
-\r
-               // show_global_community_hint (Boolean)\r
-               // When the global community page is enabled, use this option to display a hint above the stream, that this is a collection of all public top-level postings that arrive on your node.\r
-               'show_global_community_hint' => false,\r
-\r
-               // show_unsupported_addons (Boolean)\r
-               // Show all addons including the unsupported ones.\r
-               'show_unsupported_addons' => false,\r
-\r
-               // show_unsupported_themes (Boolean)\r
-               // Show all themes including the unsupported ones.\r
-               'show_unsupported_themes' => false,\r
-\r
-               // throttle_limit_day (Integer)\r
-               // Maximum number of posts that a user can send per day with the API. 0 to disable daily throttling.\r
-               'throttle_limit_day' => 0,\r
-\r
-               // throttle_limit_week (Integer)\r
-               // Maximum number of posts that a user can send per week with the API. 0 to disable weekly throttling.\r
-               'throttle_limit_week' => 0,\r
-\r
-               // throttle_limit_month (Integer)\r
-               // Maximum number of posts that a user can send per month with the API. 0 to disable monthly throttling.\r
-               'throttle_limit_month' => 0,\r
-\r
-               // urlpath (String)\r
-               // If you are using a subdirectory of your domain you will need to put the relative path (from the root of your domain) here.\r
-               // For instance if your URL is 'http://example.com/directory/subdirectory', set urlpath to 'directory/subdirectory'.\r
-               'urlpath' => '',\r
-\r
-               // username_min_length (Integer)\r
-               // The minimum character length a username can be.\r
-               // This length is check once the username has been trimmed and multiple spaces have been collapsed into one.\r
-               // Minimum for this config value is 1. Maximum is 64 as the resulting profile URL mustn't be longer than 255 chars.\r
-               'username_min_length' => 3,\r
-\r
-               // username_max_length (Integer)\r
-               // The maximum character length a username can be.\r
-               // This length is check once the username has been trimmed and multiple spaces have been collapsed into one.\r
-               // Minimum for this config value is 1. Maximum is 64 as the resulting profile URL mustn't be longer than 255 chars.\r
-               'username_max_length' => 48,\r
-\r
-               // worker_cooldown (Integer)\r
-               // Cooldown period in seconds after each worker function call.\r
-               'worker_cooldown' => 0,\r
-\r
-               // worker_debug (Boolean)\r
-               // If enabled, it prints out the number of running processes split by priority.\r
-               'worker_debug' => false,\r
-\r
-               // worker_fetch_limit (Integer)\r
-               // Number of worker tasks that are fetched in a single query.\r
-               'worker_fetch_limit' => 1,\r
-\r
-               // worker_load_exponent (Integer)\r
-               // Default 3, which allows only 25% of the maximum worker queues when server load reaches around 37% of maximum load.\r
-               // For a linear response where 25% of worker queues are allowed at 75% of maximum load, set this to 1.\r
-               // Setting 0 would allow maximum worker queues at all times, which is not recommended.\r
-               'worker_load_exponent' => 3,\r
-\r
-               // xrd_timeout (Integer)\r
-               // Timeout in seconds for fetching the XRD links.\r
-               'xrd_timeout' => 20,\r
-       ],\r
-       'experimental' => [\r
-               // exp_themes (Boolean)\r
-               // Show experimental themes in user settings.\r
-               'exp_themes' => false,\r
-       ],\r
-       'theme' => [\r
-               // hide_eventlist (Boolean)\r
-               // Don't show the birthdays and events on the profile and network page.\r
-               'hide_eventlist' => false,\r
-       ],\r
-       'jabber' => [\r
-               // debug (Boolean)\r
-               // Enable debug level for the jabber account synchronisation.\r
-               'debug' => false,\r
-               // lockpath (Path)\r
-               // Must be writable by the ejabberd process. if set then it will prevent the running of multiple processes.\r
-               'lockpath' => '',\r
-       ],\r
-];\r
+<?php
+
+// CONFIG.PHP
+
+/* This file declares the default values for the base config of Friendica.
+ *
+ * These configuration values aren't accessible from the admin settings page and custom values must be set in config/local.config.php
+ *
+ * Please don't edit this file directly as its content may change in the upcoming versions.
+ */
+
+return [
+       'database' => [
+               // host (String)
+               // Hostname or IP address of the database server.
+               // Can contain the port number with the syntax "hostname:port".
+               'hostname' => '',
+
+               // user (String)
+               // Database user name. Please don't use "root".
+               'username' => '',
+
+               // pass (String)
+               // Database user password. Please don't use empty passwords.
+               'password' => '',
+
+               // base (String)
+               // Database name.
+               'database' => '',
+
+               // charset (String)
+               // Database connexion charset. Changing this value will likely corrupt special characters.
+               'charset' => 'utf8mb4',
+       ],
+       'config' => [
+               // admin_email (Comma-separated list)
+               // In order to perform system administration via the admin panel,
+               // this must precisely match the email address of the person logged in.
+               'admin_email' => '',
+
+               // admin_nickname (String)
+               // Nickname of the main admin user, used if there are more than one admin user defined in config => admin_email.
+               'admin_nickname' => '',
+
+               // max_import_size (Integer)
+               // Maximum body size of DFRN and Mail messages in characters. 0 is unlimited.
+               'max_import_size' => 200000,
+
+               // php_path (String)
+               // Location of PHP command line processor.
+               'php_path' => 'php',
+       ],
+       'system' => [
+               // allowed_link_protocols (Array)
+               // Allowed protocols in links URLs, add at your own risk. http is always allowed.
+               'allowed_link_protocols' => ['ftp', 'ftps', 'mailto', 'cid', 'gopher'],
+
+               // always_show_preview (Boolean)
+               // Only show small preview pictures.
+               'always_show_preview' => false,
+
+               // archival_days (Integer)
+               // Number of days that we try to deliver content before we archive a contact.
+               'archival_days' => 32,
+
+               // auth_cookie_lifetime (Integer)
+               // Number of days that should pass without any activity before a user who
+               // chose "Remember me" when logging in is considered logged out.
+               'auth_cookie_lifetime' => 7,
+
+               // block_local_dir (Boolean)
+               // Deny public access to the local user directory.
+               'block_local_dir' => false,
+
+               // cache_driver (database|memcache|memcached|redis)
+               // Whether to use Memcache or Memcached or Redis to store temporary cache.
+               'cache_driver' => 'database',
+
+               // config_adapter (jit|preload)
+               // Allow to switch the configuration adapter to improve performances at the cost of memory consumption.
+               'config_adapter' => 'jit',
+
+               // curl_range_bytes (Integer)
+               // Maximum number of bytes that should be fetched. Default is 0, which mean "no limit".
+               'curl_range_bytes' => 0,
+
+               // crawl_permit_period (Integer)
+               // Period in seconds between allowed searches when the number of free searches is reached and "permit_crawling" is activated.
+               'crawl_permit_period' => 60,
+
+               // db_log (Path)
+               // Name of a logfile to log slow database queries.
+               'db_log' => '',
+
+               // db_log_index (Path)
+               // Name of a logfile to log queries with bad indexes.
+               'db_log_index' => '',
+
+               // db_log_index_watch (Comma-separated list)
+               // Watchlist of indexes to watch.
+               'db_log_index_watch' => '',
+
+               // db_log_index_blacklist (Comma-separated list)
+               // Blacklist of indexes that shouldn't be watched.
+               'db_log_index_blacklist' => '',
+
+               // db_loglimit (Integer)
+               // If a database call lasts longer than this value in seconds it is logged.
+               // Inactive if system => db_log is empty.
+               'db_loglimit' => 10,
+
+               // db_loglimit_index (Integer)
+               // Number of index rows needed to be logged for indexes on the watchlist. 0 to disable.
+               'db_loglimit_index' => 0,
+
+               // db_loglimit_index_high (Integer)
+               // Number of index rows to be logged anyway (for any index). 0 to disable.
+               'db_loglimit_index_high' => 0,
+
+               // dbclean_expire_conversation (Integer)
+               // When DBClean is enabled, any entry in the conversation table will be deleted after this many days.
+               // This data is used for ActivityPub, so it shouldn't be lower than the average duration of a discussion.
+               'dbclean_expire_conversation' => 90,
+
+               // dbclean-expire-limit (Integer)
+               // This defines the number of items that are to be deleted in a single call.
+               // Reduce this value when you are getting memory issues.
+               'dbclean-expire-limit' => 1000,
+
+               // diaspora_test (Boolean)
+               // For development only. Disables the message transfer.
+               'diaspora_test' => false,
+
+               // disable_email_validation (Boolean)
+               // Disables the check if a mail address is in a valid format and can be resolved via DNS.
+               'disable_email_validation' => false,
+
+               // disable_url_validation (Boolean)
+               // Disables the DNS lookup of an URL.
+               'disable_url_validation' => false,
+
+               // disable_password_exposed (Boolean)
+               // Disable the exposition check against the remote haveibeenpwned API on password change.
+               'disable_password_exposed' => false,
+
+               // disable_polling (Boolean)
+               // Disable the polling of DFRN and OStatus contacts through onepoll.php.
+               'disable_polling' => false,
+
+               // dlogfile (Path)
+               // location of the developer log file.
+               'dlogfile' => '',
+
+               // dlogip (String)
+               // restricts develop log writes to requests originating from this IP address.
+               'dlogip' => '',
+
+               // free_crawls (Integer)
+               // Number of "free" searches when system => permit_crawling is enabled.
+               'free_crawls' => 10,
+
+               // frontend_worker_timeout (Integer)
+               // Value in minutes after we think that a frontend task was killed by the webserver.
+               'frontend_worker_timeout' => 10,
+
+               // groupedit_image_limit (Integer)
+               // Number of contacts at which the group editor should switch from display the profile pictures of the contacts to only display the names.
+               // This can alternatively be set on a per account basis in the pconfig table.
+               'groupedit_image_limit' => 400,
+
+               // hsts (Boolean)
+               // Enables the sending of HTTP Strict Transport Security headers.
+               'hsts' => false,
+
+               // ignore_cache (Boolean)
+               // For development only. Disables the item cache.
+               'ignore_cache' => false,
+
+               // instances_social_key (String)
+               // Key to the API of https://instances.social which retrieves data about mastodon servers.
+               // See https://instances.social/api/token to get an API key.
+               'instances_social_key' => '',
+
+               // ipv4_resolve (Boolean)
+               // Resolve IPV4 addresses only. Don't resolve to IPV6.
+               'ipv4_resolve' => false,
+
+               // invitation_only (Boolean)
+               // If set true registration is only possible after a current member of the node has send an invitation.
+               'invitation_only' => false,
+
+               // like_no_comment (Boolean)
+               // Don't update the "commented" value of an item when it is liked.
+               'like_no_comment' => false,
+
+               // local_block (Boolean)
+               // Used in conjunction with "block_public".
+               'local_block' => false,
+
+               // local_search (Boolean)
+               // Blocks search for users who are not logged in to prevent crawlers from blocking your system.
+               'local_search' => false,
+
+               // local_tags (Boolean)
+               // If activated, all hashtags will point to the local server.
+               'local_tags' => false,
+
+               // max_batch_queue (Integer)
+               // Maximum number of batched queue items for a single contact before subsequent messages are discarded.
+               'max_batch_queue' => 1000,
+
+               // max_connections (Integer)
+               // The maximum number of database connections which can be in use before the worker process is deferred to its next interval.
+               // When the system can't detect the maximum numbers of connection then this value can be used. Use 0 for auto-detection.
+               'max_connections' => 0,
+
+               // max_connections_level (Integer 0-100)
+               // The maximum percentage of connections that are allowed to let the worker start.
+               'max_connections_level' => 75,
+
+               // max_contact_queue (Integer)
+               // Maximum number of queue items for a single contact before subsequent messages are discarded.
+               'max_contact_queue' => 500,
+
+               // max_image_length (Integer)
+               // An alternate way of limiting picture upload sizes.
+               // Specify the maximum pixel  length that pictures are allowed to be (for non-square pictures, it will apply to the longest side).
+               // Pictures longer than this length will be resized to be this length (on the longest side, the other side will be scaled appropriately).
+               // If you don't want to set a maximum length, set to -1.
+               'max_image_length' => -1,
+
+               // max_processes_backend (Integer)
+               // Maximum number of concurrent database processes for background tasks.
+               'max_processes_backend' => 5,
+
+               // max_processes_frontend (Integer)
+               // Maximum number of concurrent database processes for foreground tasks.
+               'max_processes_frontend' => 20,
+
+               // maximagesize (Integer)
+               // Maximum size in bytes of an uploaded photo.
+               'maximagesize' => 800000,
+
+               // memcache_host (String)
+               // Host name of the memcache daemon.
+               'memcache_host' => '127.0.0.1',
+
+               // memcache_port (Integer)
+               // Port number of the memcache daemon.
+               'memcache_port' => 11211,
+
+               // memcached_hosts (Array)
+               // Array of Memcached servers info [host, port(, weight)], see Memcached::addServers.
+               'memcached_hosts' => [
+                       ['127.0.0.1', '11211'],
+               ],
+
+               // min_poll_interval (Integer)
+               // minimal distance in minutes between two polls for a contact. Reasonable values are between 1 and 59.
+               'min_poll_interval' => 1,
+
+               // no_count (Boolean)
+               // Don't do count calculations (currently only when showing photo albums).
+               'no_count' => false,
+
+               // no_oembed (Boolean)
+               // Don't use OEmbed to fetch more information about a link.
+               'no_oembed' => false,
+
+               // no_smilies (Boolean)
+               // Don't show smilies.
+               'no_smilies' => false,
+
+               // no_view_full_size (Boolean)
+               // Don't add the link "View full size" under a resized image.
+               'no_view_full_size' => false,
+
+               // optimize_items (Boolean)
+               // Triggers an SQL command to optimize the item table before expiring items.
+               'optimize_items' => false,
+
+               // paranoia (Boolean)
+               // Log out users if their IP address changed.
+               'paranoia' => false,
+
+               // permit_crawling (Boolean)
+               // Restricts the search for not logged in users to one search per minute.
+               'permit_crawling' => false,
+
+               // pidfile (Path)
+               // Daemon pid file path. For example: pidfile = /path/to/daemon.pid
+               'pidfile' => '',
+
+               // png_quality (Integer)
+               // Sets the ImageMagick compression level for PNG images. Values ranges from 0 (uncompressed) to 9 (most compressed).
+               'png_quality' => 8,
+
+               // profiler (Boolean)
+               // Enable internal timings to help optimize code. Needed for "rendertime" addon.
+               'profiler' => false,
+
+               // proxy_cache_time (Integer)
+               // Period in seconds after which the cache is cleared.
+               'proxy_cache_time' => 86400,
+
+               // pushpoll_frequency (Integer)
+               // Frequency of contact poll for subhub contact using the DFRM or OStatus network.
+               // Available values:
+               // - 5 = every month
+               // - 4 = every week
+               // - 3 = every day
+               // - 2 = twice a day
+               // - 1 = every hour
+               // - 0 = every minute
+               'pushpoll_frequency' => 3,
+
+               // queue_no_dead_check (Boolean)
+               // Ignore if the target contact or server seems to be dead during queue delivery.
+               'queue_no_dead_check' => false,
+
+               // redis_host (String)
+               // Host name of the redis daemon.
+               'redis_host' => '127.0.0.1',
+
+               // redis_port (String)
+               // Port number of the redis daemon.
+               'redis_port' => 6379,
+
+               // session_handler (database|cache|native)
+               // Whether to use Cache to store session data or to use PHP native session storage.
+               'session_handler' => 'database',
+
+               // remove_multiplicated_lines (Boolean)
+               // If enabled, multiple linefeeds in items are stripped to a single one.
+               'remove_multiplicated_lines' => false,
+
+               // sendmail_params (Boolean)
+               // Normal sendmail command parameters will be added when the PHP mail() function is called for sending e-mails.
+               // This ensures the Sender Email address setting is applied to the message envelope rather than the host's default address.
+               // Set to false if your non-sendmail agent is incompatible, or to restore old behavior of using the host address.
+               'sendmail_params' => true,
+
+               // show_global_community_hint (Boolean)
+               // When the global community page is enabled, use this option to display a hint above the stream, that this is a collection of all public top-level postings that arrive on your node.
+               'show_global_community_hint' => false,
+
+               // show_unsupported_addons (Boolean)
+               // Show all addons including the unsupported ones.
+               'show_unsupported_addons' => false,
+
+               // show_unsupported_themes (Boolean)
+               // Show all themes including the unsupported ones.
+               'show_unsupported_themes' => false,
+
+               // throttle_limit_day (Integer)
+               // Maximum number of posts that a user can send per day with the API. 0 to disable daily throttling.
+               'throttle_limit_day' => 0,
+
+               // throttle_limit_week (Integer)
+               // Maximum number of posts that a user can send per week with the API. 0 to disable weekly throttling.
+               'throttle_limit_week' => 0,
+
+               // throttle_limit_month (Integer)
+               // Maximum number of posts that a user can send per month with the API. 0 to disable monthly throttling.
+               'throttle_limit_month' => 0,
+
+               // urlpath (String)
+               // If you are using a subdirectory of your domain you will need to put the relative path (from the root of your domain) here.
+               // For instance if your URL is 'http://example.com/directory/subdirectory', set urlpath to 'directory/subdirectory'.
+               'urlpath' => '',
+
+               // username_min_length (Integer)
+               // The minimum character length a username can be.
+               // This length is check once the username has been trimmed and multiple spaces have been collapsed into one.
+               // Minimum for this config value is 1. Maximum is 64 as the resulting profile URL mustn't be longer than 255 chars.
+               'username_min_length' => 3,
+
+               // username_max_length (Integer)
+               // The maximum character length a username can be.
+               // This length is check once the username has been trimmed and multiple spaces have been collapsed into one.
+               // Minimum for this config value is 1. Maximum is 64 as the resulting profile URL mustn't be longer than 255 chars.
+               'username_max_length' => 48,
+
+               // worker_cooldown (Integer)
+               // Cooldown period in seconds after each worker function call.
+               'worker_cooldown' => 0,
+
+               // worker_debug (Boolean)
+               // If enabled, it prints out the number of running processes split by priority.
+               'worker_debug' => false,
+
+               // worker_fetch_limit (Integer)
+               // Number of worker tasks that are fetched in a single query.
+               'worker_fetch_limit' => 1,
+
+               // worker_load_exponent (Integer)
+               // Default 3, which allows only 25% of the maximum worker queues when server load reaches around 37% of maximum load.
+               // For a linear response where 25% of worker queues are allowed at 75% of maximum load, set this to 1.
+               // Setting 0 would allow maximum worker queues at all times, which is not recommended.
+               'worker_load_exponent' => 3,
+
+               // xrd_timeout (Integer)
+               // Timeout in seconds for fetching the XRD links.
+               'xrd_timeout' => 20,
+       ],
+       'experimental' => [
+               // exp_themes (Boolean)
+               // Show experimental themes in user settings.
+               'exp_themes' => false,
+       ],
+       'theme' => [
+               // hide_eventlist (Boolean)
+               // Don't show the birthdays and events on the profile and network page.
+               'hide_eventlist' => false,
+       ],
+       'jabber' => [
+               // debug (Boolean)
+               // Enable debug level for the jabber account synchronisation.
+               'debug' => false,
+               // lockpath (Path)
+               // Must be writable by the ejabberd process. if set then it will prevent the running of multiple processes.
+               'lockpath' => '',
+       ],
+];
index 4f688ed..996c27a 100644 (file)
@@ -1,44 +1,44 @@
-<?php\r
-\r
-// Local configuration\r
-\r
-/* If automatic system installation fails:\r
- *\r
- * Copy this file to local.config.php\r
- *\r
- * Why local.config.php? Because it contains sensitive information which could\r
- * give somebody complete control of your database. Apache's default\r
- * configuration will interpret any .php file as a script and won't show the values\r
- *\r
- * Then set the following for your MySQL installation\r
- *\r
- * If you're unsure about what any of the config keys below do, please check the config/defaults.config.php file for\r
- * detailed documentation of their data type and behavior.\r
- */\r
-\r
-return [\r
-       'database' => [\r
-               'hostname' => 'localhost',\r
-               'username' => 'mysqlusername',\r
-               'password' => 'mysqlpassword',\r
-               'database' => 'mysqldatabasename',\r
-               'charset' => 'utf8mb4',\r
-       ],\r
-\r
-       // ****************************************************************\r
-       // The configuration below will be overruled by the admin panel.\r
-       // Changes made below will only have an effect if the database does\r
-       // not contain any configuration for the friendica system.\r
-       // ****************************************************************\r
-\r
-       'config' => [\r
-               'admin_email' => '',\r
-               'sitename' => 'Friendica Social Network',\r
-               'register_policy' => REGISTER_OPEN,\r
-               'register_text' => '',\r
-       ],\r
-       'system' => [\r
-               'default_timezone' => 'UTC',\r
-               'language' => 'en',\r
-       ],\r
-];\r
+<?php
+
+// Local configuration
+
+/* If automatic system installation fails:
+ *
+ * Copy this file to local.config.php
+ *
+ * Why local.config.php? Because it contains sensitive information which could
+ * give somebody complete control of your database. Apache's default
+ * configuration will interpret any .php file as a script and won't show the values
+ *
+ * Then set the following for your MySQL installation
+ *
+ * If you're unsure about what any of the config keys below do, please check the config/defaults.config.php file for
+ * detailed documentation of their data type and behavior.
+ */
+
+return [
+       'database' => [
+               'hostname' => 'localhost',
+               'username' => 'mysqlusername',
+               'password' => 'mysqlpassword',
+               'database' => 'mysqldatabasename',
+               'charset' => 'utf8mb4',
+       ],
+
+       // ****************************************************************
+       // The configuration below will be overruled by the admin panel.
+       // Changes made below will only have an effect if the database does
+       // not contain any configuration for the friendica system.
+       // ****************************************************************
+
+       'config' => [
+               'admin_email' => '',
+               'sitename' => 'Friendica Social Network',
+               'register_policy' => REGISTER_OPEN,
+               'register_text' => '',
+       ],
+       'system' => [
+               'default_timezone' => 'UTC',
+               'language' => 'en',
+       ],
+];
index 274ec7e..494a0e1 100644 (file)
-<?php\r
-\r
-// SETTINGS.PHP\r
-\r
-/* This file declares the default values for the admin settings of Friendica.\r
- *\r
- * These values will be overridden by the admin settings page.\r
- *\r
- * Please don't edit this file directly as its content may change in the upcoming versions.\r
- */\r
-\r
-return [\r
-       'config' => [\r
-               // info (String)\r
-               // Plaintext description of this node, used in the /friendica module.\r
-               'info' => '',\r
-\r
-               // register_policy (Constant)\r
-               // Your choices are REGISTER_OPEN, REGISTER_APPROVE, or REGISTER_CLOSED.\r
-               // Be certain to create your own personal account before setting REGISTER_CLOSED.\r
-               // REGISTER_APPROVE requires you set system.admin_email to the email address of an already registered person who can authorize and/or approve/deny the request.\r
-               'register_policy' => REGISTER_CLOSED,\r
-\r
-               // register_text (String)\r
-               // Will be displayed prominently on the registration page.\r
-               'register_text' => '',\r
-\r
-               // sitename (String)\r
-               // Displayed server name.\r
-               'sitename' => 'Friendica Social Network',\r
-       ],\r
-       'system' => [\r
-               // account_abandon_days (Integer)\r
-               // Will not waste system resources polling external sites for abandonded accounts.\r
-               // Enter 0 for no time limit.\r
-               'account_abandon_days' => 0,\r
-\r
-               // addon (Comma-separated list)\r
-               // Manual list of addons which are enabled on this system.\r
-               'addon' => '',\r
-\r
-               // allowed_themes (Comma-separated list)\r
-               // Themes users can change to in their settings.\r
-               'allowed_themes' => 'quattro,vier,duepuntozero,smoothly',\r
-\r
-               // default_timezone (String)\r
-               // Choose a default timezone. See https://secure.php.net/manual/en/timezones.php\r
-               // It only applies to timestamps for anonymous viewers.\r
-               'default_timezone' => 'UTC',\r
-\r
-               // directory (String)\r
-               // URL of the global directory.\r
-               'directory' => 'https://dir.friendica.social',\r
-\r
-               // forbidden_nicknames (Comma-separated list)\r
-               // Prevents users from registering the specified nicknames on this node.\r
-               // Default value comprises classic role names from RFC 2142.\r
-               'forbidden_nicknames' => 'info, marketing, sales, support, abuse, noc, security, postmaster, hostmaster, usenet, news, webmaster, www, uucp, ftp, root, sysop',\r
-\r
-               // jpeg_quality (Integer)\r
-               // Sets the ImageMagick quality level for JPEG images. Values ranges from 50 (awful) to 100 (near perfect).\r
-               'jpeg_quality' => 100,\r
-\r
-               // language (String)\r
-               // System default languague, inluding admin-created user default language.\r
-               // Two-letters ISO 639-1 code.\r
-               'language' => 'en',\r
-\r
-               // max_image_length (Integer)\r
-               // An alternate way of limiting picture upload sizes.\r
-               // Specify the maximum pixel  length that pictures are allowed to be (for non-square pictures, it will apply to the longest side).\r
-               // Pictures longer than this length will be resized to be this length (on the longest side, the other side will be scaled appropriately).\r
-               // If you don't want to set a maximum length, set to -1.\r
-               'max_image_length' => -1,\r
-\r
-               // maximagesize (Integer)\r
-               // Maximum size in bytes of an uploaded photo.\r
-               'maximagesize' => 800000,\r
-\r
-               // no_regfullname (Boolean)\r
-               // Allow pseudonyms (true) or enforce a space between first name and last name in Full name, as an anti spam measure (false).\r
-               'no_regfullname' => true,\r
-\r
-               // optimize_max_tablesize (Integer)\r
-               // Maximum table size (in MB) for the automatic optimization.\r
-               // -1 to disable automatic optimization.\r
-               //  0 to use internal default (100MB)\r
-               'optimize_max_tablesize' => -1,\r
-\r
-               // rino_encrypt (Integer)\r
-               // Server-to-server private message encryption (RINO).\r
-               // Encryption will only be provided if this setting is set to a non zero value on both servers.\r
-               // Set to 0 to disable, 2 to enable, 1 is deprecated but won't need mcrypt.\r
-               'rino_encrypt' => 2,\r
-\r
-               // temppath (String)\r
-               // Custom temporary file directory\r
-               'temppath' => '',\r
-\r
-               // theme (String)\r
-               // System theme name.\r
-               'theme' => 'vier',\r
-\r
-               // url (String)\r
-               // The fully-qualified URL of this Friendica node.\r
-               // Used by the worker in a non-HTTP execution environment.\r
-               'url' => '',\r
-       ],\r
-\r
-       // Used in the admin settings to lock certain features\r
-       'featurelock' => [\r
-       ],\r
-];\r
+<?php
+
+// SETTINGS.PHP
+
+/* This file declares the default values for the admin settings of Friendica.
+ *
+ * These values will be overridden by the admin settings page.
+ *
+ * Please don't edit this file directly as its content may change in the upcoming versions.
+ */
+
+return [
+       'config' => [
+               // info (String)
+               // Plaintext description of this node, used in the /friendica module.
+               'info' => '',
+
+               // register_policy (Constant)
+               // Your choices are REGISTER_OPEN, REGISTER_APPROVE, or REGISTER_CLOSED.
+               // Be certain to create your own personal account before setting REGISTER_CLOSED.
+               // REGISTER_APPROVE requires you set system.admin_email to the email address of an already registered person who can authorize and/or approve/deny the request.
+               'register_policy' => REGISTER_CLOSED,
+
+               // register_text (String)
+               // Will be displayed prominently on the registration page.
+               'register_text' => '',
+
+               // sitename (String)
+               // Displayed server name.
+               'sitename' => 'Friendica Social Network',
+       ],
+       'system' => [
+               // account_abandon_days (Integer)
+               // Will not waste system resources polling external sites for abandonded accounts.
+               // Enter 0 for no time limit.
+               'account_abandon_days' => 0,
+
+               // addon (Comma-separated list)
+               // Manual list of addons which are enabled on this system.
+               'addon' => '',
+
+               // allowed_themes (Comma-separated list)
+               // Themes users can change to in their settings.
+               'allowed_themes' => 'quattro,vier,duepuntozero,smoothly',
+
+               // default_timezone (String)
+               // Choose a default timezone. See https://secure.php.net/manual/en/timezones.php
+               // It only applies to timestamps for anonymous viewers.
+               'default_timezone' => 'UTC',
+
+               // directory (String)
+               // URL of the global directory.
+               'directory' => 'https://dir.friendica.social',
+
+               // forbidden_nicknames (Comma-separated list)
+               // Prevents users from registering the specified nicknames on this node.
+               // Default value comprises classic role names from RFC 2142.
+               'forbidden_nicknames' => 'info, marketing, sales, support, abuse, noc, security, postmaster, hostmaster, usenet, news, webmaster, www, uucp, ftp, root, sysop',
+
+               // jpeg_quality (Integer)
+               // Sets the ImageMagick quality level for JPEG images. Values ranges from 50 (awful) to 100 (near perfect).
+               'jpeg_quality' => 100,
+
+               // language (String)
+               // System default languague, inluding admin-created user default language.
+               // Two-letters ISO 639-1 code.
+               'language' => 'en',
+
+               // max_image_length (Integer)
+               // An alternate way of limiting picture upload sizes.
+               // Specify the maximum pixel  length that pictures are allowed to be (for non-square pictures, it will apply to the longest side).
+               // Pictures longer than this length will be resized to be this length (on the longest side, the other side will be scaled appropriately).
+               // If you don't want to set a maximum length, set to -1.
+               'max_image_length' => -1,
+
+               // maximagesize (Integer)
+               // Maximum size in bytes of an uploaded photo.
+               'maximagesize' => 800000,
+
+               // no_regfullname (Boolean)
+               // Allow pseudonyms (true) or enforce a space between first name and last name in Full name, as an anti spam measure (false).
+               'no_regfullname' => true,
+
+               // optimize_max_tablesize (Integer)
+               // Maximum table size (in MB) for the automatic optimization.
+               // -1 to disable automatic optimization.
+               //  0 to use internal default (100MB)
+               'optimize_max_tablesize' => -1,
+
+               // rino_encrypt (Integer)
+               // Server-to-server private message encryption (RINO).
+               // Encryption will only be provided if this setting is set to a non zero value on both servers.
+               // Set to 0 to disable, 2 to enable, 1 is deprecated but won't need mcrypt.
+               'rino_encrypt' => 2,
+
+               // temppath (String)
+               // Custom temporary file directory
+               'temppath' => '',
+
+               // theme (String)
+               // System theme name.
+               'theme' => 'vier',
+
+               // url (String)
+               // The fully-qualified URL of this Friendica node.
+               // Used by the worker in a non-HTTP execution environment.
+               'url' => '',
+       ],
+
+       // Used in the admin settings to lock certain features
+       'featurelock' => [
+       ],
+];
index c0ad281..1cbe24e 100644 (file)
@@ -1752,7 +1752,7 @@ function admin_page_users_post(App $a)
                        Thank you and welcome to %4$s.'));
 
                $preamble = sprintf($preamble, $user['username'], Config::get('config', 'sitename'));
-               $body = sprintf($body, System::baseUrl(), $user['email'], $result['password'], Config::get('config', 'sitename'));
+               $body = sprintf($body, System::baseUrl(), $user['nickname'], $result['password'], Config::get('config', 'sitename'));
 
                notification([
                        'type'     => SYSTEM_EMAIL,
index 39209af..d36d329 100644 (file)
@@ -21,7 +21,7 @@ function lostpass_post(App $a)
        }
 
        $condition = ['(`email` = ? OR `nickname` = ?) AND `verified` = 1 AND `blocked` = 0', $loginame, $loginame];
-       $user = DBA::selectFirst('user', ['uid', 'username', 'email', 'language'], $condition);
+       $user = DBA::selectFirst('user', ['uid', 'username', 'nickname', 'email', 'language'], $condition);
        if (!DBA::isResult($user)) {
                notice(L10n::t('No valid account found.') . EOL);
                $a->internalRedirect();
@@ -63,7 +63,7 @@ function lostpass_post(App $a)
                The login details are as follows:
 
                Site Location:  %2$s
-               Login Name:     %3$s', $resetlink, System::baseUrl(), $user['email']));
+               Login Name:     %3$s', $resetlink, System::baseUrl(), $user['nickname']));
 
        notification([
                'type'     => SYSTEM_EMAIL,
@@ -85,7 +85,7 @@ function lostpass_content(App $a)
        if ($a->argc > 1) {
                $pwdreset_token = $a->argv[1];
 
-               $user = DBA::selectFirst('user', ['uid', 'username', 'email', 'pwdreset_time', 'language'], ['pwdreset' => $pwdreset_token]);
+               $user = DBA::selectFirst('user', ['uid', 'username', 'nickname', 'email', 'pwdreset_time', 'language'], ['pwdreset' => $pwdreset_token]);
                if (!DBA::isResult($user)) {
                        notice(L10n::t("Request could not be verified. \x28You may have previously submitted it.\x29 Password reset failed."));
 
@@ -161,7 +161,7 @@ function lostpass_generate_password($user)
                        Password:       %3$s
 
                        You may change that password from your account settings page after logging in.
-               ', System::baseUrl(), $user['email'], $new_password));
+               ', System::baseUrl(), $user['nickname'], $new_password));
 
                notification([
                        'type'     => SYSTEM_EMAIL,
index 9ef55fb..85ede74 100644 (file)
@@ -303,41 +303,58 @@ function message_content(App $a)
 
                $o .= $header;
 
-               $r = q("SELECT `mail`.*, `contact`.`name`, `contact`.`url`, `contact`.`thumb`
-                       FROM `mail` LEFT JOIN `contact` ON `mail`.`contact-id` = `contact`.`id`
-                       WHERE `mail`.`uid` = %d AND `mail`.`id` = %d LIMIT 1",
-                       intval(local_user()),
-                       intval($a->argv[1])
+               $message = DBA::fetchFirst("
+                       SELECT `mail`.*, `contact`.`name`, `contact`.`url`, `contact`.`thumb`
+                       FROM `mail`
+                       LEFT JOIN `contact` ON `mail`.`contact-id` = `contact`.`id`
+                       WHERE `mail`.`uid` = ? AND `mail`.`id` = ?
+                       LIMIT 1",
+                       local_user(),
+                       $a->argv[1]
                );
-               if (DBA::isResult($r)) {
-                       $contact_id = $r[0]['contact-id'];
-                       $convid = $r[0]['convid'];
-
-                       $sql_extra = sprintf(" and `mail`.`parent-uri` = '%s' ", DBA::escape($r[0]['parent-uri']));
-                       if ($convid)
-                               $sql_extra = sprintf(" and ( `mail`.`parent-uri` = '%s' OR `mail`.`convid` = '%d' ) ",
-                                       DBA::escape($r[0]['parent-uri']),
-                                       intval($convid)
-                               );
+               if (DBA::isResult($message)) {
+                       $contact_id = $message['contact-id'];
 
-                       $messages = q("SELECT `mail`.*, `contact`.`name`, `contact`.`url`, `contact`.`thumb`
-                               FROM `mail` LEFT JOIN `contact` ON `mail`.`contact-id` = `contact`.`id`
-                               WHERE `mail`.`uid` = %d $sql_extra ORDER BY `mail`.`created` ASC",
-                               intval(local_user())
+                       $params = [
+                               local_user(),
+                               $message['parent-uri']
+                       ];
+
+                       if ($message['convid']) {
+                               $sql_extra = "AND (`mail`.`parent-uri` = ? OR `mail`.`convid` = ?)";
+                               $params[] = $message['convid'];
+                       } else {
+                               $sql_extra = "AND `mail`.`parent-uri` = ?";
+                       }
+                       $messages_stmt = DBA::p("
+                               SELECT `mail`.*, `contact`.`name`, `contact`.`url`, `contact`.`thumb`
+                               FROM `mail`
+                               LEFT JOIN `contact` ON `mail`.`contact-id` = `contact`.`id`
+                               WHERE `mail`.`uid` = ?
+                               $sql_extra
+                               ORDER BY `mail`.`created` ASC",
+                               ...$params
                        );
+
+                       $messages = DBA::toArray($messages_stmt);
+
+                       DBA::update('mail', ['seen' => 1], ['parent-uri' => $message['parent-uri'], 'uid' => local_user()]);
+
+                       if ($message['convid']) {
+                               // Clear Diaspora private message notifications
+                               DBA::update('notify', ['seen' => 1], ['type' => NOTIFY_MAIL, 'parent' => $message['convid'], 'uid' => local_user()]);
+                       }
+                       // Clear DFRN private message notifications
+                       DBA::update('notify', ['seen' => 1], ['type' => NOTIFY_MAIL, 'parent' => $message['parent-uri'], 'uid' => local_user()]);
                } else {
                        $messages = false;
                }
+
                if (!DBA::isResult($messages)) {
                        notice(L10n::t('Message not available.') . EOL);
                        return $o;
                }
 
-               $r = q("UPDATE `mail` SET `seen` = 1 WHERE `parent-uri` = '%s' AND `uid` = %d",
-                       DBA::escape($r[0]['parent-uri']),
-                       intval(local_user())
-               );
-
                $tpl = Renderer::getMarkupTemplate('msg-header.tpl');
                $a->page['htmlhead'] .= Renderer::replaceMacros($tpl, [
                        '$baseurl' => System::baseUrl(true),
@@ -350,8 +367,10 @@ function message_content(App $a)
                $unknown = false;
 
                foreach ($messages as $message) {
-                       if ($message['unknown'])
+                       if ($message['unknown']) {
                                $unknown = true;
+                       }
+
                        if ($message['from-url'] == $myprofile) {
                                $from_url = $myprofile;
                                $sparkle = '';
@@ -499,7 +518,6 @@ function render_messages(array $msg, $t)
                        $participants = L10n::t("%s and You", $rr['from-name']);
                }
 
-               $subject_e = (($rr['mailseen']) ? $rr['title'] : '<strong>' . $rr['title'] . '</strong>');
                $body_e = $rr['body'];
                $to_name_e = $rr['name'];
 
@@ -517,7 +535,7 @@ function render_messages(array $msg, $t)
                        '$from_addr' => defaults($contact, 'addr', ''),
                        '$sparkle' => ' sparkle',
                        '$from_photo' => ProxyUtils::proxifyUrl($from_photo, false, ProxyUtils::SIZE_THUMB),
-                       '$subject' => $subject_e,
+                       '$subject' => $rr['title'],
                        '$delete' => L10n::t('Delete conversation'),
                        '$body' => $body_e,
                        '$to_name' => $to_name_e,
index b315ecf..18b126c 100644 (file)
@@ -64,14 +64,7 @@ function ping_init(App $a)
                $format = 'json';
        }
 
-       $tags          = [];
-       $comments      = [];
-       $likes         = [];
-       $dislikes      = [];
-       $friends       = [];
-       $posts         = [];
        $regs          = [];
-       $mails         = [];
        $notifications = [];
 
        $intro_count    = 0;
@@ -282,22 +275,6 @@ function ping_init(App $a)
                        }
                }
 
-               if (DBA::isResult($mails)) {
-                       foreach ($mails as $mail) {
-                               $notif = [
-                                       'id'      => 0,
-                                       'href'    => System::baseUrl() . '/message/' . $mail['id'],
-                                       'name'    => $mail['from-name'],
-                                       'url'     => $mail['from-url'],
-                                       'photo'   => $mail['from-photo'],
-                                       'date'    => $mail['created'],
-                                       'seen'    => false,
-                                       'message' => L10n::t('{0} sent you a message'),
-                               ];
-                               $notifs[] = $notif;
-                       }
-               }
-
                if (DBA::isResult($regs)) {
                        foreach ($regs as $reg) {
                                $notif = [
@@ -384,7 +361,7 @@ function ping_init(App $a)
        if ($format == 'json') {
                $data['groups'] = $groups_unseen;
                $data['forums'] = $forums_unseen;
-               $data['notify'] = $sysnotify_count + $intro_count + $mail_count + $register_count;
+               $data['notify'] = $sysnotify_count + $intro_count + $register_count;
                $data['notifications'] = $notifications;
                $data['sysmsgs'] = [
                        'notice' => $sysmsgs,
@@ -427,8 +404,6 @@ function ping_get_notifications($uid)
        $order   = "DESC";
        $quit    = false;
 
-       $a = get_app();
-
        do {
                $r = q(
                        "SELECT `notify`.*, `item`.`visible`, `item`.`deleted`
@@ -505,8 +480,8 @@ function ping_get_notifications($uid)
  * @param array $notifs          Complete list of notification
  * @param array $sysmsgs         List of system notice messages
  * @param array $sysmsgs_info    List of system info messages
- * @param int   $groups_unseen   Number of unseen group items
- * @param int   $forums_unseen   Number of unseen forum items
+ * @param array $groups_unseen   List of unseen group messages
+ * @param array $forums_unseen   List of unseen forum messages
  *
  * @return array XML-transform ready data array
  */
index 4a63a6b..25434e2 100644 (file)
@@ -2072,7 +2072,7 @@ class Contact extends BaseObject
         */
        public static function magicLink($contact_url, $url = '')
        {
-               if (!local_user()) {
+               if (!local_user() && remote_user()) {
                        return $url ?: $contact_url; // Equivalent to: ($url != '') ? $url : $contact_url;
                }
 
@@ -2097,7 +2097,7 @@ class Contact extends BaseObject
                $contact = DBA::selectFirst('contact', ['id', 'network', 'url', 'uid'], ['id' => $cid]);
 
                return self::magicLinkbyContact($contact, $url);
-        }
+       }
 
        /**
         * @brief Returns a magic link to authenticate remote visitors
@@ -2109,7 +2109,7 @@ class Contact extends BaseObject
         */
        public static function magicLinkbyContact($contact, $url = '')
        {
-               if (!local_user() || ($contact['network'] != Protocol::DFRN)) {
+               if ((!local_user() && !remote_user()) || ($contact['network'] != Protocol::DFRN)) {
                        return $url ?: $contact['url']; // Equivalent to ($url != '') ? $url : $contact['url'];
                }
 
index c71ae47..a1a722f 100644 (file)
@@ -771,7 +771,7 @@ class User
                        If you ever want to delete your account, you can do so at %3$s/removeme
 
                        Thank you and welcome to %2$s.',
-                       $user['email'], $sitename, $siteurl, $user['username'], $password
+                       $user['nickname'], $sitename, $siteurl, $user['username'], $password
                ));
 
                return notification([
index c3366f5..f8405ee 100644 (file)
@@ -1870,6 +1870,7 @@ class DFRN
                        "to_email" => $importer["email"],
                        "uid" => $importer["importer_uid"],
                        "item" => $msg,
+                       "parent" => $msg["parent-uri"],
                        "source_name" => $msg["from-name"],
                        "source_link" => $importer["url"],
                        "source_photo" => $importer["thumb"],
index 6400958..b4e4941 100644 (file)
@@ -1807,44 +1807,45 @@ class Diaspora
                        return false;
                }
 
-               q(
-                       "INSERT INTO `mail` (`uid`, `guid`, `convid`, `from-name`,`from-photo`,`from-url`,`contact-id`,`title`,`body`,`seen`,`reply`,`uri`,`parent-uri`,`created`)
-                       VALUES (%d, '%s', %d, '%s', '%s', '%s', %d, '%s', '%s', %d, %d, '%s','%s','%s')",
-                       intval($importer["uid"]),
-                       DBA::escape($msg_guid),
-                       intval($conversation["id"]),
-                       DBA::escape($person["name"]),
-                       DBA::escape($person["photo"]),
-                       DBA::escape($person["url"]),
-                       intval($contact["id"]),
-                       DBA::escape($subject),
-                       DBA::escape($body),
-                       0,
-                       0,
-                       DBA::escape($message_uri),
-                       DBA::escape($author.":".$guid),
-                       DBA::escape($msg_created_at)
-               );
+               DBA::insert('mail', [
+                       'uid'        => $importer['uid'],
+                       'guid'       => $msg_guid,
+                       'convid'     => $conversation['id'],
+                       'from-name'  => $person['name'],
+                       'from-photo' => $person['photo'],
+                       'from-url'   => $person['url'],
+                       'contact-id' => $contact['id'],
+                       'title'      => $subject,
+                       'body'       => $body,
+                       'seen'       => 0,
+                       'reply'      => 0,
+                       'uri'        => $message_uri,
+                       'parent-uri' => $author . ':' . $guid,
+                       'created'    => $msg_created_at
+               ]);
+
+               $message_id = DBA::lastInsertId();
 
                DBA::unlock();
 
                DBA::update('conv', ['updated' => DateTimeFormat::utcNow()], ['id' => $conversation["id"]]);
 
-               notification(
-                       [
+               notification([
                        "type" => NOTIFY_MAIL,
                        "notify_flags" => $importer["notify-flags"],
                        "language" => $importer["language"],
                        "to_name" => $importer["username"],
                        "to_email" => $importer["email"],
-                       "uid" =>$importer["uid"],
-                       "item" => ["id" => $conversation["id"], "title" => $subject, "subject" => $subject, "body" => $body],
+                       "uid" => $importer["uid"],
+                       "item" => ["id" => $message_id, "title" => $subject, "subject" => $subject, "body" => $body],
+                       "parent" => $conversation["id"],
                        "source_name" => $person["name"],
                        "source_link" => $person["url"],
                        "source_photo" => $person["photo"],
                        "verb" => ACTIVITY_POST,
-                       "otype" => "mail"]
-               );
+                       "otype" => "mail"
+               ]);
+
                return true;
        }
 
@@ -2066,28 +2067,45 @@ class Diaspora
                        return false;
                }
 
-               q(
-                       "INSERT INTO `mail` (`uid`, `guid`, `convid`, `from-name`,`from-photo`,`from-url`,`contact-id`,`title`,`body`,`seen`,`reply`,`uri`,`parent-uri`,`created`)
-                               VALUES ( %d, '%s', %d, '%s', '%s', '%s', %d, '%s', '%s', %d, %d, '%s','%s','%s')",
-                       intval($importer["uid"]),
-                       DBA::escape($guid),
-                       intval($conversation["id"]),
-                       DBA::escape($person["name"]),
-                       DBA::escape($person["photo"]),
-                       DBA::escape($person["url"]),
-                       intval($contact["id"]),
-                       DBA::escape($conversation["subject"]),
-                       DBA::escape($body),
-                       0,
-                       1,
-                       DBA::escape($message_uri),
-                       DBA::escape($author.":".$conversation["guid"]),
-                       DBA::escape($created_at)
-               );
+               DBA::insert('mail', [
+                       'uid'        => $importer['uid'],
+                       'guid'       => $guid,
+                       'convid'     => $conversation['id'],
+                       'from-name'  => $person['name'],
+                       'from-photo' => $person['photo'],
+                       'from-url'   => $person['url'],
+                       'contact-id' => $contact['id'],
+                       'title'      => $conversation['subject'],
+                       'body'       => $body,
+                       'seen'       => 0,
+                       'reply'      => 1,
+                       'uri'        => $message_uri,
+                       'parent-uri' => $author.":".$conversation['guid'],
+                       'created'    => $created_at
+               ]);
+
+               $message_id = DBA::lastInsertId();
 
                DBA::unlock();
 
                DBA::update('conv', ['updated' => DateTimeFormat::utcNow()], ['id' => $conversation["id"]]);
+
+               notification([
+                       "type" => NOTIFY_MAIL,
+                       "notify_flags" => $importer["notify-flags"],
+                       "language" => $importer["language"],
+                       "to_name" => $importer["username"],
+                       "to_email" => $importer["email"],
+                       "uid" => $importer["uid"],
+                       "item" => ["id" => $message_id, "title" => $conversation["subject"], "subject" => $conversation["subject"], "body" => $body],
+                       "parent" => $conversation["id"],
+                       "source_name" => $person["name"],
+                       "source_link" => $person["url"],
+                       "source_photo" => $person["photo"],
+                       "verb" => ACTIVITY_POST,
+                       "otype" => "mail"
+               ]);
+
                return true;
        }
 
index fa76742..07c2957 100644 (file)
@@ -4,7 +4,7 @@
 {{if $showwarning}}
        <div id="admin-warning-message-wrapper">
                {{foreach $warningtext as $wt}}
-               <p class="warning-message">{{$wt}}</p>
+               <p class="warning-message">{{$wt nofilter}}</p>
                {{/foreach}}
        </div>
 {{/if}}
index ffc7b19..3f901f6 100644 (file)
@@ -10,7 +10,7 @@
 </ul>
 </p>
 <p>
-{{$invite_desc}}
+{{$invite_desc nofilter}}
 </p>
 <p>
 {{$desc nofilter}}
index 08570ec..6f63dde 100644 (file)
@@ -95,7 +95,7 @@
                                        <h4>{{$lbl_vis1}}</h4>
                                        <p>{{$lbl_vis2}}</p> 
                                        </div>
-                                       {{$profile_select}}
+                                       {{$profile_select nofilter}}
                                        <div id="contact-edit-profile-select-end"></div>
                                {{/if}}
                        </div>
index 39fa295..27cc723 100644 (file)
@@ -9,7 +9,7 @@
 <li><a href="https://diasporafoundation.org" title="{{$diaspora}}">{{$diaspora}}</a> {{$diasnote}}</li>
 <li><a href="https://gnu.io/social/" title="{{$statusnet}}" >{{$statusnet}}</a></li>
 </ul>
-{{$invite_desc}}
+{{$invite_desc nofilter}}
 </p>
 <p>
 {{$desc nofilter}}
index 02266e7..28b644d 100644 (file)
@@ -1,17 +1,14 @@
 
-
-{{$preamble}}
+{{$preamble nofilter}}
 
 {{if $content_allowed}}
-{{$title}}
+{{$title nofilter}}
 
-{{$textversion}}
+{{$textversion nofilter}}
 
 {{/if}}
-{{$tsitelink}}
-{{$titemlink}}
-
-{{$thanks}}
-{{$site_admin}}
-
+{{$tsitelink nofilter}}
+{{$titemlink nofilter}}
 
+{{$thanks nofilter}}
+{{$site_admin nofilter}}
index 4f5be40..372bcb5 100644 (file)
@@ -11,9 +11,9 @@
 {{if $lock}} | <img src="images/lock_icon.gif" class="lockview" alt="{{$lock}}" onclick="lockview(event,'photo/{{$id}}');" /> {{/if}}
 </div>
 
-{{if $prevlink}}<div id="photo-prev-link"><a href="{{$prevlink.0}}">{{$prevlink.1}}</a></div>{{/if}}
+{{if $prevlink}}<div id="photo-prev-link"><a href="{{$prevlink.0}}">{{$prevlink.1 nofilter}}</a></div>{{/if}}
 <div id="photo-photo"><a href="{{$photo.href}}" title="{{$photo.title}}"><img src="{{$photo.src}}" /></a></div>
-{{if $nextlink}}<div id="photo-next-link"><a href="{{$nextlink.0}}">{{$nextlink.1}}</a></div>{{/if}}
+{{if $nextlink}}<div id="photo-next-link"><a href="{{$nextlink.0}}">{{$nextlink.1 nofilter}}</a></div>{{/if}}
 <div id="photo-photo-end"></div>
 <div id="photo-caption">{{$desc nofilter}}</div>
 {{if $tags}}
index 2b23934..b3a6a2c 100644 (file)
@@ -20,7 +20,7 @@
 {{/if}}
 
 {{if $invitations}}
-       <p id="register-invite-desc">{{$invite_desc}}</p>
+       <p id="register-invite-desc">{{$invite_desc nofilter}}</p>
        <div id="register-invite-wrapper" >
                <label for="register-invite" id="label-register-invite" >{{$invite_label}}</label>
                <input type="text" maxlength="60" size="32" name="invite_id" id="register-invite" value="{{$invite_id}}" >
index 388c281..502da31 100644 (file)
@@ -5,7 +5,7 @@
        {{if $showwarning}}
        <div id="admin-warning-message-wrapper" class="alert alert-warning">
                {{foreach $warningtext as $wt}}
-               <p>{{$wt}}</p>
+               <p>{{$wt nofilter}}</p>
                {{/foreach}}
        </div>
        {{/if}}
index 9c737cf..915a493 100644 (file)
@@ -11,7 +11,7 @@
 </ul>
 </p>
 <p>
-{{$invite_desc}}
+{{$invite_desc nofilter}}
 </p>
 <p>
 {{$desc}}
index fd5f1c0..70ebdcd 100644 (file)
                                                                                <p>{{$lbl_vis2}}</p>
                                                                        </div>
                                                                        <div class="form-group">
-                                                                       {{$profile_select}}
+                                                                       {{$profile_select nofilter}}
                                                                        </div>
                                                                        <div class="clear"></div>
                                                                {{/if}}
index 2f363f5..ebcf3a0 100644 (file)
@@ -10,7 +10,7 @@
 <li><a href="https://diasporafoundation.org" title="{{$diaspora}}">{{$diaspora}}</a> {{$diasnote}}</li>
 <li><a href="https://gnu.io/social/" title="{{$statusnet}}" >{{$statusnet}}</a></li>
 </ul>
-{{$invite_desc}}
+{{$invite_desc nofilter}}
 </p>
 <p>
 {{$desc}}
index 4a797d4..bfc21aa 100644 (file)
                                <div class="text-muted time ago pull-right" title="{{$date}}">{{$ago}}</div>
 
                                <h4 class="media-heading">{{$from_name}}</h4>
-                               <div class="mail-list-subject"><a href="message/{{$id}}">{{$subject}}</a></div>
+                               <div class="mail-list-subject">
+                                       <a href="message/{{$id}}">
+                                       {{if !$seen}}
+                                               <strong>
+                                       {{/if}}
+                                               {{$subject}}
+                                       {{if !$seen}}
+                                               </strong>
+                                       {{/if}}
+                                       </a></div>
                                <a href="message/dropconv/{{$id}}" onclick="return confirmDelete();"  title="{{$delete}}" class="pull-right" onmouseover="imgbright(this);" onmouseout="imgdull(this);">
                                <i class="faded-icon fa fa-trash"></i>
                                </a>
index fb5436f..ba8f547 100644 (file)
@@ -8,7 +8,7 @@
                <a href="profiles/{{$id}}" class="profile-listing-edit-link" >{{$profile_name}}</a>
        </div>
        <div class="profile-listing-cell">
-               {{$visible}}
+               {{$visible nofilter}}
        </div>
 </div>
 <div class="profile-listing-end"></div>
index ab79e7d..7436d0d 100644 (file)
@@ -24,7 +24,7 @@
                <div id="register-invite-wrapper" class="form-group">
                        <label for="register-invite" id="label-register-invite" >{{$invite_label}}</label>
                        <input type="text" maxlength="60" size="32" name="invite_id" id="register-invite" class="form-control" value="{{$invite_id}}">
-                       <span class="help-block" id="invite_id_tip">{{$invite_desc}}</span>
+                       <span class="help-block" id="invite_id_tip">{{$invite_desc nofilter}}</span>
                </div>
                <div id="register-name-end" ></div>
                {{/if}}
index 0b65c2c..a478727 100644 (file)
@@ -11,8 +11,8 @@
 </div>
 
 <div id="photo-photo"><a href="{{$photo.href}}" title="{{$photo.title}}"><img src="{{$photo.src}}" /></a></div>
-{{if $prevlink}}<div id="photo-prev-link"><a href="{{$prevlink.0}}">{{$prevlink.1}}</a></div>{{/if}}
-{{if $nextlink}}<div id="photo-next-link"><a href="{{$nextlink.0}}">{{$nextlink.1}}</a></div>{{/if}}
+{{if $prevlink}}<div id="photo-prev-link"><a href="{{$prevlink.0}}">{{$prevlink.1 nofilter}}</a></div>{{/if}}
+{{if $nextlink}}<div id="photo-next-link"><a href="{{$nextlink.0}}">{{$nextlink.1 nofilter}}</a></div>{{/if}}
 <div id="photo-caption">{{$desc nofilter}}</div>
 {{if $tags}}
 <div id="in-this-photo-text">{{$tags.0}}</div>
index 2f52f82..8fbbbfc 100644 (file)
@@ -96,7 +96,7 @@
                                        <h4>{{$lbl_vis1}}</h4>
                                        <p>{{$lbl_vis2}}</p> 
                                        </div>
-                                       {{$profile_select}}
+                                       {{$profile_select nofilter}}
                                        <div id="contact-edit-profile-select-end"></div>
                                {{/if}}
                        </div>
index aa3f7aa..617bcc5 100644 (file)
@@ -11,9 +11,9 @@
 {{if $lock}} | <img src="images/lock_icon.gif" class="lockview" alt="{{$lock}}" onclick="lockview(event,'photo/{{$id}}');" /> {{/if}}
 </div>
 
-{{if $prevlink}}<div id="photo-prev-link"><a href="{{$prevlink.0}}">{{$prevlink.1}}</a></div>{{/if}}
+{{if $prevlink}}<div id="photo-prev-link"><a href="{{$prevlink.0}}">{{$prevlink.1 nofilter}}</a></div>{{/if}}
 <div id="photo-photo"><a href="{{$photo.href}}" title="{{$photo.title}}"><img src="{{$photo.src}}" /></a></div>
-{{if $nextlink}}<div id="photo-next-link"><a href="{{$nextlink.0}}">{{$nextlink.1}}</a></div>{{/if}}
+{{if $nextlink}}<div id="photo-next-link"><a href="{{$nextlink.0}}">{{$nextlink.1 nofilter}}</a></div>{{/if}}
 <div id="photo-photo-end"></div>
 <div id="photo-caption">{{$desc nofilter}}</div>
 {{if $tags}}