From 9a4d19e284fff23619133b4adbc99be087a1cef8 Mon Sep 17 00:00:00 2001
From: rabuzarus <rabuzarus@t-online.de>
Date: Fri, 9 Feb 2018 20:44:45 +0100
Subject: [PATCH] move membersince addon to core

---
 src/Content/Feature.php                       | 47 ++++++++++---------
 src/Model/Profile.php                         |  4 ++
 view/templates/profile_advanced.tpl           |  7 +++
 .../theme/frio/templates/profile_advanced.tpl |  8 ++++
 .../theme/vier/templates/profile_advanced.tpl |  7 +++
 5 files changed, 50 insertions(+), 23 deletions(-)

diff --git a/src/Content/Feature.php b/src/Content/Feature.php
index fc5bb9717..92cb9ae77 100644
--- a/src/Content/Feature.php
+++ b/src/Content/Feature.php
@@ -78,54 +78,55 @@ class Feature
 			'general' => [
 				L10n::t('General Features'),
 				//array('expire',         L10n::t('Content Expiration'),		L10n::t('Remove old posts/comments after a period of time')),
-				['multi_profiles', L10n::t('Multiple Profiles'),			L10n::t('Ability to create multiple profiles'), false, Config::get('feature_lock', 'multi_profiles', false)],
-				['photo_location', L10n::t('Photo Location'),			L10n::t("Photo metadata is normally stripped. This extracts the location \x28if present\x29 prior to stripping metadata and links it to a map."), false, Config::get('feature_lock', 'photo_location', false)],
-				['export_calendar', L10n::t('Export Public Calendar'),		L10n::t('Ability for visitors to download the public calendar'), false, Config::get('feature_lock', 'export_calendar', false)],
+				['multi_profiles',  L10n::t('Multiple Profiles'),      L10n::t('Ability to create multiple profiles'), false, Config::get('feature_lock', 'multi_profiles', false)],
+				['photo_location',  L10n::t('Photo Location'),         L10n::t("Photo metadata is normally stripped. This extracts the location \x28if present\x29 prior to stripping metadata and links it to a map."), false, Config::get('feature_lock', 'photo_location', false)],
+				['export_calendar', L10n::t('Export Public Calendar'), L10n::t('Ability for visitors to download the public calendar'), false, Config::get('feature_lock', 'export_calendar', false)],
 			],
 
 			// Post composition
 			'composition' => [
 				L10n::t('Post Composition Features'),
-				['preview',	L10n::t('Post Preview'),			L10n::t('Allow previewing posts and comments before publishing them'), false, Config::get('feature_lock', 'preview', false)],
-				['aclautomention',	L10n::t('Auto-mention Forums'),		L10n::t('Add/remove mention when a forum page is selected/deselected in ACL window.'), false, Config::get('feature_lock', 'aclautomention', false)],
+				['preview',        L10n::t('Post Preview'),        L10n::t('Allow previewing posts and comments before publishing them'), false, Config::get('feature_lock', 'preview', false)],
+				['aclautomention', L10n::t('Auto-mention Forums'), L10n::t('Add/remove mention when a forum page is selected/deselected in ACL window.'), false, Config::get('feature_lock', 'aclautomention', false)],
 			],
 
 			// Network sidebar widgets
 			'widgets' => [
 				L10n::t('Network Sidebar Widgets'),
-				['archives',	L10n::t('Search by Date'),			L10n::t('Ability to select posts by date ranges'), false, Config::get('feature_lock', 'archives', false)],
-				['forumlist_widget', L10n::t('List Forums'),			L10n::t('Enable widget to display the forums your are connected with'), true, Config::get('feature_lock', 'forumlist_widget', false)],
-				['groups',		L10n::t('Group Filter'),			L10n::t('Enable widget to display Network posts only from selected group'), false, Config::get('feature_lock', 'groups', false)],
-				['networks',	L10n::t('Network Filter'),			L10n::t('Enable widget to display Network posts only from selected network'), false, Config::get('feature_lock', 'networks', false)],
-				['savedsearch',	L10n::t('Saved Searches'),			L10n::t('Save search terms for re-use'), false, Config::get('feature_lock', 'savedsearch', false)],
+				['archives',         L10n::t('Search by Date'), L10n::t('Ability to select posts by date ranges'), false, Config::get('feature_lock', 'archives', false)],
+				['forumlist_widget', L10n::t('List Forums'),    L10n::t('Enable widget to display the forums your are connected with'), true, Config::get('feature_lock', 'forumlist_widget', false)],
+				['groups',           L10n::t('Group Filter'),   L10n::t('Enable widget to display Network posts only from selected group'), false, Config::get('feature_lock', 'groups', false)],
+				['networks',         L10n::t('Network Filter'), L10n::t('Enable widget to display Network posts only from selected network'), false, Config::get('feature_lock', 'networks', false)],
+				['savedsearch',      L10n::t('Saved Searches'), L10n::t('Save search terms for re-use'), false, Config::get('feature_lock', 'savedsearch', false)],
 			],
 
 			// Network tabs
 			'net_tabs' => [
 				L10n::t('Network Tabs'),
-				['personal_tab',	L10n::t('Network Personal Tab'),		L10n::t('Enable tab to display only Network posts that you\'ve interacted on'), false, Config::get('feature_lock', 'personal_tab', false)],
-				['new_tab',	L10n::t('Network New Tab'),			L10n::t("Enable tab to display only new Network posts \x28from the last 12 hours\x29"), false, Config::get('feature_lock', 'new_tab', false)],
-				['link_tab',	L10n::t('Network Shared Links Tab'),		L10n::t('Enable tab to display only Network posts with links in them'), false, Config::get('feature_lock', 'link_tab', false)],
+				['personal_tab', L10n::t('Network Personal Tab'),     L10n::t('Enable tab to display only Network posts that you\'ve interacted on'), false, Config::get('feature_lock', 'personal_tab', false)],
+				['new_tab',      L10n::t('Network New Tab'),          L10n::t("Enable tab to display only new Network posts \x28from the last 12 hours\x29"), false, Config::get('feature_lock', 'new_tab', false)],
+				['link_tab',     L10n::t('Network Shared Links Tab'), L10n::t('Enable tab to display only Network posts with links in them'), false, Config::get('feature_lock', 'link_tab', false)],
 			],
 
 			// Item tools
 			'tools' => [
 				L10n::t('Post/Comment Tools'),
-				['multi_delete',	L10n::t('Multiple Deletion'),			L10n::t('Select and delete multiple posts/comments at once'), false, Config::get('feature_lock', 'multi_delete', false)],
-				['edit_posts',	L10n::t('Edit Sent Posts'),			L10n::t('Edit and correct posts and comments after sending'), false, Config::get('feature_lock', 'edit_posts', false)],
-				['commtag',	L10n::t('Tagging'),				L10n::t('Ability to tag existing posts'), false, Config::get('feature_lock', 'commtag', false)],
-				['categories',	L10n::t('Post Categories'),			L10n::t('Add categories to your posts'), false, Config::get('feature_lock', 'categories', false)],
-				['filing',		L10n::t('Saved Folders'),			L10n::t('Ability to file posts under folders'), false, Config::get('feature_lock', 'filing', false)],
-				['dislike',	L10n::t('Dislike Posts'),			L10n::t('Ability to dislike posts/comments'), false, Config::get('feature_lock', 'dislike', false)],
-				['star_posts',	L10n::t('Star Posts'),			L10n::t('Ability to mark special posts with a star indicator'), false, Config::get('feature_lock', 'star_posts', false)],
-				['ignore_posts',	L10n::t('Mute Post Notifications'),		L10n::t('Ability to mute notifications for a thread'), false, Config::get('feature_lock', 'ignore_posts', false)],
+				['multi_delete', L10n::t('Multiple Deletion'),       L10n::t('Select and delete multiple posts/comments at once'), false, Config::get('feature_lock', 'multi_delete', false)],
+				['edit_posts',   L10n::t('Edit Sent Posts'),         L10n::t('Edit and correct posts and comments after sending'), false, Config::get('feature_lock', 'edit_posts', false)],
+				['commtag',      L10n::t('Tagging'),                 L10n::t('Ability to tag existing posts'), false, Config::get('feature_lock', 'commtag', false)],
+				['categories',   L10n::t('Post Categories'),         L10n::t('Add categories to your posts'), false, Config::get('feature_lock', 'categories', false)],
+				['filing',       L10n::t('Saved Folders'),           L10n::t('Ability to file posts under folders'), false, Config::get('feature_lock', 'filing', false)],
+				['dislike',      L10n::t('Dislike Posts'),           L10n::t('Ability to dislike posts/comments'), false, Config::get('feature_lock', 'dislike', false)],
+				['star_posts',   L10n::t('Star Posts'),              L10n::t('Ability to mark special posts with a star indicator'), false, Config::get('feature_lock', 'star_posts', false)],
+				['ignore_posts', L10n::t('Mute Post Notifications'), L10n::t('Ability to mute notifications for a thread'), false, Config::get('feature_lock', 'ignore_posts', false)],
 			],
 
 			// Advanced Profile Settings
 			'advanced_profile' => [
 				L10n::t('Advanced Profile Settings'),
-				['forumlist_profile', L10n::t('List Forums'),			L10n::t('Show visitors public community forums at the Advanced Profile Page'), false, Config::get('feature_lock', 'forumlist_profile', false)],
-				['tagadelic',	L10n::t('Tag Cloud'),				L10n::t('Provide a personal tag cloud on your profile page'), false, Config::get('feature_lock', 'tagadelic', false)],
+				['forumlist_profile',   L10n::t('List Forums'),             L10n::t('Show visitors public community forums at the Advanced Profile Page'), false, Config::get('feature_lock', 'forumlist_profile', false)],
+				['tagadelic',           L10n::t('Tag Cloud'),               L10n::t('Provide a personal tag cloud on your profile page'), false, Config::get('feature_lock', 'tagadelic', false)],
+				['profile_membersince', L10n::t('Display Membership Date'), L10n::t('Display membership date in profile'), false, Config::get('feature_lock', 'profile_membersince', false)],
 			],
 		];
 
diff --git a/src/Model/Profile.php b/src/Model/Profile.php
index 3522bab8e..002b647ff 100644
--- a/src/Model/Profile.php
+++ b/src/Model/Profile.php
@@ -722,6 +722,10 @@ class Profile
 
 			$profile['fullname'] = [L10n::t('Full Name:'), $a->profile['name']];
 
+			if (Feature::isEnabled($uid, 'profile_membersince')) {
+				$profile['membersince'] = [L10n::t('Member since:'), DateTimeFormat::local($a->profile['register_date'])];
+			}
+
 			if ($a->profile['gender']) {
 				$profile['gender'] = [L10n::t('Gender:'), $a->profile['gender']];
 			}
diff --git a/view/templates/profile_advanced.tpl b/view/templates/profile_advanced.tpl
index 32de6bfa9..19d4490ea 100644
--- a/view/templates/profile_advanced.tpl
+++ b/view/templates/profile_advanced.tpl
@@ -6,6 +6,13 @@
  <dd>{{$profile.fullname.1}}</dd>
 </dl>
 
+{{if $profile.membersince}}
+<dl id="aprofile-membersince" class="aprofile">
+ <dt>{{$profile.membersince.0}}</dt>
+ <dd>{{$profile.membersince.1}}</dd>
+</dl>
+{{/if}}
+
 {{if $profile.gender}}
 <dl id="aprofile-gender" class="aprofile">
  <dt>{{$profile.gender.0}}</dt>
diff --git a/view/theme/frio/templates/profile_advanced.tpl b/view/theme/frio/templates/profile_advanced.tpl
index 694d5c75d..256a4138a 100644
--- a/view/theme/frio/templates/profile_advanced.tpl
+++ b/view/theme/frio/templates/profile_advanced.tpl
@@ -30,6 +30,14 @@
 				<div class="col-lg-8 col-md-8 col-sm-8 col-xs-12 profile-entry">{{$profile.fullname.1}}</div>
 			</div>
 
+			{{if $profile.membersince}}
+			<div id="aprofile-membersince" class="col-lg-12 col-md-12 col-sm-12 col-xs-12 aprofile">
+				<hr class="profile-separator">
+				<div class="col-lg-4 col-md-4 col-sm-4 col-xs-12 profile-label-name text-muted">{{$profile.membersince.0}}</div>
+				<div class="col-lg-8 col-md-8 col-sm-8 col-xs-12 profile-entry">{{$profile.membersince.1}}</div>
+			</div>
+			{{/if}}
+
 			{{if $profile.gender}}
 			<div id="aprofile-gender" class="col-lg-12 col-md-12 col-sm-12 col-xs-12 aprofile">
 				<hr class="profile-separator">
diff --git a/view/theme/vier/templates/profile_advanced.tpl b/view/theme/vier/templates/profile_advanced.tpl
index 8451188f0..702fba8f2 100644
--- a/view/theme/vier/templates/profile_advanced.tpl
+++ b/view/theme/vier/templates/profile_advanced.tpl
@@ -11,6 +11,13 @@
  <dd>{{$profile.fullname.1}}</dd>
 </dl>
 
+{{if $profile.membersince}}
+<dl id="aprofile-membersince" class="aprofile">
+ <dt>{{$profile.membersince.0}}</dt>
+ <dd>{{$profile.membersince.1}}</dd>
+</dl>
+{{/if}}
+
 {{if $profile.gender}}
 <dl id="aprofile-gender" class="aprofile">
  <dt>{{$profile.gender.0}}</dt>