Date: Wed, 3 Jan 2024 23:12:01 -0500
Subject: [PATCH 047/423] API updates for Events
---
src/python/WebApi.py | 124 +++++++++++++++++++++++++++++++------------
1 file changed, 89 insertions(+), 35 deletions(-)
diff --git a/src/python/WebApi.py b/src/python/WebApi.py
index 22aa0219..5652be52 100644
--- a/src/python/WebApi.py
+++ b/src/python/WebApi.py
@@ -187,11 +187,17 @@ def get_person_info_for_sync(person_obj):
Data.Title = "Saved Searches"
-if "InvsForDivs" in Data.a:
+if "Invs" in Data.a:
apiCalled = True
regex = re.compile('[^0-9,]')
divs = regex.sub('', Data.divs)
+ if (len(divs)) < 1:
+ divs = '0'
+
+ mtgHist = -int(Data.mtgHist) if Data.mtgHist != "" else 0
+ mtgFuture = int(Data.mtgFuture) if Data.mtgFuture != "" else 365
+ featMtgs = 1 if Data.featMtgs != "" else 2 # value is directly used in SQL comparison.
leadMemTypes = Data.leadMemTypes or ""
leadMemTypes = regex.sub('', leadMemTypes)
@@ -203,7 +209,7 @@ def get_person_info_for_sync(person_obj):
hostMemTypes = "NULL"
# noinspection SqlResolve,SqlUnusedCte,SqlRedundantOrderingDirection
- invSql = '''
+ invSql = ('''
WITH cteTargetOrgs as
(
SELECT
@@ -223,6 +229,9 @@ def get_person_info_for_sync(person_obj):
o.OrgPickList,
o.MainLeaderId,
o.ImageUrl,
+ o.BadgeUrl,
+ o.RegistrationMobileId,
+ o.ShowRegistrantsInMobile,
o.CampusId,
o.RegSettingXml.exist('/Settings/AskItems') AS hasRegQuestions,
FORMAT(o.RegStart, 'yyyy-MM-ddTHH:mm:ss') AS regStart,
@@ -230,13 +239,24 @@ def get_person_info_for_sync(person_obj):
FORMAT(o.FirstMeetingDate, 'yyyy-MM-ddTHH:mm:ss') AS firstMeeting,
FORMAT(o.LastMeetingDate, 'yyyy-MM-ddTHH:mm:ss') AS lastMeeting
FROM dbo.Organizations o
- WHERE o.OrganizationId = (
- SELECT MIN(OrgId) min
- FROM dbo.DivOrg do
- WHERE do.OrgId = o.OrganizationId
- AND do.DivId IN ({})
+ WHERE ( o.OrganizationId = (
+ SELECT MIN(OrgId) min
+ FROM dbo.DivOrg do
+ WHERE do.OrgId = o.OrganizationId
+ AND do.DivId IN ({0})
+ )
+ AND o.organizationStatusId = 30
+ )
+ OR ( o.ShowInSites = {2}
+ AND o.OrganizationId = (
+ SELECT MIN(m.OrganizationId) org
+ FROM Meetings m
+ WHERE m.OrganizationId = o.OrganizationId
+ AND m.MeetingDate > DATEADD(day, {3}, GETDATE())
+ AND m.MeetingDate < DATEADD(day, {4}, GETDATE())
+ GROUP BY m.OrganizationId
+ )
)
- AND o.organizationStatusId = 30
),
-- select all members for these organizations to avoid multiple scans of Organization members table
cteOrganizationMembers AS
@@ -263,21 +283,39 @@ def get_person_info_for_sync(person_obj):
(SELECT OrganizationId, STRING_AGG(ag, ',') WITHIN GROUP (ORDER BY ag ASC) AS PeopleAge
FROM (
SELECT omi.OrganizationId,
- (CASE
- WHEN pi.Age > 69 THEN '70+'
- ELSE CONVERT(VARCHAR(2), (FLOOR(pi.Age / 10.0) * 10), 70) + 's'
- END) as ag
+ (IIF(pi.Age > 69, '70+', CONVERT(VARCHAR(2), (FLOOR(pi.Age / 10.0) * 10), 70) + 's')) as ag
FROM cteOrganizationMembers omi
INNER JOIN dbo.People pi WITH(NOLOCK)
ON omi.PeopleId = pi.PeopleId
WHERE pi.Age > 19
GROUP BY omi.OrganizationId,
- (CASE
- WHEN pi.Age > 69 THEN '70+'
- ELSE CONVERT(VARCHAR(2), (FLOOR(pi.Age / 10.0) * 10), 70) + 's'
- END)
+ (IIF(pi.Age > 69, '70+', CONVERT(VARCHAR(2), (FLOOR(pi.Age / 10.0) * 10), 70) + 's'))
) AS ag_agg
GROUP BY ag_agg.OrganizationId
+ ), ''' + '''
+ -- pull aggregate meetings for all target organizations
+ cteMeeting AS
+ (
+ SELECT cto.OrganizationId,
+ (
+ SELECT om.MeetingId as mtgId,
+ FORMAT(om.meetingDate, 'yyyy-MM-ddTHH:mm:ss') as mtgStartDt,
+ null as mtgEndDt, -- TODO end time
+ om.Location as location,
+ om.Description as name,
+ 1 - om.DidNotMeet as status,
+ om.Capacity as capacity,
+ CAST(me.Data as INT) as parentMtgId
+ FROM dbo.Meetings om
+ INNER JOIN cteTargetOrgs o
+ ON om.OrganizationId = o.OrganizationId
+ LEFT JOIN dbo.MeetingExtra me
+ ON om.MeetingId = me.MeetingId AND 'ParentMeeting' = me.Field
+ WHERE om.MeetingDate > DATEADD(day, {3}, GETDATE())
+ AND om.OrganizationId = cto.OrganizationId
+ FOR JSON PATH, INCLUDE_NULL_VALUES
+ ) as OrgMeetings
+ FROM cteTargetOrgs cto
),
-- pull aggregate schedules for all target organizations
cteSchedule AS
@@ -288,7 +326,7 @@ def get_person_info_for_sync(person_obj):
INNER JOIN cteTargetOrgs o
ON os.OrganizationId = o.OrganizationId
WHERE cto.OrganizationId = os.OrganizationId
- FOR JSON PATH
+ FOR JSON PATH, INCLUDE_NULL_VALUES
) as OrgSchedule
FROM cteTargetOrgs cto),
-- pull aggregate divisions for all target organizations
@@ -320,7 +358,7 @@ def get_person_info_for_sync(person_obj):
(SELECT TOP 1 omh.PeopleId
FROM dbo.OrganizationMembers omh
WHERE o.OrganizationId = omh.OrganizationId
- AND omh.MemberTypeId IN ({})) = ph.PeopleId
+ AND omh.MemberTypeId IN ({1})) = ph.PeopleId
LEFT JOIN dbo.Families fh ON
ph.FamilyId = fh.FamilyId
LEFT JOIN dbo.AddressInfo paih ON
@@ -350,6 +388,9 @@ def get_person_info_for_sync(person_obj):
, o.[OrgPickList] AS [orgPickList]
, o.[MainLeaderId] AS [mainLeaderId]
, o.[ImageUrl] AS [imageUrl]
+ , o.[BadgeUrl] AS [badgeUrl]
+ , o.[RegistrationMobileId] AS [registrationMobileId]
+ , o.[ShowRegistrantsInMobile] AS [showRegistrantsInMobile]
, o.[hasRegQuestions] AS [hasRegQuestions]
, o.[regStart] AS [regStart]
, o.[regEnd] AS [regEnd]
@@ -373,7 +414,7 @@ def get_person_info_for_sync(person_obj):
ON o.OrganizationId = aa.OrganizationId
LEFT JOIN cteSchedule s
ON o.OrganizationId = s.OrganizationId
- LEFT JOIN cteMeetings m
+ LEFT JOIN cteMeeting m
ON o.OrganizationId = m.OrganizationId
LEFT JOIN cteDivision d
ON o.OrganizationId = d.OrganizationId
@@ -381,7 +422,7 @@ def get_person_info_for_sync(person_obj):
ON o.OrganizationId = ol.OrganizationId
LEFT JOIN lookup.Campus c
ON o.CampusId = c.Id
- ORDER BY o.parentInvId ASC, o.OrganizationId ASC'''.format(divs, hostMemTypes)
+ ORDER BY o.parentInvId ASC, o.OrganizationId ASC''').format(divs, hostMemTypes, featMtgs, mtgHist, mtgFuture)
groups = model.SqlListDynamicData(invSql)
@@ -393,10 +434,8 @@ def get_person_info_for_sync(person_obj):
g.divs = g.divs.split(',')
if g.meetings is not None:
- # noinspection PyUnresolvedReferences
- g.meetings = g.meetings.split(' | ')
- for i, s in enumerate(g.meetings):
- g.meetings[i] = {'dt': s[0:19], 'type': s[20:]}
+ # noinspection PyTypeChecker
+ g.meetings = json.loads(g.meetings)
else:
g.meetings = []
@@ -913,11 +952,13 @@ def get_person_info_for_sync(person_obj):
# Prep SQL for People Extra Values
pevSql = ''
- if inData.has_key('meta') and isinstance(inData['meta'], dict) and inData['meta'].has_key('pev') and len(inData['meta']['pev']) > 0:
+ if inData.has_key('meta') and isinstance(inData['meta'], dict) and inData['meta'].has_key('pev') and len(
+ inData['meta']['pev']) > 0:
pevSql = []
for pev in inData['meta']['pev']:
pevSql.append("([Field] = '{}' AND [Type] = '{}')".format(pev['field'], pev['type']))
- # noinspection SqlResolve
+
+ # noinspection SqlResolve,Annotator
pevSql = """SELECT Field, StrValue, DateValue, Data, IntValue, BitValue, [Type],
CONCAT('pev', SUBSTRING(CONVERT(NVARCHAR(18), HASHBYTES('MD2', CONCAT([Field], [Type])), 1), 3, 8)) Hash
FROM PeopleExtra
@@ -931,8 +972,9 @@ def get_person_info_for_sync(person_obj):
fevSql = []
for fev in inData['meta']['fev']:
fevSql.append("([Field] = '{}' AND [Type] = '{}')".format(fev['field'], fev['type']))
+
if len(fevSql) > 0:
- # noinspection SqlResolve
+ # noinspection SqlResolve,Annotator
fevSql = """SELECT Field, StrValue, DateValue, Data, IntValue, BitValue, [Type],
CONCAT('fev', SUBSTRING(CONVERT(NVARCHAR(18), HASHBYTES('MD2', CONCAT([Field], [Type])), 1), 3, 8)) Hash
FROM FamilyExtra
@@ -940,10 +982,22 @@ def get_person_info_for_sync(person_obj):
else:
fevSql = ''
- # noinspection SqlResolve
- invSql = "SELECT om.OrganizationId iid, CONCAT('mt', mt.Id) memType, CONCAT('at', at.Id) attType, om.UserData descr FROM OrganizationMembers om LEFT JOIN lookup.MemberType mt on om.MemberTypeId = mt.Id LEFT JOIN lookup.AttendType at ON mt.AttendanceTypeId = at.Id WHERE om.Pending = 0 AND mt.Inactive = 0 AND at.Guest = 0 AND om.PeopleId = {0} AND om.OrganizationId IN ({1})"
-
- # noinspection SqlResolve
+ # noinspection SqlResolve,Annotator
+ invSql = """SELECT om.OrganizationId iid,
+ CONCAT('mt', mt.Id) memType,
+ CONCAT('at', at.Id) attType,
+ om.UserData descr
+ FROM OrganizationMembers om
+ LEFT JOIN lookup.MemberType mt
+ ON om.MemberTypeId = mt.Id
+ LEFT JOIN lookup.AttendType at
+ ON mt.AttendanceTypeId = at.Id
+ WHERE om.Pending = 0
+ AND mt.Inactive = 0
+ AND at.Guest = 0
+ AND om.PeopleId = {0} AND om.OrganizationId IN ({1})"""
+
+ # noinspection SqlResolve,Annotator
famGeoSql = """SELECT geo.Longitude, geo.Latitude
FROM AddressInfo ai LEFT JOIN Geocodes geo ON ai.FullAddress = geo.Address WHERE ai.FamilyId = {}"""
@@ -1032,7 +1086,6 @@ def get_person_info_for_sync(person_obj):
Data.rules = rules # handy for debugging
Data.success = True
-
if "report_run" in Data.a and model.HttpMethod == "post":
apiCalled = True
@@ -1096,7 +1149,8 @@ def get_person_info_for_sync(person_obj):
model.Title = "Logging out..."
model.Header = "Logging out..."
model.Script = ""
- print("")
+ print(
+ "")
apiCalled = True
if ("login" in Data.a or Data.r != '') and model.HttpMethod == "get": # r parameter implies desired redir after login.
@@ -1214,8 +1268,8 @@ def get_person_info_for_sync(person_obj):
model.Title = "Error"
model.Header = "Something went wrong."
- print("Please email the following error message to " + model.Setting("AdminMail",
- "the church staff") + " .
")
+ print("Please email the following error message to " +
+ model.Setting("AdminMail", "the church staff") + " .
")
print(response)
print_exception()
print(" ")
From 40ec8177517c5f6584b17d414845f98654ec38de Mon Sep 17 00:00:00 2001
From: "James K."
Date: Wed, 3 Jan 2024 23:17:54 -0500
Subject: [PATCH 048/423] typo
---
src/TouchPoint-WP/Partner.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/TouchPoint-WP/Partner.php b/src/TouchPoint-WP/Partner.php
index e3239b59..e0c72262 100644
--- a/src/TouchPoint-WP/Partner.php
+++ b/src/TouchPoint-WP/Partner.php
@@ -390,7 +390,7 @@ public static function updateFromTouchPoint(bool $verbose = false)
// Excerpt / Summary
$post->post_excerpt = self::getFamEvAsContent($summaryEv, $f, null);
- // Partner Category This can't be moved to Taxonomy class because values aren't know.n.
+ // Partner Category This can't be moved to Taxonomy class because values aren't known.
if ($categoryEv !== '') {
$category = $f->familyEV->$categoryEv->value ?? null;
// Insert Term if new
From e8c0e0c6347a08a93a8897d9b6bae438159c9dcb Mon Sep 17 00:00:00 2001
From: "James K."
Date: Thu, 4 Jan 2024 08:39:02 -0500
Subject: [PATCH 049/423] API updates. Settings for Events.
---
src/TouchPoint-WP/Involvement.php | 27 ++++++----
.../Involvement_PostTypeSettings.php | 2 +
src/TouchPoint-WP/TouchPointWP_Settings.php | 6 +--
src/templates/admin/invKoForm.php | 10 ++++
src/templates/meeting-archive.php | 51 +++++++++++++++++++
5 files changed, 84 insertions(+), 12 deletions(-)
create mode 100644 src/templates/meeting-archive.php
diff --git a/src/TouchPoint-WP/Involvement.php b/src/TouchPoint-WP/Involvement.php
index 6b125d41..d58dc941 100644
--- a/src/TouchPoint-WP/Involvement.php
+++ b/src/TouchPoint-WP/Involvement.php
@@ -560,7 +560,7 @@ public function nextMeeting(): ?DateTimeImmutable
if ($this->_nextMeeting === null) {
// meetings
foreach ($this->meetings() as $m) {
- $mdt = $m->dt;
+ $mdt = $m->mtgStartDt;
if ($mdt > $now) {
if ($this->_nextMeeting === null || $mdt < $this->_nextMeeting) {
$this->_nextMeeting = $mdt;
@@ -622,7 +622,7 @@ private static function computeCommonOccurrences(array $meetings = [], array $sc
continue;
}
- $dt = $m->dt;
+ $dt = $m->mtgStartDt;
if ($dt < $now) {
continue;
@@ -2085,11 +2085,12 @@ final protected static function updateInvolvementPostsForType(Involvement_PostTy
}
try {
- $response = TouchPointWP::instance()->apiGet(
- "InvsForDivs",
- array_merge($qOpts, ['divs' => $divs]),
- 180
- );
+ $qOpts['divs'] = $divs;
+ if ($typeSets->importMeetings) {
+ $qOpts['mtgHist'] = TouchPointWP::instance()->settings->mc_archive_days;
+ $qOpts['mtgFuture'] = TouchPointWP::instance()->settings->mc_future_days;
+ }
+ $response = TouchPointWP::instance()->apiGet("Invs", $qOpts, 180);
} catch (TouchPointWP_Exception $e) {
return false;
}
@@ -2108,6 +2109,9 @@ final protected static function updateInvolvementPostsForType(Involvement_PostTy
$now = new DateTimeImmutable(null, $siteTz);
$aYear = new DateInterval('P1Y');
$nowPlus1Y = $now->add($aYear);
+ $histDays = TouchPointWP::instance()->settings->mc_hist_days;
+ $histVal = new DateInterval("P{$histDays}D");
+ $nowMinusH = $now->sub($histVal);
unset($aYear);
} catch (Exception $e) {
return false;
@@ -2151,7 +2155,9 @@ final protected static function updateInvolvementPostsForType(Involvement_PostTy
}
foreach ($inv->meetings as $i => $m) {
try {
- $m->dt = new DateTimeImmutable($m->dt, $siteTz);
+ $m->mtgStartDt = new DateTimeImmutable($m->mtgStartDt, $siteTz);
+ $m->mtgEndDt = ($m->mtgEndDt == null ? null :
+ new DateTimeImmutable($m->mtgEndDt, $siteTz));
} catch (Exception $e) {
unset($inv->meetings[$i]);
}
@@ -2183,7 +2189,10 @@ final protected static function updateInvolvementPostsForType(Involvement_PostTy
// 'continue' causes involvement to be deleted (or not created).
// Filter by end dates to stay relevant
- if ($inv->lastMeeting !== null && $inv->lastMeeting < $now) { // last meeting already happened.
+ if ($inv->lastMeeting !== null && (
+ (!$typeSets->importMeetings && $inv->lastMeeting < $now) ||
+ ($typeSets->importMeetings && $inv->lastMeeting < $nowMinusH))
+ ) { // last meeting was long enough ago to no longer be relevant.
if ($verbose) {
echo "Stopping processing because all meetings are in the past. Involvement will be deleted from WordPress.
";
}
diff --git a/src/TouchPoint-WP/Involvement_PostTypeSettings.php b/src/TouchPoint-WP/Involvement_PostTypeSettings.php
index 57dd8cfc..aa7c63d5 100644
--- a/src/TouchPoint-WP/Involvement_PostTypeSettings.php
+++ b/src/TouchPoint-WP/Involvement_PostTypeSettings.php
@@ -22,6 +22,7 @@
* @property-read bool $useImages
* @property-read bool $useGeo
* @property-read bool $hierarchical
+ * @property-read bool $importMeetings
* @property-read string $groupBy
* @property-read string[] $excludeIf
* @property-read string[] $leaderTypes
@@ -45,6 +46,7 @@ class Involvement_PostTypeSettings
protected bool $useImages = false;
protected bool $useGeo = false;
protected bool $hierarchical = false;
+ protected bool $importMeetings = false;
protected string $groupBy = "";
protected array $excludeIf = [];
protected array $leaderTypes = [];
diff --git a/src/TouchPoint-WP/TouchPointWP_Settings.php b/src/TouchPoint-WP/TouchPointWP_Settings.php
index 16ccd7be..cffa8560 100644
--- a/src/TouchPoint-WP/TouchPointWP_Settings.php
+++ b/src/TouchPoint-WP/TouchPointWP_Settings.php
@@ -69,9 +69,9 @@
* @property-read string ec_use_standardizing_style Whether to insert the standardizing stylesheet into mobile app requests.
*
* @property-read string mc_slug Slug for meetings in the meeting calendar (e.g. "events" for church.org/events)
- * @property-read string mc_future_days Number of days into the future to import.
- * @property-read string mc_archive_days Number of days to wait to move something to history.
- * @property-read string mc_hist_days Number of days of history to keep.
+ * @property-read int mc_future_days Number of days into the future to import.
+ * @property-read int mc_archive_days Number of days to wait to move something to history.
+ * @property-read int mc_hist_days Number of days of history to keep.
* @property-read string mc_deletion_method Determines how meetings should be handled in WordPress if they're deleted in TouchPoint
*
* @property-read string rc_name_plural What resident codes should be called, plural (e.g. "Resident Codes" or "Zones")
diff --git a/src/templates/admin/invKoForm.php b/src/templates/admin/invKoForm.php
index a4fc25c1..759c1979 100644
--- a/src/templates/admin/invKoForm.php
+++ b/src/templates/admin/invKoForm.php
@@ -72,6 +72,15 @@
+ enable_meeting_cal === "on") { ?>
+
+
+
+
+
+
+
+
@@ -242,6 +251,7 @@ function InvType(data) {
this.useImages = ko.observable(data.useImages ?? true);
this.excludeIf = ko.observable(data.excludeIf ?? []);
this.hierarchical = ko.observable(data.hierarchical ?? false);
+ this.importMeetings = ko.observable(data.importMeetings ?? false);
this.groupBy = ko.observable(data.groupBy ?? "");
this.leaderTypes = ko.observableArray(data.leaderTypes ?? []);
this.hostTypes = ko.observableArray(data.hostTypes ?? []);
diff --git a/src/templates/meeting-archive.php b/src/templates/meeting-archive.php
new file mode 100644
index 00000000..71721111
--- /dev/null
+++ b/src/templates/meeting-archive.php
@@ -0,0 +1,51 @@
+name : false;
+
+get_header($postType);
+
+$description = get_the_archive_description();
+
+if (have_posts()) {
+ global $wp_query;
+
+ TouchPointWP::enqueuePartialsStyle();
+ ?>
+
+
+ tax_query->queries = $taxQuery;
+ $wp_query->query_vars['tax_query'] = $taxQuery;
+ $wp_query->is_tax = false; // prevents templates from thinking this is a taxonomy archive
+} else {
+ $loadedPart = get_template_part('list-none', 'meeting-list-none');
+ if ($loadedPart === false) {
+ require TouchPointWP::$dir . "/src/templates/parts/meeting-list-none.php";
+ }
+}
+
+get_footer();
\ No newline at end of file
From c11f0bdc2949c161b6342a7010eb089416e1b803 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Thu, 4 Jan 2024 08:39:24 -0500
Subject: [PATCH 050/423] Resolve an issue when user isn't logged in.
---
src/TouchPoint-WP/TouchPointWP.php | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/src/TouchPoint-WP/TouchPointWP.php b/src/TouchPoint-WP/TouchPointWP.php
index d9631480..c72eb492 100644
--- a/src/TouchPoint-WP/TouchPointWP.php
+++ b/src/TouchPoint-WP/TouchPointWP.php
@@ -500,6 +500,10 @@ public static function currentUserIsAdmin(): bool
return false;
}
+ if ( ! function_exists('wp_get_current_user')) {
+ return false;
+ }
+
return current_user_can('manage_options');
}
From 964d9873d1da4b360c1bd5dc39408ecf7b0413ad Mon Sep 17 00:00:00 2001
From: "James K."
Date: Thu, 4 Jan 2024 23:10:00 -0500
Subject: [PATCH 051/423] Fix #162, I think?
---
src/TouchPoint-WP/Involvement.php | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/src/TouchPoint-WP/Involvement.php b/src/TouchPoint-WP/Involvement.php
index d58dc941..eee47660 100644
--- a/src/TouchPoint-WP/Involvement.php
+++ b/src/TouchPoint-WP/Involvement.php
@@ -664,11 +664,14 @@ protected function scheduleString_calc(): ?string
$timeStr = substr($k, 2);
if ( ! in_array($timeStr, $uniqueTimeStrings, true)) {
$uniqueTimeStrings[] = $timeStr;
+ }
- $weekday = "d" . $k[0];
- if ( ! isset($days[$weekday])) {
- $days[$weekday] = [];
- }
+ $weekday = "d" . $k[0];
+ if ( ! isset($days[$weekday])) {
+ $days[$weekday] = [];
+ }
+
+ if ( ! in_array($co['example'], $days[$weekday], true)) {
$days[$weekday][] = $co['example'];
}
}
From 8a2e809d42d38caa01a42f8fb19f35297cfb8292 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Thu, 4 Jan 2024 23:30:48 -0500
Subject: [PATCH 052/423] Resolve an issue where filters don't work if the map
failed to load.
---
assets/js/base-defer.js | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/assets/js/base-defer.js b/assets/js/base-defer.js
index f33625f2..72b7b7ba 100644
--- a/assets/js/base-defer.js
+++ b/assets/js/base-defer.js
@@ -354,7 +354,11 @@ class TP_MapMarker
}
get inBounds() {
- return this.gMkr.getMap().getBounds().contains(this.gMkr.getPosition());
+ let map = this.gMkr.getMap();
+ if (!map) { // if map failed to render for some reason, this prevents entries from being hidden.
+ return true;
+ }
+ return map.getBounds().contains(this.gMkr.getPosition());
}
get useIcon() {
From 5ad2f0180bd60872288275a6158eecdc0cadbd76 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Fri, 5 Jan 2024 09:45:23 -0500
Subject: [PATCH 053/423] Moving meta key; php 8 syntax
---
src/TouchPoint-WP/Involvement.php | 14 ++++++--------
src/TouchPoint-WP/Partner.php | 3 ++-
src/TouchPoint-WP/Person.php | 2 +-
src/TouchPoint-WP/TouchPointWP.php | 7 ++++---
4 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/src/TouchPoint-WP/Involvement.php b/src/TouchPoint-WP/Involvement.php
index eee47660..7c5e3c50 100644
--- a/src/TouchPoint-WP/Involvement.php
+++ b/src/TouchPoint-WP/Involvement.php
@@ -86,8 +86,6 @@ class Involvement implements api, updatesViaCron, hasGeo, module
public string $post_excerpt;
protected WP_Post $post;
- public const INVOLVEMENT_META_KEY = TouchPointWP::SETTINGS_PREFIX . "invId";
-
public object $attributes;
protected array $divisions;
@@ -107,7 +105,7 @@ protected function __construct(object $object)
// WP_Post Object
$this->post = $object;
$this->name = $object->post_title;
- $this->invId = intval($object->{self::INVOLVEMENT_META_KEY});
+ $this->invId = intval($object->{TouchPointWP::INVOLVEMENT_META_KEY});
$this->post_id = $object->ID;
$this->invType = get_post_type($this->post_id);
@@ -1136,7 +1134,7 @@ private static function getWpPostByInvolvementId($postType, $involvementId)
$q = new WP_Query([
'post_type' => $postType,
- 'meta_key' => self::INVOLVEMENT_META_KEY,
+ 'meta_key' => TouchPointWP::INVOLVEMENT_META_KEY,
'meta_value' => $involvementId,
'numberposts' => 2
// only need one, but if there's two, there should be an error condition.
@@ -1551,7 +1549,7 @@ protected static final function filterDropdownHtml(array $params, Involvement_Po
*/
public static function fromPost(WP_Post $post): Involvement
{
- $iid = intval($post->{self::INVOLVEMENT_META_KEY});
+ $iid = intval($post->{TouchPointWP::INVOLVEMENT_META_KEY});
if ( ! isset(self::$_instances[$iid])) {
self::$_instances[$iid] = new Involvement($post);
@@ -2270,7 +2268,7 @@ final protected static function updateInvolvementPostsForType(Involvement_PostTy
'post_type' => $typeSets->postType,
'post_name' => $titleToUse,
'meta_input' => [
- self::INVOLVEMENT_META_KEY => $inv->involvementId
+ TouchPointWP::INVOLVEMENT_META_KEY => $inv->involvementId
]
]
);
@@ -2288,7 +2286,7 @@ final protected static function updateInvolvementPostsForType(Involvement_PostTy
}
/** @var $post WP_Post */
- if ($inv->description == null || trim($inv->description) == "") {
+ if ($inv->description == null || trim($inv->description) === "") {
$post->post_content = null;
} else {
$post->post_content = Utilities::standardizeHtml($inv->description, "involvement-import");
@@ -2585,7 +2583,7 @@ public static function filterPublishDate($theDate, $format, $post = null): strin
$post = get_post($post);
}
- $theDate = self::scheduleString(intval($post->{self::INVOLVEMENT_META_KEY})) ?? "";
+ $theDate = self::scheduleString(intval($post->{TouchPointWP::INVOLVEMENT_META_KEY})) ?? "";
}
return $theDate;
diff --git a/src/TouchPoint-WP/Partner.php b/src/TouchPoint-WP/Partner.php
index e0c72262..bf933d01 100644
--- a/src/TouchPoint-WP/Partner.php
+++ b/src/TouchPoint-WP/Partner.php
@@ -18,6 +18,7 @@
use Exception;
use JsonSerializable;
+use stdClass;
use WP_Error;
use WP_Post;
use WP_Query;
@@ -81,7 +82,7 @@ class Partner implements api, JsonSerializable, updatesViaCron, hasGeo, module
*/
protected function __construct(object $object)
{
- $this->attributes = (object)[];
+ $this->attributes = new stdClass();
if (gettype($object) === "object" && get_class($object) == WP_Post::class) {
// WP_Post Object
diff --git a/src/TouchPoint-WP/Person.php b/src/TouchPoint-WP/Person.php
index c6f9aa57..eecd2e44 100644
--- a/src/TouchPoint-WP/Person.php
+++ b/src/TouchPoint-WP/Person.php
@@ -707,7 +707,7 @@ protected static function updateFromTouchPoint(bool $verbose = false)
// Get the InvIds for the Involvement Type's Posts
$postType = $type->postTypeWithPrefix();
- $key = Involvement::INVOLVEMENT_META_KEY;
+ $key = TouchPointWP::INVOLVEMENT_META_KEY;
global $wpdb;
/** @noinspection SqlResolve */
$sql = "SELECT pm.meta_value AS iid
diff --git a/src/TouchPoint-WP/TouchPointWP.php b/src/TouchPoint-WP/TouchPointWP.php
index c72eb492..b551dfee 100644
--- a/src/TouchPoint-WP/TouchPointWP.php
+++ b/src/TouchPoint-WP/TouchPointWP.php
@@ -91,6 +91,10 @@ class TouchPointWP
public const CACHE_NONE = 20;
private static int $cacheLevel = self::CACHE_PUBLIC;
+
+ public const INVOLVEMENT_META_KEY = TouchPointWP::SETTINGS_PREFIX . "invId";
+
+
/**
* @var string Used for imploding arrays together in human-friendly formats.
*/
@@ -673,9 +677,6 @@ public static function load($file): TouchPointWP
// Load Involvements tool if enabled.
if ($instance->settings->enable_involvements === "on") {
- if ( ! TOUCHPOINT_COMPOSER_ENABLED) {
- require_once 'Involvement.php';
- }
$instance->involvements = Involvement::load();
}
From 95cb7859ddd1ee7cb4f7a3d21d53bec582b439e5 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Sat, 6 Jan 2024 19:24:35 -0500
Subject: [PATCH 054/423] Month calendar grid function
---
src/TouchPoint-WP/Meeting.php | 79 +++++++++++++++++++++++++++++++++++
1 file changed, 79 insertions(+)
diff --git a/src/TouchPoint-WP/Meeting.php b/src/TouchPoint-WP/Meeting.php
index 5810a997..f8e77db2 100644
--- a/src/TouchPoint-WP/Meeting.php
+++ b/src/TouchPoint-WP/Meeting.php
@@ -66,6 +66,85 @@ public static function api(array $uri): bool
return false;
}
+ /**
+ * Print a calendar grid for a given month and year.
+ *
+ * @param WP_Query $q
+ * @param int|null $month
+ * @param int|null $year
+ *
+ * @return void
+ */
+ public static function printCalendarGrid(WP_Query $q, int $month = null, int $year = null)
+ {
+ try {
+ // Validate month & year; create $d as a day within the month
+ $tz = wp_timezone();
+ if ($month < 1 || $month > 12 || $year < 2020 || $year > 2100) {
+ $d = new DateTime('now', $tz);
+ $d = new DateTime($d->format('Y-m-01'), $tz);
+ } else {
+ $d = new DateTime("$year-$month-01", $tz);
+ }
+ } catch (Exception $e) {
+ echo "";
+ return;
+ }
+
+ // Get the day of the week for the first day of the month (0 = Sunday, 1 = Monday, ..., 6 = Saturday)
+ $offsetDays = intval($d->format('w')); // w: Numeric representation of the day of the week
+ $d->modify("-$offsetDays days");
+
+ // Create a table to display the calendar
+ echo ''; // TODO 1i18n
+ echo 'Sun Mon Tue Wed Thu Fri Sat ';
+
+ $isMonthBefore = ($offsetDays !== 0);
+ $isMonthAfter = false;
+ $aDay = new DateInterval("P1D");
+
+ // Loop through the days of the month
+ do {
+ $cellClass = "";
+ if ($isMonthBefore) {
+ $cellClass = "before";
+ } elseif ($isMonthAfter) {
+ $cellClass = "after";
+ }
+
+ $day = $d->format("j");
+ $wd = $d->format("w");
+
+ if ($wd === '0') {
+ echo "";
+ }
+
+ // Print the cell
+ echo "";
+ echo "$day ";
+ // TODO print items
+ echo " ";
+
+ if ($wd === '6') {
+ echo " ";
+ }
+
+ // Increment days
+ $mo1 = $d->format('n');
+ $d->add($aDay);
+ $mo2 = $d->format('n');
+
+ if ($mo1 !== $mo2) {
+ if ($isMonthBefore) {
+ $isMonthBefore = false;
+ } else {
+ $isMonthAfter = true;
+ }
+ }
+ } while (!$isMonthAfter || $d->format('w') !== '0');
+ echo '
';
+ }
+
/**
* @param $opts
*
From cd0920536033a9cc0673029c2cec9522cc9ed119 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Wed, 17 Jan 2024 14:50:38 -0500
Subject: [PATCH 055/423] Moving function related to translation to a separate
class.
---
src/TouchPoint-WP/Utilities/Translation.php | 52 +++++++++++++++++++++
1 file changed, 52 insertions(+)
create mode 100644 src/TouchPoint-WP/Utilities/Translation.php
diff --git a/src/TouchPoint-WP/Utilities/Translation.php b/src/TouchPoint-WP/Utilities/Translation.php
new file mode 100644
index 00000000..6447b5ae
--- /dev/null
+++ b/src/TouchPoint-WP/Utilities/Translation.php
@@ -0,0 +1,52 @@
+settings->camp_name_singular;
+ return strtolower($cName) == "language";
+ }
+
+ /**
+ * Take a string and return the language code that it matches. Null if no match or WPML isn't enabled.
+ *
+ * @param string $string
+ *
+ * @return string|null
+ */
+ public static function getWpmlLangCodeForString(string $string): ?string
+ {
+ if (!defined("ICL_LANGUAGE_CODE")) {
+ return null;
+ }
+
+ global $wpdb;
+
+ $lang_code_query = "
+ SELECT language_code
+ FROM {$wpdb->prefix}icl_languages_translations
+ WHERE name = %s OR language_code = %s
+ ";
+
+ return $wpdb->get_var($wpdb->prepare($lang_code_query, $string, $string));
+ }
+}
\ No newline at end of file
From 1e25defcac623d62992eba774fdbf5fc9af8b849 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Wed, 17 Jan 2024 14:51:46 -0500
Subject: [PATCH 056/423] Adding a function for now+1y because that's common
enough.
---
src/TouchPoint-WP/Utilities.php | 25 +++++++++++++++++++++++--
1 file changed, 23 insertions(+), 2 deletions(-)
diff --git a/src/TouchPoint-WP/Utilities.php b/src/TouchPoint-WP/Utilities.php
index 8853c6cf..fa965942 100644
--- a/src/TouchPoint-WP/Utilities.php
+++ b/src/TouchPoint-WP/Utilities.php
@@ -5,6 +5,7 @@
namespace tp\TouchPointWP;
+use DateInterval;
use DateTimeImmutable;
use DateTimeInterface;
use Exception;
@@ -54,7 +55,21 @@ public static function dateTimeNow(): DateTimeImmutable
return self::$_dateTimeNow;
}
+ /**
+ * @return DateTimeImmutable
+ */
+ public static function dateTimeNowPlus1Y(): DateTimeImmutable
+ {
+ if (self::$_dateTimeNowPlus1Y === null) {
+ $aYear = new DateInterval('P1Y');
+ self::$_dateTimeNowPlus1Y = self::dateTimeNow()->add($aYear);
+ }
+
+ return self::$_dateTimeNowPlus1Y;
+ }
+
private static ?DateTimeImmutable $_dateTimeNow = null;
+ private static ?DateTimeImmutable $_dateTimeNowPlus1Y = null;
/**
* Gets the plural form of a weekday name.
@@ -391,10 +406,10 @@ public static function getAllHeaders(): array
* @param string|null $newUrl
* @param string $title
*
- * @return void
+ * @return int|string The attachmentId for the image. Can be reused for other posts.
* @since 0.0.24
*/
- public static function updatePostImageFromUrl(int $postId, ?string $newUrl, string $title): void
+ public static function updatePostImageFromUrl(int $postId, ?string $newUrl, string $title)
{
// Required for image handling
require_once(ABSPATH . 'wp-admin/includes/media.php');
@@ -434,7 +449,13 @@ public static function updatePostImageFromUrl(int $postId, ?string $newUrl, stri
} catch (Exception $e) {
echo "Exception occurred: " . $e->getMessage();
wp_delete_attachment($attId, true);
+ return 0;
+ }
+ if (is_wp_error($attId)) {
+ echo "Exception occurred: " . $attId->get_error_message();
+ return 0;
}
+ return $attId;
}
/**
From e6bd5e30761c8ce1a12e07bd2898c5ed8021ebe4 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Mon, 22 Jan 2024 15:00:41 -0500
Subject: [PATCH 057/423] Allowing standardizeHtml to take a null input
(converting it to a blank)
---
src/TouchPoint-WP/Utilities.php | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/src/TouchPoint-WP/Utilities.php b/src/TouchPoint-WP/Utilities.php
index fa965942..3f42ed54 100644
--- a/src/TouchPoint-WP/Utilities.php
+++ b/src/TouchPoint-WP/Utilities.php
@@ -508,13 +508,17 @@ public static function standardizeHTags(int $maxAllowed, string $input): string
}
/**
- * @param string $html The HTML to be standardized.
+ * @param ?string $html The HTML to be standardized.
* @param ?string $context A context string to pass to hooks.
*
* @return string
*/
- public static function standardizeHtml(string $html, ?string $context = null): string
+ public static function standardizeHtml(?string $html, ?string $context = null): string
{
+ if ($html === null) {
+ $html = "";
+ }
+
// The tp_standardize_html filter would completely replace the pre-defined process.
$o = apply_filters(TouchPointWP::HOOK_PREFIX . 'standardize_html', $html, $context);
if ($o !== $html) {
From c633e5c4927549be57baa2806f2dd84d0b98c85e Mon Sep 17 00:00:00 2001
From: "James K."
Date: Mon, 22 Jan 2024 21:43:04 -0500
Subject: [PATCH 058/423] standards compliance for php 8
---
src/TouchPoint-WP/Report.php | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/TouchPoint-WP/Report.php b/src/TouchPoint-WP/Report.php
index 29f98c80..7312ecfb 100644
--- a/src/TouchPoint-WP/Report.php
+++ b/src/TouchPoint-WP/Report.php
@@ -352,7 +352,7 @@ public function getPost(bool $create = false): ?WP_Post
new TouchPointWP_Exception("Multiple Posts Exist", 170006);
}
if ($counts > 0) { // post exists already.
- $this->post = $reportPosts[0];
+ $this->post = reset($reportPosts);
} elseif ($create) {
$postId = wp_insert_post([
'post_type' => self::POST_TYPE,
@@ -602,9 +602,9 @@ public static function updateCron(): void
/**
* Handle which data should be converted to JSON. Used for posting to the API.
*
- * @return mixed data which can be serialized by json_encode
+ * @return array data which can be serialized by json_encode
*/
- public function jsonSerialize()
+ public function jsonSerialize(): array
{
return [
'name' => $this->name,
From d39d06edd84a0806a3a2937759393aaf2b53a91c Mon Sep 17 00:00:00 2001
From: "James K."
Date: Wed, 7 Feb 2024 11:12:31 -0500
Subject: [PATCH 059/423] Rename phpdoc.xml. Closes #167.
---
phpdoc.xml => phpdoc.dist.xml | 0
1 file changed, 0 insertions(+), 0 deletions(-)
rename phpdoc.xml => phpdoc.dist.xml (100%)
diff --git a/phpdoc.xml b/phpdoc.dist.xml
similarity index 100%
rename from phpdoc.xml
rename to phpdoc.dist.xml
From 217da3d05f59db02f91a80cc299eb8258e0478a5 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Thu, 8 Feb 2024 21:22:18 -0500
Subject: [PATCH 060/423] Improving links to docs and such in the plugin
listing.
---
i18n/TouchPoint-WP-es_ES.po | 110 +++++++++++++++++-----------
i18n/TouchPoint-WP.pot | 114 ++++++++++++++++++-----------
src/TouchPoint-WP/TouchPointWP.php | 70 ++++++++++++++++++
src/TouchPoint-WP/Utilities.php | 2 +-
touchpoint-wp.php | 1 +
5 files changed, 212 insertions(+), 85 deletions(-)
diff --git a/i18n/TouchPoint-WP-es_ES.po b/i18n/TouchPoint-WP-es_ES.po
index 05653e47..b2143829 100644
--- a/i18n/TouchPoint-WP-es_ES.po
+++ b/i18n/TouchPoint-WP-es_ES.po
@@ -118,13 +118,13 @@ msgstr "Género"
#: src/templates/admin/invKoForm.php:179
#: src/TouchPoint-WP/Involvement.php:1445
-#: src/TouchPoint-WP/TouchPointWP.php:1445
+#: src/TouchPoint-WP/TouchPointWP.php:1515
msgid "Weekday"
msgstr "Día laborable"
#: src/templates/admin/invKoForm.php:183
#: src/TouchPoint-WP/Involvement.php:1471
-#: src/TouchPoint-WP/TouchPointWP.php:1527
+#: src/TouchPoint-WP/TouchPointWP.php:1597
msgid "Time of Day"
msgstr "Hora del día"
@@ -133,7 +133,7 @@ msgid "Prevailing Marital Status"
msgstr "Estado civil prevaleciente"
#: src/templates/admin/invKoForm.php:191
-#: src/TouchPoint-WP/TouchPointWP.php:1581
+#: src/TouchPoint-WP/TouchPointWP.php:1651
msgid "Age Group"
msgstr "Grupo de edad"
@@ -303,38 +303,38 @@ msgstr "Contacta"
msgid "RSVP"
msgstr "RSVP"
-#: src/TouchPoint-WP/TouchPointWP.php:2431
+#: src/TouchPoint-WP/TouchPointWP.php:2501
msgid "Unknown Type"
msgstr "Tipo desconocido"
-#: src/TouchPoint-WP/TouchPointWP.php:2488
+#: src/TouchPoint-WP/TouchPointWP.php:2558
msgid "Your Searches"
msgstr "Tus búsquedas"
-#: src/TouchPoint-WP/TouchPointWP.php:2491
+#: src/TouchPoint-WP/TouchPointWP.php:2561
msgid "Public Searches"
msgstr "Búsquedas públicas"
-#: src/TouchPoint-WP/TouchPointWP.php:2494
+#: src/TouchPoint-WP/TouchPointWP.php:2564
msgid "Status Flags"
msgstr "Indicadores de Estado"
-#: src/TouchPoint-WP/TouchPointWP.php:2499
-#: src/TouchPoint-WP/TouchPointWP.php:2500
+#: src/TouchPoint-WP/TouchPointWP.php:2569
+#: src/TouchPoint-WP/TouchPointWP.php:2570
msgid "Current Value"
msgstr "Valor actual"
-#: src/TouchPoint-WP/TouchPointWP.php:2628
-#: src/TouchPoint-WP/TouchPointWP.php:2668
+#: src/TouchPoint-WP/TouchPointWP.php:2698
+#: src/TouchPoint-WP/TouchPointWP.php:2738
msgid "Invalid or incomplete API Settings."
msgstr "Configuración de API no válida o incompleta."
-#: src/TouchPoint-WP/TouchPointWP.php:2636
-#: src/TouchPoint-WP/TouchPointWP.php:2675
+#: src/TouchPoint-WP/TouchPointWP.php:2706
+#: src/TouchPoint-WP/TouchPointWP.php:2745
msgid "Host appears to be missing from TouchPoint-WP configuration."
msgstr "Parece que falta el host en la configuración de TouchPoint-WP."
-#: src/TouchPoint-WP/TouchPointWP.php:2795
+#: src/TouchPoint-WP/TouchPointWP.php:2865
msgid "People Query Failed"
msgstr "Consulta de registros de personas fallida"
@@ -973,7 +973,7 @@ msgstr "Enviar"
msgid "Nothing to submit."
msgstr "Nada que enviar."
-#: src/TouchPoint-WP/TouchPointWP.php:2736
+#: src/TouchPoint-WP/TouchPointWP.php:2806
msgid "The scripts on TouchPoint that interact with this plugin are out-of-date, and an automatic update failed."
msgstr "Los scripts en TouchPoint que interactúan con este complemento están desactualizados y falló una actualización automática."
@@ -1029,7 +1029,7 @@ msgid "Next"
msgstr "Siguiente"
#: src/TouchPoint-WP/Involvement.php:1493
-#: src/TouchPoint-WP/TouchPointWP.php:1620
+#: src/TouchPoint-WP/TouchPointWP.php:1690
msgid "Marital Status"
msgstr "Estado civil"
@@ -1289,17 +1289,17 @@ msgid "Could not locate."
msgstr "No se pudo localizar."
#: src/TouchPoint-WP/Meeting.php:91
-#: src/TouchPoint-WP/TouchPointWP.php:940
+#: src/TouchPoint-WP/TouchPointWP.php:1010
msgid "Only GET requests are allowed."
msgstr "Solo se permiten solicitudes GET."
#: src/TouchPoint-WP/Meeting.php:119
-#: src/TouchPoint-WP/TouchPointWP.php:369
+#: src/TouchPoint-WP/TouchPointWP.php:439
msgid "Only POST requests are allowed."
msgstr "Solo se permiten solicitudes POST."
#: src/TouchPoint-WP/Meeting.php:129
-#: src/TouchPoint-WP/TouchPointWP.php:378
+#: src/TouchPoint-WP/TouchPointWP.php:448
msgid "Invalid data provided."
msgstr "Datos proporcionados no válidos."
@@ -1312,64 +1312,64 @@ msgstr "Tipo de publicación no válida."
msgid "Enable Campuses"
msgstr "Habilitar Campus"
-#: src/TouchPoint-WP/TouchPointWP.php:1252
+#: src/TouchPoint-WP/TouchPointWP.php:1322
msgid "Classify posts by their general locations."
msgstr "clasificar las publicaciones por sus ubicaciones generales."
-#: src/TouchPoint-WP/TouchPointWP.php:1305
+#: src/TouchPoint-WP/TouchPointWP.php:1375
msgid "Classify posts by their church campus."
msgstr "Clasifique las publicaciones por el campus."
#. translators: %s: taxonomy name, singular
-#: src/TouchPoint-WP/TouchPointWP.php:1357
+#: src/TouchPoint-WP/TouchPointWP.php:1427
msgid "Classify things by %s."
msgstr "Clasifica las cosas por %s."
-#: src/TouchPoint-WP/TouchPointWP.php:1444
+#: src/TouchPoint-WP/TouchPointWP.php:1514
msgid "Classify involvements by the day on which they meet."
msgstr "Clasificar las participaciones por el día en que se reúnen."
-#: src/TouchPoint-WP/TouchPointWP.php:1445
+#: src/TouchPoint-WP/TouchPointWP.php:1515
msgid "Weekdays"
msgstr "Días de semana"
-#: src/TouchPoint-WP/TouchPointWP.php:1482
+#: src/TouchPoint-WP/TouchPointWP.php:1552
msgid "Classify involvements by tense (present, future, past)"
msgstr "Clasificar las implicaciones por tiempo (presente, futuro, pasado)"
-#: src/TouchPoint-WP/TouchPointWP.php:1483
+#: src/TouchPoint-WP/TouchPointWP.php:1553
msgid "Tense"
msgstr "Tiempo"
-#: src/TouchPoint-WP/TouchPointWP.php:1483
+#: src/TouchPoint-WP/TouchPointWP.php:1553
msgid "Tenses"
msgstr "Tiempos"
-#: src/TouchPoint-WP/TouchPointWP.php:1526
+#: src/TouchPoint-WP/TouchPointWP.php:1596
msgid "Classify involvements by the portion of the day in which they meet."
msgstr "Clasifique las participaciones por la parte del día en que se reúnen."
-#: src/TouchPoint-WP/TouchPointWP.php:1527
+#: src/TouchPoint-WP/TouchPointWP.php:1597
msgid "Times of Day"
msgstr "Tiempos del Día"
-#: src/TouchPoint-WP/TouchPointWP.php:1580
+#: src/TouchPoint-WP/TouchPointWP.php:1650
msgid "Classify involvements and users by their age groups."
msgstr "Clasifica las implicaciones y los usuarios por sus grupos de edad."
-#: src/TouchPoint-WP/TouchPointWP.php:1581
+#: src/TouchPoint-WP/TouchPointWP.php:1651
msgid "Age Groups"
msgstr "Grupos de Edad"
-#: src/TouchPoint-WP/TouchPointWP.php:1619
+#: src/TouchPoint-WP/TouchPointWP.php:1689
msgid "Classify involvements by whether participants are mostly single or married."
msgstr "Clasifique las participaciones según si los participantes son en su mayoría solteros o casados."
-#: src/TouchPoint-WP/TouchPointWP.php:1620
+#: src/TouchPoint-WP/TouchPointWP.php:1690
msgid "Marital Statuses"
msgstr "Estados Civiles"
-#: src/TouchPoint-WP/TouchPointWP.php:1664
+#: src/TouchPoint-WP/TouchPointWP.php:1734
msgid "Classify Partners by category chosen in settings."
msgstr "Clasifique a los ministeriales por categoría elegida en la configuración."
@@ -1378,32 +1378,32 @@ msgid "Import campuses as a taxonomy. (You probably want to do this if you're mu
msgstr "Importar campus como taxonomía. (Probablemente quieras hacer esto si tienes varios campus)."
#. translators: %s: taxonomy name, plural
-#: src/TouchPoint-WP/TouchPointWP.php:1225
+#: src/TouchPoint-WP/TouchPointWP.php:1295
msgid "Search %s"
msgstr "Buscar %s"
#. translators: %s: taxonomy name, plural
-#: src/TouchPoint-WP/TouchPointWP.php:1227
+#: src/TouchPoint-WP/TouchPointWP.php:1297
msgid "All %s"
msgstr "Todos los %s"
#. translators: %s: taxonomy name, singular
-#: src/TouchPoint-WP/TouchPointWP.php:1229
+#: src/TouchPoint-WP/TouchPointWP.php:1299
msgid "Edit %s"
msgstr "Editar %s"
#. translators: %s: taxonomy name, singular
-#: src/TouchPoint-WP/TouchPointWP.php:1231
+#: src/TouchPoint-WP/TouchPointWP.php:1301
msgid "Update %s"
msgstr "Actualizar %s"
#. translators: %s: taxonomy name, singular
-#: src/TouchPoint-WP/TouchPointWP.php:1233
+#: src/TouchPoint-WP/TouchPointWP.php:1303
msgid "Add New %s"
msgstr "Agregar Nuevo %s"
#. translators: %s: taxonomy name, singular
-#: src/TouchPoint-WP/TouchPointWP.php:1235
+#: src/TouchPoint-WP/TouchPointWP.php:1305
msgid "New %s"
msgstr "Nuevo %s"
@@ -1420,7 +1420,7 @@ msgstr "Informe de TouchPoint"
msgid "Updated on %1$s at %2$s"
msgstr "Actualizada %1$s %2$s"
-#: src/TouchPoint-WP/TouchPointWP.php:274
+#: src/TouchPoint-WP/TouchPointWP.php:279
msgid "Every 15 minutes"
msgstr "Cada 15 minutos"
@@ -1474,3 +1474,31 @@ msgstr "Contacto bloqueado por spam."
#: src/TouchPoint-WP/Person.php:1541
msgid "Registration Blocked for Spam."
msgstr "Registro bloqueado por spam."
+
+#: src/TouchPoint-WP/TouchPointWP.php:309
+msgctxt "Explanation for the sandwich emoji in \"Made with (emoji) in Philly by Tenth\""
+msgid "Sandwiches (probably cheesesteaks)"
+msgstr "Sándwiches (probablemente cheesesteaks)"
+
+#: src/TouchPoint-WP/TouchPointWP.php:310
+msgctxt "Explanation for the heart emoji in \"Made with (emoji) in Philly by Tenth\""
+msgid "love. obviously."
+msgstr "amar. obviamente."
+
+#: src/TouchPoint-WP/TouchPointWP.php:311
+msgctxt "Explanation for the pretzel emoji in \"Made with (emoji) in Philly by Tenth\""
+msgid "Soft Pretzels"
+msgstr "pretzels suaves"
+
+#: src/TouchPoint-WP/TouchPointWP.php:312
+msgctxt "Explanation for the Donut emoji in \"Made with (emoji) in Philly by Tenth\""
+msgid "Donuts (preferably Federal)"
+msgstr "Donuts (preferiblemente de Federal)"
+
+#: src/TouchPoint-WP/TouchPointWP.php:320
+msgid "Made with %s in Philly by Tenth"
+msgstr "Hecho con %s en Filadelfia por Tenth"
+
+#: src/TouchPoint-WP/TouchPointWP.php:344
+msgid "Documentation"
+msgstr "Documentación"
diff --git a/i18n/TouchPoint-WP.pot b/i18n/TouchPoint-WP.pot
index a748c21d..1384f1bb 100644
--- a/i18n/TouchPoint-WP.pot
+++ b/i18n/TouchPoint-WP.pot
@@ -9,9 +9,9 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"POT-Creation-Date: 2024-02-07T14:00:10+00:00\n"
+"POT-Creation-Date: 2024-02-09T02:18:05+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"X-Generator: WP-CLI 2.8.1\n"
+"X-Generator: WP-CLI 2.9.0\n"
"X-Domain: TouchPoint-WP\n"
#. Plugin Name of the plugin
@@ -149,13 +149,13 @@ msgstr ""
#: src/templates/admin/invKoForm.php:179
#: src/TouchPoint-WP/Involvement.php:1445
-#: src/TouchPoint-WP/TouchPointWP.php:1445
+#: src/TouchPoint-WP/TouchPointWP.php:1515
msgid "Weekday"
msgstr ""
#: src/templates/admin/invKoForm.php:183
#: src/TouchPoint-WP/Involvement.php:1471
-#: src/TouchPoint-WP/TouchPointWP.php:1527
+#: src/TouchPoint-WP/TouchPointWP.php:1597
msgid "Time of Day"
msgstr ""
@@ -164,7 +164,7 @@ msgid "Prevailing Marital Status"
msgstr ""
#: src/templates/admin/invKoForm.php:191
-#: src/TouchPoint-WP/TouchPointWP.php:1581
+#: src/TouchPoint-WP/TouchPointWP.php:1651
msgid "Age Group"
msgstr ""
@@ -337,7 +337,7 @@ msgid "Language"
msgstr ""
#: src/TouchPoint-WP/Involvement.php:1493
-#: src/TouchPoint-WP/TouchPointWP.php:1620
+#: src/TouchPoint-WP/TouchPointWP.php:1690
msgid "Marital Status"
msgstr ""
@@ -451,17 +451,17 @@ msgid "Contact Prohibited."
msgstr ""
#: src/TouchPoint-WP/Meeting.php:91
-#: src/TouchPoint-WP/TouchPointWP.php:940
+#: src/TouchPoint-WP/TouchPointWP.php:1010
msgid "Only GET requests are allowed."
msgstr ""
#: src/TouchPoint-WP/Meeting.php:119
-#: src/TouchPoint-WP/TouchPointWP.php:369
+#: src/TouchPoint-WP/TouchPointWP.php:439
msgid "Only POST requests are allowed."
msgstr ""
#: src/TouchPoint-WP/Meeting.php:129
-#: src/TouchPoint-WP/TouchPointWP.php:378
+#: src/TouchPoint-WP/TouchPointWP.php:448
msgid "Invalid data provided."
msgstr ""
@@ -522,137 +522,165 @@ msgstr ""
msgid "RSVP"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:274
+#: src/TouchPoint-WP/TouchPointWP.php:279
msgid "Every 15 minutes"
msgstr ""
+#: src/TouchPoint-WP/TouchPointWP.php:309
+msgctxt "Explanation for the sandwich emoji in \"Made with (emoji) in Philly by Tenth\""
+msgid "Sandwiches (probably cheesesteaks)"
+msgstr ""
+
+#: src/TouchPoint-WP/TouchPointWP.php:310
+msgctxt "Explanation for the heart emoji in \"Made with (emoji) in Philly by Tenth\""
+msgid "love. obviously."
+msgstr ""
+
+#: src/TouchPoint-WP/TouchPointWP.php:311
+msgctxt "Explanation for the pretzel emoji in \"Made with (emoji) in Philly by Tenth\""
+msgid "Soft Pretzels"
+msgstr ""
+
+#: src/TouchPoint-WP/TouchPointWP.php:312
+msgctxt "Explanation for the Donut emoji in \"Made with (emoji) in Philly by Tenth\""
+msgid "Donuts (preferably Federal)"
+msgstr ""
+
+#: src/TouchPoint-WP/TouchPointWP.php:320
+msgid "Made with %s in Philly by Tenth"
+msgstr ""
+
+#: src/TouchPoint-WP/TouchPointWP.php:344
+msgid "Documentation"
+msgstr ""
+
#. translators: %s: taxonomy name, plural
-#: src/TouchPoint-WP/TouchPointWP.php:1225
+#: src/TouchPoint-WP/TouchPointWP.php:1295
msgid "Search %s"
msgstr ""
#. translators: %s: taxonomy name, plural
-#: src/TouchPoint-WP/TouchPointWP.php:1227
+#: src/TouchPoint-WP/TouchPointWP.php:1297
msgid "All %s"
msgstr ""
#. translators: %s: taxonomy name, singular
-#: src/TouchPoint-WP/TouchPointWP.php:1229
+#: src/TouchPoint-WP/TouchPointWP.php:1299
msgid "Edit %s"
msgstr ""
#. translators: %s: taxonomy name, singular
-#: src/TouchPoint-WP/TouchPointWP.php:1231
+#: src/TouchPoint-WP/TouchPointWP.php:1301
msgid "Update %s"
msgstr ""
#. translators: %s: taxonomy name, singular
-#: src/TouchPoint-WP/TouchPointWP.php:1233
+#: src/TouchPoint-WP/TouchPointWP.php:1303
msgid "Add New %s"
msgstr ""
#. translators: %s: taxonomy name, singular
-#: src/TouchPoint-WP/TouchPointWP.php:1235
+#: src/TouchPoint-WP/TouchPointWP.php:1305
msgid "New %s"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:1252
+#: src/TouchPoint-WP/TouchPointWP.php:1322
msgid "Classify posts by their general locations."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:1305
+#: src/TouchPoint-WP/TouchPointWP.php:1375
msgid "Classify posts by their church campus."
msgstr ""
#. translators: %s: taxonomy name, singular
-#: src/TouchPoint-WP/TouchPointWP.php:1357
+#: src/TouchPoint-WP/TouchPointWP.php:1427
msgid "Classify things by %s."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:1444
+#: src/TouchPoint-WP/TouchPointWP.php:1514
msgid "Classify involvements by the day on which they meet."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:1445
+#: src/TouchPoint-WP/TouchPointWP.php:1515
msgid "Weekdays"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:1482
+#: src/TouchPoint-WP/TouchPointWP.php:1552
msgid "Classify involvements by tense (present, future, past)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:1483
+#: src/TouchPoint-WP/TouchPointWP.php:1553
msgid "Tense"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:1483
+#: src/TouchPoint-WP/TouchPointWP.php:1553
msgid "Tenses"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:1526
+#: src/TouchPoint-WP/TouchPointWP.php:1596
msgid "Classify involvements by the portion of the day in which they meet."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:1527
+#: src/TouchPoint-WP/TouchPointWP.php:1597
msgid "Times of Day"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:1580
+#: src/TouchPoint-WP/TouchPointWP.php:1650
msgid "Classify involvements and users by their age groups."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:1581
+#: src/TouchPoint-WP/TouchPointWP.php:1651
msgid "Age Groups"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:1619
+#: src/TouchPoint-WP/TouchPointWP.php:1689
msgid "Classify involvements by whether participants are mostly single or married."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:1620
+#: src/TouchPoint-WP/TouchPointWP.php:1690
msgid "Marital Statuses"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:1664
+#: src/TouchPoint-WP/TouchPointWP.php:1734
msgid "Classify Partners by category chosen in settings."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2431
+#: src/TouchPoint-WP/TouchPointWP.php:2501
msgid "Unknown Type"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2488
+#: src/TouchPoint-WP/TouchPointWP.php:2558
msgid "Your Searches"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2491
+#: src/TouchPoint-WP/TouchPointWP.php:2561
msgid "Public Searches"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2494
+#: src/TouchPoint-WP/TouchPointWP.php:2564
msgid "Status Flags"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2499
-#: src/TouchPoint-WP/TouchPointWP.php:2500
+#: src/TouchPoint-WP/TouchPointWP.php:2569
+#: src/TouchPoint-WP/TouchPointWP.php:2570
msgid "Current Value"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2628
-#: src/TouchPoint-WP/TouchPointWP.php:2668
+#: src/TouchPoint-WP/TouchPointWP.php:2698
+#: src/TouchPoint-WP/TouchPointWP.php:2738
msgid "Invalid or incomplete API Settings."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2636
-#: src/TouchPoint-WP/TouchPointWP.php:2675
+#: src/TouchPoint-WP/TouchPointWP.php:2706
+#: src/TouchPoint-WP/TouchPointWP.php:2745
msgid "Host appears to be missing from TouchPoint-WP configuration."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2736
+#: src/TouchPoint-WP/TouchPointWP.php:2806
msgid "The scripts on TouchPoint that interact with this plugin are out-of-date, and an automatic update failed."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2795
+#: src/TouchPoint-WP/TouchPointWP.php:2865
msgid "People Query Failed"
msgstr ""
diff --git a/src/TouchPoint-WP/TouchPointWP.php b/src/TouchPoint-WP/TouchPointWP.php
index e2ccd442..c16de330 100644
--- a/src/TouchPoint-WP/TouchPointWP.php
+++ b/src/TouchPoint-WP/TouchPointWP.php
@@ -39,6 +39,9 @@ class TouchPointWP
* The Token
*/
public const TOKEN = "TouchPointWP";
+ public const SLUG = "touchpoint-wp";
+
+ public const DOCS_URL = "https://github.com/TenthPres/TouchPoint-WP/wiki";
/**
* API Endpoint prefix, and specific endpoints. All must be lower-case.
@@ -258,6 +261,8 @@ protected function __construct(string $file = '')
add_filter('cron_schedules', [self::class, 'cronAdd15Minutes']);
+ add_filter('plugin_row_meta', [self::class, 'pluginRowMeta'], 10, 3);
+
self::scheduleCleanup();
}
@@ -277,6 +282,71 @@ public static function cronAdd15Minutes($schedules)
return $schedules;
}
+ /**
+ * Adjust the meta info in the Plugin list with better information.
+ *
+ * @param $pluginMeta array The links and stuff that gets joined by pipes.
+ * @param $pluginFile string Not used here, but points to the root plugin file.
+ * @param $pluginData array metadata from the plugin header.
+ *
+ * @return array
+ * @noinspection PhpUnusedParameterInspection
+ */
+ public static function pluginRowMeta(array $pluginMeta, string $pluginFile, array $pluginData): array
+ {
+ if ($pluginData['slug'] === self::SLUG) {
+
+ // Remove default View Details link.
+ foreach ($pluginMeta as $k => $m) {
+ if (str_contains($m, 'plugin-install.php?tab=plugin-information') ||
+ str_contains($m, 'github.com/jkrrv')) {
+ unset($pluginMeta[$k]);
+ }
+ }
+
+ // Made with X in Philly by Tenth
+ $madeWidths = [
+ "🥪" => _x("Sandwiches (probably cheesesteaks)", "Explanation for the sandwich emoji in \"Made with (emoji) in Philly by Tenth\"", "TouchPoint-WP"),
+ "❤️" => _x("love. obviously.", "Explanation for the heart emoji in \"Made with (emoji) in Philly by Tenth\"", "TouchPoint-WP"),
+ "🥨" => _x("Soft Pretzels", "Explanation for the pretzel emoji in \"Made with (emoji) in Philly by Tenth\"", "TouchPoint-WP"),
+ "🍩" => _x("Donuts (preferably Federal)", "Explanation for the Donut emoji in \"Made with (emoji) in Philly by Tenth\"", "TouchPoint-WP"),
+ ];
+ $madeWidthK = array_rand($madeWidths);
+ /** @noinspection HtmlUnknownTarget */
+ $pluginMeta[] = sprintf(
+ '%s ',
+ "https://www.tenth.org/tech/wp",
+ sprintf(
+ __("Made with %s in Philly by Tenth", "TouchPoint-WP"),
+ sprintf(
+ '%s ',
+ $madeWidths[$madeWidthK],
+ $madeWidthK
+ )
+ )
+ );
+
+ // View details link
+ // note for i18n: these deliberately don't have the domain in order to use the WordPress defaults.
+ /** @noinspection HtmlUnknownTarget */
+ $pluginMeta[] = sprintf(
+ '%s ',
+ $pluginData['PluginURI'],
+ esc_attr(sprintf(__('More information about %s'), $pluginData['Name'])),
+ __('View details')
+ );
+
+ // Documentation link
+ /** @noinspection HtmlUnknownTarget */
+ $pluginMeta[] = sprintf(
+ '%s ',
+ self::DOCS_URL,
+ __('Documentation', "TouchPoint-WP")
+ );
+ }
+ return $pluginMeta;
+ }
+
/**
* Find and replace links to /pyscript with their more functional brother, /PyScript. That small typo makes bad
* things happen.
diff --git a/src/TouchPoint-WP/Utilities.php b/src/TouchPoint-WP/Utilities.php
index c40a2192..ad937842 100644
--- a/src/TouchPoint-WP/Utilities.php
+++ b/src/TouchPoint-WP/Utilities.php
@@ -626,7 +626,7 @@ public static function checkForUpdate(): ?object
return (object)[
'id' => 'touchpoint-wp/touchpoint-wp.php',
- 'slug' => 'touchpoint-wp',
+ 'slug' => TouchPointWP::SLUG,
'plugin' => 'touchpoint-wp/touchpoint-wp.php',
'new_version' => $newV,
'url' => 'https://github.com/TenthPres/TouchPoint-WP/',
diff --git a/touchpoint-wp.php b/touchpoint-wp.php
index c23ced2c..2a834854 100644
--- a/touchpoint-wp.php
+++ b/touchpoint-wp.php
@@ -23,6 +23,7 @@
Tested up to: 6.2
Requires PHP: 7.4
Release Asset: true
+Domain Path: /i18n
*/
namespace tp\TouchPointWP;
From 9c1be9267b1abc41179b2da99e6622ffd5dac368 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Thu, 8 Feb 2024 22:35:39 -0500
Subject: [PATCH 061/423] Correct an issue with unset values
---
src/TouchPoint-WP/TouchPointWP.php | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/TouchPoint-WP/TouchPointWP.php b/src/TouchPoint-WP/TouchPointWP.php
index c16de330..6a41218d 100644
--- a/src/TouchPoint-WP/TouchPointWP.php
+++ b/src/TouchPoint-WP/TouchPointWP.php
@@ -294,7 +294,7 @@ public static function cronAdd15Minutes($schedules)
*/
public static function pluginRowMeta(array $pluginMeta, string $pluginFile, array $pluginData): array
{
- if ($pluginData['slug'] === self::SLUG) {
+ if (isset($pluginData['slug']) && $pluginData['slug'] === self::SLUG) {
// Remove default View Details link.
foreach ($pluginMeta as $k => $m) {
@@ -2786,12 +2786,12 @@ private static function parseApiResponse($response)
// Most likely the issue where a module import failed for no apparent reason.
if (property_exists($respDecoded, 'output') &&
strpos($respDecoded->output, "Traceback (most recent call last):") === 0) {
- throw new TouchPointWP_Exception("Script error: " . $respDecoded->output, 179001);
+ throw new TouchPointWP_Exception("Script error: " . $respDecoded->output, 179001, null, $response);
}
// Some other script error
if (property_exists($respDecoded, 'output') && $respDecoded->output !== '') {
- throw new TouchPointWP_Exception("Script error: " . $respDecoded->output, 179002);
+ throw new TouchPointWP_Exception("Script error: " . $respDecoded->output, 179002, null, $response);
}
// Error caught by error handling within Python script
From f64a1296b6c12166e2d772acd6a2f5a16aa34d58 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Thu, 8 Feb 2024 22:37:51 -0500
Subject: [PATCH 062/423] Better error reporting for API issues Correcting some
@since tags
---
src/TouchPoint-WP/TouchPointWP_AdminAPI.php | 12 ++++++++++--
src/TouchPoint-WP/TouchPointWP_Exception.php | 7 ++++---
src/TouchPoint-WP/TouchPointWP_Settings.php | 6 +++---
3 files changed, 17 insertions(+), 8 deletions(-)
diff --git a/src/TouchPoint-WP/TouchPointWP_AdminAPI.php b/src/TouchPoint-WP/TouchPointWP_AdminAPI.php
index 4f1b7706..63f152dd 100644
--- a/src/TouchPoint-WP/TouchPointWP_AdminAPI.php
+++ b/src/TouchPoint-WP/TouchPointWP_AdminAPI.php
@@ -484,13 +484,21 @@ private static function getTpFilenameForRepoFilename(string $fn): string
/**
* Display an error when there's something wrong with the TouchPoint connection.
+ *
+ * @param string $message
+ * @param ?mixed $devDetail
*/
- public static function showError($message)
+ public static function showError(string $message, $devDetail = null)
{
add_action('admin_notices',
- function () use ($message) {
+ function () use ($message, $devDetail) {
$class = 'notice notice-error';
printf('', esc_attr($class), $message);
+
+ if ($devDetail !== null) {
+ /** @noinspection JSCheckFunctionSignatures */
+ printf('', json_encode(json_encode($devDetail)));
+ }
}, 10, 2
);
}
diff --git a/src/TouchPoint-WP/TouchPointWP_Exception.php b/src/TouchPoint-WP/TouchPointWP_Exception.php
index b3fbe51b..aca16672 100644
--- a/src/TouchPoint-WP/TouchPointWP_Exception.php
+++ b/src/TouchPoint-WP/TouchPointWP_Exception.php
@@ -29,8 +29,9 @@ class TouchPointWP_Exception extends Exception
* @param string $message
* @param int $code
* @param ?Throwable $previous
+ * @param mixed $devDetail
*/
- public function __construct(string $message = "", int $code = 0, ?Throwable $previous = null)
+ public function __construct(string $message = "", int $code = 0, ?Throwable $previous = null, $devDetail = null)
{
parent::__construct($message, $code, $previous);
if (is_admin() && TouchPointWP::currentUserIsAdmin()) {
@@ -39,10 +40,10 @@ public function __construct(string $message = "", int $code = 0, ?Throwable $pre
$message .= " " . $this->getFile() . " @ " . $this->getLine() . " ";
$message .= str_replace("\n", " ", $this->getTraceAsString());
}
- TouchPointWP_AdminAPI::showError($message);
+ TouchPointWP_AdminAPI::showError($message, $devDetail);
}
error_log($message);
- self::debugLog($this->getCode(), $this->getFile(), $this->getLine(), $this->getMessage());
+ self::debugLog($this->getCode(), $this->getFile(), $this->getLine(), $this->getMessage() . $devDetail);
}
/**
diff --git a/src/TouchPoint-WP/TouchPointWP_Settings.php b/src/TouchPoint-WP/TouchPointWP_Settings.php
index 03b22d80..0f7b60d5 100644
--- a/src/TouchPoint-WP/TouchPointWP_Settings.php
+++ b/src/TouchPoint-WP/TouchPointWP_Settings.php
@@ -139,7 +139,7 @@ public function __construct(TouchPointWP $parent)
* @param ?TouchPointWP $parent Object instance.
*
* @return TouchPointWP_Settings instance
- * @since 1.0.0
+ * @since 0.0.37
* @static
* @see TouchPointWP()
*/
@@ -1597,7 +1597,7 @@ protected function validation_updateScriptsIfChanged($new, string $field)
/**
* Cloning is forbidden.
*
- * @since 1.0.0
+ * @since 0.0.37
*/
public function __clone()
{
@@ -1611,7 +1611,7 @@ public function __clone()
/**
* Unserializing instances of this class is forbidden.
*
- * @since 1.0.0
+ * @since 0.0.37
*/
public function __wakeup()
{
From cd042348487afe0ba978d8839c275d4c8e348171 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Thu, 8 Feb 2024 22:40:47 -0500
Subject: [PATCH 063/423] Typo
---
src/TouchPoint-WP/TouchPointWP.php | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/TouchPoint-WP/TouchPointWP.php b/src/TouchPoint-WP/TouchPointWP.php
index 6a41218d..35daa121 100644
--- a/src/TouchPoint-WP/TouchPointWP.php
+++ b/src/TouchPoint-WP/TouchPointWP.php
@@ -305,13 +305,13 @@ public static function pluginRowMeta(array $pluginMeta, string $pluginFile, arra
}
// Made with X in Philly by Tenth
- $madeWidths = [
+ $madeWiths = [
"🥪" => _x("Sandwiches (probably cheesesteaks)", "Explanation for the sandwich emoji in \"Made with (emoji) in Philly by Tenth\"", "TouchPoint-WP"),
"❤️" => _x("love. obviously.", "Explanation for the heart emoji in \"Made with (emoji) in Philly by Tenth\"", "TouchPoint-WP"),
"🥨" => _x("Soft Pretzels", "Explanation for the pretzel emoji in \"Made with (emoji) in Philly by Tenth\"", "TouchPoint-WP"),
"🍩" => _x("Donuts (preferably Federal)", "Explanation for the Donut emoji in \"Made with (emoji) in Philly by Tenth\"", "TouchPoint-WP"),
];
- $madeWidthK = array_rand($madeWidths);
+ $madeWithK = array_rand($madeWiths);
/** @noinspection HtmlUnknownTarget */
$pluginMeta[] = sprintf(
'%s ',
@@ -320,8 +320,8 @@ public static function pluginRowMeta(array $pluginMeta, string $pluginFile, arra
__("Made with %s in Philly by Tenth", "TouchPoint-WP"),
sprintf(
'%s ',
- $madeWidths[$madeWidthK],
- $madeWidthK
+ $madeWiths[$madeWithK],
+ $madeWithK
)
)
);
From 7c22bd3ce9d504212618e843caddadc854255494 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Sat, 10 Feb 2024 18:14:17 -0500
Subject: [PATCH 064/423] php min to 8.0. V back to 0.0.90. Related changes.
---
.idea/php.xml | 2 +-
composer.json | 4 +-
package.json | 2 +-
src/TouchPoint-WP/EventsCalendar.php | 2 +-
src/TouchPoint-WP/Involvement.php | 45 ++--
.../Involvement_PostTypeSettings.php | 32 ++-
src/TouchPoint-WP/TouchPointWP.php | 54 ++--
src/TouchPoint-WP/TouchPointWP_AdminAPI.php | 7 +-
src/TouchPoint-WP/TouchPointWP_Settings.php | 230 ++++++++++--------
src/TouchPoint-WP/Utilities.php | 65 +++--
src/python/WebApi.py | 2 +-
touchpoint-wp.php | 2 +-
12 files changed, 268 insertions(+), 179 deletions(-)
diff --git a/.idea/php.xml b/.idea/php.xml
index 299cb8ee..a20c6b90 100644
--- a/.idea/php.xml
+++ b/.idea/php.xml
@@ -16,7 +16,7 @@
-
+
diff --git a/composer.json b/composer.json
index ebee13e1..8a9d67f0 100644
--- a/composer.json
+++ b/composer.json
@@ -3,7 +3,7 @@
"description": "A WordPress Plugin for integrating with TouchPoint Church Management Software.",
"license": "AGPL-3.0-or-later",
"type": "wordpress-plugin",
- "version": "1.0.0",
+ "version": "0.0.90",
"keywords": [
"wordpress",
"wp",
@@ -27,7 +27,7 @@
}
},
"require": {
- "php": ">=7.4.0",
+ "php": ">=8.0",
"composer/installers": "~1.0",
"ext-json": "*",
"ext-zip": "*"
diff --git a/package.json b/package.json
index 0e882e0a..4e5933cd 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "touchpoint-wp",
- "version": "1.0.0",
+ "version": "0.0.90",
"description": "A WordPress Plugin for integrating with TouchPoint Church Management Software.",
"directories": {
"doc": "docs"
diff --git a/src/TouchPoint-WP/EventsCalendar.php b/src/TouchPoint-WP/EventsCalendar.php
index 5ee9728d..a6bf27d5 100644
--- a/src/TouchPoint-WP/EventsCalendar.php
+++ b/src/TouchPoint-WP/EventsCalendar.php
@@ -19,7 +19,7 @@
* Provides an interface to bridge the gap between The Events Calendar plugin (by ModernTribe) and the TouchPoint
* mobile app.
*
- * @deprecated since 1.0.0
+ * @deprecated since 0.0.90
*/
abstract class EventsCalendar implements api, module
{
diff --git a/src/TouchPoint-WP/Involvement.php b/src/TouchPoint-WP/Involvement.php
index 7c5e3c50..77cf67b1 100644
--- a/src/TouchPoint-WP/Involvement.php
+++ b/src/TouchPoint-WP/Involvement.php
@@ -25,7 +25,7 @@
use tp\TouchPointWP\Utilities\Http;
use tp\TouchPointWP\Utilities\PersonArray;
use tp\TouchPointWP\Utilities\PersonQuery;
-use WP_Error;
+use tp\TouchPointWP\Utilities\Translation;
use WP_Post;
use WP_Query;
use WP_Term;
@@ -140,7 +140,7 @@ protected function __construct(object $object)
}
// clean up involvement type to not have hook prefix, if it does.
- if (strpos($this->invType, TouchPointWP::HOOK_PREFIX) === 0) {
+ if (str_starts_with($this->invType, TouchPointWP::HOOK_PREFIX)) {
$this->invType = substr($this->invType, strlen(TouchPointWP::HOOK_PREFIX));
}
@@ -171,7 +171,7 @@ protected function __construct(object $object)
'slug' => $t->slug
];
$ta = $t->taxonomy;
- if (strpos($ta, TouchPointWP::HOOK_PREFIX) === 0) {
+ if (str_starts_with($ta, TouchPointWP::HOOK_PREFIX)) {
$ta = substr_replace($ta, "", 0, $hookLength);
}
if ( ! isset($this->attributes->$ta)) {
@@ -252,8 +252,6 @@ final protected static function &allTypeSettings(): array
public static function init(): void
{
foreach (self::allTypeSettings() as $type) {
- /** @var $type Involvement_PostTypeSettings */
-
register_post_type(
$type->postType,
[
@@ -330,9 +328,9 @@ public static function checkUpdates(): void
*
* @param bool $verbose Whether to print debugging info.
*
- * @return false|int False on failure, or the number of groups that were updated or deleted.
+ * @return int False on failure, or the number of groups that were updated or deleted.
*/
- public static function updateFromTouchPoint(bool $verbose = false)
+ public final static function updateFromTouchPoint(bool $verbose = false): int
{
$count = 0;
$success = true;
@@ -432,7 +430,7 @@ public static function templateFilter(string $template): string
* @return bool|string True if involvement can be joined. False if no registration exists. Or, a string with why
* it can't be joined otherwise.
*/
- public function acceptingNewMembers()
+ public function acceptingNewMembers(): bool|string
{
if (get_post_meta($this->post_id, TouchPointWP::SETTINGS_PREFIX . "groupFull", true) === '1') {
return __("Currently Full", 'TouchPoint-WP');
@@ -442,7 +440,7 @@ public function acceptingNewMembers()
return __("Currently Closed", 'TouchPoint-WP');
}
- $now = current_datetime();
+ $now = Utilities::dateTimeNow();
$regStart = get_post_meta($this->post_id, TouchPointWP::SETTINGS_PREFIX . "regStart", true);
if ($regStart !== false && $regStart !== '' && $regStart > $now) {
return __("Registration Not Open Yet", 'TouchPoint-WP');
@@ -517,7 +515,7 @@ protected function schedules(): array
* @param int $invId
* @param ?Involvement $inv
*
- * @return string
+ * @return ?string
*/
public static function scheduleString(int $invId, $inv = null): ?string
{
@@ -529,7 +527,7 @@ public static function scheduleString(int $invId, $inv = null): ?string
if (! $inv) {
try {
$inv = self::fromInvId($invId);
- } catch (TouchPointWP_Exception $e) {
+ } catch (TouchPointWP_Exception) {
return null;
}
}
@@ -542,7 +540,7 @@ public static function scheduleString(int $invId, $inv = null): ?string
self::SCHEDULE_STRING_CACHE_EXPIRATION
);
}
- return $inv->_scheduleString;
+ return $inv->_scheduleString === "" ? null : $inv->_scheduleString;
}
/**
@@ -646,11 +644,11 @@ private static function computeCommonOccurrences(array $meetings = [], array $sc
*
* @return string
*/
- protected function scheduleString_calc(): ?string
+ protected function scheduleString_calc(): string
{
$commonOccurrences = self::computeCommonOccurrences($this->meetings(), $this->schedules());
- $dayStr = null;
+ $dayStr = "";
$timeFormat = get_option('time_format');
$dateFormat = get_option('date_format');
@@ -884,7 +882,7 @@ public static function actionsShortcode($params = [], string $content = ""): str
try {
$inv = self::fromPost($post);
$iid = $inv->invId;
- } catch (TouchPointWP_Exception $e) {
+ } catch (TouchPointWP_Exception) {
$iid = null;
}
}
@@ -1543,14 +1541,18 @@ protected static final function filterDropdownHtml(array $params, Involvement_Po
*
* @param WP_Post $post
*
- * @return Involvement
+ * @return ?Involvement
*
* @throws TouchPointWP_Exception If the involvement can't be created from the post, an exception is thrown.
*/
- public static function fromPost(WP_Post $post): Involvement
+ public static function fromPost(WP_Post $post): ?Involvement
{
$iid = intval($post->{TouchPointWP::INVOLVEMENT_META_KEY});
+ if ($iid === 0) {
+ return null;
+ }
+
if ( ! isset(self::$_instances[$iid])) {
self::$_instances[$iid] = new Involvement($post);
}
@@ -1584,6 +1586,7 @@ public static function api(array $uri): bool
case "nearby":
TouchPointWP::doCacheHeaders(TouchPointWP::CACHE_PRIVATE);
self::ajaxNearby();
+ /** @noinspection PhpUnreachableStatementInspection */
exit;
case "force-sync":
@@ -1872,7 +1875,7 @@ public static function updateCron(): void
{
try {
self::updateFromTouchPoint();
- } catch (Exception $ex) {
+ } catch (Exception) {
}
}
@@ -1955,7 +1958,7 @@ public static function sortPosts(WP_Post $a, WP_Post $b): int
$b = self::fromPost($b);
return self::sort($a, $b);
- } catch (TouchPointWP_Exception $ex) {
+ } catch (TouchPointWP_Exception) {
return $a <=> $b;
}
}
@@ -2114,7 +2117,7 @@ final protected static function updateInvolvementPostsForType(Involvement_PostTy
$histVal = new DateInterval("P{$histDays}D");
$nowMinusH = $now->sub($histVal);
unset($aYear);
- } catch (Exception $e) {
+ } catch (Exception) {
return false;
}
@@ -2610,7 +2613,7 @@ public static function filterAuthor($author): string
$i = Involvement::fromPost($post);
$author = $i->leaders()->__toString();
- } catch (TouchPointWP_Exception $e) {
+ } catch (TouchPointWP_Exception) {
}
}
diff --git a/src/TouchPoint-WP/Involvement_PostTypeSettings.php b/src/TouchPoint-WP/Involvement_PostTypeSettings.php
index aa7c63d5..ae8bcb17 100644
--- a/src/TouchPoint-WP/Involvement_PostTypeSettings.php
+++ b/src/TouchPoint-WP/Involvement_PostTypeSettings.php
@@ -94,6 +94,25 @@ public function __construct(object $o)
}
}
+ /**
+ * Get a list of all division IDs that are being imported by all types.
+ *
+ * @return int[]
+ */
+ public static function getAllDivs(): array
+ {
+ $r = [];
+ foreach (self::instance() as $s) {
+ $r = [...$r, ...$s->importDivs];
+ }
+ return array_unique($r);
+ }
+
+ /**
+ * Get the Post Type for use with WordPress functions
+ *
+ * @return string
+ */
public function postTypeWithPrefix(): string
{
self::instance();
@@ -101,6 +120,11 @@ public function postTypeWithPrefix(): string
return TouchPointWP::HOOK_PREFIX . $this->postType;
}
+ /**
+ * Get the Post Type without the hook prefix.
+ *
+ * @return string
+ */
public function postTypeWithoutPrefix(): string
{
self::instance();
@@ -216,7 +240,7 @@ public static function validateNewSettings(string $new): string
$name = preg_replace('/\W+/', '-', strtolower($type->namePlural));
try {
$type->slug = $name . ($first ? "" : "-" . bin2hex(random_bytes(1)));
- } catch (Exception $e) {
+ } catch (Exception) {
$type->slug = $name . ($first ? "" : "-" . bin2hex($count++));
}
$first = false;
@@ -251,7 +275,7 @@ public static function validateNewSettings(string $new): string
$slug = preg_replace('/\W+/', '', strtolower($type->slug));
try {
$type->postType = self::POST_TYPE_PREFIX . $slug . ($first ? "" : "_" . bin2hex(random_bytes(1)));
- } catch (Exception $e) {
+ } catch (Exception) {
$type->postType = self::POST_TYPE_PREFIX . $slug . ($first ? "" : "_" . bin2hex($count++));
}
$first = false;
@@ -305,7 +329,7 @@ protected static function memberTypesToInts($memberTypes): array
*/
public function leaderTypeInts(): array
{
- return self::memberTypesToInts($this->leaderTypes);
+ return Utilities::idArrayToIntArray($this->leaderTypes);
}
/**
@@ -319,6 +343,6 @@ public function hostTypeInts(): ?array
return null;
}
- return self::memberTypesToInts($this->hostTypes);
+ return Utilities::idArrayToIntArray($this->hostTypes);
}
}
\ No newline at end of file
diff --git a/src/TouchPoint-WP/TouchPointWP.php b/src/TouchPoint-WP/TouchPointWP.php
index b551dfee..2f0f2a2b 100644
--- a/src/TouchPoint-WP/TouchPointWP.php
+++ b/src/TouchPoint-WP/TouchPointWP.php
@@ -32,7 +32,7 @@ class TouchPointWP
/**
* Version number
*/
- public const VERSION = "1.0.0";
+ public const VERSION = "0.0.90";
/**
* The Token
@@ -254,10 +254,10 @@ protected function __construct(string $file = '')
public static function cronAdd15Minutes($schedules)
{
// Adds once weekly to the existing schedules.
- $schedules['tp_every_15_minutes'] = array(
+ $schedules['tp_every_15_minutes'] = [
'interval' => 15 * 60,
'display' => __('Every 15 minutes', 'TouchPoint-WP')
- );
+ ];
return $schedules;
}
@@ -272,7 +272,7 @@ public static function cronAdd15Minutes($schedules)
* @since 0.0.23
*
*/
- public static function capitalPyScript($text): string
+ public static function capitalPyScript(mixed $text): string
{
if ( ! self::instance()->settings->hasValidApiSettings()) {
return $text;
@@ -384,7 +384,7 @@ public function parseRequest($continue, $wp, $extraVars): bool
$reqUri['path'] = $reqUri['path'] ?? "";
// Remove trailing slash if it exists (and, it probably does)
- if (substr($reqUri['path'], -1) === '/') {
+ if (str_ends_with($reqUri['path'], '/')) {
$reqUri['path'] = substr($reqUri['path'], 0, -1);
}
@@ -587,7 +587,7 @@ public function getJsLocalizationDir(): string
/**
* Load plugin textdomain
*/
- public function loadLocalizations()
+ public function loadLocalizations(): void
{
$locale = apply_filters('plugin_locale', get_locale(), 'TouchPoint-WP');
@@ -920,11 +920,11 @@ public static function requireStyle(string $name = null): void
*/
public function filterByTag(?string $tag, ?string $handle): string
{
- if (strpos($tag, 'async') !== false &&
+ if (str_contains($tag, 'async') &&
strpos($handle, '-async') > 0) {
$tag = str_replace(' src=', ' async="async" src=', $tag);
}
- if (strpos($tag, 'defer') !== false &&
+ if (str_contains($tag, 'defer') &&
strpos($handle, '-defer') > 0
) {
$tag = str_replace('";
?>
From 03b472071dec067b3cf014363af75c103fe70097 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Tue, 13 Feb 2024 09:07:09 -0500
Subject: [PATCH 070/423] Adding php output to translations for future
WordPress changes.
---
.gitignore | 1 +
generateI18n_2forPublish.ps1 | 3 ++-
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/.gitignore b/.gitignore
index 236fe5d4..768f5b34 100644
--- a/.gitignore
+++ b/.gitignore
@@ -18,6 +18,7 @@ node_modules
/i18n/*.json
/i18n/*.mo
+/i18n/*.l10n.php
package-lock.json
diff --git a/generateI18n_2forPublish.ps1 b/generateI18n_2forPublish.ps1
index 8939a2e2..a466eb47 100644
--- a/generateI18n_2forPublish.ps1
+++ b/generateI18n_2forPublish.ps1
@@ -11,4 +11,5 @@ Remove-Item "i18n/*.json"
Remove-Item "i18n/*.mo"
php .\wp-cli.phar i18n make-json i18n --no-purge
-php .\wp-cli.phar i18n make-mo i18n
\ No newline at end of file
+php .\wp-cli.phar i18n make-mo i18n
+php .\wp-cli.phar i18n make-php i18n
\ No newline at end of file
From 72cd9ad95ebc88e1322cfc6f53add9bc73b55a42 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Sun, 25 Feb 2024 12:14:40 -0500
Subject: [PATCH 071/423] Resolving a casting issue in PHP 8.
---
src/TouchPoint-WP/Utilities.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/TouchPoint-WP/Utilities.php b/src/TouchPoint-WP/Utilities.php
index 34bcb931..6cd9df8f 100644
--- a/src/TouchPoint-WP/Utilities.php
+++ b/src/TouchPoint-WP/Utilities.php
@@ -401,7 +401,7 @@ public static function getRegisteredPostTypesAsKVArray(): array{
*/
public static function createGuid(): string
{
- mt_srand(( double )microtime() * 10000);
+ mt_srand((int)(microtime(true) * 10000));
$char = strtoupper(md5(uniqid(rand(), true)));
$hyphen = chr(45); // "-"
From dc3f5a2e24f98316d4647c48f11b9d8fbfb9a33d Mon Sep 17 00:00:00 2001
From: "James K."
Date: Wed, 28 Feb 2024 09:16:12 -0500
Subject: [PATCH 072/423] Adding void return
---
src/TouchPoint-WP/jsInstantiation.php | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/src/TouchPoint-WP/jsInstantiation.php b/src/TouchPoint-WP/jsInstantiation.php
index ad7ea6c9..5b6d6855 100644
--- a/src/TouchPoint-WP/jsInstantiation.php
+++ b/src/TouchPoint-WP/jsInstantiation.php
@@ -15,7 +15,6 @@
*/
trait jsInstantiation
{
-
private static array $queueForJsInstantiation = [];
private static array $constructedObjects = [];
private static bool $requireAllObjectsInJs = false;
@@ -62,7 +61,7 @@ protected function enqueueForJsInstantiation(): bool
*
* @return void
*/
- protected function registerConstruction()
+ protected function registerConstruction(): void
{
if ( ! isset(self::$constructedObjects[$this->getTouchPointId()])) {
self::$constructedObjects[$this->getTouchPointId()] = $this;
From 6c9e670b3ca2a86325a291ce2bb2c501d5401f05 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Wed, 28 Feb 2024 09:20:24 -0500
Subject: [PATCH 073/423] i18n & comments
---
i18n/TouchPoint-WP-es_ES.po | 438 +++++++++++++-------------
i18n/TouchPoint-WP.pot | 440 ++++++++++++++-------------
src/TouchPoint-WP/EventsCalendar.php | 2 +-
src/TouchPoint-WP/Taxonomies.php | 2 +-
src/templates/admin/invKoForm.php | 2 +-
touchpoint-wp.php | 2 +-
6 files changed, 453 insertions(+), 433 deletions(-)
diff --git a/i18n/TouchPoint-WP-es_ES.po b/i18n/TouchPoint-WP-es_ES.po
index a301d48a..2ce0cb93 100644
--- a/i18n/TouchPoint-WP-es_ES.po
+++ b/i18n/TouchPoint-WP-es_ES.po
@@ -12,22 +12,27 @@ msgstr ""
"Language: \n"
#. Plugin Name of the plugin
+#: C:\Dev\TouchPoint-WP\touchpoint-wp.php
msgid "TouchPoint WP"
msgstr "TouchPoint WP"
#. Plugin URI of the plugin
+#: C:\Dev\TouchPoint-WP\touchpoint-wp.php
msgid "https://github.com/tenthpres/touchpoint-wp"
msgstr "https://github.com/tenthpres/touchpoint-wp"
#. Description of the plugin
+#: C:\Dev\TouchPoint-WP\touchpoint-wp.php
msgid "A WordPress Plugin for integrating with TouchPoint Church Management Software."
msgstr "Un complemento de WordPress para integrarse con TouchPoint, el software de administración de iglesias."
#. Author of the plugin
+#: C:\Dev\TouchPoint-WP\touchpoint-wp.php
msgid "James K"
msgstr "James K"
#. Author URI of the plugin
+#: C:\Dev\TouchPoint-WP\touchpoint-wp.php
msgid "https://github.com/jkrrv"
msgstr "https://github.com/jkrrv"
@@ -50,7 +55,7 @@ msgid "Slug"
msgstr "Slug"
#: src/templates/admin/invKoForm.php:47
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:924
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:918
msgid "Divisions to Import"
msgstr "Divisiones a Importar"
@@ -117,13 +122,13 @@ msgid "Gender"
msgstr "Género"
#: src/templates/admin/invKoForm.php:188
-#: src/TouchPoint-WP/Involvement.php:1347
+#: src/TouchPoint-WP/Involvement.php:1464
#: src/TouchPoint-WP/Taxonomies.php:744
msgid "Weekday"
msgstr "Día laborable"
#: src/templates/admin/invKoForm.php:192
-#: src/TouchPoint-WP/Involvement.php:1373
+#: src/TouchPoint-WP/Involvement.php:1490
#: src/TouchPoint-WP/Taxonomies.php:802
msgid "Time of Day"
msgstr "Hora del día"
@@ -168,7 +173,7 @@ msgstr "Seleccione..."
#. translators: %s will be the plural post type (e.g. Small Groups)
#: src/templates/parts/involvement-list-none.php:16
#: src/templates/parts/meeting-list-none.php:15
-#: src/TouchPoint-WP/Involvement.php:1594
+#: src/TouchPoint-WP/Involvement.php:1710
msgid "No %s Found."
msgstr "No se encontraron %s"
@@ -203,79 +208,79 @@ msgstr "Periódico"
msgid "Multi-Day"
msgstr "varios días"
-#: src/TouchPoint-WP/Involvement.php:441
+#: src/TouchPoint-WP/Involvement.php:466
msgid "Currently Full"
msgstr "Actualmente lleno"
-#: src/TouchPoint-WP/Involvement.php:445
+#: src/TouchPoint-WP/Involvement.php:470
msgid "Currently Closed"
msgstr "Actualmente cerrado"
-#: src/TouchPoint-WP/Involvement.php:451
+#: src/TouchPoint-WP/Involvement.php:476
msgid "Registration Not Open Yet"
msgstr "Registro aún no abierto"
-#: src/TouchPoint-WP/Involvement.php:456
+#: src/TouchPoint-WP/Involvement.php:481
msgid "Registration Closed"
msgstr "Registro cerrado"
-#: src/TouchPoint-WP/Involvement.php:1222
+#: src/TouchPoint-WP/Involvement.php:1339
#: src/TouchPoint-WP/Partner.php:769
msgid "Any"
msgstr "Cualquier"
#. translators: %s is for the user-provided term for the items on the map (e.g. Small Group or Partner)
-#: src/TouchPoint-WP/Involvement.php:1430
+#: src/TouchPoint-WP/Involvement.php:1547
#: src/TouchPoint-WP/Partner.php:791
msgid "The %s listed are only those shown on the map."
msgstr "Los %s enumerados son solo los que se muestran en el mapa."
-#: src/TouchPoint-WP/Involvement.php:2395
+#: src/TouchPoint-WP/Involvement.php:3069
msgid "Men Only"
msgstr "Solo hombres"
-#: src/TouchPoint-WP/Involvement.php:2398
+#: src/TouchPoint-WP/Involvement.php:3072
msgid "Women Only"
msgstr "Solo mujeres"
-#: src/TouchPoint-WP/Involvement.php:2461
+#: src/TouchPoint-WP/Involvement.php:3147
msgid "Contact Leaders"
msgstr "Contacta con las líderes"
-#: src/TouchPoint-WP/Involvement.php:2469
+#: src/TouchPoint-WP/Involvement.php:3155
msgid "Register"
msgstr "Regístrate ahora"
-#: src/TouchPoint-WP/Involvement.php:2474
+#: src/TouchPoint-WP/Involvement.php:3160
msgid "Create Account"
msgstr "Crear cuenta"
-#: src/TouchPoint-WP/Involvement.php:2478
+#: src/TouchPoint-WP/Involvement.php:3164
msgid "Schedule"
msgstr "Programe"
-#: src/TouchPoint-WP/Involvement.php:2483
+#: src/TouchPoint-WP/Involvement.php:3169
msgid "Give"
msgstr "Dar"
-#: src/TouchPoint-WP/Involvement.php:2486
+#: src/TouchPoint-WP/Involvement.php:3172
msgid "Manage Subscriptions"
msgstr "Administrar suscripciones"
-#: src/TouchPoint-WP/Involvement.php:2489
+#: src/TouchPoint-WP/Involvement.php:3175
msgid "Record Attendance"
msgstr "Registre su asistencia"
-#: src/TouchPoint-WP/Involvement.php:2492
+#: src/TouchPoint-WP/Involvement.php:3178
msgid "Get Tickets"
msgstr "Obtener boletos"
-#: src/TouchPoint-WP/Involvement.php:2499
+#: src/TouchPoint-WP/Involvement.php:3185
#: assets/js/base-defer.js:991
msgid "Join"
msgstr "Únete"
-#: src/TouchPoint-WP/Involvement.php:2508
+#: src/TouchPoint-WP/Involvement.php:3194
#: src/TouchPoint-WP/Partner.php:1247
msgid "Show on Map"
msgstr "Muestra en el mapa"
@@ -305,509 +310,509 @@ msgstr "Contacta"
msgid "RSVP"
msgstr "RSVP"
-#: src/TouchPoint-WP/TouchPointWP.php:1893
+#: src/TouchPoint-WP/TouchPointWP.php:1900
msgid "Unknown Type"
msgstr "Tipo desconocido"
-#: src/TouchPoint-WP/TouchPointWP.php:1950
+#: src/TouchPoint-WP/TouchPointWP.php:1957
msgid "Your Searches"
msgstr "Tus búsquedas"
-#: src/TouchPoint-WP/TouchPointWP.php:1953
+#: src/TouchPoint-WP/TouchPointWP.php:1960
msgid "Public Searches"
msgstr "Búsquedas públicas"
-#: src/TouchPoint-WP/TouchPointWP.php:1956
+#: src/TouchPoint-WP/TouchPointWP.php:1963
msgid "Status Flags"
msgstr "Indicadores de Estado"
-#: src/TouchPoint-WP/TouchPointWP.php:1961
-#: src/TouchPoint-WP/TouchPointWP.php:1962
+#: src/TouchPoint-WP/TouchPointWP.php:1968
+#: src/TouchPoint-WP/TouchPointWP.php:1969
msgid "Current Value"
msgstr "Valor actual"
-#: src/TouchPoint-WP/TouchPointWP.php:2090
-#: src/TouchPoint-WP/TouchPointWP.php:2130
+#: src/TouchPoint-WP/TouchPointWP.php:2097
+#: src/TouchPoint-WP/TouchPointWP.php:2137
msgid "Invalid or incomplete API Settings."
msgstr "Configuración de API no válida o incompleta."
-#: src/TouchPoint-WP/TouchPointWP.php:2098
-#: src/TouchPoint-WP/TouchPointWP.php:2137
+#: src/TouchPoint-WP/TouchPointWP.php:2105
+#: src/TouchPoint-WP/TouchPointWP.php:2144
msgid "Host appears to be missing from TouchPoint-WP configuration."
msgstr "Parece que falta el host en la configuración de TouchPoint-WP."
-#: src/TouchPoint-WP/TouchPointWP.php:2257
+#: src/TouchPoint-WP/TouchPointWP.php:2264
msgid "People Query Failed"
msgstr "Consulta de registros de personas fallida"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:258
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:252
msgid "Basic Settings"
msgstr "Ajustes básicos"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:259
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:253
msgid "Connect to TouchPoint and choose which features you wish to use."
msgstr "Conéctese a TouchPoint y elija qué funciones desea usar."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:263
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:257
msgid "Enable Authentication"
msgstr "Habilitar autenticación"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:264
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:258
msgid "Allow TouchPoint users to sign into this website with TouchPoint."
msgstr "Permita que los usuarios de TouchPoint inicien sesión en este sitio web con TouchPoint."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:275
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:269
msgid "Enable RSVP Tool"
msgstr "Habilitar la herramienta RSVP"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:276
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:270
msgid "Add a crazy-simple RSVP button to WordPress event pages."
msgstr "Agregue un botón RSVP muy simple a las páginas de eventos de WordPress."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:283
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:277
msgid "Enable Involvements"
msgstr "Habilitar Participaciones"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:284
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:278
msgid "Load Involvements from TouchPoint for involvement listings and entries native in your website."
msgstr "Cargue participaciones desde TouchPoint para obtener listas de participación y entradas nativas en su sitio web."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:305
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:299
msgid "Enable Public People Lists"
msgstr "Habilitar listas de personas públicas"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:306
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:300
msgid "Import public people listings from TouchPoint (e.g. staff or elders)"
msgstr "Importe listados públicos de personas desde TouchPoint (por ejemplo, personal o ancianos)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:316
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:310
msgid "Enable Global Partner Listings"
msgstr "Habilitar listados de Socios Globales"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:317
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:311
msgid "Import ministry partners from TouchPoint to list publicly."
msgstr "Importe socios ministeriales de TouchPoint para incluirlos en una lista pública."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:338
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:332
msgid "Display Name"
msgstr "Nombre para mostrar"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:339
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:333
msgid "What your church calls your TouchPoint database."
msgstr "Lo que su iglesia llama su base de datos TouchPoint."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:349
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:343
msgid "TouchPoint Host Name"
msgstr "Nombre de host del TouchPoint"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:350
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:344
msgid "The domain for your TouchPoint database, without the https or any slashes."
msgstr "El dominio de su base de datos TouchPoint, sin https ni barras."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:362
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:356
msgid "Custom Mobile App Deeplink Host Name"
msgstr "Nombre de host de enlace profundo de aplicación móvil personalizada"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:374
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:368
msgid "TouchPoint API Username"
msgstr "Nombre de usuario de la API de TouchPoint"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:386
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:380
msgid "TouchPoint API User Password"
msgstr "Contraseña de usuario de la API de TouchPoint"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:387
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:381
msgid "The password of a user account in TouchPoint with API permissions."
msgstr "La contraseña de una cuenta de usuario en TouchPoint con permisos de API."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:399
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:393
msgid "TouchPoint API Script Name"
msgstr "Nombre de la secuencia de comandos de la API de TouchPoint"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:400
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:394
msgid "The name of the Python script loaded into TouchPoint. Don't change this unless you know what you're doing."
msgstr "El nombre de la secuencia de comandos de Python cargada en TouchPoint. No cambies esto a menos que sepas lo que estás haciendo."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:411
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:405
msgid "Google Maps Javascript API Key"
msgstr "Clave de la API de Javascript de Google Maps"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:412
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:406
msgid "Required for embedding maps."
msgstr "Necesario para incrustar mapas."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:423
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:417
msgid "Google Maps Geocoding API Key"
msgstr "Clave API de codificación geográfica de Google Maps"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:424
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:418
msgid "Optional. Allows for reverse geocoding of user locations."
msgstr "Opcional. Permite la geocodificación inversa de las ubicaciones de los usuarios."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:442
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:447
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:436
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:441
msgid "Generate Scripts"
msgstr "Generar secuencias de comandos"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:446
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:440
msgid "Upload the package to {tpName} here"
msgstr "Sube el paquete a {tpName} aquí"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:463
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:457
msgid "People"
msgstr "Gente"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:464
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:458
msgid "Manage how people are synchronized between TouchPoint and WordPress."
msgstr "Administre cómo se sincronizan las personas entre TouchPoint y WordPress."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:468
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:462
msgid "Contact Keywords"
msgstr "Palabras clave de contacto"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:469
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:463
msgid "These keywords will be used when someone clicks the \"Contact\" button on a Person's listing or profile."
msgstr "Estas palabras clave se utilizarán cuando alguien haga clic en el botón \"Contactar\" en la lista o el perfil de una Persona."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:480
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:474
msgid "Extra Value for WordPress User ID"
msgstr "Valor Adicional para la ID de usuario de WordPress"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:481
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:475
msgid "The name of the extra value to use for the WordPress User ID. If you are using multiple WordPress instances with one TouchPoint database, you will need these values to be unique between WordPress instances. In most cases, the default is fine."
msgstr "El nombre del valor adicional que se usará para el ID de usuario de WordPress. Si está utilizando varias instancias de WordPress con una base de datos de TouchPoint, necesitará que estos valores sean únicos entre las instancias de WordPress. En la mayoría de los casos, el valor predeterminado está bien."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:491
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:485
msgid "Extra Value: Biography"
msgstr "Valor Adicional: Biografía"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:492
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:486
msgid "Import a Bio from a Person Extra Value field. Can be an HTML or Text Extra Value. This will overwrite any values set by WordPress. Leave blank to not import."
msgstr "Importe una biografía desde un campo de Valor Adicional de Persona. Puede ser un Valor Adicional HTML o de texto. Esto sobrescribirá cualquier valor establecido por WordPress. Dejar en blanco para no importar."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:502
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:740
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:496
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:734
msgid "Extra Values to Import"
msgstr "Valor Adicional para importar"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:503
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:497
msgid "Import People Extra Value fields as User Meta data."
msgstr "Importe campos de valor extra de personas como metadatos de usuario."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:519
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:513
msgid "Authentication"
msgstr "Autenticación"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:520
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:514
msgid "Allow users to log into WordPress using TouchPoint."
msgstr "Permita que los usuarios inicien sesión en WordPress usando TouchPoint."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:524
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:518
msgid "Make TouchPoint the default authentication method."
msgstr "Haga que TouchPoint sea el método de autenticación predeterminado."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:534
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:528
msgid "Enable Auto-Provisioning"
msgstr "Habilitar el aprovisionamiento automático"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:535
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:529
msgid "Automatically create WordPress users, if needed, to match authenticated TouchPoint users."
msgstr "Cree automáticamente usuarios de WordPress, si es necesario, para que coincidan con los usuarios autenticados de TouchPoint."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:544
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:538
msgid "Change 'Edit Profile' links"
msgstr "Cambiar los enlaces 'Editar perfil'"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:545
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:539
msgid "\"Edit Profile\" links will take the user to their TouchPoint profile, instead of their WordPress profile."
msgstr "Los enlaces \"Editar perfil\" llevarán al usuario a su perfil de TouchPoint, en lugar de a su perfil de WordPress."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:554
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:548
msgid "Enable full logout"
msgstr "Habilitar cierre de sesión completo"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:555
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:549
msgid "Logout of TouchPoint when logging out of WordPress."
msgstr "Cierre sesión en TouchPoint al cerrar sesión en WordPress."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:561
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:555
msgid "Prevent Subscriber Admin Bar"
msgstr "Prevenir la barra de administración de suscriptores"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:562
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:556
msgid "By enabling this option, users who can't edit anything won't see the Admin bar."
msgstr "Al habilitar esta opción, los usuarios que no pueden editar nada no verán la barra de administración."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:576
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:570
msgid "Involvements"
msgstr "Involucramientos"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:577
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:571
msgid "Import Involvements from TouchPoint to list them on your website, for Small Groups, Classes, and more. Select the division(s) that immediately correspond to the type of Involvement you want to list. For example, if you want a Small Group list and have a Small Group Division, only select the Small Group Division. If you want Involvements to be filterable by additional Divisions, select those Divisions on the Divisions tab, not here."
msgstr "Importe participaciones desde TouchPoint para enumerarlas en su sitio web, para grupos pequeños, clases y más. Seleccione la(s) división(es) que corresponda(n) inmediatamente al tipo de participación que desea enumerar. Por ejemplo, si desea una lista de grupos pequeños y tiene una división de grupos pequeños, solo seleccione la división de grupos pequeños. Si desea que las participaciones se puedan filtrar por divisiones adicionales, seleccione esas divisiones en la pestaña Divisiones, no aquí."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:582
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:576
msgid "Involvement Post Types"
msgstr "Tipos de publicaciones de Involucramientos"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:612
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:606
msgid "Global Partners"
msgstr "Misioneros"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:613
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:607
msgid "Manage how global partners are imported from TouchPoint for listing on WordPress. Partners are grouped by family, and content is provided through Family Extra Values. This works for both People and Business records."
msgstr "Administre cómo se importan los socios globales desde TouchPoint para incluirlos en WordPress. Los socios se agrupan por familia y el contenido se proporciona a través de Valor Extra Familiar. Esto funciona tanto para registros de personas como de empresas."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:617
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:611
msgid "Global Partner Name (Plural)"
msgstr "Nombre de los misioneros (plural)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:618
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:612
msgid "What you call Global Partners at your church"
msgstr "Lo que llamas los Misioneros en tu iglesia"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:628
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:622
msgid "Global Partner Name (Singular)"
msgstr "Nombre de un misionero (singular)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:629
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:623
msgid "What you call a Global Partner at your church"
msgstr "Lo que llamas un Misionero en tu iglesia"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:639
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:633
msgid "Global Partner Name for Secure Places (Plural)"
msgstr "Nombre de los misioneros para lugares seguros (plural)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:640
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:634
msgid "What you call Secure Global Partners at your church"
msgstr "Lo que llamas un Misionero seguro en tu iglesia"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:650
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:644
msgid "Global Partner Name for Secure Places (Singular)"
msgstr "Nombre de un misionero para lugares seguros (singular)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:651
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:645
msgid "What you call a Secure Global Partner at your church"
msgstr "Lo que llamas los Misioneros seguros en tu iglesia"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:661
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:655
msgid "Global Partner Slug"
msgstr "Slug de Socio Global"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:662
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:656
msgid "The root path for Global Partner posts"
msgstr "La ruta raíz para las publicaciones de Socios Globales"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:674
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:668
msgid "Saved Search"
msgstr "Búsqueda Guardada"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:675
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:669
msgid "Anyone who is included in this saved search will be included in the listing."
msgstr "Cualquiera que esté incluido en esta búsqueda guardada se incluirá en la lista."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:685
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:679
msgid "Extra Value: Description"
msgstr "Valor Adicional: Descripción"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:686
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:680
msgid "Import a description from a Family Extra Value field. Can be an HTML or Text Extra Value. This becomes the body of the Global Partner post."
msgstr "Importe una descripción de un campo de Valor Extra Familiar. Puede ser un valor adicional HTML o de texto. Esto se convierte en el cuerpo de la publicación del socio global."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:696
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:690
msgid "Extra Value: Summary"
msgstr "Valor Adicional: Resumen"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:697
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:691
msgid "Optional. Import a short description from a Family Extra Value field. Can be an HTML or Text Extra Value. If not provided, the full bio will be truncated."
msgstr "Opcional. Importe una breve descripción de un campo de Valor Extra Familiar. Puede ser un Valor Adicional HTML o de texto. Si no se proporciona, la biografía completa se truncará."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:707
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:701
msgid "Latitude Override"
msgstr "Anulación de latitud"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:708
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:702
msgid "Designate a text Family Extra Value that will contain a latitude that overrides any locations on the partner's profile for the partner map. Both latitude and longitude must be provided for an override to take place."
msgstr "Designe un Valor Familiar Adicional de texto que contenga una latitud que anule cualquier ubicación en el perfil del socio para el mapa de socios. Tanto la latitud como la longitud deben proporcionarse para que se produzca una anulación."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:718
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:712
msgid "Longitude Override"
msgstr "Anulación de longitud"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:719
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:713
msgid "Designate a text Family Extra Value that will contain a longitude that overrides any locations on the partner's profile for the partner map. Both latitude and longitude must be provided for an override to take place."
msgstr "Designe un Valor Familiar Adicional de texto que contenga una longitud que anule cualquier ubicación en el perfil del socio para el mapa de socios. Tanto la latitud como la longitud deben proporcionarse para que se produzca una anulación."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:729
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:723
msgid "Public Location"
msgstr "Ubicación Pública"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:730
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:724
msgid "Designate a text Family Extra Value that will contain the partner's location, as you want listed publicly. For partners who have DecoupleLocation enabled, this field will be associated with the map point, not the list entry."
msgstr "Designe un Valor Adicional Familiar de texto que contendrá la ubicación del socio, como desea que se enumere públicamente. Para los socios que tienen DecoupleLocation habilitado, este campo se asociará con el punto del mapa, no con la entrada de la lista."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:741
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:735
msgid "Import Family Extra Value fields as Meta data on the partner's post"
msgstr "Importe campos de Valor Adicional Familiar como Metadatos en la publicación del socio"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:752
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:746
msgid "Primary Taxonomy"
msgstr "Taxonomía Primaria"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:753
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:747
msgid "Import a Family Extra Value as the primary means by which partners are organized."
msgstr "Importe un Valor Adicional Familiar como el medio principal por el cual se organizan los socios."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:769
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:763
msgid "Events Calendar"
msgstr "Calendario de eventos"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:770
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:764
msgid "Integrate with The Events Calendar from ModernTribe."
msgstr "Integre con el calendario de eventos de ModernTribe."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:774
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:768
msgid "Events for Custom Mobile App"
msgstr "Eventos para la aplicación móvil personalizada"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:777
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:771
msgid "To use your Events Calendar events in the Custom mobile app, set the Provider to Wordpress Plugin - Modern Tribe and use this url:"
msgstr "Para usar los eventos de su calendario de eventos en la aplicación móvil personalizada, configure el proveedor en Wordpress Plugin - Modern Tribe y use esta URL:"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:779
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:773
msgid "Preview"
msgstr "Preestrena"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:794
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:788
msgid "Use Standardizing Stylesheet"
msgstr "Usar hoja de estilo de estandarización"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:795
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:789
msgid "Inserts some basic CSS into the events feed to clean up display"
msgstr "Inserta algo de CSS básico en el feed de eventos para limpiar la pantalla"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:882
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:876
msgid "Divisions"
msgstr "Divisiones"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:883
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:877
msgid "Import Divisions from TouchPoint to your website as a taxonomy. These are used to classify users and involvements."
msgstr "Importe Divisiones desde TouchPoint a su sitio web como una taxonomía. Estos se utilizan para clasificar a los usuarios y las participaciones."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:887
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:881
msgid "Division Name (Plural)"
msgstr "Nombre de la División (plural)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:888
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:882
msgid "What you call Divisions at your church"
msgstr "Lo que llamas Divisiones en tu iglesia"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:899
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:893
msgid "Division Name (Singular)"
msgstr "Nombre de la División (Singular)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:900
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:894
msgid "What you call a Division at your church"
msgstr "Lo que llamas una división en tu iglesia"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:911
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:905
msgid "Division Slug"
msgstr "Slug de División"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:912
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:906
msgid "The root path for the Division Taxonomy"
msgstr "La ruta raíz para la Taxonomía de División"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:925
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:919
msgid "These Divisions will be imported for the taxonomy"
msgstr "Estas Divisiones se importarán para la taxonomía"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:976
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:970
msgid "Campuses"
msgstr "Campus"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:977
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:971
msgid "Import Campuses from TouchPoint to your website as a taxonomy. These are used to classify users and involvements."
msgstr "Importe Campus desde TouchPoint a su sitio web como una taxonomía. Estos se utilizan para clasificar a los usuarios y las participaciones."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:984
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:978
msgid "Campus Name (Plural)"
msgstr "Nombre del Campus (Plural)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:985
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:979
msgid "What you call Campuses at your church"
msgstr "Lo que llamas Campus en tu iglesia"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:996
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:990
msgid "Campus Name (Singular)"
msgstr "Nombre del Campus (Singular)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:997
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:991
msgid "What you call a Campus at your church"
msgstr "Lo que llamas un Campus en tu iglesia"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1008
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1002
msgid "Campus Slug"
msgstr "Slug de Campus"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1009
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1003
msgid "The root path for the Campus Taxonomy"
msgstr "La ruta raíz para la Taxonomía del Campus"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1025
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1019
msgid "Resident Codes"
msgstr "Códigos de Residentes"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1026
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1020
msgid "Import Resident Codes from TouchPoint to your website as a taxonomy. These are used to classify users and involvements that have locations."
msgstr "Importe Códigos de Residentes desde TouchPoint a su sitio web como una taxonomía. Estos se utilizan para clasificar los usuarios y las participaciones que tienen ubicaciones."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1030
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1024
msgid "Resident Code Name (Plural)"
msgstr "Nombre de Código de Tesidente (Plural)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1031
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1025
msgid "What you call Resident Codes at your church"
msgstr "Lo que llamas Códigos de Residente en tu iglesia"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1042
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1036
msgid "Resident Code Name (Singular)"
msgstr "Nombre de Código de Residente (singular)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1043
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1037
msgid "What you call a Resident Code at your church"
msgstr "Lo que llamas un Código de Residencia en tu iglesia"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1054
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1048
msgid "Resident Code Slug"
msgstr "Slug de Código Residente"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1055
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1049
msgid "The root path for the Resident Code Taxonomy"
msgstr "La ruta raíz para la Taxonomía del Código de Residente"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1226
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1220
msgid "password saved"
msgstr "contraseña guardada"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1282
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1283
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1276
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1277
msgid "TouchPoint-WP"
msgstr "TouchPoint-WP"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1314
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1308
msgid "Settings"
msgstr "Ajustes"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1546
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1540
msgid "Script Update Failed"
msgstr "Actualización de secuencia de comandos fallida"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1668
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1662
msgid "TouchPoint-WP Settings"
msgstr "Configuración de TouchPoint-WP"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1719
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1713
msgid "Save Settings"
msgstr "Guardar ajustes"
@@ -975,7 +980,7 @@ msgstr "Enviar"
msgid "Nothing to submit."
msgstr "Nada que enviar."
-#: src/TouchPoint-WP/TouchPointWP.php:2198
+#: src/TouchPoint-WP/TouchPointWP.php:2205
msgid "The scripts on TouchPoint that interact with this plugin are out-of-date, and an automatic update failed."
msgstr "Los scripts en TouchPoint que interactúan con este complemento están desactualizados y falló una actualización automática."
@@ -1030,16 +1035,16 @@ msgstr "OK"
msgid "Next"
msgstr "Siguiente"
-#: src/TouchPoint-WP/Involvement.php:1395
+#: src/TouchPoint-WP/Involvement.php:1512
#: src/TouchPoint-WP/Taxonomies.php:863
msgid "Marital Status"
msgstr "Estado civil"
-#: src/TouchPoint-WP/Involvement.php:1408
+#: src/TouchPoint-WP/Involvement.php:1525
msgid "Age"
msgstr "Años"
-#: src/TouchPoint-WP/Involvement.php:1279
+#: src/TouchPoint-WP/Involvement.php:1396
msgid "Genders"
msgstr "Géneros"
@@ -1157,12 +1162,12 @@ msgstr "Añade una ubicación"
msgid "The Campus"
msgstr "El campus"
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:945
#: src/TouchPoint-WP/TouchPointWP_Settings.php:951
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:957
msgid "Locations"
msgstr "Ubicaciones"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:952
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:946
msgid "Locations are physical places, probably campuses. None are required, but they can help present geographic information clearly."
msgstr "Las ubicaciones son lugares físicos, probablemente campus. No se requiere ninguno, pero pueden ayudar a presentar la información geográfica con claridad."
@@ -1201,76 +1206,76 @@ msgctxt "Time of Day"
msgid "Night"
msgstr "Noche"
-#: src/TouchPoint-WP/Involvement.php:1396
+#: src/TouchPoint-WP/Involvement.php:1513
msgctxt "Marital status for a group of people"
msgid "Mostly Single"
msgstr "Mayoría solteras"
-#: src/TouchPoint-WP/Involvement.php:1397
+#: src/TouchPoint-WP/Involvement.php:1514
msgctxt "Marital status for a group of people"
msgid "Mostly Married"
msgstr "Mayoría casadas"
#. translators: %s is the link to "reset the map"
-#: src/TouchPoint-WP/Involvement.php:1438
+#: src/TouchPoint-WP/Involvement.php:1555
#: src/TouchPoint-WP/Partner.php:807
msgid "Zoom out or %s to see more."
msgstr "Alejar o %s para ver más."
-#: src/TouchPoint-WP/Involvement.php:1441
+#: src/TouchPoint-WP/Involvement.php:1558
#: src/TouchPoint-WP/Partner.php:810
msgctxt "Zoom out or reset the map to see more."
msgid "reset the map"
msgstr "restablecer el mapa"
#. translators: "Mon at 7pm" or "Sundays at 9am & 11am"
-#: src/TouchPoint-WP/Involvement.php:644
-#: src/TouchPoint-WP/Involvement.php:664
+#: src/TouchPoint-WP/Involvement.php:729
+#: src/TouchPoint-WP/Involvement.php:749
msgid "%1$s at %2$s"
msgstr "%1$s a las %2$s"
#. translators: {start date} through {end date} e.g. February 14 through August 12
-#: src/TouchPoint-WP/Involvement.php:673
+#: src/TouchPoint-WP/Involvement.php:758
msgid "%1$s through %2$s"
msgstr "%1$s al %2$s"
#. translators: {schedule}, {start date} through {end date} e.g. Sundays at 11am, February 14 through August 12
-#: src/TouchPoint-WP/Involvement.php:680
+#: src/TouchPoint-WP/Involvement.php:765
msgid "%1$s, %2$s through %3$s"
msgstr "%1$s, %2$s al %3$s"
#. translators: Starts {start date} e.g. Starts September 15
-#: src/TouchPoint-WP/Involvement.php:690
+#: src/TouchPoint-WP/Involvement.php:775
msgid "Starts %1$s"
msgstr "Comienza el %1$s"
#. translators: {schedule}, starting {start date} e.g. Sundays at 11am, starting February 14
-#: src/TouchPoint-WP/Involvement.php:696
+#: src/TouchPoint-WP/Involvement.php:781
msgid "%1$s, starting %2$s"
msgstr "%1$s, comienza el %2$s"
#. translators: Through {end date} e.g. Through September 15
-#: src/TouchPoint-WP/Involvement.php:705
+#: src/TouchPoint-WP/Involvement.php:790
msgid "Through %1$s"
msgstr "Hasta el %1$s"
#. translators: {schedule}, through {end date} e.g. Sundays at 11am, through February 14
-#: src/TouchPoint-WP/Involvement.php:711
+#: src/TouchPoint-WP/Involvement.php:796
msgid "%1$s, through %2$s"
msgstr "%1$s, hasta el %2$s"
#. translators: number of miles
#: src/templates/parts/involvement-nearby-list.php:10
-#: src/TouchPoint-WP/Involvement.php:2422
+#: src/TouchPoint-WP/Involvement.php:3096
msgctxt "miles. Unit is appended to a number. %2.1f is the number, so %2.1fmi looks like '12.3mi'"
msgid "%2.1fmi"
msgstr "%2.1fmi"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:375
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:369
msgid "The username of a user account in TouchPoint with API permissions. It is strongly recommended that you create a separate person/user for this purpose, rather than using a staff member's account."
msgstr "El nombre de usuario de una cuenta de usuario en TouchPoint con permisos API. Se recomienda encarecidamente que cree una persona/usuario independiente para este fin, en lugar de utilizar la cuenta de un miembro del personal."
-#: src/templates/admin/invKoForm.php:103
+#: src/templates/admin/invKoForm.php:112
msgid "Involvement has a registration type of \"No Online Registration\""
msgstr "La participación tiene un tipo de registro de \"No Online Registration\""
@@ -1278,39 +1283,39 @@ msgstr "La participación tiene un tipo de registro de \"No Online Registration\
msgid "Involvement registration has ended (end date is past)"
msgstr "El registro de participación ha finalizado (la fecha de finalización ya pasó)"
-#: src/TouchPoint-WP/Involvement.php:1535
+#: src/TouchPoint-WP/Involvement.php:1651
msgid "This involvement type doesn't exist."
msgstr "Este tipo de participación no existe."
-#: src/TouchPoint-WP/Involvement.php:1545
+#: src/TouchPoint-WP/Involvement.php:1661
msgid "This involvement type doesn't have geographic locations enabled."
msgstr "Este tipo de participación no tiene habilitadas las ubicaciones geográficas."
-#: src/TouchPoint-WP/Involvement.php:1564
+#: src/TouchPoint-WP/Involvement.php:1680
msgid "Could not locate."
msgstr "No se pudo localizar."
-#: src/TouchPoint-WP/Meeting.php:338
+#: src/TouchPoint-WP/Meeting.php:331
#: src/TouchPoint-WP/TouchPointWP.php:945
msgid "Only GET requests are allowed."
msgstr "Solo se permiten solicitudes GET."
-#: src/TouchPoint-WP/Meeting.php:366
+#: src/TouchPoint-WP/Meeting.php:359
#: src/TouchPoint-WP/TouchPointWP.php:353
msgid "Only POST requests are allowed."
msgstr "Solo se permiten solicitudes POST."
-#: src/TouchPoint-WP/Meeting.php:376
+#: src/TouchPoint-WP/Meeting.php:369
#: src/TouchPoint-WP/TouchPointWP.php:362
msgid "Invalid data provided."
msgstr "Datos proporcionados no válidos."
-#: src/TouchPoint-WP/Involvement.php:2560
-#: src/TouchPoint-WP/Involvement.php:2637
+#: src/TouchPoint-WP/Involvement.php:3246
+#: src/TouchPoint-WP/Involvement.php:3323
msgid "Invalid Post Type."
msgstr "Tipo de publicación no válida."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:327
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:321
msgid "Enable Campuses"
msgstr "Habilitar Campus"
@@ -1322,6 +1327,7 @@ msgstr "clasificar las publicaciones por sus ubicaciones generales."
msgid "Classify posts by their church campus."
msgstr "Clasifique las publicaciones por el campus."
+#. translators: %s: taxonomy name, singular
#: src/TouchPoint-WP/Taxonomies.php:712
msgid "Classify things by %s."
msgstr "Clasifica las cosas por %s."
@@ -1374,7 +1380,7 @@ msgstr "Estados Civiles"
msgid "Classify Partners by category chosen in settings."
msgstr "Clasifique a los ministeriales por categoría elegida en la configuración."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:328
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:322
msgid "Import campuses as a taxonomy. (You probably want to do this if you're multi-campus.)"
msgstr "Importar campus como taxonomía. (Probablemente quieras hacer esto si tienes varios campus)."
@@ -1425,7 +1431,7 @@ msgstr "Actualizada %1$s %2$s"
msgid "Every 15 minutes"
msgstr "Cada 15 minutos"
-#: src/TouchPoint-WP/Involvement.php:1322
+#: src/TouchPoint-WP/Involvement.php:1439
msgid "Language"
msgstr "Idioma"
@@ -1442,11 +1448,11 @@ msgctxt "list of people, and *others*"
msgid "others"
msgstr "otros"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:807
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:801
msgid "Meeting Calendars"
msgstr "Calendarios de Reuniones"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:808
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:802
msgid "Import Meetings from TouchPoint to a calendar on your website."
msgstr "Importe reuniones desde TouchPoint a un calendario en su sitio web."
@@ -1454,44 +1460,44 @@ msgstr "Importe reuniones desde TouchPoint a un calendario en su sitio web."
msgid "Import All Meetings to Calendar"
msgstr "Importe reuniones a los calendarios"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:812
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:806
msgid "Meetings Slug"
msgstr "Slug de reuniones"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:813
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:807
msgid "The root path for Meetings"
msgstr "La ruta raíz para las reuniones"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:864
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:858
msgid "Meeting Deletion Handling"
msgstr "Manejo de eliminación de reuniones"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:865
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:859
msgid "When a Meeting is deleted in TouchPoint that has already been imported to WordPress, how should that be handled?"
msgstr "Cuando se elimina una reunión en TouchPoint que ya se ha importado a WordPress, ¿cómo se debe manejar?"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:871
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:865
msgid "Always delete from WordPress"
msgstr "Eliminar siempre de WordPress"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:872
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:866
msgid "Mark the occurrence as cancelled"
msgstr "Marcar la ocurrencia como cancelada"
-#: src/TouchPoint-WP/Involvement.php:2624
-#: src/TouchPoint-WP/Person.php:1720
+#: src/TouchPoint-WP/Involvement.php:3310
+#: src/TouchPoint-WP/Person.php:1735
msgid "Contact Prohibited."
msgstr "Contacto prohibido."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:525
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:519
msgid "By checking this box, the TouchPoint login page will become the default. To prevent the redirect and reach the standard WordPress login page, add 'tp_no_redirect' as a URL parameter."
msgstr "Al marcar esta casilla, la página de inicio de sesión de TouchPoint se convertirá en la predeterminada. Para evitar la redirección y llegar a la página de inicio de sesión estándar de WordPress, agregue 'tp_no_redirect' como parámetro de URL."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:363
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:357
msgid "The domain for your mobile app deeplinks, without the https or any slashes. If you aren't using the custom mobile app, leave this blank."
msgstr "El dominio de los enlaces profundos de su aplicación móvil, sin https ni barras diagonales. Si no está utilizando la aplicación móvil personalizada, déjelo en blanco."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:445
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:439
msgid "Once your settings on this page are set and saved, use this tool to generate the scripts needed for TouchPoint in a convenient installation package."
msgstr "Una vez que haya configurado y guardado la configuración en esta página, utilice esta herramienta para generar los scripts necesarios para TouchPoint en un paquete de instalación conveniente."
@@ -1503,8 +1509,8 @@ msgstr "Algo salió mal."
msgid "You may need to sign in."
msgstr "Es posible que tengas que iniciar sesión."
-#: src/TouchPoint-WP/Involvement.php:2614
-#: src/TouchPoint-WP/Person.php:1737
+#: src/TouchPoint-WP/Involvement.php:3300
+#: src/TouchPoint-WP/Person.php:1752
msgid "Contact Blocked for Spam."
msgstr "Contacto bloqueado por spam."
@@ -1514,58 +1520,58 @@ msgstr "Registro bloqueado por spam."
#: src/templates/meeting-archive.php:28
#: src/templates/parts/meeting-list-none.php:13
-#: src/TouchPoint-WP/Meeting.php:189
+#: src/TouchPoint-WP/Meeting.php:194
msgctxt "What Meetings should be called, plural."
msgid "Events"
msgstr "Eventos"
-#: src/TouchPoint-WP/Meeting.php:190
+#: src/TouchPoint-WP/Meeting.php:195
msgctxt "What Meetings should be called, singular."
msgid "Event"
msgstr "Evento"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:294
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:288
msgid "Enable Meeting Calendar"
msgstr "Habilitar calendario de reuniones"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:295
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:289
msgid "Load Meetings from TouchPoint for a calendar, native in your website."
msgstr "Cargue reuniones desde TouchPoint para un calendario nativo en su sitio web."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:825
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:819
msgid "Days of Future"
msgstr "Días del futuro"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:826
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:820
msgid "Meetings more than this many days in the future will not be imported."
msgstr "No se importarán reuniones que superen estos días en el futuro."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:838
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:832
msgid "Archive After Days"
msgstr "Archivo después de días"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:839
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:833
msgid "Meetings more than this many days in the past will be moved to the Events Archive. Once this date passes, meeting information will no longer update."
msgstr "Las reuniones que hayan transcurrido más de esta cantidad de días pasados se trasladarán al Archivo de eventos. Una vez que pase esta fecha, la información de la reunión ya no se actualizará."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:851
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:845
msgid "Days of History"
msgstr "Días de la Historia"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:852
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:846
msgid "Meetings will be kept for the public calendar until the event is this many days in the past."
msgstr "Las reuniones se mantendrán para el calendario público hasta que hayan transcurrido tantos días desde el evento."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:936
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1067
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:930
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1061
msgid "Post Types"
msgstr "Tipos de publicaciones"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:937
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:931
msgid "Select post types which should have Divisions available as a native taxonomy."
msgstr "Seleccione los tipos de publicaciones que deberían tener Divisiones disponibles como taxonomía nativa."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1068
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1062
msgid "Select post types which should have Resident Codes available as a native taxonomy."
msgstr "Seleccione los tipos de publicaciones que deberían tener códigos de residente disponibles como taxonomía nativa."
@@ -1580,3 +1586,7 @@ msgstr "hoy"
#: src/TouchPoint-WP/meetingT.php:55
msgid "Tomorrow"
msgstr "mañana"
+
+#: src/templates/admin/invKoForm.php:341
+msgid "(named person)"
+msgstr "(persona nombrada)"
diff --git a/i18n/TouchPoint-WP.pot b/i18n/TouchPoint-WP.pot
index cc2a2f6a..63ef533f 100644
--- a/i18n/TouchPoint-WP.pot
+++ b/i18n/TouchPoint-WP.pot
@@ -9,28 +9,33 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"POT-Creation-Date: 2024-02-10T23:17:42+00:00\n"
+"POT-Creation-Date: 2024-02-13T13:44:30+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"X-Generator: WP-CLI 2.9.0\n"
+"X-Generator: WP-CLI 2.10.0\n"
"X-Domain: TouchPoint-WP\n"
#. Plugin Name of the plugin
+#: touchpoint-wp.php
msgid "TouchPoint WP"
msgstr ""
#. Plugin URI of the plugin
+#: touchpoint-wp.php
msgid "https://github.com/tenthpres/touchpoint-wp"
msgstr ""
#. Description of the plugin
+#: touchpoint-wp.php
msgid "A WordPress Plugin for integrating with TouchPoint Church Management Software."
msgstr ""
#. Author of the plugin
+#: touchpoint-wp.php
msgid "James K"
msgstr ""
#. Author URI of the plugin
+#: touchpoint-wp.php
msgid "https://github.com/jkrrv"
msgstr ""
@@ -53,7 +58,7 @@ msgid "Slug"
msgstr ""
#: src/templates/admin/invKoForm.php:47
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:924
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:918
msgid "Divisions to Import"
msgstr ""
@@ -152,13 +157,13 @@ msgid "Gender"
msgstr ""
#: src/templates/admin/invKoForm.php:188
-#: src/TouchPoint-WP/Involvement.php:1347
+#: src/TouchPoint-WP/Involvement.php:1464
#: src/TouchPoint-WP/Taxonomies.php:744
msgid "Weekday"
msgstr ""
#: src/templates/admin/invKoForm.php:192
-#: src/TouchPoint-WP/Involvement.php:1373
+#: src/TouchPoint-WP/Involvement.php:1490
#: src/TouchPoint-WP/Taxonomies.php:802
msgid "Time of Day"
msgstr ""
@@ -196,6 +201,10 @@ msgstr ""
msgid "Small Groups"
msgstr ""
+#: src/templates/admin/invKoForm.php:341
+msgid "(named person)"
+msgstr ""
+
#: src/templates/admin/invKoForm.php:378
msgid "Select..."
msgstr ""
@@ -234,7 +243,7 @@ msgstr ""
#: src/templates/meeting-archive.php:28
#: src/templates/parts/meeting-list-none.php:13
-#: src/TouchPoint-WP/Meeting.php:189
+#: src/TouchPoint-WP/Meeting.php:194
msgctxt "What Meetings should be called, plural."
msgid "Events"
msgstr ""
@@ -242,7 +251,7 @@ msgstr ""
#. translators: %s will be the plural post type (e.g. Small Groups)
#: src/templates/parts/involvement-list-none.php:16
#: src/templates/parts/meeting-list-none.php:15
-#: src/TouchPoint-WP/Involvement.php:1594
+#: src/TouchPoint-WP/Involvement.php:1710
msgid "No %s Found."
msgstr ""
@@ -254,7 +263,7 @@ msgstr ""
#. translators: number of miles
#: src/templates/parts/involvement-nearby-list.php:10
-#: src/TouchPoint-WP/Involvement.php:2422
+#: src/TouchPoint-WP/Involvement.php:3096
msgctxt "miles. Unit is appended to a number. %2.1f is the number, so %2.1fmi looks like '12.3mi'"
msgid "%2.1fmi"
msgstr ""
@@ -284,201 +293,201 @@ msgstr ""
msgid "Multi-Day"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:441
+#: src/TouchPoint-WP/Involvement.php:466
msgid "Currently Full"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:445
+#: src/TouchPoint-WP/Involvement.php:470
msgid "Currently Closed"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:451
+#: src/TouchPoint-WP/Involvement.php:476
msgid "Registration Not Open Yet"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:456
+#: src/TouchPoint-WP/Involvement.php:481
msgid "Registration Closed"
msgstr ""
#. translators: "Mon at 7pm" or "Sundays at 9am & 11am"
-#: src/TouchPoint-WP/Involvement.php:644
-#: src/TouchPoint-WP/Involvement.php:664
+#: src/TouchPoint-WP/Involvement.php:729
+#: src/TouchPoint-WP/Involvement.php:749
msgid "%1$s at %2$s"
msgstr ""
#. translators: {start date} through {end date} e.g. February 14 through August 12
-#: src/TouchPoint-WP/Involvement.php:673
+#: src/TouchPoint-WP/Involvement.php:758
msgid "%1$s through %2$s"
msgstr ""
#. translators: {schedule}, {start date} through {end date} e.g. Sundays at 11am, February 14 through August 12
-#: src/TouchPoint-WP/Involvement.php:680
+#: src/TouchPoint-WP/Involvement.php:765
msgid "%1$s, %2$s through %3$s"
msgstr ""
#. translators: Starts {start date} e.g. Starts September 15
-#: src/TouchPoint-WP/Involvement.php:690
+#: src/TouchPoint-WP/Involvement.php:775
msgid "Starts %1$s"
msgstr ""
#. translators: {schedule}, starting {start date} e.g. Sundays at 11am, starting February 14
-#: src/TouchPoint-WP/Involvement.php:696
+#: src/TouchPoint-WP/Involvement.php:781
msgid "%1$s, starting %2$s"
msgstr ""
#. translators: Through {end date} e.g. Through September 15
-#: src/TouchPoint-WP/Involvement.php:705
+#: src/TouchPoint-WP/Involvement.php:790
msgid "Through %1$s"
msgstr ""
#. translators: {schedule}, through {end date} e.g. Sundays at 11am, through February 14
-#: src/TouchPoint-WP/Involvement.php:711
+#: src/TouchPoint-WP/Involvement.php:796
msgid "%1$s, through %2$s"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1222
+#: src/TouchPoint-WP/Involvement.php:1339
#: src/TouchPoint-WP/Partner.php:769
msgid "Any"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1279
+#: src/TouchPoint-WP/Involvement.php:1396
msgid "Genders"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1322
+#: src/TouchPoint-WP/Involvement.php:1439
msgid "Language"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1395
+#: src/TouchPoint-WP/Involvement.php:1512
#: src/TouchPoint-WP/Taxonomies.php:863
msgid "Marital Status"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1396
+#: src/TouchPoint-WP/Involvement.php:1513
msgctxt "Marital status for a group of people"
msgid "Mostly Single"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1397
+#: src/TouchPoint-WP/Involvement.php:1514
msgctxt "Marital status for a group of people"
msgid "Mostly Married"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1408
+#: src/TouchPoint-WP/Involvement.php:1525
msgid "Age"
msgstr ""
#. translators: %s is for the user-provided term for the items on the map (e.g. Small Group or Partner)
-#: src/TouchPoint-WP/Involvement.php:1430
+#: src/TouchPoint-WP/Involvement.php:1547
#: src/TouchPoint-WP/Partner.php:791
msgid "The %s listed are only those shown on the map."
msgstr ""
#. translators: %s is the link to "reset the map"
-#: src/TouchPoint-WP/Involvement.php:1438
+#: src/TouchPoint-WP/Involvement.php:1555
#: src/TouchPoint-WP/Partner.php:807
msgid "Zoom out or %s to see more."
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1441
+#: src/TouchPoint-WP/Involvement.php:1558
#: src/TouchPoint-WP/Partner.php:810
msgctxt "Zoom out or reset the map to see more."
msgid "reset the map"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1535
+#: src/TouchPoint-WP/Involvement.php:1651
msgid "This involvement type doesn't exist."
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1545
+#: src/TouchPoint-WP/Involvement.php:1661
msgid "This involvement type doesn't have geographic locations enabled."
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1564
+#: src/TouchPoint-WP/Involvement.php:1680
msgid "Could not locate."
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:2395
+#: src/TouchPoint-WP/Involvement.php:3069
msgid "Men Only"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:2398
+#: src/TouchPoint-WP/Involvement.php:3072
msgid "Women Only"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:2461
+#: src/TouchPoint-WP/Involvement.php:3147
msgid "Contact Leaders"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:2469
+#: src/TouchPoint-WP/Involvement.php:3155
msgid "Register"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:2474
+#: src/TouchPoint-WP/Involvement.php:3160
msgid "Create Account"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:2478
+#: src/TouchPoint-WP/Involvement.php:3164
msgid "Schedule"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:2483
+#: src/TouchPoint-WP/Involvement.php:3169
msgid "Give"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:2486
+#: src/TouchPoint-WP/Involvement.php:3172
msgid "Manage Subscriptions"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:2489
+#: src/TouchPoint-WP/Involvement.php:3175
msgid "Record Attendance"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:2492
+#: src/TouchPoint-WP/Involvement.php:3178
msgid "Get Tickets"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:2499
+#: src/TouchPoint-WP/Involvement.php:3185
#: assets/js/base-defer.js:991
msgid "Join"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:2508
+#: src/TouchPoint-WP/Involvement.php:3194
#: src/TouchPoint-WP/Partner.php:1247
msgid "Show on Map"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:2560
-#: src/TouchPoint-WP/Involvement.php:2637
+#: src/TouchPoint-WP/Involvement.php:3246
+#: src/TouchPoint-WP/Involvement.php:3323
msgid "Invalid Post Type."
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:2614
-#: src/TouchPoint-WP/Person.php:1737
+#: src/TouchPoint-WP/Involvement.php:3300
+#: src/TouchPoint-WP/Person.php:1752
msgid "Contact Blocked for Spam."
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:2624
-#: src/TouchPoint-WP/Person.php:1720
+#: src/TouchPoint-WP/Involvement.php:3310
+#: src/TouchPoint-WP/Person.php:1735
msgid "Contact Prohibited."
msgstr ""
-#: src/TouchPoint-WP/Meeting.php:190
+#: src/TouchPoint-WP/Meeting.php:195
msgctxt "What Meetings should be called, singular."
msgid "Event"
msgstr ""
-#: src/TouchPoint-WP/Meeting.php:338
+#: src/TouchPoint-WP/Meeting.php:331
#: src/TouchPoint-WP/TouchPointWP.php:945
msgid "Only GET requests are allowed."
msgstr ""
-#: src/TouchPoint-WP/Meeting.php:366
+#: src/TouchPoint-WP/Meeting.php:359
#: src/TouchPoint-WP/TouchPointWP.php:353
msgid "Only POST requests are allowed."
msgstr ""
-#: src/TouchPoint-WP/Meeting.php:376
+#: src/TouchPoint-WP/Meeting.php:369
#: src/TouchPoint-WP/TouchPointWP.php:362
msgid "Invalid data provided."
msgstr ""
@@ -590,6 +599,7 @@ msgstr ""
msgid "Classify posts by their church campus."
msgstr ""
+#. translators: %s: taxonomy name, singular
#: src/TouchPoint-WP/Taxonomies.php:712
msgid "Classify things by %s."
msgstr ""
@@ -646,623 +656,623 @@ msgstr ""
msgid "Every 15 minutes"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:1893
+#: src/TouchPoint-WP/TouchPointWP.php:1900
msgid "Unknown Type"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:1950
+#: src/TouchPoint-WP/TouchPointWP.php:1957
msgid "Your Searches"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:1953
+#: src/TouchPoint-WP/TouchPointWP.php:1960
msgid "Public Searches"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:1956
+#: src/TouchPoint-WP/TouchPointWP.php:1963
msgid "Status Flags"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:1961
-#: src/TouchPoint-WP/TouchPointWP.php:1962
+#: src/TouchPoint-WP/TouchPointWP.php:1968
+#: src/TouchPoint-WP/TouchPointWP.php:1969
msgid "Current Value"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2090
-#: src/TouchPoint-WP/TouchPointWP.php:2130
+#: src/TouchPoint-WP/TouchPointWP.php:2097
+#: src/TouchPoint-WP/TouchPointWP.php:2137
msgid "Invalid or incomplete API Settings."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2098
-#: src/TouchPoint-WP/TouchPointWP.php:2137
+#: src/TouchPoint-WP/TouchPointWP.php:2105
+#: src/TouchPoint-WP/TouchPointWP.php:2144
msgid "Host appears to be missing from TouchPoint-WP configuration."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2198
+#: src/TouchPoint-WP/TouchPointWP.php:2205
msgid "The scripts on TouchPoint that interact with this plugin are out-of-date, and an automatic update failed."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2257
+#: src/TouchPoint-WP/TouchPointWP.php:2264
msgid "People Query Failed"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:258
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:252
msgid "Basic Settings"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:259
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:253
msgid "Connect to TouchPoint and choose which features you wish to use."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:263
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:257
msgid "Enable Authentication"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:264
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:258
msgid "Allow TouchPoint users to sign into this website with TouchPoint."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:275
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:269
msgid "Enable RSVP Tool"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:276
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:270
msgid "Add a crazy-simple RSVP button to WordPress event pages."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:283
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:277
msgid "Enable Involvements"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:284
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:278
msgid "Load Involvements from TouchPoint for involvement listings and entries native in your website."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:294
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:288
msgid "Enable Meeting Calendar"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:295
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:289
msgid "Load Meetings from TouchPoint for a calendar, native in your website."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:305
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:299
msgid "Enable Public People Lists"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:306
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:300
msgid "Import public people listings from TouchPoint (e.g. staff or elders)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:316
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:310
msgid "Enable Global Partner Listings"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:317
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:311
msgid "Import ministry partners from TouchPoint to list publicly."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:327
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:321
msgid "Enable Campuses"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:328
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:322
msgid "Import campuses as a taxonomy. (You probably want to do this if you're multi-campus.)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:338
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:332
msgid "Display Name"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:339
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:333
msgid "What your church calls your TouchPoint database."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:349
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:343
msgid "TouchPoint Host Name"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:350
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:344
msgid "The domain for your TouchPoint database, without the https or any slashes."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:362
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:356
msgid "Custom Mobile App Deeplink Host Name"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:363
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:357
msgid "The domain for your mobile app deeplinks, without the https or any slashes. If you aren't using the custom mobile app, leave this blank."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:374
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:368
msgid "TouchPoint API Username"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:375
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:369
msgid "The username of a user account in TouchPoint with API permissions. It is strongly recommended that you create a separate person/user for this purpose, rather than using a staff member's account."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:386
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:380
msgid "TouchPoint API User Password"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:387
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:381
msgid "The password of a user account in TouchPoint with API permissions."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:399
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:393
msgid "TouchPoint API Script Name"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:400
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:394
msgid "The name of the Python script loaded into TouchPoint. Don't change this unless you know what you're doing."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:411
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:405
msgid "Google Maps Javascript API Key"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:412
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:406
msgid "Required for embedding maps."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:423
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:417
msgid "Google Maps Geocoding API Key"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:424
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:418
msgid "Optional. Allows for reverse geocoding of user locations."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:442
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:447
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:436
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:441
msgid "Generate Scripts"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:445
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:439
msgid "Once your settings on this page are set and saved, use this tool to generate the scripts needed for TouchPoint in a convenient installation package."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:446
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:440
msgid "Upload the package to {tpName} here"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:463
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:457
msgid "People"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:464
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:458
msgid "Manage how people are synchronized between TouchPoint and WordPress."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:468
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:462
msgid "Contact Keywords"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:469
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:463
msgid "These keywords will be used when someone clicks the \"Contact\" button on a Person's listing or profile."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:480
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:474
msgid "Extra Value for WordPress User ID"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:481
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:475
msgid "The name of the extra value to use for the WordPress User ID. If you are using multiple WordPress instances with one TouchPoint database, you will need these values to be unique between WordPress instances. In most cases, the default is fine."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:491
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:485
msgid "Extra Value: Biography"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:492
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:486
msgid "Import a Bio from a Person Extra Value field. Can be an HTML or Text Extra Value. This will overwrite any values set by WordPress. Leave blank to not import."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:502
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:740
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:496
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:734
msgid "Extra Values to Import"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:503
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:497
msgid "Import People Extra Value fields as User Meta data."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:519
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:513
msgid "Authentication"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:520
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:514
msgid "Allow users to log into WordPress using TouchPoint."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:524
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:518
msgid "Make TouchPoint the default authentication method."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:525
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:519
msgid "By checking this box, the TouchPoint login page will become the default. To prevent the redirect and reach the standard WordPress login page, add 'tp_no_redirect' as a URL parameter."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:534
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:528
msgid "Enable Auto-Provisioning"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:535
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:529
msgid "Automatically create WordPress users, if needed, to match authenticated TouchPoint users."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:544
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:538
msgid "Change 'Edit Profile' links"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:545
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:539
msgid "\"Edit Profile\" links will take the user to their TouchPoint profile, instead of their WordPress profile."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:554
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:548
msgid "Enable full logout"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:555
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:549
msgid "Logout of TouchPoint when logging out of WordPress."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:561
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:555
msgid "Prevent Subscriber Admin Bar"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:562
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:556
msgid "By enabling this option, users who can't edit anything won't see the Admin bar."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:576
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:570
msgid "Involvements"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:577
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:571
msgid "Import Involvements from TouchPoint to list them on your website, for Small Groups, Classes, and more. Select the division(s) that immediately correspond to the type of Involvement you want to list. For example, if you want a Small Group list and have a Small Group Division, only select the Small Group Division. If you want Involvements to be filterable by additional Divisions, select those Divisions on the Divisions tab, not here."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:582
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:576
msgid "Involvement Post Types"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:612
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:606
msgid "Global Partners"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:613
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:607
msgid "Manage how global partners are imported from TouchPoint for listing on WordPress. Partners are grouped by family, and content is provided through Family Extra Values. This works for both People and Business records."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:617
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:611
msgid "Global Partner Name (Plural)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:618
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:612
msgid "What you call Global Partners at your church"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:628
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:622
msgid "Global Partner Name (Singular)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:629
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:623
msgid "What you call a Global Partner at your church"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:639
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:633
msgid "Global Partner Name for Secure Places (Plural)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:640
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:634
msgid "What you call Secure Global Partners at your church"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:650
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:644
msgid "Global Partner Name for Secure Places (Singular)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:651
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:645
msgid "What you call a Secure Global Partner at your church"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:661
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:655
msgid "Global Partner Slug"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:662
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:656
msgid "The root path for Global Partner posts"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:674
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:668
msgid "Saved Search"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:675
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:669
msgid "Anyone who is included in this saved search will be included in the listing."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:685
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:679
msgid "Extra Value: Description"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:686
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:680
msgid "Import a description from a Family Extra Value field. Can be an HTML or Text Extra Value. This becomes the body of the Global Partner post."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:696
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:690
msgid "Extra Value: Summary"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:697
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:691
msgid "Optional. Import a short description from a Family Extra Value field. Can be an HTML or Text Extra Value. If not provided, the full bio will be truncated."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:707
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:701
msgid "Latitude Override"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:708
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:702
msgid "Designate a text Family Extra Value that will contain a latitude that overrides any locations on the partner's profile for the partner map. Both latitude and longitude must be provided for an override to take place."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:718
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:712
msgid "Longitude Override"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:719
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:713
msgid "Designate a text Family Extra Value that will contain a longitude that overrides any locations on the partner's profile for the partner map. Both latitude and longitude must be provided for an override to take place."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:729
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:723
msgid "Public Location"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:730
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:724
msgid "Designate a text Family Extra Value that will contain the partner's location, as you want listed publicly. For partners who have DecoupleLocation enabled, this field will be associated with the map point, not the list entry."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:741
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:735
msgid "Import Family Extra Value fields as Meta data on the partner's post"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:752
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:746
msgid "Primary Taxonomy"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:753
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:747
msgid "Import a Family Extra Value as the primary means by which partners are organized."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:769
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:763
msgid "Events Calendar"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:770
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:764
msgid "Integrate with The Events Calendar from ModernTribe."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:774
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:768
msgid "Events for Custom Mobile App"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:777
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:771
msgid "To use your Events Calendar events in the Custom mobile app, set the Provider to Wordpress Plugin - Modern Tribe and use this url:"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:779
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:773
msgid "Preview"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:794
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:788
msgid "Use Standardizing Stylesheet"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:795
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:789
msgid "Inserts some basic CSS into the events feed to clean up display"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:807
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:801
msgid "Meeting Calendars"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:808
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:802
msgid "Import Meetings from TouchPoint to a calendar on your website."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:812
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:806
msgid "Meetings Slug"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:813
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:807
msgid "The root path for Meetings"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:825
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:819
msgid "Days of Future"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:826
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:820
msgid "Meetings more than this many days in the future will not be imported."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:838
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:832
msgid "Archive After Days"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:839
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:833
msgid "Meetings more than this many days in the past will be moved to the Events Archive. Once this date passes, meeting information will no longer update."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:851
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:845
msgid "Days of History"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:852
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:846
msgid "Meetings will be kept for the public calendar until the event is this many days in the past."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:864
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:858
msgid "Meeting Deletion Handling"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:865
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:859
msgid "When a Meeting is deleted in TouchPoint that has already been imported to WordPress, how should that be handled?"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:871
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:865
msgid "Always delete from WordPress"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:872
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:866
msgid "Mark the occurrence as cancelled"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:882
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:876
msgid "Divisions"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:883
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:877
msgid "Import Divisions from TouchPoint to your website as a taxonomy. These are used to classify users and involvements."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:887
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:881
msgid "Division Name (Plural)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:888
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:882
msgid "What you call Divisions at your church"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:899
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:893
msgid "Division Name (Singular)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:900
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:894
msgid "What you call a Division at your church"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:911
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:905
msgid "Division Slug"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:912
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:906
msgid "The root path for the Division Taxonomy"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:925
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:919
msgid "These Divisions will be imported for the taxonomy"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:936
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1067
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:930
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1061
msgid "Post Types"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:937
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:931
msgid "Select post types which should have Divisions available as a native taxonomy."
msgstr ""
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:945
#: src/TouchPoint-WP/TouchPointWP_Settings.php:951
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:957
msgid "Locations"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:952
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:946
msgid "Locations are physical places, probably campuses. None are required, but they can help present geographic information clearly."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:976
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:970
msgid "Campuses"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:977
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:971
msgid "Import Campuses from TouchPoint to your website as a taxonomy. These are used to classify users and involvements."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:984
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:978
msgid "Campus Name (Plural)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:985
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:979
msgid "What you call Campuses at your church"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:996
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:990
msgid "Campus Name (Singular)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:997
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:991
msgid "What you call a Campus at your church"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1008
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1002
msgid "Campus Slug"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1009
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1003
msgid "The root path for the Campus Taxonomy"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1025
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1019
msgid "Resident Codes"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1026
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1020
msgid "Import Resident Codes from TouchPoint to your website as a taxonomy. These are used to classify users and involvements that have locations."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1030
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1024
msgid "Resident Code Name (Plural)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1031
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1025
msgid "What you call Resident Codes at your church"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1042
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1036
msgid "Resident Code Name (Singular)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1043
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1037
msgid "What you call a Resident Code at your church"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1054
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1048
msgid "Resident Code Slug"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1055
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1049
msgid "The root path for the Resident Code Taxonomy"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1068
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1062
msgid "Select post types which should have Resident Codes available as a native taxonomy."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1226
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1220
msgid "password saved"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1282
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1283
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1276
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1277
msgid "TouchPoint-WP"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1314
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1308
msgid "Settings"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1546
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1540
msgid "Script Update Failed"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1668
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1662
msgid "TouchPoint-WP Settings"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1719
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1713
msgid "Save Settings"
msgstr ""
diff --git a/src/TouchPoint-WP/EventsCalendar.php b/src/TouchPoint-WP/EventsCalendar.php
index a6bf27d5..e43f62fc 100644
--- a/src/TouchPoint-WP/EventsCalendar.php
+++ b/src/TouchPoint-WP/EventsCalendar.php
@@ -19,7 +19,7 @@
* Provides an interface to bridge the gap between The Events Calendar plugin (by ModernTribe) and the TouchPoint
* mobile app.
*
- * @deprecated since 0.0.90
+ * @deprecated since 0.0.90 Will not be necessary once mobile 3.0 exists.
*/
abstract class EventsCalendar implements api, module
{
diff --git a/src/TouchPoint-WP/Taxonomies.php b/src/TouchPoint-WP/Taxonomies.php
index f9ff8372..2a1dc25e 100644
--- a/src/TouchPoint-WP/Taxonomies.php
+++ b/src/TouchPoint-WP/Taxonomies.php
@@ -707,8 +707,8 @@ public static function registerTaxonomies(TouchPointWP $instance): void
[
'hierarchical' => true,
'show_ui' => true,
- /* translators: %s: taxonomy name, singular */
'description' => sprintf(
+ /* translators: %s: taxonomy name, singular */
__('Classify things by %s.', 'TouchPoint-WP'),
$instance->settings->dv_name_singular
),
diff --git a/src/templates/admin/invKoForm.php b/src/templates/admin/invKoForm.php
index 759c1979..291351e5 100644
--- a/src/templates/admin/invKoForm.php
+++ b/src/templates/admin/invKoForm.php
@@ -338,7 +338,7 @@ function initInvVm() {
let types = tpvm._vmContext.invTypesVM.invTypes();
for (let i in types) {
- let name = tpvm.people[invData[i].taskOwner]?.displayName ?? "(named person)";
+ let name = tpvm.people[invData[i].taskOwner]?.displayName ?? "";
applySelect2ForData('#it-' + types[i].slug() + '-taskOwner', name, invData[i].taskOwner);
}
diff --git a/touchpoint-wp.php b/touchpoint-wp.php
index 5c8885db..217c8f41 100644
--- a/touchpoint-wp.php
+++ b/touchpoint-wp.php
@@ -6,7 +6,7 @@
* @author James K
* @license AGPLv3+
* @link https://github.com/TenthPres/TouchPoint-WP
- * @package TouchPoint-WP
+ * @package TouchPointWP
*/
/*
From 391b8cbec6467d47295495928c0a56611e674822 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Fri, 1 Mar 2024 08:42:47 -0500
Subject: [PATCH 074/423] an expandable var_dump and resolving a null issue.
---
src/TouchPoint-WP/Utilities.php | 19 ++++++++++++++++++-
1 file changed, 18 insertions(+), 1 deletion(-)
diff --git a/src/TouchPoint-WP/Utilities.php b/src/TouchPoint-WP/Utilities.php
index 6cd9df8f..34135851 100644
--- a/src/TouchPoint-WP/Utilities.php
+++ b/src/TouchPoint-WP/Utilities.php
@@ -412,6 +412,23 @@ public static function createGuid(): string
. substr($char, 20, 12);
}
+ /**
+ * Do a var_dump, but within a container that can be expanded or contracted.
+ *
+ * @param ...$args
+ *
+ * @return void
+ */
+ public static function var_dump_expandable(...$args): void
+ {
+ echo "";
+ }
+
/**
* Get all HTTP request headers.
*
@@ -451,7 +468,7 @@ public static function updatePostImageFromUrl(int $postId, ?string $newUrl, stri
// Post image
global $wpdb;
$oldAttId = get_post_thumbnail_id($postId);
- $oldFName = $wpdb->get_var( "SELECT meta_value FROM $wpdb->postmeta WHERE post_id = '$oldAttId' AND meta_key = '_wp_attached_file'" );
+ $oldFName = $wpdb->get_var( "SELECT meta_value FROM $wpdb->postmeta WHERE post_id = '$oldAttId' AND meta_key = '_wp_attached_file'" ) ?? "";
$oldFName = substr($oldFName, strrpos($oldFName, '/') + 1);
$newUrl = trim((string)$newUrl); // nulls are now ""
From 7cfec1c2bf5674539a5a6da3033ba35365ecdc82 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Thu, 7 Mar 2024 16:12:12 -0500
Subject: [PATCH 075/423] Closes #164. Needs testing.
---
assets/js/base-defer.js | 6 +++++-
assets/js/meeting-defer.js | 1 -
2 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/assets/js/base-defer.js b/assets/js/base-defer.js
index 72b7b7ba..5319884e 100644
--- a/assets/js/base-defer.js
+++ b/assets/js/base-defer.js
@@ -69,7 +69,11 @@ function utilInit() {
}
tpvm._utils.clearHash = function() {
- window.location.hash = "";
+ if (!!window.history) {
+ window.history.pushState("", "", `${window.location.pathname}${window.location.search}`)
+ } else {
+ window.location.hash = "";
+ }
}
/**
diff --git a/assets/js/meeting-defer.js b/assets/js/meeting-defer.js
index 69b5ba6a..4e7246f3 100644
--- a/assets/js/meeting-defer.js
+++ b/assets/js/meeting-defer.js
@@ -54,7 +54,6 @@ class TP_Meeting {
e.stopPropagation();
mtg[action + "Action"]();
});
- tpvm._utils.handleHash(action);
}
}
From f3c7d404916d0697c822ed4919403d3680cc241c Mon Sep 17 00:00:00 2001
From: "James K."
Date: Tue, 9 Apr 2024 22:14:47 -0400
Subject: [PATCH 076/423] A few new classes
---
src/TouchPoint-WP/CalendarGrid.php | 287 ++++++++++++++++++
src/TouchPoint-WP/PostTypeCapable.php | 77 +++++
.../Utilities/StringableArray.php | 40 +++
3 files changed, 404 insertions(+)
create mode 100644 src/TouchPoint-WP/CalendarGrid.php
create mode 100644 src/TouchPoint-WP/PostTypeCapable.php
create mode 100644 src/TouchPoint-WP/Utilities/StringableArray.php
diff --git a/src/TouchPoint-WP/CalendarGrid.php b/src/TouchPoint-WP/CalendarGrid.php
new file mode 100644
index 00000000..758da5e5
--- /dev/null
+++ b/src/TouchPoint-WP/CalendarGrid.php
@@ -0,0 +1,287 @@
+ 12 || $year < 2020 || $year > 2100) {
+ $d = new DateTime('now', $tz);
+ $d = new DateTime($d->format('Y-m-01'), $tz);
+ } else {
+ $d = new DateTime("$year-$month-01", $tz);
+ }
+ } catch (Exception $e) {
+ $this->html = "";
+ return;
+ }
+
+ $firstDayOfMonth = DateTimeImmutable::createFromMutable($d);
+ $lastDayOfMonth = DateTimeImmutable::createFromMutable($d);
+
+ // Get the day of the week for the first day of the month (0 = Sunday, 1 = Monday, ..., 6 = Saturday)
+ $offsetDays = intval($d->format('w')); // w: Numeric representation of the day of the week
+ $d->modify("-$offsetDays days");
+ $r = "";
+
+ // Create a table to display the calendar
+ $r .= '';
+ foreach (Utilities::getDaysOfWeekShort() as $dayStr) {
+ $r .= "
$dayStr
";
+ }
+
+ $isMonthBefore = ($offsetDays !== 0);
+ $isMonthAfter = false;
+ $aDay = new DateInterval("P1D");
+ $dateFormat = get_option('date_format');
+
+ // Loop through the days of the month
+ do {
+ $day = $d->format("j");
+ $fullDay = $d->format($dateFormat);
+ $wd = $d->format("w");
+
+ try {
+ $newQ = self::adjustQueryForDay($q, $d, $tz);
+
+ $cellClass = ["calDay"];
+ if ($isMonthBefore) {
+ $cellClass[] = "before";
+ } elseif ($isMonthAfter) {
+ $cellClass[] = "after";
+ }
+
+ $posts = $newQ->get_posts();
+
+ if (count($posts) === 0) {
+ $cellClass[] = "empty";
+ }
+
+ if ($d < Utilities::dateTimeTodayAtMidnight()) {
+ $cellClass[] = "past";
+ }
+
+ $cellClass[] = "weekday-$wd";
+
+ $cellClass = implode(" ", $cellClass);
+
+ // Print the cell
+ $r .= "
";
+ $r .= "
$fullDay ";
+ $r .= "
$day ";
+
+ foreach ($posts as $e) {
+ $m = Meeting::fromPost($e);
+
+ $link = $m->permalink();
+
+ $classes = "event ";
+ $classes .= $m->status();
+ $classes .= $m->tense();
+ if ($m->isFeatured()) {
+ $classes .= " feat";
+ }
+ if ($m->startDt < $d) {
+ $classes .= " notFirstDay";
+ }
+ $ts = $m->startTimeString();
+ $r .= "
$ts $e->post_title ";
+ }
+
+ $r .= "
";
+
+ } catch (Exception $e) {
+ $r .= "";
+ }
+
+ // Increment days
+ $mo1 = $d->format('n');
+ $d->add($aDay);
+ $mo2 = $d->format('n');
+
+ if ($mo1 !== $mo2) {
+ if ($isMonthBefore) {
+ $isMonthBefore = false;
+ } else {
+ $isMonthAfter = true;
+ }
+ } else {
+ if (!$isMonthAfter && $day > 27) {
+ $lastDayOfMonth = DateTimeImmutable::createFromMutable($d);
+ }
+ }
+ } while (!$isMonthAfter || $d->format('w') !== '0');
+ $r .= '
';
+
+ $this->html = $r;
+
+ $this->next = $lastDayOfMonth->add($aDay);
+ $this->prev = $firstDayOfMonth->sub($aDay);
+ }
+
+ /**
+ * Render the grid as HTML.
+ *
+ * @return string
+ */
+ public function __toString(): string
+ {
+ return $this->html;
+ }
+
+ /**
+ * Adjust a WP_Query object to filter only to events that overlap with the given day.
+ *
+ * @param WP_Query $q The original query object.
+ * @param DateTimeInterface $d The day to filter down to. Only events on this day will be included.
+ * @param DateTimeZone $tz The timezone to use.
+ *
+ * @return WP_Query
+ * @throws Exception
+ */
+ private static function adjustQueryForDay(WP_Query $q, DateTimeInterface $d, DateTimeZone $tz): WP_Query
+ {
+ $q = clone $q;
+
+ $dStart = new DateTime($d->format('Y-m-d 00:00:00'), $tz);
+ $dEnd = new DateTime($d->format('Y-m-d 23:59:59'), $tz);
+
+ $existingMq = $q->get('meta_query');
+
+ $mq = [
+ [
+ 'key' => Meeting::MEETING_START_META_KEY,
+ 'value' => $dEnd->format('U'),
+ 'compare' => "<="
+ ],
+ [
+ [
+ 'key' => Meeting::MEETING_END_META_KEY,
+ 'value' => $dStart->format('U'),
+ 'compare' => ">="
+ ],
+ [ // This condition is to allow for the possibility of events without end times.
+ [
+ 'key' => Meeting::MEETING_END_META_KEY,
+ 'compare' => '=',
+ 'value' => 0
+ ],
+ [
+ 'key' => Meeting::MEETING_START_META_KEY,
+ 'value' => $dStart->format('U'),
+ 'compare' => ">"
+ ],
+ 'relation' => 'AND'
+ ],
+ 'relation' => 'OR'
+ ],
+ [
+ 'key' => Meeting::MEETING_META_KEY,
+ 'value' => 0,
+ 'compare' => ">"
+ ],
+ 'relation' => 'AND'
+ ];
+
+ if (!empty($existingMq)) {
+ $mq = [
+ 'relation' => 'AND',
+ $existingMq,
+ $mq,
+ ];
+ }
+
+ $q->set('meta_query', $mq);
+
+ $q->set('meta_key', Meeting::MEETING_START_META_KEY);
+ $q->set('orderby', 'meta_value');
+ $q->set('order', 'ASC');
+
+ $q->set('post_type', Involvement_PostTypeSettings::getPostTypes());
+
+ return $q;
+ }
+
+
+ /**
+ * Get HTML for a link to the next month.
+ *
+ * @return string
+ */
+ public function getNextLink(): string
+ {
+ return $this->getLinkForDate($this->next);
+ }
+
+ /**
+ * Get HTML for a link to the previous month.
+ *
+ * @return string
+ */
+ public function getPrevLink(): string
+ {
+ return $this->getLinkForDate($this->prev);
+ }
+
+ /**
+ * Get an HTML link for the period that includes the given date. This ONLY provides the URL Parameter portion, and
+ * is only meant to facilitate the next/prev links.
+ *
+ * @param DateTimeInterface $date
+ *
+ * @return string
+ */
+ protected function getLinkForDate(DateTimeInterface $date): string
+ {
+ $link = "?page=" . $date->format('m-Y');
+ if ($date->format('Y') === Utilities::dateTimeNow()->format('Y')) {
+ $label = date_i18n('F', $date->getTimestamp());
+ } else {
+ $label = date_i18n('F Y', $date->getTimestamp());
+ }
+ return "$label ";
+ }
+}
\ No newline at end of file
diff --git a/src/TouchPoint-WP/PostTypeCapable.php b/src/TouchPoint-WP/PostTypeCapable.php
new file mode 100644
index 00000000..d2ee8eb1
--- /dev/null
+++ b/src/TouchPoint-WP/PostTypeCapable.php
@@ -0,0 +1,77 @@
+post);
+ }
+
+ /**
+ * Get notable attributes.
+ *
+ * @param array $exclude Attributes listed here will be excluded. (e.g. if shown for a parent, not needed here.)
+ *
+ * @return string[]
+ */
+ public abstract function notableAttributes(array $exclude = []): array;
+
+ public abstract function getActionButtons(string $context, string $btnClass): StringableArray;
+
+ /**
+ * Indicates if the given post can be instantiated as the given post type.
+ *
+ * @param WP_Post $post
+ *
+ * @return bool
+ */
+ public static abstract function postIsType(WP_Post $post): bool;
+
+
+ /**
+ * Gets a TouchPoint item ID number, regardless of what type of object this is.
+ *
+ * @return int
+ */
+ public abstract function getTouchPointId(): int;
+
+}
\ No newline at end of file
diff --git a/src/TouchPoint-WP/Utilities/StringableArray.php b/src/TouchPoint-WP/Utilities/StringableArray.php
new file mode 100644
index 00000000..cc0fb16c
--- /dev/null
+++ b/src/TouchPoint-WP/Utilities/StringableArray.php
@@ -0,0 +1,40 @@
+separator = $separator;
+ parent::__construct($array, $flags, $iteratorClass);
+ }
+
+ /**
+ * Standard method to stringify.
+ *
+ * @return string
+ */
+ public function __toString()
+ {
+ return implode($this->separator, $this->getArrayCopy());
+ }
+}
\ No newline at end of file
From 5c54124c94132dd609186edca1a3213a4472db5b Mon Sep 17 00:00:00 2001
From: "James K."
Date: Wed, 10 Apr 2024 17:38:49 -0400
Subject: [PATCH 077/423] Correct a bug in classes
---
src/TouchPoint-WP/CalendarGrid.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/TouchPoint-WP/CalendarGrid.php b/src/TouchPoint-WP/CalendarGrid.php
index 758da5e5..94714bb0 100644
--- a/src/TouchPoint-WP/CalendarGrid.php
+++ b/src/TouchPoint-WP/CalendarGrid.php
@@ -119,7 +119,7 @@ public function __construct(WP_Query $q, int $month = null, int $year = null)
$link = $m->permalink();
$classes = "event ";
- $classes .= $m->status();
+ $classes .= $m->status() . " ";
$classes .= $m->tense();
if ($m->isFeatured()) {
$classes .= " feat";
From c697f43c7d04a68d514dd5da65068395e7db7a6e Mon Sep 17 00:00:00 2001
From: "James K."
Date: Wed, 10 Apr 2024 18:01:05 -0400
Subject: [PATCH 078/423] css for calendar grid
---
assets/template/calendar-style.css | 66 ++++++++++++++++++++++++++++++
1 file changed, 66 insertions(+)
create mode 100644 assets/template/calendar-style.css
diff --git a/assets/template/calendar-style.css b/assets/template/calendar-style.css
new file mode 100644
index 00000000..384c83a4
--- /dev/null
+++ b/assets/template/calendar-style.css
@@ -0,0 +1,66 @@
+
+div.calGrid {
+ display: grid;
+ grid-template-columns: repeat(7, 1fr);
+}
+
+div.calGrid,
+div.calGrid > div.calDay {
+ border: 1px solid black;
+ min-height: 5em;
+}
+
+div.calGrid div.calDay > h3.calDayHead {
+ display: none;
+}
+
+div.calGrid div.calDay > * {
+ display: block;
+}
+
+div.calGrid div.calDay > a.event.feat {
+ background: #ff0;
+}
+
+div.calGrid div.calDay > a.event.cancelled {
+ color: red;
+ text-decoration: line-through;
+}
+
+div.calGrid div.calDay > a {
+ padding: .2em;
+}
+
+div.calGrid div.calDay.before,
+div.calGrid div.calDay.after {
+ opacity: .8;
+ background: #0001;
+}
+
+@media screen and (max-width: 600px) {
+ div.calGrid {
+ display: grid;
+ grid-template-columns: unset;
+ }
+
+ div.calGrid,
+ div.calGrid > div.calDay {
+ border: unset;
+ min-height: unset;
+ }
+
+ div.calGrid div.calWeekdayHead,
+ div.calGrid div.calDay.before,
+ div.calGrid div.calDay.empty,
+ div.calGrid div.calDay.after {
+ display: none;
+ }
+
+ div.calGrid div.calDay > span.calDayNum {
+ display: none;
+ }
+
+ div.calGrid div.calDay > h3.calDayHead {
+ display:block;
+ }
+}
\ No newline at end of file
From 5223efeba841a739bf475ebb0d9f3e80ed36a0d2 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Wed, 10 Apr 2024 18:18:06 -0400
Subject: [PATCH 079/423] Date string formatting
---
src/TouchPoint-WP/Utilities/DateFormats.php | 108 ++++++++++++++++++++
1 file changed, 108 insertions(+)
create mode 100644 src/TouchPoint-WP/Utilities/DateFormats.php
diff --git a/src/TouchPoint-WP/Utilities/DateFormats.php b/src/TouchPoint-WP/Utilities/DateFormats.php
new file mode 100644
index 00000000..f59e05d2
--- /dev/null
+++ b/src/TouchPoint-WP/Utilities/DateFormats.php
@@ -0,0 +1,108 @@
+getTimestamp());
+
+ /**
+ * Allows for manipulation of the string returned as a formatted time.
+ *
+ * @since 0.0.34
+ *
+ * @param string $ts The string, as formatted so far.
+ * @param DateTimeInterface $dt The DateTimeInterface object for the time being formatted.
+ */
+ return apply_filters('tp_adjust_time_string', $ts, $dt);
+ }
+
+ /**
+ * Get a string for a single given datetime string.
+ *
+ * @param DateTimeInterface $dt
+ *
+ * @return string
+ */
+ public static function DateStringFormatted(DateTimeInterface $dt): string
+ {
+ // Today
+ $now = Utilities::dateTimeNow();
+ if ($dt->format("Ymd") === $now->format("Ymd")) {
+ if ((int)$dt->format('G') >= 17) { // 5pm or later
+ $r = __("Tonight", "TouchPoint-WP");
+ } else {
+ $r = __("Today", "TouchPoint-WP");
+ }
+ } else {
+ // Tomorrow
+ $tomorrow = Utilities::dateTimeNowPlus1D();
+ if ($tomorrow->format("Ymd") === $dt->format("Ymd")) {
+ $r = __("Tomorrow", "TouchPoint-WP");
+ } else {
+ $ts = $dt->getTimestamp();
+ $nowTs = $now->getTimestamp();
+
+
+ if ($tomorrow->format("Y") === $dt->format("Y")) { // Same Year
+ $day = date_i18n(_x('l', "Date string for day of the week, when given without a year.", "TouchPoint-WP"), $ts);
+ $date = date_i18n(_x('M j', "Date string when given without a year", "TouchPoint-WP"), $ts);
+ } else {
+ $day = date_i18n(_x('D', "Date string for day of the week, when given with a year.", "TouchPoint-WP"), $ts);
+ $date = date_i18n(_x('M j, Y', "Date string when given with a year", "TouchPoint-WP"), $ts);
+ }
+
+ // Last week
+ if ($ts - $nowTs > -7 * 86400 && $ts - $nowTs < 0) {
+ // translators: %1s is "Monday". %2s is "January 1".
+ $r = sprintf(_x('Last %1$s, %2$s', "Date format string", 'TouchPoint-WP'), $day, $date);
+ }
+
+ // This week
+ else if ($ts - $nowTs < 7 * 86400) {
+ // translators: %1s is "Monday". %2s is "January 1".
+ $r = sprintf(_x('This %1$s, %2$s', "Date format string", 'TouchPoint-WP'), $day, $date);
+ }
+
+ // Next week
+ else if ($ts - $nowTs < 14 * 86400) {
+ // translators: %1$s is "Monday". %2$s is "January 1".
+ $r = sprintf(_x('Next %1$s, %2$s', "Date format string", 'TouchPoint-WP'), $day, $date);
+
+ // Other Times
+ } else {
+ // translators: %1s is "Monday". %2s is "January 1".
+ $r = sprintf(_x('%1$s, %2$s', "Date format string", 'TouchPoint-WP'), $day, $date);
+ }
+ }
+ }
+
+ /**
+ * Allows for manipulation of the string returned as a formatted date.
+ *
+ * @since 0.0.90
+ *
+ * @param string $ts The string, as formatted so far.
+ * @param DateTimeInterface $dt The DateTimeInterface object for the date being formatted.
+ */
+ return apply_filters('tp_adjust_date_string', $r, $dt);
+ }
+}
\ No newline at end of file
From eb6a7b05187cdc58c795d7e87ec01a787af1cf79 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Mon, 15 Apr 2024 17:02:46 -0400
Subject: [PATCH 080/423] WebApi Update to reflect end times
---
src/python/WebApi.py | 33 ++++++++++++++++++++++++++-------
1 file changed, 26 insertions(+), 7 deletions(-)
diff --git a/src/python/WebApi.py b/src/python/WebApi.py
index 7b5d27bb..3e26721b 100644
--- a/src/python/WebApi.py
+++ b/src/python/WebApi.py
@@ -192,8 +192,11 @@ def get_person_info_for_sync(person_obj):
regex = re.compile('[^0-9,]')
divs = regex.sub('', Data.divs)
+ exDivs = regex.sub('', Data.exDivs)
if (len(divs)) < 1:
divs = '0'
+ if (len(exDivs)) < 1:
+ exDivs = '-1'
mtgHist = -int(Data.mtgHist) if Data.mtgHist != "" else 0
mtgFuture = int(Data.mtgFuture) if Data.mtgFuture != "" else 365
@@ -209,7 +212,7 @@ def get_person_info_for_sync(person_obj):
hostMemTypes = "NULL"
# noinspection SqlResolve,SqlUnusedCte,SqlRedundantOrderingDirection
- invSql = ('''
+ invSql = (('''
WITH cteTargetOrgs as
(
SELECT
@@ -228,6 +231,7 @@ def get_person_info_for_sync(person_obj):
o.RegistrationTypeId AS regTypeId,
o.OrgPickList,
o.MainLeaderId,
+ o.ShowInSites,
o.ImageUrl,
o.BadgeUrl,
o.RegistrationMobileId,
@@ -256,6 +260,12 @@ def get_person_info_for_sync(person_obj):
AND m.MeetingDate < DATEADD(day, {4}, GETDATE())
GROUP BY m.OrganizationId
)
+ AND o.OrganizationId NOT IN (
+ SELECT DISTINCT do.OrgId
+ FROM dbo.DivOrg do
+ WHERE do.OrgId = o.OrganizationId
+ AND do.DivId IN ({5})
+ )
)
),
-- select all members for these organizations to avoid multiple scans of Organization members table
@@ -299,8 +309,8 @@ def get_person_info_for_sync(person_obj):
SELECT cto.OrganizationId,
(
SELECT om.MeetingId as mtgId,
- FORMAT(om.meetingDate, 'yyyy-MM-ddTHH:mm:ss') as mtgStartDt,
- null as mtgEndDt, -- TODO end time
+ FORMAT(om.MeetingDate, 'yyyy-MM-ddTHH:mm:ss') as mtgStartDt,
+ FORMAT(om.MeetingEnd, 'yyyy-MM-ddTHH:mm:ss') as mtgEndDt,
om.Location as location,
om.Description as name,
1 - om.DidNotMeet as status,
@@ -311,8 +321,9 @@ def get_person_info_for_sync(person_obj):
ON om.OrganizationId = o.OrganizationId
LEFT JOIN dbo.MeetingExtra me
ON om.MeetingId = me.MeetingId AND 'ParentMeeting' = me.Field
- WHERE om.MeetingDate > DATEADD(day, {3}, GETDATE())
- AND om.OrganizationId = cto.OrganizationId
+ WHERE om.OrganizationId = cto.OrganizationId AND
+ om.MeetingDate > DATEADD(DAY, {3}, GETDATE()) AND
+ om.MeetingDate < DATEADD(DAY, {4}, GETDATE())
FOR JSON PATH, INCLUDE_NULL_VALUES
) as OrgMeetings
FROM cteTargetOrgs cto
@@ -381,6 +392,7 @@ def get_person_info_for_sync(person_obj):
, o.[MemberCount] AS [memberCount]
, o.[groupFull] AS [groupFull]
, o.[GenderId] AS [genderId]
+ , o.[ShowInSites] AS [showInSites]
, o.[Description] AS [description]
, o.[closed] AS [closed]
, o.[NotWeekly] AS [notWeekly]
@@ -422,7 +434,8 @@ def get_person_info_for_sync(person_obj):
ON o.OrganizationId = ol.OrganizationId
LEFT JOIN lookup.Campus c
ON o.CampusId = c.Id
- ORDER BY o.parentInvId ASC, o.OrganizationId ASC''').format(divs, hostMemTypes, featMtgs, mtgHist, mtgFuture)
+ ORDER BY o.parentInvId ASC, o.OrganizationId ASC''').
+ format(divs, hostMemTypes, featMtgs, mtgHist, mtgFuture, exDivs))
groups = model.SqlListDynamicData(invSql)
@@ -567,11 +580,17 @@ def get_person_info_for_sync(person_obj):
SELECT p.*, 8 as score FROM People p
WHERE (p.FirstName LIKE '{0}%' OR p.NickName LIKE '{0}%') AND (p.AltName LIKE '{1}%' OR p.MaidenName LIKE '{1}%')
UNION
+ SELECT p.*, 7 as score FROM People p -- Businesses/Orgs
+ WHERE p.LastName LIKE '{0}% {1}%'
+ UNION
+ SELECT p.*, 6 as score FROM People p -- Businesses/Orgs
+ WHERE p.LastName LIKE '{0}%{1}%'
+ UNION
SELECT p.*, 5 as score FROM People p
WHERE (p.FirstName LIKE '{0}%' OR p.NickName LIKE '{0}%') OR p.LastName LIKE '{1}%'
UNION
SELECT p.*, 4 as score FROM People p
- WHERE (p.FirstName LIKE '{0}%' OR p.NickName LIKE '{0}%') OR (p.AltName LIKE '{1}%' OR p.MaidenName LIKE '{1}')
+ WHERE (p.FirstName LIKE '{0}%' OR p.NickName LIKE '{0}%') OR (p.AltName LIKE '{1}%' OR p.MaidenName LIKE '{1}%')
) p1
GROUP BY
p1.PeopleId,
From 173c2910d12aa6f66e800f2605a78b808f2e36e7 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Mon, 15 Apr 2024 17:03:35 -0400
Subject: [PATCH 081/423] Prev/Next format for Cal Grid
---
src/TouchPoint-WP/CalendarGrid.php | 42 ++++++++++++++++++++++++++++++
1 file changed, 42 insertions(+)
diff --git a/src/TouchPoint-WP/CalendarGrid.php b/src/TouchPoint-WP/CalendarGrid.php
index 94714bb0..51ce16c2 100644
--- a/src/TouchPoint-WP/CalendarGrid.php
+++ b/src/TouchPoint-WP/CalendarGrid.php
@@ -31,8 +31,20 @@ class CalendarGrid {
public ?DateTimeImmutable $next = null;
public ?DateTimeImmutable $prev = null;
+ /**
+ * The HTML for the calendar grid.
+ *
+ * @var string
+ */
public string $html;
+ /**
+ * The name of the month being displayed.
+ *
+ * @var string
+ */
+ public string $monthName;
+
/**
* Create a calendar grid for a given month and year.
@@ -62,6 +74,8 @@ public function __construct(WP_Query $q, int $month = null, int $year = null)
$firstDayOfMonth = DateTimeImmutable::createFromMutable($d);
$lastDayOfMonth = DateTimeImmutable::createFromMutable($d);
+ $this->monthName = date_i18n("F", $d->getTimestamp());
+
// Get the day of the week for the first day of the month (0 = Sunday, 1 = Monday, ..., 6 = Saturday)
$offsetDays = intval($d->format('w')); // w: Numeric representation of the day of the week
$d->modify("-$offsetDays days");
@@ -172,6 +186,34 @@ public function __toString(): string
return $this->html;
}
+ /**
+ * This method returns a navigation bar for the calendar grid with simply next/prev month links.
+ *
+ * @param bool $withMonthName
+ *
+ * @return string
+ */
+ public function navBar(bool $withMonthName = false): string
+ {
+ $r = "";
+ $r .= "
";
+ $r .= $this->getPrevLink();
+ $r .= "
";
+
+ if ($withMonthName) {
+ $r .= "
";
+ $r .= "
$this->monthName ";
+ $r .= "";
+ }
+
+ $r .= "
";
+ $r .= $this->getNextLink();
+ $r .= "
";
+ $r .= "
";
+
+ return $r;
+ }
+
/**
* Adjust a WP_Query object to filter only to events that overlap with the given day.
*
From 6e035375f34d20db9fbfed96c6f96223bf8078b6 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Wed, 17 Apr 2024 00:16:09 -0400
Subject: [PATCH 082/423] Resolve an issue where contact buttons (and others,
presumably) don't work if the involvement identifier is on the button rather
than the parent element.
---
assets/js/base-defer.js | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/assets/js/base-defer.js b/assets/js/base-defer.js
index 5319884e..36b3d814 100644
--- a/assets/js/base-defer.js
+++ b/assets/js/base-defer.js
@@ -521,7 +521,13 @@ class TP_Mappable {
this.connectedElements[ei].addEventListener('mouseenter', function(e){e.stopPropagation(); mappable.toggleHighlighted(true);});
this.connectedElements[ei].addEventListener('mouseleave', function(e){e.stopPropagation(); mappable.toggleHighlighted(false);});
- let actionBtns = this.connectedElements[ei].querySelectorAll('[data-tp-action]')
+ let ce = this.connectedElements[ei],
+ actionBtns = Array.from(ce.querySelectorAll('[data-tp-action]'));
+ if (ce.hasAttribute('data-tp-action')) {
+ // if there's a sole button, it should be added to the list so it works, too.
+ actionBtns.push(ce);
+ }
+
for (const ai in actionBtns) {
if (!actionBtns.hasOwnProperty(ai)) continue;
const action = actionBtns[ai].getAttribute('data-tp-action');
From 7c2064d7b614248068a4e8e5d34e8a919412e4e9 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Fri, 26 Apr 2024 09:10:08 -0400
Subject: [PATCH 083/423] Allow documentation for hooks to be generated
automatically.
---
composer.json | 2 +
generateDocs.ps1 | 15 ++++-
src/TouchPoint-WP/Auth.php | 18 ++++--
src/TouchPoint-WP/EventsCalendar.php | 22 +++++++-
src/TouchPoint-WP/Involvement.php | 61 +++++++++++++++++++--
src/TouchPoint-WP/Partner.php | 30 +++++++++-
src/TouchPoint-WP/Person.php | 39 ++++++++++++-
src/TouchPoint-WP/Report.php | 9 ++-
src/TouchPoint-WP/TouchPointWP.php | 28 ++++++++--
src/TouchPoint-WP/TouchPointWP_Settings.php | 5 +-
src/TouchPoint-WP/Utilities.php | 39 ++++++++++++-
11 files changed, 241 insertions(+), 27 deletions(-)
diff --git a/composer.json b/composer.json
index 8a9d67f0..88deaebc 100644
--- a/composer.json
+++ b/composer.json
@@ -33,6 +33,8 @@
"ext-zip": "*"
},
"require-dev": {
+ "pronamic/wp-documentor": "^1.3",
+ "skayo/phpdoc-md": "^0.2.0"
},
"config": {
"allow-plugins": {
diff --git a/generateDocs.ps1 b/generateDocs.ps1
index fec7fa92..2af32319 100644
--- a/generateDocs.ps1
+++ b/generateDocs.ps1
@@ -7,4 +7,17 @@ if (!(test-path $pharFile -newerThan $compareDt))
Invoke-WebRequest https://www.phpdoc.org/phpDocumentor.phar -OutFile $pharFile
}
-php phpDocumentor.phar
\ No newline at end of file
+.\vendor\bin\wp-documentor parse --output=docs/wpApi/actions.rst --prefix=tp_ --type=actions --format=phpdocumentor-rst .\src\TouchPoint-WP\
+.\vendor\bin\wp-documentor parse --output=docs/wpApi/filters.rst --prefix=tp_ --type=filters --format=phpdocumentor-rst .\src\TouchPoint-WP\
+
+if (Test-Path .\docs\wpApi\index.rst)
+{
+ Remove-Item .\docs\wpApi\index.rst
+}
+New-Item .\docs\wpApi\index.rst -type File
+Get-Content .\docs\wpApi\filters.rst, .\docs\wpApi\actions.rst | Out-File .\docs\wpApi\index.rst
+
+php phpDocumentor.phar --template=responsive
+
+#.\vendor\bin\phpdocmd docs/phpApi/structure.xml docs/api --lt %c --index _Sidebar.md
+
diff --git a/src/TouchPoint-WP/Auth.php b/src/TouchPoint-WP/Auth.php
index 2dd31127..330a2c5d 100644
--- a/src/TouchPoint-WP/Auth.php
+++ b/src/TouchPoint-WP/Auth.php
@@ -262,10 +262,13 @@ private static function createApiKeyIfNeeded(): void
*/
public static function redirectLoginFormMaybe()
{
- $redirect = apply_filters(
- TouchPointWP::HOOK_PREFIX . 'auto_redirect_login',
- (TouchPointWP::instance()->settings->auth_default === 'on')
- );
+ $redirect = TouchPointWP::instance()->settings->auth_default === 'on';
+ /**
+ * Controls whether to redirect to the TouchPoint login automatically.
+ *
+ * @param bool $redirect Value preset from setting TouchPoint login as default.
+ */
+ $redirect = apply_filters('tp_auto_redirect_login', $redirect);
if (isset($_GET[TouchPointWP::HOOK_PREFIX . 'no_redirect'])) {
$redirect = false;
@@ -286,7 +289,12 @@ public static function removeAdminBarMaybe()
&& ! is_admin()
&& ! current_user_can('edit_posts');
- $removeBar = apply_filters(TouchPointWP::HOOK_PREFIX . 'prevent_admin_bar', $removeBar);
+ /**
+ * Allows for hiding the WordPress-provided Admin bar.
+ *
+ * @param bool $removeBar True if bar should be removed.
+ */
+ $removeBar = apply_filters('tp_prevent_admin_bar', $removeBar);
if ($removeBar) {
show_admin_bar(false);
diff --git a/src/TouchPoint-WP/EventsCalendar.php b/src/TouchPoint-WP/EventsCalendar.php
index e43f62fc..8d150ea9 100644
--- a/src/TouchPoint-WP/EventsCalendar.php
+++ b/src/TouchPoint-WP/EventsCalendar.php
@@ -67,7 +67,16 @@ protected static function generateEventsList(array $params = []): array
$content = trim(get_the_content(null, true, $eQ->ID));
$content = apply_filters('the_content', $content);
- $content = apply_filters(TouchPointWP::HOOK_PREFIX . 'app_events_content', $content);
+ /**
+ * Allows for manipulation of the html returned to the calendar feature of 2.0 Mobile apps.
+ *
+ * @since 0.0.2
+ *
+ * @depecated 0.0.90 Will be going away with Mobile App version 2.0
+ *
+ * @param string $content The html thus far.
+ */
+ $content = apply_filters('tp_app_events_content', $content);
$content = html_entity_decode($content);
@@ -107,7 +116,16 @@ protected static function generateEventsList(array $params = []): array
$cssUrl = TouchPointWP::instance(
)->assets_url . 'template/ec-standardizing-style.css?v=' . TouchPointWP::VERSION;
}
- $cssUrl = apply_filters(TouchPointWP::HOOK_PREFIX . 'app_events_css_url', $cssUrl);
+
+ /**
+ * Insert a CSS file into all event content for mobile 2.0 app.
+ *
+ * @since 0.0.3
+ * @depecated 0.0.90 Will be going away with Mobile App version 2.0
+ *
+ * @param string $cssUrl The url for a CSS file. By default, one provided with the plugin is used.
+ */
+ $cssUrl = apply_filters('tp_app_events_css_url', $cssUrl);
if (is_string($cssUrl)) {
$content = " " . $content;
}
diff --git a/src/TouchPoint-WP/Involvement.php b/src/TouchPoint-WP/Involvement.php
index df181959..eb3518e8 100644
--- a/src/TouchPoint-WP/Involvement.php
+++ b/src/TouchPoint-WP/Involvement.php
@@ -1186,7 +1186,17 @@ public static function listShortcode($params = [], string $content = ""): string
'type' => null,
'div' => null,
'class' => self::$containerClass,
- 'includecss' => apply_filters(TouchPointWP::HOOK_PREFIX . 'use_css', true, self::class),
+
+ /**
+ * Determines whether or not to automatically include the plugin-default CSS. Return false to use your
+ * own CSS instead.
+ *
+ * @since 0.0.15
+ *
+ * @param bool $useCss Whether or not to include the default CSS. True = include
+ * @param string $className The name of the current calling class.
+ */
+ 'includecss' => apply_filters('tp_use_css', true, self::class),
'itemclass' => self::$itemClass,
'usequery' => false
],
@@ -2829,6 +2839,7 @@ public function notableAttributes(array $exclude = []): array
* such as the schedule, leaders, and location.
*
* @see Involvement::notableAttributes()
+ * @see PostTypeCapable::notableAttributes()
*
* @since 0.0.11
*
@@ -2920,7 +2931,29 @@ public function getActionButtons(string $context = null, string $btnClass = ""):
}
}
- return apply_filters(TouchPointWP::HOOK_PREFIX . "involvement_actions", $ret, $this, $context, $btnClass);
+ if ($withTouchPointLink && TouchPointWP::currentUserIsAdmin()) {
+ $tpHost = TouchPointWP::instance()->host();
+ $title = sprintf(__("Involvement in %s", "TouchPoint-WP"), TouchPointWP::instance()->settings->system_name);
+ $logo = TouchPointWP::TouchPointIcon();
+ $ret[] = "invId\" title=\"$title\" class=\"tp-TouchPoint-logo $classesOnly\">$logo ";
+ }
+
+ /**
+ * Allows for manipulation of the action buttons for an Involvement. This is the list of buttons that appear
+ * on the Involvement to allow the user to interact with it.
+ *
+ * @since 0.0.7
+ *
+ * @see Involvement::getActionButtons()
+ * @see PostTypeCapable::getActionButtons()
+ *
+ * @param StringableArray $ret The list of action buttons.
+ * @param Involvement $this The Involvement object.
+ * @param ?string $context A reference to where the action buttons are meant to be used.
+ * @param string $btnClass A string for classes to add to the buttons. Note that buttons can be 'a' or 'button'
+ * elements.
+ */
+ return apply_filters("tp_involvement_actions", $ret, $this, $context, $btnClass);
}
public static function getJsInstantiationString(): string
@@ -2990,8 +3023,28 @@ private static function ajaxInvJoin(): void
*/
protected static function allowContact(string $invType): bool
{
- $allowed = !!apply_filters(TouchPointWP::HOOK_PREFIX . 'allow_contact', true);
- return !!apply_filters(TouchPointWP::HOOK_PREFIX . 'inv_allow_contact', $allowed, $invType);
+ /**
+ * Determines whether contact of any kind is allowed. This is meant to prevent abuse in contact forms by
+ * removing the ability to contact people and thereby hiding the forms.
+ *
+ * @since 0.0.35
+ *
+ * @param bool $allowed True if contact is allowed.
+ */
+ $allowed = !!apply_filters('tp_allow_contact', true);
+
+ /**
+ * Determines whether contact is allowed for any Involvements. This is called *after* tp_allow_contact, and
+ * that will set the default.
+ *
+ * @since 0.0.35
+ *
+ * @see tp_allow_contact
+ *
+ * @param bool $allowed Previous response from tp_allow_contact. True if contact is allowed.
+ * @param string $invType The name of the Involvement Type.
+ */
+ return !!apply_filters('tp_inv_allow_contact', $allowed, $invType);
}
/**
diff --git a/src/TouchPoint-WP/Partner.php b/src/TouchPoint-WP/Partner.php
index bf933d01..cfa9f325 100644
--- a/src/TouchPoint-WP/Partner.php
+++ b/src/TouchPoint-WP/Partner.php
@@ -539,7 +539,18 @@ public static function updateFromTouchPoint(bool $verbose = false)
*/
public static function templateFilter(string $template): string
{
- if (apply_filters(TouchPointWP::HOOK_PREFIX . 'use_default_templates', true, self::class)) {
+ /**
+ * Determines whether the plugin's default templates should be used. Theme developers can return false in this
+ * filter to prevent the default templates from applying, especially if they conflict with the theme.
+ *
+ * Default is true.
+ *
+ * @since 0.0.6
+ *
+ * @param bool $value The value to return. True will allow the default templates to be applied.
+ * @param string $className The name of the class calling for the template.
+ */
+ if (apply_filters('tp_use_default_templates', true, self::class)) {
$postTypesToFilter = self::POST_TYPE;
$templateFilesToOverwrite = self::TEMPLATES_TO_OVERWRITE;
@@ -1248,7 +1259,22 @@ public function getActionButtons(string $context = null, string $btnClass = ""):
$ret .= "$text ";
}
- return apply_filters(TouchPointWP::HOOK_PREFIX . "partner_actions", $ret, $this, $context, $btnClass);
+ /**
+ * Allows for manipulation of the action buttons for a Partner. This is the list of buttons that appear
+ * on the Partner to allow the user to interact with it.
+ *
+ * @since 0.0.7
+ *
+ * @see Partner::getActionButtons()
+ * @see PostTypeCapable::getActionButtons()
+ *
+ * @param StringableArray $ret The list of action buttons.
+ * @param Partner $this The Partner object.
+ * @param ?string $context A reference to where the action buttons are meant to be used.
+ * @param string $btnClass A string for classes to add to the buttons. Note that buttons can be 'a' or 'button'
+ * elements.
+ */
+ return apply_filters("tp_partner_actions", $ret, $this, $context, $btnClass);
}
public static function getJsInstantiationString(): string
diff --git a/src/TouchPoint-WP/Person.php b/src/TouchPoint-WP/Person.php
index eecd2e44..5f08e0fe 100644
--- a/src/TouchPoint-WP/Person.php
+++ b/src/TouchPoint-WP/Person.php
@@ -1190,7 +1190,21 @@ public function getActionButtons(string $context = null, string $btnClass = ""):
$ret = "$text ";
}
- return apply_filters(TouchPointWP::HOOK_PREFIX . "person_actions", $ret, $this, $context, $btnClass);
+ /**
+ * Allows for manipulation of the action buttons for a Person. This is the list of buttons that appear
+ * on the Person to allow the user to interact with them.
+ *
+ * @since 0.0.90
+ *
+ * @see Person::getActionButtons()
+ *
+ * @param StringableArray $ret The list of action buttons.
+ * @param Person $this The Person object.
+ * @param ?string $context A reference to where the action buttons are meant to be used.
+ * @param string $btnClass A string for classes to add to the buttons. Note that buttons can be 'a' or 'button'
+ * elements.
+ */
+ return apply_filters("tp_person_actions", $ret, $this, $context, $btnClass);
}
/**
@@ -1699,8 +1713,27 @@ public static function api(array $uri): bool
*/
protected static function allowContact(): bool
{
- $allowed = !!apply_filters(TouchPointWP::HOOK_PREFIX . 'allow_contact', true);
- return !!apply_filters(TouchPointWP::HOOK_PREFIX . 'person_allow_contact', $allowed);
+ /**
+ * Determines whether contact of any kind is allowed. This is meant to prevent abuse in contact forms by
+ * removing the ability to contact people and thereby hiding the forms.
+ *
+ * @since 0.0.35
+ *
+ * @param bool $allowed True if contact is allowed.
+ */
+ $allowed = !!apply_filters('tp_allow_contact', true);
+
+ /**
+ * Determines whether contact is allowed for any People. This is called *after* tp_allow_contact, and
+ * that will set the default.
+ *
+ * @since 0.0.35
+ *
+ * @see tp_allow_contact
+ *
+ * @param bool $allowed Previous response from tp_allow_contact. True if contact is allowed.
+ */
+ return !!apply_filters('tp_person_allow_contact', $allowed);
}
/**
diff --git a/src/TouchPoint-WP/Report.php b/src/TouchPoint-WP/Report.php
index 7312ecfb..e4d9bf8f 100644
--- a/src/TouchPoint-WP/Report.php
+++ b/src/TouchPoint-WP/Report.php
@@ -294,7 +294,14 @@ public static function reportShortcode($params = [], string $content = ""): stri
// Add Figure elt with a unique ID
$idAttr = "id=\"" . wp_unique_id('tp-report-') . "\"";
- $class = apply_filters(self::FIGURE_CLASS_FILTER, self::FIGURE_CLASS_DEFAULT);
+
+ /**
+ * Filter the class name to be used for the displaying the report.
+ *
+ * @param string $className The class name to be used.
+ * @param Report $report The report being displayed.
+ */
+ $class = apply_filters("tp_rpt_figure_class", self::$classDefault, $report);
$rc = "\n\t" . str_replace("\n", "\n\t", $rc);
// If desired, add a caption that indicates when the table was last updated.
diff --git a/src/TouchPoint-WP/TouchPointWP.php b/src/TouchPoint-WP/TouchPointWP.php
index 2f0f2a2b..551fc876 100644
--- a/src/TouchPoint-WP/TouchPointWP.php
+++ b/src/TouchPoint-WP/TouchPointWP.php
@@ -65,7 +65,7 @@ class TouchPointWP
*/
public const HOOK_PREFIX = "tp_";
- public const INIT_ACTION_HOOK = self::HOOK_PREFIX . "init";
+ public const INIT_ACTION_HOOK = "tp_init"; // Note that this is also hard-coded where the action is declared.
/**
* Prefix to use for all settings.
@@ -752,7 +752,10 @@ public static function init(): void
self::requireScript("base");
- do_action(self::INIT_ACTION_HOOK);
+ /**
+ * Fires after the plugin has been initialized.
+ */
+ do_action("tp_init");
}
/**
@@ -867,7 +870,12 @@ public function registerScriptsAndStyles(): void
*/
public static function requireScript(string $name = null): void
{
- if ( ! apply_filters(TouchPointWP::HOOK_PREFIX . "include_script_" . strtolower($name), true)) {
+ /**
+ * Filter to determine if a given script (which comes with TouchPoint-WP) should be included.
+ *
+ * @params bool $include Whether to include the script.
+ */
+ if ( !apply_filters("tp_include_script_" . strtolower($name), true)) {
return;
}
@@ -895,7 +903,12 @@ public static function requireScript(string $name = null): void
*/
public static function requireStyle(string $name = null): void
{
- if ( ! apply_filters(TouchPointWP::HOOK_PREFIX . "include_style_" . strtolower($name), true)) {
+ /**
+ * Filter to determine if a given stylesheet (which comes with TouchPoint-WP) should be included.
+ *
+ * @params bool $include Whether to include the stylesheet.
+ */
+ if ( ! apply_filters("tp_include_style_" . strtolower($name), true)) {
return;
}
@@ -2355,7 +2368,12 @@ public static function enqueuePartialsStyle(): void
*/
public static function enqueueActionsStyle(string $action): void
{
- $includeActionsStyle = ! ! apply_filters(TouchPointWP::HOOK_PREFIX . "include_actions_style", true, $action);
+ /**
+ * Filter to determine if the stylesheet that adjusts SWAL and other action-related items should be included.
+ *
+ * @params bool $include Whether to include the styles. Default true = include.
+ */
+ $includeActionsStyle = !!apply_filters("tp_include_actions_style", true, $action);
if ($includeActionsStyle) {
wp_enqueue_style(
TouchPointWP::SHORTCODE_PREFIX . 'actions-style',
diff --git a/src/TouchPoint-WP/TouchPointWP_Settings.php b/src/TouchPoint-WP/TouchPointWP_Settings.php
index 5c388d50..56f29569 100644
--- a/src/TouchPoint-WP/TouchPointWP_Settings.php
+++ b/src/TouchPoint-WP/TouchPointWP_Settings.php
@@ -1274,8 +1274,11 @@ public function addMenuItems(): void
*/
private function menu_settings()
{
+ /**
+ * Adjust the menu settings before they're applied.
+ */
return apply_filters(
- TouchPointWP::SETTINGS_PREFIX . 'menu_settings',
+ 'tp_menu_settings',
[
'location' => 'options', // Possible settings: options, menu, submenu.
'parent_slug' => 'options-general.php',
diff --git a/src/TouchPoint-WP/Utilities.php b/src/TouchPoint-WP/Utilities.php
index 34135851..4fe4fc27 100644
--- a/src/TouchPoint-WP/Utilities.php
+++ b/src/TouchPoint-WP/Utilities.php
@@ -575,15 +575,48 @@ public static function standardizeHtml(?string $html, ?string $context = null):
return $o;
}
- $html = apply_filters(TouchPointWP::HOOK_PREFIX . 'pre_standardize_html', $html, $context);
- $maxHeader = intval(apply_filters(TouchPointWP::HOOK_PREFIX . 'standardize_h_tags_max_h', 2, $context));
+ /**
+ * Make any adjustments to HTML content before the rest of the standardization process happens.
+ *
+ * @since 0.0.25
+ *
+ * @param string $html The HTML to be standardized.
+ * @param string $context A context string to pass to hooks.
+ *
+ * @return string The standardized HTML.
+ */
+ $html = apply_filters('tp_pre_standardize_html', $html, $context);
+
+
+ /**
+ * The maximum header level to allow in the HTML. Default is 2.
+ *
+ * @since 0.0.25
+ *
+ * @param int $maxHeader The highest header level (lowest number) to allow in the HTML. (e.g. 2 for
+
+
+
+
+
+
+
+
@@ -71,6 +79,7 @@ function Location(data) {
this.name = ko.observable(data.name ?? "");
this.lat = ko.observable(data.lat ?? "");
this.lng = ko.observable(data.lng ?? "");
+ this.radius = ko.observable(data.radius ?? 0.1);
this.ipAddresses = ko.observableArray(data.ipAddresses ?? []);
this._visible = ko.observable(false);
From a69457cd7cdc7586aae0e40207977013adf6b275 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Tue, 25 Jun 2024 10:47:49 -0400
Subject: [PATCH 133/423] Divisions need to be added to the array separately.
Closes #193
---
src/TouchPoint-WP/Involvement.php | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/src/TouchPoint-WP/Involvement.php b/src/TouchPoint-WP/Involvement.php
index 7180f6fb..09eed133 100644
--- a/src/TouchPoint-WP/Involvement.php
+++ b/src/TouchPoint-WP/Involvement.php
@@ -2914,7 +2914,7 @@ protected static function doPostUpdate($post, object $inv, Involvement_PostTypeS
}
/**
- * @param object $post The parent post, which could be a group or Meeting.
+ * @param \WP_Post|object $post The parent post, which could be a group or Meeting.
* @param object $inv The involvement object from the API.
* @param Involvement_PostTypeSettings $typeSets
* @param int $imagePostId
@@ -3443,8 +3443,10 @@ public function notableAttributes(array $exclude = []): array
}
unset($l);
- foreach ($this->getDivisionsLinks() as $a) {
- $attrs['divisions'] = $a;
+ if (!in_array('divisions', $exclude)) {
+ foreach ($this->getDivisionsLinks() as $k => $a) {
+ $attrs["divisions_$k"] = $a;
+ }
}
if ($this->leaders()->count() > 0) {
From a0dbd691e8bdbfd55a89a73d5e6af982e863f401 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Tue, 25 Jun 2024 11:01:43 -0400
Subject: [PATCH 134/423] Raising version requirements.
---
touchpoint-wp.php | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/touchpoint-wp.php b/touchpoint-wp.php
index 2990212f..91e2d423 100644
--- a/touchpoint-wp.php
+++ b/touchpoint-wp.php
@@ -19,9 +19,9 @@
Author URI: https://github.com/jkrrv
License: AGPLv3+
Text Domain: TouchPoint-WP
-Requires at least: 5.5
-Tested up to: 6.2
-Requires PHP: 7.4
+Requires at least: 6.0
+Tested up to: 6.5
+Requires PHP: 8.0
Release Asset: true
*/
From dcfc884b9a10295d961654d12c1ab608efd43a77 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Tue, 25 Jun 2024 11:04:43 -0400
Subject: [PATCH 135/423] i18n updates
---
i18n/TouchPoint-WP-es_ES.po | 120 +++++++++++++++++-----------------
i18n/TouchPoint-WP.pot | 124 ++++++++++++++++++------------------
2 files changed, 122 insertions(+), 122 deletions(-)
diff --git a/i18n/TouchPoint-WP-es_ES.po b/i18n/TouchPoint-WP-es_ES.po
index d74f9de2..49ae4857 100644
--- a/i18n/TouchPoint-WP-es_ES.po
+++ b/i18n/TouchPoint-WP-es_ES.po
@@ -230,67 +230,67 @@ msgstr "Cualquier"
#. translators: %s is for the user-provided term for the items on the map (e.g. Small Group or Partner)
#: src/TouchPoint-WP/Involvement.php:1841
-#: src/TouchPoint-WP/Partner.php:832
+#: src/TouchPoint-WP/Partner.php:834
msgid "The %s listed are only those shown on the map."
msgstr "Los %s enumerados son solo los que se muestran en el mapa."
-#: src/TouchPoint-WP/Involvement.php:3453
+#: src/TouchPoint-WP/Involvement.php:3459
msgid "Men Only"
msgstr "Solo hombres"
-#: src/TouchPoint-WP/Involvement.php:3456
+#: src/TouchPoint-WP/Involvement.php:3462
msgid "Women Only"
msgstr "Solo mujeres"
-#: src/TouchPoint-WP/Involvement.php:3527
+#: src/TouchPoint-WP/Involvement.php:3533
msgid "Contact Leaders"
msgstr "Contacta con las líderes"
-#: src/TouchPoint-WP/Involvement.php:3586
-#: src/TouchPoint-WP/Involvement.php:3622
+#: src/TouchPoint-WP/Involvement.php:3596
+#: src/TouchPoint-WP/Involvement.php:3632
msgid "Register"
msgstr "Regístrate ahora"
-#: src/TouchPoint-WP/Involvement.php:3591
+#: src/TouchPoint-WP/Involvement.php:3601
msgid "Create Account"
msgstr "Crear cuenta"
-#: src/TouchPoint-WP/Involvement.php:3595
+#: src/TouchPoint-WP/Involvement.php:3605
msgid "Schedule"
msgstr "Programe"
-#: src/TouchPoint-WP/Involvement.php:3600
+#: src/TouchPoint-WP/Involvement.php:3610
msgid "Give"
msgstr "Dar"
-#: src/TouchPoint-WP/Involvement.php:3603
+#: src/TouchPoint-WP/Involvement.php:3613
msgid "Manage Subscriptions"
msgstr "Administrar suscripciones"
-#: src/TouchPoint-WP/Involvement.php:3606
+#: src/TouchPoint-WP/Involvement.php:3616
msgid "Record Attendance"
msgstr "Registre su asistencia"
-#: src/TouchPoint-WP/Involvement.php:3609
+#: src/TouchPoint-WP/Involvement.php:3619
msgid "Get Tickets"
msgstr "Obtener boletos"
-#: src/TouchPoint-WP/Involvement.php:3617
+#: src/TouchPoint-WP/Involvement.php:3627
#: assets/js/base-defer.js:1001
msgid "Join"
msgstr "Únete"
-#: src/TouchPoint-WP/Involvement.php:3539
-#: src/TouchPoint-WP/Partner.php:1312
+#: src/TouchPoint-WP/Involvement.php:3545
+#: src/TouchPoint-WP/Partner.php:1314
msgid "Show on Map"
msgstr "Muestra en el mapa"
#. translators: %s is for the user-provided "Global Partner" and "Secure Partner" terms.
-#: src/TouchPoint-WP/Partner.php:839
+#: src/TouchPoint-WP/Partner.php:841
msgid "The %1$s listed are only those shown on the map, as well as all %2$s."
msgstr "Los %1$s enumerados son solo los que se muestran en el mapa, así como todos los %2$s."
-#: src/TouchPoint-WP/Partner.php:1253
+#: src/TouchPoint-WP/Partner.php:1255
msgid "Not Shown on Map"
msgstr "No se muestra en el mapa"
@@ -817,7 +817,7 @@ msgstr "Configuración de TouchPoint-WP"
msgid "Save Settings"
msgstr "Guardar ajustes"
-#: src/TouchPoint-WP/Person.php:1442
+#: src/TouchPoint-WP/Person.php:1446
#: src/TouchPoint-WP/Utilities.php:251
#: assets/js/base-defer.js:18
msgid "and"
@@ -1219,12 +1219,12 @@ msgstr "Mayoría casadas"
#. translators: %s is the link to "reset the map"
#: src/TouchPoint-WP/Involvement.php:1849
-#: src/TouchPoint-WP/Partner.php:848
+#: src/TouchPoint-WP/Partner.php:850
msgid "Zoom out or %s to see more."
msgstr "Alejar o %s para ver más."
#: src/TouchPoint-WP/Involvement.php:1852
-#: src/TouchPoint-WP/Partner.php:851
+#: src/TouchPoint-WP/Partner.php:853
msgctxt "Zoom out or reset the map to see more."
msgid "reset the map"
msgstr "restablecer el mapa"
@@ -1234,8 +1234,8 @@ msgstr "restablecer el mapa"
#: src/TouchPoint-WP/Involvement.php:959
#: src/TouchPoint-WP/Involvement.php:1034
#: src/TouchPoint-WP/Involvement.php:1056
-#: src/TouchPoint-WP/Utilities/DateFormats.php:250
-#: src/TouchPoint-WP/Utilities/DateFormats.php:313
+#: src/TouchPoint-WP/Utilities/DateFormats.php:265
+#: src/TouchPoint-WP/Utilities/DateFormats.php:328
msgid "%1$s at %2$s"
msgstr "%1$s a las %2$s"
@@ -1271,7 +1271,7 @@ msgstr "%1$s, hasta el %2$s"
#. translators: number of miles
#: src/templates/parts/involvement-nearby-list.php:10
-#: src/TouchPoint-WP/Involvement.php:3474
+#: src/TouchPoint-WP/Involvement.php:3480
msgctxt "miles. Unit is appended to a number. %2.1f is the number, so %2.1fmi looks like '12.3mi'"
msgid "%2.1fmi"
msgstr "%2.1fmi"
@@ -1315,8 +1315,8 @@ msgstr "Solo se permiten solicitudes POST."
msgid "Invalid data provided."
msgstr "Datos proporcionados no válidos."
-#: src/TouchPoint-WP/Involvement.php:3715
-#: src/TouchPoint-WP/Involvement.php:3812
+#: src/TouchPoint-WP/Involvement.php:3725
+#: src/TouchPoint-WP/Involvement.php:3822
msgid "Invalid Post Type."
msgstr "Tipo de publicación no válida."
@@ -1448,7 +1448,7 @@ msgstr "Importar imágenes desde TouchPoint"
msgid "Importing images sometimes conflicts with other plugins. Disabling image imports can help."
msgstr "La importación de imágenes a veces entra en conflicto con otros complementos. Deshabilitar las importaciones de imágenes puede ayudar."
-#: src/TouchPoint-WP/Person.php:1448
+#: src/TouchPoint-WP/Person.php:1452
msgctxt "list of people, and *others*"
msgid "others"
msgstr "otros"
@@ -1489,8 +1489,8 @@ msgstr "Eliminar siempre de WordPress"
msgid "Mark the occurrence as cancelled"
msgstr "Marcar la ocurrencia como cancelada"
-#: src/TouchPoint-WP/Involvement.php:3799
-#: src/TouchPoint-WP/Person.php:1815
+#: src/TouchPoint-WP/Involvement.php:3809
+#: src/TouchPoint-WP/Person.php:1821
msgid "Contact Prohibited."
msgstr "Contacto prohibido."
@@ -1510,16 +1510,16 @@ msgstr "Una vez que haya configurado y guardado la configuración en esta págin
msgid "Something went wrong."
msgstr "Algo salió mal."
-#: src/TouchPoint-WP/Person.php:1670
+#: src/TouchPoint-WP/Person.php:1676
msgid "You may need to sign in."
msgstr "Es posible que tengas que iniciar sesión."
-#: src/TouchPoint-WP/Involvement.php:3789
-#: src/TouchPoint-WP/Person.php:1832
+#: src/TouchPoint-WP/Involvement.php:3799
+#: src/TouchPoint-WP/Person.php:1838
msgid "Contact Blocked for Spam."
msgstr "Contacto bloqueado por spam."
-#: src/TouchPoint-WP/Person.php:1602
+#: src/TouchPoint-WP/Person.php:1591
msgid "Registration Blocked for Spam."
msgstr "Registro bloqueado por spam."
@@ -1579,18 +1579,18 @@ msgstr "Seleccione los tipos de publicaciones que deberían tener Divisiones dis
msgid "Select post types which should have Resident Codes available as a native taxonomy."
msgstr "Seleccione los tipos de publicaciones que deberían tener códigos de residente disponibles como taxonomía nativa."
-#: src/TouchPoint-WP/Utilities/DateFormats.php:86
-#: src/TouchPoint-WP/Utilities/DateFormats.php:158
+#: src/TouchPoint-WP/Utilities/DateFormats.php:101
+#: src/TouchPoint-WP/Utilities/DateFormats.php:173
msgid "Tonight"
msgstr "este noche"
-#: src/TouchPoint-WP/Utilities/DateFormats.php:88
-#: src/TouchPoint-WP/Utilities/DateFormats.php:160
+#: src/TouchPoint-WP/Utilities/DateFormats.php:103
+#: src/TouchPoint-WP/Utilities/DateFormats.php:175
msgid "Today"
msgstr "hoy"
-#: src/TouchPoint-WP/Utilities/DateFormats.php:94
-#: src/TouchPoint-WP/Utilities/DateFormats.php:166
+#: src/TouchPoint-WP/Utilities/DateFormats.php:109
+#: src/TouchPoint-WP/Utilities/DateFormats.php:181
msgid "Tomorrow"
msgstr "mañana"
@@ -1611,36 +1611,36 @@ msgid "Scheduled"
msgstr "Programado"
#. translators: %1$s is "Monday". %2$s is "January 1".
-#: src/TouchPoint-WP/Utilities/DateFormats.php:111
+#: src/TouchPoint-WP/Utilities/DateFormats.php:126
msgctxt "Date format string"
msgid "Last %1$s, %2$s"
msgstr "el pasado %1$s %2$s"
#. translators: %1$s is "Monday". %2$s is "January 1".
-#: src/TouchPoint-WP/Utilities/DateFormats.php:117
+#: src/TouchPoint-WP/Utilities/DateFormats.php:132
msgctxt "Date format string"
msgid "This %1$s, %2$s"
msgstr "este %1$s %2$s"
#. translators: %1$s is "Monday". %2$s is "January 1".
-#: src/TouchPoint-WP/Utilities/DateFormats.php:123
+#: src/TouchPoint-WP/Utilities/DateFormats.php:138
msgctxt "Date format string"
msgid "Next %1$s, %2$s"
msgstr "el proximo %1$s %2$s"
#. translators: %1$s is "Monday". %2$s is "January 1".
-#: src/TouchPoint-WP/Utilities/DateFormats.php:128
+#: src/TouchPoint-WP/Utilities/DateFormats.php:143
msgctxt "Date format string"
msgid "%1$s, %2$s"
msgstr "%1$s %2$s"
#. Translators: %s is the singular name of the of a Meeting, such as "Event".
-#: src/TouchPoint-WP/CalendarGrid.php:149
+#: src/TouchPoint-WP/CalendarGrid.php:150
msgid "%s is cancelled."
msgstr "%s esta cancelado."
#. Translators: %s is the system name. "TouchPoint" by default.
-#: src/TouchPoint-WP/Involvement.php:3551
+#: src/TouchPoint-WP/Involvement.php:3557
msgid "Involvement in %s"
msgstr "Participaciones en %s"
@@ -1694,22 +1694,22 @@ msgstr "Reunión"
msgid "Event"
msgstr "Evento"
-#: src/TouchPoint-WP/Utilities/DateFormats.php:101
+#: src/TouchPoint-WP/Utilities/DateFormats.php:116
msgctxt "Date string for day of the week, when the year is current."
msgid "l"
msgstr "l"
-#: src/TouchPoint-WP/Utilities/DateFormats.php:102
+#: src/TouchPoint-WP/Utilities/DateFormats.php:117
msgctxt "Date string when the year is current."
msgid "F j"
msgstr "j F"
-#: src/TouchPoint-WP/Utilities/DateFormats.php:104
+#: src/TouchPoint-WP/Utilities/DateFormats.php:119
msgctxt "Date string for day of the week, when the year is not current."
msgid "l"
msgstr "l"
-#: src/TouchPoint-WP/Utilities/DateFormats.php:105
+#: src/TouchPoint-WP/Utilities/DateFormats.php:120
msgctxt "Date string when the year is not current."
msgid "F j, Y"
msgstr "j F Y"
@@ -1734,62 +1734,62 @@ msgid "Creating a Meeting object from an object without a post_id is not yet sup
msgstr "Aún no se admite la creación de un objeto de reunión a partir de un objeto sin post_id."
#. translators: %1$s is the start time, %2$s is the end time.
-#: src/TouchPoint-WP/Utilities/DateFormats.php:56
-#: src/TouchPoint-WP/Utilities/DateFormats.php:292
+#: src/TouchPoint-WP/Utilities/DateFormats.php:71
+#: src/TouchPoint-WP/Utilities/DateFormats.php:307
msgid "%1$s – %2$s"
msgstr "%1$s – %2$s"
-#: src/TouchPoint-WP/Utilities/DateFormats.php:173
+#: src/TouchPoint-WP/Utilities/DateFormats.php:188
msgctxt "Short date string for day of the week, when the year is current."
msgid "D"
msgstr "D"
-#: src/TouchPoint-WP/Utilities/DateFormats.php:174
+#: src/TouchPoint-WP/Utilities/DateFormats.php:189
msgctxt "Short date string when the year is current."
msgid "M j"
msgstr "j M"
-#: src/TouchPoint-WP/Utilities/DateFormats.php:176
+#: src/TouchPoint-WP/Utilities/DateFormats.php:191
msgctxt "Short date string for day of the week, when the year is not current."
msgid "D"
msgstr "D"
-#: src/TouchPoint-WP/Utilities/DateFormats.php:177
+#: src/TouchPoint-WP/Utilities/DateFormats.php:192
msgctxt "Short date string when the year is not current."
msgid "M j, Y"
msgstr "j M Y"
#. translators: %1$s is the start date, %2$s start time, %3$s is the end date, and %4$s end time.
-#: src/TouchPoint-WP/Utilities/DateFormats.php:326
+#: src/TouchPoint-WP/Utilities/DateFormats.php:341
msgid "%1$s at %2$s – %3$s at %4$s"
msgstr "%1$s a %2$s – %3$s a %4$s"
#. translators: %1$s is "Mon". %2$s is "Jan 1".
-#: src/TouchPoint-WP/Utilities/DateFormats.php:183
+#: src/TouchPoint-WP/Utilities/DateFormats.php:198
msgctxt "Short date format string"
msgid "Last %1$s, %2$s"
msgstr "el pasado %1$s %2$s"
#. translators: %1$s is "Mon". %2$s is "Jan 1".
-#: src/TouchPoint-WP/Utilities/DateFormats.php:189
+#: src/TouchPoint-WP/Utilities/DateFormats.php:204
msgctxt "Short date format string"
msgid "This %1$s, %2$s"
msgstr "este %1$s %2$s"
#. translators: %1$s is "Mon". %2$s is "Jan 1".
-#: src/TouchPoint-WP/Utilities/DateFormats.php:195
+#: src/TouchPoint-WP/Utilities/DateFormats.php:210
msgctxt "Short date format string"
msgid "Next %1$s, %2$s"
msgstr "proximo %1$s %2$s"
#. translators: %1$s is "Mon". %2$s is "Jan 1".
-#: src/TouchPoint-WP/Utilities/DateFormats.php:200
+#: src/TouchPoint-WP/Utilities/DateFormats.php:215
msgctxt "Short date format string"
msgid "%1$s, %2$s"
msgstr "%1$s %2$s"
#. Translators: %s is the plural name of the of the Meetings, such as "Events".
-#: src/TouchPoint-WP/CalendarGrid.php:212
+#: src/TouchPoint-WP/CalendarGrid.php:213
msgid "There are no %s published for this month."
msgstr "No hay %s publicados para este mes."
diff --git a/i18n/TouchPoint-WP.pot b/i18n/TouchPoint-WP.pot
index 9b8d2850..54d77df8 100644
--- a/i18n/TouchPoint-WP.pot
+++ b/i18n/TouchPoint-WP.pot
@@ -9,7 +9,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"POT-Creation-Date: 2024-05-22T21:37:34+00:00\n"
+"POT-Creation-Date: 2024-06-25T14:43:31+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"X-Generator: WP-CLI 2.10.0\n"
"X-Domain: TouchPoint-WP\n"
@@ -41,7 +41,7 @@ msgstr ""
#: src/templates/admin/invKoForm.php:17
#: src/templates/admin/locationsKoForm.php:13
-#: src/templates/admin/locationsKoForm.php:50
+#: src/templates/admin/locationsKoForm.php:58
msgid "Delete"
msgstr ""
@@ -265,7 +265,7 @@ msgstr ""
#. translators: number of miles
#: src/templates/parts/involvement-nearby-list.php:10
-#: src/TouchPoint-WP/Involvement.php:3474
+#: src/TouchPoint-WP/Involvement.php:3480
msgctxt "miles. Unit is appended to a number. %2.1f is the number, so %2.1fmi looks like '12.3mi'"
msgid "%2.1fmi"
msgstr ""
@@ -288,12 +288,12 @@ msgid "Session could not be validated."
msgstr ""
#. Translators: %s is the singular name of the of a Meeting, such as "Event".
-#: src/TouchPoint-WP/CalendarGrid.php:149
+#: src/TouchPoint-WP/CalendarGrid.php:150
msgid "%s is cancelled."
msgstr ""
#. Translators: %s is the plural name of the of the Meetings, such as "Events".
-#: src/TouchPoint-WP/CalendarGrid.php:212
+#: src/TouchPoint-WP/CalendarGrid.php:213
msgid "There are no %s published for this month."
msgstr ""
@@ -330,8 +330,8 @@ msgstr ""
#: src/TouchPoint-WP/Involvement.php:959
#: src/TouchPoint-WP/Involvement.php:1034
#: src/TouchPoint-WP/Involvement.php:1056
-#: src/TouchPoint-WP/Utilities/DateFormats.php:250
-#: src/TouchPoint-WP/Utilities/DateFormats.php:313
+#: src/TouchPoint-WP/Utilities/DateFormats.php:265
+#: src/TouchPoint-WP/Utilities/DateFormats.php:328
msgid "%1$s at %2$s"
msgstr ""
@@ -405,18 +405,18 @@ msgstr ""
#. translators: %s is for the user-provided term for the items on the map (e.g. Small Group or Partner)
#: src/TouchPoint-WP/Involvement.php:1841
-#: src/TouchPoint-WP/Partner.php:832
+#: src/TouchPoint-WP/Partner.php:834
msgid "The %s listed are only those shown on the map."
msgstr ""
#. translators: %s is the link to "reset the map"
#: src/TouchPoint-WP/Involvement.php:1849
-#: src/TouchPoint-WP/Partner.php:848
+#: src/TouchPoint-WP/Partner.php:850
msgid "Zoom out or %s to see more."
msgstr ""
#: src/TouchPoint-WP/Involvement.php:1852
-#: src/TouchPoint-WP/Partner.php:851
+#: src/TouchPoint-WP/Partner.php:853
msgctxt "Zoom out or reset the map to see more."
msgid "reset the map"
msgstr ""
@@ -433,74 +433,74 @@ msgstr ""
msgid "Could not locate."
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3453
+#: src/TouchPoint-WP/Involvement.php:3459
msgid "Men Only"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3456
+#: src/TouchPoint-WP/Involvement.php:3462
msgid "Women Only"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3527
+#: src/TouchPoint-WP/Involvement.php:3533
msgid "Contact Leaders"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3539
-#: src/TouchPoint-WP/Partner.php:1312
+#: src/TouchPoint-WP/Involvement.php:3545
+#: src/TouchPoint-WP/Partner.php:1314
msgid "Show on Map"
msgstr ""
#. Translators: %s is the system name. "TouchPoint" by default.
-#: src/TouchPoint-WP/Involvement.php:3551
+#: src/TouchPoint-WP/Involvement.php:3557
msgid "Involvement in %s"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3586
-#: src/TouchPoint-WP/Involvement.php:3622
+#: src/TouchPoint-WP/Involvement.php:3596
+#: src/TouchPoint-WP/Involvement.php:3632
msgid "Register"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3591
+#: src/TouchPoint-WP/Involvement.php:3601
msgid "Create Account"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3595
+#: src/TouchPoint-WP/Involvement.php:3605
msgid "Schedule"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3600
+#: src/TouchPoint-WP/Involvement.php:3610
msgid "Give"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3603
+#: src/TouchPoint-WP/Involvement.php:3613
msgid "Manage Subscriptions"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3606
+#: src/TouchPoint-WP/Involvement.php:3616
msgid "Record Attendance"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3609
+#: src/TouchPoint-WP/Involvement.php:3619
msgid "Get Tickets"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3617
+#: src/TouchPoint-WP/Involvement.php:3627
#: assets/js/base-defer.js:1001
msgid "Join"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3715
-#: src/TouchPoint-WP/Involvement.php:3812
+#: src/TouchPoint-WP/Involvement.php:3725
+#: src/TouchPoint-WP/Involvement.php:3822
msgid "Invalid Post Type."
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3789
-#: src/TouchPoint-WP/Person.php:1832
+#: src/TouchPoint-WP/Involvement.php:3799
+#: src/TouchPoint-WP/Person.php:1838
msgid "Contact Blocked for Spam."
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3799
-#: src/TouchPoint-WP/Person.php:1815
+#: src/TouchPoint-WP/Involvement.php:3809
+#: src/TouchPoint-WP/Person.php:1821
msgid "Contact Prohibited."
msgstr ""
@@ -556,11 +556,11 @@ msgid "RSVP"
msgstr ""
#. translators: %s is for the user-provided "Global Partner" and "Secure Partner" terms.
-#: src/TouchPoint-WP/Partner.php:839
+#: src/TouchPoint-WP/Partner.php:841
msgid "The %1$s listed are only those shown on the map, as well as all %2$s."
msgstr ""
-#: src/TouchPoint-WP/Partner.php:1253
+#: src/TouchPoint-WP/Partner.php:1255
msgid "Not Shown on Map"
msgstr ""
@@ -581,22 +581,22 @@ msgstr ""
msgid "Person in %s"
msgstr ""
-#: src/TouchPoint-WP/Person.php:1442
+#: src/TouchPoint-WP/Person.php:1446
#: src/TouchPoint-WP/Utilities.php:251
#: assets/js/base-defer.js:18
msgid "and"
msgstr ""
-#: src/TouchPoint-WP/Person.php:1448
+#: src/TouchPoint-WP/Person.php:1452
msgctxt "list of people, and *others*"
msgid "others"
msgstr ""
-#: src/TouchPoint-WP/Person.php:1602
+#: src/TouchPoint-WP/Person.php:1591
msgid "Registration Blocked for Spam."
msgstr ""
-#: src/TouchPoint-WP/Person.php:1670
+#: src/TouchPoint-WP/Person.php:1676
msgid "You may need to sign in."
msgstr ""
@@ -1474,116 +1474,116 @@ msgid "Expand"
msgstr ""
#. translators: %1$s is the start time, %2$s is the end time.
-#: src/TouchPoint-WP/Utilities/DateFormats.php:56
-#: src/TouchPoint-WP/Utilities/DateFormats.php:292
+#: src/TouchPoint-WP/Utilities/DateFormats.php:71
+#: src/TouchPoint-WP/Utilities/DateFormats.php:307
msgid "%1$s – %2$s"
msgstr ""
-#: src/TouchPoint-WP/Utilities/DateFormats.php:86
-#: src/TouchPoint-WP/Utilities/DateFormats.php:158
+#: src/TouchPoint-WP/Utilities/DateFormats.php:101
+#: src/TouchPoint-WP/Utilities/DateFormats.php:173
msgid "Tonight"
msgstr ""
-#: src/TouchPoint-WP/Utilities/DateFormats.php:88
-#: src/TouchPoint-WP/Utilities/DateFormats.php:160
+#: src/TouchPoint-WP/Utilities/DateFormats.php:103
+#: src/TouchPoint-WP/Utilities/DateFormats.php:175
msgid "Today"
msgstr ""
-#: src/TouchPoint-WP/Utilities/DateFormats.php:94
-#: src/TouchPoint-WP/Utilities/DateFormats.php:166
+#: src/TouchPoint-WP/Utilities/DateFormats.php:109
+#: src/TouchPoint-WP/Utilities/DateFormats.php:181
msgid "Tomorrow"
msgstr ""
-#: src/TouchPoint-WP/Utilities/DateFormats.php:101
+#: src/TouchPoint-WP/Utilities/DateFormats.php:116
msgctxt "Date string for day of the week, when the year is current."
msgid "l"
msgstr ""
-#: src/TouchPoint-WP/Utilities/DateFormats.php:102
+#: src/TouchPoint-WP/Utilities/DateFormats.php:117
msgctxt "Date string when the year is current."
msgid "F j"
msgstr ""
-#: src/TouchPoint-WP/Utilities/DateFormats.php:104
+#: src/TouchPoint-WP/Utilities/DateFormats.php:119
msgctxt "Date string for day of the week, when the year is not current."
msgid "l"
msgstr ""
-#: src/TouchPoint-WP/Utilities/DateFormats.php:105
+#: src/TouchPoint-WP/Utilities/DateFormats.php:120
msgctxt "Date string when the year is not current."
msgid "F j, Y"
msgstr ""
#. translators: %1$s is "Monday". %2$s is "January 1".
-#: src/TouchPoint-WP/Utilities/DateFormats.php:111
+#: src/TouchPoint-WP/Utilities/DateFormats.php:126
msgctxt "Date format string"
msgid "Last %1$s, %2$s"
msgstr ""
#. translators: %1$s is "Monday". %2$s is "January 1".
-#: src/TouchPoint-WP/Utilities/DateFormats.php:117
+#: src/TouchPoint-WP/Utilities/DateFormats.php:132
msgctxt "Date format string"
msgid "This %1$s, %2$s"
msgstr ""
#. translators: %1$s is "Monday". %2$s is "January 1".
-#: src/TouchPoint-WP/Utilities/DateFormats.php:123
+#: src/TouchPoint-WP/Utilities/DateFormats.php:138
msgctxt "Date format string"
msgid "Next %1$s, %2$s"
msgstr ""
#. translators: %1$s is "Monday". %2$s is "January 1".
-#: src/TouchPoint-WP/Utilities/DateFormats.php:128
+#: src/TouchPoint-WP/Utilities/DateFormats.php:143
msgctxt "Date format string"
msgid "%1$s, %2$s"
msgstr ""
-#: src/TouchPoint-WP/Utilities/DateFormats.php:173
+#: src/TouchPoint-WP/Utilities/DateFormats.php:188
msgctxt "Short date string for day of the week, when the year is current."
msgid "D"
msgstr ""
-#: src/TouchPoint-WP/Utilities/DateFormats.php:174
+#: src/TouchPoint-WP/Utilities/DateFormats.php:189
msgctxt "Short date string when the year is current."
msgid "M j"
msgstr ""
-#: src/TouchPoint-WP/Utilities/DateFormats.php:176
+#: src/TouchPoint-WP/Utilities/DateFormats.php:191
msgctxt "Short date string for day of the week, when the year is not current."
msgid "D"
msgstr ""
-#: src/TouchPoint-WP/Utilities/DateFormats.php:177
+#: src/TouchPoint-WP/Utilities/DateFormats.php:192
msgctxt "Short date string when the year is not current."
msgid "M j, Y"
msgstr ""
#. translators: %1$s is "Mon". %2$s is "Jan 1".
-#: src/TouchPoint-WP/Utilities/DateFormats.php:183
+#: src/TouchPoint-WP/Utilities/DateFormats.php:198
msgctxt "Short date format string"
msgid "Last %1$s, %2$s"
msgstr ""
#. translators: %1$s is "Mon". %2$s is "Jan 1".
-#: src/TouchPoint-WP/Utilities/DateFormats.php:189
+#: src/TouchPoint-WP/Utilities/DateFormats.php:204
msgctxt "Short date format string"
msgid "This %1$s, %2$s"
msgstr ""
#. translators: %1$s is "Mon". %2$s is "Jan 1".
-#: src/TouchPoint-WP/Utilities/DateFormats.php:195
+#: src/TouchPoint-WP/Utilities/DateFormats.php:210
msgctxt "Short date format string"
msgid "Next %1$s, %2$s"
msgstr ""
#. translators: %1$s is "Mon". %2$s is "Jan 1".
-#: src/TouchPoint-WP/Utilities/DateFormats.php:200
+#: src/TouchPoint-WP/Utilities/DateFormats.php:215
msgctxt "Short date format string"
msgid "%1$s, %2$s"
msgstr ""
#. translators: %1$s is the start date, %2$s start time, %3$s is the end date, and %4$s end time.
-#: src/TouchPoint-WP/Utilities/DateFormats.php:326
+#: src/TouchPoint-WP/Utilities/DateFormats.php:341
msgid "%1$s at %2$s – %3$s at %4$s"
msgstr ""
From 1a09d6c2eb09f2d6a4a1069d5cdaa601859ad6a6 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Tue, 25 Jun 2024 11:59:02 -0400
Subject: [PATCH 136/423] Documentation issues
---
generateDocs.php | 3 +--
phpdoc.dist.xml | 5 -----
2 files changed, 1 insertion(+), 7 deletions(-)
diff --git a/generateDocs.php b/generateDocs.php
index 73cb8df8..670c11ac 100644
--- a/generateDocs.php
+++ b/generateDocs.php
@@ -26,10 +26,9 @@
echo "Running PHPDoc Analysis...";
-exec("php " . PHPDOC_PHAR_FILENAME . " run -d src -t docs --template=\"xml\"");
+exec("php " . PHPDOC_PHAR_FILENAME . " -d src -t docs --template=\"xml\"");
echo " Complete\n\n";
-
echo "Creating Markdown files...";
$argv[1] = "docs/structure.xml";
$argv[2] = "docs/";
diff --git a/phpdoc.dist.xml b/phpdoc.dist.xml
index 2cb1ef44..97af9e7d 100644
--- a/phpdoc.dist.xml
+++ b/phpdoc.dist.xml
@@ -23,11 +23,6 @@
-
-
- docs/wpApi
-
-
\ No newline at end of file
From b46dedaa23cb77c51eda6fb8ebacd36d57cdbcd4 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Tue, 25 Jun 2024 14:19:05 -0400
Subject: [PATCH 137/423] Correcting links in WordPress Hook docs
---
generateDocs.php | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/generateDocs.php b/generateDocs.php
index 670c11ac..2fe553a9 100644
--- a/generateDocs.php
+++ b/generateDocs.php
@@ -20,6 +20,14 @@
echo " Complete\n\n";
+echo "Correcting links in WordPress Hooks...";
+$doc = file_get_contents("docs/wp-Api.md");
+$pattern = '/\[(\.[\S-]+)]\(([\S]+)\), \[line (\d+)\]\(([\S-]+)/';
+$replace = "[src/TouchPoint-WP/$2](https://github.com/TenthPres/TouchPoint-WP/blob/master/src/TouchPoint-WP/$2), [line $3](https://github.com/TenthPres/TouchPoint-WP/blob/master/src/TouchPoint-WP/$4\n\n";
+$doc = preg_replace($pattern, $replace, $doc);
+file_put_contents("docs/wp-Api.md", $doc);
+echo " Complete\n\n";
+
echo "Removing previous documentation files...";
array_map('unlink', glob('docs/tp-*.md'));
echo " Complete.\n\n";
From 3040905796d2eac9308c97a965e8501f361ebbd1 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Tue, 25 Jun 2024 14:33:58 -0400
Subject: [PATCH 138/423] Doc block improvements
---
src/TouchPoint-WP/EventsCalendar.php | 8 +++++---
src/TouchPoint-WP/Involvement.php | 13 +++++++------
.../Involvement_PostTypeSettings.php | 2 +-
src/TouchPoint-WP/Meeting.php | 4 ++--
src/TouchPoint-WP/Partner.php | 8 ++++----
src/TouchPoint-WP/Person.php | 6 +++---
src/TouchPoint-WP/Rsvp.php | 4 ++--
src/TouchPoint-WP/Taxonomies.php | 2 +-
src/TouchPoint-WP/TouchPointWP.php | 4 +++-
src/TouchPoint-WP/TouchPointWP_Settings.php | 8 ++++----
src/TouchPoint-WP/Utilities.php | 16 ++++++++--------
src/TouchPoint-WP/Utilities/DateFormats.php | 10 +++++-----
12 files changed, 45 insertions(+), 40 deletions(-)
diff --git a/src/TouchPoint-WP/EventsCalendar.php b/src/TouchPoint-WP/EventsCalendar.php
index 8d150ea9..c2253e1c 100644
--- a/src/TouchPoint-WP/EventsCalendar.php
+++ b/src/TouchPoint-WP/EventsCalendar.php
@@ -19,6 +19,7 @@
* Provides an interface to bridge the gap between The Events Calendar plugin (by ModernTribe) and the TouchPoint
* mobile app.
*
+ * @since 0.0.90 Deprecated
* @deprecated since 0.0.90 Will not be necessary once mobile 3.0 exists.
*/
abstract class EventsCalendar implements api, module
@@ -70,8 +71,8 @@ protected static function generateEventsList(array $params = []): array
/**
* Allows for manipulation of the html returned to the calendar feature of 2.0 Mobile apps.
*
- * @since 0.0.2
- *
+ * @since 0.0.2 Added
+ * @since 0.0.90 Deprecated
* @depecated 0.0.90 Will be going away with Mobile App version 2.0
*
* @param string $content The html thus far.
@@ -120,7 +121,8 @@ protected static function generateEventsList(array $params = []): array
/**
* Insert a CSS file into all event content for mobile 2.0 app.
*
- * @since 0.0.3
+ * @since 0.0.3 Added
+ * @since 0.0.90 Deprecated
* @depecated 0.0.90 Will be going away with Mobile App version 2.0
*
* @param string $cssUrl The url for a CSS file. By default, one provided with the plugin is used.
diff --git a/src/TouchPoint-WP/Involvement.php b/src/TouchPoint-WP/Involvement.php
index 09eed133..f1510f10 100644
--- a/src/TouchPoint-WP/Involvement.php
+++ b/src/TouchPoint-WP/Involvement.php
@@ -435,7 +435,7 @@ public static function templateFilter(string $template): string
*
* Default is true.
*
- * @since 0.0.6
+ * @since 0.0.6 Added
*
* @param bool $value The value to return. True will allow the default templates to be applied.
* @param string $className The name of the class calling for the template.
@@ -614,6 +614,7 @@ public function getRegistrationType(): int
/**
* Whether the involvement should link to a registration form, rather than directly joining the org.
*
+ * @since 0.0.90 Deprecated
* @deprecated 0.0.90 Does not take into account all the possible registration types; will be removed in a future version.
*
* @return bool
@@ -1495,7 +1496,7 @@ public static function listShortcode($params = [], string $content = ""): string
* Determines whether or not to automatically include the plugin-default CSS. Return false to use your
* own CSS instead.
*
- * @since 0.0.15
+ * @since 0.0.15 Added
*
* @param bool $useCss Whether or not to include the default CSS. True = include
* @param string $className The name of the current calling class.
@@ -3497,7 +3498,7 @@ public function notableAttributes(array $exclude = []): array
* @see Involvement::notableAttributes()
* @see PostTypeCapable::notableAttributes()
*
- * @since 0.0.11
+ * @since 0.0.11 Added
*
* @param string[] $attrs The list of notable attributes.
* @param Involvement $this The Involvement object.
@@ -3563,7 +3564,7 @@ public function getActionButtons(string $context = null, string $btnClass = "",
* Allows for manipulation of the action buttons for an Involvement. This is the list of buttons that appear
* on the Involvement to allow the user to interact with it.
*
- * @since 0.0.7
+ * @since 0.0.7 Added
*
* @see Involvement::getActionButtons()
* @see PostTypeCapable::getActionButtons()
@@ -3753,7 +3754,7 @@ protected static function allowContact(string $invType): bool
* Determines whether contact of any kind is allowed. This is meant to prevent abuse in contact forms by
* removing the ability to contact people and thereby hiding the forms.
*
- * @since 0.0.35
+ * @since 0.0.35 Added
*
* @param bool $allowed True if contact is allowed.
*/
@@ -3763,7 +3764,7 @@ protected static function allowContact(string $invType): bool
* Determines whether contact is allowed for any Involvements. This is called *after* tp_allow_contact, and
* that will set the default.
*
- * @since 0.0.35
+ * @since 0.0.35 Added
*
* @see tp_allow_contact
*
diff --git a/src/TouchPoint-WP/Involvement_PostTypeSettings.php b/src/TouchPoint-WP/Involvement_PostTypeSettings.php
index 8c3a9c6f..480b0b84 100644
--- a/src/TouchPoint-WP/Involvement_PostTypeSettings.php
+++ b/src/TouchPoint-WP/Involvement_PostTypeSettings.php
@@ -85,7 +85,7 @@ final public static function &instance(): array
*
* @see Involvement_PostTypeSettings
*
- * @since 0.0.90
+ * @since 0.0.90 Added
*
* @param Involvement_PostTypeSettings[] $settingsArr An array of the Post Type Settings objects.
*/
diff --git a/src/TouchPoint-WP/Meeting.php b/src/TouchPoint-WP/Meeting.php
index 931cc395..92632fb5 100644
--- a/src/TouchPoint-WP/Meeting.php
+++ b/src/TouchPoint-WP/Meeting.php
@@ -303,7 +303,7 @@ public function notableAttributes(array $exclude = []): array
* @see Meeting::notableAttributes()
* @see PostTypeCapable::notableAttributes()
*
- * @since 0.0.90
+ * @since 0.0.90 Added
*
* @param string[] $attrs The list of notable attributes.
* @param Meeting $this The Meeting object.
@@ -354,7 +354,7 @@ public function getActionButtons(string $context = null, string $btnClass = "",
* Allows for manipulation of the action buttons for a Meeting. This is the list of buttons that appear
* on the Meeting to allow the user to interact with it.
*
- * @since 0.0.90
+ * @since 0.0.90 Added
*
* @see Meeting::getActionButtons()
* @see PostTypeCapable::getActionButtons()
diff --git a/src/TouchPoint-WP/Partner.php b/src/TouchPoint-WP/Partner.php
index d59e4137..e63bf747 100644
--- a/src/TouchPoint-WP/Partner.php
+++ b/src/TouchPoint-WP/Partner.php
@@ -565,7 +565,7 @@ public static function templateFilter(string $template): string
*
* Default is true.
*
- * @since 0.0.6
+ * @since 0.0.6 Added
*
* @param bool $value The value to return. True will allow the default templates to be applied.
* @param string $className The name of the class calling for the template.
@@ -691,7 +691,7 @@ public static function listShortcode($params = [], string $content = ""): string
* Determines whether or not to automatically include the plugin-default CSS. Return false to use your
* own CSS instead.
*
- * @since 0.0.15
+ * @since 0.0.15 Added
*
* @param bool $useCss Whether or not to include the default CSS. True = include
* @param string $className The name of the current calling class.
@@ -1264,7 +1264,7 @@ public function notableAttributes(array $exclude = []): array
* @see Partner::notableAttributes()
* @see PostTypeCapable::notableAttributes()
*
- * @since 0.0.6
+ * @since 0.0.6 Added
*
* @param string[] $attrs The list of notable attributes.
* @param Partner $this The Partner object.
@@ -1319,7 +1319,7 @@ public function getActionButtons(string $context = null, string $btnClass = "",
* Allows for manipulation of the action buttons for a Partner. This is the list of buttons that appear
* on the Partner to allow the user to interact with it.
*
- * @since 0.0.7
+ * @since 0.0.7 Added
*
* @see Partner::getActionButtons()
* @see PostTypeCapable::getActionButtons()
diff --git a/src/TouchPoint-WP/Person.php b/src/TouchPoint-WP/Person.php
index de49c650..ff14488a 100644
--- a/src/TouchPoint-WP/Person.php
+++ b/src/TouchPoint-WP/Person.php
@@ -1202,7 +1202,7 @@ public function getActionButtons(string $context = null, string $btnClass = "",
* Allows for manipulation of the action buttons for a Person. This is the list of buttons that appear
* on the Person to allow the user to interact with them.
*
- * @since 0.0.90
+ * @since 0.0.90 Added
*
* @see Person::getActionButtons()
*
@@ -1785,7 +1785,7 @@ protected static function allowContact(): bool
* Determines whether contact of any kind is allowed. This is meant to prevent abuse in contact forms by
* removing the ability to contact people and thereby hiding the forms.
*
- * @since 0.0.35
+ * @since 0.0.35 Added
*
* @param bool $allowed True if contact is allowed.
*/
@@ -1795,7 +1795,7 @@ protected static function allowContact(): bool
* Determines whether contact is allowed for any People. This is called *after* tp_allow_contact, and
* that will set the default.
*
- * @since 0.0.35
+ * @since 0.0.35 Added
*
* @see tp_allow_contact
*
diff --git a/src/TouchPoint-WP/Rsvp.php b/src/TouchPoint-WP/Rsvp.php
index 1b1fe9f8..184f01b8 100644
--- a/src/TouchPoint-WP/Rsvp.php
+++ b/src/TouchPoint-WP/Rsvp.php
@@ -5,7 +5,7 @@
namespace tp\TouchPointWP;
-// TODO sort out what goes here, and what goes in Meetings.
+// TODO sort out what goes here, and what goes in Meetings. Answer: all of this should go to Meetings.
if ( ! defined('ABSPATH')) {
exit(1);
@@ -14,7 +14,7 @@
/**
* This class provides the RSVP functionality for Meetings.
*
- * @deprecated 0.0.90
+ * @deprecated 0.0.90 TODO is this true?
*/
abstract class Rsvp implements module
{
diff --git a/src/TouchPoint-WP/Taxonomies.php b/src/TouchPoint-WP/Taxonomies.php
index fdba6804..12f79cd2 100644
--- a/src/TouchPoint-WP/Taxonomies.php
+++ b/src/TouchPoint-WP/Taxonomies.php
@@ -175,7 +175,7 @@ public static function insertTermsForLookupBasedTaxonomy(array $list, string $ta
*
* @return ?int
*
- * @since 0.0.32
+ * @since 0.0.32 Added
*/
public static function getTaxTermId(string $taxonomy, $value): ?int
{
diff --git a/src/TouchPoint-WP/TouchPointWP.php b/src/TouchPoint-WP/TouchPointWP.php
index 7a9bc19c..05b572ef 100644
--- a/src/TouchPoint-WP/TouchPointWP.php
+++ b/src/TouchPoint-WP/TouchPointWP.php
@@ -269,7 +269,7 @@ public static function cronAdd15Minutes($schedules)
* @param string|mixed $text The text to be modified. (should be a string, but this is WordPress, so maybe not.)
*
* @return string The modified text.
- * @since 0.0.23
+ * @since 0.0.23 Added
*
*/
public static function capitalPyScript(mixed $text): string
@@ -1341,6 +1341,7 @@ private function logVersion(): void
*
* @return bool
*
+ * @since 0.0.90 Deprecated
* @deprecated since 0.0.90 Will not be necessary once mobile 3.0 exists.
*/
public static function useTribeCalendarPro(): bool
@@ -1357,6 +1358,7 @@ public static function useTribeCalendarPro(): bool
*
* @return bool
*
+ * @since 0.0.90 Deprecated
* @deprecated since 0.0.90 Will not be necessary once mobile 3.0 exists.
*/
public static function useTribeCalendar(): bool
diff --git a/src/TouchPoint-WP/TouchPointWP_Settings.php b/src/TouchPoint-WP/TouchPointWP_Settings.php
index 313c74d1..a1bf699b 100644
--- a/src/TouchPoint-WP/TouchPointWP_Settings.php
+++ b/src/TouchPoint-WP/TouchPointWP_Settings.php
@@ -143,7 +143,7 @@ public function __construct(TouchPointWP $parent)
* @param ?TouchPointWP $parent Object instance.
*
* @return TouchPointWP_Settings instance
- * @since 0.0.90
+ * @since 0.0.90 Added
* @static
* @see TouchPointWP()
*/
@@ -1226,7 +1226,7 @@ private function settingsFields(bool|string $includeDetail = false): array
/**
* Adjust the settings array before it's returned.
*
- * @since 0.0.90
+ * @since 0.0.90 Added
*/
$this->settings = apply_filters('tp_settings_fields', $this->settings);
@@ -1857,7 +1857,7 @@ protected function validation_updateScriptsIfChanged(mixed $new, string $field):
/**
* Cloning is forbidden.
*
- * @since 0.0.90
+ * @since 0.0.90 Added
*/
public function __clone()
{
@@ -1871,7 +1871,7 @@ public function __clone()
/**
* Unserializing instances of this class is forbidden.
*
- * @since 0.0.90
+ * @since 0.0.90 Added
*/
public function __wakeup()
{
diff --git a/src/TouchPoint-WP/Utilities.php b/src/TouchPoint-WP/Utilities.php
index 07656926..55098701 100644
--- a/src/TouchPoint-WP/Utilities.php
+++ b/src/TouchPoint-WP/Utilities.php
@@ -321,7 +321,7 @@ public static function getColorFor(string $itemName, string $setName): string
/**
* Allows for a custom color function to assign a color for a given value.
*
- * @since 0.0.90
+ * @since 0.0.90 Added
*
* @param mixed $current The current value. Null is provided to the function because the color hasn't otherwise been determined yet.
* @param string $itemName The name of the current item.
@@ -353,7 +353,7 @@ public static function getColorFor(string $itemName, string $setName): string
* deterministic which color will be assigned to which item. If it needs to be, use the `tp_custom_color_function`
* filter instead.
*
- * @since 0.0.90
+ * @since 0.0.90 Added
*
* @param string[] $array The array of colors in hex format, starting with '#'.
* @param string $setName The name of the set for which the colors are needed.
@@ -486,7 +486,7 @@ public static function getAllHeaders(): array
* @param string $title
*
* @return int|string The attachmentId for the image. Can be reused for other posts.
- * @since 0.0.24
+ * @since 0.0.24 Added
*/
public static function updatePostImageFromUrl(int $postId, ?string $newUrl, string $title)
{
@@ -616,7 +616,7 @@ public static function standardizeHtml(?string $html, ?string $context = null):
* Allows for the standardization of HTML content, typically during the import from TouchPoint. If this
* filter is used, the default filtering will be bypassed. Use other filters for more precise control.
*
- * @since 0.0.34
+ * @since 0.0.34 Added
*
* @param string $html The HTML to be standardized.
* @param string $context A context string to pass to hooks.
@@ -631,7 +631,7 @@ public static function standardizeHtml(?string $html, ?string $context = null):
/**
* Make any adjustments to HTML content before the rest of the standardization process happens.
*
- * @since 0.0.25
+ * @since 0.0.25 Added
*
* @param string $html The HTML to be standardized.
* @param string $context A context string to pass to hooks.
@@ -644,7 +644,7 @@ public static function standardizeHtml(?string $html, ?string $context = null):
/**
* The maximum header level to allow in an HTML string. Default is 2.
*
- * @since 0.0.25
+ * @since 0.0.25 Added
*
* @param int $maxHeader The highest header level (lowest number) to allow in the HTML. (e.g. 2 for tags)
* @param string $context A context string to pass to hooks.
@@ -662,7 +662,7 @@ public static function standardizeHtml(?string $html, ?string $context = null):
/**
* The allowed tags in the HTML standardization process. Default is a set of common tags, but tags such as script, style, img, and others are stripped.
*
- * @since 0.0.25
+ * @since 0.0.25 Added
*
* @param string[] $allowedTags The allowed tags in the HTML.
* @param string $context A context string to pass to hooks.
@@ -678,7 +678,7 @@ public static function standardizeHtml(?string $html, ?string $context = null):
/**
* Make any adjustments to HTML content after the rest of the standardization process happens.
*
- * @since 0.0.25
+ * @since 0.0.25 Added
*
* @param string $html The HTML to be standardized.
* @param string $context A context string to pass to hooks.
diff --git a/src/TouchPoint-WP/Utilities/DateFormats.php b/src/TouchPoint-WP/Utilities/DateFormats.php
index 3d256a65..318431e3 100644
--- a/src/TouchPoint-WP/Utilities/DateFormats.php
+++ b/src/TouchPoint-WP/Utilities/DateFormats.php
@@ -27,7 +27,7 @@ public static function TimeStringFormatted(DateTimeInterface $dt): string
/**
* Allows for manipulation of the string returned as a formatted time.
*
- * @since 0.0.34
+ * @since 0.0.34 Added
*
* @param string $ts The string, as formatted so far.
* @param DateTimeInterface $dt The DateTimeInterface object for the time being formatted.
@@ -40,7 +40,7 @@ public static function TimeStringFormatted(DateTimeInterface $dt): string
*
* @return int
*
- * @since 0.0.90
+ * @since 0.0.90 added
*/
public static function timestampAndOffset(?DateTimeInterface $dt): int
{
@@ -74,7 +74,7 @@ public static function TimeRangeStringFormatted(DateTimeInterface $startDt, Date
* Allows for manipulation of a time range string. For example, combined with `tp_adjust_time_string`, you
* can change a range of 1:00pm - 2:00pm to 1-2pm.
*
- * @since 0.0.90
+ * @since 0.0.90 Added
*
* @param string $ts The string, as formatted so far.
* @param string $startStr The start string, with default formatting.
@@ -148,7 +148,7 @@ public static function DateStringFormatted(DateTimeInterface $dt): string
/**
* Allows for manipulation of the string returned as a formatted date.
*
- * @since 0.0.90
+ * @since 0.0.90 Added
*
* @param string $r The string, as formatted so far.
* @param DateTimeInterface $dt The DateTimeInterface object for the date being formatted.
@@ -220,7 +220,7 @@ public static function DateStringFormattedShort(DateTimeInterface $dt): string
/**
* Allows for manipulation of the string returned as a (short) formatted date.
*
- * @since 0.0.90
+ * @since 0.0.90 Added
*
* @param string $r The string, as formatted so far.
* @param DateTimeInterface $dt The DateTimeInterface object for the date being formatted.
From 21b509138064f96478bca8c33c813144f6611437 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Tue, 25 Jun 2024 14:36:40 -0400
Subject: [PATCH 139/423] Docs update
---
docs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs b/docs
index 0825550d..6de28f71 160000
--- a/docs
+++ b/docs
@@ -1 +1 @@
-Subproject commit 0825550d5c2b840783878236156093c6318a53d0
+Subproject commit 6de28f7178daa3410ea018c0042f1343d3d1ee4b
From 761d5f5db746aa53effac82b67a8c63b7eeed1ab Mon Sep 17 00:00:00 2001
From: "James K."
Date: Tue, 25 Jun 2024 22:22:19 -0400
Subject: [PATCH 140/423] Adding app 2.0 API for Meeting-based calendar.
---
docs | 2 +-
src/TouchPoint-WP/EventsCalendar.php | 269 +++++++++++++++++++-
src/TouchPoint-WP/Meeting.php | 45 +++-
src/TouchPoint-WP/TouchPointWP.php | 22 +-
src/TouchPoint-WP/TouchPointWP_Settings.php | 31 ++-
5 files changed, 357 insertions(+), 12 deletions(-)
diff --git a/docs b/docs
index 6de28f71..f6648ddf 160000
--- a/docs
+++ b/docs
@@ -1 +1 @@
-Subproject commit 6de28f7178daa3410ea018c0042f1343d3d1ee4b
+Subproject commit f6648ddff2de964a64d525c682b39dd358dca70e
diff --git a/src/TouchPoint-WP/EventsCalendar.php b/src/TouchPoint-WP/EventsCalendar.php
index c2253e1c..9a168da8 100644
--- a/src/TouchPoint-WP/EventsCalendar.php
+++ b/src/TouchPoint-WP/EventsCalendar.php
@@ -10,6 +10,7 @@
}
use WP_Post;
+use WP_Query;
if ( ! TOUCHPOINT_COMPOSER_ENABLED) {
require_once 'api.php';
@@ -19,13 +20,30 @@
* Provides an interface to bridge the gap between The Events Calendar plugin (by ModernTribe) and the TouchPoint
* mobile app.
*
- * @since 0.0.90 Deprecated
+ * @since 0.0.90 Deprecated. Will be removed once v2.0 apps are no longer in use, as this won't be necessary for 3.0+.
* @deprecated since 0.0.90 Will not be necessary once mobile 3.0 exists.
*/
abstract class EventsCalendar implements api, module
{
+ /**
+ * @param array $params
+ *
+ * @return array
+ *
+ * @since 0.0.2 Added
+ * @since 0.0.90 Deprecated. Will be removed once v2.0 apps are no longer in use, as this won't be necessary for 3.0+.
+ * @deprecated since 0.0.90 Will not be necessary once mobile 3.0 exists.
+ */
protected static function generateEventsList(array $params = []): array
{
+ if (TouchPointWP::instance()->settings->ec_app_cal_provider === 'meetings') {
+ return self::generateEventsListFromMeetings($params);
+ }
+
+ if (!function_exists('tribe_get_events')) {
+ return [];
+ }
+
$eventsList = [];
$params = array_merge(
@@ -73,7 +91,7 @@ protected static function generateEventsList(array $params = []): array
*
* @since 0.0.2 Added
* @since 0.0.90 Deprecated
- * @depecated 0.0.90 Will be going away with Mobile App version 2.0
+ * @deprecated 0.0.90 Will be going away with Mobile App version 2.0
*
* @param string $content The html thus far.
*/
@@ -123,7 +141,7 @@ protected static function generateEventsList(array $params = []): array
*
* @since 0.0.3 Added
* @since 0.0.90 Deprecated
- * @depecated 0.0.90 Will be going away with Mobile App version 2.0
+ * @deprecated 0.0.90 Will be going away with Mobile App version 2.0
*
* @param string $cssUrl The url for a CSS file. By default, one provided with the plugin is used.
*/
@@ -170,10 +188,227 @@ protected static function generateEventsList(array $params = []): array
return $eventsList;
}
+ /**
+ * @param array $params
+ *
+ * @return array
+ *
+ * @since 0.0.90 Added and Deprecated. Will be removed once v2.0 apps are no longer in use, as this won't be necessary for 3.0+.
+ * @depreacted
+ */
+ protected static function generateEventsListFromMeetings(array $params = []): array
+ {
+ $eventsList = [];
+
+ $tpDomain = TouchPointWP::instance()->settings->host;
+ $dlDomain = TouchPointWP::instance()->settings->host_deeplink;
+
+ $q = new WP_Query();
+
+ $existingMq = $q->get('meta_query');
+
+ $now = Utilities::dateTimeNow();
+
+ $mq = [
+ [
+ [
+ 'key' => Meeting::MEETING_END_META_KEY,
+ 'value' => $now->format('U'),
+ 'compare' => ">="
+ ],
+ [ // This condition is to allow for the possibility of events without end times.
+ [
+ 'key' => Meeting::MEETING_END_META_KEY,
+ 'compare' => '=',
+ 'value' => 0
+ ],
+ [
+ 'key' => Meeting::MEETING_START_META_KEY,
+ 'value' => $now->format('U'),
+ 'compare' => ">"
+ ],
+ 'relation' => 'AND'
+ ],
+ 'relation' => 'OR'
+ ],
+ [
+ 'key' => Meeting::MEETING_META_KEY,
+ 'value' => 0,
+ 'compare' => ">"
+ ],
+ 'relation' => 'AND'
+ ];
+
+ if (!empty($existingMq)) {
+ $mq = [
+ 'relation' => 'AND',
+ $existingMq,
+ $mq,
+ ];
+ }
+
+ $q->set('meta_query', $mq);
+
+ $q->set('meta_key', Meeting::MEETING_START_META_KEY);
+ $q->set('orderby', 'meta_value');
+ $q->set('order', 'ASC');
+ $q->set('posts_per_page', 200);
+
+ $q->set('post_type', Involvement_PostTypeSettings::getPostTypes());
+
+ $iids = [];
+ $count = 0;
+
+ foreach ($q->get_posts() as $eQ) {
+ /** @var WP_Post $eQ */
+ global $post;
+ $post = $eQ;
+
+ try {
+ $e = Meeting::fromPost($eQ);
+ } catch (TouchPointWP_Exception) {
+ continue;
+ }
+
+ $iid = $e->involvementId();
+ if (in_array($iid, $iids)) {
+ continue;
+ }
+ $iids[] = $iid;
+
+ $eO = [];
+
+ $locationContent = [];
+ $separator = " • ";
+
+ $location = $e->locationName();
+ if ($location !== '' && $location !== null) {
+ $locationContent[] = $location;
+ }
+// $sstring = $e->scheduleString($separator);
+// if ($sstring) {
+// $locationContent[] = html_entity_decode($sstring);
+// }
+ if ($e->isMultiDay()) {
+ $locationContent[] = __("Multi-Day", "TouchPoint-WP");
+ }
+ $locationContent = implode($separator, $locationContent);
+
+ $content = trim(get_the_content(null, true, $eQ->ID));
+ $content = apply_filters('the_content', $content);
+ /**
+ * Allows for manipulation of the html returned to the calendar feature of 2.0 Mobile apps.
+ *
+ * @param string $content The html thus far.
+ *
+ * @since 0.0.90 Deprecated
+ * @deprecated 0.0.90 Will be going away with Mobile App version 2.0
+ *
+ * @since 0.0.2 Added
+ */
+ $content = apply_filters('tp_app_events_content', $content);
+
+ $content = html_entity_decode($content);
+
+ // Add Header and footer Scripts, etc.
+ if ($content !== '') {
+ ob_start();
+ do_action('wp_print_styles');
+ do_action('wp_print_head_scripts');
+ $content = ob_get_clean() . $content;
+
+ ob_start();
+ do_action('wp_print_footer_scripts');
+ do_action('wp_print_scripts');
+ $content .= ob_get_clean();
+ }
+
+ // Add domain to relative links
+ $content = preg_replace(
+ "/['\"]\/([^\/\"']*)[\"']/i",
+ '"' . get_home_url() . '/$1"',
+ $content
+ );
+
+ // Replace TouchPoint links with deeplinks where applicable
+ // Registration Links
+ if ($tpDomain !== '' && $dlDomain !== '') {
+ $content = preg_replace(
+ "/:\/\/$tpDomain\/OnlineReg\/([\d]+)/i",
+ "://" . $dlDomain . '/registrations/register/${1}?from={{MOBILE_OS}}',
+ $content
+ );
+ }
+
+ if ($content !== '') {
+ $cssUrl = null;
+ if (TouchPointWP::instance()->settings->ec_use_standardizing_style === 'on') {
+ $cssUrl = TouchPointWP::instance(
+ )->assets_url . 'template/ec-standardizing-style.css?v=' . TouchPointWP::VERSION;
+ }
+
+ /**
+ * Insert a CSS file into all event content for mobile 2.0 app.
+ *
+ * @param string $cssUrl The url for a CSS file. By default, one provided with the plugin is used.
+ *
+ * @since 0.0.90 Deprecated
+ * @deprecated 0.0.90 Will be going away with Mobile App version 2.0
+ *
+ * @since 0.0.3 Added
+ */
+ $cssUrl = apply_filters('tp_app_events_css_url', $cssUrl);
+ if (is_string($cssUrl)) {
+ $content = " " . $content;
+ }
+ }
+
+ // Not needed for apps, but helpful for diagnostics
+ $eO['ID'] = $eQ->ID;
+ $eO['IID'] = $iid;
+
+ // Android (apparently not used on iOS?)
+ $eO['all_day'] = $e->isAllDay();
+
+ // Android
+ $eO['image'] = get_the_post_thumbnail_url($eQ->ID, 'large');
+ // iOS
+ $eO['RelatedImageFileKey'] = $eO['image'];
+
+ // iOS
+ $eO['Description'] = str_replace("{{MOBILE_OS}}", "iOS", $content);
+ // Android
+ $eO['content'] = str_replace("{{MOBILE_OS}}", "android", $content);
+
+ // iOS
+ $eO['Subject'] = $eQ->post_title;
+ // Android
+ $eO['title'] = $eQ->post_title;
+
+ // iOS
+ $eO['StartDateTime'] = $e->startDt->format('c');
+ // Android
+ $eO['start_date'] = $eO['StartDateTime'];
+
+ // iOS
+ $eO['Location'] = $locationContent;
+ // Android
+ $eO['room'] = $locationContent;
+
+ $eventsList[] = $eO;
+ }
+
+ return $eventsList;
+ }
+
/**
* Print json for Events Calendar for Mobile app.
*
* @param array $params Parameters from the request to use for filtering or such.
+ *
+ * @since 0.0.2 Added
+ * @since 0.0.90 Deprecated. Will be removed once v2.0 apps are no longer in use, as this won't be necessary for 3.0+.
+ * @deprecated since 0.0.90 Will not be necessary once mobile 3.0 exists.
*/
protected static function echoAppList(array $params = []): void
{
@@ -188,6 +423,11 @@ protected static function echoAppList(array $params = []): void
* Generate previews of the HTML generated for the App Events Calendar
*
* This is wildly inefficient since each iframe will calculate the full list.
+ *
+ * @param array $params Parameters from the request to use for filtering or such.
+ * @since 0.0.90 Added
+ * @since 0.0.90 Deprecated. Will be removed once v2.0 apps are no longer in use, as this won't be necessary for 3.0+.
+ * @deprecated since 0.0.90 Will not be necessary once mobile 3.0 exists.
*/
protected static function previewAppList(array $params = []): void
{
@@ -202,6 +442,18 @@ protected static function previewAppList(array $params = []): void
}
}
+ /**
+ * Generate previews of the HTML generated for one item on the 2.0 app events calendar.
+ *
+ * This is wildly inefficient since each iframe will calculate the full list.
+ *
+ * @param array $params Parameters from the request to use for filtering or such.
+ * @param int $item The item to preview
+ *
+ * @since 0.0.90 Added
+ * @since 0.0.90 Deprecated. Will be removed once v2.0 apps are no longer in use, as this won't be necessary for 3.0+.
+ * @deprecated since 0.0.90 Will not be necessary once mobile 3.0 exists.
+ */
protected static function previewAppListItem(array $params = [], int $item = 0): void
{
$eventsList = self::generateEventsList($params);
@@ -209,6 +461,17 @@ protected static function previewAppListItem(array $params = [], int $item = 0):
echo $eventsList[$item]['content'];
}
+ /**
+ * Handle API requests
+ *
+ * @param array $uri The request URI already parsed by parse_url()
+ *
+ * @return bool False if endpoint is not found. Should print the result.
+ *
+ * @since 0.0.2 Added
+ * @since 0.0.90 Deprecated. Will be removed once v2.0 apps are no longer in use, as this won't be necessary for 3.0+.
+ * @deprecated since 0.0.90 Will not be necessary once mobile 3.0 exists.
+ */
public static function api(array $uri): bool
{
if (count($uri['path']) === 2) {
diff --git a/src/TouchPoint-WP/Meeting.php b/src/TouchPoint-WP/Meeting.php
index 92632fb5..a1b7cb5e 100644
--- a/src/TouchPoint-WP/Meeting.php
+++ b/src/TouchPoint-WP/Meeting.php
@@ -242,6 +242,18 @@ public static function fromPost(WP_Post $post): Meeting
return self::$_instances[$mid];
}
+ /**
+ * Get the involvement ID (without necessarily instantiating the Involvement)
+ *
+ * @since 0.0.90 Added
+ *
+ * @return int
+ */
+ public function involvementId(): int
+ {
+ return intval(get_post_meta($this->post_id, self::MEETING_INV_ID_META_KEY, true));
+ }
+
/**
* Get the Involvement object associated with this Meeting.
*
@@ -259,6 +271,37 @@ public function involvement(): Involvement
throw new TouchPointWP_Exception("Meeting is not associated with an Involvement.", 171002);
}
+ /**
+ * Get the human-readable schedule for the meeting as a string. If multiple elements exist, they will be joined by
+ * $join. Returns null if the schedule string is unavailable for some reason.
+ *
+ * @param string $join
+ *
+ * @return ?string
+ *
+ * @since 0.0.90 Added
+ */
+ public function scheduleString(string $join): ?string
+ {
+ $ss = $this->scheduleStringArray();
+ if (count($ss) > 0) {
+ return implode($join, $ss);
+ }
+ return null;
+ }
+
+ /**
+ * Get the human-readable schedule for the meeting as a string or set of strings in an array.
+ *
+ * @return array
+ *
+ * @since 0.0.90 Added
+ */
+ public function scheduleStringArray(): array
+ {
+ return DateFormats::DurationToStringArray($this->startDt, $this->endDt, $this->isMultiDay(), $this->isAllDay());
+ }
+
/**
* Get notable attributes, such as gender restrictions, as strings.
@@ -279,7 +322,7 @@ public function notableAttributes(array $exclude = []): array
}
}
- $d = DateFormats::DurationToStringArray($this->startDt, $this->endDt, $this->isMultiDay(), $this->isAllDay());
+ $d = $this->scheduleStringArray();
$attrs = [...$d, ...$attrs];
diff --git a/src/TouchPoint-WP/TouchPointWP.php b/src/TouchPoint-WP/TouchPointWP.php
index 05b572ef..e1009b87 100644
--- a/src/TouchPoint-WP/TouchPointWP.php
+++ b/src/TouchPoint-WP/TouchPointWP.php
@@ -426,7 +426,7 @@ public function parseRequest($continue, $wp, $extraVars): bool
// App Events Endpoint
if ($reqUri['path'][1] === TouchPointWP::API_ENDPOINT_APP_EVENTS &&
- TouchPointWP::useTribeCalendar()
+ TouchPointWP::useTribeOrMeetingCalendars()
) {
if ( ! EventsCalendar::api($reqUri)) {
return $continue;
@@ -717,8 +717,8 @@ public static function load($file): TouchPointWP
}
// Load Tribe module if enabled (by presence of Events Calendar plugin)
- if (self::useTribeCalendar()
- && ! class_exists("tp\TouchPointWP\EventsCalendar")) {
+ if (self::useTribeOrMeetingCalendars()
+ && !class_exists("tp\TouchPointWP\EventsCalendar")) {
if ( ! TOUCHPOINT_COMPOSER_ENABLED) {
require_once 'EventsCalendar.php';
}
@@ -1353,6 +1353,7 @@ public static function useTribeCalendarPro(): bool
return is_plugin_active('events-calendar-pro/events-calendar-pro.php');
}
+
/**
* Indicates that Tribe Calendar is enabled.
*
@@ -1366,6 +1367,21 @@ public static function useTribeCalendar(): bool
return self::useTribeCalendarPro() || is_plugin_active('the-events-calendar/the-events-calendar.php');
}
+
+ /**
+ * Indicates that a calendar function is available, especially for the 2.0 mobile app option.
+ *
+ * @return bool
+ *
+ * @since 0.0.90 Added & Deprecated. Will be removed once version 2.0 of the mobile app is fully retired.
+ * @deprecated 0.0.90. Will be removed once version 2.0 of the mobile app is fully retired.
+ */
+ public static function useTribeOrMeetingCalendars(): bool
+ {
+ return self::useTribeCalendar() || get_option(TouchPointWP::SETTINGS_PREFIX . 'enable_meeting_cal') === "on";
+ }
+
+
/**
* Sort a list of hierarchical terms into a list in which each parent is immediately followed by its children.
*
diff --git a/src/TouchPoint-WP/TouchPointWP_Settings.php b/src/TouchPoint-WP/TouchPointWP_Settings.php
index a1bf699b..045005a1 100644
--- a/src/TouchPoint-WP/TouchPointWP_Settings.php
+++ b/src/TouchPoint-WP/TouchPointWP_Settings.php
@@ -66,6 +66,7 @@
*
* @property-read string locations_json JSON string describing fixed locations.
*
+ * @property-read string ec_app_cal_provider The provider of the calendar data for the mobile app. Either "meetings" or "tribe".
* @property-read string ec_use_standardizing_style Whether to insert the standardizing stylesheet into mobile app requests.
*
* @property-read string mc_name_plural What Meetings should be called, plural (e.g. "Events" or "Meetings")
@@ -759,18 +760,40 @@ private function settingsFields(bool|string $includeDetail = false): array
];
}
- if (TouchPointWP::useTribeCalendar()) {
+ if (TouchPointWP::useTribeOrMeetingCalendars()) {
+ $options = [];
+ $default = '';
+ if (TouchPointWP::useTribeCalendar()) {
+ $options['tribe'] = __('Events Calendar plugin by Modern Tribe', 'TouchPoint-WP');
+ $default = 'tribe';
+ }
+ if (get_option(TouchPointWP::SETTINGS_PREFIX . 'enable_meeting_cal') === "on") {
+ $options['meetings'] = __('TouchPoint Meetings', 'TouchPoint-WP');
+ $default = 'meetings';
+ }
+
/** @noinspection HtmlUnknownTarget */
$this->settings['events_calendar'] = [
- 'title' => __('Events Calendar', 'TouchPoint-WP'),
- 'description' => __('Integrate with The Events Calendar from ModernTribe.', 'TouchPoint-WP'),
+ 'title' => __('App 2.0 Calendar', 'TouchPoint-WP'),
+ 'description' => __('Integrate Custom Mobile app version 2.0 with The Events Calendar from ModernTribe.', 'TouchPoint-WP'),
'fields' => [
+ [
+ 'id' => 'ec_app_cal_provider',
+ 'label' => __('Events Provider', 'TouchPoint-WP'),
+ 'description' => __(
+ 'The source of events for version 2.0 of the Custom Mobile App.',
+ 'TouchPoint-WP'
+ ),
+ 'type' => 'select',
+ 'options' => $options,
+ 'default' => $default,
+ ],
[
'id' => 'ec_app_cal_url',
'label' => __('Events for Custom Mobile App', 'TouchPoint-WP'),
'type' => 'instructions',
'description' => strtr(
- '' . __('To use your Events Calendar events in the Custom mobile app, set the Provider to Wordpress Plugin - Modern Tribe and use this url:', 'TouchPoint-WP') . '
' .
+ '' . __("To use your Events Calendar events in the Custom mobile app, set the Provider to Wordpress Plugin - Modern Tribe (regardless of which provider you're using above) and use this url:", 'TouchPoint-WP') . '
' .
' ' .
'' . __('Preview', 'TouchPoint-WP') . ' ',
[
From 206cfa6b9c9719d4128282886337a533b758c7c4 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Tue, 25 Jun 2024 22:38:40 -0400
Subject: [PATCH 141/423] i18n for revised mobile app 2.0 calendar
---
README.md | 2 +-
i18n/TouchPoint-WP-es_ES.po | 501 ++++++++++----------
i18n/TouchPoint-WP.pot | 491 ++++++++++---------
src/TouchPoint-WP/EventsCalendar.php | 2 +-
src/TouchPoint-WP/TouchPointWP_Settings.php | 2 +-
5 files changed, 516 insertions(+), 482 deletions(-)
diff --git a/README.md b/README.md
index 1c0c63fa..fad7fd02 100644
--- a/README.md
+++ b/README.md
@@ -35,7 +35,7 @@ appropriate care for their security.
### Events
Improve display of events in the TouchPoint Custom Mobile App by providing content from [The Events Calendar Plugin by
-ModernTribe](https://theeventscalendar.com/). This is compatible with both the free and "Pro" versions.
+Modern Tribe](https://theeventscalendar.com/). This is compatible with both the free and "Pro" versions.
### Authentication (Beta)
Authenticate TouchPoint users to WordPress, so you can know your website users.
diff --git a/i18n/TouchPoint-WP-es_ES.po b/i18n/TouchPoint-WP-es_ES.po
index 49ae4857..0a5ea7a2 100644
--- a/i18n/TouchPoint-WP-es_ES.po
+++ b/i18n/TouchPoint-WP-es_ES.po
@@ -55,7 +55,7 @@ msgid "Slug"
msgstr "Slug"
#: src/templates/admin/invKoForm.php:47
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:944
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:967
msgid "Divisions to Import"
msgstr "Divisiones a Importar"
@@ -87,7 +87,7 @@ msgstr "Tipos de miembros de líder"
#: src/templates/admin/invKoForm.php:141
#: src/templates/admin/invKoForm.php:268
#: src/templates/parts/involvement-nearby-list.php:2
-#: src/TouchPoint-WP/Meeting.php:551
+#: src/TouchPoint-WP/Meeting.php:594
#: src/TouchPoint-WP/Rsvp.php:75
#: assets/js/base-defer.js:192
#: assets/js/base-defer.js:1133
@@ -123,13 +123,13 @@ msgid "Gender"
msgstr "Género"
#: src/templates/admin/invKoForm.php:188
-#: src/TouchPoint-WP/Involvement.php:1758
+#: src/TouchPoint-WP/Involvement.php:1759
#: src/TouchPoint-WP/Taxonomies.php:744
msgid "Weekday"
msgstr "Día laborable"
#: src/templates/admin/invKoForm.php:192
-#: src/TouchPoint-WP/Involvement.php:1784
+#: src/TouchPoint-WP/Involvement.php:1785
#: src/TouchPoint-WP/Taxonomies.php:802
msgid "Time of Day"
msgstr "Hora del día"
@@ -173,7 +173,7 @@ msgstr "Seleccione..."
#. translators: %s will be the plural post type (e.g. Small Groups)
#: src/templates/parts/involvement-list-none.php:16
-#: src/TouchPoint-WP/Involvement.php:2004
+#: src/TouchPoint-WP/Involvement.php:2005
msgid "No %s Found."
msgstr "No se encontraron %s"
@@ -199,11 +199,12 @@ msgstr "Su token de inicio de sesión no es válido."
msgid "Session could not be validated."
msgstr "No se pudo validar la sesión."
-#: src/TouchPoint-WP/EventsCalendar.php:61
+#: src/TouchPoint-WP/EventsCalendar.php:80
msgid "Recurring"
msgstr "Periódico"
-#: src/TouchPoint-WP/EventsCalendar.php:64
+#: src/TouchPoint-WP/EventsCalendar.php:83
+#: src/TouchPoint-WP/EventsCalendar.php:293
msgid "Multi-Day"
msgstr "varios días"
@@ -223,64 +224,64 @@ msgstr "Registro aún no abierto"
msgid "Registration Closed"
msgstr "Registro cerrado"
-#: src/TouchPoint-WP/Involvement.php:1633
+#: src/TouchPoint-WP/Involvement.php:1634
#: src/TouchPoint-WP/Partner.php:810
msgid "Any"
msgstr "Cualquier"
#. translators: %s is for the user-provided term for the items on the map (e.g. Small Group or Partner)
-#: src/TouchPoint-WP/Involvement.php:1841
+#: src/TouchPoint-WP/Involvement.php:1842
#: src/TouchPoint-WP/Partner.php:834
msgid "The %s listed are only those shown on the map."
msgstr "Los %s enumerados son solo los que se muestran en el mapa."
-#: src/TouchPoint-WP/Involvement.php:3459
+#: src/TouchPoint-WP/Involvement.php:3460
msgid "Men Only"
msgstr "Solo hombres"
-#: src/TouchPoint-WP/Involvement.php:3462
+#: src/TouchPoint-WP/Involvement.php:3463
msgid "Women Only"
msgstr "Solo mujeres"
-#: src/TouchPoint-WP/Involvement.php:3533
+#: src/TouchPoint-WP/Involvement.php:3534
msgid "Contact Leaders"
msgstr "Contacta con las líderes"
-#: src/TouchPoint-WP/Involvement.php:3596
-#: src/TouchPoint-WP/Involvement.php:3632
+#: src/TouchPoint-WP/Involvement.php:3597
+#: src/TouchPoint-WP/Involvement.php:3633
msgid "Register"
msgstr "Regístrate ahora"
-#: src/TouchPoint-WP/Involvement.php:3601
+#: src/TouchPoint-WP/Involvement.php:3602
msgid "Create Account"
msgstr "Crear cuenta"
-#: src/TouchPoint-WP/Involvement.php:3605
+#: src/TouchPoint-WP/Involvement.php:3606
msgid "Schedule"
msgstr "Programe"
-#: src/TouchPoint-WP/Involvement.php:3610
+#: src/TouchPoint-WP/Involvement.php:3611
msgid "Give"
msgstr "Dar"
-#: src/TouchPoint-WP/Involvement.php:3613
+#: src/TouchPoint-WP/Involvement.php:3614
msgid "Manage Subscriptions"
msgstr "Administrar suscripciones"
-#: src/TouchPoint-WP/Involvement.php:3616
+#: src/TouchPoint-WP/Involvement.php:3617
msgid "Record Attendance"
msgstr "Registre su asistencia"
-#: src/TouchPoint-WP/Involvement.php:3619
+#: src/TouchPoint-WP/Involvement.php:3620
msgid "Get Tickets"
msgstr "Obtener boletos"
-#: src/TouchPoint-WP/Involvement.php:3627
+#: src/TouchPoint-WP/Involvement.php:3628
#: assets/js/base-defer.js:1001
msgid "Join"
msgstr "Únete"
-#: src/TouchPoint-WP/Involvement.php:3545
+#: src/TouchPoint-WP/Involvement.php:3546
#: src/TouchPoint-WP/Partner.php:1314
msgid "Show on Map"
msgstr "Muestra en el mapa"
@@ -306,514 +307,502 @@ msgstr "ID de Personas de TouchPoint"
msgid "Contact"
msgstr "Contacta"
-#: src/TouchPoint-WP/Meeting.php:550
+#: src/TouchPoint-WP/Meeting.php:593
#: src/TouchPoint-WP/Rsvp.php:80
msgid "RSVP"
msgstr "RSVP"
-#: src/TouchPoint-WP/TouchPointWP.php:1928
+#: src/TouchPoint-WP/TouchPointWP.php:1946
msgid "Unknown Type"
msgstr "Tipo desconocido"
-#: src/TouchPoint-WP/TouchPointWP.php:1985
+#: src/TouchPoint-WP/TouchPointWP.php:2003
msgid "Your Searches"
msgstr "Tus búsquedas"
-#: src/TouchPoint-WP/TouchPointWP.php:1988
+#: src/TouchPoint-WP/TouchPointWP.php:2006
msgid "Public Searches"
msgstr "Búsquedas públicas"
-#: src/TouchPoint-WP/TouchPointWP.php:1991
+#: src/TouchPoint-WP/TouchPointWP.php:2009
msgid "Status Flags"
msgstr "Indicadores de Estado"
-#: src/TouchPoint-WP/TouchPointWP.php:1996
-#: src/TouchPoint-WP/TouchPointWP.php:1997
+#: src/TouchPoint-WP/TouchPointWP.php:2014
+#: src/TouchPoint-WP/TouchPointWP.php:2015
msgid "Current Value"
msgstr "Valor actual"
-#: src/TouchPoint-WP/TouchPointWP.php:2114
-#: src/TouchPoint-WP/TouchPointWP.php:2150
+#: src/TouchPoint-WP/TouchPointWP.php:2132
+#: src/TouchPoint-WP/TouchPointWP.php:2168
msgid "Invalid or incomplete API Settings."
msgstr "Configuración de API no válida o incompleta."
-#: src/TouchPoint-WP/TouchPointWP.php:2164
-#: src/TouchPoint-WP/TouchPointWP.php:2208
+#: src/TouchPoint-WP/TouchPointWP.php:2182
+#: src/TouchPoint-WP/TouchPointWP.php:2226
msgid "Host appears to be missing from TouchPoint-WP configuration."
msgstr "Parece que falta el host en la configuración de TouchPoint-WP."
-#: src/TouchPoint-WP/TouchPointWP.php:2340
+#: src/TouchPoint-WP/TouchPointWP.php:2358
msgid "People Query Failed"
msgstr "Consulta de registros de personas fallida"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:254
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:255
msgid "Basic Settings"
msgstr "Ajustes básicos"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:255
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:256
msgid "Connect to TouchPoint and choose which features you wish to use."
msgstr "Conéctese a TouchPoint y elija qué funciones desea usar."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:259
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:260
msgid "Enable Authentication"
msgstr "Habilitar autenticación"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:260
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:261
msgid "Allow TouchPoint users to sign into this website with TouchPoint."
msgstr "Permita que los usuarios de TouchPoint inicien sesión en este sitio web con TouchPoint."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:271
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:272
msgid "Enable RSVP Tool"
msgstr "Habilitar la herramienta RSVP"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:272
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:273
msgid "Add a crazy-simple RSVP button to WordPress event pages."
msgstr "Agregue un botón RSVP muy simple a las páginas de eventos de WordPress."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:279
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:280
msgid "Enable Involvements"
msgstr "Habilitar Participaciones"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:280
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:281
msgid "Load Involvements from TouchPoint for involvement listings and entries native in your website."
msgstr "Cargue participaciones desde TouchPoint para obtener listas de participación y entradas nativas en su sitio web."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:301
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:302
msgid "Enable Public People Lists"
msgstr "Habilitar listas de personas públicas"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:302
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:303
msgid "Import public people listings from TouchPoint (e.g. staff or elders)"
msgstr "Importe listados públicos de personas desde TouchPoint (por ejemplo, personal o ancianos)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:312
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:313
msgid "Enable Global Partner Listings"
msgstr "Habilitar listados de Socios Globales"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:313
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:314
msgid "Import ministry partners from TouchPoint to list publicly."
msgstr "Importe socios ministeriales de TouchPoint para incluirlos en una lista pública."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:334
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:335
msgid "Display Name"
msgstr "Nombre para mostrar"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:335
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:336
msgid "What your church calls your TouchPoint database."
msgstr "Lo que su iglesia llama su base de datos TouchPoint."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:345
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:346
msgid "TouchPoint Host Name"
msgstr "Nombre de host del TouchPoint"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:346
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:347
msgid "The domain for your TouchPoint database, without the https or any slashes."
msgstr "El dominio de su base de datos TouchPoint, sin https ni barras."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:358
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:359
msgid "Custom Mobile App Deeplink Host Name"
msgstr "Nombre de host de enlace profundo de aplicación móvil personalizada"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:370
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:371
msgid "TouchPoint API Username"
msgstr "Nombre de usuario de la API de TouchPoint"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:382
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:383
msgid "TouchPoint API User Password"
msgstr "Contraseña de usuario de la API de TouchPoint"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:383
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:384
msgid "The password of a user account in TouchPoint with API permissions."
msgstr "La contraseña de una cuenta de usuario en TouchPoint con permisos de API."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:395
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:396
msgid "TouchPoint API Script Name"
msgstr "Nombre de la secuencia de comandos de la API de TouchPoint"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:396
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:397
msgid "The name of the Python script loaded into TouchPoint. Don't change this unless you know what you're doing."
msgstr "El nombre de la secuencia de comandos de Python cargada en TouchPoint. No cambies esto a menos que sepas lo que estás haciendo."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:407
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:408
msgid "Google Maps Javascript API Key"
msgstr "Clave de la API de Javascript de Google Maps"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:408
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:409
msgid "Required for embedding maps."
msgstr "Necesario para incrustar mapas."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:419
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:420
msgid "Google Maps Geocoding API Key"
msgstr "Clave API de codificación geográfica de Google Maps"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:420
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:421
msgid "Optional. Allows for reverse geocoding of user locations."
msgstr "Opcional. Permite la geocodificación inversa de las ubicaciones de los usuarios."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:438
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:443
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:439
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:444
msgid "Generate Scripts"
msgstr "Generar secuencias de comandos"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:442
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:443
msgid "Upload the package to {tpName} here"
msgstr "Sube el paquete a {tpName} aquí"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:459
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:460
msgid "People"
msgstr "Gente"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:460
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:461
msgid "Manage how people are synchronized between TouchPoint and WordPress."
msgstr "Administre cómo se sincronizan las personas entre TouchPoint y WordPress."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:464
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:465
msgid "Contact Keywords"
msgstr "Palabras clave de contacto"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:465
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:466
msgid "These keywords will be used when someone clicks the \"Contact\" button on a Person's listing or profile."
msgstr "Estas palabras clave se utilizarán cuando alguien haga clic en el botón \"Contactar\" en la lista o el perfil de una Persona."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:476
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:477
msgid "Extra Value for WordPress User ID"
msgstr "Valor Adicional para la ID de usuario de WordPress"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:477
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:478
msgid "The name of the extra value to use for the WordPress User ID. If you are using multiple WordPress instances with one TouchPoint database, you will need these values to be unique between WordPress instances. In most cases, the default is fine."
msgstr "El nombre del valor adicional que se usará para el ID de usuario de WordPress. Si está utilizando varias instancias de WordPress con una base de datos de TouchPoint, necesitará que estos valores sean únicos entre las instancias de WordPress. En la mayoría de los casos, el valor predeterminado está bien."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:487
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:488
msgid "Extra Value: Biography"
msgstr "Valor Adicional: Biografía"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:488
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:489
msgid "Import a Bio from a Person Extra Value field. Can be an HTML or Text Extra Value. This will overwrite any values set by WordPress. Leave blank to not import."
msgstr "Importe una biografía desde un campo de Valor Adicional de Persona. Puede ser un Valor Adicional HTML o de texto. Esto sobrescribirá cualquier valor establecido por WordPress. Dejar en blanco para no importar."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:498
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:736
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:499
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:737
msgid "Extra Values to Import"
msgstr "Valor Adicional para importar"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:499
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:500
msgid "Import People Extra Value fields as User Meta data."
msgstr "Importe campos de valor extra de personas como metadatos de usuario."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:515
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:516
msgid "Authentication"
msgstr "Autenticación"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:516
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:517
msgid "Allow users to log into WordPress using TouchPoint."
msgstr "Permita que los usuarios inicien sesión en WordPress usando TouchPoint."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:520
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:521
msgid "Make TouchPoint the default authentication method."
msgstr "Haga que TouchPoint sea el método de autenticación predeterminado."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:530
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:531
msgid "Enable Auto-Provisioning"
msgstr "Habilitar el aprovisionamiento automático"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:531
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:532
msgid "Automatically create WordPress users, if needed, to match authenticated TouchPoint users."
msgstr "Cree automáticamente usuarios de WordPress, si es necesario, para que coincidan con los usuarios autenticados de TouchPoint."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:540
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:541
msgid "Change 'Edit Profile' links"
msgstr "Cambiar los enlaces 'Editar perfil'"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:541
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:542
msgid "\"Edit Profile\" links will take the user to their TouchPoint profile, instead of their WordPress profile."
msgstr "Los enlaces \"Editar perfil\" llevarán al usuario a su perfil de TouchPoint, en lugar de a su perfil de WordPress."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:550
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:551
msgid "Enable full logout"
msgstr "Habilitar cierre de sesión completo"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:551
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:552
msgid "Logout of TouchPoint when logging out of WordPress."
msgstr "Cierre sesión en TouchPoint al cerrar sesión en WordPress."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:557
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:558
msgid "Prevent Subscriber Admin Bar"
msgstr "Prevenir la barra de administración de suscriptores"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:558
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:559
msgid "By enabling this option, users who can't edit anything won't see the Admin bar."
msgstr "Al habilitar esta opción, los usuarios que no pueden editar nada no verán la barra de administración."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:572
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:573
msgid "Involvements"
msgstr "Involucramientos"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:573
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:574
msgid "Import Involvements from TouchPoint to list them on your website, for Small Groups, Classes, and more. Select the division(s) that immediately correspond to the type of Involvement you want to list. For example, if you want a Small Group list and have a Small Group Division, only select the Small Group Division. If you want Involvements to be filterable by additional Divisions, select those Divisions on the Divisions tab, not here."
msgstr "Importe participaciones desde TouchPoint para enumerarlas en su sitio web, para grupos pequeños, clases y más. Seleccione la(s) división(es) que corresponda(n) inmediatamente al tipo de participación que desea enumerar. Por ejemplo, si desea una lista de grupos pequeños y tiene una división de grupos pequeños, solo seleccione la división de grupos pequeños. Si desea que las participaciones se puedan filtrar por divisiones adicionales, seleccione esas divisiones en la pestaña Divisiones, no aquí."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:578
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:579
msgid "Involvement Post Types"
msgstr "Tipos de publicaciones de Involucramientos"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:608
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:609
msgid "Global Partners"
msgstr "Misioneros"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:609
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:610
msgid "Manage how global partners are imported from TouchPoint for listing on WordPress. Partners are grouped by family, and content is provided through Family Extra Values. This works for both People and Business records."
msgstr "Administre cómo se importan los socios globales desde TouchPoint para incluirlos en WordPress. Los socios se agrupan por familia y el contenido se proporciona a través de Valor Extra Familiar. Esto funciona tanto para registros de personas como de empresas."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:613
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:614
msgid "Global Partner Name (Plural)"
msgstr "Nombre de los misioneros (plural)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:614
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:615
msgid "What you call Global Partners at your church"
msgstr "Lo que llamas los Misioneros en tu iglesia"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:624
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:625
msgid "Global Partner Name (Singular)"
msgstr "Nombre de un misionero (singular)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:625
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:626
msgid "What you call a Global Partner at your church"
msgstr "Lo que llamas un Misionero en tu iglesia"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:635
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:636
msgid "Global Partner Name for Secure Places (Plural)"
msgstr "Nombre de los misioneros para lugares seguros (plural)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:636
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:637
msgid "What you call Secure Global Partners at your church"
msgstr "Lo que llamas un Misionero seguro en tu iglesia"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:646
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:647
msgid "Global Partner Name for Secure Places (Singular)"
msgstr "Nombre de un misionero para lugares seguros (singular)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:647
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:648
msgid "What you call a Secure Global Partner at your church"
msgstr "Lo que llamas los Misioneros seguros en tu iglesia"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:657
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:658
msgid "Global Partner Slug"
msgstr "Slug de Socio Global"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:658
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:659
msgid "The root path for Global Partner posts"
msgstr "La ruta raíz para las publicaciones de Socios Globales"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:670
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:671
msgid "Saved Search"
msgstr "Búsqueda Guardada"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:671
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:672
msgid "Anyone who is included in this saved search will be included in the listing."
msgstr "Cualquiera que esté incluido en esta búsqueda guardada se incluirá en la lista."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:681
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:682
msgid "Extra Value: Description"
msgstr "Valor Adicional: Descripción"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:682
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:683
msgid "Import a description from a Family Extra Value field. Can be an HTML or Text Extra Value. This becomes the body of the Global Partner post."
msgstr "Importe una descripción de un campo de Valor Extra Familiar. Puede ser un valor adicional HTML o de texto. Esto se convierte en el cuerpo de la publicación del socio global."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:692
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:693
msgid "Extra Value: Summary"
msgstr "Valor Adicional: Resumen"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:693
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:694
msgid "Optional. Import a short description from a Family Extra Value field. Can be an HTML or Text Extra Value. If not provided, the full bio will be truncated."
msgstr "Opcional. Importe una breve descripción de un campo de Valor Extra Familiar. Puede ser un Valor Adicional HTML o de texto. Si no se proporciona, la biografía completa se truncará."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:703
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:704
msgid "Latitude Override"
msgstr "Anulación de latitud"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:704
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:705
msgid "Designate a text Family Extra Value that will contain a latitude that overrides any locations on the partner's profile for the partner map. Both latitude and longitude must be provided for an override to take place."
msgstr "Designe un Valor Familiar Adicional de texto que contenga una latitud que anule cualquier ubicación en el perfil del socio para el mapa de socios. Tanto la latitud como la longitud deben proporcionarse para que se produzca una anulación."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:714
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:715
msgid "Longitude Override"
msgstr "Anulación de longitud"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:715
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:716
msgid "Designate a text Family Extra Value that will contain a longitude that overrides any locations on the partner's profile for the partner map. Both latitude and longitude must be provided for an override to take place."
msgstr "Designe un Valor Familiar Adicional de texto que contenga una longitud que anule cualquier ubicación en el perfil del socio para el mapa de socios. Tanto la latitud como la longitud deben proporcionarse para que se produzca una anulación."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:725
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:726
msgid "Public Location"
msgstr "Ubicación Pública"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:726
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:727
msgid "Designate a text Family Extra Value that will contain the partner's location, as you want listed publicly. For partners who have DecoupleLocation enabled, this field will be associated with the map point, not the list entry."
msgstr "Designe un Valor Adicional Familiar de texto que contendrá la ubicación del socio, como desea que se enumere públicamente. Para los socios que tienen DecoupleLocation habilitado, este campo se asociará con el punto del mapa, no con la entrada de la lista."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:737
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:738
msgid "Import Family Extra Value fields as Meta data on the partner's post"
msgstr "Importe campos de Valor Adicional Familiar como Metadatos en la publicación del socio"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:748
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:749
msgid "Primary Taxonomy"
msgstr "Taxonomía Primaria"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:749
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:750
msgid "Import a Family Extra Value as the primary means by which partners are organized."
msgstr "Importe un Valor Adicional Familiar como el medio principal por el cual se organizan los socios."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:765
-msgid "Events Calendar"
-msgstr "Calendario de eventos"
-
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:766
-msgid "Integrate with The Events Calendar from ModernTribe."
-msgstr "Integre con el calendario de eventos de ModernTribe."
-
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:770
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:793
msgid "Events for Custom Mobile App"
msgstr "Eventos para la aplicación móvil personalizada"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:773
-msgid "To use your Events Calendar events in the Custom mobile app, set the Provider to Wordpress Plugin - Modern Tribe and use this url:"
-msgstr "Para usar los eventos de su calendario de eventos en la aplicación móvil personalizada, configure el proveedor en Wordpress Plugin - Modern Tribe y use esta URL:"
-
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:775
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:798
msgid "Preview"
msgstr "Preestrena"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:790
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:813
msgid "Use Standardizing Stylesheet"
msgstr "Usar hoja de estilo de estandarización"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:791
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:814
msgid "Inserts some basic CSS into the events feed to clean up display"
msgstr "Inserta algo de CSS básico en el feed de eventos para limpiar la pantalla"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:902
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:925
msgid "Divisions"
msgstr "Divisiones"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:903
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:926
msgid "Import Divisions from TouchPoint to your website as a taxonomy. These are used to classify users and involvements."
msgstr "Importe Divisiones desde TouchPoint a su sitio web como una taxonomía. Estos se utilizan para clasificar a los usuarios y las participaciones."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:907
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:930
msgid "Division Name (Plural)"
msgstr "Nombre de la División (plural)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:908
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:931
msgid "What you call Divisions at your church"
msgstr "Lo que llamas Divisiones en tu iglesia"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:919
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:942
msgid "Division Name (Singular)"
msgstr "Nombre de la División (Singular)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:920
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:943
msgid "What you call a Division at your church"
msgstr "Lo que llamas una división en tu iglesia"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:931
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:954
msgid "Division Slug"
msgstr "Slug de División"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:932
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:955
msgid "The root path for the Division Taxonomy"
msgstr "La ruta raíz para la Taxonomía de División"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:945
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:968
msgid "These Divisions will be imported for the taxonomy"
msgstr "Estas Divisiones se importarán para la taxonomía"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:996
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1019
msgid "Campuses"
msgstr "Campus"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:997
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1020
msgid "Import Campuses from TouchPoint to your website as a taxonomy. These are used to classify users and involvements."
msgstr "Importe Campus desde TouchPoint a su sitio web como una taxonomía. Estos se utilizan para clasificar a los usuarios y las participaciones."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1004
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1027
msgid "Campus Name (Plural)"
msgstr "Nombre del Campus (Plural)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1005
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1028
msgid "What you call Campuses at your church"
msgstr "Lo que llamas Campus en tu iglesia"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1016
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1039
msgid "Campus Name (Singular)"
msgstr "Nombre del Campus (Singular)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1017
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1040
msgid "What you call a Campus at your church"
msgstr "Lo que llamas un Campus en tu iglesia"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1028
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1051
msgid "Campus Slug"
msgstr "Slug de Campus"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1029
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1052
msgid "The root path for the Campus Taxonomy"
msgstr "La ruta raíz para la Taxonomía del Campus"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1045
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1068
msgid "Resident Codes"
msgstr "Códigos de Residentes"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1046
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1069
msgid "Import Resident Codes from TouchPoint to your website as a taxonomy. These are used to classify users and involvements that have locations."
msgstr "Importe Códigos de Residentes desde TouchPoint a su sitio web como una taxonomía. Estos se utilizan para clasificar los usuarios y las participaciones que tienen ubicaciones."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1050
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1073
msgid "Resident Code Name (Plural)"
msgstr "Nombre de Código de Tesidente (Plural)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1051
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1074
msgid "What you call Resident Codes at your church"
msgstr "Lo que llamas Códigos de Residente en tu iglesia"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1062
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1085
msgid "Resident Code Name (Singular)"
msgstr "Nombre de Código de Residente (singular)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1063
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1086
msgid "What you call a Resident Code at your church"
msgstr "Lo que llamas un Código de Residencia en tu iglesia"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1074
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1097
msgid "Resident Code Slug"
msgstr "Slug de Código Residente"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1075
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1098
msgid "The root path for the Resident Code Taxonomy"
msgstr "La ruta raíz para la Taxonomía del Código de Residente"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1251
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1274
msgid "password saved"
msgstr "contraseña guardada"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1305
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1306
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1328
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1329
msgid "TouchPoint-WP"
msgstr "TouchPoint-WP"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1354
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1377
msgid "Settings"
msgstr "Ajustes"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1586
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1609
msgid "Script Update Failed"
msgstr "Actualización de secuencia de comandos fallida"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1708
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1731
msgid "TouchPoint-WP Settings"
msgstr "Configuración de TouchPoint-WP"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1759
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1782
msgid "Save Settings"
msgstr "Guardar ajustes"
@@ -981,7 +970,7 @@ msgstr "Enviar"
msgid "Nothing to submit."
msgstr "Nada que enviar."
-#: src/TouchPoint-WP/TouchPointWP.php:2281
+#: src/TouchPoint-WP/TouchPointWP.php:2299
msgid "The scripts on TouchPoint that interact with this plugin are out-of-date, and an automatic update failed."
msgstr "Los scripts en TouchPoint que interactúan con este complemento están desactualizados y falló una actualización automática."
@@ -1036,16 +1025,16 @@ msgstr "OK"
msgid "Next"
msgstr "Siguiente"
-#: src/TouchPoint-WP/Involvement.php:1806
+#: src/TouchPoint-WP/Involvement.php:1807
#: src/TouchPoint-WP/Taxonomies.php:863
msgid "Marital Status"
msgstr "Estado civil"
-#: src/TouchPoint-WP/Involvement.php:1819
+#: src/TouchPoint-WP/Involvement.php:1820
msgid "Age"
msgstr "Años"
-#: src/TouchPoint-WP/Involvement.php:1690
+#: src/TouchPoint-WP/Involvement.php:1691
msgid "Genders"
msgstr "Géneros"
@@ -1163,12 +1152,12 @@ msgstr "Añade una ubicación"
msgid "The Campus"
msgstr "El campus"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:971
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:977
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:994
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1000
msgid "Locations"
msgstr "Ubicaciones"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:972
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:995
msgid "Locations are physical places, probably campuses. None are required, but they can help present geographic information clearly."
msgstr "Las ubicaciones son lugares físicos, probablemente campus. No se requiere ninguno, pero pueden ayudar a presentar la información geográfica con claridad."
@@ -1207,76 +1196,76 @@ msgctxt "Time of Day"
msgid "Night"
msgstr "Noche"
-#: src/TouchPoint-WP/Involvement.php:1807
+#: src/TouchPoint-WP/Involvement.php:1808
msgctxt "Marital status for a group of people"
msgid "Mostly Single"
msgstr "Mayoría solteras"
-#: src/TouchPoint-WP/Involvement.php:1808
+#: src/TouchPoint-WP/Involvement.php:1809
msgctxt "Marital status for a group of people"
msgid "Mostly Married"
msgstr "Mayoría casadas"
#. translators: %s is the link to "reset the map"
-#: src/TouchPoint-WP/Involvement.php:1849
+#: src/TouchPoint-WP/Involvement.php:1850
#: src/TouchPoint-WP/Partner.php:850
msgid "Zoom out or %s to see more."
msgstr "Alejar o %s para ver más."
-#: src/TouchPoint-WP/Involvement.php:1852
+#: src/TouchPoint-WP/Involvement.php:1853
#: src/TouchPoint-WP/Partner.php:853
msgctxt "Zoom out or reset the map to see more."
msgid "reset the map"
msgstr "restablecer el mapa"
#. translators: %1$s is the date(s), %2$s is the time(s).
-#: src/TouchPoint-WP/Involvement.php:930
-#: src/TouchPoint-WP/Involvement.php:959
-#: src/TouchPoint-WP/Involvement.php:1034
-#: src/TouchPoint-WP/Involvement.php:1056
+#: src/TouchPoint-WP/Involvement.php:931
+#: src/TouchPoint-WP/Involvement.php:960
+#: src/TouchPoint-WP/Involvement.php:1035
+#: src/TouchPoint-WP/Involvement.php:1057
#: src/TouchPoint-WP/Utilities/DateFormats.php:265
#: src/TouchPoint-WP/Utilities/DateFormats.php:328
msgid "%1$s at %2$s"
msgstr "%1$s a las %2$s"
#. translators: {start date} through {end date} e.g. February 14 through August 12
-#: src/TouchPoint-WP/Involvement.php:968
+#: src/TouchPoint-WP/Involvement.php:969
msgid "%1$s through %2$s"
msgstr "%1$s al %2$s"
#. translators: {schedule}, {start date} through {end date} e.g. Sundays at 11am, February 14 through August 12
-#: src/TouchPoint-WP/Involvement.php:975
+#: src/TouchPoint-WP/Involvement.php:976
msgid "%1$s, %2$s through %3$s"
msgstr "%1$s, %2$s al %3$s"
#. translators: Starts {start date} e.g. Starts September 15
-#: src/TouchPoint-WP/Involvement.php:985
+#: src/TouchPoint-WP/Involvement.php:986
msgid "Starts %1$s"
msgstr "Comienza el %1$s"
#. translators: {schedule}, starting {start date} e.g. Sundays at 11am, starting February 14
-#: src/TouchPoint-WP/Involvement.php:991
+#: src/TouchPoint-WP/Involvement.php:992
msgid "%1$s, starting %2$s"
msgstr "%1$s, comienza el %2$s"
#. translators: Through {end date} e.g. Through September 15
-#: src/TouchPoint-WP/Involvement.php:1000
+#: src/TouchPoint-WP/Involvement.php:1001
msgid "Through %1$s"
msgstr "Hasta el %1$s"
#. translators: {schedule}, through {end date} e.g. Sundays at 11am, through February 14
-#: src/TouchPoint-WP/Involvement.php:1006
+#: src/TouchPoint-WP/Involvement.php:1007
msgid "%1$s, through %2$s"
msgstr "%1$s, hasta el %2$s"
#. translators: number of miles
#: src/templates/parts/involvement-nearby-list.php:10
-#: src/TouchPoint-WP/Involvement.php:3480
+#: src/TouchPoint-WP/Involvement.php:3481
msgctxt "miles. Unit is appended to a number. %2.1f is the number, so %2.1fmi looks like '12.3mi'"
msgid "%2.1fmi"
msgstr "%2.1fmi"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:371
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:372
msgid "The username of a user account in TouchPoint with API permissions. It is strongly recommended that you create a separate person/user for this purpose, rather than using a staff member's account."
msgstr "El nombre de usuario de una cuenta de usuario en TouchPoint con permisos API. Se recomienda encarecidamente que cree una persona/usuario independiente para este fin, en lugar de utilizar la cuenta de un miembro del personal."
@@ -1288,39 +1277,39 @@ msgstr "La participación tiene un tipo de registro de \"No Online Registration\
msgid "Involvement registration has ended (end date is past)"
msgstr "El registro de participación ha finalizado (la fecha de finalización ya pasó)"
-#: src/TouchPoint-WP/Involvement.php:1945
+#: src/TouchPoint-WP/Involvement.php:1946
msgid "This involvement type doesn't exist."
msgstr "Este tipo de participación no existe."
-#: src/TouchPoint-WP/Involvement.php:1955
+#: src/TouchPoint-WP/Involvement.php:1956
msgid "This involvement type doesn't have geographic locations enabled."
msgstr "Este tipo de participación no tiene habilitadas las ubicaciones geográficas."
-#: src/TouchPoint-WP/Involvement.php:1974
+#: src/TouchPoint-WP/Involvement.php:1975
msgid "Could not locate."
msgstr "No se pudo localizar."
-#: src/TouchPoint-WP/Meeting.php:483
+#: src/TouchPoint-WP/Meeting.php:526
#: src/TouchPoint-WP/TouchPointWP.php:969
msgid "Only GET requests are allowed."
msgstr "Solo se permiten solicitudes GET."
-#: src/TouchPoint-WP/Meeting.php:511
+#: src/TouchPoint-WP/Meeting.php:554
#: src/TouchPoint-WP/TouchPointWP.php:353
msgid "Only POST requests are allowed."
msgstr "Solo se permiten solicitudes POST."
-#: src/TouchPoint-WP/Meeting.php:521
+#: src/TouchPoint-WP/Meeting.php:564
#: src/TouchPoint-WP/TouchPointWP.php:362
msgid "Invalid data provided."
msgstr "Datos proporcionados no válidos."
-#: src/TouchPoint-WP/Involvement.php:3725
-#: src/TouchPoint-WP/Involvement.php:3822
+#: src/TouchPoint-WP/Involvement.php:3726
+#: src/TouchPoint-WP/Involvement.php:3823
msgid "Invalid Post Type."
msgstr "Tipo de publicación no válida."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:323
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:324
msgid "Enable Campuses"
msgstr "Habilitar Campus"
@@ -1385,7 +1374,7 @@ msgstr "Estados Civiles"
msgid "Classify Partners by category chosen in settings."
msgstr "Clasifique a los ministeriales por categoría elegida en la configuración."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:324
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:325
msgid "Import campuses as a taxonomy. (You probably want to do this if you're multi-campus.)"
msgstr "Importar campus como taxonomía. (Probablemente quieras hacer esto si tienes varios campus)."
@@ -1436,7 +1425,7 @@ msgstr "Actualizada %1$s %2$s"
msgid "Every 15 minutes"
msgstr "Cada 15 minutos"
-#: src/TouchPoint-WP/Involvement.php:1733
+#: src/TouchPoint-WP/Involvement.php:1734
msgid "Language"
msgstr "Idioma"
@@ -1453,11 +1442,11 @@ msgctxt "list of people, and *others*"
msgid "others"
msgstr "otros"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:803
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:826
msgid "Meeting Calendars"
msgstr "Calendarios de Reuniones"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:804
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:827
msgid "Import Meetings from TouchPoint to a calendar on your website."
msgstr "Importe reuniones desde TouchPoint a un calendario en su sitio web."
@@ -1465,44 +1454,44 @@ msgstr "Importe reuniones desde TouchPoint a un calendario en su sitio web."
msgid "Import All Meetings to Calendar"
msgstr "Importe reuniones a los calendarios"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:832
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:855
msgid "Meetings Slug"
msgstr "Slug de reuniones"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:833
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:856
msgid "The root path for Meetings"
msgstr "La ruta raíz para las reuniones"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:884
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:907
msgid "Meeting Deletion Handling"
msgstr "Manejo de eliminación de reuniones"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:885
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:908
msgid "When a Meeting is deleted in TouchPoint that has already been imported to WordPress, how should that be handled?"
msgstr "Cuando se elimina una reunión en TouchPoint que ya se ha importado a WordPress, ¿cómo se debe manejar?"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:891
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:914
msgid "Always delete from WordPress"
msgstr "Eliminar siempre de WordPress"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:892
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:915
msgid "Mark the occurrence as cancelled"
msgstr "Marcar la ocurrencia como cancelada"
-#: src/TouchPoint-WP/Involvement.php:3809
+#: src/TouchPoint-WP/Involvement.php:3810
#: src/TouchPoint-WP/Person.php:1821
msgid "Contact Prohibited."
msgstr "Contacto prohibido."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:521
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:522
msgid "By checking this box, the TouchPoint login page will become the default. To prevent the redirect and reach the standard WordPress login page, add 'tp_no_redirect' as a URL parameter."
msgstr "Al marcar esta casilla, la página de inicio de sesión de TouchPoint se convertirá en la predeterminada. Para evitar la redirección y llegar a la página de inicio de sesión estándar de WordPress, agregue 'tp_no_redirect' como parámetro de URL."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:359
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:360
msgid "The domain for your mobile app deeplinks, without the https or any slashes. If you aren't using the custom mobile app, leave this blank."
msgstr "El dominio de los enlaces profundos de su aplicación móvil, sin https ni barras diagonales. Si no está utilizando la aplicación móvil personalizada, déjelo en blanco."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:441
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:442
msgid "Once your settings on this page are set and saved, use this tool to generate the scripts needed for TouchPoint in a convenient installation package."
msgstr "Una vez que haya configurado y guardado la configuración en esta página, utilice esta herramienta para generar los scripts necesarios para TouchPoint en un paquete de instalación conveniente."
@@ -1514,7 +1503,7 @@ msgstr "Algo salió mal."
msgid "You may need to sign in."
msgstr "Es posible que tengas que iniciar sesión."
-#: src/TouchPoint-WP/Involvement.php:3799
+#: src/TouchPoint-WP/Involvement.php:3800
#: src/TouchPoint-WP/Person.php:1838
msgid "Contact Blocked for Spam."
msgstr "Contacto bloqueado por spam."
@@ -1534,48 +1523,48 @@ msgctxt "What Meetings should be called, singular."
msgid "Event"
msgstr "Evento"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:290
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:291
msgid "Enable Meeting Calendar"
msgstr "Habilitar calendario de reuniones"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:291
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:292
msgid "Load Meetings from TouchPoint for a calendar, native in your website."
msgstr "Cargue reuniones desde TouchPoint para un calendario nativo en su sitio web."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:845
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:868
msgid "Days of Future"
msgstr "Días del futuro"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:846
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:869
msgid "Meetings more than this many days in the future will not be imported."
msgstr "No se importarán reuniones que superen estos días en el futuro."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:858
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:881
msgid "Archive After Days"
msgstr "Archivo después de días"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:859
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:882
msgid "Meetings more than this many days in the past will be moved to the Events Archive. Once this date passes, meeting information will no longer update."
msgstr "Las reuniones que hayan transcurrido más de esta cantidad de días pasados se trasladarán al Archivo de eventos. Una vez que pase esta fecha, la información de la reunión ya no se actualizará."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:871
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:894
msgid "Days of History"
msgstr "Días de la Historia"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:872
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:895
msgid "Meetings will be kept for the public calendar until the event is this many days in the past."
msgstr "Las reuniones se mantendrán para el calendario público hasta que hayan transcurrido tantos días desde el evento."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:956
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1087
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:979
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1110
msgid "Post Types"
msgstr "Tipos de publicaciones"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:957
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:980
msgid "Select post types which should have Divisions available as a native taxonomy."
msgstr "Seleccione los tipos de publicaciones que deberían tener Divisiones disponibles como taxonomía nativa."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1088
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1111
msgid "Select post types which should have Resident Codes available as a native taxonomy."
msgstr "Seleccione los tipos de publicaciones que deberían tener códigos de residente disponibles como taxonomía nativa."
@@ -1602,11 +1591,11 @@ msgstr "(persona nombrada)"
msgid "Expand"
msgstr "Ampliar"
-#: src/TouchPoint-WP/Meeting.php:403
+#: src/TouchPoint-WP/Meeting.php:446
msgid "Cancelled"
msgstr "Cancelado"
-#: src/TouchPoint-WP/Meeting.php:404
+#: src/TouchPoint-WP/Meeting.php:447
msgid "Scheduled"
msgstr "Programado"
@@ -1640,16 +1629,16 @@ msgid "%s is cancelled."
msgstr "%s esta cancelado."
#. Translators: %s is the system name. "TouchPoint" by default.
-#: src/TouchPoint-WP/Involvement.php:3557
+#: src/TouchPoint-WP/Involvement.php:3558
msgid "Involvement in %s"
msgstr "Participaciones en %s"
-#: src/TouchPoint-WP/Meeting.php:288
+#: src/TouchPoint-WP/Meeting.php:331
msgid "In the Past"
msgstr "en el pasado"
#. Translators: %s is the system name. "TouchPoint" by default.
-#: src/TouchPoint-WP/Meeting.php:348
+#: src/TouchPoint-WP/Meeting.php:391
msgid "Meeting in %s"
msgstr "Reunión en %s"
@@ -1658,39 +1647,39 @@ msgstr "Reunión en %s"
msgid "Person in %s"
msgstr "Persona en %s"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:808
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:831
msgid "Meeting Name (Plural)"
msgstr "Nombre de las reuniones (singular)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:809
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:832
msgid "What you call Meetings at your church"
msgstr "Lo que llamas Reuniones en tu iglesia"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:814
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:816
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:837
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:839
msgid "Meetings"
msgstr "Reuniones"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:814
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:816
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:837
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:839
msgid "Events"
msgstr "Eventos"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:820
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:843
msgid "Meeting Name (Singular)"
msgstr "Nombre de la reunión (singular)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:821
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:844
msgid "What you call a Meeting at your church"
msgstr "Cómo se llama una Reunión en tu iglesia"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:826
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:828
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:849
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:851
msgid "Meeting"
msgstr "Reunión"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:826
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:828
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:849
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:851
msgid "Event"
msgstr "Evento"
@@ -1714,7 +1703,7 @@ msgctxt "Date string when the year is not current."
msgid "F j, Y"
msgstr "j F Y"
-#: src/TouchPoint-WP/Meeting.php:405
+#: src/TouchPoint-WP/Meeting.php:448
msgctxt "Event Status is not a recognized value."
msgid "Unknown"
msgstr "desconocido"
@@ -1724,8 +1713,8 @@ msgid "Creating an Involvement object from an object without a post_id is not ye
msgstr "Aún no se admite la creación de un objeto de participación a partir de un objeto sin post_id."
#. translators: "Mon All Day" or "Sundays All Day"
-#: src/TouchPoint-WP/Involvement.php:933
-#: src/TouchPoint-WP/Involvement.php:954
+#: src/TouchPoint-WP/Involvement.php:934
+#: src/TouchPoint-WP/Involvement.php:955
msgid "%1$s All Day"
msgstr "todo el dia los %1$s"
@@ -1796,3 +1785,31 @@ msgstr "No hay %s publicados para este mes."
#: src/templates/admin/locationsKoForm.php:43
msgid "Radius (miles)"
msgstr "Radio (millas)"
+
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:767
+msgid "Events Calendar plugin by Modern Tribe"
+msgstr "Complemento de calendario de eventos de Modern Tribe"
+
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:771
+msgid "TouchPoint Meetings"
+msgstr "reuniones de TouchPoint"
+
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:777
+msgid "App 2.0 Calendar"
+msgstr "Calendario de la app 2.0"
+
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:782
+msgid "Events Provider"
+msgstr "Proveedor de eventos"
+
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:783
+msgid "The source of events for version 2.0 of the Custom Mobile App."
+msgstr "El origen de los eventos para la versión 2.0 de la aplicación móvil personalizada."
+
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:796
+msgid "To use your Events Calendar events in the Custom mobile app, set the Provider to Wordpress Plugin - Modern Tribe (regardless of which provider you're using above) and use this url:"
+msgstr "Para usar sus eventos del Calendario de eventos en la aplicación móvil personalizada, configure el Proveedor en Wordpress Plugin - Modern Tribe (independientemente del proveedor que esté utilizando anteriormente) y use esta URL:"
+
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:778
+msgid "Integrate Custom Mobile app version 2.0 with The Events Calendar from Modern Tribe."
+msgstr "Integre la versión 2.0 de la aplicación móvil personalizada con el calendario de eventos de Modern Tribe."
diff --git a/i18n/TouchPoint-WP.pot b/i18n/TouchPoint-WP.pot
index 54d77df8..66f3df54 100644
--- a/i18n/TouchPoint-WP.pot
+++ b/i18n/TouchPoint-WP.pot
@@ -9,7 +9,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"POT-Creation-Date: 2024-06-25T14:43:31+00:00\n"
+"POT-Creation-Date: 2024-06-26T02:35:11+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"X-Generator: WP-CLI 2.10.0\n"
"X-Domain: TouchPoint-WP\n"
@@ -58,7 +58,7 @@ msgid "Slug"
msgstr ""
#: src/templates/admin/invKoForm.php:47
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:944
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:967
msgid "Divisions to Import"
msgstr ""
@@ -122,7 +122,7 @@ msgstr ""
#: src/templates/admin/invKoForm.php:141
#: src/templates/admin/invKoForm.php:268
#: src/templates/parts/involvement-nearby-list.php:2
-#: src/TouchPoint-WP/Meeting.php:551
+#: src/TouchPoint-WP/Meeting.php:594
#: src/TouchPoint-WP/Rsvp.php:75
#: assets/js/base-defer.js:192
#: assets/js/base-defer.js:1133
@@ -158,13 +158,13 @@ msgid "Gender"
msgstr ""
#: src/templates/admin/invKoForm.php:188
-#: src/TouchPoint-WP/Involvement.php:1758
+#: src/TouchPoint-WP/Involvement.php:1759
#: src/TouchPoint-WP/Taxonomies.php:744
msgid "Weekday"
msgstr ""
#: src/templates/admin/invKoForm.php:192
-#: src/TouchPoint-WP/Involvement.php:1784
+#: src/TouchPoint-WP/Involvement.php:1785
#: src/TouchPoint-WP/Taxonomies.php:802
msgid "Time of Day"
msgstr ""
@@ -254,7 +254,7 @@ msgstr ""
#. translators: %s will be the plural post type (e.g. Small Groups)
#: src/templates/parts/involvement-list-none.php:16
-#: src/TouchPoint-WP/Involvement.php:2004
+#: src/TouchPoint-WP/Involvement.php:2005
msgid "No %s Found."
msgstr ""
@@ -265,7 +265,7 @@ msgstr ""
#. translators: number of miles
#: src/templates/parts/involvement-nearby-list.php:10
-#: src/TouchPoint-WP/Involvement.php:3480
+#: src/TouchPoint-WP/Involvement.php:3481
msgctxt "miles. Unit is appended to a number. %2.1f is the number, so %2.1fmi looks like '12.3mi'"
msgid "%2.1fmi"
msgstr ""
@@ -297,11 +297,12 @@ msgstr ""
msgid "There are no %s published for this month."
msgstr ""
-#: src/TouchPoint-WP/EventsCalendar.php:61
+#: src/TouchPoint-WP/EventsCalendar.php:80
msgid "Recurring"
msgstr ""
-#: src/TouchPoint-WP/EventsCalendar.php:64
+#: src/TouchPoint-WP/EventsCalendar.php:83
+#: src/TouchPoint-WP/EventsCalendar.php:293
msgid "Multi-Day"
msgstr ""
@@ -326,180 +327,180 @@ msgid "Registration Closed"
msgstr ""
#. translators: %1$s is the date(s), %2$s is the time(s).
-#: src/TouchPoint-WP/Involvement.php:930
-#: src/TouchPoint-WP/Involvement.php:959
-#: src/TouchPoint-WP/Involvement.php:1034
-#: src/TouchPoint-WP/Involvement.php:1056
+#: src/TouchPoint-WP/Involvement.php:931
+#: src/TouchPoint-WP/Involvement.php:960
+#: src/TouchPoint-WP/Involvement.php:1035
+#: src/TouchPoint-WP/Involvement.php:1057
#: src/TouchPoint-WP/Utilities/DateFormats.php:265
#: src/TouchPoint-WP/Utilities/DateFormats.php:328
msgid "%1$s at %2$s"
msgstr ""
#. translators: "Mon All Day" or "Sundays All Day"
-#: src/TouchPoint-WP/Involvement.php:933
-#: src/TouchPoint-WP/Involvement.php:954
+#: src/TouchPoint-WP/Involvement.php:934
+#: src/TouchPoint-WP/Involvement.php:955
msgid "%1$s All Day"
msgstr ""
#. translators: {start date} through {end date} e.g. February 14 through August 12
-#: src/TouchPoint-WP/Involvement.php:968
+#: src/TouchPoint-WP/Involvement.php:969
msgid "%1$s through %2$s"
msgstr ""
#. translators: {schedule}, {start date} through {end date} e.g. Sundays at 11am, February 14 through August 12
-#: src/TouchPoint-WP/Involvement.php:975
+#: src/TouchPoint-WP/Involvement.php:976
msgid "%1$s, %2$s through %3$s"
msgstr ""
#. translators: Starts {start date} e.g. Starts September 15
-#: src/TouchPoint-WP/Involvement.php:985
+#: src/TouchPoint-WP/Involvement.php:986
msgid "Starts %1$s"
msgstr ""
#. translators: {schedule}, starting {start date} e.g. Sundays at 11am, starting February 14
-#: src/TouchPoint-WP/Involvement.php:991
+#: src/TouchPoint-WP/Involvement.php:992
msgid "%1$s, starting %2$s"
msgstr ""
#. translators: Through {end date} e.g. Through September 15
-#: src/TouchPoint-WP/Involvement.php:1000
+#: src/TouchPoint-WP/Involvement.php:1001
msgid "Through %1$s"
msgstr ""
#. translators: {schedule}, through {end date} e.g. Sundays at 11am, through February 14
-#: src/TouchPoint-WP/Involvement.php:1006
+#: src/TouchPoint-WP/Involvement.php:1007
msgid "%1$s, through %2$s"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1633
+#: src/TouchPoint-WP/Involvement.php:1634
#: src/TouchPoint-WP/Partner.php:810
msgid "Any"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1690
+#: src/TouchPoint-WP/Involvement.php:1691
msgid "Genders"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1733
+#: src/TouchPoint-WP/Involvement.php:1734
msgid "Language"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1806
+#: src/TouchPoint-WP/Involvement.php:1807
#: src/TouchPoint-WP/Taxonomies.php:863
msgid "Marital Status"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1807
+#: src/TouchPoint-WP/Involvement.php:1808
msgctxt "Marital status for a group of people"
msgid "Mostly Single"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1808
+#: src/TouchPoint-WP/Involvement.php:1809
msgctxt "Marital status for a group of people"
msgid "Mostly Married"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1819
+#: src/TouchPoint-WP/Involvement.php:1820
msgid "Age"
msgstr ""
#. translators: %s is for the user-provided term for the items on the map (e.g. Small Group or Partner)
-#: src/TouchPoint-WP/Involvement.php:1841
+#: src/TouchPoint-WP/Involvement.php:1842
#: src/TouchPoint-WP/Partner.php:834
msgid "The %s listed are only those shown on the map."
msgstr ""
#. translators: %s is the link to "reset the map"
-#: src/TouchPoint-WP/Involvement.php:1849
+#: src/TouchPoint-WP/Involvement.php:1850
#: src/TouchPoint-WP/Partner.php:850
msgid "Zoom out or %s to see more."
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1852
+#: src/TouchPoint-WP/Involvement.php:1853
#: src/TouchPoint-WP/Partner.php:853
msgctxt "Zoom out or reset the map to see more."
msgid "reset the map"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1945
+#: src/TouchPoint-WP/Involvement.php:1946
msgid "This involvement type doesn't exist."
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1955
+#: src/TouchPoint-WP/Involvement.php:1956
msgid "This involvement type doesn't have geographic locations enabled."
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1974
+#: src/TouchPoint-WP/Involvement.php:1975
msgid "Could not locate."
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3459
+#: src/TouchPoint-WP/Involvement.php:3460
msgid "Men Only"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3462
+#: src/TouchPoint-WP/Involvement.php:3463
msgid "Women Only"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3533
+#: src/TouchPoint-WP/Involvement.php:3534
msgid "Contact Leaders"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3545
+#: src/TouchPoint-WP/Involvement.php:3546
#: src/TouchPoint-WP/Partner.php:1314
msgid "Show on Map"
msgstr ""
#. Translators: %s is the system name. "TouchPoint" by default.
-#: src/TouchPoint-WP/Involvement.php:3557
+#: src/TouchPoint-WP/Involvement.php:3558
msgid "Involvement in %s"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3596
-#: src/TouchPoint-WP/Involvement.php:3632
+#: src/TouchPoint-WP/Involvement.php:3597
+#: src/TouchPoint-WP/Involvement.php:3633
msgid "Register"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3601
+#: src/TouchPoint-WP/Involvement.php:3602
msgid "Create Account"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3605
+#: src/TouchPoint-WP/Involvement.php:3606
msgid "Schedule"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3610
+#: src/TouchPoint-WP/Involvement.php:3611
msgid "Give"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3613
+#: src/TouchPoint-WP/Involvement.php:3614
msgid "Manage Subscriptions"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3616
+#: src/TouchPoint-WP/Involvement.php:3617
msgid "Record Attendance"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3619
+#: src/TouchPoint-WP/Involvement.php:3620
msgid "Get Tickets"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3627
+#: src/TouchPoint-WP/Involvement.php:3628
#: assets/js/base-defer.js:1001
msgid "Join"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3725
-#: src/TouchPoint-WP/Involvement.php:3822
+#: src/TouchPoint-WP/Involvement.php:3726
+#: src/TouchPoint-WP/Involvement.php:3823
msgid "Invalid Post Type."
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3799
+#: src/TouchPoint-WP/Involvement.php:3800
#: src/TouchPoint-WP/Person.php:1838
msgid "Contact Blocked for Spam."
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3809
+#: src/TouchPoint-WP/Involvement.php:3810
#: src/TouchPoint-WP/Person.php:1821
msgid "Contact Prohibited."
msgstr ""
@@ -513,44 +514,44 @@ msgctxt "What Meetings should be called, singular."
msgid "Event"
msgstr ""
-#: src/TouchPoint-WP/Meeting.php:288
+#: src/TouchPoint-WP/Meeting.php:331
msgid "In the Past"
msgstr ""
#. Translators: %s is the system name. "TouchPoint" by default.
-#: src/TouchPoint-WP/Meeting.php:348
+#: src/TouchPoint-WP/Meeting.php:391
msgid "Meeting in %s"
msgstr ""
-#: src/TouchPoint-WP/Meeting.php:403
+#: src/TouchPoint-WP/Meeting.php:446
msgid "Cancelled"
msgstr ""
-#: src/TouchPoint-WP/Meeting.php:404
+#: src/TouchPoint-WP/Meeting.php:447
msgid "Scheduled"
msgstr ""
-#: src/TouchPoint-WP/Meeting.php:405
+#: src/TouchPoint-WP/Meeting.php:448
msgctxt "Event Status is not a recognized value."
msgid "Unknown"
msgstr ""
-#: src/TouchPoint-WP/Meeting.php:483
+#: src/TouchPoint-WP/Meeting.php:526
#: src/TouchPoint-WP/TouchPointWP.php:969
msgid "Only GET requests are allowed."
msgstr ""
-#: src/TouchPoint-WP/Meeting.php:511
+#: src/TouchPoint-WP/Meeting.php:554
#: src/TouchPoint-WP/TouchPointWP.php:353
msgid "Only POST requests are allowed."
msgstr ""
-#: src/TouchPoint-WP/Meeting.php:521
+#: src/TouchPoint-WP/Meeting.php:564
#: src/TouchPoint-WP/TouchPointWP.php:362
msgid "Invalid data provided."
msgstr ""
-#: src/TouchPoint-WP/Meeting.php:550
+#: src/TouchPoint-WP/Meeting.php:593
#: src/TouchPoint-WP/Rsvp.php:80
msgid "RSVP"
msgstr ""
@@ -708,659 +709,675 @@ msgstr ""
msgid "Every 15 minutes"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:1928
+#: src/TouchPoint-WP/TouchPointWP.php:1946
msgid "Unknown Type"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:1985
+#: src/TouchPoint-WP/TouchPointWP.php:2003
msgid "Your Searches"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:1988
+#: src/TouchPoint-WP/TouchPointWP.php:2006
msgid "Public Searches"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:1991
+#: src/TouchPoint-WP/TouchPointWP.php:2009
msgid "Status Flags"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:1996
-#: src/TouchPoint-WP/TouchPointWP.php:1997
+#: src/TouchPoint-WP/TouchPointWP.php:2014
+#: src/TouchPoint-WP/TouchPointWP.php:2015
msgid "Current Value"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2114
-#: src/TouchPoint-WP/TouchPointWP.php:2150
+#: src/TouchPoint-WP/TouchPointWP.php:2132
+#: src/TouchPoint-WP/TouchPointWP.php:2168
msgid "Invalid or incomplete API Settings."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2164
-#: src/TouchPoint-WP/TouchPointWP.php:2208
+#: src/TouchPoint-WP/TouchPointWP.php:2182
+#: src/TouchPoint-WP/TouchPointWP.php:2226
msgid "Host appears to be missing from TouchPoint-WP configuration."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2281
+#: src/TouchPoint-WP/TouchPointWP.php:2299
msgid "The scripts on TouchPoint that interact with this plugin are out-of-date, and an automatic update failed."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2340
+#: src/TouchPoint-WP/TouchPointWP.php:2358
msgid "People Query Failed"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:254
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:255
msgid "Basic Settings"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:255
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:256
msgid "Connect to TouchPoint and choose which features you wish to use."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:259
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:260
msgid "Enable Authentication"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:260
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:261
msgid "Allow TouchPoint users to sign into this website with TouchPoint."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:271
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:272
msgid "Enable RSVP Tool"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:272
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:273
msgid "Add a crazy-simple RSVP button to WordPress event pages."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:279
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:280
msgid "Enable Involvements"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:280
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:281
msgid "Load Involvements from TouchPoint for involvement listings and entries native in your website."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:290
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:291
msgid "Enable Meeting Calendar"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:291
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:292
msgid "Load Meetings from TouchPoint for a calendar, native in your website."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:301
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:302
msgid "Enable Public People Lists"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:302
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:303
msgid "Import public people listings from TouchPoint (e.g. staff or elders)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:312
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:313
msgid "Enable Global Partner Listings"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:313
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:314
msgid "Import ministry partners from TouchPoint to list publicly."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:323
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:324
msgid "Enable Campuses"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:324
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:325
msgid "Import campuses as a taxonomy. (You probably want to do this if you're multi-campus.)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:334
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:335
msgid "Display Name"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:335
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:336
msgid "What your church calls your TouchPoint database."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:345
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:346
msgid "TouchPoint Host Name"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:346
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:347
msgid "The domain for your TouchPoint database, without the https or any slashes."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:358
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:359
msgid "Custom Mobile App Deeplink Host Name"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:359
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:360
msgid "The domain for your mobile app deeplinks, without the https or any slashes. If you aren't using the custom mobile app, leave this blank."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:370
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:371
msgid "TouchPoint API Username"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:371
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:372
msgid "The username of a user account in TouchPoint with API permissions. It is strongly recommended that you create a separate person/user for this purpose, rather than using a staff member's account."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:382
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:383
msgid "TouchPoint API User Password"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:383
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:384
msgid "The password of a user account in TouchPoint with API permissions."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:395
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:396
msgid "TouchPoint API Script Name"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:396
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:397
msgid "The name of the Python script loaded into TouchPoint. Don't change this unless you know what you're doing."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:407
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:408
msgid "Google Maps Javascript API Key"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:408
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:409
msgid "Required for embedding maps."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:419
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:420
msgid "Google Maps Geocoding API Key"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:420
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:421
msgid "Optional. Allows for reverse geocoding of user locations."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:438
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:443
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:439
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:444
msgid "Generate Scripts"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:441
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:442
msgid "Once your settings on this page are set and saved, use this tool to generate the scripts needed for TouchPoint in a convenient installation package."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:442
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:443
msgid "Upload the package to {tpName} here"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:459
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:460
msgid "People"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:460
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:461
msgid "Manage how people are synchronized between TouchPoint and WordPress."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:464
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:465
msgid "Contact Keywords"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:465
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:466
msgid "These keywords will be used when someone clicks the \"Contact\" button on a Person's listing or profile."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:476
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:477
msgid "Extra Value for WordPress User ID"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:477
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:478
msgid "The name of the extra value to use for the WordPress User ID. If you are using multiple WordPress instances with one TouchPoint database, you will need these values to be unique between WordPress instances. In most cases, the default is fine."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:487
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:488
msgid "Extra Value: Biography"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:488
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:489
msgid "Import a Bio from a Person Extra Value field. Can be an HTML or Text Extra Value. This will overwrite any values set by WordPress. Leave blank to not import."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:498
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:736
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:499
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:737
msgid "Extra Values to Import"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:499
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:500
msgid "Import People Extra Value fields as User Meta data."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:515
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:516
msgid "Authentication"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:516
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:517
msgid "Allow users to log into WordPress using TouchPoint."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:520
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:521
msgid "Make TouchPoint the default authentication method."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:521
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:522
msgid "By checking this box, the TouchPoint login page will become the default. To prevent the redirect and reach the standard WordPress login page, add 'tp_no_redirect' as a URL parameter."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:530
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:531
msgid "Enable Auto-Provisioning"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:531
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:532
msgid "Automatically create WordPress users, if needed, to match authenticated TouchPoint users."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:540
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:541
msgid "Change 'Edit Profile' links"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:541
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:542
msgid "\"Edit Profile\" links will take the user to their TouchPoint profile, instead of their WordPress profile."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:550
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:551
msgid "Enable full logout"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:551
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:552
msgid "Logout of TouchPoint when logging out of WordPress."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:557
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:558
msgid "Prevent Subscriber Admin Bar"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:558
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:559
msgid "By enabling this option, users who can't edit anything won't see the Admin bar."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:572
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:573
msgid "Involvements"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:573
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:574
msgid "Import Involvements from TouchPoint to list them on your website, for Small Groups, Classes, and more. Select the division(s) that immediately correspond to the type of Involvement you want to list. For example, if you want a Small Group list and have a Small Group Division, only select the Small Group Division. If you want Involvements to be filterable by additional Divisions, select those Divisions on the Divisions tab, not here."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:578
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:579
msgid "Involvement Post Types"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:608
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:609
msgid "Global Partners"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:609
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:610
msgid "Manage how global partners are imported from TouchPoint for listing on WordPress. Partners are grouped by family, and content is provided through Family Extra Values. This works for both People and Business records."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:613
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:614
msgid "Global Partner Name (Plural)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:614
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:615
msgid "What you call Global Partners at your church"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:624
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:625
msgid "Global Partner Name (Singular)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:625
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:626
msgid "What you call a Global Partner at your church"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:635
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:636
msgid "Global Partner Name for Secure Places (Plural)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:636
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:637
msgid "What you call Secure Global Partners at your church"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:646
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:647
msgid "Global Partner Name for Secure Places (Singular)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:647
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:648
msgid "What you call a Secure Global Partner at your church"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:657
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:658
msgid "Global Partner Slug"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:658
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:659
msgid "The root path for Global Partner posts"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:670
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:671
msgid "Saved Search"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:671
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:672
msgid "Anyone who is included in this saved search will be included in the listing."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:681
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:682
msgid "Extra Value: Description"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:682
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:683
msgid "Import a description from a Family Extra Value field. Can be an HTML or Text Extra Value. This becomes the body of the Global Partner post."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:692
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:693
msgid "Extra Value: Summary"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:693
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:694
msgid "Optional. Import a short description from a Family Extra Value field. Can be an HTML or Text Extra Value. If not provided, the full bio will be truncated."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:703
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:704
msgid "Latitude Override"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:704
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:705
msgid "Designate a text Family Extra Value that will contain a latitude that overrides any locations on the partner's profile for the partner map. Both latitude and longitude must be provided for an override to take place."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:714
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:715
msgid "Longitude Override"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:715
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:716
msgid "Designate a text Family Extra Value that will contain a longitude that overrides any locations on the partner's profile for the partner map. Both latitude and longitude must be provided for an override to take place."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:725
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:726
msgid "Public Location"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:726
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:727
msgid "Designate a text Family Extra Value that will contain the partner's location, as you want listed publicly. For partners who have DecoupleLocation enabled, this field will be associated with the map point, not the list entry."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:737
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:738
msgid "Import Family Extra Value fields as Meta data on the partner's post"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:748
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:749
msgid "Primary Taxonomy"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:749
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:750
msgid "Import a Family Extra Value as the primary means by which partners are organized."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:765
-msgid "Events Calendar"
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:767
+msgid "Events Calendar plugin by Modern Tribe"
+msgstr ""
+
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:771
+msgid "TouchPoint Meetings"
+msgstr ""
+
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:777
+msgid "App 2.0 Calendar"
+msgstr ""
+
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:778
+msgid "Integrate Custom Mobile app version 2.0 with The Events Calendar from Modern Tribe."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:766
-msgid "Integrate with The Events Calendar from ModernTribe."
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:782
+msgid "Events Provider"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:770
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:783
+msgid "The source of events for version 2.0 of the Custom Mobile App."
+msgstr ""
+
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:793
msgid "Events for Custom Mobile App"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:773
-msgid "To use your Events Calendar events in the Custom mobile app, set the Provider to Wordpress Plugin - Modern Tribe and use this url:"
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:796
+msgid "To use your Events Calendar events in the Custom mobile app, set the Provider to Wordpress Plugin - Modern Tribe (regardless of which provider you're using above) and use this url:"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:775
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:798
msgid "Preview"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:790
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:813
msgid "Use Standardizing Stylesheet"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:791
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:814
msgid "Inserts some basic CSS into the events feed to clean up display"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:803
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:826
msgid "Meeting Calendars"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:804
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:827
msgid "Import Meetings from TouchPoint to a calendar on your website."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:808
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:831
msgid "Meeting Name (Plural)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:809
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:832
msgid "What you call Meetings at your church"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:814
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:816
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:837
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:839
msgid "Meetings"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:814
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:816
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:837
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:839
msgid "Events"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:820
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:843
msgid "Meeting Name (Singular)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:821
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:844
msgid "What you call a Meeting at your church"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:826
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:828
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:849
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:851
msgid "Meeting"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:826
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:828
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:849
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:851
msgid "Event"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:832
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:855
msgid "Meetings Slug"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:833
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:856
msgid "The root path for Meetings"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:845
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:868
msgid "Days of Future"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:846
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:869
msgid "Meetings more than this many days in the future will not be imported."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:858
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:881
msgid "Archive After Days"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:859
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:882
msgid "Meetings more than this many days in the past will be moved to the Events Archive. Once this date passes, meeting information will no longer update."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:871
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:894
msgid "Days of History"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:872
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:895
msgid "Meetings will be kept for the public calendar until the event is this many days in the past."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:884
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:907
msgid "Meeting Deletion Handling"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:885
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:908
msgid "When a Meeting is deleted in TouchPoint that has already been imported to WordPress, how should that be handled?"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:891
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:914
msgid "Always delete from WordPress"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:892
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:915
msgid "Mark the occurrence as cancelled"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:902
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:925
msgid "Divisions"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:903
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:926
msgid "Import Divisions from TouchPoint to your website as a taxonomy. These are used to classify users and involvements."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:907
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:930
msgid "Division Name (Plural)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:908
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:931
msgid "What you call Divisions at your church"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:919
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:942
msgid "Division Name (Singular)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:920
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:943
msgid "What you call a Division at your church"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:931
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:954
msgid "Division Slug"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:932
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:955
msgid "The root path for the Division Taxonomy"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:945
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:968
msgid "These Divisions will be imported for the taxonomy"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:956
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1087
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:979
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1110
msgid "Post Types"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:957
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:980
msgid "Select post types which should have Divisions available as a native taxonomy."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:971
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:977
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:994
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1000
msgid "Locations"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:972
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:995
msgid "Locations are physical places, probably campuses. None are required, but they can help present geographic information clearly."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:996
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1019
msgid "Campuses"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:997
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1020
msgid "Import Campuses from TouchPoint to your website as a taxonomy. These are used to classify users and involvements."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1004
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1027
msgid "Campus Name (Plural)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1005
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1028
msgid "What you call Campuses at your church"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1016
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1039
msgid "Campus Name (Singular)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1017
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1040
msgid "What you call a Campus at your church"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1028
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1051
msgid "Campus Slug"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1029
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1052
msgid "The root path for the Campus Taxonomy"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1045
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1068
msgid "Resident Codes"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1046
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1069
msgid "Import Resident Codes from TouchPoint to your website as a taxonomy. These are used to classify users and involvements that have locations."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1050
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1073
msgid "Resident Code Name (Plural)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1051
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1074
msgid "What you call Resident Codes at your church"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1062
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1085
msgid "Resident Code Name (Singular)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1063
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1086
msgid "What you call a Resident Code at your church"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1074
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1097
msgid "Resident Code Slug"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1075
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1098
msgid "The root path for the Resident Code Taxonomy"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1088
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1111
msgid "Select post types which should have Resident Codes available as a native taxonomy."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1251
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1274
msgid "password saved"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1305
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1306
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1328
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1329
msgid "TouchPoint-WP"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1354
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1377
msgid "Settings"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1586
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1609
msgid "Script Update Failed"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1708
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1731
msgid "TouchPoint-WP Settings"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1759
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1782
msgid "Save Settings"
msgstr ""
diff --git a/src/TouchPoint-WP/EventsCalendar.php b/src/TouchPoint-WP/EventsCalendar.php
index 9a168da8..83fe8b3b 100644
--- a/src/TouchPoint-WP/EventsCalendar.php
+++ b/src/TouchPoint-WP/EventsCalendar.php
@@ -17,7 +17,7 @@
}
/**
- * Provides an interface to bridge the gap between The Events Calendar plugin (by ModernTribe) and the TouchPoint
+ * Provides an interface to bridge the gap between The Events Calendar plugin (by Modern Tribe) and the TouchPoint
* mobile app.
*
* @since 0.0.90 Deprecated. Will be removed once v2.0 apps are no longer in use, as this won't be necessary for 3.0+.
diff --git a/src/TouchPoint-WP/TouchPointWP_Settings.php b/src/TouchPoint-WP/TouchPointWP_Settings.php
index 045005a1..1fc438da 100644
--- a/src/TouchPoint-WP/TouchPointWP_Settings.php
+++ b/src/TouchPoint-WP/TouchPointWP_Settings.php
@@ -775,7 +775,7 @@ private function settingsFields(bool|string $includeDetail = false): array
/** @noinspection HtmlUnknownTarget */
$this->settings['events_calendar'] = [
'title' => __('App 2.0 Calendar', 'TouchPoint-WP'),
- 'description' => __('Integrate Custom Mobile app version 2.0 with The Events Calendar from ModernTribe.', 'TouchPoint-WP'),
+ 'description' => __('Integrate Custom Mobile app version 2.0 with The Events Calendar from Modern Tribe.', 'TouchPoint-WP'),
'fields' => [
[
'id' => 'ec_app_cal_provider',
From d5850c0d442c0285aabb11a419abe3b8eab28334 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Tue, 25 Jun 2024 22:38:48 -0400
Subject: [PATCH 142/423] Adding app 2.0 API for Meeting-based calendar.
---
docs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs b/docs
index f6648ddf..c0930ef7 160000
--- a/docs
+++ b/docs
@@ -1 +1 @@
-Subproject commit f6648ddff2de964a64d525c682b39dd358dca70e
+Subproject commit c0930ef7c825edca591d7b3914bdefa392f6e37c
From facae3acecd28a0d5abfb1404e7bc99e07bc9e6b Mon Sep 17 00:00:00 2001
From: "James K."
Date: Tue, 25 Jun 2024 22:49:51 -0400
Subject: [PATCH 143/423] Removing some duplicate code and filter declarations
---
docs | 2 +-
src/TouchPoint-WP/EventsCalendar.php | 213 ++++++++++-----------------
2 files changed, 77 insertions(+), 138 deletions(-)
diff --git a/docs b/docs
index c0930ef7..c37f74c5 160000
--- a/docs
+++ b/docs
@@ -1 +1 @@
-Subproject commit c0930ef7c825edca591d7b3914bdefa392f6e37c
+Subproject commit c37f74c5bfb90f579d92263fe7645085030004c1
diff --git a/src/TouchPoint-WP/EventsCalendar.php b/src/TouchPoint-WP/EventsCalendar.php
index 83fe8b3b..6ad3ffc6 100644
--- a/src/TouchPoint-WP/EventsCalendar.php
+++ b/src/TouchPoint-WP/EventsCalendar.php
@@ -60,9 +60,6 @@ protected static function generateEventsList(array $params = []): array
$usePro = TouchPointWP::useTribeCalendarPro();
- $tpDomain = TouchPointWP::instance()->settings->host;
- $dlDomain = TouchPointWP::instance()->settings->host_deeplink;
-
foreach ($eventsQ as $eQ) {
/** @var WP_Post $eQ */
global $post;
@@ -85,71 +82,7 @@ protected static function generateEventsList(array $params = []): array
$locationContent = implode(" • ", $locationContent);
$content = trim(get_the_content(null, true, $eQ->ID));
- $content = apply_filters('the_content', $content);
- /**
- * Allows for manipulation of the html returned to the calendar feature of 2.0 Mobile apps.
- *
- * @since 0.0.2 Added
- * @since 0.0.90 Deprecated
- * @deprecated 0.0.90 Will be going away with Mobile App version 2.0
- *
- * @param string $content The html thus far.
- */
- $content = apply_filters('tp_app_events_content', $content);
-
- $content = html_entity_decode($content);
-
- // Add Header and footer Scripts, etc.
- if ($content !== '') {
- ob_start();
- do_action('wp_print_styles');
- do_action('wp_print_head_scripts');
- $content = ob_get_clean() . $content;
-
- ob_start();
- do_action('wp_print_footer_scripts');
- do_action('wp_print_scripts');
- $content .= ob_get_clean();
- }
-
- // Add domain to relative links
- $content = preg_replace(
- "/['\"]\/([^\/\"']*)[\"']/i",
- '"' . get_home_url() . '/$1"',
- $content
- );
-
- // Replace TouchPoint links with deeplinks where applicable
- // Registration Links
- if ($tpDomain !== '' && $dlDomain !== '') {
- $content = preg_replace(
- "/:\/\/$tpDomain\/OnlineReg\/([\d]+)/i",
- "://" . $dlDomain . '/registrations/register/${1}?from={{MOBILE_OS}}',
- $content
- );
- }
-
- if ($content !== '') {
- $cssUrl = null;
- if (TouchPointWP::instance()->settings->ec_use_standardizing_style === 'on') {
- $cssUrl = TouchPointWP::instance(
- )->assets_url . 'template/ec-standardizing-style.css?v=' . TouchPointWP::VERSION;
- }
-
- /**
- * Insert a CSS file into all event content for mobile 2.0 app.
- *
- * @since 0.0.3 Added
- * @since 0.0.90 Deprecated
- * @deprecated 0.0.90 Will be going away with Mobile App version 2.0
- *
- * @param string $cssUrl The url for a CSS file. By default, one provided with the plugin is used.
- */
- $cssUrl = apply_filters('tp_app_events_css_url', $cssUrl);
- if (is_string($cssUrl)) {
- $content = " " . $content;
- }
- }
+ $content = self::formatContent($content);
// Not needed for apps, but helpful for diagnostics
$eO['ID'] = $eQ->ID;
@@ -187,6 +120,80 @@ protected static function generateEventsList(array $params = []): array
return $eventsList;
}
+
+ private static function formatContent(?string $content): string
+ {
+ $tpDomain = TouchPointWP::instance()->settings->host;
+ $dlDomain = TouchPointWP::instance()->settings->host_deeplink;
+
+ $content = apply_filters('the_content', $content);
+
+ /**
+ * Allows for manipulation of the html returned to the calendar feature of 2.0 Mobile apps.
+ *
+ * @since 0.0.2 Added
+ * @since 0.0.90 Deprecated
+ * @deprecated 0.0.90 Will be going away with Mobile App version 2.0
+ *
+ * @param string $content The html thus far.
+ */
+ $content = apply_filters('tp_app_events_content', $content);
+ $content = html_entity_decode($content);
+
+ // Add Header and footer Scripts, etc.
+ if ($content !== '') {
+ ob_start();
+ do_action('wp_print_styles');
+ do_action('wp_print_head_scripts');
+ $content = ob_get_clean() . $content;
+
+ ob_start();
+ do_action('wp_print_footer_scripts');
+ do_action('wp_print_scripts');
+ $content .= ob_get_clean();
+ }
+
+ // Add domain to relative links
+ $content = preg_replace(
+ "/['\"]\/([^\/\"']*)[\"']/i",
+ '"' . get_home_url() . '/$1"',
+ $content
+ );
+
+ // Replace TouchPoint links with deeplinks where applicable
+ // Registration Links
+ if ($tpDomain !== '' && $dlDomain !== '') {
+ $content = preg_replace(
+ "/:\/\/$tpDomain\/OnlineReg\/([\d]+)/i",
+ "://" . $dlDomain . '/registrations/register/${1}?from={{MOBILE_OS}}',
+ $content
+ );
+ }
+
+ if ($content !== '') {
+ $cssUrl = null;
+ if (TouchPointWP::instance()->settings->ec_use_standardizing_style === 'on') {
+ $cssUrl = TouchPointWP::instance(
+ )->assets_url . 'template/ec-standardizing-style.css?v=' . TouchPointWP::VERSION;
+ }
+
+ /**
+ * Insert a CSS file into all event content for mobile 2.0 app.
+ *
+ * @since 0.0.3 Added
+ * @since 0.0.90 Deprecated
+ * @deprecated 0.0.90 Will be going away with Mobile App version 2.0
+ *
+ * @param string $cssUrl The url for a CSS file. By default, one provided with the plugin is used.
+ */
+ $cssUrl = apply_filters('tp_app_events_css_url', $cssUrl);
+ if (is_string($cssUrl)) {
+ $content = " " . $content;
+ }
+ }
+
+ return $content;
+ }
/**
* @param array $params
@@ -200,9 +207,6 @@ protected static function generateEventsListFromMeetings(array $params = []): ar
{
$eventsList = [];
- $tpDomain = TouchPointWP::instance()->settings->host;
- $dlDomain = TouchPointWP::instance()->settings->host_deeplink;
-
$q = new WP_Query();
$existingMq = $q->get('meta_query');
@@ -295,73 +299,8 @@ protected static function generateEventsListFromMeetings(array $params = []): ar
$locationContent = implode($separator, $locationContent);
$content = trim(get_the_content(null, true, $eQ->ID));
- $content = apply_filters('the_content', $content);
- /**
- * Allows for manipulation of the html returned to the calendar feature of 2.0 Mobile apps.
- *
- * @param string $content The html thus far.
- *
- * @since 0.0.90 Deprecated
- * @deprecated 0.0.90 Will be going away with Mobile App version 2.0
- *
- * @since 0.0.2 Added
- */
- $content = apply_filters('tp_app_events_content', $content);
-
- $content = html_entity_decode($content);
-
- // Add Header and footer Scripts, etc.
- if ($content !== '') {
- ob_start();
- do_action('wp_print_styles');
- do_action('wp_print_head_scripts');
- $content = ob_get_clean() . $content;
-
- ob_start();
- do_action('wp_print_footer_scripts');
- do_action('wp_print_scripts');
- $content .= ob_get_clean();
- }
-
- // Add domain to relative links
- $content = preg_replace(
- "/['\"]\/([^\/\"']*)[\"']/i",
- '"' . get_home_url() . '/$1"',
- $content
- );
-
- // Replace TouchPoint links with deeplinks where applicable
- // Registration Links
- if ($tpDomain !== '' && $dlDomain !== '') {
- $content = preg_replace(
- "/:\/\/$tpDomain\/OnlineReg\/([\d]+)/i",
- "://" . $dlDomain . '/registrations/register/${1}?from={{MOBILE_OS}}',
- $content
- );
- }
- if ($content !== '') {
- $cssUrl = null;
- if (TouchPointWP::instance()->settings->ec_use_standardizing_style === 'on') {
- $cssUrl = TouchPointWP::instance(
- )->assets_url . 'template/ec-standardizing-style.css?v=' . TouchPointWP::VERSION;
- }
-
- /**
- * Insert a CSS file into all event content for mobile 2.0 app.
- *
- * @param string $cssUrl The url for a CSS file. By default, one provided with the plugin is used.
- *
- * @since 0.0.90 Deprecated
- * @deprecated 0.0.90 Will be going away with Mobile App version 2.0
- *
- * @since 0.0.3 Added
- */
- $cssUrl = apply_filters('tp_app_events_css_url', $cssUrl);
- if (is_string($cssUrl)) {
- $content = " " . $content;
- }
- }
+ $content = self::formatContent($content);
// Not needed for apps, but helpful for diagnostics
$eO['ID'] = $eQ->ID;
From 61a90bcf85e8d400c8241b49b6ed5c68b5702627 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Tue, 25 Jun 2024 23:46:08 -0400
Subject: [PATCH 144/423] Adding action buttons to app calendar
---
.gitignore | 1 +
docs | 2 +-
i18n/TouchPoint-WP-es_ES.po | 57 +++++++++---------
i18n/TouchPoint-WP.pot | 59 ++++++++++---------
src/TouchPoint-WP/EventsCalendar.php | 2 +-
src/TouchPoint-WP/Involvement.php | 48 +++++++++------
src/TouchPoint-WP/Meeting.php | 42 ++++++++++---
src/TouchPoint-WP/Partner.php | 15 ++---
src/TouchPoint-WP/PostTypeCapable.php | 9 +--
.../Utilities/StringableArray.php | 15 +++++
10 files changed, 156 insertions(+), 94 deletions(-)
diff --git a/.gitignore b/.gitignore
index 768f5b34..12986275 100644
--- a/.gitignore
+++ b/.gitignore
@@ -12,6 +12,7 @@ composer.lock
/.idea/deployment.xml
/.idea/dataSources.xml
/.idea/webServers.xml
+/.idea/runConfigurations/Local.xml
*.min.js
node_modules
diff --git a/docs b/docs
index c37f74c5..42f0cb60 160000
--- a/docs
+++ b/docs
@@ -1 +1 @@
-Subproject commit c37f74c5bfb90f579d92263fe7645085030004c1
+Subproject commit 42f0cb60c35106413e08375c31a41620ce6e3897
diff --git a/i18n/TouchPoint-WP-es_ES.po b/i18n/TouchPoint-WP-es_ES.po
index 0a5ea7a2..a5571e49 100644
--- a/i18n/TouchPoint-WP-es_ES.po
+++ b/i18n/TouchPoint-WP-es_ES.po
@@ -87,7 +87,7 @@ msgstr "Tipos de miembros de líder"
#: src/templates/admin/invKoForm.php:141
#: src/templates/admin/invKoForm.php:268
#: src/templates/parts/involvement-nearby-list.php:2
-#: src/TouchPoint-WP/Meeting.php:594
+#: src/TouchPoint-WP/Meeting.php:599
#: src/TouchPoint-WP/Rsvp.php:75
#: assets/js/base-defer.js:192
#: assets/js/base-defer.js:1133
@@ -199,12 +199,12 @@ msgstr "Su token de inicio de sesión no es válido."
msgid "Session could not be validated."
msgstr "No se pudo validar la sesión."
-#: src/TouchPoint-WP/EventsCalendar.php:80
+#: src/TouchPoint-WP/EventsCalendar.php:77
msgid "Recurring"
msgstr "Periódico"
-#: src/TouchPoint-WP/EventsCalendar.php:83
-#: src/TouchPoint-WP/EventsCalendar.php:293
+#: src/TouchPoint-WP/EventsCalendar.php:80
+#: src/TouchPoint-WP/EventsCalendar.php:297
msgid "Multi-Day"
msgstr "varios días"
@@ -243,45 +243,45 @@ msgstr "Solo hombres"
msgid "Women Only"
msgstr "Solo mujeres"
-#: src/TouchPoint-WP/Involvement.php:3534
+#: src/TouchPoint-WP/Involvement.php:3538
msgid "Contact Leaders"
msgstr "Contacta con las líderes"
-#: src/TouchPoint-WP/Involvement.php:3597
-#: src/TouchPoint-WP/Involvement.php:3633
+#: src/TouchPoint-WP/Involvement.php:3606
+#: src/TouchPoint-WP/Involvement.php:3646
msgid "Register"
msgstr "Regístrate ahora"
-#: src/TouchPoint-WP/Involvement.php:3602
+#: src/TouchPoint-WP/Involvement.php:3611
msgid "Create Account"
msgstr "Crear cuenta"
-#: src/TouchPoint-WP/Involvement.php:3606
+#: src/TouchPoint-WP/Involvement.php:3615
msgid "Schedule"
msgstr "Programe"
-#: src/TouchPoint-WP/Involvement.php:3611
+#: src/TouchPoint-WP/Involvement.php:3620
msgid "Give"
msgstr "Dar"
-#: src/TouchPoint-WP/Involvement.php:3614
+#: src/TouchPoint-WP/Involvement.php:3623
msgid "Manage Subscriptions"
msgstr "Administrar suscripciones"
-#: src/TouchPoint-WP/Involvement.php:3617
+#: src/TouchPoint-WP/Involvement.php:3626
msgid "Record Attendance"
msgstr "Registre su asistencia"
-#: src/TouchPoint-WP/Involvement.php:3620
+#: src/TouchPoint-WP/Involvement.php:3629
msgid "Get Tickets"
msgstr "Obtener boletos"
-#: src/TouchPoint-WP/Involvement.php:3628
+#: src/TouchPoint-WP/Involvement.php:3637
#: assets/js/base-defer.js:1001
msgid "Join"
msgstr "Únete"
-#: src/TouchPoint-WP/Involvement.php:3546
+#: src/TouchPoint-WP/Involvement.php:3555
#: src/TouchPoint-WP/Partner.php:1314
msgid "Show on Map"
msgstr "Muestra en el mapa"
@@ -307,7 +307,8 @@ msgstr "ID de Personas de TouchPoint"
msgid "Contact"
msgstr "Contacta"
-#: src/TouchPoint-WP/Meeting.php:593
+#: src/TouchPoint-WP/Meeting.php:598
+#: src/TouchPoint-WP/Meeting.php:618
#: src/TouchPoint-WP/Rsvp.php:80
msgid "RSVP"
msgstr "RSVP"
@@ -1289,23 +1290,23 @@ msgstr "Este tipo de participación no tiene habilitadas las ubicaciones geográ
msgid "Could not locate."
msgstr "No se pudo localizar."
-#: src/TouchPoint-WP/Meeting.php:526
+#: src/TouchPoint-WP/Meeting.php:531
#: src/TouchPoint-WP/TouchPointWP.php:969
msgid "Only GET requests are allowed."
msgstr "Solo se permiten solicitudes GET."
-#: src/TouchPoint-WP/Meeting.php:554
+#: src/TouchPoint-WP/Meeting.php:559
#: src/TouchPoint-WP/TouchPointWP.php:353
msgid "Only POST requests are allowed."
msgstr "Solo se permiten solicitudes POST."
-#: src/TouchPoint-WP/Meeting.php:564
+#: src/TouchPoint-WP/Meeting.php:569
#: src/TouchPoint-WP/TouchPointWP.php:362
msgid "Invalid data provided."
msgstr "Datos proporcionados no válidos."
-#: src/TouchPoint-WP/Involvement.php:3726
-#: src/TouchPoint-WP/Involvement.php:3823
+#: src/TouchPoint-WP/Involvement.php:3740
+#: src/TouchPoint-WP/Involvement.php:3837
msgid "Invalid Post Type."
msgstr "Tipo de publicación no válida."
@@ -1478,7 +1479,7 @@ msgstr "Eliminar siempre de WordPress"
msgid "Mark the occurrence as cancelled"
msgstr "Marcar la ocurrencia como cancelada"
-#: src/TouchPoint-WP/Involvement.php:3810
+#: src/TouchPoint-WP/Involvement.php:3824
#: src/TouchPoint-WP/Person.php:1821
msgid "Contact Prohibited."
msgstr "Contacto prohibido."
@@ -1503,7 +1504,7 @@ msgstr "Algo salió mal."
msgid "You may need to sign in."
msgstr "Es posible que tengas que iniciar sesión."
-#: src/TouchPoint-WP/Involvement.php:3800
+#: src/TouchPoint-WP/Involvement.php:3814
#: src/TouchPoint-WP/Person.php:1838
msgid "Contact Blocked for Spam."
msgstr "Contacto bloqueado por spam."
@@ -1591,11 +1592,11 @@ msgstr "(persona nombrada)"
msgid "Expand"
msgstr "Ampliar"
-#: src/TouchPoint-WP/Meeting.php:446
+#: src/TouchPoint-WP/Meeting.php:451
msgid "Cancelled"
msgstr "Cancelado"
-#: src/TouchPoint-WP/Meeting.php:447
+#: src/TouchPoint-WP/Meeting.php:452
msgid "Scheduled"
msgstr "Programado"
@@ -1629,7 +1630,7 @@ msgid "%s is cancelled."
msgstr "%s esta cancelado."
#. Translators: %s is the system name. "TouchPoint" by default.
-#: src/TouchPoint-WP/Involvement.php:3558
+#: src/TouchPoint-WP/Involvement.php:3567
msgid "Involvement in %s"
msgstr "Participaciones en %s"
@@ -1638,7 +1639,7 @@ msgid "In the Past"
msgstr "en el pasado"
#. Translators: %s is the system name. "TouchPoint" by default.
-#: src/TouchPoint-WP/Meeting.php:391
+#: src/TouchPoint-WP/Meeting.php:396
msgid "Meeting in %s"
msgstr "Reunión en %s"
@@ -1703,7 +1704,7 @@ msgctxt "Date string when the year is not current."
msgid "F j, Y"
msgstr "j F Y"
-#: src/TouchPoint-WP/Meeting.php:448
+#: src/TouchPoint-WP/Meeting.php:453
msgctxt "Event Status is not a recognized value."
msgid "Unknown"
msgstr "desconocido"
diff --git a/i18n/TouchPoint-WP.pot b/i18n/TouchPoint-WP.pot
index 66f3df54..8fb1a788 100644
--- a/i18n/TouchPoint-WP.pot
+++ b/i18n/TouchPoint-WP.pot
@@ -9,7 +9,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"POT-Creation-Date: 2024-06-26T02:35:11+00:00\n"
+"POT-Creation-Date: 2024-06-26T03:42:49+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"X-Generator: WP-CLI 2.10.0\n"
"X-Domain: TouchPoint-WP\n"
@@ -122,7 +122,7 @@ msgstr ""
#: src/templates/admin/invKoForm.php:141
#: src/templates/admin/invKoForm.php:268
#: src/templates/parts/involvement-nearby-list.php:2
-#: src/TouchPoint-WP/Meeting.php:594
+#: src/TouchPoint-WP/Meeting.php:599
#: src/TouchPoint-WP/Rsvp.php:75
#: assets/js/base-defer.js:192
#: assets/js/base-defer.js:1133
@@ -297,12 +297,12 @@ msgstr ""
msgid "There are no %s published for this month."
msgstr ""
-#: src/TouchPoint-WP/EventsCalendar.php:80
+#: src/TouchPoint-WP/EventsCalendar.php:77
msgid "Recurring"
msgstr ""
-#: src/TouchPoint-WP/EventsCalendar.php:83
-#: src/TouchPoint-WP/EventsCalendar.php:293
+#: src/TouchPoint-WP/EventsCalendar.php:80
+#: src/TouchPoint-WP/EventsCalendar.php:297
msgid "Multi-Day"
msgstr ""
@@ -442,65 +442,65 @@ msgstr ""
msgid "Women Only"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3534
+#: src/TouchPoint-WP/Involvement.php:3538
msgid "Contact Leaders"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3546
+#: src/TouchPoint-WP/Involvement.php:3555
#: src/TouchPoint-WP/Partner.php:1314
msgid "Show on Map"
msgstr ""
#. Translators: %s is the system name. "TouchPoint" by default.
-#: src/TouchPoint-WP/Involvement.php:3558
+#: src/TouchPoint-WP/Involvement.php:3567
msgid "Involvement in %s"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3597
-#: src/TouchPoint-WP/Involvement.php:3633
+#: src/TouchPoint-WP/Involvement.php:3606
+#: src/TouchPoint-WP/Involvement.php:3646
msgid "Register"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3602
+#: src/TouchPoint-WP/Involvement.php:3611
msgid "Create Account"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3606
+#: src/TouchPoint-WP/Involvement.php:3615
msgid "Schedule"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3611
+#: src/TouchPoint-WP/Involvement.php:3620
msgid "Give"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3614
+#: src/TouchPoint-WP/Involvement.php:3623
msgid "Manage Subscriptions"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3617
+#: src/TouchPoint-WP/Involvement.php:3626
msgid "Record Attendance"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3620
+#: src/TouchPoint-WP/Involvement.php:3629
msgid "Get Tickets"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3628
+#: src/TouchPoint-WP/Involvement.php:3637
#: assets/js/base-defer.js:1001
msgid "Join"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3726
-#: src/TouchPoint-WP/Involvement.php:3823
+#: src/TouchPoint-WP/Involvement.php:3740
+#: src/TouchPoint-WP/Involvement.php:3837
msgid "Invalid Post Type."
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3800
+#: src/TouchPoint-WP/Involvement.php:3814
#: src/TouchPoint-WP/Person.php:1838
msgid "Contact Blocked for Spam."
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3810
+#: src/TouchPoint-WP/Involvement.php:3824
#: src/TouchPoint-WP/Person.php:1821
msgid "Contact Prohibited."
msgstr ""
@@ -519,39 +519,40 @@ msgid "In the Past"
msgstr ""
#. Translators: %s is the system name. "TouchPoint" by default.
-#: src/TouchPoint-WP/Meeting.php:391
+#: src/TouchPoint-WP/Meeting.php:396
msgid "Meeting in %s"
msgstr ""
-#: src/TouchPoint-WP/Meeting.php:446
+#: src/TouchPoint-WP/Meeting.php:451
msgid "Cancelled"
msgstr ""
-#: src/TouchPoint-WP/Meeting.php:447
+#: src/TouchPoint-WP/Meeting.php:452
msgid "Scheduled"
msgstr ""
-#: src/TouchPoint-WP/Meeting.php:448
+#: src/TouchPoint-WP/Meeting.php:453
msgctxt "Event Status is not a recognized value."
msgid "Unknown"
msgstr ""
-#: src/TouchPoint-WP/Meeting.php:526
+#: src/TouchPoint-WP/Meeting.php:531
#: src/TouchPoint-WP/TouchPointWP.php:969
msgid "Only GET requests are allowed."
msgstr ""
-#: src/TouchPoint-WP/Meeting.php:554
+#: src/TouchPoint-WP/Meeting.php:559
#: src/TouchPoint-WP/TouchPointWP.php:353
msgid "Only POST requests are allowed."
msgstr ""
-#: src/TouchPoint-WP/Meeting.php:564
+#: src/TouchPoint-WP/Meeting.php:569
#: src/TouchPoint-WP/TouchPointWP.php:362
msgid "Invalid data provided."
msgstr ""
-#: src/TouchPoint-WP/Meeting.php:593
+#: src/TouchPoint-WP/Meeting.php:598
+#: src/TouchPoint-WP/Meeting.php:618
#: src/TouchPoint-WP/Rsvp.php:80
msgid "RSVP"
msgstr ""
diff --git a/src/TouchPoint-WP/EventsCalendar.php b/src/TouchPoint-WP/EventsCalendar.php
index 6ad3ffc6..8ef17c14 100644
--- a/src/TouchPoint-WP/EventsCalendar.php
+++ b/src/TouchPoint-WP/EventsCalendar.php
@@ -299,7 +299,7 @@ protected static function generateEventsListFromMeetings(array $params = []): ar
$locationContent = implode($separator, $locationContent);
$content = trim(get_the_content(null, true, $eQ->ID));
-
+ $content .= "" . $e->getActionButtons('mobile', 'btn', withTouchPointLink: false, absoluteLinks: true)->join(" ") . "
";
$content = self::formatContent($content);
// Not needed for apps, but helpful for diagnostics
diff --git a/src/TouchPoint-WP/Involvement.php b/src/TouchPoint-WP/Involvement.php
index f1510f10..7deeba06 100644
--- a/src/TouchPoint-WP/Involvement.php
+++ b/src/TouchPoint-WP/Involvement.php
@@ -3510,13 +3510,15 @@ public function notableAttributes(array $exclude = []): array
* Returns the html with buttons for actions the user can perform. This must be called *within* an element with
* the `data-tp-involvement` attribute with the post_id (NOT the Inv ID) as the value.
*
- * @param ?string $context A reference to where the action buttons are meant to be used.
- * @param string $btnClass A string for classes to add to the buttons. Note that buttons can be a or button
- * elements.
+ * @param string|null $context A string that gives filters some context for where the request is coming from
+ * @param string $btnClass HTML class names to put into the buttons/links
+ * @param bool $withTouchPointLink Whether to include a link to the item within TouchPoint.
+ * @param bool $absoluteLinks Set true to make the links absolute, so they work from apps or emails.
+ * @param bool $includeRegister Set false to exclude the register button.
*
- * @return StringableArray()
+ * @return StringableArray
*/
- public function getActionButtons(string $context = null, string $btnClass = "", bool $withTouchPointLink = true, bool $includeRegister = true): StringableArray
+ public function getActionButtons(string $context = null, string $btnClass = "", bool $withTouchPointLink = true, bool $absoluteLinks = false, bool $includeRegister = true): StringableArray
{
TouchPointWP::requireScript('swal2-defer');
TouchPointWP::requireScript('base-defer');
@@ -3529,11 +3531,18 @@ public function getActionButtons(string $context = null, string $btnClass = "",
$btnClass = " class=\"$btnClass\"";
}
+ $baseLink = get_permalink($this->post_id);
+
$ret = new StringableArray();
if (self::allowContact($this->invType) && $this->leaders()->count() > 0) {
- $text = __("Contact Leaders", 'TouchPoint-WP');
- $ret[] = "post_id\" data-tp-action=\"contact\" $btnClass>$text ";
- TouchPointWP::enqueueActionsStyle('inv-contact');
+ $text = __("Contact Leaders", 'TouchPoint-WP');
+ if (!$absoluteLinks) {
+ $ret[] = "post_id\" data-tp-action=\"contact\" $btnClass>$text ";
+ TouchPointWP::enqueueActionsStyle('inv-contact');
+ } else {
+ $iid = $this->invId;
+ $ret[] = "$text ";
+ }
}
// Register Button
@@ -3542,7 +3551,7 @@ public function getActionButtons(string $context = null, string $btnClass = "",
}
// Show on map button. (Only works if map is called before this is.)
- if (self::$_hasArchiveMap && $this->geo !== null) {
+ if (self::$_hasArchiveMap && $this->geo !== null && !$absoluteLinks) {
$text = __("Show on Map", 'TouchPoint-WP');
if ($ret->count() > 1) {
TouchPointWP::requireScript("fontAwesome");
@@ -3582,11 +3591,11 @@ public function getActionButtons(string $context = null, string $btnClass = "",
* Get the HTML for the register button. Labels depend on several settings within TouchPoint.
*
* @param string $btnClass Class names
- * @param bool $includeRsvp
+ * @param bool $absoluteLinks Whether only absolute links should be provided that can be used in emails, apps, etc.
*
* @return ?string HTML for the registration button, whatever that should be. Null if nothing to return.
*/
- public function getRegisterButton(string $btnClass, bool $includeRsvp = true): ?string
+ public function getRegisterButton(string $btnClass, bool $absoluteLinks = false): ?string
{
if ($btnClass !== "") {
$btnClass = " class=\"$btnClass\"";
@@ -3626,8 +3635,12 @@ public function getRegisterButton(string $btnClass, bool $includeRsvp = true): ?
case RegistrationType::JOIN:
$text = __('Join', 'TouchPoint-WP');
- TouchPointWP::enqueueActionsStyle('inv-join');
- return "post_id\" data-tp-action=\"join\" $btnClass>$text ";
+ if (!$absoluteLinks) {
+ TouchPointWP::enqueueActionsStyle('inv-join');
+ return "post_id\" data-tp-action=\"join\" $btnClass>$text ";
+ }
+ $link = get_permalink($this->post_id()) . "#tp-join-i" . $this->invId;
+ return "$text ";
case RegistrationType::EXTERNAL:
$text = __('Register', 'TouchPoint-WP');
@@ -3636,11 +3649,12 @@ public function getRegisterButton(string $btnClass, bool $includeRsvp = true): ?
return "$text ";
case RegistrationType::RSVP:
- if ($includeRsvp) {
- $asAMeeting = $this->AsAMeeting();
- if ($asAMeeting !== null) {
- return $asAMeeting->getRsvpButton($btnClass);
+ $asAMeeting = $this->AsAMeeting();
+ if ($asAMeeting !== null) {
+ if ($absoluteLinks) {
+ return $asAMeeting->getRsvpLink($btnClass);
}
+ return $asAMeeting->getRsvpButton($btnClass);
}
}
return null;
diff --git a/src/TouchPoint-WP/Meeting.php b/src/TouchPoint-WP/Meeting.php
index a1b7cb5e..6ef2923c 100644
--- a/src/TouchPoint-WP/Meeting.php
+++ b/src/TouchPoint-WP/Meeting.php
@@ -355,13 +355,14 @@ public function notableAttributes(array $exclude = []): array
}
/**
- * @param ?string $context
- * @param string $btnClass
- * @param bool $withTouchPointLink
+ * @param string|null $context A string that gives filters some context for where the request is coming from
+ * @param string $btnClass HTML class names to put into the buttons/links
+ * @param bool $withTouchPointLink Whether to include a link to the item within TouchPoint.
+ * @param bool $absoluteLinks Set true to make the links absolute, so they work from apps or emails.
*
* @return StringableArray
*/
- public function getActionButtons(string $context = null, string $btnClass = "", bool $withTouchPointLink = true): StringableArray
+ public function getActionButtons(string $context = null, string $btnClass = "", bool $withTouchPointLink = true, bool $absoluteLinks = false): StringableArray
{
TouchPointWP::requireScript('swal2-defer');
TouchPointWP::requireScript('base-defer');
@@ -375,14 +376,18 @@ public function getActionButtons(string $context = null, string $btnClass = "",
return new StringableArray();
}
- $ret = $inv->getActionButtons($context . "_meeting", $btnClass, false, false);
+ $ret = $inv->getActionButtons($context . "_meeting", $btnClass, false, $absoluteLinks, false);
if (($this->endDt ?? $this->startDt) > Utilities::dateTimeNow()) {
- $ret[] = $inv->getRegisterButton($btnClass);
+ $ret[] = $inv->getRegisterButton($btnClass, $absoluteLinks);
}
if ($inv->getRegistrationType() === RegistrationType::RSVP) {
- $ret[] = $this->getRsvpButton($btnClass);
+ if ($absoluteLinks) {
+ $ret[] = $this->getRsvpLink($btnClass);
+ } else {
+ $ret[] = $this->getRsvpButton($btnClass);
+ }
}
if ($withTouchPointLink && TouchPointWP::currentUserIsAdmin()) {
@@ -601,6 +606,29 @@ public function getRsvpButton(string $btnClass = ""): string
return "mtgId\">$link $preloadMsg ";
}
+ /**
+ * Get a link to RSVP for the meeting that can be used in emails, apps, or other contexts.
+ *
+ * @param string $btnClass
+ *
+ * @return string
+ */
+ public function getRsvpLink(string $btnClass = ""): string
+ {
+ $link = __("RSVP", "TouchPoint-WP");
+
+ $baseUrl = get_permalink($this->post_id);
+
+ $btnClass = trim($btnClass);
+ if ($btnClass !== '' && !str_starts_with($btnClass, "class=")) {
+ $btnClass = "class=\"$btnClass\"";
+ }
+
+ $mid = $this->mtgId;
+ return "$link ";
+
+ }
+
/**
* Indicates if the given post can be instantiated as a Meeting.
*
diff --git a/src/TouchPoint-WP/Partner.php b/src/TouchPoint-WP/Partner.php
index e63bf747..ceefa8e8 100644
--- a/src/TouchPoint-WP/Partner.php
+++ b/src/TouchPoint-WP/Partner.php
@@ -1291,14 +1291,14 @@ protected function enqueueForJsInstantiation(): bool
* Returns the html with buttons for actions the user can perform. This must be called *within* an element with
* the `data-tp-partner` attribute with the post_id as the value or 0 for secure partners.
*
- * @param ?string $context A reference to where the action buttons are meant to be used.
- * @param string $btnClass A string for classes to add to the buttons. Note that buttons can be a or button
- * elements.
- * @param bool $withTouchPointLink Whether or not to include the TouchPoint link. Default is true.
+ * @param string|null $context A string that gives filters some context for where the request is coming from
+ * @param string $btnClass HTML class names to put into the buttons/links
+ * @param bool $withTouchPointLink Whether to include a link to the item within TouchPoint.
+ * @param bool $absoluteLinks Set true to make the links absolute, so they work from apps or emails.
*
* @return StringableArray
*/
- public function getActionButtons(string $context = null, string $btnClass = "", bool $withTouchPointLink = true): StringableArray
+ public function getActionButtons(string $context = null, string $btnClass = "", bool $withTouchPointLink = true, bool $absoluteLinks = false): StringableArray
{
$this->enqueueForJsInstantiation();
@@ -1308,7 +1308,7 @@ public function getActionButtons(string $context = null, string $btnClass = "",
}
// Show on map button. (Only works if map is called before this is.)
- if (self::$_hasArchiveMap && ! $this->decoupleLocation && $this->geo !== null) {
+ if (self::$_hasArchiveMap && ! $this->decoupleLocation && $this->geo !== null && !$absoluteLinks) {
$text = __("Show on Map", "TouchPoint-WP");
$ret[] = "$text ";
}
@@ -1329,8 +1329,9 @@ public function getActionButtons(string $context = null, string $btnClass = "",
* @param ?string $context A reference to where the action buttons are meant to be used.
* @param string $btnClass A string for classes to add to the buttons. Note that buttons can be 'a' or 'button'
* elements.
+ * @param bool $absoluteLinks Set true to make the links absolute, so they work from apps or emails.
*/
- return apply_filters("tp_partner_actions", $ret, $this, $context, $btnClass);
+ return apply_filters("tp_partner_actions", $ret, $this, $context, $btnClass, $absoluteLinks);
}
public static function getJsInstantiationString(): string
diff --git a/src/TouchPoint-WP/PostTypeCapable.php b/src/TouchPoint-WP/PostTypeCapable.php
index eea8612d..072a7512 100644
--- a/src/TouchPoint-WP/PostTypeCapable.php
+++ b/src/TouchPoint-WP/PostTypeCapable.php
@@ -92,13 +92,14 @@ protected function processAttributeExclusions(array $subject, array $exclude): a
}
/**
- * @param string $context A string that gives filters some context for where the request is coming from
- * @param string $btnClass HTML class names to put into the buttons/links
- * @param bool $withTouchPointLink Whether to include a link to the item within TouchPoint.
+ * @param string|null $context A string that gives filters some context for where the request is coming from
+ * @param string $btnClass HTML class names to put into the buttons/links
+ * @param bool $withTouchPointLink Whether to include a link to the item within TouchPoint.
+ * @param bool $absoluteLinks Set true to make the links absolute, so they work from apps or emails.
*
* @return StringableArray
*/
- public abstract function getActionButtons(string $context, string $btnClass, bool $withTouchPointLink = true): StringableArray;
+ public abstract function getActionButtons(string $context = null, string $btnClass = "", bool $withTouchPointLink = true, bool $absoluteLinks = false): StringableArray;
/**
* Indicates if the given post can be instantiated as the given post type.
diff --git a/src/TouchPoint-WP/Utilities/StringableArray.php b/src/TouchPoint-WP/Utilities/StringableArray.php
index 2a766224..7807e5f7 100644
--- a/src/TouchPoint-WP/Utilities/StringableArray.php
+++ b/src/TouchPoint-WP/Utilities/StringableArray.php
@@ -73,6 +73,21 @@ public function __toString()
return implode($this->separator, $this->getArrayCopy());
}
+ /**
+ * @param string|null $separator
+ *
+ * @return string
+ *
+ * @since 0.0.90 Added
+ */
+ public function join(string $separator = null): string
+ {
+ if (is_null($separator)) {
+ $separator = $this->separator;
+ }
+ return implode($separator, $this->getArrayCopy());
+ }
+
/**
* Convert the array to a list string with ampersands and such.
*
From 33b7741c8d514cf3a8e018216f2acc44fafa4c33 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Tue, 25 Jun 2024 23:48:39 -0400
Subject: [PATCH 145/423] Doc clarity
---
docs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs b/docs
index 42f0cb60..65e3b7ae 160000
--- a/docs
+++ b/docs
@@ -1 +1 @@
-Subproject commit 42f0cb60c35106413e08375c31a41620ce6e3897
+Subproject commit 65e3b7aefedc1f2413648257342c1d704bc551b9
From 4817cdfae1ddf827edf3d48fd00d507c2f13e847 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Tue, 25 Jun 2024 23:56:03 -0400
Subject: [PATCH 146/423] Minor formats in utilities
---
src/TouchPoint-WP/Utilities.php | 4 ++--
src/TouchPoint-WP/Utilities/StringableArray.php | 4 +++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/src/TouchPoint-WP/Utilities.php b/src/TouchPoint-WP/Utilities.php
index 55098701..b59382f4 100644
--- a/src/TouchPoint-WP/Utilities.php
+++ b/src/TouchPoint-WP/Utilities.php
@@ -243,11 +243,11 @@ public static function stringArrayToListString(array $strings): string
$comma = ', ';
$and = ' & ';
$useOxford = false;
- if (strpos($concat, ', ') !== false) {
+ if (str_contains($concat, ', ')) {
$comma = '; ';
$useOxford = true;
}
- if (strpos($concat, ' & ') !== false) {
+ if (str_contains($concat, ' & ')) {
$and = ' ' . __('and', 'TouchPoint-WP') . ' ';
$useOxford = true;
}
diff --git a/src/TouchPoint-WP/Utilities/StringableArray.php b/src/TouchPoint-WP/Utilities/StringableArray.php
index 7807e5f7..dc81453f 100644
--- a/src/TouchPoint-WP/Utilities/StringableArray.php
+++ b/src/TouchPoint-WP/Utilities/StringableArray.php
@@ -70,10 +70,12 @@ public function contains($needle): bool
*/
public function __toString()
{
- return implode($this->separator, $this->getArrayCopy());
+ return $this->join();
}
/**
+ * Link the items together with a given separator, which may be different from the separator used in the constructor.
+ *
* @param string|null $separator
*
* @return string
From e52815f1211f6f28c4016718f15f08cc6488b6d3 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Tue, 25 Jun 2024 23:56:28 -0400
Subject: [PATCH 147/423] Minor formats in utilities
---
docs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs b/docs
index 65e3b7ae..21c64751 160000
--- a/docs
+++ b/docs
@@ -1 +1 @@
-Subproject commit 65e3b7aefedc1f2413648257342c1d704bc551b9
+Subproject commit 21c647510e2f7f2ba07bfb107edebe9a88e0e418
From 486239f9e8205cd58f5198f77f8e3c37fcda752f Mon Sep 17 00:00:00 2001
From: "James K."
Date: Thu, 27 Jun 2024 19:08:25 -0400
Subject: [PATCH 148/423] Images for Involvements and Meetings Resolving some
issues with timezones.
---
assets/template/partials-template-style.css | 27 ++++++
src/TouchPoint-WP/Involvement.php | 72 +++++++++++----
src/TouchPoint-WP/Meeting.php | 92 +++++++++++++++++--
src/TouchPoint-WP/TouchPointWP.php | 6 +-
src/TouchPoint-WP/Utilities.php | 14 +++
src/TouchPoint-WP/Utilities/DateFormats.php | 17 ++++
.../Utilities/StringableArray.php | 2 +-
src/TouchPoint-WP/hierarchical.php | 31 +++++++
src/templates/involvement-single.php | 72 ++++++++-------
src/templates/partner-single.php | 10 ++
10 files changed, 279 insertions(+), 64 deletions(-)
create mode 100644 src/TouchPoint-WP/hierarchical.php
diff --git a/assets/template/partials-template-style.css b/assets/template/partials-template-style.css
index e65ec75c..53b49baa 100644
--- a/assets/template/partials-template-style.css
+++ b/assets/template/partials-template-style.css
@@ -203,4 +203,31 @@ main.TouchPointWP-main {
article .TouchPointWP-detail-cell .TouchPointWP-detail-cell-section {
text-align:center;
margin-bottom: 2em;
+}
+
+header div.header-image-container {
+ max-width: 800px;
+ width: 100%;
+ padding-top: 50%;
+ margin-left: auto;
+ margin-right: auto;
+ background-size: cover;
+ background-position: center;
+ overflow:hidden;
+}
+
+header div.header-image-container.partner-header-image {
+ background-size: contain;
+}
+
+header div.header-image-container img {
+ /* visible to screen readers only */
+ position: absolute;
+ width: 1px;
+ height: 1px;
+ padding: 0;
+ margin: -1px;
+ overflow: hidden;
+ clip: rect(0, 0, 0, 0);
+ border: 0;
}
\ No newline at end of file
diff --git a/src/TouchPoint-WP/Involvement.php b/src/TouchPoint-WP/Involvement.php
index 7deeba06..06d403be 100644
--- a/src/TouchPoint-WP/Involvement.php
+++ b/src/TouchPoint-WP/Involvement.php
@@ -13,6 +13,7 @@
require_once "api.php";
require_once "jsInstantiation.php";
require_once "jsonLd.php";
+ require_once "hierarchical.php";
require_once "updatesViaCron.php";
require_once "Utilities.php";
require_once "Involvement_PostTypeSettings.php";
@@ -40,7 +41,7 @@
/**
* Fundamental object meant to correspond to an Involvement in TouchPoint
*/
-class Involvement extends PostTypeCapable implements api, updatesViaCron, hasGeo, module, JsonSerializable
+class Involvement extends PostTypeCapable implements api, updatesViaCron, hasGeo, module, hierarchical, JsonSerializable
{
use jsInstantiation;
use jsonLd;
@@ -300,15 +301,15 @@ public static function init(): void
}
// Register default templates for Involvements
- add_filter('template_include', [self::class, 'templateFilter']);
+ add_filter('template_include', [self::class, 'templateFilter'], 10, 1);
// Register function to return schedule instead of publishing date
add_filter('get_the_date', [self::class, 'filterPublishDate'], 10, 3);
add_filter('get_the_time', [self::class, 'filterPublishDate'], 10, 3);
// Register function to return leaders instead of authors
- add_filter('the_author', [self::class, 'filterAuthor'], 10, 3);
- add_filter('get_the_author_display_name', [self::class, 'filterAuthor'], 10, 3);
+ add_filter('the_author', [self::class, 'filterAuthor'], 10, 1);
+ add_filter('get_the_author_display_name', [self::class, 'filterAuthor'], 10, 1);
}
public static function checkUpdates(): void
@@ -615,7 +616,8 @@ public function getRegistrationType(): int
* Whether the involvement should link to a registration form, rather than directly joining the org.
*
* @since 0.0.90 Deprecated
- * @deprecated 0.0.90 Does not take into account all the possible registration types; will be removed in a future version.
+ * @deprecated 0.0.90 Does not take into account all the possible registration types; will be removed in a future
+ * version.
*
* @return bool
*/
@@ -667,12 +669,39 @@ protected function schedules(): array
return $this->_schedules;
}
+ /**
+ * Get the parent of this object **which may be an object of a different class**.
+ *
+ * Returns null if there is no parent.
+ *
+ * @return Involvement|null
+ */
+ public function getParent(): ?Involvement
+ {
+ if ($this->parentPostId === null) {
+ $this->parentPostId = $this->post->post_parent;
+ if ($this->parentPostId > 0) {
+ $parent = get_post($this->parentPostId);
+ if ($parent !== null) {
+ try {
+ $this->parentObject = self::fromPost($parent);
+ } catch (TouchPointWP_Exception) {
+ $this->parentObject = null;
+ }
+ }
+ }
+ }
+ return $this->parentObject;
+ }
+ protected ?int $parentPostId = null;
+ protected ?self $parentObject = null;
+
/**
* Get a description of the meeting schedule in a human-friendly phrase, e.g. Sundays at 11:00am, starting January
* 14.
*
- * This is separated out to a static method to prevent involvement from being instantiated (with those database hits)
- * when the content is cached. (10x faster or more)
+ * This is separated out to a static method to prevent involvement from being instantiated (with those database
+ * hits) when the content is cached. (10x faster or more)
*
* @param int $invId
* @param ?Involvement $inv
@@ -2725,7 +2754,7 @@ protected static function doPostUpdate($post, object $inv, Involvement_PostTypeS
unset($timeStr, $weekday);
}
- // Start and end dates
+ // first and last meeting dates
$tense = Taxonomies::TAX_TENSE_PRESENT;
if ($inv->firstMeeting !== null && $inv->firstMeeting < Utilities::dateTimeNow()) { // First meeting already happened.
$inv->firstMeeting = null; // We don't need to list info from the past.
@@ -3118,8 +3147,8 @@ protected static function doMeetingMetaUpdates(WP_Post $mtgP, ?object $mtgO, boo
delete_post_meta($mtgP->ID, Meeting::MEETING_STATUS_META_KEY);
} else {
update_post_meta($mtgP->ID, Meeting::MEETING_META_KEY, $mtgO->mtgId);
- update_post_meta($mtgP->ID, Meeting::MEETING_START_META_KEY, DateFormats::timestampAndOffset($mtgO->mtgStartDt));
- update_post_meta($mtgP->ID, Meeting::MEETING_END_META_KEY, DateFormats::timestampAndOffset($mtgO->mtgEndDt));
+ update_post_meta($mtgP->ID, Meeting::MEETING_START_META_KEY, DateFormats::timestampWithoutOffset($mtgO->mtgStartDt));
+ update_post_meta($mtgP->ID, Meeting::MEETING_END_META_KEY, DateFormats::timestampWithoutOffset($mtgO->mtgEndDt));
update_post_meta($mtgP->ID, Meeting::MEETING_FEAT_META_KEY, !!$feature);
update_post_meta($mtgP->ID, Meeting::MEETING_INV_ID_META_KEY, $mtgO->involvementId);
update_post_meta($mtgP->ID, Meeting::MEETING_STATUS_META_KEY, intval($mtgO->status));
@@ -3520,11 +3549,13 @@ public function notableAttributes(array $exclude = []): array
*/
public function getActionButtons(string $context = null, string $btnClass = "", bool $withTouchPointLink = true, bool $absoluteLinks = false, bool $includeRegister = true): StringableArray
{
- TouchPointWP::requireScript('swal2-defer');
- TouchPointWP::requireScript('base-defer');
- $this->enqueueForJsInstantiation();
- $this->enqueueForJsonLdInstantiation();
- Person::enqueueUsersForJsInstantiation();
+ if (!$absoluteLinks) {
+ TouchPointWP::requireScript('swal2-defer');
+ TouchPointWP::requireScript('base-defer');
+ $this->enqueueForJsInstantiation();
+ $this->enqueueForJsonLdInstantiation();
+ Person::enqueueUsersForJsInstantiation();
+ }
$classesOnly = $btnClass;
if ($btnClass !== "") {
@@ -3591,7 +3622,8 @@ public function getActionButtons(string $context = null, string $btnClass = "",
* Get the HTML for the register button. Labels depend on several settings within TouchPoint.
*
* @param string $btnClass Class names
- * @param bool $absoluteLinks Whether only absolute links should be provided that can be used in emails, apps, etc.
+ * @param bool $absoluteLinks Whether only absolute links should be provided that can be used in emails, apps,
+ * etc.
*
* @return ?string HTML for the registration button, whatever that should be. Null if nothing to return.
*/
@@ -3630,7 +3662,9 @@ public function getRegisterButton(string $btnClass, bool $absoluteLinks = false)
break;
}
$link = TouchPointWP::instance()->host() . "/OnlineReg/" . $this->invId;
- TouchPointWP::enqueueActionsStyle('inv-register');
+ if (!$absoluteLinks) {
+ TouchPointWP::enqueueActionsStyle('inv-register');
+ }
return "$text ";
case RegistrationType::JOIN:
@@ -3645,7 +3679,9 @@ public function getRegisterButton(string $btnClass, bool $absoluteLinks = false)
case RegistrationType::EXTERNAL:
$text = __('Register', 'TouchPoint-WP');
$link = $this->getRegistrationUrl();
- TouchPointWP::enqueueActionsStyle('inv-register');
+ if (!$absoluteLinks) {
+ TouchPointWP::enqueueActionsStyle('inv-register');
+ }
return "$text ";
case RegistrationType::RSVP:
diff --git a/src/TouchPoint-WP/Meeting.php b/src/TouchPoint-WP/Meeting.php
index 6ef2923c..bfe2a043 100644
--- a/src/TouchPoint-WP/Meeting.php
+++ b/src/TouchPoint-WP/Meeting.php
@@ -11,6 +11,7 @@
if ( ! TOUCHPOINT_COMPOSER_ENABLED) {
require_once 'api.php';
+ require_once 'hierarchical.php';
}
use DateTime;
@@ -25,7 +26,7 @@
/**
* Handle meeting content, particularly RSVPs.
*/
-class Meeting extends PostTypeCapable implements api, module, hasGeo
+class Meeting extends PostTypeCapable implements api, module, hasGeo, hierarchical
{
use jsInstantiation;
// use jsonLd; TODO
@@ -43,7 +44,7 @@ class Meeting extends PostTypeCapable implements api, module, hasGeo
// This is the same as the meta key for involvement locations.
public const MEETING_LOCATION_META_KEY = TouchPointWP::SETTINGS_PREFIX . "locationName";
- private static bool $_isLoaded = false; // TODO why is this here?
+ private static bool $_isLoaded = false;
private static array $_instances = [];
private static ?Involvement_PostTypeSettings $_typeSet = null;
@@ -167,8 +168,11 @@ protected function __construct(object $object)
$start = intval(get_post_meta($this->post_id, self::MEETING_START_META_KEY, true));
$end = intval(get_post_meta($this->post_id, self::MEETING_END_META_KEY, true));
$tz = wp_timezone();
- $this->startDt = ($start === 0 ? null : DateTimeImmutable::createFromMutable(DateTime::createFromFormat("U", $start, $tz)));
- $this->endDt = ($end === 0 ? null : DateTimeImmutable::createFromMutable(DateTime::createFromFormat("U", $end, $tz)));
+ $tz0 = Utilities::utcTimeZone();
+ $startDt = $start === 0 ? null : DateTime::createFromFormat("U", $start, $tz0)->setTimezone($tz);
+ $endDt = $end === 0 ? null : DateTime::createFromFormat("U", $end, $tz0)->setTimezone($tz);
+ $this->startDt = ($startDt === null ? null : DateTimeImmutable::createFromMutable($startDt));
+ $this->endDt = ($endDt === null ? null : DateTimeImmutable::createFromMutable($endDt));
$this->registerConstruction();
}
@@ -257,6 +261,7 @@ public function involvementId(): int
/**
* Get the Involvement object associated with this Meeting.
*
+ * @return Involvement
* @throws TouchPointWP_Exception
*/
public function involvement(): Involvement
@@ -271,6 +276,23 @@ public function involvement(): Involvement
throw new TouchPointWP_Exception("Meeting is not associated with an Involvement.", 171002);
}
+
+ /**
+ * Get the parent of this object **which is a different class**.
+ *
+ * Returns null if there is no parent.
+ *
+ * @return ?Involvement
+ */
+ public function getParent(): ?Involvement
+ {
+ try {
+ return $this->involvement();
+ } catch (TouchPointWP_Exception) {
+ return null;
+ }
+ }
+
/**
* Get the human-readable schedule for the meeting as a string. If multiple elements exist, they will be joined by
* $join. Returns null if the schedule string is unavailable for some reason.
@@ -364,11 +386,13 @@ public function notableAttributes(array $exclude = []): array
*/
public function getActionButtons(string $context = null, string $btnClass = "", bool $withTouchPointLink = true, bool $absoluteLinks = false): StringableArray
{
- TouchPointWP::requireScript('swal2-defer');
- TouchPointWP::requireScript('base-defer');
- $this->enqueueForJsInstantiation();
-// $this->enqueueForJsonLdInstantiation();
- Person::enqueueUsersForJsInstantiation();
+ if (!$absoluteLinks) {
+ TouchPointWP::requireScript('swal2-defer');
+ TouchPointWP::requireScript('base-defer');
+ $this->enqueueForJsInstantiation();
+// $this->enqueueForJsonLdInstantiation();
+ Person::enqueueUsersForJsInstantiation();
+ }
try {
$inv = $this->involvement();
@@ -454,6 +478,42 @@ public function status_i18n(bool $excludeScheduled = false): ?string
};
}
+ /**
+ * Filters the post thumbnail ID. Allows meetings to have the image of their parent without having an image themselves.
+ *
+ * @param int|false $thumbnail_id Post thumbnail ID or false if the post does not exist.
+ * @param int|WP_Post|null $post Post ID or WP_Post object. Default is global `$post`.
+ */
+ public static function filterThumbnailId(int|false $thumbnail_id, int|WP_Post|null $post): bool|int
+ {
+ if ($thumbnail_id > 0) { // If already set, we have nothing to do.
+ return $thumbnail_id;
+ }
+
+ if (is_numeric($post)) {
+ $post = get_post($post);
+ }
+
+ if (!$post instanceof WP_Post) { // Something went wrong because we don't have a post.
+ return $thumbnail_id;
+ }
+
+ if (!self::postIsType($post)) { // Not our problem
+ return $thumbnail_id;
+ }
+
+ try {
+ $involvementPostId = Meeting::fromPost($post)->getParent()?->post_id();
+ if (!$involvementPostId) {
+ return $thumbnail_id;
+ }
+ return get_post_thumbnail_id($involvementPostId);
+ } catch (TouchPointWP_Exception) {
+ }
+
+ return $thumbnail_id;
+ }
+
/**
* Handle API requests
*
@@ -643,10 +703,22 @@ public static function postIsType(WP_Post $post): bool
public static function load(): bool
{
- // TODO: Implement load() method... or make not a module anymore.
+ if (self::$_isLoaded) {
+ return true;
+ }
+
+ self::$_isLoaded = true;
+
+ add_action(TouchPointWP::INIT_ACTION_HOOK, [self::class, 'init']);
+
return true;
}
+ public static function init(): void
+ {
+ add_filter('post_thumbnail_id', [self::class, 'filterThumbnailId'], 10, 3);
+ }
+
/**
* Indicate the tense of the meeting.
*
diff --git a/src/TouchPoint-WP/TouchPointWP.php b/src/TouchPoint-WP/TouchPointWP.php
index e1009b87..0f8d5e29 100644
--- a/src/TouchPoint-WP/TouchPointWP.php
+++ b/src/TouchPoint-WP/TouchPointWP.php
@@ -691,7 +691,8 @@ public static function load($file): TouchPointWP
}
// Load Involvements tool if enabled.
- if ($instance->settings->enable_involvements === "on") {
+ if ($instance->settings->enable_involvements === "on" ||
+ $instance->settings->enable_meeting_cal === "on") {
$instance->involvements = Involvement::load();
}
@@ -710,9 +711,6 @@ public static function load($file): TouchPointWP
// Load Meetings / Events Calendar
if ($instance->settings->enable_meeting_cal === "on") {
- if ( ! TOUCHPOINT_COMPOSER_ENABLED) {
- require_once 'Meeting.php';
- }
$instance->meeting = Meeting::load();
}
diff --git a/src/TouchPoint-WP/Utilities.php b/src/TouchPoint-WP/Utilities.php
index b59382f4..90249c83 100644
--- a/src/TouchPoint-WP/Utilities.php
+++ b/src/TouchPoint-WP/Utilities.php
@@ -8,6 +8,7 @@
use DateInterval;
use DateTimeImmutable;
use DateTimeInterface;
+use DateTimeZone;
use Exception;
use WP_Post_Type;
@@ -88,11 +89,24 @@ public static function dateTimeNowPlus1D(): DateTimeImmutable
return self::$_dateTimeNowPlus1D;
}
+
+ /**
+ * @return DateTimeZone
+ */
+ public static function utcTimeZone(): DateTimeZone
+ {
+ if (self::$_utcTimeZone === null) {
+ self::$_utcTimeZone = new DateTimeZone('UTC');
+ }
+
+ return self::$_utcTimeZone;
+ }
private static ?DateTimeImmutable $_dateTimeNow = null;
private static ?DateTimeImmutable $_dateTimeTodayAtMidnight = null;
private static ?DateTimeImmutable $_dateTimeNowPlus1Y = null;
private static ?DateTimeImmutable $_dateTimeNowPlus1D = null;
+ private static ?DateTimeZone $_utcTimeZone = null;
/**
* Gets the plural form of a weekday name.
diff --git a/src/TouchPoint-WP/Utilities/DateFormats.php b/src/TouchPoint-WP/Utilities/DateFormats.php
index 318431e3..26511445 100644
--- a/src/TouchPoint-WP/Utilities/DateFormats.php
+++ b/src/TouchPoint-WP/Utilities/DateFormats.php
@@ -35,6 +35,23 @@ public static function TimeStringFormatted(DateTimeInterface $dt): string
return apply_filters('tp_adjust_time_string', $ts, $dt);
}
+ /**
+ * @param ?DateTimeInterface $dt
+ *
+ * @return int
+ *
+ * @since 0.0.90 added
+ */
+ public static function timestampWithoutOffset(?DateTimeInterface $dt): int
+ {
+ if ($dt === null) {
+ return 0;
+ }
+
+ $dt = $dt->setTimezone(Utilities::utcTimeZone());
+ return $dt->getTimestamp();
+ }
+
/**
* @param ?DateTimeInterface $dt
*
diff --git a/src/TouchPoint-WP/Utilities/StringableArray.php b/src/TouchPoint-WP/Utilities/StringableArray.php
index dc81453f..595e0c9c 100644
--- a/src/TouchPoint-WP/Utilities/StringableArray.php
+++ b/src/TouchPoint-WP/Utilities/StringableArray.php
@@ -40,7 +40,7 @@ public function count(): int
}
/**
- * Append to the end of the array.
+ * Append to the start of the array.
*
* @param mixed $value
*/
diff --git a/src/TouchPoint-WP/hierarchical.php b/src/TouchPoint-WP/hierarchical.php
new file mode 100644
index 00000000..d4e00e06
--- /dev/null
+++ b/src/TouchPoint-WP/hierarchical.php
@@ -0,0 +1,31 @@
+
-
+ get('dv_name_singular'),
+ __("Division", "TouchPoint-WP")
+ );
+
+ $resCodeLabel = wp_sprintf(
+ // Translators: %1$s is the user-provided name for ResCode. %2$s is "Resident Code" or translated equivalent.
+ _x('%1$s (%2$s)', "TouchPoint-WP"),
+ $this->get('rc_name_singular'),
+ __("Resident Code", "TouchPoint-WP")
+ );
+
+ $campusLabel = wp_sprintf(
+ // Translators: %1$s is the user-provided name for Campus. %2$s is "Campus" or translated equivalent.
+ _x('%1$s (%2$s)', "TouchPoint-WP"),
+ $this->get('camp_name_singular'),
+ __("Campus", "TouchPoint-WP")
+ );
+
+ ?>
- get('dv_name_singular') ?>
+
@@ -175,12 +200,12 @@
- get('rc_name_singular') ?>
+
get('enable_campuses') === "on") { ?>
- get('camp_name_singular') ?>
+
diff --git a/src/templates/involvement-single.php b/src/templates/involvement-single.php
index 5679af0c..399c5f7c 100644
--- a/src/templates/involvement-single.php
+++ b/src/templates/involvement-single.php
@@ -44,7 +44,7 @@
$meetingsCalled = $tps->mc_name_singular;
- echo sprintf(
+ echo wp_sprintf(
// Translators: %s is the singular name of the of a Meeting, such as "Event".
__('This %s has been Cancelled.', 'TouchPoint-WP'),
__($meetingsCalled) // deliberately no domain
From 5a58b5082359b1f23b3cd6c67bc4ac688220694c Mon Sep 17 00:00:00 2001
From: "James K."
Date: Thu, 8 Aug 2024 16:01:39 -0400
Subject: [PATCH 160/423] Changing oxford commas to not appear with ampersands.
Related to #194.
---
src/TouchPoint-WP/Person.php | 11 ++++++-----
src/TouchPoint-WP/Utilities.php | 7 ++++---
2 files changed, 10 insertions(+), 8 deletions(-)
diff --git a/src/TouchPoint-WP/Person.php b/src/TouchPoint-WP/Person.php
index ff14488a..c72adb39 100644
--- a/src/TouchPoint-WP/Person.php
+++ b/src/TouchPoint-WP/Person.php
@@ -1435,19 +1435,20 @@ public static function arrangeNamesForPeople($people, bool $asLink = false, int
$familyNames = [];
$comma = ', ';
$and = ' & ';
- $useOxford = false;
+ $useOxford = 0;
foreach ($people as $family) {
$fn = self::formatNamesForFamily($family, $asLink);
- if (strpos($fn, ', ') !== false) {
+ if (str_contains($fn, ', ')) {
$comma = '; ';
- $useOxford = true;
+ $useOxford = $useOxford | 1;
}
- if (strpos($fn, ' & ') !== false) {
+ if (str_contains($fn, ' & ')) {
$and = ' ' . __('and', 'TouchPoint-WP') . ' ';
- $useOxford = true;
+ $useOxford = $useOxford | 2;
}
$familyNames[] = $fn;
}
+ $useOxford = $useOxford === 3;
if ($andOthers) {
$last = _x("others", "list of people, and *others*", "TouchPoint-WP");
} else {
diff --git a/src/TouchPoint-WP/Utilities.php b/src/TouchPoint-WP/Utilities.php
index 90249c83..93d54a40 100644
--- a/src/TouchPoint-WP/Utilities.php
+++ b/src/TouchPoint-WP/Utilities.php
@@ -256,16 +256,17 @@ public static function stringArrayToListString(array $strings): string
$comma = ', ';
$and = ' & ';
- $useOxford = false;
+ $useOxford = 0;
if (str_contains($concat, ', ')) {
$comma = '; ';
- $useOxford = true;
+ $useOxford = $useOxford | 1;
}
if (str_contains($concat, ' & ')) {
$and = ' ' . __('and', 'TouchPoint-WP') . ' ';
- $useOxford = true;
+ $useOxford = $useOxford | 2;
}
+ $useOxford = $useOxford === 3;
$last = array_pop($strings);
$str = implode($comma, $strings);
if (count($strings) > 0) {
From 34ff76c997cc75e9c90c0b6f6569f45181432690 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Thu, 8 Aug 2024 16:15:27 -0400
Subject: [PATCH 161/423] Changing my mind about oxford commas again.
---
src/TouchPoint-WP/Person.php | 7 +++----
src/TouchPoint-WP/Utilities.php | 6 ++----
2 files changed, 5 insertions(+), 8 deletions(-)
diff --git a/src/TouchPoint-WP/Person.php b/src/TouchPoint-WP/Person.php
index c72adb39..719cf8b4 100644
--- a/src/TouchPoint-WP/Person.php
+++ b/src/TouchPoint-WP/Person.php
@@ -1435,20 +1435,19 @@ public static function arrangeNamesForPeople($people, bool $asLink = false, int
$familyNames = [];
$comma = ', ';
$and = ' & ';
- $useOxford = 0;
+ $useOxford = false;
foreach ($people as $family) {
$fn = self::formatNamesForFamily($family, $asLink);
if (str_contains($fn, ', ')) {
$comma = '; ';
- $useOxford = $useOxford | 1;
}
if (str_contains($fn, ' & ')) {
$and = ' ' . __('and', 'TouchPoint-WP') . ' ';
- $useOxford = $useOxford | 2;
+ $useOxford = true;
}
$familyNames[] = $fn;
}
- $useOxford = $useOxford === 3;
+
if ($andOthers) {
$last = _x("others", "list of people, and *others*", "TouchPoint-WP");
} else {
diff --git a/src/TouchPoint-WP/Utilities.php b/src/TouchPoint-WP/Utilities.php
index 93d54a40..6fb439a6 100644
--- a/src/TouchPoint-WP/Utilities.php
+++ b/src/TouchPoint-WP/Utilities.php
@@ -256,17 +256,15 @@ public static function stringArrayToListString(array $strings): string
$comma = ', ';
$and = ' & ';
- $useOxford = 0;
+ $useOxford = false;
if (str_contains($concat, ', ')) {
$comma = '; ';
- $useOxford = $useOxford | 1;
}
if (str_contains($concat, ' & ')) {
$and = ' ' . __('and', 'TouchPoint-WP') . ' ';
- $useOxford = $useOxford | 2;
+ $useOxford = true;
}
- $useOxford = $useOxford === 3;
$last = array_pop($strings);
$str = implode($comma, $strings);
if (count($strings) > 0) {
From a497fce9c535eb3ee93755b41a97724e5fd0321a Mon Sep 17 00:00:00 2001
From: "James K."
Date: Thu, 8 Aug 2024 17:08:01 -0400
Subject: [PATCH 162/423] Breaking schedule strings into parts for most
Involvement situations. Makes more complicated schedules a lot easier to
read. Closes #194.
---
src/TouchPoint-WP/Involvement.php | 160 ++++++++++++++++++------------
src/TouchPoint-WP/Meeting.php | 2 +-
2 files changed, 98 insertions(+), 64 deletions(-)
diff --git a/src/TouchPoint-WP/Involvement.php b/src/TouchPoint-WP/Involvement.php
index 06d403be..b9e9f06a 100644
--- a/src/TouchPoint-WP/Involvement.php
+++ b/src/TouchPoint-WP/Involvement.php
@@ -78,7 +78,7 @@ class Involvement extends PostTypeCapable implements api, updatesViaCron, hasGeo
protected ?DateTimeExtended $_nextMeeting;
protected ?DateTimeExtended $firstMeeting = null;
protected ?DateTimeExtended $lastMeeting = null;
- protected ?string $_scheduleString;
+ protected ?array $_scheduleStrings = null;
protected ?array $_meetings = null;
protected ?array $_schedules = null;
protected PersonArray $_leaders;
@@ -697,20 +697,20 @@ public function getParent(): ?Involvement
protected ?self $parentObject = null;
/**
- * Get a description of the meeting schedule in a human-friendly phrase, e.g. Sundays at 11:00am, starting January
- * 14.
- *
- * This is separated out to a static method to prevent involvement from being instantiated (with those database
- * hits) when the content is cached. (10x faster or more)
+ * Get the several different strings that can be used to describe the start/end/etc of this involvement.
*
* @param int $invId
* @param ?Involvement $inv
*
- * @return ?string
+ * @return ?string[]
*/
- public static function scheduleString(int $invId, $inv = null): ?string
+ protected static function scheduleStrings(int $invId, $inv = null): ?array
{
- $cacheKey = $invId . "_" . get_locale();
+ if (isset($inv->_scheduleStrings)) {
+ return $inv->_scheduleStrings;
+ }
+
+ $cacheKey = $invId . "_" . get_locale() . "_v2";
$schStr = wp_cache_get($cacheKey, self::SCHEDULE_STRING_CACHE_GROUP);
if (!! $schStr) {
return $schStr;
@@ -722,16 +722,33 @@ public static function scheduleString(int $invId, $inv = null): ?string
return null;
}
}
- if (! isset($inv->_scheduleString)) {
- $inv->_scheduleString = $inv->scheduleString_calc();
- wp_cache_set(
- $cacheKey,
- $inv->_scheduleString,
- self::SCHEDULE_STRING_CACHE_GROUP,
- self::SCHEDULE_STRING_CACHE_EXPIRATION
- );
- }
- return $inv->_scheduleString === "" ? null : $inv->_scheduleString;
+ $inv->_scheduleStrings = $inv->scheduleStrings_calc();
+ wp_cache_set(
+ $cacheKey,
+ $inv->_scheduleStrings,
+ self::SCHEDULE_STRING_CACHE_GROUP,
+ self::SCHEDULE_STRING_CACHE_EXPIRATION
+ );
+ return $inv->_scheduleStrings;
+ }
+
+
+ /**
+ * Get a description of the meeting schedule in a human-friendly phrase, e.g. Sundays at 11:00am, starting January
+ * 14.
+ *
+ * This is separated out to a static method to prevent involvement from being instantiated (with those database
+ * hits) when the content is cached. (10x faster or more)
+ *
+ * @param int $invId
+ * @param ?Involvement $inv
+ *
+ * @return ?string
+ */
+ public static function scheduleString(int $invId, $inv = null): ?string
+ {
+ $s = self::scheduleStrings($invId, $inv);
+ return $s['combined'];
}
/**
@@ -879,16 +896,23 @@ protected static function computeCommonOccurrences(array $meetings = [], array $
}
/**
- * Calculate the schedule string.
+ * Calculate the schedule strings.
*
- * @return string
+ * @return string[]
*/
- protected function scheduleString_calc(): string
+ protected function scheduleStrings_calc(): array
{
$commonOccurrences = self::computeCommonOccurrences($this->meetings(), $this->schedules());
$dateFormat = get_option('date_format');
+ $r = [
+ 'datetime' => null,
+ 'date' => null,
+ 'time' => null,
+ 'firstLast' => null,
+ 'combined' => null
+ ];
$uniqueTimeStrings = [];
$days = [];
@@ -964,6 +988,7 @@ protected function scheduleString_calc(): string
}
}
$dayStr = Utilities::stringArrayToListString($dayStr);
+ $r['date'] = $dayStr;
} else { // one time of day. Tue & Thu at 7pm
if (count($days) > 1) {
// more than one day per week
@@ -977,28 +1002,32 @@ protected function scheduleString_calc(): string
$k = array_key_first($days);
$dayStr = Utilities::getPluralDayOfWeekNameForNumber(intval($k[1]));
}
+ $r['date'] = $dayStr;
$dt = array_values($days)[0][0];
/** @var $dt DateTimeExtended */
if ($dt->isAllDay) {
// translators: "Mon All Day" or "Sundays All Day"
$dayStr = wp_sprintf(__('%1$s All Day', 'TouchPoint-WP'), $dayStr);
+ $r['time'] = __('All Day', 'TouchPoint-WP');
} else {
$timeStr = DateFormats::TimeStringFormatted($dt);
// translators: %1$s is the date(s), %2$s is the time(s).
$dayStr = wp_sprintf(__('%1$s at %2$s', 'TouchPoint-WP'), $dayStr, $timeStr);
+ $r['time'] = $timeStr;
}
}
- // Convert start and end to string.
+ // Convert start and end to string,
if ($this->firstMeeting !== null && $this->lastMeeting !== null) {
+ $r['firstLast'] = wp_sprintf(
+ // translators: {start date} through {end date} e.g. February 14 through August 12
+ __('%1$s through %2$s', 'TouchPoint-WP'),
+ $this->firstMeeting->format($dateFormat),
+ $this->lastMeeting->format($dateFormat)
+ );
if ($dayStr === null) {
- $dayStr = wp_sprintf(
- // translators: {start date} through {end date} e.g. February 14 through August 12
- __('%1$s through %2$s', 'TouchPoint-WP'),
- $this->firstMeeting->format($dateFormat),
- $this->lastMeeting->format($dateFormat)
- );
+ $dayStr = $r['firstLast'];
} else {
$dayStr = wp_sprintf(
// translators: {schedule}, {start date} through {end date} e.g. Sundays at 11am, February 14 through August 12
@@ -1009,12 +1038,13 @@ protected function scheduleString_calc(): string
);
}
} elseif ($this->firstMeeting !== null) {
- if ($dayStr === null) {
- $dayStr = wp_sprintf(
+ $r['firstLast'] = wp_sprintf(
// translators: Starts {start date} e.g. Starts September 15
- __('Starts %1$s', 'TouchPoint-WP'),
- $this->firstMeeting->format($dateFormat)
- );
+ __('Starts %1$s', 'TouchPoint-WP'),
+ $this->firstMeeting->format($dateFormat)
+ );
+ if ($dayStr === null) {
+ $dayStr = $r['firstLast'];
} else {
$dayStr = wp_sprintf(
// translators: {schedule}, starting {start date} e.g. Sundays at 11am, starting February 14
@@ -1024,12 +1054,13 @@ protected function scheduleString_calc(): string
);
}
} elseif ($this->lastMeeting !== null) {
+ $r['firstLast'] = wp_sprintf(
+ // translators: Through {end date} e.g. Through September 15
+ __('Through %1$s', 'TouchPoint-WP'),
+ $this->lastMeeting->format($dateFormat)
+ );
if ($dayStr === null) {
- $dayStr = wp_sprintf(
- // translators: Through {end date} e.g. Through September 15
- __('Through %1$s', 'TouchPoint-WP'),
- $this->lastMeeting->format($dateFormat)
- );
+ $dayStr = $r['firstLast'];
} else {
$dayStr = wp_sprintf(
// translators: {schedule}, through {end date} e.g. Sundays at 11am, through February 14
@@ -1039,13 +1070,12 @@ protected function scheduleString_calc(): string
);
}
}
- return $dayStr;
-
+ $r['combined'] = $dayStr;
} else { // Uncommon schedules
if (count($commonOccurrences) === 0) {
- return "";
+ return $r;
}
$forceDateTime = false;
@@ -1053,21 +1083,21 @@ protected function scheduleString_calc(): string
$dateArr = new StringableArray();
$timeArr = [];
foreach ($commonOccurrences as $co) {
- $r = DateFormats::DurationToStringArray($co['example'], $co['exampleEnd'], null, $co['example']->isAllDay);
+ $a = DateFormats::DurationToStringArray($co['example'], $co['exampleEnd'], null, $co['example']->isAllDay);
- if (isset($r['datetime'])) {
+ if (isset($a['datetime'])) {
$forceDateTime = true;
- $dateTimeArr[] = $r['datetime'];
+ $dateTimeArr[] = $a['datetime'];
} else {
$dateTimeArr[] = wp_sprintf(
// translators: %1$s is the date(s), %2$s is the time(s).
- __('%1$s at %2$s', 'TouchPoint-WP'), $r['date'], $r['time']
+ __('%1$s at %2$s', 'TouchPoint-WP'), $a['date'], $a['time']
);
if ( !$dateArr->contains(['date'])) {
- $dateArr[] = $r['date'];
+ $dateArr[] = $a['date'];
}
- if (!in_array($r['time'], $timeArr)) {
- $timeArr[] = $r['time'];
+ if (!in_array($a['time'], $timeArr)) {
+ $timeArr[] = $a['time'];
}
}
}
@@ -1076,16 +1106,23 @@ protected function scheduleString_calc(): string
}
if ($forceDateTime) {
- return $dateTimeArr->__toString();
- }
-
- $dateStr = $dateArr->toListString();
+ $r['datetime'] = $dateTimeArr->__toString();
+ $r['combined'] = $r['datetime'];
+ } else {
+ $dateStr = $dateArr->toListString();
- return wp_sprintf(
- // translators: %1$s is the date(s), %2$s is the time(s).
- __('%1$s at %2$s', 'TouchPoint-WP'), $dateStr, $timeArr[0]
- );
+ $r['date'] = $dateStr;
+ $r['time'] = $timeArr[0];
+ $r['combined'] = wp_sprintf(
+ // translators: %1$s is the date(s), %2$s is the time(s).
+ __('%1$s at %2$s', 'TouchPoint-WP'),
+ $dateStr,
+ $timeArr[0]
+ );
+ }
}
+
+ return $r;
}
@@ -3454,16 +3491,13 @@ public function toJsonLD(): ?array
*/
public function notableAttributes(array $exclude = []): array
{
- $attrs = [];
-
$asMeeting = $this->AsAMeeting();
if ($asMeeting !== null) {
$attrs = $asMeeting->notableAttributes(['involvement']);
} else {
- $schStr = self::scheduleString($this->invId, $this);
- if ($schStr) {
- $attrs['schedule'] = $schStr;
- }
+ $attrs = self::scheduleStrings($this->invId, $this);
+ unset($attrs['combined']);
+ $attrs = array_filter($attrs);
}
unset($schStr);
diff --git a/src/TouchPoint-WP/Meeting.php b/src/TouchPoint-WP/Meeting.php
index f6fb3278..0574dc41 100644
--- a/src/TouchPoint-WP/Meeting.php
+++ b/src/TouchPoint-WP/Meeting.php
@@ -344,7 +344,7 @@ public function notableAttributes(array $exclude = []): array
$attrs = [];
} else {
try {
- $attrs = $this->involvement()->notableAttributes(['schedule', 'date', 'datetime', 'time']);
+ $attrs = $this->involvement()->notableAttributes(['date', 'datetime', 'time', 'firstLast']);
} catch (TouchPointWP_Exception) {
$attrs = [];
}
From 28e65a6c54f23a77f50a721e4bac4966779ec6f4 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Thu, 8 Aug 2024 17:17:25 -0400
Subject: [PATCH 163/423] Resolve a bug where maps were showing for meetings
and involvements that don't have geo. Possibly related to #187.
---
src/templates/involvement-single.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/templates/involvement-single.php b/src/templates/involvement-single.php
index 399c5f7c..d8e30017 100644
--- a/src/templates/involvement-single.php
+++ b/src/templates/involvement-single.php
@@ -82,7 +82,7 @@
getActionButtons('single-template', "btn button") ?>
- useGeo && $obj->hasGeo() !== null) { ?>
+ useGeo && $obj->hasGeo()) { ?>
From 7d9f1aef95ec6b0172c514d63e37ec9aa18e196f Mon Sep 17 00:00:00 2001
From: "James K."
Date: Thu, 8 Aug 2024 17:48:54 -0400
Subject: [PATCH 164/423] Update to modern standard for date formatting.
Closes #189.
---
composer.json | 2 +-
i18n/TouchPoint-WP-es_ES.po | 210 ++++++++++---------
i18n/TouchPoint-WP.pot | 216 +++++++++++---------
src/TouchPoint-WP/CalendarGrid.php | 12 +-
src/TouchPoint-WP/TouchPointWP.php | 2 +-
src/TouchPoint-WP/Utilities/DateFormats.php | 27 +--
touchpoint-wp.php | 2 +-
7 files changed, 252 insertions(+), 219 deletions(-)
diff --git a/composer.json b/composer.json
index 88deaebc..6fca4c4f 100644
--- a/composer.json
+++ b/composer.json
@@ -3,7 +3,7 @@
"description": "A WordPress Plugin for integrating with TouchPoint Church Management Software.",
"license": "AGPL-3.0-or-later",
"type": "wordpress-plugin",
- "version": "0.0.90",
+ "version": "0.0.91",
"keywords": [
"wordpress",
"wp",
diff --git a/i18n/TouchPoint-WP-es_ES.po b/i18n/TouchPoint-WP-es_ES.po
index 97400efb..c0bb63e1 100644
--- a/i18n/TouchPoint-WP-es_ES.po
+++ b/i18n/TouchPoint-WP-es_ES.po
@@ -12,27 +12,27 @@ msgstr ""
"Language: \n"
#. Plugin Name of the plugin
-#: C:\Dev\TouchPoint-WP\touchpoint-wp.php
+#: touchpoint-wp.php
msgid "TouchPoint WP"
msgstr "TouchPoint WP"
#. Plugin URI of the plugin
-#: C:\Dev\TouchPoint-WP\touchpoint-wp.php
+#: touchpoint-wp.php
msgid "https://github.com/tenthpres/touchpoint-wp"
msgstr "https://github.com/tenthpres/touchpoint-wp"
#. Description of the plugin
-#: C:\Dev\TouchPoint-WP\touchpoint-wp.php
+#: touchpoint-wp.php
msgid "A WordPress Plugin for integrating with TouchPoint Church Management Software."
msgstr "Un complemento de WordPress para integrarse con TouchPoint, el software de administración de iglesias."
#. Author of the plugin
-#: C:\Dev\TouchPoint-WP\touchpoint-wp.php
+#: touchpoint-wp.php
msgid "James K"
msgstr "James K"
#. Author URI of the plugin
-#: C:\Dev\TouchPoint-WP\touchpoint-wp.php
+#: touchpoint-wp.php
msgid "https://github.com/jkrrv"
msgstr "https://github.com/jkrrv"
@@ -85,7 +85,7 @@ msgstr "Tipos de miembros de líder"
#: src/templates/admin/invKoForm.php:125
#: src/templates/admin/invKoForm.php:141
-#: src/templates/admin/invKoForm.php:268
+#: src/templates/admin/invKoForm.php:293
#: src/templates/parts/involvement-nearby-list.php:2
#: src/TouchPoint-WP/Meeting.php:673
#: src/TouchPoint-WP/Rsvp.php:75
@@ -114,66 +114,66 @@ msgstr "Próximo / Actual"
msgid "Current / Upcoming"
msgstr "Actual / Próximo"
-#: src/templates/admin/invKoForm.php:165
+#: src/templates/admin/invKoForm.php:167
msgid "Default Filters"
msgstr "Filtros predeterminados"
-#: src/templates/admin/invKoForm.php:174
+#: src/templates/admin/invKoForm.php:199
msgid "Gender"
msgstr "Género"
-#: src/templates/admin/invKoForm.php:188
-#: src/TouchPoint-WP/Involvement.php:1788
+#: src/templates/admin/invKoForm.php:213
+#: src/TouchPoint-WP/Involvement.php:1825
#: src/TouchPoint-WP/Taxonomies.php:744
msgid "Weekday"
msgstr "Día laborable"
-#: src/templates/admin/invKoForm.php:192
-#: src/TouchPoint-WP/Involvement.php:1814
+#: src/templates/admin/invKoForm.php:217
+#: src/TouchPoint-WP/Involvement.php:1851
#: src/TouchPoint-WP/Taxonomies.php:802
msgid "Time of Day"
msgstr "Hora del día"
-#: src/templates/admin/invKoForm.php:196
+#: src/templates/admin/invKoForm.php:221
msgid "Prevailing Marital Status"
msgstr "Estado civil prevaleciente"
-#: src/templates/admin/invKoForm.php:200
+#: src/templates/admin/invKoForm.php:225
#: src/TouchPoint-WP/Taxonomies.php:831
msgid "Age Group"
msgstr "Grupo de edad"
-#: src/templates/admin/invKoForm.php:205
+#: src/templates/admin/invKoForm.php:230
msgid "Task Owner"
msgstr "Propietario de la tarea"
-#: src/templates/admin/invKoForm.php:212
+#: src/templates/admin/invKoForm.php:237
msgid "Contact Leader Task Keywords"
msgstr "Palabras clave de la tarea del líder de contacto"
-#: src/templates/admin/invKoForm.php:223
+#: src/templates/admin/invKoForm.php:248
msgid "Join Task Keywords"
msgstr "Unirse a las palabras clave de la tarea"
-#: src/templates/admin/invKoForm.php:239
+#: src/templates/admin/invKoForm.php:264
msgid "Add Involvement Post Type"
msgstr "Agregar tipo de publicación de participación"
-#: src/templates/admin/invKoForm.php:246
+#: src/templates/admin/invKoForm.php:271
msgid "Small Group"
msgstr "Grupo Pequeño"
-#: src/templates/admin/invKoForm.php:247
+#: src/templates/admin/invKoForm.php:272
msgid "Small Groups"
msgstr "Grupos Pequeños"
-#: src/templates/admin/invKoForm.php:378
+#: src/templates/admin/invKoForm.php:403
msgid "Select..."
msgstr "Seleccione..."
#. translators: %s will be the plural post type (e.g. Small Groups)
#: src/templates/parts/involvement-list-none.php:16
-#: src/TouchPoint-WP/Involvement.php:2034
+#: src/TouchPoint-WP/Involvement.php:2071
msgid "No %s Found."
msgstr "No se encontraron %s"
@@ -224,64 +224,64 @@ msgstr "Registro aún no abierto"
msgid "Registration Closed"
msgstr "Registro cerrado"
-#: src/TouchPoint-WP/Involvement.php:1663
+#: src/TouchPoint-WP/Involvement.php:1700
#: src/TouchPoint-WP/Partner.php:810
msgid "Any"
msgstr "Cualquier"
#. translators: %s is for the user-provided term for the items on the map (e.g. Small Group or Partner)
-#: src/TouchPoint-WP/Involvement.php:1871
+#: src/TouchPoint-WP/Involvement.php:1908
#: src/TouchPoint-WP/Partner.php:834
msgid "The %s listed are only those shown on the map."
msgstr "Los %s enumerados son solo los que se muestran en el mapa."
-#: src/TouchPoint-WP/Involvement.php:3489
+#: src/TouchPoint-WP/Involvement.php:3523
msgid "Men Only"
msgstr "Solo hombres"
-#: src/TouchPoint-WP/Involvement.php:3492
+#: src/TouchPoint-WP/Involvement.php:3526
msgid "Women Only"
msgstr "Solo mujeres"
-#: src/TouchPoint-WP/Involvement.php:3569
+#: src/TouchPoint-WP/Involvement.php:3603
msgid "Contact Leaders"
msgstr "Contacta con las líderes"
-#: src/TouchPoint-WP/Involvement.php:3638
-#: src/TouchPoint-WP/Involvement.php:3680
+#: src/TouchPoint-WP/Involvement.php:3672
+#: src/TouchPoint-WP/Involvement.php:3714
msgid "Register"
msgstr "Regístrate ahora"
-#: src/TouchPoint-WP/Involvement.php:3643
+#: src/TouchPoint-WP/Involvement.php:3677
msgid "Create Account"
msgstr "Crear cuenta"
-#: src/TouchPoint-WP/Involvement.php:3647
+#: src/TouchPoint-WP/Involvement.php:3681
msgid "Schedule"
msgstr "Programe"
-#: src/TouchPoint-WP/Involvement.php:3652
+#: src/TouchPoint-WP/Involvement.php:3686
msgid "Give"
msgstr "Dar"
-#: src/TouchPoint-WP/Involvement.php:3655
+#: src/TouchPoint-WP/Involvement.php:3689
msgid "Manage Subscriptions"
msgstr "Administrar suscripciones"
-#: src/TouchPoint-WP/Involvement.php:3658
+#: src/TouchPoint-WP/Involvement.php:3692
msgid "Record Attendance"
msgstr "Registre su asistencia"
-#: src/TouchPoint-WP/Involvement.php:3661
+#: src/TouchPoint-WP/Involvement.php:3695
msgid "Get Tickets"
msgstr "Obtener boletos"
-#: src/TouchPoint-WP/Involvement.php:3671
+#: src/TouchPoint-WP/Involvement.php:3705
#: assets/js/base-defer.js:1001
msgid "Join"
msgstr "Únete"
-#: src/TouchPoint-WP/Involvement.php:3586
+#: src/TouchPoint-WP/Involvement.php:3620
#: src/TouchPoint-WP/Partner.php:1314
msgid "Show on Map"
msgstr "Muestra en el mapa"
@@ -807,8 +807,8 @@ msgstr "Configuración de TouchPoint-WP"
msgid "Save Settings"
msgstr "Guardar ajustes"
-#: src/TouchPoint-WP/Person.php:1446
-#: src/TouchPoint-WP/Utilities.php:265
+#: src/TouchPoint-WP/Person.php:1445
+#: src/TouchPoint-WP/Utilities.php:264
#: assets/js/base-defer.js:18
msgid "and"
msgstr "y"
@@ -1026,16 +1026,16 @@ msgstr "OK"
msgid "Next"
msgstr "Siguiente"
-#: src/TouchPoint-WP/Involvement.php:1836
+#: src/TouchPoint-WP/Involvement.php:1873
#: src/TouchPoint-WP/Taxonomies.php:863
msgid "Marital Status"
msgstr "Estado civil"
-#: src/TouchPoint-WP/Involvement.php:1849
+#: src/TouchPoint-WP/Involvement.php:1886
msgid "Age"
msgstr "Años"
-#: src/TouchPoint-WP/Involvement.php:1720
+#: src/TouchPoint-WP/Involvement.php:1757
msgid "Genders"
msgstr "Géneros"
@@ -1197,71 +1197,71 @@ msgctxt "Time of Day"
msgid "Night"
msgstr "Noche"
-#: src/TouchPoint-WP/Involvement.php:1837
+#: src/TouchPoint-WP/Involvement.php:1874
msgctxt "Marital status for a group of people"
msgid "Mostly Single"
msgstr "Mayoría solteras"
-#: src/TouchPoint-WP/Involvement.php:1838
+#: src/TouchPoint-WP/Involvement.php:1875
msgctxt "Marital status for a group of people"
msgid "Mostly Married"
msgstr "Mayoría casadas"
#. translators: %s is the link to "reset the map"
-#: src/TouchPoint-WP/Involvement.php:1879
+#: src/TouchPoint-WP/Involvement.php:1916
#: src/TouchPoint-WP/Partner.php:850
msgid "Zoom out or %s to see more."
msgstr "Alejar o %s para ver más."
-#: src/TouchPoint-WP/Involvement.php:1882
+#: src/TouchPoint-WP/Involvement.php:1919
#: src/TouchPoint-WP/Partner.php:853
msgctxt "Zoom out or reset the map to see more."
msgid "reset the map"
msgstr "restablecer el mapa"
#. translators: %1$s is the date(s), %2$s is the time(s).
-#: src/TouchPoint-WP/Involvement.php:960
-#: src/TouchPoint-WP/Involvement.php:989
-#: src/TouchPoint-WP/Involvement.php:1064
-#: src/TouchPoint-WP/Involvement.php:1086
-#: src/TouchPoint-WP/Utilities/DateFormats.php:282
-#: src/TouchPoint-WP/Utilities/DateFormats.php:345
+#: src/TouchPoint-WP/Involvement.php:984
+#: src/TouchPoint-WP/Involvement.php:1016
+#: src/TouchPoint-WP/Involvement.php:1094
+#: src/TouchPoint-WP/Involvement.php:1118
+#: src/TouchPoint-WP/Utilities/DateFormats.php:283
+#: src/TouchPoint-WP/Utilities/DateFormats.php:346
msgid "%1$s at %2$s"
msgstr "%1$s a las %2$s"
#. translators: {start date} through {end date} e.g. February 14 through August 12
-#: src/TouchPoint-WP/Involvement.php:998
+#: src/TouchPoint-WP/Involvement.php:1025
msgid "%1$s through %2$s"
msgstr "%1$s al %2$s"
#. translators: {schedule}, {start date} through {end date} e.g. Sundays at 11am, February 14 through August 12
-#: src/TouchPoint-WP/Involvement.php:1005
+#: src/TouchPoint-WP/Involvement.php:1034
msgid "%1$s, %2$s through %3$s"
msgstr "%1$s, %2$s al %3$s"
#. translators: Starts {start date} e.g. Starts September 15
-#: src/TouchPoint-WP/Involvement.php:1015
+#: src/TouchPoint-WP/Involvement.php:1043
msgid "Starts %1$s"
msgstr "Comienza el %1$s"
#. translators: {schedule}, starting {start date} e.g. Sundays at 11am, starting February 14
-#: src/TouchPoint-WP/Involvement.php:1021
+#: src/TouchPoint-WP/Involvement.php:1051
msgid "%1$s, starting %2$s"
msgstr "%1$s, comienza el %2$s"
#. translators: Through {end date} e.g. Through September 15
-#: src/TouchPoint-WP/Involvement.php:1030
+#: src/TouchPoint-WP/Involvement.php:1059
msgid "Through %1$s"
msgstr "Hasta el %1$s"
#. translators: {schedule}, through {end date} e.g. Sundays at 11am, through February 14
-#: src/TouchPoint-WP/Involvement.php:1036
+#: src/TouchPoint-WP/Involvement.php:1067
msgid "%1$s, through %2$s"
msgstr "%1$s, hasta el %2$s"
#. translators: number of miles
#: src/templates/parts/involvement-nearby-list.php:10
-#: src/TouchPoint-WP/Involvement.php:3510
+#: src/TouchPoint-WP/Involvement.php:3544
msgctxt "miles. Unit is appended to a number. %2.1f is the number, so %2.1fmi looks like '12.3mi'"
msgid "%2.1fmi"
msgstr "%2.1fmi"
@@ -1278,15 +1278,15 @@ msgstr "La participación tiene un tipo de registro de \"No Online Registration\
msgid "Involvement registration has ended (end date is past)"
msgstr "El registro de participación ha finalizado (la fecha de finalización ya pasó)"
-#: src/TouchPoint-WP/Involvement.php:1975
+#: src/TouchPoint-WP/Involvement.php:2012
msgid "This involvement type doesn't exist."
msgstr "Este tipo de participación no existe."
-#: src/TouchPoint-WP/Involvement.php:1985
+#: src/TouchPoint-WP/Involvement.php:2022
msgid "This involvement type doesn't have geographic locations enabled."
msgstr "Este tipo de participación no tiene habilitadas las ubicaciones geográficas."
-#: src/TouchPoint-WP/Involvement.php:2004
+#: src/TouchPoint-WP/Involvement.php:2041
msgid "Could not locate."
msgstr "No se pudo localizar."
@@ -1305,8 +1305,8 @@ msgstr "Solo se permiten solicitudes POST."
msgid "Invalid data provided."
msgstr "Datos proporcionados no válidos."
-#: src/TouchPoint-WP/Involvement.php:3776
-#: src/TouchPoint-WP/Involvement.php:3873
+#: src/TouchPoint-WP/Involvement.php:3810
+#: src/TouchPoint-WP/Involvement.php:3907
msgid "Invalid Post Type."
msgstr "Tipo de publicación no válida."
@@ -1426,7 +1426,7 @@ msgstr "Actualizada %1$s %2$s"
msgid "Every 15 minutes"
msgstr "Cada 15 minutos"
-#: src/TouchPoint-WP/Involvement.php:1763
+#: src/TouchPoint-WP/Involvement.php:1800
msgid "Language"
msgstr "Idioma"
@@ -1479,7 +1479,7 @@ msgstr "Eliminar siempre de WordPress"
msgid "Mark the occurrence as cancelled"
msgstr "Marcar la ocurrencia como cancelada"
-#: src/TouchPoint-WP/Involvement.php:3860
+#: src/TouchPoint-WP/Involvement.php:3894
#: src/TouchPoint-WP/Person.php:1821
msgid "Contact Prohibited."
msgstr "Contacto prohibido."
@@ -1504,7 +1504,7 @@ msgstr "Algo salió mal."
msgid "You may need to sign in."
msgstr "Es posible que tengas que iniciar sesión."
-#: src/TouchPoint-WP/Involvement.php:3850
+#: src/TouchPoint-WP/Involvement.php:3884
#: src/TouchPoint-WP/Person.php:1838
msgid "Contact Blocked for Spam."
msgstr "Contacto bloqueado por spam."
@@ -1569,26 +1569,26 @@ msgstr "Seleccione los tipos de publicaciones que deberían tener Divisiones dis
msgid "Select post types which should have Resident Codes available as a native taxonomy."
msgstr "Seleccione los tipos de publicaciones que deberían tener códigos de residente disponibles como taxonomía nativa."
-#: src/TouchPoint-WP/Utilities/DateFormats.php:118
-#: src/TouchPoint-WP/Utilities/DateFormats.php:190
+#: src/TouchPoint-WP/Utilities/DateFormats.php:119
+#: src/TouchPoint-WP/Utilities/DateFormats.php:191
msgid "Tonight"
msgstr "este noche"
-#: src/TouchPoint-WP/Utilities/DateFormats.php:120
-#: src/TouchPoint-WP/Utilities/DateFormats.php:192
+#: src/TouchPoint-WP/Utilities/DateFormats.php:121
+#: src/TouchPoint-WP/Utilities/DateFormats.php:193
msgid "Today"
msgstr "hoy"
-#: src/TouchPoint-WP/Utilities/DateFormats.php:126
-#: src/TouchPoint-WP/Utilities/DateFormats.php:198
+#: src/TouchPoint-WP/Utilities/DateFormats.php:127
+#: src/TouchPoint-WP/Utilities/DateFormats.php:199
msgid "Tomorrow"
msgstr "mañana"
-#: src/templates/admin/invKoForm.php:341
+#: src/templates/admin/invKoForm.php:366
msgid "(named person)"
msgstr "(persona nombrada)"
-#: src/TouchPoint-WP/Utilities.php:472
+#: src/TouchPoint-WP/Utilities.php:471
msgid "Expand"
msgstr "Ampliar"
@@ -1601,25 +1601,25 @@ msgid "Scheduled"
msgstr "Programado"
#. translators: %1$s is "Monday". %2$s is "January 1".
-#: src/TouchPoint-WP/Utilities/DateFormats.php:143
+#: src/TouchPoint-WP/Utilities/DateFormats.php:144
msgctxt "Date format string"
msgid "Last %1$s, %2$s"
msgstr "el pasado %1$s %2$s"
#. translators: %1$s is "Monday". %2$s is "January 1".
-#: src/TouchPoint-WP/Utilities/DateFormats.php:149
+#: src/TouchPoint-WP/Utilities/DateFormats.php:150
msgctxt "Date format string"
msgid "This %1$s, %2$s"
msgstr "este %1$s %2$s"
#. translators: %1$s is "Monday". %2$s is "January 1".
-#: src/TouchPoint-WP/Utilities/DateFormats.php:155
+#: src/TouchPoint-WP/Utilities/DateFormats.php:156
msgctxt "Date format string"
msgid "Next %1$s, %2$s"
msgstr "el proximo %1$s %2$s"
#. translators: %1$s is "Monday". %2$s is "January 1".
-#: src/TouchPoint-WP/Utilities/DateFormats.php:160
+#: src/TouchPoint-WP/Utilities/DateFormats.php:161
msgctxt "Date format string"
msgid "%1$s, %2$s"
msgstr "%1$s %2$s"
@@ -1630,7 +1630,7 @@ msgid "%s is cancelled."
msgstr "%s esta cancelado."
#. Translators: %s is the system name. "TouchPoint" by default.
-#: src/TouchPoint-WP/Involvement.php:3598
+#: src/TouchPoint-WP/Involvement.php:3632
msgid "Involvement in %s"
msgstr "Participaciones en %s"
@@ -1684,22 +1684,22 @@ msgstr "Reunión"
msgid "Event"
msgstr "Evento"
-#: src/TouchPoint-WP/Utilities/DateFormats.php:133
+#: src/TouchPoint-WP/Utilities/DateFormats.php:134
msgctxt "Date string for day of the week, when the year is current."
msgid "l"
msgstr "l"
-#: src/TouchPoint-WP/Utilities/DateFormats.php:134
+#: src/TouchPoint-WP/Utilities/DateFormats.php:135
msgctxt "Date string when the year is current."
msgid "F j"
msgstr "j F"
-#: src/TouchPoint-WP/Utilities/DateFormats.php:136
+#: src/TouchPoint-WP/Utilities/DateFormats.php:137
msgctxt "Date string for day of the week, when the year is not current."
msgid "l"
msgstr "l"
-#: src/TouchPoint-WP/Utilities/DateFormats.php:137
+#: src/TouchPoint-WP/Utilities/DateFormats.php:138
msgctxt "Date string when the year is not current."
msgid "F j, Y"
msgstr "j F Y"
@@ -1714,8 +1714,8 @@ msgid "Creating an Involvement object from an object without a post_id is not ye
msgstr "Aún no se admite la creación de un objeto de participación a partir de un objeto sin post_id."
#. translators: "Mon All Day" or "Sundays All Day"
-#: src/TouchPoint-WP/Involvement.php:963
-#: src/TouchPoint-WP/Involvement.php:984
+#: src/TouchPoint-WP/Involvement.php:987
+#: src/TouchPoint-WP/Involvement.php:1010
msgid "%1$s All Day"
msgstr "todo el dia los %1$s"
@@ -1724,56 +1724,56 @@ msgid "Creating a Meeting object from an object without a post_id is not yet sup
msgstr "Aún no se admite la creación de un objeto de reunión a partir de un objeto sin post_id."
#. translators: %1$s is the start time, %2$s is the end time.
-#: src/TouchPoint-WP/Utilities/DateFormats.php:88
-#: src/TouchPoint-WP/Utilities/DateFormats.php:324
+#: src/TouchPoint-WP/Utilities/DateFormats.php:89
+#: src/TouchPoint-WP/Utilities/DateFormats.php:325
msgid "%1$s – %2$s"
msgstr "%1$s – %2$s"
-#: src/TouchPoint-WP/Utilities/DateFormats.php:205
+#: src/TouchPoint-WP/Utilities/DateFormats.php:206
msgctxt "Short date string for day of the week, when the year is current."
msgid "D"
msgstr "D"
-#: src/TouchPoint-WP/Utilities/DateFormats.php:206
+#: src/TouchPoint-WP/Utilities/DateFormats.php:207
msgctxt "Short date string when the year is current."
msgid "M j"
msgstr "j M"
-#: src/TouchPoint-WP/Utilities/DateFormats.php:208
+#: src/TouchPoint-WP/Utilities/DateFormats.php:209
msgctxt "Short date string for day of the week, when the year is not current."
msgid "D"
msgstr "D"
-#: src/TouchPoint-WP/Utilities/DateFormats.php:209
+#: src/TouchPoint-WP/Utilities/DateFormats.php:210
msgctxt "Short date string when the year is not current."
msgid "M j, Y"
msgstr "j M Y"
#. translators: %1$s is the start date, %2$s start time, %3$s is the end date, and %4$s end time.
-#: src/TouchPoint-WP/Utilities/DateFormats.php:358
+#: src/TouchPoint-WP/Utilities/DateFormats.php:359
msgid "%1$s at %2$s – %3$s at %4$s"
msgstr "%1$s a %2$s – %3$s a %4$s"
#. translators: %1$s is "Mon". %2$s is "Jan 1".
-#: src/TouchPoint-WP/Utilities/DateFormats.php:215
+#: src/TouchPoint-WP/Utilities/DateFormats.php:216
msgctxt "Short date format string"
msgid "Last %1$s, %2$s"
msgstr "el pasado %1$s %2$s"
#. translators: %1$s is "Mon". %2$s is "Jan 1".
-#: src/TouchPoint-WP/Utilities/DateFormats.php:221
+#: src/TouchPoint-WP/Utilities/DateFormats.php:222
msgctxt "Short date format string"
msgid "This %1$s, %2$s"
msgstr "este %1$s %2$s"
#. translators: %1$s is "Mon". %2$s is "Jan 1".
-#: src/TouchPoint-WP/Utilities/DateFormats.php:227
+#: src/TouchPoint-WP/Utilities/DateFormats.php:228
msgctxt "Short date format string"
msgid "Next %1$s, %2$s"
msgstr "proximo %1$s %2$s"
#. translators: %1$s is "Mon". %2$s is "Jan 1".
-#: src/TouchPoint-WP/Utilities/DateFormats.php:232
+#: src/TouchPoint-WP/Utilities/DateFormats.php:233
msgctxt "Short date format string"
msgid "%1$s, %2$s"
msgstr "%1$s %2$s"
@@ -1819,3 +1819,19 @@ msgstr "Integre la versión 2.0 de la aplicación móvil personalizada con el ca
#: src/templates/involvement-single.php:49
msgid "This %s has been Cancelled."
msgstr "Este %s ha sido Cancelado."
+
+#: src/templates/admin/invKoForm.php:173
+msgid "Division"
+msgstr "Division"
+
+#: src/templates/admin/invKoForm.php:180
+msgid "Resident Code"
+msgstr "Código de Residente"
+
+#: src/templates/admin/invKoForm.php:187
+msgid "Campus"
+msgstr "Campus"
+
+#: src/TouchPoint-WP/Involvement.php:1011
+msgid "All Day"
+msgstr "todo el dia"
diff --git a/i18n/TouchPoint-WP.pot b/i18n/TouchPoint-WP.pot
index b154ef0b..f83ba54a 100644
--- a/i18n/TouchPoint-WP.pot
+++ b/i18n/TouchPoint-WP.pot
@@ -2,40 +2,40 @@
# This file is distributed under the AGPLv3+.
msgid ""
msgstr ""
-"Project-Id-Version: TouchPoint WP 0.0.90\n"
+"Project-Id-Version: TouchPoint WP 0.0.91\n"
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/TouchPoint-WP\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"POT-Creation-Date: 2024-08-06T14:10:40+00:00\n"
+"POT-Creation-Date: 2024-08-08T21:34:45+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"X-Generator: WP-CLI 2.10.0\n"
+"X-Generator: WP-CLI 2.11.0\n"
"X-Domain: TouchPoint-WP\n"
#. Plugin Name of the plugin
-#: C:\Dev\TouchPoint-WP\touchpoint-wp.php
+#: touchpoint-wp.php
msgid "TouchPoint WP"
msgstr ""
#. Plugin URI of the plugin
-#: C:\Dev\TouchPoint-WP\touchpoint-wp.php
+#: touchpoint-wp.php
msgid "https://github.com/tenthpres/touchpoint-wp"
msgstr ""
#. Description of the plugin
-#: C:\Dev\TouchPoint-WP\touchpoint-wp.php
+#: touchpoint-wp.php
msgid "A WordPress Plugin for integrating with TouchPoint Church Management Software."
msgstr ""
#. Author of the plugin
-#: C:\Dev\TouchPoint-WP\touchpoint-wp.php
+#: touchpoint-wp.php
msgid "James K"
msgstr ""
#. Author URI of the plugin
-#: C:\Dev\TouchPoint-WP\touchpoint-wp.php
+#: touchpoint-wp.php
msgid "https://github.com/jkrrv"
msgstr ""
@@ -120,7 +120,7 @@ msgstr ""
#: src/templates/admin/invKoForm.php:125
#: src/templates/admin/invKoForm.php:141
-#: src/templates/admin/invKoForm.php:268
+#: src/templates/admin/invKoForm.php:293
#: src/templates/parts/involvement-nearby-list.php:2
#: src/TouchPoint-WP/Meeting.php:673
#: src/TouchPoint-WP/Rsvp.php:75
@@ -149,64 +149,76 @@ msgstr ""
msgid "Current / Upcoming"
msgstr ""
-#: src/templates/admin/invKoForm.php:165
+#: src/templates/admin/invKoForm.php:167
msgid "Default Filters"
msgstr ""
-#: src/templates/admin/invKoForm.php:174
+#: src/templates/admin/invKoForm.php:173
+msgid "Division"
+msgstr ""
+
+#: src/templates/admin/invKoForm.php:180
+msgid "Resident Code"
+msgstr ""
+
+#: src/templates/admin/invKoForm.php:187
+msgid "Campus"
+msgstr ""
+
+#: src/templates/admin/invKoForm.php:199
msgid "Gender"
msgstr ""
-#: src/templates/admin/invKoForm.php:188
-#: src/TouchPoint-WP/Involvement.php:1788
+#: src/templates/admin/invKoForm.php:213
+#: src/TouchPoint-WP/Involvement.php:1825
#: src/TouchPoint-WP/Taxonomies.php:744
msgid "Weekday"
msgstr ""
-#: src/templates/admin/invKoForm.php:192
-#: src/TouchPoint-WP/Involvement.php:1814
+#: src/templates/admin/invKoForm.php:217
+#: src/TouchPoint-WP/Involvement.php:1851
#: src/TouchPoint-WP/Taxonomies.php:802
msgid "Time of Day"
msgstr ""
-#: src/templates/admin/invKoForm.php:196
+#: src/templates/admin/invKoForm.php:221
msgid "Prevailing Marital Status"
msgstr ""
-#: src/templates/admin/invKoForm.php:200
+#: src/templates/admin/invKoForm.php:225
#: src/TouchPoint-WP/Taxonomies.php:831
msgid "Age Group"
msgstr ""
-#: src/templates/admin/invKoForm.php:205
+#: src/templates/admin/invKoForm.php:230
msgid "Task Owner"
msgstr ""
-#: src/templates/admin/invKoForm.php:212
+#: src/templates/admin/invKoForm.php:237
msgid "Contact Leader Task Keywords"
msgstr ""
-#: src/templates/admin/invKoForm.php:223
+#: src/templates/admin/invKoForm.php:248
msgid "Join Task Keywords"
msgstr ""
-#: src/templates/admin/invKoForm.php:239
+#: src/templates/admin/invKoForm.php:264
msgid "Add Involvement Post Type"
msgstr ""
-#: src/templates/admin/invKoForm.php:246
+#: src/templates/admin/invKoForm.php:271
msgid "Small Group"
msgstr ""
-#: src/templates/admin/invKoForm.php:247
+#: src/templates/admin/invKoForm.php:272
msgid "Small Groups"
msgstr ""
-#: src/templates/admin/invKoForm.php:341
+#: src/templates/admin/invKoForm.php:366
msgid "(named person)"
msgstr ""
-#: src/templates/admin/invKoForm.php:378
+#: src/templates/admin/invKoForm.php:403
msgid "Select..."
msgstr ""
@@ -259,7 +271,7 @@ msgstr ""
#. translators: %s will be the plural post type (e.g. Small Groups)
#: src/templates/parts/involvement-list-none.php:16
-#: src/TouchPoint-WP/Involvement.php:2034
+#: src/TouchPoint-WP/Involvement.php:2071
msgid "No %s Found."
msgstr ""
@@ -270,7 +282,7 @@ msgstr ""
#. translators: number of miles
#: src/templates/parts/involvement-nearby-list.php:10
-#: src/TouchPoint-WP/Involvement.php:3510
+#: src/TouchPoint-WP/Involvement.php:3544
msgctxt "miles. Unit is appended to a number. %2.1f is the number, so %2.1fmi looks like '12.3mi'"
msgid "%2.1fmi"
msgstr ""
@@ -332,180 +344,184 @@ msgid "Registration Closed"
msgstr ""
#. translators: %1$s is the date(s), %2$s is the time(s).
-#: src/TouchPoint-WP/Involvement.php:960
-#: src/TouchPoint-WP/Involvement.php:989
-#: src/TouchPoint-WP/Involvement.php:1064
-#: src/TouchPoint-WP/Involvement.php:1086
-#: src/TouchPoint-WP/Utilities/DateFormats.php:282
-#: src/TouchPoint-WP/Utilities/DateFormats.php:345
+#: src/TouchPoint-WP/Involvement.php:984
+#: src/TouchPoint-WP/Involvement.php:1016
+#: src/TouchPoint-WP/Involvement.php:1094
+#: src/TouchPoint-WP/Involvement.php:1118
+#: src/TouchPoint-WP/Utilities/DateFormats.php:283
+#: src/TouchPoint-WP/Utilities/DateFormats.php:346
msgid "%1$s at %2$s"
msgstr ""
#. translators: "Mon All Day" or "Sundays All Day"
-#: src/TouchPoint-WP/Involvement.php:963
-#: src/TouchPoint-WP/Involvement.php:984
+#: src/TouchPoint-WP/Involvement.php:987
+#: src/TouchPoint-WP/Involvement.php:1010
msgid "%1$s All Day"
msgstr ""
+#: src/TouchPoint-WP/Involvement.php:1011
+msgid "All Day"
+msgstr ""
+
#. translators: {start date} through {end date} e.g. February 14 through August 12
-#: src/TouchPoint-WP/Involvement.php:998
+#: src/TouchPoint-WP/Involvement.php:1025
msgid "%1$s through %2$s"
msgstr ""
#. translators: {schedule}, {start date} through {end date} e.g. Sundays at 11am, February 14 through August 12
-#: src/TouchPoint-WP/Involvement.php:1005
+#: src/TouchPoint-WP/Involvement.php:1034
msgid "%1$s, %2$s through %3$s"
msgstr ""
#. translators: Starts {start date} e.g. Starts September 15
-#: src/TouchPoint-WP/Involvement.php:1015
+#: src/TouchPoint-WP/Involvement.php:1043
msgid "Starts %1$s"
msgstr ""
#. translators: {schedule}, starting {start date} e.g. Sundays at 11am, starting February 14
-#: src/TouchPoint-WP/Involvement.php:1021
+#: src/TouchPoint-WP/Involvement.php:1051
msgid "%1$s, starting %2$s"
msgstr ""
#. translators: Through {end date} e.g. Through September 15
-#: src/TouchPoint-WP/Involvement.php:1030
+#: src/TouchPoint-WP/Involvement.php:1059
msgid "Through %1$s"
msgstr ""
#. translators: {schedule}, through {end date} e.g. Sundays at 11am, through February 14
-#: src/TouchPoint-WP/Involvement.php:1036
+#: src/TouchPoint-WP/Involvement.php:1067
msgid "%1$s, through %2$s"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1663
+#: src/TouchPoint-WP/Involvement.php:1700
#: src/TouchPoint-WP/Partner.php:810
msgid "Any"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1720
+#: src/TouchPoint-WP/Involvement.php:1757
msgid "Genders"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1763
+#: src/TouchPoint-WP/Involvement.php:1800
msgid "Language"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1836
+#: src/TouchPoint-WP/Involvement.php:1873
#: src/TouchPoint-WP/Taxonomies.php:863
msgid "Marital Status"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1837
+#: src/TouchPoint-WP/Involvement.php:1874
msgctxt "Marital status for a group of people"
msgid "Mostly Single"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1838
+#: src/TouchPoint-WP/Involvement.php:1875
msgctxt "Marital status for a group of people"
msgid "Mostly Married"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1849
+#: src/TouchPoint-WP/Involvement.php:1886
msgid "Age"
msgstr ""
#. translators: %s is for the user-provided term for the items on the map (e.g. Small Group or Partner)
-#: src/TouchPoint-WP/Involvement.php:1871
+#: src/TouchPoint-WP/Involvement.php:1908
#: src/TouchPoint-WP/Partner.php:834
msgid "The %s listed are only those shown on the map."
msgstr ""
#. translators: %s is the link to "reset the map"
-#: src/TouchPoint-WP/Involvement.php:1879
+#: src/TouchPoint-WP/Involvement.php:1916
#: src/TouchPoint-WP/Partner.php:850
msgid "Zoom out or %s to see more."
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1882
+#: src/TouchPoint-WP/Involvement.php:1919
#: src/TouchPoint-WP/Partner.php:853
msgctxt "Zoom out or reset the map to see more."
msgid "reset the map"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1975
+#: src/TouchPoint-WP/Involvement.php:2012
msgid "This involvement type doesn't exist."
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1985
+#: src/TouchPoint-WP/Involvement.php:2022
msgid "This involvement type doesn't have geographic locations enabled."
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:2004
+#: src/TouchPoint-WP/Involvement.php:2041
msgid "Could not locate."
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3489
+#: src/TouchPoint-WP/Involvement.php:3523
msgid "Men Only"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3492
+#: src/TouchPoint-WP/Involvement.php:3526
msgid "Women Only"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3569
+#: src/TouchPoint-WP/Involvement.php:3603
msgid "Contact Leaders"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3586
+#: src/TouchPoint-WP/Involvement.php:3620
#: src/TouchPoint-WP/Partner.php:1314
msgid "Show on Map"
msgstr ""
#. Translators: %s is the system name. "TouchPoint" by default.
-#: src/TouchPoint-WP/Involvement.php:3598
+#: src/TouchPoint-WP/Involvement.php:3632
msgid "Involvement in %s"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3638
-#: src/TouchPoint-WP/Involvement.php:3680
+#: src/TouchPoint-WP/Involvement.php:3672
+#: src/TouchPoint-WP/Involvement.php:3714
msgid "Register"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3643
+#: src/TouchPoint-WP/Involvement.php:3677
msgid "Create Account"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3647
+#: src/TouchPoint-WP/Involvement.php:3681
msgid "Schedule"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3652
+#: src/TouchPoint-WP/Involvement.php:3686
msgid "Give"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3655
+#: src/TouchPoint-WP/Involvement.php:3689
msgid "Manage Subscriptions"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3658
+#: src/TouchPoint-WP/Involvement.php:3692
msgid "Record Attendance"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3661
+#: src/TouchPoint-WP/Involvement.php:3695
msgid "Get Tickets"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3671
+#: src/TouchPoint-WP/Involvement.php:3705
#: assets/js/base-defer.js:1001
msgid "Join"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3776
-#: src/TouchPoint-WP/Involvement.php:3873
+#: src/TouchPoint-WP/Involvement.php:3810
+#: src/TouchPoint-WP/Involvement.php:3907
msgid "Invalid Post Type."
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3850
+#: src/TouchPoint-WP/Involvement.php:3884
#: src/TouchPoint-WP/Person.php:1838
msgid "Contact Blocked for Spam."
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3860
+#: src/TouchPoint-WP/Involvement.php:3894
#: src/TouchPoint-WP/Person.php:1821
msgid "Contact Prohibited."
msgstr ""
@@ -588,8 +604,8 @@ msgstr ""
msgid "Person in %s"
msgstr ""
-#: src/TouchPoint-WP/Person.php:1446
-#: src/TouchPoint-WP/Utilities.php:265
+#: src/TouchPoint-WP/Person.php:1445
+#: src/TouchPoint-WP/Utilities.php:264
#: assets/js/base-defer.js:18
msgid "and"
msgstr ""
@@ -1492,121 +1508,121 @@ msgctxt "Time of Day"
msgid "Night"
msgstr ""
-#: src/TouchPoint-WP/Utilities.php:472
+#: src/TouchPoint-WP/Utilities.php:471
msgid "Expand"
msgstr ""
#. translators: %1$s is the start time, %2$s is the end time.
-#: src/TouchPoint-WP/Utilities/DateFormats.php:88
-#: src/TouchPoint-WP/Utilities/DateFormats.php:324
+#: src/TouchPoint-WP/Utilities/DateFormats.php:89
+#: src/TouchPoint-WP/Utilities/DateFormats.php:325
msgid "%1$s – %2$s"
msgstr ""
-#: src/TouchPoint-WP/Utilities/DateFormats.php:118
-#: src/TouchPoint-WP/Utilities/DateFormats.php:190
+#: src/TouchPoint-WP/Utilities/DateFormats.php:119
+#: src/TouchPoint-WP/Utilities/DateFormats.php:191
msgid "Tonight"
msgstr ""
-#: src/TouchPoint-WP/Utilities/DateFormats.php:120
-#: src/TouchPoint-WP/Utilities/DateFormats.php:192
+#: src/TouchPoint-WP/Utilities/DateFormats.php:121
+#: src/TouchPoint-WP/Utilities/DateFormats.php:193
msgid "Today"
msgstr ""
-#: src/TouchPoint-WP/Utilities/DateFormats.php:126
-#: src/TouchPoint-WP/Utilities/DateFormats.php:198
+#: src/TouchPoint-WP/Utilities/DateFormats.php:127
+#: src/TouchPoint-WP/Utilities/DateFormats.php:199
msgid "Tomorrow"
msgstr ""
-#: src/TouchPoint-WP/Utilities/DateFormats.php:133
+#: src/TouchPoint-WP/Utilities/DateFormats.php:134
msgctxt "Date string for day of the week, when the year is current."
msgid "l"
msgstr ""
-#: src/TouchPoint-WP/Utilities/DateFormats.php:134
+#: src/TouchPoint-WP/Utilities/DateFormats.php:135
msgctxt "Date string when the year is current."
msgid "F j"
msgstr ""
-#: src/TouchPoint-WP/Utilities/DateFormats.php:136
+#: src/TouchPoint-WP/Utilities/DateFormats.php:137
msgctxt "Date string for day of the week, when the year is not current."
msgid "l"
msgstr ""
-#: src/TouchPoint-WP/Utilities/DateFormats.php:137
+#: src/TouchPoint-WP/Utilities/DateFormats.php:138
msgctxt "Date string when the year is not current."
msgid "F j, Y"
msgstr ""
#. translators: %1$s is "Monday". %2$s is "January 1".
-#: src/TouchPoint-WP/Utilities/DateFormats.php:143
+#: src/TouchPoint-WP/Utilities/DateFormats.php:144
msgctxt "Date format string"
msgid "Last %1$s, %2$s"
msgstr ""
#. translators: %1$s is "Monday". %2$s is "January 1".
-#: src/TouchPoint-WP/Utilities/DateFormats.php:149
+#: src/TouchPoint-WP/Utilities/DateFormats.php:150
msgctxt "Date format string"
msgid "This %1$s, %2$s"
msgstr ""
#. translators: %1$s is "Monday". %2$s is "January 1".
-#: src/TouchPoint-WP/Utilities/DateFormats.php:155
+#: src/TouchPoint-WP/Utilities/DateFormats.php:156
msgctxt "Date format string"
msgid "Next %1$s, %2$s"
msgstr ""
#. translators: %1$s is "Monday". %2$s is "January 1".
-#: src/TouchPoint-WP/Utilities/DateFormats.php:160
+#: src/TouchPoint-WP/Utilities/DateFormats.php:161
msgctxt "Date format string"
msgid "%1$s, %2$s"
msgstr ""
-#: src/TouchPoint-WP/Utilities/DateFormats.php:205
+#: src/TouchPoint-WP/Utilities/DateFormats.php:206
msgctxt "Short date string for day of the week, when the year is current."
msgid "D"
msgstr ""
-#: src/TouchPoint-WP/Utilities/DateFormats.php:206
+#: src/TouchPoint-WP/Utilities/DateFormats.php:207
msgctxt "Short date string when the year is current."
msgid "M j"
msgstr ""
-#: src/TouchPoint-WP/Utilities/DateFormats.php:208
+#: src/TouchPoint-WP/Utilities/DateFormats.php:209
msgctxt "Short date string for day of the week, when the year is not current."
msgid "D"
msgstr ""
-#: src/TouchPoint-WP/Utilities/DateFormats.php:209
+#: src/TouchPoint-WP/Utilities/DateFormats.php:210
msgctxt "Short date string when the year is not current."
msgid "M j, Y"
msgstr ""
#. translators: %1$s is "Mon". %2$s is "Jan 1".
-#: src/TouchPoint-WP/Utilities/DateFormats.php:215
+#: src/TouchPoint-WP/Utilities/DateFormats.php:216
msgctxt "Short date format string"
msgid "Last %1$s, %2$s"
msgstr ""
#. translators: %1$s is "Mon". %2$s is "Jan 1".
-#: src/TouchPoint-WP/Utilities/DateFormats.php:221
+#: src/TouchPoint-WP/Utilities/DateFormats.php:222
msgctxt "Short date format string"
msgid "This %1$s, %2$s"
msgstr ""
#. translators: %1$s is "Mon". %2$s is "Jan 1".
-#: src/TouchPoint-WP/Utilities/DateFormats.php:227
+#: src/TouchPoint-WP/Utilities/DateFormats.php:228
msgctxt "Short date format string"
msgid "Next %1$s, %2$s"
msgstr ""
#. translators: %1$s is "Mon". %2$s is "Jan 1".
-#: src/TouchPoint-WP/Utilities/DateFormats.php:232
+#: src/TouchPoint-WP/Utilities/DateFormats.php:233
msgctxt "Short date format string"
msgid "%1$s, %2$s"
msgstr ""
#. translators: %1$s is the start date, %2$s start time, %3$s is the end date, and %4$s end time.
-#: src/TouchPoint-WP/Utilities/DateFormats.php:358
+#: src/TouchPoint-WP/Utilities/DateFormats.php:359
msgid "%1$s at %2$s – %3$s at %4$s"
msgstr ""
diff --git a/src/TouchPoint-WP/CalendarGrid.php b/src/TouchPoint-WP/CalendarGrid.php
index 0141694c..880fb4ec 100644
--- a/src/TouchPoint-WP/CalendarGrid.php
+++ b/src/TouchPoint-WP/CalendarGrid.php
@@ -101,10 +101,10 @@ public function __construct(WP_Query $q, int $month = null, int $year = null)
// Loop through the days of the month
do {
- $ts = DateFormats::timestampAndOffset($d);
- $day = date_i18n("j", $ts);
+ $ts = DateFormats::timestampWithoutOffset($d);
+ $day = wp_date("j", $ts);
$fullDay = DateFormats::DateStringFormatted($d);
- $wd = date_i18n("w", $ts);
+ $wd = wp_date("w", $ts);
try {
$newQ = self::adjustQueryForDay($q, $d, $tz);
@@ -388,11 +388,11 @@ protected static function getLinkForDate(DateTimeInterface $date): string
*/
protected static function getMonthNameForDate(DateTimeInterface $date): string
{
- $ts = DateFormats::timestampAndOffset($date);
+ $ts = DateFormats::timestampWithoutOffset($date);
if ($date->format('Y') === Utilities::dateTimeNow()->format('Y')) {
- $label = date_i18n('F', $ts);
+ $label = wp_date('F', $ts);
} else {
- $label = date_i18n('F Y', $ts);
+ $label = wp_date('F Y', $ts);
}
return $label;
}
diff --git a/src/TouchPoint-WP/TouchPointWP.php b/src/TouchPoint-WP/TouchPointWP.php
index 6cdee532..65e517fd 100644
--- a/src/TouchPoint-WP/TouchPointWP.php
+++ b/src/TouchPoint-WP/TouchPointWP.php
@@ -32,7 +32,7 @@ class TouchPointWP
/**
* Version number
*/
- public const VERSION = "0.0.90";
+ public const VERSION = "0.0.91";
/**
* The Token
diff --git a/src/TouchPoint-WP/Utilities/DateFormats.php b/src/TouchPoint-WP/Utilities/DateFormats.php
index 26511445..02a4a330 100644
--- a/src/TouchPoint-WP/Utilities/DateFormats.php
+++ b/src/TouchPoint-WP/Utilities/DateFormats.php
@@ -22,7 +22,7 @@ abstract class DateFormats
*/
public static function TimeStringFormatted(DateTimeInterface $dt): string
{
- $ts = date_i18n(get_option('time_format'), self::timestampAndOffset($dt));
+ $ts = wp_date(get_option('time_format'), self::timestampWithoutOffset($dt));
/**
* Allows for manipulation of the string returned as a formatted time.
@@ -58,6 +58,7 @@ public static function timestampWithoutOffset(?DateTimeInterface $dt): int
* @return int
*
* @since 0.0.90 added
+ * @deprecated 0.0.91 Now that date_i18n is deprecated, this is probably not needed.
*/
public static function timestampAndOffset(?DateTimeInterface $dt): int
{
@@ -125,16 +126,16 @@ public static function DateStringFormatted(DateTimeInterface $dt): string
if ($tomorrow->format("Ymd") === $dt->format("Ymd")) {
$r = __("Tomorrow", "TouchPoint-WP");
} else {
- $ts = DateFormats::timestampAndOffset($dt);
- $nowTs = DateFormats::timestampAndOffset($now);
+ $ts = DateFormats::timestampWithoutOffset($dt);
+ $nowTs = DateFormats::timestampWithoutOffset($now);
if ($tomorrow->format("Y") === $dt->format("Y")) { // Same Year
- $day = date_i18n(_x('l', "Date string for day of the week, when the year is current.", "TouchPoint-WP"), $ts);
- $date = date_i18n(_x('F j', "Date string when the year is current.", "TouchPoint-WP"), $ts);
+ $day = wp_date(_x('l', "Date string for day of the week, when the year is current.", "TouchPoint-WP"), $ts);
+ $date = wp_date(_x('F j', "Date string when the year is current.", "TouchPoint-WP"), $ts);
} else {
- $day = date_i18n(_x('l', "Date string for day of the week, when the year is not current.", "TouchPoint-WP"), $ts);
- $date = date_i18n(_x('F j, Y', "Date string when the year is not current.", "TouchPoint-WP"), $ts);
+ $day = wp_date(_x('l', "Date string for day of the week, when the year is not current.", "TouchPoint-WP"), $ts);
+ $date = wp_date(_x('F j, Y', "Date string when the year is not current.", "TouchPoint-WP"), $ts);
}
// Last week
@@ -197,16 +198,16 @@ public static function DateStringFormattedShort(DateTimeInterface $dt): string
if ($tomorrow->format("Ymd") === $dt->format("Ymd")) {
$r = __("Tomorrow", "TouchPoint-WP");
} else {
- $ts = DateFormats::timestampAndOffset($dt);
- $nowTs = DateFormats::timestampAndOffset($now);
+ $ts = DateFormats::timestampWithoutOffset($dt);
+ $nowTs = DateFormats::timestampWithoutOffset($now);
if ($tomorrow->format("Y") === $dt->format("Y")) { // Same Year
- $day = date_i18n(_x('D', "Short date string for day of the week, when the year is current.", "TouchPoint-WP"), $ts);
- $date = date_i18n(_x('M j', "Short date string when the year is current.", "TouchPoint-WP"), $ts);
+ $day = wp_date(_x('D', "Short date string for day of the week, when the year is current.", "TouchPoint-WP"), $ts);
+ $date = wp_date(_x('M j', "Short date string when the year is current.", "TouchPoint-WP"), $ts);
} else {
- $day = date_i18n(_x('D', "Short date string for day of the week, when the year is not current.", "TouchPoint-WP"), $ts);
- $date = date_i18n(_x('M j, Y', "Short date string when the year is not current.", "TouchPoint-WP"), $ts);
+ $day = wp_date(_x('D', "Short date string for day of the week, when the year is not current.", "TouchPoint-WP"), $ts);
+ $date = wp_date(_x('M j, Y', "Short date string when the year is not current.", "TouchPoint-WP"), $ts);
}
// Last week
diff --git a/touchpoint-wp.php b/touchpoint-wp.php
index 91e2d423..994db3a5 100644
--- a/touchpoint-wp.php
+++ b/touchpoint-wp.php
@@ -14,7 +14,7 @@
Plugin URI: https://github.com/tenthpres/touchpoint-wp
Update URI: https://github.com/tenthpres/touchpoint-wp
Description: A WordPress Plugin for integrating with TouchPoint Church Management Software.
-Version: 0.0.90
+Version: 0.0.91
Author: James K
Author URI: https://github.com/jkrrv
License: AGPLv3+
From 9ac2c91cccb755f6d6da55827c75d1170f9b7c18 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Thu, 8 Aug 2024 18:13:56 -0400
Subject: [PATCH 165/423] Better handling some edge cases related to #194
---
src/TouchPoint-WP/Involvement.php | 18 ++++++++++++++----
src/TouchPoint-WP/Person.php | 2 ++
src/TouchPoint-WP/Utilities.php | 17 ++++++++++++++---
.../Utilities/StringableArray.php | 6 ++++--
4 files changed, 34 insertions(+), 9 deletions(-)
diff --git a/src/TouchPoint-WP/Involvement.php b/src/TouchPoint-WP/Involvement.php
index b9e9f06a..66780052 100644
--- a/src/TouchPoint-WP/Involvement.php
+++ b/src/TouchPoint-WP/Involvement.php
@@ -1082,8 +1082,18 @@ protected function scheduleStrings_calc(): array
$dateTimeArr = new StringableArray();
$dateArr = new StringableArray();
$timeArr = [];
- foreach ($commonOccurrences as $co) {
- $a = DateFormats::DurationToStringArray($co['example'], $co['exampleEnd'], null, $co['example']->isAllDay);
+ $now = Utilities::dateTimeNow();
+
+ // filter meetings to only those not past
+ $originalMeetingCount = count($this->meetings());
+ $meetings = array_filter($this->meetings(), fn($m) => $m->mtgEndDt > $now);
+ if (count($meetings) === 0) {
+ $meetings = $this->meetings();
+ }
+ $andOthers = (count($meetings) !== $originalMeetingCount);
+
+ foreach ($meetings as $m) {
+ $a = DateFormats::DurationToStringArray($m->mtgStartDt, $m->mtgEndDt, null, $m->mtgStartDt->isAllDay);
if (isset($a['datetime'])) {
$forceDateTime = true;
@@ -1106,10 +1116,10 @@ protected function scheduleStrings_calc(): array
}
if ($forceDateTime) {
- $r['datetime'] = $dateTimeArr->__toString();
+ $r['datetime'] = $dateTimeArr->toListString(2, $andOthers);
$r['combined'] = $r['datetime'];
} else {
- $dateStr = $dateArr->toListString();
+ $dateStr = $dateArr->toListString(2, $andOthers);
$r['date'] = $dateStr;
$r['time'] = $timeArr[0];
diff --git a/src/TouchPoint-WP/Person.php b/src/TouchPoint-WP/Person.php
index 719cf8b4..0675c89d 100644
--- a/src/TouchPoint-WP/Person.php
+++ b/src/TouchPoint-WP/Person.php
@@ -1419,6 +1419,8 @@ public function getProfileUrl(): ?string
*
* @param Person[]|PersonArray $people TODO make api compliant with Person object--remove coalesces. (#120)
*
+ * TODO merge with Utilities::stringArrayToListString()
+ *
* @return ?string Returns a human-readable list of names, nicely formatted with commas and such.
*/
public static function arrangeNamesForPeople($people, bool $asLink = false, int $familyLimit = 3): ?string
diff --git a/src/TouchPoint-WP/Utilities.php b/src/TouchPoint-WP/Utilities.php
index 6fb439a6..a435fb9a 100644
--- a/src/TouchPoint-WP/Utilities.php
+++ b/src/TouchPoint-WP/Utilities.php
@@ -247,11 +247,18 @@ public static function getTimeOfDayTermForTime_noI18n(DateTimeInterface $dt): st
* Turn ['apples', 'oranges', 'pears'] into "apples, oranges & pears"
*
* @param string[] $strings
+ * @param int $limit The maximum number of items to include. Default is very, very high.
+ * @param bool $andOthers If true, the last item will be "others" instead of the actual last item.
*
* @return string
*/
- public static function stringArrayToListString(array $strings): string
+ public static function stringArrayToListString(array $strings, int $limit = PHP_INT_MAX, bool $andOthers = false): string
{
+ if ($limit < count($strings)) {
+ $andOthers = true;
+ $strings = array_slice($strings, 0, $limit);
+ }
+
$concat = implode('', $strings);
$comma = ', ';
@@ -265,9 +272,13 @@ public static function stringArrayToListString(array $strings): string
$useOxford = true;
}
- $last = array_pop($strings);
+ if ($andOthers) {
+ $last = _x("others", "list of items, and *others*", "TouchPoint-WP");
+ } else {
+ $last = array_pop($strings);
+ }
$str = implode($comma, $strings);
- if (count($strings) > 0) {
+ if ((count($strings) + $andOthers) > 0) {
if ($useOxford) {
$str .= trim($comma);
}
diff --git a/src/TouchPoint-WP/Utilities/StringableArray.php b/src/TouchPoint-WP/Utilities/StringableArray.php
index 595e0c9c..e4f596f6 100644
--- a/src/TouchPoint-WP/Utilities/StringableArray.php
+++ b/src/TouchPoint-WP/Utilities/StringableArray.php
@@ -93,10 +93,12 @@ public function join(string $separator = null): string
/**
* Convert the array to a list string with ampersands and such.
*
+ * @param int $limit
+ *
* @return string
*/
- public function toListString(): string
+ public function toListString(int $limit = PHP_INT_MAX): string
{
- return Utilities::stringArrayToListString($this->getArrayCopy());
+ return Utilities::stringArrayToListString($this->getArrayCopy(), $limit);
}
}
\ No newline at end of file
From 80e888d9e11f1c0ea6d8063826e9731cc1311a02 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Fri, 9 Aug 2024 14:48:11 -0400
Subject: [PATCH 166/423] Python Reports. Closes #195.
---
composer.json | 2 +-
docs | 2 +-
package.json | 2 +-
src/TouchPoint-WP/Report.php | 4 +-
src/TouchPoint-WP/TouchPointWP.php | 2 +-
src/python/WebApi.py | 67 ++++++++++++++++++++----------
touchpoint-wp.php | 2 +-
7 files changed, 51 insertions(+), 30 deletions(-)
diff --git a/composer.json b/composer.json
index 6fca4c4f..50bc49f5 100644
--- a/composer.json
+++ b/composer.json
@@ -3,7 +3,7 @@
"description": "A WordPress Plugin for integrating with TouchPoint Church Management Software.",
"license": "AGPL-3.0-or-later",
"type": "wordpress-plugin",
- "version": "0.0.91",
+ "version": "0.0.92",
"keywords": [
"wordpress",
"wp",
diff --git a/docs b/docs
index 4cf68572..d0b1925d 160000
--- a/docs
+++ b/docs
@@ -1 +1 @@
-Subproject commit 4cf685722223cd6fb72f1ff1627bc890c94fbaa5
+Subproject commit d0b1925da8688f9e37a92e041c0f991bfe27bbd1
diff --git a/package.json b/package.json
index 4e5933cd..0bdc17f4 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "touchpoint-wp",
- "version": "0.0.90",
+ "version": "0.0.92",
"description": "A WordPress Plugin for integrating with TouchPoint Church Management Software.",
"directories": {
"doc": "docs"
diff --git a/src/TouchPoint-WP/Report.php b/src/TouchPoint-WP/Report.php
index e9d31de0..1e75d3e7 100644
--- a/src/TouchPoint-WP/Report.php
+++ b/src/TouchPoint-WP/Report.php
@@ -98,7 +98,7 @@ public static function fromParams($params): self
}
$params['type'] = strtolower($params['type']);
- if ($params['type'] !== 'sql') {
+ if ($params['type'] !== 'sql' && $params['type'] !== 'python') {
throw new TouchPointWP_Exception("Invalid Report type.", 173002);
}
@@ -283,7 +283,7 @@ public static function reportShortcode($params = [], string $content = ""): stri
if (self::$_indexingMode) {
// It has been added to the index already, so our work here is done.
- return "";
+ return $content;
}
$rc = $report->content();
diff --git a/src/TouchPoint-WP/TouchPointWP.php b/src/TouchPoint-WP/TouchPointWP.php
index 65e517fd..26e26924 100644
--- a/src/TouchPoint-WP/TouchPointWP.php
+++ b/src/TouchPoint-WP/TouchPointWP.php
@@ -32,7 +32,7 @@ class TouchPointWP
/**
* Version number
*/
- public const VERSION = "0.0.91";
+ public const VERSION = "0.0.92";
/**
* The Token
diff --git a/src/python/WebApi.py b/src/python/WebApi.py
index 4809fad3..3295316e 100644
--- a/src/python/WebApi.py
+++ b/src/python/WebApi.py
@@ -5,7 +5,7 @@
import linecache
import sys
-VERSION = "0.0.90"
+VERSION = "0.0.92"
sgContactEvName = "Contact"
@@ -1139,38 +1139,59 @@ def get_person_info_for_sync(person_obj):
Data.Title = 'Running requested reports'
if inData.has_key('reports'):
+ # Consolidate the scripts that need to be run.
+
# noinspection SqlResolve,SqlConstantCondition,SqlConstantExpression
- reportsQ = 'SELECT Id, Name, Body, TypeId FROM Content WHERE 1=0'
+ sqlReportsQ = 'SELECT Id, Name, Body, TypeId FROM Content WHERE 1=0'
+ pyReportsQ = 'SELECT Id, Name, Body, TypeId FROM Content WHERE 1=0'
sqlPs = {}
+ pyPs = {}
for r in inData['reports']:
rNameL = r['name'].lower()
- typ = 9999
if r['type'] == 'sql':
- typ = 4
if rNameL not in sqlPs:
sqlPs[rNameL] = []
- reportsQ += " OR (Name = '{}' AND TypeId = {})".format(r['name'], typ)
+ sqlReportsQ += " OR (Name = '{}' AND TypeId = 4)".format(r['name'])
sqlPs[rNameL].append(r['p1'])
-
- Data.sqlPs = sqlPs
-
- Data.report_results = []
- for r in q.QuerySql(reportsQ):
- if r.TypeId == 4: # SQL
- rNameL = r.Name.lower()
- if rNameL in sqlPs:
- for p1 in sqlPs[rNameL]:
- sql = r.Body.replace("@p1", "'{}'".format(p1))
-
- Data.report_results.append({
- 'id': r.Id,
- 'name': r.Name,
- 'type': 'sql',
- 'p1': p1,
- 'result': model.SqlGrid(sql)[131:-96] # The substring removes the superfluous html
- })
+ elif r['type'] == 'python':
+ if rNameL not in pyPs:
+ pyPs[rNameL] = []
+ pyReportsQ += " OR (Name = '{}' AND TypeId = 5)".format(r['name'])
+ pyPs[rNameL].append(r['p1'])
+
+ reportResults = []
+
+ # Evaluate the Python Reports
+ for r in q.QuerySql(pyReportsQ):
+ rNameL = r.Name.lower()
+ for p1 in pyPs[rNameL]:
+ model.Data.p1 = p1
+
+ reportResults.append({
+ 'id': r.Id,
+ 'name': r.Name,
+ 'type': 'python',
+ 'p1': p1,
+ 'result': model.CallScript(r.Name)
+ })
+
+ # Evaluate the SQL Reports
+ for r in q.QuerySql(sqlReportsQ):
+ rNameL = r.Name.lower()
+ if rNameL in sqlPs:
+ for p1 in sqlPs[rNameL]:
+ sql = r.Body.replace("@p1", "'{}'".format(p1))
+
+ reportResults.append({
+ 'id': r.Id,
+ 'name': r.Name,
+ 'type': 'sql',
+ 'p1': p1,
+ 'result': model.SqlGrid(sql)[131:-96] # The substring removes the superfluous html
+ })
Data.success = 1
+ Data.report_results = reportResults
if "auth_key_set" in Data.a and model.HttpMethod == "post":
apiCalled = True
diff --git a/touchpoint-wp.php b/touchpoint-wp.php
index 994db3a5..d3fa636e 100644
--- a/touchpoint-wp.php
+++ b/touchpoint-wp.php
@@ -14,7 +14,7 @@
Plugin URI: https://github.com/tenthpres/touchpoint-wp
Update URI: https://github.com/tenthpres/touchpoint-wp
Description: A WordPress Plugin for integrating with TouchPoint Church Management Software.
-Version: 0.0.91
+Version: 0.0.92
Author: James K
Author URI: https://github.com/jkrrv
License: AGPLv3+
From 325e0568d5ad6e0498cfef5a4e1639d578c58b79 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Fri, 9 Aug 2024 14:53:52 -0400
Subject: [PATCH 167/423] Python Reports. #195.
---
README.md | 4 ++++
docs | 2 +-
2 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/README.md b/README.md
index fad7fd02..e5e03da5 100644
--- a/README.md
+++ b/README.md
@@ -28,6 +28,10 @@ No login required, just an email address and zip code.
Show your Staff members, Elders, or other collections of people, automatically kept in sync with TouchPoint.
[Example.](https://www.tenth.org/about/staff) (This example and others like is are 100% updated from TouchPoint, including the titles and social links.)
+### Embedded Reports
+Any SQL or Python report generated in TouchPoint can be embedded into your website and automatically updated. For example,
+we have a financial update chart that is automatically updated to reflect giving.
+
### Outreach Partners
Automatically import partner bios and info from TouchPoint for display on your public website, with
appropriate care for their security.
diff --git a/docs b/docs
index d0b1925d..64db0108 160000
--- a/docs
+++ b/docs
@@ -1 +1 @@
-Subproject commit d0b1925da8688f9e37a92e041c0f991bfe27bbd1
+Subproject commit 64db0108b34642ada36cc3e8a2f0716a858bf72b
From cd915e10eebb07067860b8f1c127ddb7a47e790a Mon Sep 17 00:00:00 2001
From: "James K."
Date: Fri, 9 Aug 2024 14:55:50 -0400
Subject: [PATCH 168/423] Python Reports.
---
docs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs b/docs
index 64db0108..0bda5ee9 160000
--- a/docs
+++ b/docs
@@ -1 +1 @@
-Subproject commit 64db0108b34642ada36cc3e8a2f0716a858bf72b
+Subproject commit 0bda5ee9dbbc66865ebbe502d24d282124836059
From afbbf8d9a7fa689188a2ee387d6eb76f1179cb80 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Fri, 9 Aug 2024 15:19:02 -0400
Subject: [PATCH 169/423] changing Reports to include the report type in the
name to distinguish data more easily.
---
src/TouchPoint-WP/Report.php | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/src/TouchPoint-WP/Report.php b/src/TouchPoint-WP/Report.php
index 1e75d3e7..254ec8e7 100644
--- a/src/TouchPoint-WP/Report.php
+++ b/src/TouchPoint-WP/Report.php
@@ -302,7 +302,10 @@ public static function reportShortcode($params = [], string $content = ""): stri
* @param Report $report The report being displayed.
*/
$class = apply_filters("tp_rpt_figure_class", self::$classDefault, $report);
- $rc = "\n\t" . str_replace("\n", "\n\t", $rc);
+
+ $permalink = esc_attr(get_post_permalink($report->getPost()));
+
+ $rc = "\n\t" . str_replace("\n", "\n\t", $rc);
// If desired, add a caption that indicates when the table was last updated.
if ($params['showupdated']) {
@@ -349,8 +352,7 @@ public function getPost(bool $create = false): ?WP_Post
'value' => $this->p1
]
],
- 'numberposts' => 2
-// only need one, but if there's two, there should be an error condition.
+ 'numberposts' => 2 // only need one, but if there's two, there should be an error condition.
]);
$reportPosts = $q->get_posts();
@@ -364,7 +366,7 @@ public function getPost(bool $create = false): ?WP_Post
$postId = wp_insert_post([
'post_type' => self::POST_TYPE,
'post_status' => 'publish',
- 'post_name' => $this->title(),
+ 'post_name' => $this->title() . " " . $this->type,
'meta_input' => [
self::NAME_META_KEY => $this->name,
self::TYPE_META_KEY => $this->type,
From 2fc09296a2a1683d4a2cc7b1cecba68c7803da58 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Tue, 13 Aug 2024 21:20:24 -0400
Subject: [PATCH 170/423] Don't show register/rsvp links for cancelled
meetings. Closes #196
---
src/TouchPoint-WP/Meeting.php | 18 ++++++++++--------
1 file changed, 10 insertions(+), 8 deletions(-)
diff --git a/src/TouchPoint-WP/Meeting.php b/src/TouchPoint-WP/Meeting.php
index 0574dc41..d2dff664 100644
--- a/src/TouchPoint-WP/Meeting.php
+++ b/src/TouchPoint-WP/Meeting.php
@@ -415,15 +415,17 @@ public function getActionButtons(string $context = null, string $btnClass = "",
$ret = $inv->getActionButtons($context . "_meeting", $btnClass, false, $absoluteLinks, false);
- if (($this->endDt ?? $this->startDt) > Utilities::dateTimeNow()) {
- $ret[] = $inv->getRegisterButton($btnClass, $absoluteLinks);
- }
+ if ($this->status() !== self::STATUS_CANCELLED) {
+ if (($this->endDt ?? $this->startDt) > Utilities::dateTimeNow()) {
+ $ret[] = $inv->getRegisterButton($btnClass, $absoluteLinks);
+ }
- if ($inv->getRegistrationType() === RegistrationType::RSVP) {
- if ($absoluteLinks) {
- $ret[] = $this->getRsvpLink($btnClass);
- } else {
- $ret[] = $this->getRsvpButton($btnClass);
+ if ($inv->getRegistrationType() === RegistrationType::RSVP) {
+ if ($absoluteLinks) {
+ $ret[] = $this->getRsvpLink($btnClass);
+ } else {
+ $ret[] = $this->getRsvpButton($btnClass);
+ }
}
}
From 1666f929389a9073ddfc7462be65b3783c56657d Mon Sep 17 00:00:00 2001
From: "James K."
Date: Tue, 13 Aug 2024 21:29:26 -0400
Subject: [PATCH 171/423] Correcting build script to not double-zip plugin
---
.github/workflows/push.yml | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml
index d7261742..5af129c5 100644
--- a/.github/workflows/push.yml
+++ b/.github/workflows/push.yml
@@ -11,7 +11,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout code
- uses: actions/checkout@v2
+ uses: actions/checkout@v4
- name: Permissions
run: chmod +x build.sh
@@ -22,7 +22,7 @@ jobs:
shell: bash
- name: Upload Artifacts
- uses: actions/upload-artifact@v2
+ uses: actions/upload-artifact@v4
with:
- name: touchpoint-wp.zip
- path: touchpoint-wp.zip
\ No newline at end of file
+ name: touchpoint-wp
+ path: build
From 25dbdccc320731983b13f2453b654bfca116cea1 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Wed, 14 Aug 2024 17:26:26 -0400
Subject: [PATCH 172/423] Not committing these things was a mistake.
---
src/TouchPoint-WP/Partner.php | 16 +++--
src/TouchPoint-WP/Rsvp.php | 2 +
src/templates/meeting-archive.php | 2 +-
src/templates/parts/meeting-list-item.php | 85 +++++++++++++++++++++++
4 files changed, 97 insertions(+), 8 deletions(-)
create mode 100644 src/templates/parts/meeting-list-item.php
diff --git a/src/TouchPoint-WP/Partner.php b/src/TouchPoint-WP/Partner.php
index ceefa8e8..406dd6f1 100644
--- a/src/TouchPoint-WP/Partner.php
+++ b/src/TouchPoint-WP/Partner.php
@@ -814,14 +814,16 @@ protected static final function filterDropdownHtml($params = []): string
&& TouchPointWP::instance()->settings->global_primary_tax !== "") {
$tax = get_taxonomy(Taxonomies::TAX_GP_CATEGORY);
- $name = substr($tax->name, strlen(TouchPointWP::SETTINGS_PREFIX));
- $content .= "";
- $content .= "$tax->label ";
- $content .= "$any ";
- foreach (get_terms(Taxonomies::TAX_GP_CATEGORY) as $t) {
- $content .= "slug\">$t->name ";
+ if ($tax !== false) {
+ $name = substr($tax->name, strlen(TouchPointWP::SETTINGS_PREFIX));
+ $content .= "";
+ $content .= "$tax->label ";
+ $content .= "$any ";
+ foreach (get_terms(Taxonomies::TAX_GP_CATEGORY) as $t) {
+ $content .= "slug\">$t->name ";
+ }
+ $content .= " ";
}
- $content .= " ";
}
if ($params['includeMapWarnings']) {
diff --git a/src/TouchPoint-WP/Rsvp.php b/src/TouchPoint-WP/Rsvp.php
index 184f01b8..d3c2ca6e 100644
--- a/src/TouchPoint-WP/Rsvp.php
+++ b/src/TouchPoint-WP/Rsvp.php
@@ -115,6 +115,8 @@ public static function shortcode(array $params, string $content): string
TouchPointWP::enqueueActionsStyle('rsvp');
Person::enqueueUsersForJsInstantiation();
+ // TODO merge with Meeting::rsvpButton()
+
return "$content $preloadMsg ";
}
}
diff --git a/src/templates/meeting-archive.php b/src/templates/meeting-archive.php
index 68eb3377..9b24c18e 100644
--- a/src/templates/meeting-archive.php
+++ b/src/templates/meeting-archive.php
@@ -25,7 +25,7 @@
') + 5);
$content = substr($content, 0, strrpos($content, '
Date: Sun, 25 Aug 2024 10:16:55 -0400
Subject: [PATCH 174/423] Create a TouchPoint-specific user for updates.
Starts #200, closes #199.
---
src/TouchPoint-WP/Report.php | 6 ++-
src/TouchPoint-WP/TouchPointWP.php | 80 ++++++++++++++++++++++++++++++
2 files changed, 85 insertions(+), 1 deletion(-)
diff --git a/src/TouchPoint-WP/Report.php b/src/TouchPoint-WP/Report.php
index d61cf157..8a32dcc4 100644
--- a/src/TouchPoint-WP/Report.php
+++ b/src/TouchPoint-WP/Report.php
@@ -76,7 +76,7 @@ protected function __construct($params)
*
* @return void
*/
- protected function mergeParams($params)
+ protected function mergeParams($params): void
{
$this->interval = min($this->interval, $params['interval'] ?? $this->interval);
}
@@ -438,6 +438,8 @@ public function content(string $contentIfError = self::DEFAULT_CONTENT): string
*/
public static function updateFromTouchPoint(bool $forceEvenIfNotDue = false): int
{
+ TouchPointWP::instance()->setTpWpUserAsCurrent();
+
// Find Report Shortcodes in post content and add their involvements to the query.
$referencingPosts = Utilities::getPostContentWithShortcode(self::SHORTCODE_REPORT);
$postIdsToNotDelete = [];
@@ -529,6 +531,8 @@ public static function updateFromTouchPoint(bool $forceEvenIfNotDue = false): in
TouchPointWP::instance()->flushRewriteRules();
}
+ TouchPointWP::instance()->unsetTpWpUserAsCurrent();
+
return $updateCount;
}
diff --git a/src/TouchPoint-WP/TouchPointWP.php b/src/TouchPoint-WP/TouchPointWP.php
index 26e26924..ebd7e4f3 100644
--- a/src/TouchPoint-WP/TouchPointWP.php
+++ b/src/TouchPoint-WP/TouchPointWP.php
@@ -13,6 +13,7 @@
use WP_Error;
use WP_Http;
use WP_Term;
+use WP_User;
if ( ! defined('ABSPATH')) {
@@ -2491,4 +2492,83 @@ public static function newQueryObject(): array
'context' => null
];
}
+
+ protected const TPWP_USER = 'touchpoint-wp';
+
+ /**
+ * @throws TouchPointWP_WPError
+ */
+ public function validateThatTpWpUserExists(): bool
+ {
+ $displayName = 'TouchPoint-WP Service';
+ $email = 'tpwp@tenth.org';
+
+ // Check if the user already exists
+ if (username_exists(self::TPWP_USER)) {
+ return true; // User already exists, no need to create
+ }
+
+ // Generate a random password
+ $password = wp_generate_password(50, false);
+
+ // Create the user
+ $user_id = wp_create_user(self::TPWP_USER, $password, $email);
+
+ if (is_wp_error($user_id)) {
+ throw new TouchPointWP_WPError($user_id);
+ }
+
+ // Set the role to administrator
+ $user = new WP_User($user_id);
+ $user->set_role('administrator');
+ $user->display_name = $displayName;
+ wp_update_user($user);
+
+ return true;
+ }
+
+ /**
+ * A variable to hold the actual user, if there is one while we temporarily swap to the TPWP user.
+ *
+ * @var WP_User|null
+ */
+ protected ?WP_User $priorUser = null;
+
+
+ /**
+ * Make the TPWP user the active one, so permissions are not dependent on whoever happens to be running things
+ * at the moment.
+ *
+ * @return void
+ */
+ public function setTpWpUserAsCurrent(): void
+ {
+ try {
+ $this->validateThatTpWpUserExists();
+ } catch (TouchPointWP_WPError) {
+ }
+
+ $priorUser = wp_get_current_user();
+
+ $tpUser = get_user_by('login', 'touchpoint-wp');
+ if ($tpUser && $tpUser !== $priorUser) {
+ $this->priorUser = $priorUser;
+ wp_set_current_user($tpUser->ID, $tpUser->user_login);
+ }
+ }
+
+ /**
+ * Restore the actual user to the user position.
+ *
+ * @return void
+ */
+ public function unsetTpWpUserAsCurrent(): void
+ {
+ if ($this->priorUser) {
+ wp_set_current_user($this->priorUser->ID, $this->priorUser->user_login);
+ $this->priorUser = null;
+ } else {
+ wp_set_current_user(0);
+ }
+ }
}
\ No newline at end of file
From c06a16de92f89f17e3141a588af1cabe9cfd817d Mon Sep 17 00:00:00 2001
From: "James K."
Date: Sun, 25 Aug 2024 20:25:29 -0400
Subject: [PATCH 175/423] Use a TouchPoint user for updates. Closes #200.
---
src/TouchPoint-WP/Involvement.php | 4 ++++
src/TouchPoint-WP/Partner.php | 4 ++++
src/TouchPoint-WP/Person.php | 4 ++++
3 files changed, 12 insertions(+)
diff --git a/src/TouchPoint-WP/Involvement.php b/src/TouchPoint-WP/Involvement.php
index 66780052..85fe6ca6 100644
--- a/src/TouchPoint-WP/Involvement.php
+++ b/src/TouchPoint-WP/Involvement.php
@@ -381,13 +381,17 @@ public final static function updateFromTouchPoint(bool $verbose = false): int
}
// Divisions
+ $update = false;
try {
+ TouchPointWP::instance()->setTpWpUserAsCurrent();
$update = self::updateInvolvementPostsForType($type, $verbose);
} catch (Exception $e) {
if ($verbose) {
echo "An exception occurred while syncing $type->namePlural: " . $e->getMessage();
}
continue;
+ } finally {
+ TouchPointWP::instance()->unsetTpWpUserAsCurrent();
}
if ($update === false) {
diff --git a/src/TouchPoint-WP/Partner.php b/src/TouchPoint-WP/Partner.php
index 406dd6f1..f9f6fd09 100644
--- a/src/TouchPoint-WP/Partner.php
+++ b/src/TouchPoint-WP/Partner.php
@@ -292,6 +292,8 @@ public static function updateFromTouchPoint(bool $verbose = false)
$verbose &= TouchPointWP::currentUserIsAdmin();
+ TouchPointWP::instance()->setTpWpUserAsCurrent();
+
if (TouchPointWP::instance()->settings->enable_global !== 'on') {
if ($verbose) {
echo "Global is not enabled.";
@@ -545,6 +547,8 @@ public static function updateFromTouchPoint(bool $verbose = false)
if ($count > 0) {
TouchPointWP::instance()->flushRewriteRules();
}
+
+ TouchPointWP::instance()->unsetTpWpUserAsCurrent();
return $count;
}
diff --git a/src/TouchPoint-WP/Person.php b/src/TouchPoint-WP/Person.php
index 0675c89d..0eaf1b74 100644
--- a/src/TouchPoint-WP/Person.php
+++ b/src/TouchPoint-WP/Person.php
@@ -678,6 +678,8 @@ protected static function updateFromTouchPoint(bool $verbose = false)
$queryNeeded = false;
$verbose &= TouchPointWP::currentUserIsAdmin();
+
+ TouchPointWP::instance()->setTpWpUserAsCurrent();
// Existing Users
/** @noinspection SqlResolve */
@@ -782,6 +784,8 @@ protected static function updateFromTouchPoint(bool $verbose = false)
}
}
+ TouchPointWP::instance()->unsetTpWpUserAsCurrent();
+
return $count;
}
From 9ae562744d80835ccfe86ea13ed4a3c7b99ff631 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Fri, 30 Aug 2024 16:42:50 -0400
Subject: [PATCH 176/423] Prevent Report update from shifting notably later in
the day.
---
src/TouchPoint-WP/Report.php | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/src/TouchPoint-WP/Report.php b/src/TouchPoint-WP/Report.php
index 8a32dcc4..83b666bf 100644
--- a/src/TouchPoint-WP/Report.php
+++ b/src/TouchPoint-WP/Report.php
@@ -51,7 +51,7 @@ class Report implements api, module, JsonSerializable, updatesViaCron
protected string $type;
protected string $name;
- protected float $interval;
+ protected float $interval; // Hours
protected string $p1 = '';
protected int $status = 0;
@@ -557,12 +557,15 @@ private static function cleanupSqlContent(string $content): string
/**
* Get the update Interval as a DateInterval for use with DateTime functions.
*
+ * @param int $diff Number of minutes to subtract from the interval. Default is 15.
+ *
* @return DateInterval
*/
- public function intervalAsDateInterval(): DateInterval
+ protected function intervalAsDateInterval(int $diff = 15): DateInterval
{
- $m = ($this->interval * 60) % 60;
- $h = $this->interval - ($m / 60);
+ $i = $this->interval - ($diff / 60); // subtract to avoid updates shifting later in the day.
+ $m = ($i * 60) % 60;
+ $h = $i - ($m / 60);
return new DateInterval("PT{$h}H{$m}M");
}
From ce0421bcf336fa421fc7d024612b9db1dde103fd Mon Sep 17 00:00:00 2001
From: "James K."
Date: Tue, 10 Sep 2024 18:04:22 -0400
Subject: [PATCH 177/423] Improvements for python reports that generate SVGs.
Closes #201 Closes #202
---
src/TouchPoint-WP/Report.php | 79 +++++++++++++++++++
.../Utilities/ImageConversions.php | 50 ++++++++++++
2 files changed, 129 insertions(+)
create mode 100644 src/TouchPoint-WP/Utilities/ImageConversions.php
diff --git a/src/TouchPoint-WP/Report.php b/src/TouchPoint-WP/Report.php
index 83b666bf..3326020d 100644
--- a/src/TouchPoint-WP/Report.php
+++ b/src/TouchPoint-WP/Report.php
@@ -10,6 +10,7 @@
use Exception;
use JsonSerializable;
use tp\TouchPointWP\Utilities\Http;
+use tp\TouchPointWP\Utilities\ImageConversions;
use WP_Error;
use WP_Post;
use WP_Query;
@@ -21,6 +22,8 @@
if ( ! TOUCHPOINT_COMPOSER_ENABLED) {
require_once "api.php";
require_once "updatesViaCron.php";
+ require_once "Utilities/ImageConversions.php";
+ require_once "Utilities/Http.php";
}
/**
@@ -218,6 +221,77 @@ public static function api(array $uri): bool
}
exit;
}
+ } else if (count($uri['path']) === 4) {
+ [$filename, $ext] = explode(".", $uri['path'][3], 2);
+
+ switch ($uri['path'][2]) {
+ case "py":
+ TouchPointWP::doCacheHeaders(TouchPointWP::CACHE_NONE);
+
+ $r = Report::fromParams([
+ 'type' => 'python',
+ 'name' => $filename,
+ 'p1' => $_GET['p1'] ?? ''
+ ]);
+ $content = $r->content();
+ if ($content === self::DEFAULT_CONTENT) {
+ http_response_code(Http::NOT_FOUND);
+ exit;
+ }
+
+ switch ($ext) {
+ case "svg":
+ header("Content-Type: image/svg+xml");
+ break;
+
+ case "svg.png":
+ $cached = get_post_meta($r->getPost()->ID, self::META_PREFIX . "svg_png", true);
+ if ($cached !== '') {
+ $content = base64_decode($cached);
+ } else {
+ try {
+ $content = "";
+ $content = ImageConversions::svgToPng($content);
+ update_post_meta($r->getPost()->ID, self::META_PREFIX . "svg_png", base64_encode($content));
+ } catch (TouchPointWP_Exception $e) {
+ http_response_code(Http::SERVICE_UNAVAILABLE);
+ echo $e->getMessage();
+ exit;
+ } catch (Exception $e) {
+ http_response_code(Http::SERVER_ERROR);
+ echo $e->getMessage();
+ exit;
+ }
+ }
+ header("Content-Type: image/png");
+ break;
+
+ default:
+ header("Content-Type: text/plain");
+ break;
+ }
+
+
+ echo $content;
+ exit;
+
+ case "sql":
+ TouchPointWP::doCacheHeaders(TouchPointWP::CACHE_NONE);
+ header("Cache-Control: max-age=3600, must-revalidate, public");
+ $r = Report::fromParams([
+ 'type' => 'sql',
+ 'name' => $filename,
+ 'p1' => $_GET['p1'] ?? ''
+ ]);
+ $content = $r->content();
+ if ($content === self::DEFAULT_CONTENT) {
+ http_response_code(Http::NOT_FOUND);
+ exit;
+ }
+
+ echo $content;
+ exit;
+ }
}
return false;
@@ -406,6 +480,11 @@ protected function submitUpdate()
return null;
}
+ // Clear the cached PNG if it exists.
+ if (get_post_meta($this->post->ID, self::META_PREFIX . "svg_png", true) !== '') {
+ update_post_meta($this->post->ID, self::META_PREFIX . "svg_png", '');
+ }
+
return wp_update_post($this->post);
}
diff --git a/src/TouchPoint-WP/Utilities/ImageConversions.php b/src/TouchPoint-WP/Utilities/ImageConversions.php
new file mode 100644
index 00000000..9ea2b6de
--- /dev/null
+++ b/src/TouchPoint-WP/Utilities/ImageConversions.php
@@ -0,0 +1,50 @@
+loadXML($svgContent);
+
+ // won't work without xmlns. This makes sure it's present.
+ $svg->documentElement->setAttribute('xmlns', 'http://www.w3.org/2000/svg');
+
+ // Test if Imagick is available
+ if (!extension_loaded('imagick')) {
+ throw new TouchPointWP_Exception('Imagick extension is not available');
+ }
+
+ if (count(\Imagick::queryformats('SVG')) < 1) {
+ throw new TouchPointWP_Exception('Imagick on this server does not support SVG');
+ }
+
+ $im = new \Imagick();
+ $im->setResolution(300, 300);
+ $im->setBackgroundColor(new \ImagickPixel('transparent'));
+ $im->readImageBlob($svg->saveXML());
+
+ $im->setImageAlphaChannel(\Imagick::ALPHACHANNEL_ACTIVATE);
+
+ $im = $im->mergeImageLayers(\Imagick::LAYERMETHOD_FLATTEN);
+
+ $im->setImageFormat('png');
+
+ return $im->getImageBlob();
+ }
+}
\ No newline at end of file
From 635dc94d76831360a424e829d9a8fa6fd50119a9 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Tue, 10 Sep 2024 18:04:50 -0400
Subject: [PATCH 178/423] Adding DOM requirement
---
composer.json | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/composer.json b/composer.json
index 50bc49f5..eec1aa45 100644
--- a/composer.json
+++ b/composer.json
@@ -30,7 +30,8 @@
"php": ">=8.0",
"composer/installers": "~1.0",
"ext-json": "*",
- "ext-zip": "*"
+ "ext-zip": "*",
+ "ext-dom": "*"
},
"require-dev": {
"pronamic/wp-documentor": "^1.3",
From 7debc5db9e36b9beac55382458afb099b259a7d5 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Tue, 10 Sep 2024 18:20:08 -0400
Subject: [PATCH 179/423] Resolving issues with nginx assuming .png files are
static
---
src/TouchPoint-WP/Report.php | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)
diff --git a/src/TouchPoint-WP/Report.php b/src/TouchPoint-WP/Report.php
index 3326020d..7eb426e4 100644
--- a/src/TouchPoint-WP/Report.php
+++ b/src/TouchPoint-WP/Report.php
@@ -221,8 +221,17 @@ public static function api(array $uri): bool
}
exit;
}
- } else if (count($uri['path']) === 4) {
- [$filename, $ext] = explode(".", $uri['path'][3], 2);
+ } else if (count($uri['path']) === 4 || count($uri['path']) === 5) {
+ $parts = explode(".", $uri['path'][3], 2);
+ if (count($parts) === 2) {
+ [$filename, $ext] = $parts;
+ } else {
+ $filename = $parts[0];
+ $ext = null;
+ if (isset($uri['path'][4])) {
+ $ext = str_replace("_", '.', $uri['path'][4]) ?? null;
+ }
+ }
switch ($uri['path'][2]) {
case "py":
From fb45fa0ace38294a607aded8fe50385b8c9e87d2 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Tue, 10 Sep 2024 18:27:17 -0400
Subject: [PATCH 180/423] Typo
---
src/TouchPoint-WP/Report.php | 1 -
1 file changed, 1 deletion(-)
diff --git a/src/TouchPoint-WP/Report.php b/src/TouchPoint-WP/Report.php
index 7eb426e4..19b01069 100644
--- a/src/TouchPoint-WP/Report.php
+++ b/src/TouchPoint-WP/Report.php
@@ -259,7 +259,6 @@ public static function api(array $uri): bool
$content = base64_decode($cached);
} else {
try {
- $content = "";
$content = ImageConversions::svgToPng($content);
update_post_meta($r->getPost()->ID, self::META_PREFIX . "svg_png", base64_encode($content));
} catch (TouchPointWP_Exception $e) {
From 1cd453abf51602107953ce5cf82ebaeca7ff82de Mon Sep 17 00:00:00 2001
From: "James K."
Date: Wed, 11 Sep 2024 12:23:56 -0400
Subject: [PATCH 181/423] Adding a validation step for image conversion.
---
src/TouchPoint-WP/Utilities/ImageConversions.php | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/src/TouchPoint-WP/Utilities/ImageConversions.php b/src/TouchPoint-WP/Utilities/ImageConversions.php
index 9ea2b6de..637b5d54 100644
--- a/src/TouchPoint-WP/Utilities/ImageConversions.php
+++ b/src/TouchPoint-WP/Utilities/ImageConversions.php
@@ -30,7 +30,7 @@ public static function svgToPng($svgContent): string
throw new TouchPointWP_Exception('Imagick extension is not available');
}
- if (count(\Imagick::queryformats('SVG')) < 1) {
+ if (count(\Imagick::queryFormats('SVG')) < 1) {
throw new TouchPointWP_Exception('Imagick on this server does not support SVG');
}
@@ -43,7 +43,9 @@ public static function svgToPng($svgContent): string
$im = $im->mergeImageLayers(\Imagick::LAYERMETHOD_FLATTEN);
- $im->setImageFormat('png');
+ if (!$im->setImageFormat('png')) {
+ throw new TouchPointWP_Exception('Failed to set image format as png');
+ }
return $im->getImageBlob();
}
From a114952dbf20b51e666e2192c024bf7170c67167 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Wed, 11 Sep 2024 13:27:09 -0400
Subject: [PATCH 182/423] No longer updating content of past meetings. Some
code updates along the way.
---
src/TouchPoint-WP/Involvement.php | 62 +++++++++++--------
src/TouchPoint-WP/Meeting.php | 8 ++-
.../Utilities/StringableArray.php | 7 ++-
3 files changed, 46 insertions(+), 31 deletions(-)
diff --git a/src/TouchPoint-WP/Involvement.php b/src/TouchPoint-WP/Involvement.php
index 85fe6ca6..5a858909 100644
--- a/src/TouchPoint-WP/Involvement.php
+++ b/src/TouchPoint-WP/Involvement.php
@@ -23,6 +23,7 @@
use DateTimeImmutable;
use DateTimeZone;
use Exception;
+use JetBrains\PhpStorm\NoReturn;
use JsonSerializable;
use stdClass;
use tp\TouchPointWP\Utilities\DateFormats;
@@ -623,6 +624,7 @@ public function getRegistrationType(): int
* @deprecated 0.0.90 Does not take into account all the possible registration types; will be removed in a future
* version.
*
+ * @noinspection PHPUnused
* @return bool
*/
public function useRegistrationForm(): bool
@@ -744,12 +746,12 @@ protected static function scheduleStrings(int $invId, $inv = null): ?array
* This is separated out to a static method to prevent involvement from being instantiated (with those database
* hits) when the content is cached. (10x faster or more)
*
- * @param int $invId
- * @param ?Involvement $inv
+ * @param int $invId
+ * @param ?Involvement $inv
*
* @return ?string
*/
- public static function scheduleString(int $invId, $inv = null): ?string
+ public static function scheduleString(int $invId, ?Involvement $inv = null): ?string
{
$s = self::scheduleStrings($invId, $inv);
return $s['combined'];
@@ -1174,6 +1176,7 @@ protected function getDivisions(): array
* Returns an array of the Involvement's Divisions, excluding those that cause it to be included.
*
* @return string[]
+ * @noinspection PhpUnused
*/
public function getDivisionsStrings(): array
{
@@ -1554,6 +1557,7 @@ private static function getWpPostByInvolvementId($postType, $involvementId): WP_
* @return string
*
* @noinspection PhpUnusedParameterInspection
+ * @noinspection PhpMissingParamTypeInspection
*/
public static function listShortcode($params = [], string $content = ""): string
{
@@ -1992,7 +1996,7 @@ public static function api(array $uri): bool
case "nearby":
TouchPointWP::doCacheHeaders(TouchPointWP::CACHE_PRIVATE);
self::ajaxNearby();
- exit;
+// exit; ajaxNearby() is no-return.
case "force-sync":
TouchPointWP::doCacheHeaders(TouchPointWP::CACHE_NONE);
@@ -2007,6 +2011,7 @@ public static function api(array $uri): bool
/**
* Handles the API call to get nearby involvements (probably small groups)
*/
+ #[NoReturn]
public static function ajaxNearby(): void
{
header('Content-Type: application/json');
@@ -2626,6 +2631,7 @@ final protected static function updateInvolvementPostsForType(Involvement_PostTy
$post = wp_insert_post(
[ // create new
'post_type' => $typeSets->postType,
+ 'post_title' => $inv->titleToUse,
'post_name' => $inv->titleToUse,
'post_status' => 'publish',
'meta_input' => [
@@ -3010,7 +3016,7 @@ protected static function updateMeetingsForInvolvement(
// Return if meetings shouldn't be imported at all.
if (!$typeSets->importMeetings && !$inv->showInSites) {
- self::doMeetingMetaUpdates($post, null, false, $imagePostId, $verbose);
+ self::doMeetingMetaUpdates($post, null, false, $verbose);
return [$post->ID];
}
@@ -3018,19 +3024,11 @@ protected static function updateMeetingsForInvolvement(
// Determine Strategy //
////////////////////////
- switch (count($inv->meetings)) {
- case 0:
- $strategy = self::MEETING_STRATEGY_NONE;
- break;
-
- case 1:
- $strategy = self::MEETING_STRATEGY_SINGLE;
- break;
-
- default:
- $strategy = self::MEETING_STRATEGY_MULTIPLE;
- break;
- }
+ $strategy = match (count($inv->meetings)) {
+ 0 => self::MEETING_STRATEGY_NONE,
+ 1 => self::MEETING_STRATEGY_SINGLE,
+ default => self::MEETING_STRATEGY_MULTIPLE,
+ };
////////////////////
// Title and Slug //
@@ -3066,7 +3064,7 @@ protected static function updateMeetingsForInvolvement(
if ($strategy === self::MEETING_STRATEGY_MULTIPLE) {
// If the main post was previously a single, it needs to have the meeting info removed.
- self::doMeetingMetaUpdates($post, null, false, $imagePostId, $verbose);
+ self::doMeetingMetaUpdates($post, null, false, $verbose);
foreach ($inv->meetings as $mtgO) {
@@ -3118,8 +3116,15 @@ protected static function updateMeetingsForInvolvement(
$loops++;
} while ($counts > 1 && $loops < 3);
+ $eventIsPast = ($mtgO->mtgEndDt ?? $mtgO->mtgStartDt) < Utilities::dateTimeNow();
+
if ($counts > 0) { // post exists already.
$mtgP = reset($mtgP);
+ } elseif ($eventIsPast) {
+ if ($verbose) {
+ echo "Post not found for Meeting $mtgO->mtgId. As it is in the past, it will not be created.
";
+ }
+ continue;
} else {
if ($verbose) {
echo "Post not found for Meeting $mtgO->mtgId. Creating.
";
@@ -3139,10 +3144,12 @@ protected static function updateMeetingsForInvolvement(
}
$mtgP->post_title = $title;
- $mtgP->post_content = Utilities::standardizeHtml($inv->description, "meeting-import");
+ if (!$eventIsPast) {
+ $mtgP->post_content = Utilities::standardizeHtml($inv->description, "meeting-import");
+ }
$mtgP->post_parent = $post->ID;
- self::doMeetingMetaUpdates($mtgP, $mtgO, !!$inv->showInSites, $imagePostId, $verbose);
+ self::doMeetingMetaUpdates($mtgP, $mtgO, !!$inv->showInSites, $verbose);
wp_update_post($mtgP);
@@ -3159,9 +3166,9 @@ protected static function updateMeetingsForInvolvement(
// TODO resolve Undefined array key 0 warning
// TODO make sure synced
if ($strategy === self::MEETING_STRATEGY_SINGLE) {
- self::doMeetingMetaUpdates($post, $inv->meetings[0], !!$inv->showInSites, $imagePostId, $verbose);
+ self::doMeetingMetaUpdates($post, $inv->meetings[0], !!$inv->showInSites, $verbose);
} else { // MEETING_STRATEGY_NONE
- self::doMeetingMetaUpdates($post, null, false, $imagePostId, $verbose);
+ self::doMeetingMetaUpdates($post, null, false, $verbose);
}
wp_update_post($post);
@@ -3181,12 +3188,11 @@ protected static function updateMeetingsForInvolvement(
* @param WP_Post $mtgP
* @param ?object $mtgO
* @param bool $feature
- * @param int $imagePostId
* @param bool $verbose
*
* @return void
*/
- protected static function doMeetingMetaUpdates(WP_Post $mtgP, ?object $mtgO, bool $feature, int $imagePostId, bool $verbose = false): void
+ protected static function doMeetingMetaUpdates(WP_Post $mtgP, ?object $mtgO, bool $feature, bool $verbose = false): void
{
// If the main post was previously a single, it needs to have the meeting info removed.
if ($mtgO === null) {
@@ -3197,6 +3203,8 @@ protected static function doMeetingMetaUpdates(WP_Post $mtgP, ?object $mtgO, boo
delete_post_meta($mtgP->ID, Meeting::MEETING_INV_ID_META_KEY);
delete_post_meta($mtgP->ID, Meeting::MEETING_STATUS_META_KEY);
} else {
+ $eventIsPast = ($mtgO->mtgEndDt ?? $mtgO->mtgStartDt) < Utilities::dateTimeNow();
+
update_post_meta($mtgP->ID, Meeting::MEETING_META_KEY, $mtgO->mtgId);
update_post_meta($mtgP->ID, Meeting::MEETING_START_META_KEY, DateFormats::timestampWithoutOffset($mtgO->mtgStartDt));
update_post_meta($mtgP->ID, Meeting::MEETING_END_META_KEY, DateFormats::timestampWithoutOffset($mtgO->mtgEndDt));
@@ -3204,7 +3212,7 @@ protected static function doMeetingMetaUpdates(WP_Post $mtgP, ?object $mtgO, boo
update_post_meta($mtgP->ID, Meeting::MEETING_INV_ID_META_KEY, $mtgO->involvementId);
update_post_meta($mtgP->ID, Meeting::MEETING_STATUS_META_KEY, intval($mtgO->status));
- if ($mtgO->location !== null) {
+ if ($mtgO->location !== null && !$eventIsPast) {
update_post_meta($mtgP->ID, Meeting::MEETING_LOCATION_META_KEY, $mtgO->location);
}
@@ -3757,7 +3765,7 @@ protected function AsAMeeting(): ?Meeting
if (Meeting::postIsType($this->post)) {
try {
return Meeting::fromPost($this->post);
- } catch (TouchPointWP_Exception $e) {
+ } catch (TouchPointWP_Exception) {
return null;
}
}
diff --git a/src/TouchPoint-WP/Meeting.php b/src/TouchPoint-WP/Meeting.php
index d2dff664..c34476ca 100644
--- a/src/TouchPoint-WP/Meeting.php
+++ b/src/TouchPoint-WP/Meeting.php
@@ -519,10 +519,16 @@ public static function filterThumbnailId(int|false $thumbnail_id, int|WP_Post|nu
}
try {
- $involvementPostId = Meeting::fromPost($post)->getParent()?->post_id();
+ $meeting = Meeting::fromPost($post);
+ $involvementPostId = $meeting->involvement()?->post_id();
if (!$involvementPostId) {
return $thumbnail_id;
}
+
+ if (get_the_content(post: $involvementPostId) !== get_the_content(post: $meeting->post_id())) {
+ return $thumbnail_id;
+ }
+
return get_post_thumbnail_id($involvementPostId);
} catch (TouchPointWP_Exception) {
}
diff --git a/src/TouchPoint-WP/Utilities/StringableArray.php b/src/TouchPoint-WP/Utilities/StringableArray.php
index e4f596f6..c3ffc9b7 100644
--- a/src/TouchPoint-WP/Utilities/StringableArray.php
+++ b/src/TouchPoint-WP/Utilities/StringableArray.php
@@ -93,12 +93,13 @@ public function join(string $separator = null): string
/**
* Convert the array to a list string with ampersands and such.
*
- * @param int $limit
+ * @param int $limit
+ * @param bool $andOthers
*
* @return string
*/
- public function toListString(int $limit = PHP_INT_MAX): string
+ public function toListString(int $limit = PHP_INT_MAX, bool $andOthers = false): string
{
- return Utilities::stringArrayToListString($this->getArrayCopy(), $limit);
+ return Utilities::stringArrayToListString($this->getArrayCopy(), $limit, $andOthers);
}
}
\ No newline at end of file
From 758b35f5e42cea359edd4b8352dea280d39f19be Mon Sep 17 00:00:00 2001
From: "James K."
Date: Wed, 11 Sep 2024 22:54:15 -0400
Subject: [PATCH 183/423] Resolving some styling oddities. Also removing
duplicate action buttons in some cases.
---
src/TouchPoint-WP/Involvement.php | 12 ++++++------
src/TouchPoint-WP/Meeting.php | 8 ++++----
src/TouchPoint-WP/Partner.php | 2 +-
src/TouchPoint-WP/Utilities/StringableArray.php | 9 +++++++--
src/templates/parts/meeting-list-item.php | 2 +-
5 files changed, 19 insertions(+), 14 deletions(-)
diff --git a/src/TouchPoint-WP/Involvement.php b/src/TouchPoint-WP/Involvement.php
index 5a858909..40266c98 100644
--- a/src/TouchPoint-WP/Involvement.php
+++ b/src/TouchPoint-WP/Involvement.php
@@ -3624,17 +3624,17 @@ public function getActionButtons(string $context = null, string $btnClass = "",
if (self::allowContact($this->invType) && $this->leaders()->count() > 0) {
$text = __("Contact Leaders", 'TouchPoint-WP');
if (!$absoluteLinks) {
- $ret[] = "post_id\" data-tp-action=\"contact\" $btnClass>$text ";
+ $ret['contact_leader'] = "post_id\" data-tp-action=\"contact\" $btnClass>$text ";
TouchPointWP::enqueueActionsStyle('inv-contact');
} else {
$iid = $this->invId;
- $ret[] = "$text ";
+ $ret['contact_leader'] = "$text ";
}
}
// Register Button
if ($includeRegister === true) {
- $ret[] = $this->getRegisterButton($classesOnly);
+ $ret['register'] = $this->getRegisterButton($classesOnly);
}
// Show on map button. (Only works if map is called before this is.)
@@ -3642,9 +3642,9 @@ public function getActionButtons(string $context = null, string $btnClass = "",
$text = __("Show on Map", 'TouchPoint-WP');
if ($ret->count() > 1) {
TouchPointWP::requireScript("fontAwesome");
- $ret->prepend(" ");
+ $ret->prepend(" ", "map");
} else {
- $ret->prepend("$text ");
+ $ret->prepend("$text ", "map");
}
}
@@ -3653,7 +3653,7 @@ public function getActionButtons(string $context = null, string $btnClass = "",
// Translators: %s is the system name. "TouchPoint" by default.
$title = wp_sprintf(__("Involvement in %s", "TouchPoint-WP"), TouchPointWP::instance()->settings->system_name);
$logo = TouchPointWP::TouchPointIcon();
- $ret[] = "invId\" title=\"$title\" class=\"tp-TouchPoint-logo $classesOnly\">$logo ";
+ $ret['inv_tp'] = "invId\" title=\"$title\" class=\"tp-TouchPoint-logo $classesOnly\">$logo ";
}
/**
diff --git a/src/TouchPoint-WP/Meeting.php b/src/TouchPoint-WP/Meeting.php
index c34476ca..8783c14c 100644
--- a/src/TouchPoint-WP/Meeting.php
+++ b/src/TouchPoint-WP/Meeting.php
@@ -417,14 +417,14 @@ public function getActionButtons(string $context = null, string $btnClass = "",
if ($this->status() !== self::STATUS_CANCELLED) {
if (($this->endDt ?? $this->startDt) > Utilities::dateTimeNow()) {
- $ret[] = $inv->getRegisterButton($btnClass, $absoluteLinks);
+ $ret['register'] = $inv->getRegisterButton($btnClass, $absoluteLinks);
}
if ($inv->getRegistrationType() === RegistrationType::RSVP) {
if ($absoluteLinks) {
- $ret[] = $this->getRsvpLink($btnClass);
+ $ret['register'] = $this->getRsvpLink($btnClass);
} else {
- $ret[] = $this->getRsvpButton($btnClass);
+ $ret['register'] = $this->getRsvpButton($btnClass);
}
}
}
@@ -434,7 +434,7 @@ public function getActionButtons(string $context = null, string $btnClass = "",
// Translators: %s is the system name. "TouchPoint" by default.
$title = wp_sprintf(__("Meeting in %s", "TouchPoint-WP"), TouchPointWP::instance()->settings->system_name);
$logo = TouchPointWP::TouchPointIcon();
- $ret[] = "mtgId\" title=\"$title\" class=\"tp-TouchPoint-logo $btnClass\">$logo ";
+ $ret['mtg_tp'] = "mtgId\" title=\"$title\" class=\"tp-TouchPoint-logo $btnClass\">$logo ";
}
/**
diff --git a/src/TouchPoint-WP/Partner.php b/src/TouchPoint-WP/Partner.php
index f9f6fd09..a1158925 100644
--- a/src/TouchPoint-WP/Partner.php
+++ b/src/TouchPoint-WP/Partner.php
@@ -1316,7 +1316,7 @@ public function getActionButtons(string $context = null, string $btnClass = "",
// Show on map button. (Only works if map is called before this is.)
if (self::$_hasArchiveMap && ! $this->decoupleLocation && $this->geo !== null && !$absoluteLinks) {
$text = __("Show on Map", "TouchPoint-WP");
- $ret[] = "$text ";
+ $ret['map'] = "$text ";
}
// TouchPoint link is excluded for privacy, and because we don't really have People IDs readily available.
diff --git a/src/TouchPoint-WP/Utilities/StringableArray.php b/src/TouchPoint-WP/Utilities/StringableArray.php
index c3ffc9b7..e8954a1e 100644
--- a/src/TouchPoint-WP/Utilities/StringableArray.php
+++ b/src/TouchPoint-WP/Utilities/StringableArray.php
@@ -43,11 +43,16 @@ public function count(): int
* Append to the start of the array.
*
* @param mixed $value
+ * @param null $key
*/
- public function prepend($value): void
+ public function prepend(mixed $value, $key = null): void
{
$array = $this->getArrayCopy();
- array_unshift($array, $value);
+ if (!is_null($key)) {
+ $array = array_merge([$key => $value], $array);
+ } else {
+ $array = array_merge([$value], $array);
+ }
$this->exchangeArray($array);
}
diff --git a/src/templates/parts/meeting-list-item.php b/src/templates/parts/meeting-list-item.php
index 15494161..291787d8 100644
--- a/src/templates/parts/meeting-list-item.php
+++ b/src/templates/parts/meeting-list-item.php
@@ -14,7 +14,7 @@
$postTypeClass = get_post_type($post);
$postTypeClass = str_replace(TouchPointWP::HOOK_PREFIX, "", $postTypeClass);
-$postItemClass = $params['itemclass'] ?? "mtg-list-item";
+$postItemClass = $params['itemclass'] ?? "inv-list-item";
?>
From ffb9c7b211ed8daa9b23c06ecff8e5b0e01550ba Mon Sep 17 00:00:00 2001
From: "James K."
Date: Thu, 12 Sep 2024 00:24:43 -0400
Subject: [PATCH 184/423] Resolving schedule-string conflicts
---
src/TouchPoint-WP/Involvement.php | 147 ++++++++++----------
src/TouchPoint-WP/Meeting.php | 87 ++++++++++--
src/TouchPoint-WP/Utilities/DateFormats.php | 43 +++---
src/TouchPoint-WP/scheduled.php | 24 ++++
4 files changed, 192 insertions(+), 109 deletions(-)
create mode 100644 src/TouchPoint-WP/scheduled.php
diff --git a/src/TouchPoint-WP/Involvement.php b/src/TouchPoint-WP/Involvement.php
index 40266c98..49cf15c7 100644
--- a/src/TouchPoint-WP/Involvement.php
+++ b/src/TouchPoint-WP/Involvement.php
@@ -14,6 +14,7 @@
require_once "jsInstantiation.php";
require_once "jsonLd.php";
require_once "hierarchical.php";
+ require_once "scheduled.php";
require_once "updatesViaCron.php";
require_once "Utilities.php";
require_once "Involvement_PostTypeSettings.php";
@@ -42,7 +43,7 @@
/**
* Fundamental object meant to correspond to an Involvement in TouchPoint
*/
-class Involvement extends PostTypeCapable implements api, updatesViaCron, hasGeo, module, hierarchical, JsonSerializable
+class Involvement extends PostTypeCapable implements api, updatesViaCron, hasGeo, module, hierarchical, JsonSerializable, scheduled
{
use jsInstantiation;
use jsonLd;
@@ -746,14 +747,14 @@ protected static function scheduleStrings(int $invId, $inv = null): ?array
* This is separated out to a static method to prevent involvement from being instantiated (with those database
* hits) when the content is cached. (10x faster or more)
*
- * @param int $invId
- * @param ?Involvement $inv
+ * @param int $objId
+ * @param ?Involvement $obj
*
* @return ?string
*/
- public static function scheduleString(int $invId, ?Involvement $inv = null): ?string
+ public static function scheduleString(int $objId, $obj = null): ?string
{
- $s = self::scheduleStrings($invId, $inv);
+ $s = self::scheduleStrings($objId, $obj);
return $s['combined'];
}
@@ -1045,7 +1046,7 @@ protected function scheduleStrings_calc(): array
}
} elseif ($this->firstMeeting !== null) {
$r['firstLast'] = wp_sprintf(
- // translators: Starts {start date} e.g. Starts September 15
+ // translators: Starts {start date} e.g. Starts September 15
__('Starts %1$s', 'TouchPoint-WP'),
$this->firstMeeting->format($dateFormat)
);
@@ -1106,7 +1107,7 @@ protected function scheduleStrings_calc(): array
$dateTimeArr[] = $a['datetime'];
} else {
$dateTimeArr[] = wp_sprintf(
- // translators: %1$s is the date(s), %2$s is the time(s).
+ // translators: %1$s is the date(s), %2$s is the time(s).
__('%1$s at %2$s', 'TouchPoint-WP'), $a['date'], $a['time']
);
if ( !$dateArr->contains(['date'])) {
@@ -1130,7 +1131,7 @@ protected function scheduleStrings_calc(): array
$r['date'] = $dateStr;
$r['time'] = $timeArr[0];
$r['combined'] = wp_sprintf(
- // translators: %1$s is the date(s), %2$s is the time(s).
+ // translators: %1$s is the date(s), %2$s is the time(s).
__('%1$s at %2$s', 'TouchPoint-WP'),
$dateStr,
$timeArr[0]
@@ -1408,8 +1409,8 @@ public static function doInvolvementList(WP_Query $q, $params = []): void
// CSS
/** @noinspection SpellCheckingInspection */
$params['includecss'] = ! isset($params['includecss']) ||
- $params['includecss'] === true ||
- $params['includecss'] === 'true';
+ $params['includecss'] === true ||
+ $params['includecss'] === 'true';
// Only group for single post types.
$groupBy = null;
@@ -1423,12 +1424,12 @@ public static function doInvolvementList(WP_Query $q, $params = []): void
if ($groupBy !== "" && taxonomy_exists($groupBy)) {
$terms = get_terms([
- 'taxonomy' => $groupBy,
- 'order' => $groupByOrder,
- 'orderby' => 'name',
- 'hide_empty' => true,
- 'fields' => 'id=>name'
- ]);
+ 'taxonomy' => $groupBy,
+ 'order' => $groupByOrder,
+ 'orderby' => 'name',
+ 'hide_empty' => true,
+ 'fields' => 'id=>name'
+ ]);
}
}
@@ -1529,12 +1530,12 @@ private static function getWpPostByInvolvementId($postType, $involvementId): WP_
$involvementId = (string)$involvementId;
$q = new WP_Query([
- 'post_type' => $postType,
- 'meta_key' => TouchPointWP::INVOLVEMENT_META_KEY,
- 'meta_value' => $involvementId,
- 'numberposts' => 2
- // only need one, but if there's two, there should be an error condition.
- ]);
+ 'post_type' => $postType,
+ 'meta_key' => TouchPointWP::INVOLVEMENT_META_KEY,
+ 'meta_value' => $involvementId,
+ 'numberposts' => 2
+ // only need one, but if there's two, there should be an error condition.
+ ]);
/** @var $posts WP_Post[] */
$posts = $q->get_posts();
$counts = count($posts);
@@ -1744,11 +1745,11 @@ protected static final function filterDropdownHtml(array $params, Involvement_Po
}
$dvName = TouchPointWP::instance()->settings->dv_name_singular;
$dvList = get_terms([
- 'taxonomy' => Taxonomies::TAX_DIV,
- 'hide_empty' => true,
- 'meta_query' => $mq,
- TouchPointWP::HOOK_PREFIX . 'post_type' => $postType
- ]);
+ 'taxonomy' => Taxonomies::TAX_DIV,
+ 'hide_empty' => true,
+ 'meta_query' => $mq,
+ TouchPointWP::HOOK_PREFIX . 'post_type' => $postType
+ ]);
$dvList = TouchPointWP::orderHierarchicalTerms($dvList, true);
if (count($dvList) > 1) {
$content .= "";
@@ -1903,11 +1904,11 @@ protected static final function filterDropdownHtml(array $params, Involvement_Po
if (in_array('agegroup', $filters)) {
$agName = __("Age", 'TouchPoint-WP');
$agList = get_terms([
- 'taxonomy' => Taxonomies::TAX_AGEGROUP,
- 'hide_empty' => true,
- 'orderby' => 't.id',
- TouchPointWP::HOOK_PREFIX . 'post_type' => $postType
- ]);
+ 'taxonomy' => Taxonomies::TAX_AGEGROUP,
+ 'hide_empty' => true,
+ 'orderby' => 't.id',
+ TouchPointWP::HOOK_PREFIX . 'post_type' => $postType
+ ]);
if (is_array($agList) && count($agList) > 1) {
$content .= "";
$content .= "$agName $any ";
@@ -2026,40 +2027,40 @@ public static function ajaxNearby(): void
if ( ! $settings) {
http_response_code(Http::NOT_FOUND);
echo json_encode([
- "invList" => [],
- "error" => "This involvement type doesn't exist.",
- "error_i18n" => __("This involvement type doesn't exist.", 'TouchPoint-WP')
- ]);
+ "invList" => [],
+ "error" => "This involvement type doesn't exist.",
+ "error_i18n" => __("This involvement type doesn't exist.", 'TouchPoint-WP')
+ ]);
exit;
}
if ( ! $settings->useGeo) {
http_response_code(Http::EXPECTATION_FAILED);
echo json_encode([
- "invList" => [],
- "error" => "This involvement type doesn't have geographic locations enabled.",
- "error_i18n" => __(
- "This involvement type doesn't have geographic locations enabled.",
- 'TouchPoint-WP'
- )
- ]);
+ "invList" => [],
+ "error" => "This involvement type doesn't have geographic locations enabled.",
+ "error_i18n" => __(
+ "This involvement type doesn't have geographic locations enabled.",
+ 'TouchPoint-WP'
+ )
+ ]);
exit;
}
$r = [];
if ($lat === "null" || $lng === "null" ||
- $lat === null || $lng === null) {
+ $lat === null || $lng === null) {
$geoObj = TouchPointWP::instance()->geolocate();
if ($geoObj === false) {
http_response_code(Http::PRECONDITION_FAILED);
echo json_encode([
- "invList" => [],
- "error" => "Could not locate.",
- "error_i18n" => __("Could not locate.", 'TouchPoint-WP'),
- "geo" => false
- ]);
+ "invList" => [],
+ "error" => "Could not locate.",
+ "error_i18n" => __("Could not locate.", 'TouchPoint-WP'),
+ "geo" => false
+ ]);
exit;
}
@@ -2085,10 +2086,10 @@ public static function ajaxNearby(): void
if ($invs === null) {
http_response_code(Http::NOT_FOUND);
echo json_encode([
- "invList" => [],
- "error" => wp_sprintf("No %s Found.", $settings->namePlural),
- "error_i18n" => wp_sprintf(__("No %s Found.", "TouchPoint-WP"), $settings->namePlural)
- ]);
+ "invList" => [],
+ "error" => wp_sprintf("No %s Found.", $settings->namePlural),
+ "error_i18n" => wp_sprintf(__("No %s Found.", "TouchPoint-WP"), $settings->namePlural)
+ ]);
exit;
}
@@ -2285,8 +2286,8 @@ public static function updateCron(): void
public function getDistance(bool $useHiForFalse = false)
{
if ( ! isset(self::$compareGeo->lat) || ! isset(self::$compareGeo->lng) ||
- ! isset($this->geo->lat) || ! isset($this->geo->lng) ||
- $this->geo->lat === null || $this->geo->lng === null) {
+ ! isset($this->geo->lat) || ! isset($this->geo->lng) ||
+ $this->geo->lat === null || $this->geo->lng === null) {
return $useHiForFalse ? 25000 : false;
}
@@ -2594,7 +2595,7 @@ final protected static function updateInvolvementPostsForType(Involvement_PostTy
}
if (in_array("registrationEnded", $typeSets->excludeIf) &&
- $inv->regEnd !== null && $inv->regEnd < $now) {
+ $inv->regEnd !== null && $inv->regEnd < $now) {
if ($verbose) {
echo "Stopping processing because Involvements whose registrations have ended are excluded. Involvement will be deleted from WordPress.
";
}
@@ -2660,10 +2661,10 @@ final protected static function updateInvolvementPostsForType(Involvement_PostTy
// Delete posts that are no longer current
$q = new WP_Query([
- 'post_type' => $typeSets->postType,
- 'nopaging' => true,
- 'post__not_in' => $postsToKeep
- ]);
+ 'post_type' => $typeSets->postType,
+ 'nopaging' => true,
+ 'post__not_in' => $postsToKeep
+ ]);
$removals = 0;
foreach ($q->get_posts() as $post) {
set_time_limit(10);
@@ -3328,11 +3329,11 @@ public static function filterPublishDate($theDate, $format, $post = null): strin
$invTypes = Involvement_PostTypeSettings::getPostTypes();
if (in_array(get_post_type($post), $invTypes)) {
- if (is_numeric($post)) {
- $post = get_post($post);
+ if (self::postIsType($post)) {
+ $theDate = self::scheduleString(intval($post->{TouchPointWP::INVOLVEMENT_META_KEY})) ?? "";
+ } elseif (Meeting::postIsType($post)) {
+ $theDate = "tbd";
}
-
- $theDate = self::scheduleString(intval($post->{TouchPointWP::INVOLVEMENT_META_KEY})) ?? "";
}
return $theDate;
@@ -3902,9 +3903,9 @@ private static function ajaxContact(): void
if (!$validate) {
http_response_code(Http::BAD_REQUEST);
echo json_encode([
- 'error' => $result,
- 'error_i18n' => __("Contact Blocked for Spam.", 'TouchPoint-WP')
- ]);
+ 'error' => $result,
+ 'error_i18n' => __("Contact Blocked for Spam.", 'TouchPoint-WP')
+ ]);
exit;
}
@@ -3912,9 +3913,9 @@ private static function ajaxContact(): void
if (!!$settings) {
if (!self::allowContact($inputData->invType)) {
echo json_encode([
- 'error' => "Contact Prohibited.",
- 'error_i18n' => __("Contact Prohibited.", 'TouchPoint-WP')
- ]);
+ 'error' => "Contact Prohibited.",
+ 'error_i18n' => __("Contact Prohibited.", 'TouchPoint-WP')
+ ]);
exit;
}
@@ -3925,9 +3926,9 @@ private static function ajaxContact(): void
} else {
http_response_code(Http::NOT_FOUND);
echo json_encode([
- 'error' => "Invalid Post Type.",
- 'error_i18n' => __("Invalid Post Type.", 'TouchPoint-WP')
- ]);
+ 'error' => "Invalid Post Type.",
+ 'error_i18n' => __("Invalid Post Type.", 'TouchPoint-WP')
+ ]);
exit;
}
diff --git a/src/TouchPoint-WP/Meeting.php b/src/TouchPoint-WP/Meeting.php
index 8783c14c..0d1ab801 100644
--- a/src/TouchPoint-WP/Meeting.php
+++ b/src/TouchPoint-WP/Meeting.php
@@ -12,6 +12,7 @@
if ( ! TOUCHPOINT_COMPOSER_ENABLED) {
require_once 'api.php';
require_once 'hierarchical.php';
+ require_once 'scheduled.php';
}
use DateTime;
@@ -21,12 +22,13 @@
use tp\TouchPointWP\Utilities\StringableArray;
use WP_Post;
use tp\TouchPointWP\Utilities\Http;
+use WP_Query;
use WP_Term;
/**
* Handle meeting content, particularly RSVPs.
*/
-class Meeting extends PostTypeCapable implements api, module, hasGeo, hierarchical
+class Meeting extends PostTypeCapable implements api, module, hasGeo, hierarchical, scheduled
{
use jsInstantiation;
// use jsonLd; TODO
@@ -181,7 +183,59 @@ protected function __construct(object $object)
$this->registerConstruction();
}
-
+
+ /**
+ * Create a Meeting object from a Meeting ID. Only Meetings that are already imported as Posts are currently
+ * available.
+ *
+ * @param int $mid A database object from which a Meeting object should be created.
+ *
+ * @return ?Meeting Null if the involvement is not imported/available.
+ * @throws TouchPointWP_Exception
+ */
+ private static function fromMtgId(int $mid): ?Meeting
+ {
+ if ( ! isset(self::$_instances[$mid])) {
+ $post = self::getWpPostByMeetingId(Involvement::getPostTypes(), $mid);
+ self::$_instances[$mid] = new Meeting($post);
+ }
+
+ return self::$_instances[$mid];
+ }
+
+ /**
+ * Get a WP_Post by the Meeting ID if it exists. Return null if it does not.
+ *
+ * @param string|string[] $postType
+ * @param mixed $meetingId
+ *
+ * @return WP_Post|null
+ */
+ private static function getWpPostByMeetingId($postType, $meetingId): WP_Post|null
+ {
+ $meetingId = (string)$meetingId;
+
+ $q = new WP_Query([
+ 'post_type' => $postType,
+ 'meta_key' => self::MEETING_META_KEY,
+ 'meta_value' => $meetingId,
+ 'numberposts' => 2
+ // only need one, but if there's two, there should be an error condition.
+ ]);
+ /** @var $posts WP_Post[] */
+ $posts = $q->get_posts();
+ $counts = count($posts);
+ if ($counts > 1) { // multiple posts match, which isn't great.
+ new TouchPointWP_Exception("Multiple Posts Exist", 170006);
+ }
+ if ($counts > 0) { // post exists already.
+ return reset($posts);
+ } else {
+ return null;
+ }
+ }
+
+
/**
* Register scripts and styles to be used on display pages.
*/
@@ -299,33 +353,38 @@ public function getParent(): ?Involvement
}
}
+
/**
- * Get the human-readable schedule for the meeting as a string. If multiple elements exist, they will be joined by
- * $join. Returns null if the schedule string is unavailable for some reason.
+ * Get the meeting date/time in human-readable form.
*
- * @param string $join
+ * @param int $objId
+ * @param ?Meeting $obj
*
* @return ?string
- *
- * @since 0.0.90 Added
*/
- public function scheduleString(string $join): ?string
+ public static function scheduleString(int $objId, $obj = null): ?string
{
- $ss = $this->scheduleStringArray();
- if (count($ss) > 0) {
- return implode($join, $ss);
+ if (!$obj) {
+ try {
+ $obj = self::fromMtgId($objId);
+ } catch (TouchPointWP_Exception) {
+ return null;
+ }
}
- return null;
+
+ $s = $obj?->scheduleStringArray();
+
+ return $s?->join();
}
/**
* Get the human-readable schedule for the meeting as a string or set of strings in an array.
*
- * @return array
+ * @return StringableArray
*
* @since 0.0.90 Added
*/
- public function scheduleStringArray(): array
+ public function scheduleStringArray(): StringableArray
{
return DateFormats::DurationToStringArray($this->startDt, $this->endDt, $this->isMultiDay(), $this->isAllDay());
}
diff --git a/src/TouchPoint-WP/Utilities/DateFormats.php b/src/TouchPoint-WP/Utilities/DateFormats.php
index 02a4a330..16177069 100644
--- a/src/TouchPoint-WP/Utilities/DateFormats.php
+++ b/src/TouchPoint-WP/Utilities/DateFormats.php
@@ -295,12 +295,14 @@ public static function DurationToString(?DateTimeExtended $start, ?DateTimeExten
* @param ?bool $multiDay
* @param ?bool $allDay
*
- * @return array|string[]
+ * @return StringableArray
*/
- public static function DurationToStringArray(?DateTimeInterface $start, ?DateTimeInterface $end, ?bool $multiDay = null, ?bool $allDay = null): array
+ public static function DurationToStringArray(?DateTimeInterface $start, ?DateTimeInterface $end, ?bool $multiDay = null, ?bool $allDay = null): StringableArray
{
+ $r = new StringableArray();
+
if ($start === null) {
- return [];
+ return $r;
}
if ($multiDay === null) {
@@ -321,18 +323,17 @@ public static function DurationToStringArray(?DateTimeInterface $start, ?DateTim
$date2 = self::DateStringFormattedShort($end);
// Translators: %1$s is the start date, %2$s is the end date.
- return [
- 'datetime' => wp_sprintf(__('%1$s – %2$s', 'TouchPoint-WP'), $date1, $date2)
- ];
+ $r['datetime'] = wp_sprintf(__('%1$s – %2$s', 'TouchPoint-WP'), $date1, $date2);
+
} else {
// 011
// 101
// 111
- return [
- 'datetime' => self::DateStringFormatted($start)
- ];
+ $r['datetime'] = self::DateStringFormatted($start);
}
+
+ return $r;
}
if ($multiDay) {
@@ -341,10 +342,10 @@ public static function DurationToStringArray(?DateTimeInterface $start, ?DateTim
$date = self::DateStringFormatted($start);
$time = self::TimeStringFormatted($start);
+
// Translators: %1$s is the start date, %2$s is the start time.
- return [
- 'datetime' => wp_sprintf(__('%1$s at %2$s', 'TouchPoint-WP'), $date, $time)
- ];
+ $r['datetime'] = wp_sprintf(__('%1$s at %2$s', 'TouchPoint-WP'), $date, $time);
+
} else {
// 100
@@ -354,29 +355,27 @@ public static function DurationToStringArray(?DateTimeInterface $start, ?DateTim
$time1 = self::TimeStringFormatted($start);
$time2 = self::TimeStringFormatted($end);
- return [
- // translators: %1$s is the start date, %2$s start time, %3$s is the end date, and %4$s end time.
- 'datetime' => wp_sprintf(__('%1$s at %2$s – %3$s at %4$s', 'TouchPoint-WP'), $date1, $time1, $date2, $time2)
- ];
+ // translators: %1$s is the start date, %2$s start time, %3$s is the end date, and %4$s end time.
+ $r['datetime'] = wp_sprintf(__('%1$s at %2$s – %3$s at %4$s', 'TouchPoint-WP'), $date1, $time1, $date2, $time2);
}
+
+ return $r;
}
- $attrs = [
- 'date' => self::DateStringFormatted($start),
- ];
+ $r['date'] = self::DateStringFormatted($start);
if ($end === null) {
// 010
$time = self::TimeStringFormatted($start);
- $attrs['time'] = $time;
+ $r['time'] = $time;
} else {
// 000
- $attrs['time'] = self::TimeRangeStringFormatted($start, $end);
+ $r['time'] = self::TimeRangeStringFormatted($start, $end);
}
- return $attrs;
+ return $r;
}
}
\ No newline at end of file
diff --git a/src/TouchPoint-WP/scheduled.php b/src/TouchPoint-WP/scheduled.php
new file mode 100644
index 00000000..02b78736
--- /dev/null
+++ b/src/TouchPoint-WP/scheduled.php
@@ -0,0 +1,24 @@
+
Date: Thu, 12 Sep 2024 01:16:45 -0400
Subject: [PATCH 185/423] better handling all-day events
---
src/TouchPoint-WP/CalendarGrid.php | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/src/TouchPoint-WP/CalendarGrid.php b/src/TouchPoint-WP/CalendarGrid.php
index 880fb4ec..383bbc75 100644
--- a/src/TouchPoint-WP/CalendarGrid.php
+++ b/src/TouchPoint-WP/CalendarGrid.php
@@ -164,7 +164,12 @@ public function __construct(WP_Query $q, int $month = null, int $year = null)
$hasFirstDays = true;
$this->eventCount += $adder;
$ts = $m->startTimeString();
- $dayHtml .= "$ts $e->post_title ";
+ if ($ts) {
+ $ts = "$ts ";
+ } else {
+ $ts = "";
+ }
+ $dayHtml .= "$ts$e->post_title ";
}
}
From f1738f9f00bc326d046d1e6a6f8305b03a7f9c9e Mon Sep 17 00:00:00 2001
From: "James K."
Date: Thu, 12 Sep 2024 16:49:08 -0400
Subject: [PATCH 186/423] HUGE performance improvement on the calendar grid by
reducing db hits.
---
src/TouchPoint-WP/CalendarGrid.php | 182 ++++++++++++++++----------
src/TouchPoint-WP/PostTypeCapable.php | 13 +-
src/TouchPoint-WP/Report.php | 3 +-
src/TouchPoint-WP/storedAsPost.php | 24 ++++
4 files changed, 148 insertions(+), 74 deletions(-)
create mode 100644 src/TouchPoint-WP/storedAsPost.php
diff --git a/src/TouchPoint-WP/CalendarGrid.php b/src/TouchPoint-WP/CalendarGrid.php
index 383bbc75..bb0373aa 100644
--- a/src/TouchPoint-WP/CalendarGrid.php
+++ b/src/TouchPoint-WP/CalendarGrid.php
@@ -60,6 +60,8 @@ class CalendarGrid {
* @param WP_Query $q
* @param int|null $month
* @param int|null $year
+ *
+ * @return void
*/
public function __construct(WP_Query $q, int $month = null, int $year = null)
{
@@ -89,6 +91,10 @@ public function __construct(WP_Query $q, int $month = null, int $year = null)
$d->modify("-$offsetDays days");
$r = "";
+ // Extra days at the end of the month
+ $daysInMonth = intval($d->format('t'));
+ $daysToShow = ((42 - $daysInMonth - $offsetDays) % 7) + $daysInMonth;
+
// Create a table to display the calendar
$r .= '';
foreach (Utilities::getDaysOfWeekShort() as $dayStr) {
@@ -97,7 +103,34 @@ public function __construct(WP_Query $q, int $month = null, int $year = null)
$isMonthBefore = ($offsetDays !== 0);
$isMonthAfter = false;
- $aDay = new DateInterval("P1D");
+
+ // do a query for the whole range of days in the month
+ $d2 = DateTimeImmutable::createFromMutable($d)->add(new DateInterval("P{$daysToShow}D"));
+ try {
+ $newQ = self::adjustQueryForRange($q, $d, $d2, $tz);
+ } catch (Exception $e) {
+ $this->html = "";
+ return;
+ }
+ unset($d2);
+
+ $monthPosts = $newQ->get_posts();
+ $monthEvents = [];
+ foreach ($monthPosts as $e) {
+ try {
+ $monthEvents[] = Meeting::fromPost($e);
+ } catch (Exception) {
+ // Ignore any exceptions
+ }
+ }
+
+ try {
+ $aDay = new DateInterval("P1D");
+ $d2359 = new DateTime($d->format('Y-m-d 23:59:59'), $tz);
+ } catch (Exception $e) {
+ $this->html = "";
+ return;
+ }
// Loop through the days of the month
do {
@@ -106,95 +139,96 @@ public function __construct(WP_Query $q, int $month = null, int $year = null)
$fullDay = DateFormats::DateStringFormatted($d);
$wd = wp_date("w", $ts);
- try {
- $newQ = self::adjustQueryForDay($q, $d, $tz);
+ $cellClass = ["calDay"];
+ if ($isMonthBefore) {
+ $cellClass[] = "before";
+ $adder = 0;
+ } elseif ($isMonthAfter) {
+ $cellClass[] = "after";
+ $adder = 0;
+ } else {
+ $adder = 1;
+ }
- $cellClass = ["calDay"];
- if ($isMonthBefore) {
- $cellClass[] = "before";
- $adder = 0;
- } elseif ($isMonthAfter) {
- $cellClass[] = "after";
- $adder = 0;
- } else {
- $adder = 1;
+ $dayEvents = [];
+ foreach ($monthEvents as $m) {
+ if ($m->startDt > $d2359) {
+ break;
}
-
- $calDayPosts = $newQ->get_posts();
-
- if (count($calDayPosts) === 0) {
- $cellClass[] = "empty";
+ if ($m->startDt < $d2359 && ($m->endDt ?? $m->startDt) >= $d) {
+ $dayEvents[] = $m;
}
+ }
- if ($d < Utilities::dateTimeTodayAtMidnight()) {
- $cellClass[] = "past";
- }
+ if (count($dayEvents) === 0) {
+ $cellClass[] = "empty";
+ }
- $cellClass[] = "weekday-$wd";
+ if ($d < Utilities::dateTimeTodayAtMidnight()) {
+ $cellClass[] = "past";
+ }
- $dayHtml = "";
- $hasFirstDays = false;
+ $cellClass[] = "weekday-$wd";
- foreach ($calDayPosts as $e) {
- $m = Meeting::fromPost($e);
+ $dayHtml = "";
+ $hasFirstDays = false;
- $link = $m->permalink();
+ foreach ($dayEvents as $k => $m) {
+ $link = $m->permalink();
+ $notFirstDay = $m->startDt < $d;
- $notFirstDay = $m->startDt < $d;
+ $attr = "";
+ $status = $m->status();
- $attr = "";
- $status = $m->status();
+ if ($status === Meeting::STATUS_CANCELLED) {
+ // Translators: %s is the singular name of the of a Meeting, such as "Event".
+ $title = wp_sprintf(__("%s is cancelled.", "TouchPoint-WP"), TouchPointWP::instance()->settings->mc_name_singular);
+ $attr = "title=\"$title\"";
+ }
- if ($status === Meeting::STATUS_CANCELLED) {
- // Translators: %s is the singular name of the of a Meeting, such as "Event".
- $title = wp_sprintf(__("%s is cancelled.", "TouchPoint-WP"), TouchPointWP::instance()->settings->mc_name_singular);
- $attr = "title=\"$title\"";
- }
+ $e = $m->getPost();
- $classes = "event ";
- $classes .= $status . " ";
- $classes .= $m->tense();
- if ($m->isFeatured() && !$notFirstDay) {
- $classes .= " feat";
- }
- if ($notFirstDay) {
- $classes .= " notFirstDay";
- $dayHtml .= "
$e->post_title ";
+ $classes = "event ";
+ $classes .= $status . " ";
+ $classes .= $m->tense();
+ if ($m->isFeatured() && !$notFirstDay) {
+ $classes .= " feat";
+ }
+ if ($notFirstDay) {
+ $classes .= " notFirstDay";
+ $dayHtml .= "
$e->post_title ";
+ } else {
+ $hasFirstDays = true;
+ $this->eventCount += $adder;
+ $ts = $m->startTimeString();
+ if ($ts) {
+ $ts = "
$ts ";
} else {
- $hasFirstDays = true;
- $this->eventCount += $adder;
- $ts = $m->startTimeString();
- if ($ts) {
- $ts = "
$ts ";
- } else {
- $ts = "";
- }
- $dayHtml .= "
$ts$e->post_title ";
+ $ts = "";
}
+ $dayHtml .= "
$ts$e->post_title ";
}
+ }
- if (!$hasFirstDays) {
- $cellClass[] = "noFirstDays";
- }
-
- $cellClass = implode(" ", $cellClass);
+ if (!$hasFirstDays) {
+ $cellClass[] = "noFirstDays";
+ }
- // Print the cell
- $r .= "
";
- $r .= "
$fullDay ";
- $r .= "
$day ";
+ $cellClass = implode(" ", $cellClass);
- $r .= $dayHtml;
+ // Print the cell
+ $r .= "
";
+ $r .= "
$fullDay ";
+ $r .= "$day ";
- $r .= "";
+ $r .= $dayHtml;
- } catch (Exception $e) {
- $r .= "";
- }
+ $r .= "
";
// Increment days
$mo1 = $d->format('n');
$d->add($aDay);
+ $d2359->add($aDay);
$mo2 = $d->format('n');
if ($mo1 !== $mo2) {
@@ -278,19 +312,20 @@ public function navBar(bool $withMonthName = false): string
/**
* Adjust a WP_Query object to filter only to events that overlap with the given day.
*
- * @param WP_Query $q The original query object.
- * @param DateTimeInterface $d The day to filter down to. Only events on this day will be included.
- * @param DateTimeZone $tz The timezone to use.
+ * @param WP_Query $q The original query object.
+ * @param DateTimeInterface $d1 The first day of the range.
+ * @param DateTimeInterface $d2 The last day of the range.
+ * @param DateTimeZone $tz The timezone to use.
*
* @return WP_Query
* @throws Exception
*/
- private static function adjustQueryForDay(WP_Query $q, DateTimeInterface $d, DateTimeZone $tz): WP_Query
+ private static function adjustQueryForRange(WP_Query $q, DateTimeInterface $d1, DateTimeInterface $d2, DateTimeZone $tz): WP_Query
{
$q = clone $q;
- $dStart = new DateTime($d->format('Y-m-d 00:00:00'), $tz);
- $dEnd = new DateTime($d->format('Y-m-d 23:59:59'), $tz);
+ $dStart = new DateTime($d1->format('Y-m-d 00:00:00'), $tz);
+ $dEnd = new DateTime($d2->format('Y-m-d 23:59:59'), $tz);
$existingMq = $q->get('meta_query');
@@ -343,6 +378,9 @@ private static function adjustQueryForDay(WP_Query $q, DateTimeInterface $d, Dat
$q->set('orderby', 'meta_value');
$q->set('order', 'ASC');
+ $q->set('posts_per_page', 100000);
+ $q->set('posts_per_archive_page', 100000);
+
$q->set('post_type', Involvement_PostTypeSettings::getPostTypes());
return $q;
diff --git a/src/TouchPoint-WP/PostTypeCapable.php b/src/TouchPoint-WP/PostTypeCapable.php
index 072a7512..8128e413 100644
--- a/src/TouchPoint-WP/PostTypeCapable.php
+++ b/src/TouchPoint-WP/PostTypeCapable.php
@@ -9,10 +9,13 @@
use tp\TouchPointWP\Utilities\StringableArray;
use WP_Post;
+require_once 'module.php';
+require_once 'storedAsPost.php';
+
/**
* This is a base class for those objects that can be derived from a Post.
*/
-abstract class PostTypeCapable implements module
+abstract class PostTypeCapable implements module, storedAsPost
{
protected int $post_id;
@@ -29,6 +32,14 @@ public function post_id(): int
return $this->post_id;
}
+ public function getPost(bool $create = false): ?WP_Post
+ {
+ if ($this->post === null) {
+ $this->post = get_post($this->post_id);
+ }
+ return $this->post;
+ }
+
/**
* Create relevant objects from a given post
*
diff --git a/src/TouchPoint-WP/Report.php b/src/TouchPoint-WP/Report.php
index 19b01069..54ac51a4 100644
--- a/src/TouchPoint-WP/Report.php
+++ b/src/TouchPoint-WP/Report.php
@@ -22,6 +22,7 @@
if ( ! TOUCHPOINT_COMPOSER_ENABLED) {
require_once "api.php";
require_once "updatesViaCron.php";
+ require_once "storedAsPost.php";
require_once "Utilities/ImageConversions.php";
require_once "Utilities/Http.php";
}
@@ -29,7 +30,7 @@
/**
* The Report class gets and processes a SQL or Python report from TouchPoint and presents it in the UX.
*/
-class Report implements api, module, JsonSerializable, updatesViaCron
+class Report implements api, module, JsonSerializable, updatesViaCron, storedAsPost
{
public const SHORTCODE_REPORT = TouchPointWP::SHORTCODE_PREFIX . "Report";
public const POST_TYPE = TouchPointWP::HOOK_PREFIX . "report";
diff --git a/src/TouchPoint-WP/storedAsPost.php b/src/TouchPoint-WP/storedAsPost.php
new file mode 100644
index 00000000..2d587268
--- /dev/null
+++ b/src/TouchPoint-WP/storedAsPost.php
@@ -0,0 +1,24 @@
+
Date: Thu, 12 Sep 2024 16:52:39 -0400
Subject: [PATCH 187/423] i18n updates
---
i18n/TouchPoint-WP-es_ES.po | 219 +++++++++++++++++++-----------------
1 file changed, 113 insertions(+), 106 deletions(-)
diff --git a/i18n/TouchPoint-WP-es_ES.po b/i18n/TouchPoint-WP-es_ES.po
index c0bb63e1..2a19921c 100644
--- a/i18n/TouchPoint-WP-es_ES.po
+++ b/i18n/TouchPoint-WP-es_ES.po
@@ -87,7 +87,7 @@ msgstr "Tipos de miembros de líder"
#: src/templates/admin/invKoForm.php:141
#: src/templates/admin/invKoForm.php:293
#: src/templates/parts/involvement-nearby-list.php:2
-#: src/TouchPoint-WP/Meeting.php:673
+#: src/TouchPoint-WP/Meeting.php:740
#: src/TouchPoint-WP/Rsvp.php:75
#: assets/js/base-defer.js:192
#: assets/js/base-defer.js:1133
@@ -123,13 +123,13 @@ msgid "Gender"
msgstr "Género"
#: src/templates/admin/invKoForm.php:213
-#: src/TouchPoint-WP/Involvement.php:1825
+#: src/TouchPoint-WP/Involvement.php:1845
#: src/TouchPoint-WP/Taxonomies.php:744
msgid "Weekday"
msgstr "Día laborable"
#: src/templates/admin/invKoForm.php:217
-#: src/TouchPoint-WP/Involvement.php:1851
+#: src/TouchPoint-WP/Involvement.php:1871
#: src/TouchPoint-WP/Taxonomies.php:802
msgid "Time of Day"
msgstr "Hora del día"
@@ -173,7 +173,7 @@ msgstr "Seleccione..."
#. translators: %s will be the plural post type (e.g. Small Groups)
#: src/templates/parts/involvement-list-none.php:16
-#: src/TouchPoint-WP/Involvement.php:2071
+#: src/TouchPoint-WP/Involvement.php:2092
msgid "No %s Found."
msgstr "No se encontraron %s"
@@ -208,90 +208,90 @@ msgstr "Periódico"
msgid "Multi-Day"
msgstr "varios días"
-#: src/TouchPoint-WP/Involvement.php:489
+#: src/TouchPoint-WP/Involvement.php:495
msgid "Currently Full"
msgstr "Actualmente lleno"
-#: src/TouchPoint-WP/Involvement.php:494
+#: src/TouchPoint-WP/Involvement.php:500
msgid "Currently Closed"
msgstr "Actualmente cerrado"
-#: src/TouchPoint-WP/Involvement.php:501
+#: src/TouchPoint-WP/Involvement.php:507
msgid "Registration Not Open Yet"
msgstr "Registro aún no abierto"
-#: src/TouchPoint-WP/Involvement.php:507
+#: src/TouchPoint-WP/Involvement.php:513
msgid "Registration Closed"
msgstr "Registro cerrado"
-#: src/TouchPoint-WP/Involvement.php:1700
-#: src/TouchPoint-WP/Partner.php:810
+#: src/TouchPoint-WP/Involvement.php:1720
+#: src/TouchPoint-WP/Partner.php:814
msgid "Any"
msgstr "Cualquier"
#. translators: %s is for the user-provided term for the items on the map (e.g. Small Group or Partner)
-#: src/TouchPoint-WP/Involvement.php:1908
-#: src/TouchPoint-WP/Partner.php:834
+#: src/TouchPoint-WP/Involvement.php:1928
+#: src/TouchPoint-WP/Partner.php:838
msgid "The %s listed are only those shown on the map."
msgstr "Los %s enumerados son solo los que se muestran en el mapa."
-#: src/TouchPoint-WP/Involvement.php:3523
+#: src/TouchPoint-WP/Involvement.php:3547
msgid "Men Only"
msgstr "Solo hombres"
-#: src/TouchPoint-WP/Involvement.php:3526
+#: src/TouchPoint-WP/Involvement.php:3550
msgid "Women Only"
msgstr "Solo mujeres"
-#: src/TouchPoint-WP/Involvement.php:3603
+#: src/TouchPoint-WP/Involvement.php:3627
msgid "Contact Leaders"
msgstr "Contacta con las líderes"
-#: src/TouchPoint-WP/Involvement.php:3672
-#: src/TouchPoint-WP/Involvement.php:3714
+#: src/TouchPoint-WP/Involvement.php:3696
+#: src/TouchPoint-WP/Involvement.php:3738
msgid "Register"
msgstr "Regístrate ahora"
-#: src/TouchPoint-WP/Involvement.php:3677
+#: src/TouchPoint-WP/Involvement.php:3701
msgid "Create Account"
msgstr "Crear cuenta"
-#: src/TouchPoint-WP/Involvement.php:3681
+#: src/TouchPoint-WP/Involvement.php:3705
msgid "Schedule"
msgstr "Programe"
-#: src/TouchPoint-WP/Involvement.php:3686
+#: src/TouchPoint-WP/Involvement.php:3710
msgid "Give"
msgstr "Dar"
-#: src/TouchPoint-WP/Involvement.php:3689
+#: src/TouchPoint-WP/Involvement.php:3713
msgid "Manage Subscriptions"
msgstr "Administrar suscripciones"
-#: src/TouchPoint-WP/Involvement.php:3692
+#: src/TouchPoint-WP/Involvement.php:3716
msgid "Record Attendance"
msgstr "Registre su asistencia"
-#: src/TouchPoint-WP/Involvement.php:3695
+#: src/TouchPoint-WP/Involvement.php:3719
msgid "Get Tickets"
msgstr "Obtener boletos"
-#: src/TouchPoint-WP/Involvement.php:3705
+#: src/TouchPoint-WP/Involvement.php:3729
#: assets/js/base-defer.js:1001
msgid "Join"
msgstr "Únete"
-#: src/TouchPoint-WP/Involvement.php:3620
-#: src/TouchPoint-WP/Partner.php:1314
+#: src/TouchPoint-WP/Involvement.php:3644
+#: src/TouchPoint-WP/Partner.php:1318
msgid "Show on Map"
msgstr "Muestra en el mapa"
#. translators: %s is for the user-provided "Global Partner" and "Secure Partner" terms.
-#: src/TouchPoint-WP/Partner.php:841
+#: src/TouchPoint-WP/Partner.php:845
msgid "The %1$s listed are only those shown on the map, as well as all %2$s."
msgstr "Los %1$s enumerados son solo los que se muestran en el mapa, así como todos los %2$s."
-#: src/TouchPoint-WP/Partner.php:1255
+#: src/TouchPoint-WP/Partner.php:1259
msgid "Not Shown on Map"
msgstr "No se muestra en el mapa"
@@ -303,48 +303,48 @@ msgstr "No se proporcionó una identificación de usuario de WordPress para inic
msgid "TouchPoint People ID"
msgstr "ID de Personas de TouchPoint"
-#: src/TouchPoint-WP/Person.php:1188
+#: src/TouchPoint-WP/Person.php:1192
msgid "Contact"
msgstr "Contacta"
-#: src/TouchPoint-WP/Meeting.php:672
-#: src/TouchPoint-WP/Meeting.php:692
+#: src/TouchPoint-WP/Meeting.php:739
+#: src/TouchPoint-WP/Meeting.php:759
#: src/TouchPoint-WP/Rsvp.php:80
msgid "RSVP"
msgstr "RSVP"
-#: src/TouchPoint-WP/TouchPointWP.php:1947
+#: src/TouchPoint-WP/TouchPointWP.php:1948
msgid "Unknown Type"
msgstr "Tipo desconocido"
-#: src/TouchPoint-WP/TouchPointWP.php:2004
+#: src/TouchPoint-WP/TouchPointWP.php:2005
msgid "Your Searches"
msgstr "Tus búsquedas"
-#: src/TouchPoint-WP/TouchPointWP.php:2007
+#: src/TouchPoint-WP/TouchPointWP.php:2008
msgid "Public Searches"
msgstr "Búsquedas públicas"
-#: src/TouchPoint-WP/TouchPointWP.php:2010
+#: src/TouchPoint-WP/TouchPointWP.php:2011
msgid "Status Flags"
msgstr "Indicadores de Estado"
-#: src/TouchPoint-WP/TouchPointWP.php:2015
#: src/TouchPoint-WP/TouchPointWP.php:2016
+#: src/TouchPoint-WP/TouchPointWP.php:2017
msgid "Current Value"
msgstr "Valor actual"
-#: src/TouchPoint-WP/TouchPointWP.php:2133
-#: src/TouchPoint-WP/TouchPointWP.php:2169
+#: src/TouchPoint-WP/TouchPointWP.php:2134
+#: src/TouchPoint-WP/TouchPointWP.php:2170
msgid "Invalid or incomplete API Settings."
msgstr "Configuración de API no válida o incompleta."
-#: src/TouchPoint-WP/TouchPointWP.php:2183
-#: src/TouchPoint-WP/TouchPointWP.php:2227
+#: src/TouchPoint-WP/TouchPointWP.php:2184
+#: src/TouchPoint-WP/TouchPointWP.php:2228
msgid "Host appears to be missing from TouchPoint-WP configuration."
msgstr "Parece que falta el host en la configuración de TouchPoint-WP."
-#: src/TouchPoint-WP/TouchPointWP.php:2359
+#: src/TouchPoint-WP/TouchPointWP.php:2360
msgid "People Query Failed"
msgstr "Consulta de registros de personas fallida"
@@ -807,8 +807,8 @@ msgstr "Configuración de TouchPoint-WP"
msgid "Save Settings"
msgstr "Guardar ajustes"
-#: src/TouchPoint-WP/Person.php:1445
-#: src/TouchPoint-WP/Utilities.php:264
+#: src/TouchPoint-WP/Person.php:1451
+#: src/TouchPoint-WP/Utilities.php:271
#: assets/js/base-defer.js:18
msgid "and"
msgstr "y"
@@ -971,7 +971,7 @@ msgstr "Enviar"
msgid "Nothing to submit."
msgstr "Nada que enviar."
-#: src/TouchPoint-WP/TouchPointWP.php:2300
+#: src/TouchPoint-WP/TouchPointWP.php:2301
msgid "The scripts on TouchPoint that interact with this plugin are out-of-date, and an automatic update failed."
msgstr "Los scripts en TouchPoint que interactúan con este complemento están desactualizados y falló una actualización automática."
@@ -1026,16 +1026,16 @@ msgstr "OK"
msgid "Next"
msgstr "Siguiente"
-#: src/TouchPoint-WP/Involvement.php:1873
+#: src/TouchPoint-WP/Involvement.php:1893
#: src/TouchPoint-WP/Taxonomies.php:863
msgid "Marital Status"
msgstr "Estado civil"
-#: src/TouchPoint-WP/Involvement.php:1886
+#: src/TouchPoint-WP/Involvement.php:1906
msgid "Age"
msgstr "Años"
-#: src/TouchPoint-WP/Involvement.php:1757
+#: src/TouchPoint-WP/Involvement.php:1777
msgid "Genders"
msgstr "Géneros"
@@ -1197,71 +1197,72 @@ msgctxt "Time of Day"
msgid "Night"
msgstr "Noche"
-#: src/TouchPoint-WP/Involvement.php:1874
+#: src/TouchPoint-WP/Involvement.php:1894
msgctxt "Marital status for a group of people"
msgid "Mostly Single"
msgstr "Mayoría solteras"
-#: src/TouchPoint-WP/Involvement.php:1875
+#: src/TouchPoint-WP/Involvement.php:1895
msgctxt "Marital status for a group of people"
msgid "Mostly Married"
msgstr "Mayoría casadas"
#. translators: %s is the link to "reset the map"
-#: src/TouchPoint-WP/Involvement.php:1916
-#: src/TouchPoint-WP/Partner.php:850
+#: src/TouchPoint-WP/Involvement.php:1936
+#: src/TouchPoint-WP/Partner.php:854
msgid "Zoom out or %s to see more."
msgstr "Alejar o %s para ver más."
-#: src/TouchPoint-WP/Involvement.php:1919
-#: src/TouchPoint-WP/Partner.php:853
+#: src/TouchPoint-WP/Involvement.php:1939
+#: src/TouchPoint-WP/Partner.php:857
msgctxt "Zoom out or reset the map to see more."
msgid "reset the map"
msgstr "restablecer el mapa"
#. translators: %1$s is the date(s), %2$s is the time(s).
-#: src/TouchPoint-WP/Involvement.php:984
-#: src/TouchPoint-WP/Involvement.php:1016
-#: src/TouchPoint-WP/Involvement.php:1094
-#: src/TouchPoint-WP/Involvement.php:1118
+#. Translators: %1$s is the start date, %2$s is the start time.
+#: src/TouchPoint-WP/Involvement.php:991
+#: src/TouchPoint-WP/Involvement.php:1023
+#: src/TouchPoint-WP/Involvement.php:1112
+#: src/TouchPoint-WP/Involvement.php:1136
#: src/TouchPoint-WP/Utilities/DateFormats.php:283
-#: src/TouchPoint-WP/Utilities/DateFormats.php:346
+#: src/TouchPoint-WP/Utilities/DateFormats.php:347
msgid "%1$s at %2$s"
msgstr "%1$s a las %2$s"
#. translators: {start date} through {end date} e.g. February 14 through August 12
-#: src/TouchPoint-WP/Involvement.php:1025
+#: src/TouchPoint-WP/Involvement.php:1032
msgid "%1$s through %2$s"
msgstr "%1$s al %2$s"
#. translators: {schedule}, {start date} through {end date} e.g. Sundays at 11am, February 14 through August 12
-#: src/TouchPoint-WP/Involvement.php:1034
+#: src/TouchPoint-WP/Involvement.php:1041
msgid "%1$s, %2$s through %3$s"
msgstr "%1$s, %2$s al %3$s"
#. translators: Starts {start date} e.g. Starts September 15
-#: src/TouchPoint-WP/Involvement.php:1043
+#: src/TouchPoint-WP/Involvement.php:1050
msgid "Starts %1$s"
msgstr "Comienza el %1$s"
#. translators: {schedule}, starting {start date} e.g. Sundays at 11am, starting February 14
-#: src/TouchPoint-WP/Involvement.php:1051
+#: src/TouchPoint-WP/Involvement.php:1058
msgid "%1$s, starting %2$s"
msgstr "%1$s, comienza el %2$s"
#. translators: Through {end date} e.g. Through September 15
-#: src/TouchPoint-WP/Involvement.php:1059
+#: src/TouchPoint-WP/Involvement.php:1066
msgid "Through %1$s"
msgstr "Hasta el %1$s"
#. translators: {schedule}, through {end date} e.g. Sundays at 11am, through February 14
-#: src/TouchPoint-WP/Involvement.php:1067
+#: src/TouchPoint-WP/Involvement.php:1074
msgid "%1$s, through %2$s"
msgstr "%1$s, hasta el %2$s"
#. translators: number of miles
#: src/templates/parts/involvement-nearby-list.php:10
-#: src/TouchPoint-WP/Involvement.php:3544
+#: src/TouchPoint-WP/Involvement.php:3568
msgctxt "miles. Unit is appended to a number. %2.1f is the number, so %2.1fmi looks like '12.3mi'"
msgid "%2.1fmi"
msgstr "%2.1fmi"
@@ -1278,35 +1279,35 @@ msgstr "La participación tiene un tipo de registro de \"No Online Registration\
msgid "Involvement registration has ended (end date is past)"
msgstr "El registro de participación ha finalizado (la fecha de finalización ya pasó)"
-#: src/TouchPoint-WP/Involvement.php:2012
+#: src/TouchPoint-WP/Involvement.php:2033
msgid "This involvement type doesn't exist."
msgstr "Este tipo de participación no existe."
-#: src/TouchPoint-WP/Involvement.php:2022
+#: src/TouchPoint-WP/Involvement.php:2043
msgid "This involvement type doesn't have geographic locations enabled."
msgstr "Este tipo de participación no tiene habilitadas las ubicaciones geográficas."
-#: src/TouchPoint-WP/Involvement.php:2041
+#: src/TouchPoint-WP/Involvement.php:2062
msgid "Could not locate."
msgstr "No se pudo localizar."
-#: src/TouchPoint-WP/Meeting.php:605
-#: src/TouchPoint-WP/TouchPointWP.php:970
+#: src/TouchPoint-WP/Meeting.php:672
+#: src/TouchPoint-WP/TouchPointWP.php:971
msgid "Only GET requests are allowed."
msgstr "Solo se permiten solicitudes GET."
-#: src/TouchPoint-WP/Meeting.php:633
-#: src/TouchPoint-WP/TouchPointWP.php:353
+#: src/TouchPoint-WP/Meeting.php:700
+#: src/TouchPoint-WP/TouchPointWP.php:354
msgid "Only POST requests are allowed."
msgstr "Solo se permiten solicitudes POST."
-#: src/TouchPoint-WP/Meeting.php:643
-#: src/TouchPoint-WP/TouchPointWP.php:362
+#: src/TouchPoint-WP/Meeting.php:710
+#: src/TouchPoint-WP/TouchPointWP.php:363
msgid "Invalid data provided."
msgstr "Datos proporcionados no válidos."
-#: src/TouchPoint-WP/Involvement.php:3810
-#: src/TouchPoint-WP/Involvement.php:3907
+#: src/TouchPoint-WP/Involvement.php:3834
+#: src/TouchPoint-WP/Involvement.php:3931
msgid "Invalid Post Type."
msgstr "Tipo de publicación no válida."
@@ -1409,24 +1410,24 @@ msgstr "Agregar Nuevo %s"
msgid "New %s"
msgstr "Nuevo %s"
-#: src/TouchPoint-WP/Report.php:172
+#: src/TouchPoint-WP/Report.php:176
msgid "TouchPoint Reports"
msgstr "Informes de TouchPoint"
-#: src/TouchPoint-WP/Report.php:173
+#: src/TouchPoint-WP/Report.php:177
msgid "TouchPoint Report"
msgstr "Informe de TouchPoint"
#. translators: Last updated date/time for a report. %1$s is the date. %2$s is the time.
-#: src/TouchPoint-WP/Report.php:311
+#: src/TouchPoint-WP/Report.php:397
msgid "Updated on %1$s at %2$s"
msgstr "Actualizada %1$s %2$s"
-#: src/TouchPoint-WP/TouchPointWP.php:259
+#: src/TouchPoint-WP/TouchPointWP.php:260
msgid "Every 15 minutes"
msgstr "Cada 15 minutos"
-#: src/TouchPoint-WP/Involvement.php:1800
+#: src/TouchPoint-WP/Involvement.php:1820
msgid "Language"
msgstr "Idioma"
@@ -1438,7 +1439,7 @@ msgstr "Importar imágenes desde TouchPoint"
msgid "Importing images sometimes conflicts with other plugins. Disabling image imports can help."
msgstr "La importación de imágenes a veces entra en conflicto con otros complementos. Deshabilitar las importaciones de imágenes puede ayudar."
-#: src/TouchPoint-WP/Person.php:1452
+#: src/TouchPoint-WP/Person.php:1458
msgctxt "list of people, and *others*"
msgid "others"
msgstr "otros"
@@ -1479,8 +1480,8 @@ msgstr "Eliminar siempre de WordPress"
msgid "Mark the occurrence as cancelled"
msgstr "Marcar la ocurrencia como cancelada"
-#: src/TouchPoint-WP/Involvement.php:3894
-#: src/TouchPoint-WP/Person.php:1821
+#: src/TouchPoint-WP/Involvement.php:3918
+#: src/TouchPoint-WP/Person.php:1827
msgid "Contact Prohibited."
msgstr "Contacto prohibido."
@@ -1500,26 +1501,26 @@ msgstr "Una vez que haya configurado y guardado la configuración en esta págin
msgid "Something went wrong."
msgstr "Algo salió mal."
-#: src/TouchPoint-WP/Person.php:1676
+#: src/TouchPoint-WP/Person.php:1682
msgid "You may need to sign in."
msgstr "Es posible que tengas que iniciar sesión."
-#: src/TouchPoint-WP/Involvement.php:3884
-#: src/TouchPoint-WP/Person.php:1838
+#: src/TouchPoint-WP/Involvement.php:3908
+#: src/TouchPoint-WP/Person.php:1844
msgid "Contact Blocked for Spam."
msgstr "Contacto bloqueado por spam."
-#: src/TouchPoint-WP/Person.php:1591
+#: src/TouchPoint-WP/Person.php:1597
msgid "Registration Blocked for Spam."
msgstr "Registro bloqueado por spam."
#: src/templates/meeting-archive.php:27
-#: src/TouchPoint-WP/Meeting.php:215
+#: src/TouchPoint-WP/Meeting.php:269
msgctxt "What Meetings should be called, plural."
msgid "Events"
msgstr "Eventos"
-#: src/TouchPoint-WP/Meeting.php:216
+#: src/TouchPoint-WP/Meeting.php:270
msgctxt "What Meetings should be called, singular."
msgid "Event"
msgstr "Evento"
@@ -1588,15 +1589,15 @@ msgstr "mañana"
msgid "(named person)"
msgstr "(persona nombrada)"
-#: src/TouchPoint-WP/Utilities.php:471
+#: src/TouchPoint-WP/Utilities.php:482
msgid "Expand"
msgstr "Ampliar"
-#: src/TouchPoint-WP/Meeting.php:488
+#: src/TouchPoint-WP/Meeting.php:549
msgid "Cancelled"
msgstr "Cancelado"
-#: src/TouchPoint-WP/Meeting.php:489
+#: src/TouchPoint-WP/Meeting.php:550
msgid "Scheduled"
msgstr "Programado"
@@ -1625,26 +1626,26 @@ msgid "%1$s, %2$s"
msgstr "%1$s %2$s"
#. Translators: %s is the singular name of the of a Meeting, such as "Event".
-#: src/TouchPoint-WP/CalendarGrid.php:150
+#: src/TouchPoint-WP/CalendarGrid.php:185
msgid "%s is cancelled."
msgstr "%s esta cancelado."
#. Translators: %s is the system name. "TouchPoint" by default.
-#: src/TouchPoint-WP/Involvement.php:3632
+#: src/TouchPoint-WP/Involvement.php:3656
msgid "Involvement in %s"
msgstr "Participaciones en %s"
-#: src/TouchPoint-WP/Meeting.php:363
+#: src/TouchPoint-WP/Meeting.php:422
msgid "In the Past"
msgstr "en el pasado"
#. Translators: %s is the system name. "TouchPoint" by default.
-#: src/TouchPoint-WP/Meeting.php:433
+#: src/TouchPoint-WP/Meeting.php:494
msgid "Meeting in %s"
msgstr "Reunión en %s"
#. Translators: %s is the system name. "TouchPoint" by default.
-#: src/TouchPoint-WP/Person.php:1196
+#: src/TouchPoint-WP/Person.php:1200
msgid "Person in %s"
msgstr "Persona en %s"
@@ -1704,28 +1705,29 @@ msgctxt "Date string when the year is not current."
msgid "F j, Y"
msgstr "j F Y"
-#: src/TouchPoint-WP/Meeting.php:490
+#: src/TouchPoint-WP/Meeting.php:551
msgctxt "Event Status is not a recognized value."
msgid "Unknown"
msgstr "desconocido"
-#: src/TouchPoint-WP/Involvement.php:134
+#: src/TouchPoint-WP/Involvement.php:136
msgid "Creating an Involvement object from an object without a post_id is not yet supported."
msgstr "Aún no se admite la creación de un objeto de participación a partir de un objeto sin post_id."
#. translators: "Mon All Day" or "Sundays All Day"
-#: src/TouchPoint-WP/Involvement.php:987
-#: src/TouchPoint-WP/Involvement.php:1010
+#: src/TouchPoint-WP/Involvement.php:994
+#: src/TouchPoint-WP/Involvement.php:1017
msgid "%1$s All Day"
msgstr "todo el dia los %1$s"
-#: src/TouchPoint-WP/Meeting.php:92
+#: src/TouchPoint-WP/Meeting.php:94
msgid "Creating a Meeting object from an object without a post_id is not yet supported."
msgstr "Aún no se admite la creación de un objeto de reunión a partir de un objeto sin post_id."
#. translators: %1$s is the start time, %2$s is the end time.
+#. Translators: %1$s is the start date, %2$s is the end date.
#: src/TouchPoint-WP/Utilities/DateFormats.php:89
-#: src/TouchPoint-WP/Utilities/DateFormats.php:325
+#: src/TouchPoint-WP/Utilities/DateFormats.php:326
msgid "%1$s – %2$s"
msgstr "%1$s – %2$s"
@@ -1779,7 +1781,7 @@ msgid "%1$s, %2$s"
msgstr "%1$s %2$s"
#. Translators: %s is the plural name of the of the Meetings, such as "Events".
-#: src/TouchPoint-WP/CalendarGrid.php:213
+#: src/TouchPoint-WP/CalendarGrid.php:252
msgid "There are no %s published for this month."
msgstr "No hay %s publicados para este mes."
@@ -1832,6 +1834,11 @@ msgstr "Código de Residente"
msgid "Campus"
msgstr "Campus"
-#: src/TouchPoint-WP/Involvement.php:1011
+#: src/TouchPoint-WP/Involvement.php:1018
msgid "All Day"
msgstr "todo el dia"
+
+#: src/TouchPoint-WP/Utilities.php:276
+msgctxt "list of items, and *others*"
+msgid "others"
+msgstr "otros"
From 217e1961308bfe2492a978ff4d21a9501ca9e29d Mon Sep 17 00:00:00 2001
From: "James K."
Date: Thu, 12 Sep 2024 16:52:44 -0400
Subject: [PATCH 188/423] i18n updates
---
i18n/TouchPoint-WP.pot | 223 +++++++++++++++++++++--------------------
1 file changed, 115 insertions(+), 108 deletions(-)
diff --git a/i18n/TouchPoint-WP.pot b/i18n/TouchPoint-WP.pot
index f83ba54a..ffa5bb98 100644
--- a/i18n/TouchPoint-WP.pot
+++ b/i18n/TouchPoint-WP.pot
@@ -2,14 +2,14 @@
# This file is distributed under the AGPLv3+.
msgid ""
msgstr ""
-"Project-Id-Version: TouchPoint WP 0.0.91\n"
+"Project-Id-Version: TouchPoint WP 0.0.92\n"
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/TouchPoint-WP\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"POT-Creation-Date: 2024-08-08T21:34:45+00:00\n"
+"POT-Creation-Date: 2024-09-12T20:51:39+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"X-Generator: WP-CLI 2.11.0\n"
"X-Domain: TouchPoint-WP\n"
@@ -122,7 +122,7 @@ msgstr ""
#: src/templates/admin/invKoForm.php:141
#: src/templates/admin/invKoForm.php:293
#: src/templates/parts/involvement-nearby-list.php:2
-#: src/TouchPoint-WP/Meeting.php:673
+#: src/TouchPoint-WP/Meeting.php:740
#: src/TouchPoint-WP/Rsvp.php:75
#: assets/js/base-defer.js:192
#: assets/js/base-defer.js:1133
@@ -170,13 +170,13 @@ msgid "Gender"
msgstr ""
#: src/templates/admin/invKoForm.php:213
-#: src/TouchPoint-WP/Involvement.php:1825
+#: src/TouchPoint-WP/Involvement.php:1845
#: src/TouchPoint-WP/Taxonomies.php:744
msgid "Weekday"
msgstr ""
#: src/templates/admin/invKoForm.php:217
-#: src/TouchPoint-WP/Involvement.php:1851
+#: src/TouchPoint-WP/Involvement.php:1871
#: src/TouchPoint-WP/Taxonomies.php:802
msgid "Time of Day"
msgstr ""
@@ -264,14 +264,14 @@ msgid "This %s has been Cancelled."
msgstr ""
#: src/templates/meeting-archive.php:27
-#: src/TouchPoint-WP/Meeting.php:215
+#: src/TouchPoint-WP/Meeting.php:269
msgctxt "What Meetings should be called, plural."
msgid "Events"
msgstr ""
#. translators: %s will be the plural post type (e.g. Small Groups)
#: src/templates/parts/involvement-list-none.php:16
-#: src/TouchPoint-WP/Involvement.php:2071
+#: src/TouchPoint-WP/Involvement.php:2092
msgid "No %s Found."
msgstr ""
@@ -282,7 +282,7 @@ msgstr ""
#. translators: number of miles
#: src/templates/parts/involvement-nearby-list.php:10
-#: src/TouchPoint-WP/Involvement.php:3544
+#: src/TouchPoint-WP/Involvement.php:3568
msgctxt "miles. Unit is appended to a number. %2.1f is the number, so %2.1fmi looks like '12.3mi'"
msgid "%2.1fmi"
msgstr ""
@@ -305,12 +305,12 @@ msgid "Session could not be validated."
msgstr ""
#. Translators: %s is the singular name of the of a Meeting, such as "Event".
-#: src/TouchPoint-WP/CalendarGrid.php:150
+#: src/TouchPoint-WP/CalendarGrid.php:185
msgid "%s is cancelled."
msgstr ""
#. Translators: %s is the plural name of the of the Meetings, such as "Events".
-#: src/TouchPoint-WP/CalendarGrid.php:213
+#: src/TouchPoint-WP/CalendarGrid.php:252
msgid "There are no %s published for this month."
msgstr ""
@@ -323,267 +323,268 @@ msgstr ""
msgid "Multi-Day"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:134
+#: src/TouchPoint-WP/Involvement.php:136
msgid "Creating an Involvement object from an object without a post_id is not yet supported."
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:489
+#: src/TouchPoint-WP/Involvement.php:495
msgid "Currently Full"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:494
+#: src/TouchPoint-WP/Involvement.php:500
msgid "Currently Closed"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:501
+#: src/TouchPoint-WP/Involvement.php:507
msgid "Registration Not Open Yet"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:507
+#: src/TouchPoint-WP/Involvement.php:513
msgid "Registration Closed"
msgstr ""
#. translators: %1$s is the date(s), %2$s is the time(s).
-#: src/TouchPoint-WP/Involvement.php:984
-#: src/TouchPoint-WP/Involvement.php:1016
-#: src/TouchPoint-WP/Involvement.php:1094
-#: src/TouchPoint-WP/Involvement.php:1118
+#. Translators: %1$s is the start date, %2$s is the start time.
+#: src/TouchPoint-WP/Involvement.php:991
+#: src/TouchPoint-WP/Involvement.php:1023
+#: src/TouchPoint-WP/Involvement.php:1112
+#: src/TouchPoint-WP/Involvement.php:1136
#: src/TouchPoint-WP/Utilities/DateFormats.php:283
-#: src/TouchPoint-WP/Utilities/DateFormats.php:346
+#: src/TouchPoint-WP/Utilities/DateFormats.php:347
msgid "%1$s at %2$s"
msgstr ""
#. translators: "Mon All Day" or "Sundays All Day"
-#: src/TouchPoint-WP/Involvement.php:987
-#: src/TouchPoint-WP/Involvement.php:1010
+#: src/TouchPoint-WP/Involvement.php:994
+#: src/TouchPoint-WP/Involvement.php:1017
msgid "%1$s All Day"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1011
+#: src/TouchPoint-WP/Involvement.php:1018
msgid "All Day"
msgstr ""
#. translators: {start date} through {end date} e.g. February 14 through August 12
-#: src/TouchPoint-WP/Involvement.php:1025
+#: src/TouchPoint-WP/Involvement.php:1032
msgid "%1$s through %2$s"
msgstr ""
#. translators: {schedule}, {start date} through {end date} e.g. Sundays at 11am, February 14 through August 12
-#: src/TouchPoint-WP/Involvement.php:1034
+#: src/TouchPoint-WP/Involvement.php:1041
msgid "%1$s, %2$s through %3$s"
msgstr ""
#. translators: Starts {start date} e.g. Starts September 15
-#: src/TouchPoint-WP/Involvement.php:1043
+#: src/TouchPoint-WP/Involvement.php:1050
msgid "Starts %1$s"
msgstr ""
#. translators: {schedule}, starting {start date} e.g. Sundays at 11am, starting February 14
-#: src/TouchPoint-WP/Involvement.php:1051
+#: src/TouchPoint-WP/Involvement.php:1058
msgid "%1$s, starting %2$s"
msgstr ""
#. translators: Through {end date} e.g. Through September 15
-#: src/TouchPoint-WP/Involvement.php:1059
+#: src/TouchPoint-WP/Involvement.php:1066
msgid "Through %1$s"
msgstr ""
#. translators: {schedule}, through {end date} e.g. Sundays at 11am, through February 14
-#: src/TouchPoint-WP/Involvement.php:1067
+#: src/TouchPoint-WP/Involvement.php:1074
msgid "%1$s, through %2$s"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1700
-#: src/TouchPoint-WP/Partner.php:810
+#: src/TouchPoint-WP/Involvement.php:1720
+#: src/TouchPoint-WP/Partner.php:814
msgid "Any"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1757
+#: src/TouchPoint-WP/Involvement.php:1777
msgid "Genders"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1800
+#: src/TouchPoint-WP/Involvement.php:1820
msgid "Language"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1873
+#: src/TouchPoint-WP/Involvement.php:1893
#: src/TouchPoint-WP/Taxonomies.php:863
msgid "Marital Status"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1874
+#: src/TouchPoint-WP/Involvement.php:1894
msgctxt "Marital status for a group of people"
msgid "Mostly Single"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1875
+#: src/TouchPoint-WP/Involvement.php:1895
msgctxt "Marital status for a group of people"
msgid "Mostly Married"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1886
+#: src/TouchPoint-WP/Involvement.php:1906
msgid "Age"
msgstr ""
#. translators: %s is for the user-provided term for the items on the map (e.g. Small Group or Partner)
-#: src/TouchPoint-WP/Involvement.php:1908
-#: src/TouchPoint-WP/Partner.php:834
+#: src/TouchPoint-WP/Involvement.php:1928
+#: src/TouchPoint-WP/Partner.php:838
msgid "The %s listed are only those shown on the map."
msgstr ""
#. translators: %s is the link to "reset the map"
-#: src/TouchPoint-WP/Involvement.php:1916
-#: src/TouchPoint-WP/Partner.php:850
+#: src/TouchPoint-WP/Involvement.php:1936
+#: src/TouchPoint-WP/Partner.php:854
msgid "Zoom out or %s to see more."
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1919
-#: src/TouchPoint-WP/Partner.php:853
+#: src/TouchPoint-WP/Involvement.php:1939
+#: src/TouchPoint-WP/Partner.php:857
msgctxt "Zoom out or reset the map to see more."
msgid "reset the map"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:2012
+#: src/TouchPoint-WP/Involvement.php:2033
msgid "This involvement type doesn't exist."
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:2022
+#: src/TouchPoint-WP/Involvement.php:2043
msgid "This involvement type doesn't have geographic locations enabled."
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:2041
+#: src/TouchPoint-WP/Involvement.php:2062
msgid "Could not locate."
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3523
+#: src/TouchPoint-WP/Involvement.php:3547
msgid "Men Only"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3526
+#: src/TouchPoint-WP/Involvement.php:3550
msgid "Women Only"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3603
+#: src/TouchPoint-WP/Involvement.php:3627
msgid "Contact Leaders"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3620
-#: src/TouchPoint-WP/Partner.php:1314
+#: src/TouchPoint-WP/Involvement.php:3644
+#: src/TouchPoint-WP/Partner.php:1318
msgid "Show on Map"
msgstr ""
#. Translators: %s is the system name. "TouchPoint" by default.
-#: src/TouchPoint-WP/Involvement.php:3632
+#: src/TouchPoint-WP/Involvement.php:3656
msgid "Involvement in %s"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3672
-#: src/TouchPoint-WP/Involvement.php:3714
+#: src/TouchPoint-WP/Involvement.php:3696
+#: src/TouchPoint-WP/Involvement.php:3738
msgid "Register"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3677
+#: src/TouchPoint-WP/Involvement.php:3701
msgid "Create Account"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3681
+#: src/TouchPoint-WP/Involvement.php:3705
msgid "Schedule"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3686
+#: src/TouchPoint-WP/Involvement.php:3710
msgid "Give"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3689
+#: src/TouchPoint-WP/Involvement.php:3713
msgid "Manage Subscriptions"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3692
+#: src/TouchPoint-WP/Involvement.php:3716
msgid "Record Attendance"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3695
+#: src/TouchPoint-WP/Involvement.php:3719
msgid "Get Tickets"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3705
+#: src/TouchPoint-WP/Involvement.php:3729
#: assets/js/base-defer.js:1001
msgid "Join"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3810
-#: src/TouchPoint-WP/Involvement.php:3907
+#: src/TouchPoint-WP/Involvement.php:3834
+#: src/TouchPoint-WP/Involvement.php:3931
msgid "Invalid Post Type."
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3884
-#: src/TouchPoint-WP/Person.php:1838
+#: src/TouchPoint-WP/Involvement.php:3908
+#: src/TouchPoint-WP/Person.php:1844
msgid "Contact Blocked for Spam."
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3894
-#: src/TouchPoint-WP/Person.php:1821
+#: src/TouchPoint-WP/Involvement.php:3918
+#: src/TouchPoint-WP/Person.php:1827
msgid "Contact Prohibited."
msgstr ""
-#: src/TouchPoint-WP/Meeting.php:92
+#: src/TouchPoint-WP/Meeting.php:94
msgid "Creating a Meeting object from an object without a post_id is not yet supported."
msgstr ""
-#: src/TouchPoint-WP/Meeting.php:216
+#: src/TouchPoint-WP/Meeting.php:270
msgctxt "What Meetings should be called, singular."
msgid "Event"
msgstr ""
-#: src/TouchPoint-WP/Meeting.php:363
+#: src/TouchPoint-WP/Meeting.php:422
msgid "In the Past"
msgstr ""
#. Translators: %s is the system name. "TouchPoint" by default.
-#: src/TouchPoint-WP/Meeting.php:433
+#: src/TouchPoint-WP/Meeting.php:494
msgid "Meeting in %s"
msgstr ""
-#: src/TouchPoint-WP/Meeting.php:488
+#: src/TouchPoint-WP/Meeting.php:549
msgid "Cancelled"
msgstr ""
-#: src/TouchPoint-WP/Meeting.php:489
+#: src/TouchPoint-WP/Meeting.php:550
msgid "Scheduled"
msgstr ""
-#: src/TouchPoint-WP/Meeting.php:490
+#: src/TouchPoint-WP/Meeting.php:551
msgctxt "Event Status is not a recognized value."
msgid "Unknown"
msgstr ""
-#: src/TouchPoint-WP/Meeting.php:605
-#: src/TouchPoint-WP/TouchPointWP.php:970
+#: src/TouchPoint-WP/Meeting.php:672
+#: src/TouchPoint-WP/TouchPointWP.php:971
msgid "Only GET requests are allowed."
msgstr ""
-#: src/TouchPoint-WP/Meeting.php:633
-#: src/TouchPoint-WP/TouchPointWP.php:353
+#: src/TouchPoint-WP/Meeting.php:700
+#: src/TouchPoint-WP/TouchPointWP.php:354
msgid "Only POST requests are allowed."
msgstr ""
-#: src/TouchPoint-WP/Meeting.php:643
-#: src/TouchPoint-WP/TouchPointWP.php:362
+#: src/TouchPoint-WP/Meeting.php:710
+#: src/TouchPoint-WP/TouchPointWP.php:363
msgid "Invalid data provided."
msgstr ""
-#: src/TouchPoint-WP/Meeting.php:672
-#: src/TouchPoint-WP/Meeting.php:692
+#: src/TouchPoint-WP/Meeting.php:739
+#: src/TouchPoint-WP/Meeting.php:759
#: src/TouchPoint-WP/Rsvp.php:80
msgid "RSVP"
msgstr ""
#. translators: %s is for the user-provided "Global Partner" and "Secure Partner" terms.
-#: src/TouchPoint-WP/Partner.php:841
+#: src/TouchPoint-WP/Partner.php:845
msgid "The %1$s listed are only those shown on the map, as well as all %2$s."
msgstr ""
-#: src/TouchPoint-WP/Partner.php:1255
+#: src/TouchPoint-WP/Partner.php:1259
msgid "Not Shown on Map"
msgstr ""
@@ -595,44 +596,44 @@ msgstr ""
msgid "TouchPoint People ID"
msgstr ""
-#: src/TouchPoint-WP/Person.php:1188
+#: src/TouchPoint-WP/Person.php:1192
msgid "Contact"
msgstr ""
#. Translators: %s is the system name. "TouchPoint" by default.
-#: src/TouchPoint-WP/Person.php:1196
+#: src/TouchPoint-WP/Person.php:1200
msgid "Person in %s"
msgstr ""
-#: src/TouchPoint-WP/Person.php:1445
-#: src/TouchPoint-WP/Utilities.php:264
+#: src/TouchPoint-WP/Person.php:1451
+#: src/TouchPoint-WP/Utilities.php:271
#: assets/js/base-defer.js:18
msgid "and"
msgstr ""
-#: src/TouchPoint-WP/Person.php:1452
+#: src/TouchPoint-WP/Person.php:1458
msgctxt "list of people, and *others*"
msgid "others"
msgstr ""
-#: src/TouchPoint-WP/Person.php:1591
+#: src/TouchPoint-WP/Person.php:1597
msgid "Registration Blocked for Spam."
msgstr ""
-#: src/TouchPoint-WP/Person.php:1676
+#: src/TouchPoint-WP/Person.php:1682
msgid "You may need to sign in."
msgstr ""
-#: src/TouchPoint-WP/Report.php:172
+#: src/TouchPoint-WP/Report.php:176
msgid "TouchPoint Reports"
msgstr ""
-#: src/TouchPoint-WP/Report.php:173
+#: src/TouchPoint-WP/Report.php:177
msgid "TouchPoint Report"
msgstr ""
#. translators: Last updated date/time for a report. %1$s is the date. %2$s is the time.
-#: src/TouchPoint-WP/Report.php:311
+#: src/TouchPoint-WP/Report.php:397
msgid "Updated on %1$s at %2$s"
msgstr ""
@@ -727,46 +728,46 @@ msgstr ""
msgid "Classify Partners by category chosen in settings."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:259
+#: src/TouchPoint-WP/TouchPointWP.php:260
msgid "Every 15 minutes"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:1947
+#: src/TouchPoint-WP/TouchPointWP.php:1948
msgid "Unknown Type"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2004
+#: src/TouchPoint-WP/TouchPointWP.php:2005
msgid "Your Searches"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2007
+#: src/TouchPoint-WP/TouchPointWP.php:2008
msgid "Public Searches"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2010
+#: src/TouchPoint-WP/TouchPointWP.php:2011
msgid "Status Flags"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2015
#: src/TouchPoint-WP/TouchPointWP.php:2016
+#: src/TouchPoint-WP/TouchPointWP.php:2017
msgid "Current Value"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2133
-#: src/TouchPoint-WP/TouchPointWP.php:2169
+#: src/TouchPoint-WP/TouchPointWP.php:2134
+#: src/TouchPoint-WP/TouchPointWP.php:2170
msgid "Invalid or incomplete API Settings."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2183
-#: src/TouchPoint-WP/TouchPointWP.php:2227
+#: src/TouchPoint-WP/TouchPointWP.php:2184
+#: src/TouchPoint-WP/TouchPointWP.php:2228
msgid "Host appears to be missing from TouchPoint-WP configuration."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2300
+#: src/TouchPoint-WP/TouchPointWP.php:2301
msgid "The scripts on TouchPoint that interact with this plugin are out-of-date, and an automatic update failed."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2359
+#: src/TouchPoint-WP/TouchPointWP.php:2360
msgid "People Query Failed"
msgstr ""
@@ -1508,13 +1509,19 @@ msgctxt "Time of Day"
msgid "Night"
msgstr ""
-#: src/TouchPoint-WP/Utilities.php:471
+#: src/TouchPoint-WP/Utilities.php:276
+msgctxt "list of items, and *others*"
+msgid "others"
+msgstr ""
+
+#: src/TouchPoint-WP/Utilities.php:482
msgid "Expand"
msgstr ""
#. translators: %1$s is the start time, %2$s is the end time.
+#. Translators: %1$s is the start date, %2$s is the end date.
#: src/TouchPoint-WP/Utilities/DateFormats.php:89
-#: src/TouchPoint-WP/Utilities/DateFormats.php:325
+#: src/TouchPoint-WP/Utilities/DateFormats.php:326
msgid "%1$s – %2$s"
msgstr ""
From 86d46b5b46f20bf5a2762fdadc3dcbe578cc59d5 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Thu, 12 Sep 2024 18:11:18 -0400
Subject: [PATCH 189/423] Resolve an issue where meetings were sometimes
returned multiple times by the API. Closes #204. Should help #198.
---
src/TouchPoint-WP/Involvement.php | 7 ++++++-
src/python/WebApi.py | 2 +-
2 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/src/TouchPoint-WP/Involvement.php b/src/TouchPoint-WP/Involvement.php
index 49cf15c7..805b775f 100644
--- a/src/TouchPoint-WP/Involvement.php
+++ b/src/TouchPoint-WP/Involvement.php
@@ -56,6 +56,7 @@ class Involvement extends PostTypeCapable implements api, updatesViaCron, hasGeo
protected const SCHEDULE_STRING_CACHE_EXPIRATION = 3600 * 8; // 8 hours. Automatically deleted during sync.
protected const SCHEDULE_STRING_CACHE_GROUP = TouchPointWP::HOOK_PREFIX . "inv_schedule_string";
+ protected const ENABLE_SCHEDULE_STRING_CACHE = true;
protected const MEETING_STRATEGY_NONE = 0;
protected const MEETING_STRATEGY_SINGLE = 1;
@@ -654,6 +655,10 @@ protected function meetings(): array
if ($m === "") {
$m = [];
}
+
+ // Make sure items are unique. #204
+ $m = array_unique($m, SORT_REGULAR);
+
$this->_meetings = $m;
}
@@ -719,7 +724,7 @@ protected static function scheduleStrings(int $invId, $inv = null): ?array
$cacheKey = $invId . "_" . get_locale() . "_v2";
$schStr = wp_cache_get($cacheKey, self::SCHEDULE_STRING_CACHE_GROUP);
- if (!! $schStr) {
+ if (!! $schStr && self::ENABLE_SCHEDULE_STRING_CACHE) {
return $schStr;
}
if (! $inv) {
diff --git a/src/python/WebApi.py b/src/python/WebApi.py
index 3295316e..a32a4cc1 100644
--- a/src/python/WebApi.py
+++ b/src/python/WebApi.py
@@ -333,7 +333,7 @@ def get_person_info_for_sync(person_obj):
(
SELECT cto.OrganizationId,
(
- SELECT om.MeetingId as mtgId,
+ SELECT DISTINCT om.MeetingId as mtgId,
FORMAT(om.MeetingDate, 'yyyy-MM-ddTHH:mm:ss') as mtgStartDt,
FORMAT(om.MeetingEnd, 'yyyy-MM-ddTHH:mm:ss') as mtgEndDt,
om.Location as location,
From 73df9cd2e3d1a583f0a63f5624a36fc01dfd10aa Mon Sep 17 00:00:00 2001
From: "James K."
Date: Thu, 12 Sep 2024 18:19:32 -0400
Subject: [PATCH 190/423] Improving performance. Vaguely related to #204
---
src/python/WebApi.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/python/WebApi.py b/src/python/WebApi.py
index a32a4cc1..1a481e81 100644
--- a/src/python/WebApi.py
+++ b/src/python/WebApi.py
@@ -357,7 +357,7 @@ def get_person_info_for_sync(person_obj):
cteSchedule AS
(SELECT cto.OrganizationId,
(
- SELECT FORMAT(os.NextMeetingDate, 'yyyy-MM-ddTHH:mm:ss') as nextStartDt,
+ SELECT DISTINCT FORMAT(os.NextMeetingDate, 'yyyy-MM-ddTHH:mm:ss') as nextStartDt,
FORMAT(DATEADD(minute, os.DurationMins, os.NextMeetingDate), 'yyyy-MM-ddTHH:mm:ss') as nextEndDt
FROM dbo.OrgSchedule os WITH(NOLOCK)
INNER JOIN cteTargetOrgs o
From a40d8825f616c4a50d43cf7485b2a8c0dd3f85c7 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Thu, 12 Sep 2024 18:34:53 -0400
Subject: [PATCH 191/423] Resolving some confusion around "& others" on
involvement schedules where historical meetings exist.
---
src/TouchPoint-WP/Involvement.php | 23 ++++++++++++++---------
1 file changed, 14 insertions(+), 9 deletions(-)
diff --git a/src/TouchPoint-WP/Involvement.php b/src/TouchPoint-WP/Involvement.php
index 805b775f..59b4c49f 100644
--- a/src/TouchPoint-WP/Involvement.php
+++ b/src/TouchPoint-WP/Involvement.php
@@ -1097,12 +1097,17 @@ protected function scheduleStrings_calc(): array
$now = Utilities::dateTimeNow();
// filter meetings to only those not past
- $originalMeetingCount = count($this->meetings());
- $meetings = array_filter($this->meetings(), fn($m) => $m->mtgEndDt > $now);
- if (count($meetings) === 0) {
- $meetings = $this->meetings();
- }
- $andOthers = (count($meetings) !== $originalMeetingCount);
+ $meetings = $this->meetings();
+ $meetings = array_filter($meetings, fn($m) => $m->status == 1);
+ $uncancelledMeetings = $meetings; // includes historical
+// $originalMeetingCount = count($meetings);
+ $meetings = array_filter($meetings, fn($m) => $m->mtgEndDt > $now);
+ if (count($meetings) === 0) { // if no future, revert to historical.
+ $meetings = $uncancelledMeetings;
+ }
+// $andOthers = (count($meetings) !== $originalMeetingCount); This, when fed to the ->toListString methods
+// below can be used to add "and others" to the list of dates/times to indicate that there are historical
+// meetings that are not being shown. However, this currently seems more confusing than helpful.
foreach ($meetings as $m) {
$a = DateFormats::DurationToStringArray($m->mtgStartDt, $m->mtgEndDt, null, $m->mtgStartDt->isAllDay);
@@ -1128,10 +1133,10 @@ protected function scheduleStrings_calc(): array
}
if ($forceDateTime) {
- $r['datetime'] = $dateTimeArr->toListString(2, $andOthers);
+ $r['datetime'] = $dateTimeArr->toListString(2);
$r['combined'] = $r['datetime'];
} else {
- $dateStr = $dateArr->toListString(2, $andOthers);
+ $dateStr = $dateArr->toListString(2);
$r['date'] = $dateStr;
$r['time'] = $timeArr[0];
@@ -3337,7 +3342,7 @@ public static function filterPublishDate($theDate, $format, $post = null): strin
if (self::postIsType($post)) {
$theDate = self::scheduleString(intval($post->{TouchPointWP::INVOLVEMENT_META_KEY})) ?? "";
} elseif (Meeting::postIsType($post)) {
- $theDate = "tbd";
+ $theDate = Meeting::scheduleString(intval($post->{Meeting::MEETING_META_KEY})) ?? "";
}
}
From 0131cb70db62e45338185a00bae7794273da2d71 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Thu, 12 Sep 2024 21:30:07 -0400
Subject: [PATCH 192/423] Resolving an issue with calendar navigation.
---
assets/template/calendar-grid-style.css | 8 ++++++++
src/TouchPoint-WP/CalendarGrid.php | 13 +++++++------
src/templates/meeting-archive.php | 3 +++
3 files changed, 18 insertions(+), 6 deletions(-)
diff --git a/assets/template/calendar-grid-style.css b/assets/template/calendar-grid-style.css
index 50f22b6a..d84a14bc 100644
--- a/assets/template/calendar-grid-style.css
+++ b/assets/template/calendar-grid-style.css
@@ -46,6 +46,10 @@ div.calGrid div.calDay.after {
background: #0001;
}
+div.calGridNav.bottom {
+ display: none;
+}
+
@media screen and (max-width: 1000px) {
div.calGrid {
display: grid;
@@ -78,6 +82,10 @@ div.calGrid div.calDay.after {
div.calGrid div.calDay > h3.calDayHead {
display:block;
}
+
+ div.calGridNav.bottom {
+ display: flex;
+ }
}
div.calGridNav {
diff --git a/src/TouchPoint-WP/CalendarGrid.php b/src/TouchPoint-WP/CalendarGrid.php
index bb0373aa..8c3d21e3 100644
--- a/src/TouchPoint-WP/CalendarGrid.php
+++ b/src/TouchPoint-WP/CalendarGrid.php
@@ -173,7 +173,7 @@ public function __construct(WP_Query $q, int $month = null, int $year = null)
$dayHtml = "";
$hasFirstDays = false;
- foreach ($dayEvents as $k => $m) {
+ foreach ($dayEvents as $m) {
$link = $m->permalink();
$notFirstDay = $m->startDt < $d;
@@ -239,7 +239,7 @@ public function __construct(WP_Query $q, int $month = null, int $year = null)
}
} else {
if (!$isMonthAfter && $day > 27) {
- $lastDayOfMonth = DateTimeImmutable::createFromMutable($d);
+ $lastDayOfMonth = $d;
}
}
} while (!$isMonthAfter || $d->format('w') !== '0');
@@ -253,7 +253,7 @@ public function __construct(WP_Query $q, int $month = null, int $year = null)
$this->html = "$message
";
}
- $this->next = $lastDayOfMonth->add($aDay);
+ $this->next = DateTimeImmutable::createFromMutable($lastDayOfMonth->add($aDay));
$this->prev = $firstDayOfMonth->sub($aDay);
}
@@ -284,13 +284,14 @@ public static function enqueueCalendarStyle(): void
/**
* This method returns a navigation bar for the calendar grid with simply next/prev month links.
*
- * @param bool $withMonthName
+ * @param bool $withMonthName
+ * @param string $class
*
* @return string
*/
- public function navBar(bool $withMonthName = false): string
+ public function navBar(bool $withMonthName = false, string $class=""): string
{
- $r = "";
+ $r = "
";
$r .= "
";
$r .= $this->getPrevLink();
$r .= "
";
diff --git a/src/templates/meeting-archive.php b/src/templates/meeting-archive.php
index 9b24c18e..7d62f5d5 100644
--- a/src/templates/meeting-archive.php
+++ b/src/templates/meeting-archive.php
@@ -47,6 +47,9 @@
echo $grid->navBar(true);
echo $grid;
+ if ($grid->eventCount > 0) {
+ echo $grid->navBar(false, 'bottom');
+ }
wp_reset_query();
$taxQuery = [[]];
From 1e882b3633056c9427874b19f220491dfe0f3f06 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Tue, 1 Oct 2024 22:52:10 -0500
Subject: [PATCH 193/423] adding inline report parameter
---
docs | 2 +-
src/TouchPoint-WP/Report.php | 16 ++++++++++++----
2 files changed, 13 insertions(+), 5 deletions(-)
diff --git a/docs b/docs
index 0bda5ee9..248c392c 160000
--- a/docs
+++ b/docs
@@ -1 +1 @@
-Subproject commit 0bda5ee9dbbc66865ebbe502d24d282124836059
+Subproject commit 248c392c67910e62cb5626077e75e5ac8cb5890f
diff --git a/src/TouchPoint-WP/Report.php b/src/TouchPoint-WP/Report.php
index 54ac51a4..ce34ec3c 100644
--- a/src/TouchPoint-WP/Report.php
+++ b/src/TouchPoint-WP/Report.php
@@ -350,13 +350,17 @@ public static function reportShortcode($params = [], string $content = ""): stri
'name' => '',
'interval' => 24,
'p1' => '',
- 'showupdated' => 'true'
+ 'showupdated' => 'true',
+ 'inline' => 'false'
],
$params,
self::SHORTCODE_REPORT
);
$params['showupdated'] = (strtolower($params['showupdated']) === 'true' || $params['showupdated'] === 1);
+ $params['inline'] = (strtolower($params['inline']) === 'true' || $params['inline'] === 1);
+
+ $params['showupdated'] = $params['showupdated'] && !$params['inline'];
try {
$report = self::fromParams($params);
@@ -388,7 +392,11 @@ public static function reportShortcode($params = [], string $content = ""): stri
$permalink = esc_attr(get_post_permalink($report->getPost()));
- $rc = "\n\t" . str_replace("\n", "\n\t", $rc);
+ $elt = $params['inline'] ? "span" : "figure";
+ $nt = $params['inline'] ? "" : "\n\t";
+ $n = $params['inline'] ? "" : "\n";
+
+ $rc = "<$elt $idAttr class=\"$class\" data-tp-report=\"$permalink\">$nt" . str_replace("\n", $nt, $rc);
// If desired, add a caption that indicates when the table was last updated.
if ($params['showupdated']) {
@@ -399,10 +407,10 @@ public static function reportShortcode($params = [], string $content = ""): stri
get_the_modified_time('', $report->getPost())
);
- $rc .= "\n\t$updatedS ";
+ $rc .= "$nt$updatedS ";
}
- $rc .= "\n ";
+ $rc .= "$n$elt>";
return $rc;
}
From 2691ddc26ebfb18b202a389d66de21458d399d6b Mon Sep 17 00:00:00 2001
From: "James K."
Date: Tue, 8 Oct 2024 08:10:09 -0400
Subject: [PATCH 194/423] Resolve an issue with DST starting and ending. Closes
#207.
---
src/TouchPoint-WP/CalendarGrid.php | 34 +++++++++++++++++++++++++-----
1 file changed, 29 insertions(+), 5 deletions(-)
diff --git a/src/TouchPoint-WP/CalendarGrid.php b/src/TouchPoint-WP/CalendarGrid.php
index 8c3d21e3..fd2e27cc 100644
--- a/src/TouchPoint-WP/CalendarGrid.php
+++ b/src/TouchPoint-WP/CalendarGrid.php
@@ -72,7 +72,7 @@ public function __construct(WP_Query $q, int $month = null, int $year = null)
$year = intval($year);
if ($month < 1 || $month > 12 || $year < 2020 || $year > 2100) {
$d = new DateTime('now', $tz);
- $d = new DateTime($d->format('Y-m-01'), $tz);
+ $d = new DateTime($d->format('Y-m-01 00:00:00'), $tz);
} else {
$d = new DateTime("$year-$month-01", $tz);
}
@@ -88,7 +88,11 @@ public function __construct(WP_Query $q, int $month = null, int $year = null)
// Get the day of the week for the first day of the month (0 = Sunday, 1 = Monday, ..., 6 = Saturday)
$offsetDays = intval($d->format('w')); // w: Numeric representation of the day of the week
- $d->modify("-$offsetDays days");
+ try {
+ $d->modify("-$offsetDays days");
+ } catch (Exception) { // Exception is not feasible.
+ }
+ $d->setTimezone($tz);
$r = "";
// Extra days at the end of the month
@@ -227,8 +231,24 @@ public function __construct(WP_Query $q, int $month = null, int $year = null)
// Increment days
$mo1 = $d->format('n');
+ $oldDd = $d->format('d');
$d->add($aDay);
- $d2359->add($aDay);
+ $d->setTimezone($tz);
+
+ // handle fall DST transitions.
+ while ($d->format('d') == $oldDd) {
+ $d->add($aDay);
+ $d->setTimezone($tz);
+ }
+
+ try {
+ $d = new DateTime($d->format('Y-m-d 00:00:00'), $tz);
+ $d2359 = new DateTime($d->format('Y-m-d 23:59:59'), $tz);
+ } catch (Exception) {
+ // unlikely to ever run, since the format is provided.
+ $d2359->add($aDay);
+ $d2359->setTimezone($tz);
+ }
$mo2 = $d->format('n');
if ($mo1 !== $mo2) {
@@ -253,8 +273,12 @@ public function __construct(WP_Query $q, int $month = null, int $year = null)
$this->html = "$message
";
}
- $this->next = DateTimeImmutable::createFromMutable($lastDayOfMonth->add($aDay));
- $this->prev = $firstDayOfMonth->sub($aDay);
+ $this->next = DateTimeImmutable::createFromMutable($lastDayOfMonth->add($aDay)->setTimezone($tz));
+ try {
+ $this->prev = $firstDayOfMonth->sub($aDay)->setTimezone($tz);
+ } catch (Exception) {
+ $this->prev = null;
+ }
}
/**
From 60e28324b028e52293f4e22341b3f0df8568f9cc Mon Sep 17 00:00:00 2001
From: "James K."
Date: Wed, 9 Oct 2024 21:57:43 -0400
Subject: [PATCH 195/423] Version bump.
---
composer.json | 2 +-
docs | 2 +-
i18n/TouchPoint-WP-es_ES.po | 112 ++++++++++++++--------------
i18n/TouchPoint-WP.pot | 116 ++++++++++++++---------------
package.json | 2 +-
src/TouchPoint-WP/TouchPointWP.php | 2 +-
src/python/WebApi.py | 2 +-
touchpoint-wp.php | 2 +-
8 files changed, 120 insertions(+), 120 deletions(-)
diff --git a/composer.json b/composer.json
index eec1aa45..d85ebd44 100644
--- a/composer.json
+++ b/composer.json
@@ -3,7 +3,7 @@
"description": "A WordPress Plugin for integrating with TouchPoint Church Management Software.",
"license": "AGPL-3.0-or-later",
"type": "wordpress-plugin",
- "version": "0.0.92",
+ "version": "0.0.93",
"keywords": [
"wordpress",
"wp",
diff --git a/docs b/docs
index 248c392c..0d854550 160000
--- a/docs
+++ b/docs
@@ -1 +1 @@
-Subproject commit 248c392c67910e62cb5626077e75e5ac8cb5890f
+Subproject commit 0d854550b75f6f46b4a1666dd812358ec4381ca4
diff --git a/i18n/TouchPoint-WP-es_ES.po b/i18n/TouchPoint-WP-es_ES.po
index 2a19921c..cc7bc332 100644
--- a/i18n/TouchPoint-WP-es_ES.po
+++ b/i18n/TouchPoint-WP-es_ES.po
@@ -123,13 +123,13 @@ msgid "Gender"
msgstr "Género"
#: src/templates/admin/invKoForm.php:213
-#: src/TouchPoint-WP/Involvement.php:1845
+#: src/TouchPoint-WP/Involvement.php:1854
#: src/TouchPoint-WP/Taxonomies.php:744
msgid "Weekday"
msgstr "Día laborable"
#: src/templates/admin/invKoForm.php:217
-#: src/TouchPoint-WP/Involvement.php:1871
+#: src/TouchPoint-WP/Involvement.php:1880
#: src/TouchPoint-WP/Taxonomies.php:802
msgid "Time of Day"
msgstr "Hora del día"
@@ -173,7 +173,7 @@ msgstr "Seleccione..."
#. translators: %s will be the plural post type (e.g. Small Groups)
#: src/templates/parts/involvement-list-none.php:16
-#: src/TouchPoint-WP/Involvement.php:2092
+#: src/TouchPoint-WP/Involvement.php:2101
msgid "No %s Found."
msgstr "No se encontraron %s"
@@ -208,80 +208,80 @@ msgstr "Periódico"
msgid "Multi-Day"
msgstr "varios días"
-#: src/TouchPoint-WP/Involvement.php:495
+#: src/TouchPoint-WP/Involvement.php:496
msgid "Currently Full"
msgstr "Actualmente lleno"
-#: src/TouchPoint-WP/Involvement.php:500
+#: src/TouchPoint-WP/Involvement.php:501
msgid "Currently Closed"
msgstr "Actualmente cerrado"
-#: src/TouchPoint-WP/Involvement.php:507
+#: src/TouchPoint-WP/Involvement.php:508
msgid "Registration Not Open Yet"
msgstr "Registro aún no abierto"
-#: src/TouchPoint-WP/Involvement.php:513
+#: src/TouchPoint-WP/Involvement.php:514
msgid "Registration Closed"
msgstr "Registro cerrado"
-#: src/TouchPoint-WP/Involvement.php:1720
+#: src/TouchPoint-WP/Involvement.php:1729
#: src/TouchPoint-WP/Partner.php:814
msgid "Any"
msgstr "Cualquier"
#. translators: %s is for the user-provided term for the items on the map (e.g. Small Group or Partner)
-#: src/TouchPoint-WP/Involvement.php:1928
+#: src/TouchPoint-WP/Involvement.php:1937
#: src/TouchPoint-WP/Partner.php:838
msgid "The %s listed are only those shown on the map."
msgstr "Los %s enumerados son solo los que se muestran en el mapa."
-#: src/TouchPoint-WP/Involvement.php:3547
+#: src/TouchPoint-WP/Involvement.php:3556
msgid "Men Only"
msgstr "Solo hombres"
-#: src/TouchPoint-WP/Involvement.php:3550
+#: src/TouchPoint-WP/Involvement.php:3559
msgid "Women Only"
msgstr "Solo mujeres"
-#: src/TouchPoint-WP/Involvement.php:3627
+#: src/TouchPoint-WP/Involvement.php:3636
msgid "Contact Leaders"
msgstr "Contacta con las líderes"
-#: src/TouchPoint-WP/Involvement.php:3696
-#: src/TouchPoint-WP/Involvement.php:3738
+#: src/TouchPoint-WP/Involvement.php:3705
+#: src/TouchPoint-WP/Involvement.php:3747
msgid "Register"
msgstr "Regístrate ahora"
-#: src/TouchPoint-WP/Involvement.php:3701
+#: src/TouchPoint-WP/Involvement.php:3710
msgid "Create Account"
msgstr "Crear cuenta"
-#: src/TouchPoint-WP/Involvement.php:3705
+#: src/TouchPoint-WP/Involvement.php:3714
msgid "Schedule"
msgstr "Programe"
-#: src/TouchPoint-WP/Involvement.php:3710
+#: src/TouchPoint-WP/Involvement.php:3719
msgid "Give"
msgstr "Dar"
-#: src/TouchPoint-WP/Involvement.php:3713
+#: src/TouchPoint-WP/Involvement.php:3722
msgid "Manage Subscriptions"
msgstr "Administrar suscripciones"
-#: src/TouchPoint-WP/Involvement.php:3716
+#: src/TouchPoint-WP/Involvement.php:3725
msgid "Record Attendance"
msgstr "Registre su asistencia"
-#: src/TouchPoint-WP/Involvement.php:3719
+#: src/TouchPoint-WP/Involvement.php:3728
msgid "Get Tickets"
msgstr "Obtener boletos"
-#: src/TouchPoint-WP/Involvement.php:3729
+#: src/TouchPoint-WP/Involvement.php:3738
#: assets/js/base-defer.js:1001
msgid "Join"
msgstr "Únete"
-#: src/TouchPoint-WP/Involvement.php:3644
+#: src/TouchPoint-WP/Involvement.php:3653
#: src/TouchPoint-WP/Partner.php:1318
msgid "Show on Map"
msgstr "Muestra en el mapa"
@@ -1026,16 +1026,16 @@ msgstr "OK"
msgid "Next"
msgstr "Siguiente"
-#: src/TouchPoint-WP/Involvement.php:1893
+#: src/TouchPoint-WP/Involvement.php:1902
#: src/TouchPoint-WP/Taxonomies.php:863
msgid "Marital Status"
msgstr "Estado civil"
-#: src/TouchPoint-WP/Involvement.php:1906
+#: src/TouchPoint-WP/Involvement.php:1915
msgid "Age"
msgstr "Años"
-#: src/TouchPoint-WP/Involvement.php:1777
+#: src/TouchPoint-WP/Involvement.php:1786
msgid "Genders"
msgstr "Géneros"
@@ -1197,23 +1197,23 @@ msgctxt "Time of Day"
msgid "Night"
msgstr "Noche"
-#: src/TouchPoint-WP/Involvement.php:1894
+#: src/TouchPoint-WP/Involvement.php:1903
msgctxt "Marital status for a group of people"
msgid "Mostly Single"
msgstr "Mayoría solteras"
-#: src/TouchPoint-WP/Involvement.php:1895
+#: src/TouchPoint-WP/Involvement.php:1904
msgctxt "Marital status for a group of people"
msgid "Mostly Married"
msgstr "Mayoría casadas"
#. translators: %s is the link to "reset the map"
-#: src/TouchPoint-WP/Involvement.php:1936
+#: src/TouchPoint-WP/Involvement.php:1945
#: src/TouchPoint-WP/Partner.php:854
msgid "Zoom out or %s to see more."
msgstr "Alejar o %s para ver más."
-#: src/TouchPoint-WP/Involvement.php:1939
+#: src/TouchPoint-WP/Involvement.php:1948
#: src/TouchPoint-WP/Partner.php:857
msgctxt "Zoom out or reset the map to see more."
msgid "reset the map"
@@ -1221,48 +1221,48 @@ msgstr "restablecer el mapa"
#. translators: %1$s is the date(s), %2$s is the time(s).
#. Translators: %1$s is the start date, %2$s is the start time.
-#: src/TouchPoint-WP/Involvement.php:991
-#: src/TouchPoint-WP/Involvement.php:1023
-#: src/TouchPoint-WP/Involvement.php:1112
-#: src/TouchPoint-WP/Involvement.php:1136
+#: src/TouchPoint-WP/Involvement.php:996
+#: src/TouchPoint-WP/Involvement.php:1028
+#: src/TouchPoint-WP/Involvement.php:1121
+#: src/TouchPoint-WP/Involvement.php:1145
#: src/TouchPoint-WP/Utilities/DateFormats.php:283
#: src/TouchPoint-WP/Utilities/DateFormats.php:347
msgid "%1$s at %2$s"
msgstr "%1$s a las %2$s"
#. translators: {start date} through {end date} e.g. February 14 through August 12
-#: src/TouchPoint-WP/Involvement.php:1032
+#: src/TouchPoint-WP/Involvement.php:1037
msgid "%1$s through %2$s"
msgstr "%1$s al %2$s"
#. translators: {schedule}, {start date} through {end date} e.g. Sundays at 11am, February 14 through August 12
-#: src/TouchPoint-WP/Involvement.php:1041
+#: src/TouchPoint-WP/Involvement.php:1046
msgid "%1$s, %2$s through %3$s"
msgstr "%1$s, %2$s al %3$s"
#. translators: Starts {start date} e.g. Starts September 15
-#: src/TouchPoint-WP/Involvement.php:1050
+#: src/TouchPoint-WP/Involvement.php:1055
msgid "Starts %1$s"
msgstr "Comienza el %1$s"
#. translators: {schedule}, starting {start date} e.g. Sundays at 11am, starting February 14
-#: src/TouchPoint-WP/Involvement.php:1058
+#: src/TouchPoint-WP/Involvement.php:1063
msgid "%1$s, starting %2$s"
msgstr "%1$s, comienza el %2$s"
#. translators: Through {end date} e.g. Through September 15
-#: src/TouchPoint-WP/Involvement.php:1066
+#: src/TouchPoint-WP/Involvement.php:1071
msgid "Through %1$s"
msgstr "Hasta el %1$s"
#. translators: {schedule}, through {end date} e.g. Sundays at 11am, through February 14
-#: src/TouchPoint-WP/Involvement.php:1074
+#: src/TouchPoint-WP/Involvement.php:1079
msgid "%1$s, through %2$s"
msgstr "%1$s, hasta el %2$s"
#. translators: number of miles
#: src/templates/parts/involvement-nearby-list.php:10
-#: src/TouchPoint-WP/Involvement.php:3568
+#: src/TouchPoint-WP/Involvement.php:3577
msgctxt "miles. Unit is appended to a number. %2.1f is the number, so %2.1fmi looks like '12.3mi'"
msgid "%2.1fmi"
msgstr "%2.1fmi"
@@ -1279,15 +1279,15 @@ msgstr "La participación tiene un tipo de registro de \"No Online Registration\
msgid "Involvement registration has ended (end date is past)"
msgstr "El registro de participación ha finalizado (la fecha de finalización ya pasó)"
-#: src/TouchPoint-WP/Involvement.php:2033
+#: src/TouchPoint-WP/Involvement.php:2042
msgid "This involvement type doesn't exist."
msgstr "Este tipo de participación no existe."
-#: src/TouchPoint-WP/Involvement.php:2043
+#: src/TouchPoint-WP/Involvement.php:2052
msgid "This involvement type doesn't have geographic locations enabled."
msgstr "Este tipo de participación no tiene habilitadas las ubicaciones geográficas."
-#: src/TouchPoint-WP/Involvement.php:2062
+#: src/TouchPoint-WP/Involvement.php:2071
msgid "Could not locate."
msgstr "No se pudo localizar."
@@ -1306,8 +1306,8 @@ msgstr "Solo se permiten solicitudes POST."
msgid "Invalid data provided."
msgstr "Datos proporcionados no válidos."
-#: src/TouchPoint-WP/Involvement.php:3834
-#: src/TouchPoint-WP/Involvement.php:3931
+#: src/TouchPoint-WP/Involvement.php:3843
+#: src/TouchPoint-WP/Involvement.php:3940
msgid "Invalid Post Type."
msgstr "Tipo de publicación no válida."
@@ -1419,7 +1419,7 @@ msgid "TouchPoint Report"
msgstr "Informe de TouchPoint"
#. translators: Last updated date/time for a report. %1$s is the date. %2$s is the time.
-#: src/TouchPoint-WP/Report.php:397
+#: src/TouchPoint-WP/Report.php:405
msgid "Updated on %1$s at %2$s"
msgstr "Actualizada %1$s %2$s"
@@ -1427,7 +1427,7 @@ msgstr "Actualizada %1$s %2$s"
msgid "Every 15 minutes"
msgstr "Cada 15 minutos"
-#: src/TouchPoint-WP/Involvement.php:1820
+#: src/TouchPoint-WP/Involvement.php:1829
msgid "Language"
msgstr "Idioma"
@@ -1480,7 +1480,7 @@ msgstr "Eliminar siempre de WordPress"
msgid "Mark the occurrence as cancelled"
msgstr "Marcar la ocurrencia como cancelada"
-#: src/TouchPoint-WP/Involvement.php:3918
+#: src/TouchPoint-WP/Involvement.php:3927
#: src/TouchPoint-WP/Person.php:1827
msgid "Contact Prohibited."
msgstr "Contacto prohibido."
@@ -1505,7 +1505,7 @@ msgstr "Algo salió mal."
msgid "You may need to sign in."
msgstr "Es posible que tengas que iniciar sesión."
-#: src/TouchPoint-WP/Involvement.php:3908
+#: src/TouchPoint-WP/Involvement.php:3917
#: src/TouchPoint-WP/Person.php:1844
msgid "Contact Blocked for Spam."
msgstr "Contacto bloqueado por spam."
@@ -1626,12 +1626,12 @@ msgid "%1$s, %2$s"
msgstr "%1$s %2$s"
#. Translators: %s is the singular name of the of a Meeting, such as "Event".
-#: src/TouchPoint-WP/CalendarGrid.php:185
+#: src/TouchPoint-WP/CalendarGrid.php:189
msgid "%s is cancelled."
msgstr "%s esta cancelado."
#. Translators: %s is the system name. "TouchPoint" by default.
-#: src/TouchPoint-WP/Involvement.php:3656
+#: src/TouchPoint-WP/Involvement.php:3665
msgid "Involvement in %s"
msgstr "Participaciones en %s"
@@ -1710,13 +1710,13 @@ msgctxt "Event Status is not a recognized value."
msgid "Unknown"
msgstr "desconocido"
-#: src/TouchPoint-WP/Involvement.php:136
+#: src/TouchPoint-WP/Involvement.php:137
msgid "Creating an Involvement object from an object without a post_id is not yet supported."
msgstr "Aún no se admite la creación de un objeto de participación a partir de un objeto sin post_id."
#. translators: "Mon All Day" or "Sundays All Day"
-#: src/TouchPoint-WP/Involvement.php:994
-#: src/TouchPoint-WP/Involvement.php:1017
+#: src/TouchPoint-WP/Involvement.php:999
+#: src/TouchPoint-WP/Involvement.php:1022
msgid "%1$s All Day"
msgstr "todo el dia los %1$s"
@@ -1781,7 +1781,7 @@ msgid "%1$s, %2$s"
msgstr "%1$s %2$s"
#. Translators: %s is the plural name of the of the Meetings, such as "Events".
-#: src/TouchPoint-WP/CalendarGrid.php:252
+#: src/TouchPoint-WP/CalendarGrid.php:272
msgid "There are no %s published for this month."
msgstr "No hay %s publicados para este mes."
@@ -1834,7 +1834,7 @@ msgstr "Código de Residente"
msgid "Campus"
msgstr "Campus"
-#: src/TouchPoint-WP/Involvement.php:1018
+#: src/TouchPoint-WP/Involvement.php:1023
msgid "All Day"
msgstr "todo el dia"
diff --git a/i18n/TouchPoint-WP.pot b/i18n/TouchPoint-WP.pot
index ffa5bb98..e28dbddf 100644
--- a/i18n/TouchPoint-WP.pot
+++ b/i18n/TouchPoint-WP.pot
@@ -2,14 +2,14 @@
# This file is distributed under the AGPLv3+.
msgid ""
msgstr ""
-"Project-Id-Version: TouchPoint WP 0.0.92\n"
+"Project-Id-Version: TouchPoint WP 0.0.93\n"
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/TouchPoint-WP\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"POT-Creation-Date: 2024-09-12T20:51:39+00:00\n"
+"POT-Creation-Date: 2024-10-10T01:55:33+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"X-Generator: WP-CLI 2.11.0\n"
"X-Domain: TouchPoint-WP\n"
@@ -170,13 +170,13 @@ msgid "Gender"
msgstr ""
#: src/templates/admin/invKoForm.php:213
-#: src/TouchPoint-WP/Involvement.php:1845
+#: src/TouchPoint-WP/Involvement.php:1854
#: src/TouchPoint-WP/Taxonomies.php:744
msgid "Weekday"
msgstr ""
#: src/templates/admin/invKoForm.php:217
-#: src/TouchPoint-WP/Involvement.php:1871
+#: src/TouchPoint-WP/Involvement.php:1880
#: src/TouchPoint-WP/Taxonomies.php:802
msgid "Time of Day"
msgstr ""
@@ -271,7 +271,7 @@ msgstr ""
#. translators: %s will be the plural post type (e.g. Small Groups)
#: src/templates/parts/involvement-list-none.php:16
-#: src/TouchPoint-WP/Involvement.php:2092
+#: src/TouchPoint-WP/Involvement.php:2101
msgid "No %s Found."
msgstr ""
@@ -282,7 +282,7 @@ msgstr ""
#. translators: number of miles
#: src/templates/parts/involvement-nearby-list.php:10
-#: src/TouchPoint-WP/Involvement.php:3568
+#: src/TouchPoint-WP/Involvement.php:3577
msgctxt "miles. Unit is appended to a number. %2.1f is the number, so %2.1fmi looks like '12.3mi'"
msgid "%2.1fmi"
msgstr ""
@@ -305,12 +305,12 @@ msgid "Session could not be validated."
msgstr ""
#. Translators: %s is the singular name of the of a Meeting, such as "Event".
-#: src/TouchPoint-WP/CalendarGrid.php:185
+#: src/TouchPoint-WP/CalendarGrid.php:189
msgid "%s is cancelled."
msgstr ""
#. Translators: %s is the plural name of the of the Meetings, such as "Events".
-#: src/TouchPoint-WP/CalendarGrid.php:252
+#: src/TouchPoint-WP/CalendarGrid.php:272
msgid "There are no %s published for this month."
msgstr ""
@@ -323,206 +323,206 @@ msgstr ""
msgid "Multi-Day"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:136
+#: src/TouchPoint-WP/Involvement.php:137
msgid "Creating an Involvement object from an object without a post_id is not yet supported."
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:495
+#: src/TouchPoint-WP/Involvement.php:496
msgid "Currently Full"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:500
+#: src/TouchPoint-WP/Involvement.php:501
msgid "Currently Closed"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:507
+#: src/TouchPoint-WP/Involvement.php:508
msgid "Registration Not Open Yet"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:513
+#: src/TouchPoint-WP/Involvement.php:514
msgid "Registration Closed"
msgstr ""
#. translators: %1$s is the date(s), %2$s is the time(s).
#. Translators: %1$s is the start date, %2$s is the start time.
-#: src/TouchPoint-WP/Involvement.php:991
-#: src/TouchPoint-WP/Involvement.php:1023
-#: src/TouchPoint-WP/Involvement.php:1112
-#: src/TouchPoint-WP/Involvement.php:1136
+#: src/TouchPoint-WP/Involvement.php:996
+#: src/TouchPoint-WP/Involvement.php:1028
+#: src/TouchPoint-WP/Involvement.php:1121
+#: src/TouchPoint-WP/Involvement.php:1145
#: src/TouchPoint-WP/Utilities/DateFormats.php:283
#: src/TouchPoint-WP/Utilities/DateFormats.php:347
msgid "%1$s at %2$s"
msgstr ""
#. translators: "Mon All Day" or "Sundays All Day"
-#: src/TouchPoint-WP/Involvement.php:994
-#: src/TouchPoint-WP/Involvement.php:1017
+#: src/TouchPoint-WP/Involvement.php:999
+#: src/TouchPoint-WP/Involvement.php:1022
msgid "%1$s All Day"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1018
+#: src/TouchPoint-WP/Involvement.php:1023
msgid "All Day"
msgstr ""
#. translators: {start date} through {end date} e.g. February 14 through August 12
-#: src/TouchPoint-WP/Involvement.php:1032
+#: src/TouchPoint-WP/Involvement.php:1037
msgid "%1$s through %2$s"
msgstr ""
#. translators: {schedule}, {start date} through {end date} e.g. Sundays at 11am, February 14 through August 12
-#: src/TouchPoint-WP/Involvement.php:1041
+#: src/TouchPoint-WP/Involvement.php:1046
msgid "%1$s, %2$s through %3$s"
msgstr ""
#. translators: Starts {start date} e.g. Starts September 15
-#: src/TouchPoint-WP/Involvement.php:1050
+#: src/TouchPoint-WP/Involvement.php:1055
msgid "Starts %1$s"
msgstr ""
#. translators: {schedule}, starting {start date} e.g. Sundays at 11am, starting February 14
-#: src/TouchPoint-WP/Involvement.php:1058
+#: src/TouchPoint-WP/Involvement.php:1063
msgid "%1$s, starting %2$s"
msgstr ""
#. translators: Through {end date} e.g. Through September 15
-#: src/TouchPoint-WP/Involvement.php:1066
+#: src/TouchPoint-WP/Involvement.php:1071
msgid "Through %1$s"
msgstr ""
#. translators: {schedule}, through {end date} e.g. Sundays at 11am, through February 14
-#: src/TouchPoint-WP/Involvement.php:1074
+#: src/TouchPoint-WP/Involvement.php:1079
msgid "%1$s, through %2$s"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1720
+#: src/TouchPoint-WP/Involvement.php:1729
#: src/TouchPoint-WP/Partner.php:814
msgid "Any"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1777
+#: src/TouchPoint-WP/Involvement.php:1786
msgid "Genders"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1820
+#: src/TouchPoint-WP/Involvement.php:1829
msgid "Language"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1893
+#: src/TouchPoint-WP/Involvement.php:1902
#: src/TouchPoint-WP/Taxonomies.php:863
msgid "Marital Status"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1894
+#: src/TouchPoint-WP/Involvement.php:1903
msgctxt "Marital status for a group of people"
msgid "Mostly Single"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1895
+#: src/TouchPoint-WP/Involvement.php:1904
msgctxt "Marital status for a group of people"
msgid "Mostly Married"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1906
+#: src/TouchPoint-WP/Involvement.php:1915
msgid "Age"
msgstr ""
#. translators: %s is for the user-provided term for the items on the map (e.g. Small Group or Partner)
-#: src/TouchPoint-WP/Involvement.php:1928
+#: src/TouchPoint-WP/Involvement.php:1937
#: src/TouchPoint-WP/Partner.php:838
msgid "The %s listed are only those shown on the map."
msgstr ""
#. translators: %s is the link to "reset the map"
-#: src/TouchPoint-WP/Involvement.php:1936
+#: src/TouchPoint-WP/Involvement.php:1945
#: src/TouchPoint-WP/Partner.php:854
msgid "Zoom out or %s to see more."
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1939
+#: src/TouchPoint-WP/Involvement.php:1948
#: src/TouchPoint-WP/Partner.php:857
msgctxt "Zoom out or reset the map to see more."
msgid "reset the map"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:2033
+#: src/TouchPoint-WP/Involvement.php:2042
msgid "This involvement type doesn't exist."
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:2043
+#: src/TouchPoint-WP/Involvement.php:2052
msgid "This involvement type doesn't have geographic locations enabled."
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:2062
+#: src/TouchPoint-WP/Involvement.php:2071
msgid "Could not locate."
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3547
+#: src/TouchPoint-WP/Involvement.php:3556
msgid "Men Only"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3550
+#: src/TouchPoint-WP/Involvement.php:3559
msgid "Women Only"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3627
+#: src/TouchPoint-WP/Involvement.php:3636
msgid "Contact Leaders"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3644
+#: src/TouchPoint-WP/Involvement.php:3653
#: src/TouchPoint-WP/Partner.php:1318
msgid "Show on Map"
msgstr ""
#. Translators: %s is the system name. "TouchPoint" by default.
-#: src/TouchPoint-WP/Involvement.php:3656
+#: src/TouchPoint-WP/Involvement.php:3665
msgid "Involvement in %s"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3696
-#: src/TouchPoint-WP/Involvement.php:3738
+#: src/TouchPoint-WP/Involvement.php:3705
+#: src/TouchPoint-WP/Involvement.php:3747
msgid "Register"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3701
+#: src/TouchPoint-WP/Involvement.php:3710
msgid "Create Account"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3705
+#: src/TouchPoint-WP/Involvement.php:3714
msgid "Schedule"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3710
+#: src/TouchPoint-WP/Involvement.php:3719
msgid "Give"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3713
+#: src/TouchPoint-WP/Involvement.php:3722
msgid "Manage Subscriptions"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3716
+#: src/TouchPoint-WP/Involvement.php:3725
msgid "Record Attendance"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3719
+#: src/TouchPoint-WP/Involvement.php:3728
msgid "Get Tickets"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3729
+#: src/TouchPoint-WP/Involvement.php:3738
#: assets/js/base-defer.js:1001
msgid "Join"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3834
-#: src/TouchPoint-WP/Involvement.php:3931
+#: src/TouchPoint-WP/Involvement.php:3843
+#: src/TouchPoint-WP/Involvement.php:3940
msgid "Invalid Post Type."
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3908
+#: src/TouchPoint-WP/Involvement.php:3917
#: src/TouchPoint-WP/Person.php:1844
msgid "Contact Blocked for Spam."
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3918
+#: src/TouchPoint-WP/Involvement.php:3927
#: src/TouchPoint-WP/Person.php:1827
msgid "Contact Prohibited."
msgstr ""
@@ -633,7 +633,7 @@ msgid "TouchPoint Report"
msgstr ""
#. translators: Last updated date/time for a report. %1$s is the date. %2$s is the time.
-#: src/TouchPoint-WP/Report.php:397
+#: src/TouchPoint-WP/Report.php:405
msgid "Updated on %1$s at %2$s"
msgstr ""
diff --git a/package.json b/package.json
index 0bdc17f4..a9c78e7c 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "touchpoint-wp",
- "version": "0.0.92",
+ "version": "0.0.93",
"description": "A WordPress Plugin for integrating with TouchPoint Church Management Software.",
"directories": {
"doc": "docs"
diff --git a/src/TouchPoint-WP/TouchPointWP.php b/src/TouchPoint-WP/TouchPointWP.php
index ebd7e4f3..fb6312b6 100644
--- a/src/TouchPoint-WP/TouchPointWP.php
+++ b/src/TouchPoint-WP/TouchPointWP.php
@@ -33,7 +33,7 @@ class TouchPointWP
/**
* Version number
*/
- public const VERSION = "0.0.92";
+ public const VERSION = "0.0.93";
/**
* The Token
diff --git a/src/python/WebApi.py b/src/python/WebApi.py
index 1a481e81..7059917e 100644
--- a/src/python/WebApi.py
+++ b/src/python/WebApi.py
@@ -5,7 +5,7 @@
import linecache
import sys
-VERSION = "0.0.92"
+VERSION = "0.0.93"
sgContactEvName = "Contact"
diff --git a/touchpoint-wp.php b/touchpoint-wp.php
index d3fa636e..ce5877c4 100644
--- a/touchpoint-wp.php
+++ b/touchpoint-wp.php
@@ -14,7 +14,7 @@
Plugin URI: https://github.com/tenthpres/touchpoint-wp
Update URI: https://github.com/tenthpres/touchpoint-wp
Description: A WordPress Plugin for integrating with TouchPoint Church Management Software.
-Version: 0.0.92
+Version: 0.0.93
Author: James K
Author URI: https://github.com/jkrrv
License: AGPLv3+
From 28fb01f4abf83fc5961ef161e1d2f7a6c6c405a2 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Mon, 4 Nov 2024 13:54:17 -0500
Subject: [PATCH 196/423] Adding ipapi key option, cleanup functions and
related items. Also, version bump.
---
composer.json | 2 +-
docs | 2 +-
package.json | 2 +-
src/TouchPoint-WP/Involvement.php | 2 +-
src/TouchPoint-WP/TouchPointWP.php | 26 +++++++++++++++++++--
src/TouchPoint-WP/TouchPointWP_Settings.php | 17 ++++++++++++++
src/python/WebApi.py | 2 +-
touchpoint-wp.php | 2 +-
8 files changed, 47 insertions(+), 8 deletions(-)
diff --git a/composer.json b/composer.json
index d85ebd44..42c30436 100644
--- a/composer.json
+++ b/composer.json
@@ -3,7 +3,7 @@
"description": "A WordPress Plugin for integrating with TouchPoint Church Management Software.",
"license": "AGPL-3.0-or-later",
"type": "wordpress-plugin",
- "version": "0.0.93",
+ "version": "0.0.94",
"keywords": [
"wordpress",
"wp",
diff --git a/docs b/docs
index 0d854550..bd2afd5a 160000
--- a/docs
+++ b/docs
@@ -1 +1 @@
-Subproject commit 0d854550b75f6f46b4a1666dd812358ec4381ca4
+Subproject commit bd2afd5ab03a5ee5ae0a77754f96516c3e211835
diff --git a/package.json b/package.json
index a9c78e7c..06a92658 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "touchpoint-wp",
- "version": "0.0.93",
+ "version": "0.0.94",
"description": "A WordPress Plugin for integrating with TouchPoint Church Management Software.",
"directories": {
"doc": "docs"
diff --git a/src/TouchPoint-WP/Involvement.php b/src/TouchPoint-WP/Involvement.php
index 59b4c49f..c5e6605b 100644
--- a/src/TouchPoint-WP/Involvement.php
+++ b/src/TouchPoint-WP/Involvement.php
@@ -2030,7 +2030,7 @@ public static function ajaxNearby(): void
$type = $_GET['type'] ?? "";
$lat = $_GET['lat'] ?? null;
$lng = $_GET['lng'] ?? null;
- $limit = $_GET['limit'] ?? null;
+ $limit = $_GET['limit'] ?? 10;
$settings = self::getSettingsForPostType($type);
diff --git a/src/TouchPoint-WP/TouchPointWP.php b/src/TouchPoint-WP/TouchPointWP.php
index fb6312b6..929270d4 100644
--- a/src/TouchPoint-WP/TouchPointWP.php
+++ b/src/TouchPoint-WP/TouchPointWP.php
@@ -5,6 +5,7 @@
namespace tp\TouchPointWP;
+use JsonException;
use stdClass;
use tp\TouchPointWP\Utilities\Cleanup;
use tp\TouchPointWP\Utilities\Http;
@@ -33,7 +34,7 @@ class TouchPointWP
/**
* Version number
*/
- public const VERSION = "0.0.93";
+ public const VERSION = "0.0.94";
/**
* The Token
@@ -84,6 +85,8 @@ class TouchPointWP
*/
public const CACHE_TTL = 8;
+ public const TTL_IP_GEO = 5; // years
+
/**
* Caching
*/
@@ -1169,10 +1172,29 @@ protected function getIpData(string $ip, bool $useApi = true)
return false;
}
- $return = self::instance()->extGet("https://ipapi.co/" . $ip . "/json/"); // Exceptions thrown here.
+ $ipapi_key = $this->settings->ipapi_key;
+ if ($ipapi_key !== "") {
+ $ipapi_key = [
+ 'key' => $ipapi_key
+ ];
+ } else {
+ $ipapi_key = [];
+ }
+
+ $return = self::instance()->extGet("https://ipapi.co/" . $ip . "/json/", $ipapi_key); // Exceptions thrown here.
$return = $return['body'];
+ if (str_contains($return, 'Too many rapid requests')) {
+ throw new TouchPointWP_Exception("IP Geolocation Error: Too many requests", 178001);
+ }
+
+ try {
+ json_decode($return, flags: JSON_THROW_ON_ERROR);
+ } catch (JsonException) {
+ throw new TouchPointWP_Exception("IP Geolocation Error: Invalid JSON", 178001);
+ }
+
if (property_exists($return, 'error')) {
throw new TouchPointWP_Exception("IP Geolocation Error: " . $return->error . " " . $return->reason ?? "", 178001);
}
diff --git a/src/TouchPoint-WP/TouchPointWP_Settings.php b/src/TouchPoint-WP/TouchPointWP_Settings.php
index 1fc438da..b57b1eae 100644
--- a/src/TouchPoint-WP/TouchPointWP_Settings.php
+++ b/src/TouchPoint-WP/TouchPointWP_Settings.php
@@ -31,6 +31,7 @@
* @property-read string api_script_name The name of the script loaded into TouchPoint for API Interfacing
* @property-read string google_maps_api_key Google Maps API Key for embedded maps
* @property-read string google_geo_api_key Google Maps API Key for geocoding
+ * @property-read string ipapi_key The API key for ipapi.co for geolocation.
*
* @property-read array people_contact_keywords Keywords to use for the generic Contact person button.
* @property-read string people_ev_bio Extra Value field that should be imported as a User bio.
@@ -426,6 +427,17 @@ private function settingsFields(bool|string $includeDetail = false): array
'default' => '',
'placeholder' => '',
],
+ [
+ 'id' => 'ipapi_key',
+ 'label' => __('ipapi.co API Key', 'TouchPoint-WP'),
+ 'description' => __(
+ 'Optional. Allows for geolocation of user IP addresses. This generally will work without a key, but may be rate limited.',
+ 'TouchPoint-WP'
+ ),
+ 'type' => 'text',
+ 'default' => '',
+ 'placeholder' => '',
+ ],
],
];
@@ -1587,6 +1599,11 @@ public function migrate(): void
// 0.0.90 - Remove an option that was only briefly used.
delete_option(TouchPointWP::SETTINGS_PREFIX . 'mc_cron_last_run');
+ // 0.0.94 - Cleanup old IP Geo data
+ $tableName = $wpdb->base_prefix . TouchPointWP::TABLE_IP_GEO;
+ $years = TouchPointWP::TTL_IP_GEO;
+ $wpdb->query("DELETE FROM $tableName WHERE `updatedDT` < NOW() - INTERVAL $years YEAR OR `data` LIKE 'Too many rapid requests.%';");
+
// Update version string
$this->set('version', TouchPointWP::VERSION);
}
diff --git a/src/python/WebApi.py b/src/python/WebApi.py
index 7059917e..b281fa4d 100644
--- a/src/python/WebApi.py
+++ b/src/python/WebApi.py
@@ -5,7 +5,7 @@
import linecache
import sys
-VERSION = "0.0.93"
+VERSION = "0.0.94"
sgContactEvName = "Contact"
diff --git a/touchpoint-wp.php b/touchpoint-wp.php
index ce5877c4..081460b0 100644
--- a/touchpoint-wp.php
+++ b/touchpoint-wp.php
@@ -14,7 +14,7 @@
Plugin URI: https://github.com/tenthpres/touchpoint-wp
Update URI: https://github.com/tenthpres/touchpoint-wp
Description: A WordPress Plugin for integrating with TouchPoint Church Management Software.
-Version: 0.0.93
+Version: 0.0.94
Author: James K
Author URI: https://github.com/jkrrv
License: AGPLv3+
From 8864173963222eff9e7c22a7e17fbdf39fccf24d Mon Sep 17 00:00:00 2001
From: "James K."
Date: Sat, 16 Nov 2024 09:34:13 -0500
Subject: [PATCH 197/423] WordPress tested version bump
---
touchpoint-wp.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/touchpoint-wp.php b/touchpoint-wp.php
index 081460b0..785860a0 100644
--- a/touchpoint-wp.php
+++ b/touchpoint-wp.php
@@ -20,7 +20,7 @@
License: AGPLv3+
Text Domain: TouchPoint-WP
Requires at least: 6.0
-Tested up to: 6.5
+Tested up to: 6.7
Requires PHP: 8.0
Release Asset: true
*/
From 0499005c3151ef0b1b7fa8351ff848ed5c1122b4 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Sat, 16 Nov 2024 09:49:15 -0500
Subject: [PATCH 198/423] Fix cal grid incrementing issue. Closes #207 again.
---
src/TouchPoint-WP/CalendarGrid.php | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/src/TouchPoint-WP/CalendarGrid.php b/src/TouchPoint-WP/CalendarGrid.php
index fd2e27cc..ff2aabac 100644
--- a/src/TouchPoint-WP/CalendarGrid.php
+++ b/src/TouchPoint-WP/CalendarGrid.php
@@ -256,9 +256,6 @@ public function __construct(WP_Query $q, int $month = null, int $year = null)
$isMonthBefore = false;
} else {
$isMonthAfter = true;
- }
- } else {
- if (!$isMonthAfter && $day > 27) {
$lastDayOfMonth = $d;
}
}
@@ -273,7 +270,7 @@ public function __construct(WP_Query $q, int $month = null, int $year = null)
$this->html = "$message
";
}
- $this->next = DateTimeImmutable::createFromMutable($lastDayOfMonth->add($aDay)->setTimezone($tz));
+ $this->next = DateTimeImmutable::createFromMutable($lastDayOfMonth);
try {
$this->prev = $firstDayOfMonth->sub($aDay)->setTimezone($tz);
} catch (Exception) {
From 631c7bbccd18829cfa7337df5e68de2d6c448a58 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Sat, 16 Nov 2024 10:11:30 -0500
Subject: [PATCH 199/423] Only show some registration buttons for meetings if
they're relevant in time. Closes #205
---
src/TouchPoint-WP/Involvement.php | 26 ++++++++++++++++++++++----
src/TouchPoint-WP/Meeting.php | 2 +-
2 files changed, 23 insertions(+), 5 deletions(-)
diff --git a/src/TouchPoint-WP/Involvement.php b/src/TouchPoint-WP/Involvement.php
index c5e6605b..f910c04b 100644
--- a/src/TouchPoint-WP/Involvement.php
+++ b/src/TouchPoint-WP/Involvement.php
@@ -3688,13 +3688,14 @@ public function getActionButtons(string $context = null, string $btnClass = "",
/**
* Get the HTML for the register button. Labels depend on several settings within TouchPoint.
*
- * @param string $btnClass Class names
- * @param bool $absoluteLinks Whether only absolute links should be provided that can be used in emails, apps,
+ * @param string $btnClass Class names
+ * @param bool $absoluteLinks Whether only absolute links should be provided that can be used in emails, apps,
* etc.
+ * @param ?Meeting $forMeeting If these buttons are for a meeting, pass the meeting
*
* @return ?string HTML for the registration button, whatever that should be. Null if nothing to return.
*/
- public function getRegisterButton(string $btnClass, bool $absoluteLinks = false): ?string
+ public function getRegisterButton(string $btnClass, bool $absoluteLinks = false, ?Meeting $forMeeting = null): ?string
{
if ($btnClass !== "") {
$btnClass = " class=\"$btnClass\"";
@@ -3703,7 +3704,8 @@ public function getRegisterButton(string $btnClass, bool $absoluteLinks = false)
switch ($this->getRegistrationType()) {
case RegistrationType::FORM:
$text = __('Register', 'TouchPoint-WP');
- switch (get_post_meta($this->post_id, TouchPointWP::SETTINGS_PREFIX . "regTypeId", true)) {
+ $regTypeId = get_post_meta($this->post_id, TouchPointWP::SETTINGS_PREFIX . "regTypeId", true);
+ switch ($regTypeId) {
case 1: // Join Involvement (skip other options because this option is common)
break;
case 5: // Create Account
@@ -3728,6 +3730,22 @@ public function getRegisterButton(string $btnClass, bool $absoluteLinks = false)
$text = __('Get Tickets', 'TouchPoint-WP');
break;
}
+
+ // If this is a meeting with record attendance type, don't show unless the meeting is within an hour.
+ if ($forMeeting !== null && $regTypeId == 18) {
+ if ($forMeeting->startDt > Utilities::dateTimeNow()->modify('+1 hour') ||
+ ($forMeeting->endDt ?? $forMeeting->startDt) < Utilities::dateTimeNow()->modify('-1 hour')) {
+ return null;
+ }
+ }
+
+ // If this is a meeting with tickets, don't show unless the meeting is in the present or future.
+ if ($forMeeting !== null && $regTypeId == 21) {
+ if (($forMeeting->endDt ?? $forMeeting->startDt->modify('+1 hour')) < Utilities::dateTimeNow()) {
+ return null;
+ }
+ }
+
$link = TouchPointWP::instance()->host() . "/OnlineReg/" . $this->invId;
if (!$absoluteLinks) {
TouchPointWP::enqueueActionsStyle('inv-register');
diff --git a/src/TouchPoint-WP/Meeting.php b/src/TouchPoint-WP/Meeting.php
index 0d1ab801..785a2532 100644
--- a/src/TouchPoint-WP/Meeting.php
+++ b/src/TouchPoint-WP/Meeting.php
@@ -476,7 +476,7 @@ public function getActionButtons(string $context = null, string $btnClass = "",
if ($this->status() !== self::STATUS_CANCELLED) {
if (($this->endDt ?? $this->startDt) > Utilities::dateTimeNow()) {
- $ret['register'] = $inv->getRegisterButton($btnClass, $absoluteLinks);
+ $ret['register'] = $inv->getRegisterButton($btnClass, $absoluteLinks, $this);
}
if ($inv->getRegistrationType() === RegistrationType::RSVP) {
From 8ea9692814e906d9dedcd15aa4021ce355032566 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Sat, 16 Nov 2024 10:16:10 -0500
Subject: [PATCH 200/423] Improving a label.
---
src/TouchPoint-WP/Meeting.php | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/TouchPoint-WP/Meeting.php b/src/TouchPoint-WP/Meeting.php
index 785a2532..19567a81 100644
--- a/src/TouchPoint-WP/Meeting.php
+++ b/src/TouchPoint-WP/Meeting.php
@@ -748,7 +748,8 @@ public function getRsvpButton(string $btnClass = ""): string
}
/**
- * Get a link to RSVP for the meeting that can be used in emails, apps, or other contexts.
+ * Get a link to RSVP for the meeting that can be used in emails, apps, or other contexts. This is a link to the
+ * RSVP function in WordPress, not an RSVP magic link used in TouchPoint emails.
*
* @param string $btnClass
*
From 5de3f0fea0558d63d196d972ea37f833524c75ba Mon Sep 17 00:00:00 2001
From: "James K."
Date: Sat, 16 Nov 2024 12:42:34 -0500
Subject: [PATCH 201/423] docs update
---
docs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs b/docs
index bd2afd5a..5a910bf2 160000
--- a/docs
+++ b/docs
@@ -1 +1 @@
-Subproject commit bd2afd5ab03a5ee5ae0a77754f96516c3e211835
+Subproject commit 5a910bf25a4c0f33996ed097f8f3bc5d09a9ea3a
From d4202d1181bb095aa3c80ffab867c8ec937cc86c Mon Sep 17 00:00:00 2001
From: "James K."
Date: Sat, 16 Nov 2024 14:06:24 -0500
Subject: [PATCH 202/423] Rename process in build yml
---
.github/workflows/releases.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/releases.yml b/.github/workflows/releases.yml
index 5d75a89c..67751958 100644
--- a/.github/workflows/releases.yml
+++ b/.github/workflows/releases.yml
@@ -6,7 +6,7 @@ on:
- 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10
jobs:
- build:
+ release:
name: Create Release
runs-on: ubuntu-latest
steps:
From 97e748bc68e497eda3bd39c41daefde4ed457fd8 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Mon, 18 Nov 2024 08:52:11 -0500
Subject: [PATCH 203/423] Removing noreturn that probably never should have
been committed.
---
src/TouchPoint-WP/Involvement.php | 2 --
1 file changed, 2 deletions(-)
diff --git a/src/TouchPoint-WP/Involvement.php b/src/TouchPoint-WP/Involvement.php
index f910c04b..c6c33522 100644
--- a/src/TouchPoint-WP/Involvement.php
+++ b/src/TouchPoint-WP/Involvement.php
@@ -24,7 +24,6 @@
use DateTimeImmutable;
use DateTimeZone;
use Exception;
-use JetBrains\PhpStorm\NoReturn;
use JsonSerializable;
use stdClass;
use tp\TouchPointWP\Utilities\DateFormats;
@@ -2022,7 +2021,6 @@ public static function api(array $uri): bool
/**
* Handles the API call to get nearby involvements (probably small groups)
*/
- #[NoReturn]
public static function ajaxNearby(): void
{
header('Content-Type: application/json');
From 26a61c8616d8a079a5b280c8c2612e6161a43989 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Mon, 18 Nov 2024 18:13:47 -0500
Subject: [PATCH 204/423] Starting #209.
---
src/TouchPoint-WP/Auth.php | 6 +
src/TouchPoint-WP/Involvement.php | 10 +
src/TouchPoint-WP/Meeting.php | 5 +
src/TouchPoint-WP/Person.php | 5 +
src/TouchPoint-WP/Stats.php | 327 +++++++++++++++++++++++++++++
src/TouchPoint-WP/TouchPointWP.php | 47 +++++
6 files changed, 400 insertions(+)
create mode 100644 src/TouchPoint-WP/Stats.php
diff --git a/src/TouchPoint-WP/Auth.php b/src/TouchPoint-WP/Auth.php
index 9ba3167c..03433d54 100644
--- a/src/TouchPoint-WP/Auth.php
+++ b/src/TouchPoint-WP/Auth.php
@@ -5,6 +5,7 @@
namespace tp\TouchPointWP;
+use Exception;
use tp\TouchPointWP\Utilities\Http;
use tp\TouchPointWP\Utilities\PersonQuery;
use tp\TouchPointWP\Utilities\Session;
@@ -442,6 +443,11 @@ public static function authenticate($user, $username, $password)
$user = $p->toNewWpUser();
+ try {
+ $stats = Stats::instance();
+ $stats->userAuths += 1;
+ } catch (Exception) {}
+
// Preload Ident people for potential use with InformalAuth. Skip if family is already loaded.
if ( ! in_array($p->familyId, $s->primaryFam ?? [])) {
Person::ident((object)[
diff --git a/src/TouchPoint-WP/Involvement.php b/src/TouchPoint-WP/Involvement.php
index c6c33522..3fa8eadd 100644
--- a/src/TouchPoint-WP/Involvement.php
+++ b/src/TouchPoint-WP/Involvement.php
@@ -3869,6 +3869,11 @@ private static function ajaxInvJoin(): void
exit;
}
+ try {
+ $stats = Stats::instance();
+ $stats->involvementJoins += count($data->success);
+ } catch (Exception) {}
+
echo json_encode(['success' => $data->success]);
exit;
}
@@ -3967,6 +3972,11 @@ private static function ajaxContact(): void
exit;
}
+ try {
+ $stats = Stats::instance();
+ $stats->involvementContacts += count($data->success);
+ } catch (Exception) {}
+
echo json_encode(['success' => $data->success]);
exit;
}
diff --git a/src/TouchPoint-WP/Meeting.php b/src/TouchPoint-WP/Meeting.php
index 19567a81..669b7d18 100644
--- a/src/TouchPoint-WP/Meeting.php
+++ b/src/TouchPoint-WP/Meeting.php
@@ -720,6 +720,11 @@ private static function ajaxSubmitRsvps(): void
exit;
}
+ try {
+ $stats = Stats::instance();
+ $stats->rsvps += count($data->success);
+ } catch (Exception) {}
+
echo json_encode(['success' => $data->success]);
exit;
}
diff --git a/src/TouchPoint-WP/Person.php b/src/TouchPoint-WP/Person.php
index 0eaf1b74..7b0dfbb2 100644
--- a/src/TouchPoint-WP/Person.php
+++ b/src/TouchPoint-WP/Person.php
@@ -1632,6 +1632,11 @@ public static function ident($inputData): array
$s = Session::instance();
+ try {
+ $stats = Stats::instance();
+ $stats->softAuths += count($people);
+ } catch (Exception) {}
+
$ret = [];
$primaryFam = $s->primaryFam ?? [];
$secondaryFam = $s->secondaryFam ?? [];
diff --git a/src/TouchPoint-WP/Stats.php b/src/TouchPoint-WP/Stats.php
new file mode 100644
index 00000000..32ba1187
--- /dev/null
+++ b/src/TouchPoint-WP/Stats.php
@@ -0,0 +1,327 @@
+ $value) {
+ if (property_exists($this, $key)) {
+ $this->$key = $value;
+ }
+ }
+ }
+ }
+
+ if (empty($this->installId) || empty($this->privateKey)) {
+ $this->privateKey = Utilities::createGuid();
+ $this->installId = Utilities::createGuid();
+ $this->_dirty = true;
+ }
+
+ $sid = get_option('tp_siteId', null);
+ if (empty($sid)) {
+ $sid = Utilities::createGuid();
+ update_option('tp_siteId', $sid);
+ }
+ $this->siteId = $sid;
+
+ $this->updateDb();
+ }
+
+ /**
+ * Attempt to save on destruct.
+ */
+ protected function __destruct()
+ {
+ try {
+ $this->updateDb();
+ } catch (\Exception $e) {
+ // ignore
+ }
+ }
+
+ /**
+ * Save the stats to the database.
+ *
+ * @return bool true on success (or if an update wasn't needed), false on failure.
+ */
+ public function updateDb(): bool
+ {
+ if ($this->_dirty) {
+ $d = $this->jsonSerialize();
+ unset($d['siteId']);
+ $r = update_option('tp_wp_stats', json_encode($d));
+ if ($r) {
+ $this->_dirty = false;
+ }
+ return $r;
+ }
+ return true;
+ }
+
+ /**
+ * Setter. Allows particular statistics to be set.
+ *
+ * @param $name
+ * @param $value
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public function __set($name, $value)
+ {
+ if (in_array($name, ['privateKey', 'siteId', 'installId'])) {
+ throw new InvalidArgumentException("Cannot set $name directly.");
+ }
+
+ if (property_exists($this, $name)) {
+ if ($this->$name !== $value) {
+ $this->$name = $value;
+ $this->_dirty = true;
+ }
+ }
+ }
+
+ /**
+ * @param string $name
+ *
+ * @return void
+ *
+ * @throws InvalidArgumentException
+ */
+ public function __get(string $name)
+ {
+ if (property_exists($this, $name) && !str_starts_with($name, '_')) {
+ return $this->$name;
+ }
+ }
+
+ /**
+ * Assemble the information that's submitted.
+ *
+ * @return array
+ */
+ public function getStatsForSubmission(): array
+ {
+ $data = $this->jsonSerialize();
+
+ $data['site'] = get_site_url();
+ $data['plugin'] = 'TouchPointWP';
+ $data['version'] = TouchPointWP::VERSION;
+ $data['php'] = phpversion();
+ $data['wp'] = get_bloginfo('version');
+ $data['wpLocale'] = get_locale();
+ $data['wpTimezone'] = get_option('timezone_string');
+ $data['adminEmail'] = get_option('admin_email');
+ $data['siteName'] = get_bloginfo('name');
+ $data['installId'] = $this->installId;
+ $data['privateKey'] = $this->privateKey;
+ $data['endpoint'] = TouchPointWP::API_ENDPOINT;
+
+ return $data;
+ }
+
+ /**
+ * Submit stats to Tenth.
+ *
+ * @return void
+ */
+ protected function submitStats(): void
+ {
+ $this->updateQueriedStats();
+
+ $data = $this->getStatsForSubmission();
+
+ wp_remote_post(self::SUBMISSION_ENDPOINT, [
+ 'body' => $data,
+ 'timeout' => 10,
+ 'blocking' => false,
+ ]);
+ }
+
+ /**
+ * Assemble the object into a format that can be serialized to JSON. Only includes
+ * the parameters that are part of this class, not those that are loaded from the database separately,
+ * such as version numbers.
+ *
+ * @inheritDoc
+ */
+ public function jsonSerialize()
+ {
+ $r = [];
+
+ // all properties that don't start with an underscore
+ foreach (get_object_vars($this) as $key => $value) {
+ if ( ! str_starts_with($key, '_')) {
+ $r[$key] = $value;
+ }
+ }
+
+ return $r;
+ }
+
+ /**
+ * Update the stats that are determined from queries.
+ *
+ * @return void
+ */
+ protected function updateQueriedStats(): void
+ {
+ global $wpdb;
+
+ $this->involvementPosts = $wpdb->get_var("SELECT COUNT(DISTINCT meta_value) as c FROM $wpdb->postmeta WHERE meta_key = 'tp_invId'") ?? -1;
+ $this->meetings = $wpdb->get_var("SELECT COUNT(DISTINCT meta_value) as c FROM $wpdb->postmeta WHERE meta_key = 'tp_mtgId'") ?? -1;
+ $this->people = $wpdb->get_var("SELECT COUNT(DISTINCT meta_value) as c FROM $wpdb->usermeta WHERE meta_key = 'tp_peopleId';") ?? -1;
+ $this->partnerPosts = $wpdb->get_var("SELECT COUNT(*) as c FROM $wpdb->posts WHERE post_type = 'tp_partner'") ?? -1;
+
+ $this->_dirty = true;
+ }
+
+ /**
+ * Get the singleton.
+ *
+ * @return Stats
+ */
+ public static function instance(): Stats
+ {
+ if (self::$instance === null) {
+ self::$instance = new self();
+ }
+ return self::$instance;
+ }
+
+ /**
+ * Handle API requests
+ *
+ * @param array $uri The request URI already parsed by parse_url()
+ *
+ * @return bool False if endpoint is not found. Should print the result.
+ */
+ public static function api(array $uri): bool
+ {
+ if (count($uri['path']) !== 3) {
+ return false;
+ }
+
+ switch (strtolower($uri['path'][2])) {
+ case "get":
+ $s = self::instance();
+ if (strtolower($_GET['key']) == strtolower($s->privateKey) ||
+ current_user_can('manage_options')) {
+ header('Content-Type: application/json');
+ $s->updateQueriedStats();
+ echo json_encode($s->getStatsForSubmission());
+ exit;
+ }
+
+ case "submit":
+ return self::handleSubmission();
+
+ }
+
+ return false;
+ }
+
+ public static function handleSubmission() {
+ if ($_SERVER['REQUEST_METHOD'] !== "POST") {
+ http_response_code(Http::METHOD_NOT_ALLOWED);
+ return false;
+ }
+
+ $data = json_decode(file_get_contents('php://input'), true);
+
+ if ($data === null) {
+ http_response_code(Http::BAD_REQUEST);
+ return false;
+ }
+
+ // validate that privateKey, installId, and siteId are all included.
+ if ( ! isset($data['privateKey']) || ! isset($data['installId']) || ! isset($data['siteId'])) {
+ http_response_code(Http::BAD_REQUEST);
+ return false;
+ }
+
+ // upsert the data into the database into the stats table.
+ global $wpdb;
+ $r = $wpdb->replace($wpdb->prefix . TouchPointWP::TABLE_STATS, $data);
+
+ if ($r === false) {
+ http_response_code(Http::SERVER_ERROR);
+ return false;
+ }
+
+ echo $r;
+ exit;
+ }
+}
\ No newline at end of file
diff --git a/src/TouchPoint-WP/TouchPointWP.php b/src/TouchPoint-WP/TouchPointWP.php
index 929270d4..44cbab1b 100644
--- a/src/TouchPoint-WP/TouchPointWP.php
+++ b/src/TouchPoint-WP/TouchPointWP.php
@@ -23,6 +23,7 @@
if ( ! TOUCHPOINT_COMPOSER_ENABLED) {
require_once "Utilities.php";
+ require_once "Stats.php";
}
@@ -51,6 +52,7 @@ class TouchPointWP
public const API_ENDPOINT_PERSON = "person";
public const API_ENDPOINT_MEETING = "mtg";
public const API_ENDPOINT_ADMIN = "admin";
+ public const API_ENDPOINT_STATS = "stats";
public const API_ENDPOINT_AUTH = "auth";
public const API_ENDPOINT_REPORT = "report";
public const API_ENDPOINT_ADMIN_SCRIPTZIP = "admin/scriptzip";
@@ -79,6 +81,7 @@ class TouchPointWP
*/
public const TABLE_PREFIX = "tp_";
public const TABLE_IP_GEO = self::TABLE_PREFIX . "ipGeo";
+ public const TABLE_STATS = self::TABLE_PREFIX . "stats";
/**
* Typical amount of time in hours for metadata to last (e.g. genders and resCodes).
@@ -493,6 +496,13 @@ public function parseRequest($continue, $wp, $extraVars): bool
}
}
+ // Stats endpoints
+ if ($reqUri['path'][1] === TouchPointWP::API_ENDPOINT_STATS) {
+ if ( ! Stats::api($reqUri)) {
+ return $continue;
+ }
+ }
+
// Cleanup endpoints
if ($reqUri['path'][1] === TouchPointWP::API_ENDPOINT_CLEANUP) {
if ( ! Cleanup::api($reqUri)) {
@@ -638,6 +648,43 @@ protected function createTables(): void
PRIMARY KEY (id)
)";
dbDelta($sql);
+
+ // Table for receiving info from other sites that use this plugin
+ if (site_url() === "https://www.tenth.org") {
+ $tableName = $wpdb->base_prefix . TouchPointWP::TABLE_STATS;
+ $sql = "CREATE TABLE $tableName (
+ intallId varchar(36) NOT NULL,
+ privateKey varchar(36) NOT NULL,
+ siteId varchar(36) NOT NULL,
+ site varchar(255) NOT NULL,
+ plugin varchar(255) NOT NULL,
+ version varchar(10) NOT NULL,
+ php varchar(10) NOT NULL,
+ wp varchar(10) NOT NULL,
+ wpLocale varchar(10) NOT NULL,
+ wpTimezone varchar(50) NOT NULL,
+ adminEmail varchar(255) NOT NULL,
+ siteName varchar(255) NOT NULL,
+ createdDT datetime DEFAULT NOW(),
+ updatedDT datetime DEFAULT NOW() ON UPDATE NOW(),
+
+ lastQueryDt datetime DEFAULT NULL,
+ lastQueryStatus int(3) DEFAULT NULL,
+
+ involvementJoins int(10) DEFAULT 0,
+ involvementContacts int(10) DEFAULT 0,
+ involvementPosts int(10) DEFAULT 0,
+ meetings int(10) DEFAULT 0,
+ rsvps int(10) DEFAULT 0,
+ people int(10) DEFAULT 0,
+ partnerPosts int(10) DEFAULT 0,
+ userAuths int(10) DEFAULT 0,
+ softAuths int(10) DEFAULT 0,
+
+ PRIMARY KEY (installId)
+ )";
+ dbDelta($sql);
+ }
}
/**
From cb3838276c430ee3fdd022d06ff3885a0fdfca0f Mon Sep 17 00:00:00 2001
From: "James K."
Date: Mon, 18 Nov 2024 23:22:37 -0500
Subject: [PATCH 205/423] Progress on #209.
---
src/TouchPoint-WP/Stats.php | 63 +++++++++++++++++++++---------
src/TouchPoint-WP/TouchPointWP.php | 19 +++++----
2 files changed, 56 insertions(+), 26 deletions(-)
diff --git a/src/TouchPoint-WP/Stats.php b/src/TouchPoint-WP/Stats.php
index 32ba1187..03dc0851 100644
--- a/src/TouchPoint-WP/Stats.php
+++ b/src/TouchPoint-WP/Stats.php
@@ -131,7 +131,7 @@ public function updateDb(): bool
/**
* Setter. Allows particular statistics to be set.
- *
+ *
* @param $name
* @param $value
*
@@ -187,7 +187,7 @@ public function getStatsForSubmission(): array
$data['siteName'] = get_bloginfo('name');
$data['installId'] = $this->installId;
$data['privateKey'] = $this->privateKey;
- $data['endpoint'] = TouchPointWP::API_ENDPOINT;
+ $data['updatedDT'] = date('Y-m-d H:i:s'); // needs to be forced or update may not happen, which would make insert fail.
return $data;
}
@@ -204,7 +204,7 @@ protected function submitStats(): void
$data = $this->getStatsForSubmission();
wp_remote_post(self::SUBMISSION_ENDPOINT, [
- 'body' => $data,
+ 'body' => ['data' => $data],
'timeout' => 10,
'blocking' => false,
]);
@@ -214,7 +214,7 @@ protected function submitStats(): void
* Assemble the object into a format that can be serialized to JSON. Only includes
* the parameters that are part of this class, not those that are loaded from the database separately,
* such as version numbers.
- *
+ *
* @inheritDoc
*/
public function jsonSerialize()
@@ -233,7 +233,7 @@ public function jsonSerialize()
/**
* Update the stats that are determined from queries.
- *
+ *
* @return void
*/
protected function updateQueriedStats(): void
@@ -274,11 +274,12 @@ public static function api(array $uri): bool
return false;
}
+ $s = self::instance();
+
switch (strtolower($uri['path'][2])) {
case "get":
- $s = self::instance();
if (strtolower($_GET['key']) == strtolower($s->privateKey) ||
- current_user_can('manage_options')) {
+ current_user_can('manage_options')) {
header('Content-Type: application/json');
$s->updateQueriedStats();
echo json_encode($s->getStatsForSubmission());
@@ -286,42 +287,66 @@ public static function api(array $uri): bool
}
case "submit":
- return self::handleSubmission();
+ if ($_SERVER['REQUEST_METHOD'] === "POST") {
+ self::handleSubmission();
+ } else {
+ $s->submitStats();
+ }
+ exit;
}
return false;
}
-
- public static function handleSubmission() {
+
+ /**
+ * Handle submissions received to this site (presumably tenth.org) from other users of the plugin.
+ *
+ * @return void
+ */
+ public static function handleSubmission(): void
+ {
+
if ($_SERVER['REQUEST_METHOD'] !== "POST") {
http_response_code(Http::METHOD_NOT_ALLOWED);
- return false;
+ echo "Only POST requests are allowed.";
+ exit;
}
- $data = json_decode(file_get_contents('php://input'), true);
+ $data = $_POST['data'] ?? null;
- if ($data === null) {
+ if (empty($data)) {
http_response_code(Http::BAD_REQUEST);
- return false;
+ echo "No data was submitted.";
+ exit;
}
// validate that privateKey, installId, and siteId are all included.
if ( ! isset($data['privateKey']) || ! isset($data['installId']) || ! isset($data['siteId'])) {
http_response_code(Http::BAD_REQUEST);
- return false;
+ echo "Keys not provided.";
+ exit;
}
- // upsert the data into the database into the stats table.
+ // remove any fields that are not part of the stats object.
+ $s = self::instance();
+ $data = array_intersect_key($data, $s->getStatsForSubmission());
+
+ // upsert the data into the database into the stats table without destructive replace function
global $wpdb;
- $r = $wpdb->replace($wpdb->prefix . TouchPointWP::TABLE_STATS, $data);
+ $r = $wpdb->update($wpdb->prefix . TouchPointWP::TABLE_STATS, $data, ['installId' => $data['installId']]);
+ if ($r < 1) {
+ $r = $wpdb->insert($wpdb->prefix . TouchPointWP::TABLE_STATS, $data);
+ }
if ($r === false) {
http_response_code(Http::SERVER_ERROR);
- return false;
+ echo "Server error.";
+ echo $wpdb->last_error;
+ exit;
}
- echo $r;
+// echo $r;
exit;
}
}
\ No newline at end of file
diff --git a/src/TouchPoint-WP/TouchPointWP.php b/src/TouchPoint-WP/TouchPointWP.php
index 44cbab1b..e203be6d 100644
--- a/src/TouchPoint-WP/TouchPointWP.php
+++ b/src/TouchPoint-WP/TouchPointWP.php
@@ -409,7 +409,7 @@ public function parseRequest($continue, $wp, $extraVars): bool
if (str_ends_with($reqUri['path'], '/')) {
$reqUri['path'] = substr($reqUri['path'], 0, -1);
}
-
+
if (isset($_GET['locale']) && strlen($_GET['locale']) > 1) {
$l = $_GET['locale'];
add_filter('locale', fn() => $l, 1);
@@ -630,6 +630,11 @@ public function loadLocalizations(): void
load_plugin_textdomain('TouchPoint-WP', false, $dir . '/i18n/');
}
+ public static function isTenth()
+ {
+ return site_url() === "https://www.tenth.org";
+ }
+
/**
* Create or update database tables
*/
@@ -650,10 +655,10 @@ protected function createTables(): void
dbDelta($sql);
// Table for receiving info from other sites that use this plugin
- if (site_url() === "https://www.tenth.org") {
+ if (self::isTenth()) {
$tableName = $wpdb->base_prefix . TouchPointWP::TABLE_STATS;
$sql = "CREATE TABLE $tableName (
- intallId varchar(36) NOT NULL,
+ installId varchar(36) NOT NULL,
privateKey varchar(36) NOT NULL,
siteId varchar(36) NOT NULL,
site varchar(255) NOT NULL,
@@ -668,7 +673,7 @@ protected function createTables(): void
createdDT datetime DEFAULT NOW(),
updatedDT datetime DEFAULT NOW() ON UPDATE NOW(),
- lastQueryDt datetime DEFAULT NULL,
+ lastQueryDT datetime DEFAULT NULL,
lastQueryStatus int(3) DEFAULT NULL,
involvementJoins int(10) DEFAULT 0,
@@ -1379,7 +1384,7 @@ protected static function clearScheduledHooks(): void
wp_clear_scheduled_hook(Report::CRON_HOOK);
}
- /**
+ /**
* Drop database tables at uninstallation.
*/
protected static function dropTables(): void
@@ -2257,7 +2262,7 @@ public function apiGet(string $command, ?array $parameters = null, int $timeout
$this->settings->api_script_name . "?" . http_build_query($parameters);
self::$apiCallLog[] = $url;
-
+
if ($verbose) {
echo "Request to $url
";
}
@@ -2606,7 +2611,7 @@ public function validateThatTpWpUserExists(): bool
/**
* Make the TPWP user the active one, so permissions are not dependent on whoever happens to be running things
- * at the moment.
+ * at the moment.
*
* @return void
*/
From 21d9ae631c0cf510624cea2e83d39c6323281377 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Mon, 18 Nov 2024 23:29:47 -0500
Subject: [PATCH 206/423] Moving updatedDT to server-side only, where it
belongs.
---
src/TouchPoint-WP/Stats.php | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/src/TouchPoint-WP/Stats.php b/src/TouchPoint-WP/Stats.php
index 03dc0851..4e935c7e 100644
--- a/src/TouchPoint-WP/Stats.php
+++ b/src/TouchPoint-WP/Stats.php
@@ -187,7 +187,6 @@ public function getStatsForSubmission(): array
$data['siteName'] = get_bloginfo('name');
$data['installId'] = $this->installId;
$data['privateKey'] = $this->privateKey;
- $data['updatedDT'] = date('Y-m-d H:i:s'); // needs to be forced or update may not happen, which would make insert fail.
return $data;
}
@@ -302,15 +301,15 @@ public static function api(array $uri): bool
/**
* Handle submissions received to this site (presumably tenth.org) from other users of the plugin.
*
- * @return void
+ * @return bool True on success
*/
- public static function handleSubmission(): void
+ public static function handleSubmission(): bool
{
if ($_SERVER['REQUEST_METHOD'] !== "POST") {
http_response_code(Http::METHOD_NOT_ALLOWED);
echo "Only POST requests are allowed.";
- exit;
+ return false;
}
$data = $_POST['data'] ?? null;
@@ -318,19 +317,20 @@ public static function handleSubmission(): void
if (empty($data)) {
http_response_code(Http::BAD_REQUEST);
echo "No data was submitted.";
- exit;
+ return false;
}
// validate that privateKey, installId, and siteId are all included.
if ( ! isset($data['privateKey']) || ! isset($data['installId']) || ! isset($data['siteId'])) {
http_response_code(Http::BAD_REQUEST);
echo "Keys not provided.";
- exit;
+ return false;
}
// remove any fields that are not part of the stats object.
$s = self::instance();
$data = array_intersect_key($data, $s->getStatsForSubmission());
+ $data['updatedDT'] = date('Y-m-d H:i:s');
// upsert the data into the database into the stats table without destructive replace function
global $wpdb;
@@ -343,10 +343,10 @@ public static function handleSubmission(): void
http_response_code(Http::SERVER_ERROR);
echo "Server error.";
echo $wpdb->last_error;
- exit;
+ return false;
}
-// echo $r;
- exit;
+ echo $r;
+ return true;
}
}
\ No newline at end of file
From 393674ea1b60c6afabb7396829cbdffc94a2a15f Mon Sep 17 00:00:00 2001
From: "James K."
Date: Mon, 18 Nov 2024 23:31:06 -0500
Subject: [PATCH 207/423] remove explicit server error
---
src/TouchPoint-WP/Stats.php | 1 -
1 file changed, 1 deletion(-)
diff --git a/src/TouchPoint-WP/Stats.php b/src/TouchPoint-WP/Stats.php
index 4e935c7e..cf67e9d9 100644
--- a/src/TouchPoint-WP/Stats.php
+++ b/src/TouchPoint-WP/Stats.php
@@ -342,7 +342,6 @@ public static function handleSubmission(): bool
if ($r === false) {
http_response_code(Http::SERVER_ERROR);
echo "Server error.";
- echo $wpdb->last_error;
return false;
}
From 0597e00130930d52c4210e12c13a30cc98cc20ee Mon Sep 17 00:00:00 2001
From: "James K."
Date: Tue, 19 Nov 2024 08:12:22 -0500
Subject: [PATCH 208/423] Resolve issue where destruct is getting called to
late for saves by saving manually in each location. Also making siteId truly
global across sites.
---
src/TouchPoint-WP/Auth.php | 1 +
src/TouchPoint-WP/Involvement.php | 2 ++
src/TouchPoint-WP/Meeting.php | 1 +
src/TouchPoint-WP/Person.php | 1 +
src/TouchPoint-WP/Stats.php | 15 ++++++++-------
5 files changed, 13 insertions(+), 7 deletions(-)
diff --git a/src/TouchPoint-WP/Auth.php b/src/TouchPoint-WP/Auth.php
index 03433d54..5c9c11b5 100644
--- a/src/TouchPoint-WP/Auth.php
+++ b/src/TouchPoint-WP/Auth.php
@@ -446,6 +446,7 @@ public static function authenticate($user, $username, $password)
try {
$stats = Stats::instance();
$stats->userAuths += 1;
+ $stats->updateDb();
} catch (Exception) {}
// Preload Ident people for potential use with InformalAuth. Skip if family is already loaded.
diff --git a/src/TouchPoint-WP/Involvement.php b/src/TouchPoint-WP/Involvement.php
index 3fa8eadd..6928a63d 100644
--- a/src/TouchPoint-WP/Involvement.php
+++ b/src/TouchPoint-WP/Involvement.php
@@ -3872,6 +3872,7 @@ private static function ajaxInvJoin(): void
try {
$stats = Stats::instance();
$stats->involvementJoins += count($data->success);
+ $stats->updateDb();
} catch (Exception) {}
echo json_encode(['success' => $data->success]);
@@ -3975,6 +3976,7 @@ private static function ajaxContact(): void
try {
$stats = Stats::instance();
$stats->involvementContacts += count($data->success);
+ $stats->updateDb();
} catch (Exception) {}
echo json_encode(['success' => $data->success]);
diff --git a/src/TouchPoint-WP/Meeting.php b/src/TouchPoint-WP/Meeting.php
index 669b7d18..df97ecf5 100644
--- a/src/TouchPoint-WP/Meeting.php
+++ b/src/TouchPoint-WP/Meeting.php
@@ -723,6 +723,7 @@ private static function ajaxSubmitRsvps(): void
try {
$stats = Stats::instance();
$stats->rsvps += count($data->success);
+ $stats->updateDb();
} catch (Exception) {}
echo json_encode(['success' => $data->success]);
diff --git a/src/TouchPoint-WP/Person.php b/src/TouchPoint-WP/Person.php
index 7b0dfbb2..8182216b 100644
--- a/src/TouchPoint-WP/Person.php
+++ b/src/TouchPoint-WP/Person.php
@@ -1635,6 +1635,7 @@ public static function ident($inputData): array
try {
$stats = Stats::instance();
$stats->softAuths += count($people);
+ $stats->updateDb();
} catch (Exception) {}
$ret = [];
diff --git a/src/TouchPoint-WP/Stats.php b/src/TouchPoint-WP/Stats.php
index cf67e9d9..386d6e11 100644
--- a/src/TouchPoint-WP/Stats.php
+++ b/src/TouchPoint-WP/Stats.php
@@ -5,6 +5,7 @@
namespace tp\TouchPointWP;
+use Exception;
use InvalidArgumentException;
use tp\TouchPointWP\Utilities\Http;
@@ -88,10 +89,10 @@ protected function __construct()
$this->_dirty = true;
}
- $sid = get_option('tp_siteId', null);
+ $sid = get_site_option('tp_siteId', null);
if (empty($sid)) {
$sid = Utilities::createGuid();
- update_option('tp_siteId', $sid);
+ update_site_option('tp_siteId', $sid);
}
$this->siteId = $sid;
@@ -99,14 +100,14 @@ protected function __construct()
}
/**
- * Attempt to save on destruct.
+ * Make sure saves have happened before the object is destroyed.
+ *
+ * @throws Exception
*/
protected function __destruct()
{
- try {
- $this->updateDb();
- } catch (\Exception $e) {
- // ignore
+ if ($this->_dirty) {
+ throw new Exception("Stats object was not saved.");
}
}
From ef1131b765deeda8268d09306361df3bc4267036 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Tue, 19 Nov 2024 08:51:07 -0500
Subject: [PATCH 209/423] Add setting to allow site owners to determine whether
their site/church is using the plugin. Also i18n.
---
i18n/TouchPoint-WP-es_ES.po | 496 +++++++++----------
i18n/TouchPoint-WP.pot | 500 ++++++++++----------
src/TouchPoint-WP/Stats.php | 3 +
src/TouchPoint-WP/TouchPointWP.php | 1 +
src/TouchPoint-WP/TouchPointWP_Settings.php | 13 +
5 files changed, 531 insertions(+), 482 deletions(-)
diff --git a/i18n/TouchPoint-WP-es_ES.po b/i18n/TouchPoint-WP-es_ES.po
index cc7bc332..775cffb9 100644
--- a/i18n/TouchPoint-WP-es_ES.po
+++ b/i18n/TouchPoint-WP-es_ES.po
@@ -55,7 +55,7 @@ msgid "Slug"
msgstr "Slug"
#: src/templates/admin/invKoForm.php:47
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:967
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:992
msgid "Divisions to Import"
msgstr "Divisiones a Importar"
@@ -87,7 +87,7 @@ msgstr "Tipos de miembros de líder"
#: src/templates/admin/invKoForm.php:141
#: src/templates/admin/invKoForm.php:293
#: src/templates/parts/involvement-nearby-list.php:2
-#: src/TouchPoint-WP/Meeting.php:740
+#: src/TouchPoint-WP/Meeting.php:746
#: src/TouchPoint-WP/Rsvp.php:75
#: assets/js/base-defer.js:192
#: assets/js/base-defer.js:1133
@@ -123,13 +123,13 @@ msgid "Gender"
msgstr "Género"
#: src/templates/admin/invKoForm.php:213
-#: src/TouchPoint-WP/Involvement.php:1854
+#: src/TouchPoint-WP/Involvement.php:1853
#: src/TouchPoint-WP/Taxonomies.php:744
msgid "Weekday"
msgstr "Día laborable"
#: src/templates/admin/invKoForm.php:217
-#: src/TouchPoint-WP/Involvement.php:1880
+#: src/TouchPoint-WP/Involvement.php:1879
#: src/TouchPoint-WP/Taxonomies.php:802
msgid "Time of Day"
msgstr "Hora del día"
@@ -173,7 +173,7 @@ msgstr "Seleccione..."
#. translators: %s will be the plural post type (e.g. Small Groups)
#: src/templates/parts/involvement-list-none.php:16
-#: src/TouchPoint-WP/Involvement.php:2101
+#: src/TouchPoint-WP/Involvement.php:2099
msgid "No %s Found."
msgstr "No se encontraron %s"
@@ -183,19 +183,19 @@ msgid "%s will be imported overnight for the first time."
msgstr "%s se importarán durante la noche por primera vez."
#. translators: %s is "what you call TouchPoint at your church", which is a setting
-#: src/TouchPoint-WP/Auth.php:141
+#: src/TouchPoint-WP/Auth.php:142
msgid "Sign in with your %s account"
msgstr "Inicie sesión con su cuenta de %s"
-#: src/TouchPoint-WP/Auth.php:409
+#: src/TouchPoint-WP/Auth.php:410
msgid "Your login token expired."
msgstr "Su token de inicio de sesión caducó."
-#: src/TouchPoint-WP/Auth.php:424
+#: src/TouchPoint-WP/Auth.php:425
msgid "Your login token is invalid."
msgstr "Su token de inicio de sesión no es válido."
-#: src/TouchPoint-WP/Auth.php:436
+#: src/TouchPoint-WP/Auth.php:437
msgid "Session could not be validated."
msgstr "No se pudo validar la sesión."
@@ -208,47 +208,47 @@ msgstr "Periódico"
msgid "Multi-Day"
msgstr "varios días"
-#: src/TouchPoint-WP/Involvement.php:496
+#: src/TouchPoint-WP/Involvement.php:495
msgid "Currently Full"
msgstr "Actualmente lleno"
-#: src/TouchPoint-WP/Involvement.php:501
+#: src/TouchPoint-WP/Involvement.php:500
msgid "Currently Closed"
msgstr "Actualmente cerrado"
-#: src/TouchPoint-WP/Involvement.php:508
+#: src/TouchPoint-WP/Involvement.php:507
msgid "Registration Not Open Yet"
msgstr "Registro aún no abierto"
-#: src/TouchPoint-WP/Involvement.php:514
+#: src/TouchPoint-WP/Involvement.php:513
msgid "Registration Closed"
msgstr "Registro cerrado"
-#: src/TouchPoint-WP/Involvement.php:1729
+#: src/TouchPoint-WP/Involvement.php:1728
#: src/TouchPoint-WP/Partner.php:814
msgid "Any"
msgstr "Cualquier"
#. translators: %s is for the user-provided term for the items on the map (e.g. Small Group or Partner)
-#: src/TouchPoint-WP/Involvement.php:1937
+#: src/TouchPoint-WP/Involvement.php:1936
#: src/TouchPoint-WP/Partner.php:838
msgid "The %s listed are only those shown on the map."
msgstr "Los %s enumerados son solo los que se muestran en el mapa."
-#: src/TouchPoint-WP/Involvement.php:3556
+#: src/TouchPoint-WP/Involvement.php:3554
msgid "Men Only"
msgstr "Solo hombres"
-#: src/TouchPoint-WP/Involvement.php:3559
+#: src/TouchPoint-WP/Involvement.php:3557
msgid "Women Only"
msgstr "Solo mujeres"
-#: src/TouchPoint-WP/Involvement.php:3636
+#: src/TouchPoint-WP/Involvement.php:3634
msgid "Contact Leaders"
msgstr "Contacta con las líderes"
-#: src/TouchPoint-WP/Involvement.php:3705
-#: src/TouchPoint-WP/Involvement.php:3747
+#: src/TouchPoint-WP/Involvement.php:3704
+#: src/TouchPoint-WP/Involvement.php:3763
msgid "Register"
msgstr "Regístrate ahora"
@@ -276,12 +276,12 @@ msgstr "Registre su asistencia"
msgid "Get Tickets"
msgstr "Obtener boletos"
-#: src/TouchPoint-WP/Involvement.php:3738
+#: src/TouchPoint-WP/Involvement.php:3754
#: assets/js/base-defer.js:1001
msgid "Join"
msgstr "Únete"
-#: src/TouchPoint-WP/Involvement.php:3653
+#: src/TouchPoint-WP/Involvement.php:3651
#: src/TouchPoint-WP/Partner.php:1318
msgid "Show on Map"
msgstr "Muestra en el mapa"
@@ -307,503 +307,503 @@ msgstr "ID de Personas de TouchPoint"
msgid "Contact"
msgstr "Contacta"
-#: src/TouchPoint-WP/Meeting.php:739
-#: src/TouchPoint-WP/Meeting.php:759
+#: src/TouchPoint-WP/Meeting.php:745
+#: src/TouchPoint-WP/Meeting.php:766
#: src/TouchPoint-WP/Rsvp.php:80
msgid "RSVP"
msgstr "RSVP"
-#: src/TouchPoint-WP/TouchPointWP.php:1948
+#: src/TouchPoint-WP/TouchPointWP.php:2023
msgid "Unknown Type"
msgstr "Tipo desconocido"
-#: src/TouchPoint-WP/TouchPointWP.php:2005
+#: src/TouchPoint-WP/TouchPointWP.php:2080
msgid "Your Searches"
msgstr "Tus búsquedas"
-#: src/TouchPoint-WP/TouchPointWP.php:2008
+#: src/TouchPoint-WP/TouchPointWP.php:2083
msgid "Public Searches"
msgstr "Búsquedas públicas"
-#: src/TouchPoint-WP/TouchPointWP.php:2011
+#: src/TouchPoint-WP/TouchPointWP.php:2086
msgid "Status Flags"
msgstr "Indicadores de Estado"
-#: src/TouchPoint-WP/TouchPointWP.php:2016
-#: src/TouchPoint-WP/TouchPointWP.php:2017
+#: src/TouchPoint-WP/TouchPointWP.php:2091
+#: src/TouchPoint-WP/TouchPointWP.php:2092
msgid "Current Value"
msgstr "Valor actual"
-#: src/TouchPoint-WP/TouchPointWP.php:2134
-#: src/TouchPoint-WP/TouchPointWP.php:2170
+#: src/TouchPoint-WP/TouchPointWP.php:2209
+#: src/TouchPoint-WP/TouchPointWP.php:2245
msgid "Invalid or incomplete API Settings."
msgstr "Configuración de API no válida o incompleta."
-#: src/TouchPoint-WP/TouchPointWP.php:2184
-#: src/TouchPoint-WP/TouchPointWP.php:2228
+#: src/TouchPoint-WP/TouchPointWP.php:2259
+#: src/TouchPoint-WP/TouchPointWP.php:2303
msgid "Host appears to be missing from TouchPoint-WP configuration."
msgstr "Parece que falta el host en la configuración de TouchPoint-WP."
-#: src/TouchPoint-WP/TouchPointWP.php:2360
+#: src/TouchPoint-WP/TouchPointWP.php:2435
msgid "People Query Failed"
msgstr "Consulta de registros de personas fallida"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:255
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:258
msgid "Basic Settings"
msgstr "Ajustes básicos"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:256
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:259
msgid "Connect to TouchPoint and choose which features you wish to use."
msgstr "Conéctese a TouchPoint y elija qué funciones desea usar."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:260
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:263
msgid "Enable Authentication"
msgstr "Habilitar autenticación"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:261
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:264
msgid "Allow TouchPoint users to sign into this website with TouchPoint."
msgstr "Permita que los usuarios de TouchPoint inicien sesión en este sitio web con TouchPoint."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:272
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:275
msgid "Enable RSVP Tool"
msgstr "Habilitar la herramienta RSVP"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:273
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:276
msgid "Add a crazy-simple RSVP button to WordPress event pages."
msgstr "Agregue un botón RSVP muy simple a las páginas de eventos de WordPress."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:280
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:283
msgid "Enable Involvements"
msgstr "Habilitar Participaciones"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:281
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:284
msgid "Load Involvements from TouchPoint for involvement listings and entries native in your website."
msgstr "Cargue participaciones desde TouchPoint para obtener listas de participación y entradas nativas en su sitio web."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:302
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:305
msgid "Enable Public People Lists"
msgstr "Habilitar listas de personas públicas"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:303
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:306
msgid "Import public people listings from TouchPoint (e.g. staff or elders)"
msgstr "Importe listados públicos de personas desde TouchPoint (por ejemplo, personal o ancianos)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:313
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:316
msgid "Enable Global Partner Listings"
msgstr "Habilitar listados de Socios Globales"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:314
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:317
msgid "Import ministry partners from TouchPoint to list publicly."
msgstr "Importe socios ministeriales de TouchPoint para incluirlos en una lista pública."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:335
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:338
msgid "Display Name"
msgstr "Nombre para mostrar"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:336
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:339
msgid "What your church calls your TouchPoint database."
msgstr "Lo que su iglesia llama su base de datos TouchPoint."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:346
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:349
msgid "TouchPoint Host Name"
msgstr "Nombre de host del TouchPoint"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:347
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:350
msgid "The domain for your TouchPoint database, without the https or any slashes."
msgstr "El dominio de su base de datos TouchPoint, sin https ni barras."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:359
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:362
msgid "Custom Mobile App Deeplink Host Name"
msgstr "Nombre de host de enlace profundo de aplicación móvil personalizada"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:371
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:374
msgid "TouchPoint API Username"
msgstr "Nombre de usuario de la API de TouchPoint"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:383
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:386
msgid "TouchPoint API User Password"
msgstr "Contraseña de usuario de la API de TouchPoint"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:384
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:387
msgid "The password of a user account in TouchPoint with API permissions."
msgstr "La contraseña de una cuenta de usuario en TouchPoint con permisos de API."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:396
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:399
msgid "TouchPoint API Script Name"
msgstr "Nombre de la secuencia de comandos de la API de TouchPoint"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:397
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:400
msgid "The name of the Python script loaded into TouchPoint. Don't change this unless you know what you're doing."
msgstr "El nombre de la secuencia de comandos de Python cargada en TouchPoint. No cambies esto a menos que sepas lo que estás haciendo."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:408
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:411
msgid "Google Maps Javascript API Key"
msgstr "Clave de la API de Javascript de Google Maps"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:409
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:412
msgid "Required for embedding maps."
msgstr "Necesario para incrustar mapas."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:420
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:423
msgid "Google Maps Geocoding API Key"
msgstr "Clave API de codificación geográfica de Google Maps"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:421
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:424
msgid "Optional. Allows for reverse geocoding of user locations."
msgstr "Opcional. Permite la geocodificación inversa de las ubicaciones de los usuarios."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:439
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:444
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:464
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:469
msgid "Generate Scripts"
msgstr "Generar secuencias de comandos"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:443
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:468
msgid "Upload the package to {tpName} here"
msgstr "Sube el paquete a {tpName} aquí"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:460
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:485
msgid "People"
msgstr "Gente"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:461
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:486
msgid "Manage how people are synchronized between TouchPoint and WordPress."
msgstr "Administre cómo se sincronizan las personas entre TouchPoint y WordPress."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:465
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:490
msgid "Contact Keywords"
msgstr "Palabras clave de contacto"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:466
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:491
msgid "These keywords will be used when someone clicks the \"Contact\" button on a Person's listing or profile."
msgstr "Estas palabras clave se utilizarán cuando alguien haga clic en el botón \"Contactar\" en la lista o el perfil de una Persona."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:477
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:502
msgid "Extra Value for WordPress User ID"
msgstr "Valor Adicional para la ID de usuario de WordPress"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:478
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:503
msgid "The name of the extra value to use for the WordPress User ID. If you are using multiple WordPress instances with one TouchPoint database, you will need these values to be unique between WordPress instances. In most cases, the default is fine."
msgstr "El nombre del valor adicional que se usará para el ID de usuario de WordPress. Si está utilizando varias instancias de WordPress con una base de datos de TouchPoint, necesitará que estos valores sean únicos entre las instancias de WordPress. En la mayoría de los casos, el valor predeterminado está bien."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:488
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:513
msgid "Extra Value: Biography"
msgstr "Valor Adicional: Biografía"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:489
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:514
msgid "Import a Bio from a Person Extra Value field. Can be an HTML or Text Extra Value. This will overwrite any values set by WordPress. Leave blank to not import."
msgstr "Importe una biografía desde un campo de Valor Adicional de Persona. Puede ser un Valor Adicional HTML o de texto. Esto sobrescribirá cualquier valor establecido por WordPress. Dejar en blanco para no importar."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:499
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:737
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:524
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:762
msgid "Extra Values to Import"
msgstr "Valor Adicional para importar"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:500
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:525
msgid "Import People Extra Value fields as User Meta data."
msgstr "Importe campos de valor extra de personas como metadatos de usuario."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:516
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:541
msgid "Authentication"
msgstr "Autenticación"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:517
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:542
msgid "Allow users to log into WordPress using TouchPoint."
msgstr "Permita que los usuarios inicien sesión en WordPress usando TouchPoint."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:521
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:546
msgid "Make TouchPoint the default authentication method."
msgstr "Haga que TouchPoint sea el método de autenticación predeterminado."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:531
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:556
msgid "Enable Auto-Provisioning"
msgstr "Habilitar el aprovisionamiento automático"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:532
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:557
msgid "Automatically create WordPress users, if needed, to match authenticated TouchPoint users."
msgstr "Cree automáticamente usuarios de WordPress, si es necesario, para que coincidan con los usuarios autenticados de TouchPoint."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:541
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:566
msgid "Change 'Edit Profile' links"
msgstr "Cambiar los enlaces 'Editar perfil'"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:542
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:567
msgid "\"Edit Profile\" links will take the user to their TouchPoint profile, instead of their WordPress profile."
msgstr "Los enlaces \"Editar perfil\" llevarán al usuario a su perfil de TouchPoint, en lugar de a su perfil de WordPress."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:551
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:576
msgid "Enable full logout"
msgstr "Habilitar cierre de sesión completo"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:552
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:577
msgid "Logout of TouchPoint when logging out of WordPress."
msgstr "Cierre sesión en TouchPoint al cerrar sesión en WordPress."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:558
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:583
msgid "Prevent Subscriber Admin Bar"
msgstr "Prevenir la barra de administración de suscriptores"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:559
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:584
msgid "By enabling this option, users who can't edit anything won't see the Admin bar."
msgstr "Al habilitar esta opción, los usuarios que no pueden editar nada no verán la barra de administración."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:573
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:598
msgid "Involvements"
msgstr "Involucramientos"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:574
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:599
msgid "Import Involvements from TouchPoint to list them on your website, for Small Groups, Classes, and more. Select the division(s) that immediately correspond to the type of Involvement you want to list. For example, if you want a Small Group list and have a Small Group Division, only select the Small Group Division. If you want Involvements to be filterable by additional Divisions, select those Divisions on the Divisions tab, not here."
msgstr "Importe participaciones desde TouchPoint para enumerarlas en su sitio web, para grupos pequeños, clases y más. Seleccione la(s) división(es) que corresponda(n) inmediatamente al tipo de participación que desea enumerar. Por ejemplo, si desea una lista de grupos pequeños y tiene una división de grupos pequeños, solo seleccione la división de grupos pequeños. Si desea que las participaciones se puedan filtrar por divisiones adicionales, seleccione esas divisiones en la pestaña Divisiones, no aquí."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:579
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:604
msgid "Involvement Post Types"
msgstr "Tipos de publicaciones de Involucramientos"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:609
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:634
msgid "Global Partners"
msgstr "Misioneros"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:610
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:635
msgid "Manage how global partners are imported from TouchPoint for listing on WordPress. Partners are grouped by family, and content is provided through Family Extra Values. This works for both People and Business records."
msgstr "Administre cómo se importan los socios globales desde TouchPoint para incluirlos en WordPress. Los socios se agrupan por familia y el contenido se proporciona a través de Valor Extra Familiar. Esto funciona tanto para registros de personas como de empresas."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:614
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:639
msgid "Global Partner Name (Plural)"
msgstr "Nombre de los misioneros (plural)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:615
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:640
msgid "What you call Global Partners at your church"
msgstr "Lo que llamas los Misioneros en tu iglesia"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:625
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:650
msgid "Global Partner Name (Singular)"
msgstr "Nombre de un misionero (singular)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:626
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:651
msgid "What you call a Global Partner at your church"
msgstr "Lo que llamas un Misionero en tu iglesia"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:636
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:661
msgid "Global Partner Name for Secure Places (Plural)"
msgstr "Nombre de los misioneros para lugares seguros (plural)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:637
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:662
msgid "What you call Secure Global Partners at your church"
msgstr "Lo que llamas un Misionero seguro en tu iglesia"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:647
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:672
msgid "Global Partner Name for Secure Places (Singular)"
msgstr "Nombre de un misionero para lugares seguros (singular)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:648
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:673
msgid "What you call a Secure Global Partner at your church"
msgstr "Lo que llamas los Misioneros seguros en tu iglesia"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:658
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:683
msgid "Global Partner Slug"
msgstr "Slug de Socio Global"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:659
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:684
msgid "The root path for Global Partner posts"
msgstr "La ruta raíz para las publicaciones de Socios Globales"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:671
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:696
msgid "Saved Search"
msgstr "Búsqueda Guardada"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:672
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:697
msgid "Anyone who is included in this saved search will be included in the listing."
msgstr "Cualquiera que esté incluido en esta búsqueda guardada se incluirá en la lista."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:682
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:707
msgid "Extra Value: Description"
msgstr "Valor Adicional: Descripción"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:683
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:708
msgid "Import a description from a Family Extra Value field. Can be an HTML or Text Extra Value. This becomes the body of the Global Partner post."
msgstr "Importe una descripción de un campo de Valor Extra Familiar. Puede ser un valor adicional HTML o de texto. Esto se convierte en el cuerpo de la publicación del socio global."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:693
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:718
msgid "Extra Value: Summary"
msgstr "Valor Adicional: Resumen"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:694
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:719
msgid "Optional. Import a short description from a Family Extra Value field. Can be an HTML or Text Extra Value. If not provided, the full bio will be truncated."
msgstr "Opcional. Importe una breve descripción de un campo de Valor Extra Familiar. Puede ser un Valor Adicional HTML o de texto. Si no se proporciona, la biografía completa se truncará."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:704
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:729
msgid "Latitude Override"
msgstr "Anulación de latitud"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:705
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:730
msgid "Designate a text Family Extra Value that will contain a latitude that overrides any locations on the partner's profile for the partner map. Both latitude and longitude must be provided for an override to take place."
msgstr "Designe un Valor Familiar Adicional de texto que contenga una latitud que anule cualquier ubicación en el perfil del socio para el mapa de socios. Tanto la latitud como la longitud deben proporcionarse para que se produzca una anulación."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:715
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:740
msgid "Longitude Override"
msgstr "Anulación de longitud"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:716
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:741
msgid "Designate a text Family Extra Value that will contain a longitude that overrides any locations on the partner's profile for the partner map. Both latitude and longitude must be provided for an override to take place."
msgstr "Designe un Valor Familiar Adicional de texto que contenga una longitud que anule cualquier ubicación en el perfil del socio para el mapa de socios. Tanto la latitud como la longitud deben proporcionarse para que se produzca una anulación."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:726
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:751
msgid "Public Location"
msgstr "Ubicación Pública"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:727
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:752
msgid "Designate a text Family Extra Value that will contain the partner's location, as you want listed publicly. For partners who have DecoupleLocation enabled, this field will be associated with the map point, not the list entry."
msgstr "Designe un Valor Adicional Familiar de texto que contendrá la ubicación del socio, como desea que se enumere públicamente. Para los socios que tienen DecoupleLocation habilitado, este campo se asociará con el punto del mapa, no con la entrada de la lista."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:738
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:763
msgid "Import Family Extra Value fields as Meta data on the partner's post"
msgstr "Importe campos de Valor Adicional Familiar como Metadatos en la publicación del socio"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:749
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:774
msgid "Primary Taxonomy"
msgstr "Taxonomía Primaria"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:750
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:775
msgid "Import a Family Extra Value as the primary means by which partners are organized."
msgstr "Importe un Valor Adicional Familiar como el medio principal por el cual se organizan los socios."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:793
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:818
msgid "Events for Custom Mobile App"
msgstr "Eventos para la aplicación móvil personalizada"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:798
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:823
msgid "Preview"
msgstr "Preestrena"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:813
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:838
msgid "Use Standardizing Stylesheet"
msgstr "Usar hoja de estilo de estandarización"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:814
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:839
msgid "Inserts some basic CSS into the events feed to clean up display"
msgstr "Inserta algo de CSS básico en el feed de eventos para limpiar la pantalla"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:925
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:950
msgid "Divisions"
msgstr "Divisiones"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:926
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:951
msgid "Import Divisions from TouchPoint to your website as a taxonomy. These are used to classify users and involvements."
msgstr "Importe Divisiones desde TouchPoint a su sitio web como una taxonomía. Estos se utilizan para clasificar a los usuarios y las participaciones."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:930
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:955
msgid "Division Name (Plural)"
msgstr "Nombre de la División (plural)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:931
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:956
msgid "What you call Divisions at your church"
msgstr "Lo que llamas Divisiones en tu iglesia"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:942
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:967
msgid "Division Name (Singular)"
msgstr "Nombre de la División (Singular)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:943
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:968
msgid "What you call a Division at your church"
msgstr "Lo que llamas una división en tu iglesia"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:954
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:979
msgid "Division Slug"
msgstr "Slug de División"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:955
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:980
msgid "The root path for the Division Taxonomy"
msgstr "La ruta raíz para la Taxonomía de División"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:968
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:993
msgid "These Divisions will be imported for the taxonomy"
msgstr "Estas Divisiones se importarán para la taxonomía"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1019
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1044
msgid "Campuses"
msgstr "Campus"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1020
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1045
msgid "Import Campuses from TouchPoint to your website as a taxonomy. These are used to classify users and involvements."
msgstr "Importe Campus desde TouchPoint a su sitio web como una taxonomía. Estos se utilizan para clasificar a los usuarios y las participaciones."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1027
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1052
msgid "Campus Name (Plural)"
msgstr "Nombre del Campus (Plural)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1028
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1053
msgid "What you call Campuses at your church"
msgstr "Lo que llamas Campus en tu iglesia"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1039
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1064
msgid "Campus Name (Singular)"
msgstr "Nombre del Campus (Singular)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1040
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1065
msgid "What you call a Campus at your church"
msgstr "Lo que llamas un Campus en tu iglesia"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1051
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1076
msgid "Campus Slug"
msgstr "Slug de Campus"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1052
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1077
msgid "The root path for the Campus Taxonomy"
msgstr "La ruta raíz para la Taxonomía del Campus"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1068
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1093
msgid "Resident Codes"
msgstr "Códigos de Residentes"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1069
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1094
msgid "Import Resident Codes from TouchPoint to your website as a taxonomy. These are used to classify users and involvements that have locations."
msgstr "Importe Códigos de Residentes desde TouchPoint a su sitio web como una taxonomía. Estos se utilizan para clasificar los usuarios y las participaciones que tienen ubicaciones."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1073
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1098
msgid "Resident Code Name (Plural)"
msgstr "Nombre de Código de Tesidente (Plural)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1074
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1099
msgid "What you call Resident Codes at your church"
msgstr "Lo que llamas Códigos de Residente en tu iglesia"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1085
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1110
msgid "Resident Code Name (Singular)"
msgstr "Nombre de Código de Residente (singular)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1086
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1111
msgid "What you call a Resident Code at your church"
msgstr "Lo que llamas un Código de Residencia en tu iglesia"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1097
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1122
msgid "Resident Code Slug"
msgstr "Slug de Código Residente"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1098
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1123
msgid "The root path for the Resident Code Taxonomy"
msgstr "La ruta raíz para la Taxonomía del Código de Residente"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1274
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1299
msgid "password saved"
msgstr "contraseña guardada"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1328
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1329
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1353
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1354
msgid "TouchPoint-WP"
msgstr "TouchPoint-WP"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1377
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1402
msgid "Settings"
msgstr "Ajustes"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1609
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1639
msgid "Script Update Failed"
msgstr "Actualización de secuencia de comandos fallida"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1731
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1761
msgid "TouchPoint-WP Settings"
msgstr "Configuración de TouchPoint-WP"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1782
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1812
msgid "Save Settings"
msgstr "Guardar ajustes"
@@ -971,7 +971,7 @@ msgstr "Enviar"
msgid "Nothing to submit."
msgstr "Nada que enviar."
-#: src/TouchPoint-WP/TouchPointWP.php:2301
+#: src/TouchPoint-WP/TouchPointWP.php:2376
msgid "The scripts on TouchPoint that interact with this plugin are out-of-date, and an automatic update failed."
msgstr "Los scripts en TouchPoint que interactúan con este complemento están desactualizados y falló una actualización automática."
@@ -1026,16 +1026,16 @@ msgstr "OK"
msgid "Next"
msgstr "Siguiente"
-#: src/TouchPoint-WP/Involvement.php:1902
+#: src/TouchPoint-WP/Involvement.php:1901
#: src/TouchPoint-WP/Taxonomies.php:863
msgid "Marital Status"
msgstr "Estado civil"
-#: src/TouchPoint-WP/Involvement.php:1915
+#: src/TouchPoint-WP/Involvement.php:1914
msgid "Age"
msgstr "Años"
-#: src/TouchPoint-WP/Involvement.php:1786
+#: src/TouchPoint-WP/Involvement.php:1785
msgid "Genders"
msgstr "Géneros"
@@ -1153,12 +1153,12 @@ msgstr "Añade una ubicación"
msgid "The Campus"
msgstr "El campus"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:994
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1000
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1019
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1025
msgid "Locations"
msgstr "Ubicaciones"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:995
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1020
msgid "Locations are physical places, probably campuses. None are required, but they can help present geographic information clearly."
msgstr "Las ubicaciones son lugares físicos, probablemente campus. No se requiere ninguno, pero pueden ayudar a presentar la información geográfica con claridad."
@@ -1197,23 +1197,23 @@ msgctxt "Time of Day"
msgid "Night"
msgstr "Noche"
-#: src/TouchPoint-WP/Involvement.php:1903
+#: src/TouchPoint-WP/Involvement.php:1902
msgctxt "Marital status for a group of people"
msgid "Mostly Single"
msgstr "Mayoría solteras"
-#: src/TouchPoint-WP/Involvement.php:1904
+#: src/TouchPoint-WP/Involvement.php:1903
msgctxt "Marital status for a group of people"
msgid "Mostly Married"
msgstr "Mayoría casadas"
#. translators: %s is the link to "reset the map"
-#: src/TouchPoint-WP/Involvement.php:1945
+#: src/TouchPoint-WP/Involvement.php:1944
#: src/TouchPoint-WP/Partner.php:854
msgid "Zoom out or %s to see more."
msgstr "Alejar o %s para ver más."
-#: src/TouchPoint-WP/Involvement.php:1948
+#: src/TouchPoint-WP/Involvement.php:1947
#: src/TouchPoint-WP/Partner.php:857
msgctxt "Zoom out or reset the map to see more."
msgid "reset the map"
@@ -1221,53 +1221,53 @@ msgstr "restablecer el mapa"
#. translators: %1$s is the date(s), %2$s is the time(s).
#. Translators: %1$s is the start date, %2$s is the start time.
-#: src/TouchPoint-WP/Involvement.php:996
-#: src/TouchPoint-WP/Involvement.php:1028
-#: src/TouchPoint-WP/Involvement.php:1121
-#: src/TouchPoint-WP/Involvement.php:1145
+#: src/TouchPoint-WP/Involvement.php:995
+#: src/TouchPoint-WP/Involvement.php:1027
+#: src/TouchPoint-WP/Involvement.php:1120
+#: src/TouchPoint-WP/Involvement.php:1144
#: src/TouchPoint-WP/Utilities/DateFormats.php:283
#: src/TouchPoint-WP/Utilities/DateFormats.php:347
msgid "%1$s at %2$s"
msgstr "%1$s a las %2$s"
#. translators: {start date} through {end date} e.g. February 14 through August 12
-#: src/TouchPoint-WP/Involvement.php:1037
+#: src/TouchPoint-WP/Involvement.php:1036
msgid "%1$s through %2$s"
msgstr "%1$s al %2$s"
#. translators: {schedule}, {start date} through {end date} e.g. Sundays at 11am, February 14 through August 12
-#: src/TouchPoint-WP/Involvement.php:1046
+#: src/TouchPoint-WP/Involvement.php:1045
msgid "%1$s, %2$s through %3$s"
msgstr "%1$s, %2$s al %3$s"
#. translators: Starts {start date} e.g. Starts September 15
-#: src/TouchPoint-WP/Involvement.php:1055
+#: src/TouchPoint-WP/Involvement.php:1054
msgid "Starts %1$s"
msgstr "Comienza el %1$s"
#. translators: {schedule}, starting {start date} e.g. Sundays at 11am, starting February 14
-#: src/TouchPoint-WP/Involvement.php:1063
+#: src/TouchPoint-WP/Involvement.php:1062
msgid "%1$s, starting %2$s"
msgstr "%1$s, comienza el %2$s"
#. translators: Through {end date} e.g. Through September 15
-#: src/TouchPoint-WP/Involvement.php:1071
+#: src/TouchPoint-WP/Involvement.php:1070
msgid "Through %1$s"
msgstr "Hasta el %1$s"
#. translators: {schedule}, through {end date} e.g. Sundays at 11am, through February 14
-#: src/TouchPoint-WP/Involvement.php:1079
+#: src/TouchPoint-WP/Involvement.php:1078
msgid "%1$s, through %2$s"
msgstr "%1$s, hasta el %2$s"
#. translators: number of miles
#: src/templates/parts/involvement-nearby-list.php:10
-#: src/TouchPoint-WP/Involvement.php:3577
+#: src/TouchPoint-WP/Involvement.php:3575
msgctxt "miles. Unit is appended to a number. %2.1f is the number, so %2.1fmi looks like '12.3mi'"
msgid "%2.1fmi"
msgstr "%2.1fmi"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:372
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:375
msgid "The username of a user account in TouchPoint with API permissions. It is strongly recommended that you create a separate person/user for this purpose, rather than using a staff member's account."
msgstr "El nombre de usuario de una cuenta de usuario en TouchPoint con permisos API. Se recomienda encarecidamente que cree una persona/usuario independiente para este fin, en lugar de utilizar la cuenta de un miembro del personal."
@@ -1279,39 +1279,39 @@ msgstr "La participación tiene un tipo de registro de \"No Online Registration\
msgid "Involvement registration has ended (end date is past)"
msgstr "El registro de participación ha finalizado (la fecha de finalización ya pasó)"
-#: src/TouchPoint-WP/Involvement.php:2042
+#: src/TouchPoint-WP/Involvement.php:2040
msgid "This involvement type doesn't exist."
msgstr "Este tipo de participación no existe."
-#: src/TouchPoint-WP/Involvement.php:2052
+#: src/TouchPoint-WP/Involvement.php:2050
msgid "This involvement type doesn't have geographic locations enabled."
msgstr "Este tipo de participación no tiene habilitadas las ubicaciones geográficas."
-#: src/TouchPoint-WP/Involvement.php:2071
+#: src/TouchPoint-WP/Involvement.php:2069
msgid "Could not locate."
msgstr "No se pudo localizar."
#: src/TouchPoint-WP/Meeting.php:672
-#: src/TouchPoint-WP/TouchPointWP.php:971
+#: src/TouchPoint-WP/TouchPointWP.php:1027
msgid "Only GET requests are allowed."
msgstr "Solo se permiten solicitudes GET."
#: src/TouchPoint-WP/Meeting.php:700
-#: src/TouchPoint-WP/TouchPointWP.php:354
+#: src/TouchPoint-WP/TouchPointWP.php:360
msgid "Only POST requests are allowed."
msgstr "Solo se permiten solicitudes POST."
#: src/TouchPoint-WP/Meeting.php:710
-#: src/TouchPoint-WP/TouchPointWP.php:363
+#: src/TouchPoint-WP/TouchPointWP.php:369
msgid "Invalid data provided."
msgstr "Datos proporcionados no válidos."
-#: src/TouchPoint-WP/Involvement.php:3843
-#: src/TouchPoint-WP/Involvement.php:3940
+#: src/TouchPoint-WP/Involvement.php:3859
+#: src/TouchPoint-WP/Involvement.php:3962
msgid "Invalid Post Type."
msgstr "Tipo de publicación no válida."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:324
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:327
msgid "Enable Campuses"
msgstr "Habilitar Campus"
@@ -1376,7 +1376,7 @@ msgstr "Estados Civiles"
msgid "Classify Partners by category chosen in settings."
msgstr "Clasifique a los ministeriales por categoría elegida en la configuración."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:325
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:328
msgid "Import campuses as a taxonomy. (You probably want to do this if you're multi-campus.)"
msgstr "Importar campus como taxonomía. (Probablemente quieras hacer esto si tienes varios campus)."
@@ -1423,11 +1423,11 @@ msgstr "Informe de TouchPoint"
msgid "Updated on %1$s at %2$s"
msgstr "Actualizada %1$s %2$s"
-#: src/TouchPoint-WP/TouchPointWP.php:260
+#: src/TouchPoint-WP/TouchPointWP.php:266
msgid "Every 15 minutes"
msgstr "Cada 15 minutos"
-#: src/TouchPoint-WP/Involvement.php:1829
+#: src/TouchPoint-WP/Involvement.php:1828
msgid "Language"
msgstr "Idioma"
@@ -1444,11 +1444,11 @@ msgctxt "list of people, and *others*"
msgid "others"
msgstr "otros"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:826
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:851
msgid "Meeting Calendars"
msgstr "Calendarios de Reuniones"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:827
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:852
msgid "Import Meetings from TouchPoint to a calendar on your website."
msgstr "Importe reuniones desde TouchPoint a un calendario en su sitio web."
@@ -1456,44 +1456,44 @@ msgstr "Importe reuniones desde TouchPoint a un calendario en su sitio web."
msgid "Import All Meetings to Calendar"
msgstr "Importe reuniones a los calendarios"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:855
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:880
msgid "Meetings Slug"
msgstr "Slug de reuniones"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:856
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:881
msgid "The root path for Meetings"
msgstr "La ruta raíz para las reuniones"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:907
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:932
msgid "Meeting Deletion Handling"
msgstr "Manejo de eliminación de reuniones"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:908
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:933
msgid "When a Meeting is deleted in TouchPoint that has already been imported to WordPress, how should that be handled?"
msgstr "Cuando se elimina una reunión en TouchPoint que ya se ha importado a WordPress, ¿cómo se debe manejar?"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:914
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:939
msgid "Always delete from WordPress"
msgstr "Eliminar siempre de WordPress"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:915
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:940
msgid "Mark the occurrence as cancelled"
msgstr "Marcar la ocurrencia como cancelada"
-#: src/TouchPoint-WP/Involvement.php:3927
-#: src/TouchPoint-WP/Person.php:1827
+#: src/TouchPoint-WP/Involvement.php:3949
+#: src/TouchPoint-WP/Person.php:1833
msgid "Contact Prohibited."
msgstr "Contacto prohibido."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:522
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:547
msgid "By checking this box, the TouchPoint login page will become the default. To prevent the redirect and reach the standard WordPress login page, add 'tp_no_redirect' as a URL parameter."
msgstr "Al marcar esta casilla, la página de inicio de sesión de TouchPoint se convertirá en la predeterminada. Para evitar la redirección y llegar a la página de inicio de sesión estándar de WordPress, agregue 'tp_no_redirect' como parámetro de URL."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:360
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:363
msgid "The domain for your mobile app deeplinks, without the https or any slashes. If you aren't using the custom mobile app, leave this blank."
msgstr "El dominio de los enlaces profundos de su aplicación móvil, sin https ni barras diagonales. Si no está utilizando la aplicación móvil personalizada, déjelo en blanco."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:442
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:467
msgid "Once your settings on this page are set and saved, use this tool to generate the scripts needed for TouchPoint in a convenient installation package."
msgstr "Una vez que haya configurado y guardado la configuración en esta página, utilice esta herramienta para generar los scripts necesarios para TouchPoint en un paquete de instalación conveniente."
@@ -1501,12 +1501,12 @@ msgstr "Una vez que haya configurado y guardado la configuración en esta págin
msgid "Something went wrong."
msgstr "Algo salió mal."
-#: src/TouchPoint-WP/Person.php:1682
+#: src/TouchPoint-WP/Person.php:1688
msgid "You may need to sign in."
msgstr "Es posible que tengas que iniciar sesión."
-#: src/TouchPoint-WP/Involvement.php:3917
-#: src/TouchPoint-WP/Person.php:1844
+#: src/TouchPoint-WP/Involvement.php:3939
+#: src/TouchPoint-WP/Person.php:1850
msgid "Contact Blocked for Spam."
msgstr "Contacto bloqueado por spam."
@@ -1525,48 +1525,48 @@ msgctxt "What Meetings should be called, singular."
msgid "Event"
msgstr "Evento"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:291
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:294
msgid "Enable Meeting Calendar"
msgstr "Habilitar calendario de reuniones"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:292
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:295
msgid "Load Meetings from TouchPoint for a calendar, native in your website."
msgstr "Cargue reuniones desde TouchPoint para un calendario nativo en su sitio web."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:868
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:893
msgid "Days of Future"
msgstr "Días del futuro"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:869
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:894
msgid "Meetings more than this many days in the future will not be imported."
msgstr "No se importarán reuniones que superen estos días en el futuro."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:881
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:906
msgid "Archive After Days"
msgstr "Archivo después de días"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:882
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:907
msgid "Meetings more than this many days in the past will be moved to the Events Archive. Once this date passes, meeting information will no longer update."
msgstr "Las reuniones que hayan transcurrido más de esta cantidad de días pasados se trasladarán al Archivo de eventos. Una vez que pase esta fecha, la información de la reunión ya no se actualizará."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:894
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:919
msgid "Days of History"
msgstr "Días de la Historia"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:895
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:920
msgid "Meetings will be kept for the public calendar until the event is this many days in the past."
msgstr "Las reuniones se mantendrán para el calendario público hasta que hayan transcurrido tantos días desde el evento."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:979
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1110
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1004
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1135
msgid "Post Types"
msgstr "Tipos de publicaciones"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:980
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1005
msgid "Select post types which should have Divisions available as a native taxonomy."
msgstr "Seleccione los tipos de publicaciones que deberían tener Divisiones disponibles como taxonomía nativa."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1111
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1136
msgid "Select post types which should have Resident Codes available as a native taxonomy."
msgstr "Seleccione los tipos de publicaciones que deberían tener códigos de residente disponibles como taxonomía nativa."
@@ -1631,7 +1631,7 @@ msgid "%s is cancelled."
msgstr "%s esta cancelado."
#. Translators: %s is the system name. "TouchPoint" by default.
-#: src/TouchPoint-WP/Involvement.php:3665
+#: src/TouchPoint-WP/Involvement.php:3663
msgid "Involvement in %s"
msgstr "Participaciones en %s"
@@ -1649,39 +1649,39 @@ msgstr "Reunión en %s"
msgid "Person in %s"
msgstr "Persona en %s"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:831
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:856
msgid "Meeting Name (Plural)"
msgstr "Nombre de las reuniones (singular)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:832
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:857
msgid "What you call Meetings at your church"
msgstr "Lo que llamas Reuniones en tu iglesia"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:837
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:839
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:862
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:864
msgid "Meetings"
msgstr "Reuniones"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:837
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:839
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:862
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:864
msgid "Events"
msgstr "Eventos"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:843
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:868
msgid "Meeting Name (Singular)"
msgstr "Nombre de la reunión (singular)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:844
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:869
msgid "What you call a Meeting at your church"
msgstr "Cómo se llama una Reunión en tu iglesia"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:849
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:851
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:874
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:876
msgid "Meeting"
msgstr "Reunión"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:849
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:851
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:874
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:876
msgid "Event"
msgstr "Evento"
@@ -1710,13 +1710,13 @@ msgctxt "Event Status is not a recognized value."
msgid "Unknown"
msgstr "desconocido"
-#: src/TouchPoint-WP/Involvement.php:137
+#: src/TouchPoint-WP/Involvement.php:136
msgid "Creating an Involvement object from an object without a post_id is not yet supported."
msgstr "Aún no se admite la creación de un objeto de participación a partir de un objeto sin post_id."
#. translators: "Mon All Day" or "Sundays All Day"
-#: src/TouchPoint-WP/Involvement.php:999
-#: src/TouchPoint-WP/Involvement.php:1022
+#: src/TouchPoint-WP/Involvement.php:998
+#: src/TouchPoint-WP/Involvement.php:1021
msgid "%1$s All Day"
msgstr "todo el dia los %1$s"
@@ -1781,7 +1781,7 @@ msgid "%1$s, %2$s"
msgstr "%1$s %2$s"
#. Translators: %s is the plural name of the of the Meetings, such as "Events".
-#: src/TouchPoint-WP/CalendarGrid.php:272
+#: src/TouchPoint-WP/CalendarGrid.php:269
msgid "There are no %s published for this month."
msgstr "No hay %s publicados para este mes."
@@ -1789,31 +1789,31 @@ msgstr "No hay %s publicados para este mes."
msgid "Radius (miles)"
msgstr "Radio (millas)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:767
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:792
msgid "Events Calendar plugin by Modern Tribe"
msgstr "Complemento de calendario de eventos de Modern Tribe"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:771
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:796
msgid "TouchPoint Meetings"
msgstr "reuniones de TouchPoint"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:777
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:802
msgid "App 2.0 Calendar"
msgstr "Calendario de la app 2.0"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:782
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:807
msgid "Events Provider"
msgstr "Proveedor de eventos"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:783
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:808
msgid "The source of events for version 2.0 of the Custom Mobile App."
msgstr "El origen de los eventos para la versión 2.0 de la aplicación móvil personalizada."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:796
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:821
msgid "To use your Events Calendar events in the Custom mobile app, set the Provider to Wordpress Plugin - Modern Tribe (regardless of which provider you're using above) and use this url:"
msgstr "Para usar sus eventos del Calendario de eventos en la aplicación móvil personalizada, configure el Proveedor en Wordpress Plugin - Modern Tribe (independientemente del proveedor que esté utilizando anteriormente) y use esta URL:"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:778
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:803
msgid "Integrate Custom Mobile app version 2.0 with The Events Calendar from Modern Tribe."
msgstr "Integre la versión 2.0 de la aplicación móvil personalizada con el calendario de eventos de Modern Tribe."
@@ -1834,7 +1834,7 @@ msgstr "Código de Residente"
msgid "Campus"
msgstr "Campus"
-#: src/TouchPoint-WP/Involvement.php:1023
+#: src/TouchPoint-WP/Involvement.php:1022
msgid "All Day"
msgstr "todo el dia"
@@ -1842,3 +1842,19 @@ msgstr "todo el dia"
msgctxt "list of items, and *others*"
msgid "others"
msgstr "otros"
+
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:434
+msgid "ipapi.co API Key"
+msgstr "Clave API de ipapi.co"
+
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:435
+msgid "Optional. Allows for geolocation of user IP addresses. This generally will work without a key, but may be rate limited."
+msgstr "Opcional. Permite la geolocalización de las direcciones IP de los usuarios. Por lo general, esto funcionará sin una clave, pero puede tener una frecuencia limitada."
+
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:445
+msgid "Allow the TouchPoint-WP developers to publicly list your site/church as using TouchPoint-WP"
+msgstr "Permitir que los desarrolladores de TouchPoint-WP incluyan públicamente su sitio/iglesia como usuarios de TouchPoint-WP"
+
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:446
+msgid "Helps other prospective churches see what can be done by combining WordPress with the best ChMS on the planet. Only applies if this site is accessible on the public internet."
+msgstr "Ayuda a otras iglesias potenciales a ver lo que se puede hacer combinando WordPress con el mejor ChMS del planeta. Solo se aplica si este sitio es accesible en Internet público."
diff --git a/i18n/TouchPoint-WP.pot b/i18n/TouchPoint-WP.pot
index e28dbddf..58dfbe9d 100644
--- a/i18n/TouchPoint-WP.pot
+++ b/i18n/TouchPoint-WP.pot
@@ -2,14 +2,14 @@
# This file is distributed under the AGPLv3+.
msgid ""
msgstr ""
-"Project-Id-Version: TouchPoint WP 0.0.93\n"
+"Project-Id-Version: TouchPoint WP 0.0.94\n"
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/TouchPoint-WP\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"POT-Creation-Date: 2024-10-10T01:55:33+00:00\n"
+"POT-Creation-Date: 2024-11-19T13:48:25+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"X-Generator: WP-CLI 2.11.0\n"
"X-Domain: TouchPoint-WP\n"
@@ -58,7 +58,7 @@ msgid "Slug"
msgstr ""
#: src/templates/admin/invKoForm.php:47
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:967
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:992
msgid "Divisions to Import"
msgstr ""
@@ -122,7 +122,7 @@ msgstr ""
#: src/templates/admin/invKoForm.php:141
#: src/templates/admin/invKoForm.php:293
#: src/templates/parts/involvement-nearby-list.php:2
-#: src/TouchPoint-WP/Meeting.php:740
+#: src/TouchPoint-WP/Meeting.php:746
#: src/TouchPoint-WP/Rsvp.php:75
#: assets/js/base-defer.js:192
#: assets/js/base-defer.js:1133
@@ -170,13 +170,13 @@ msgid "Gender"
msgstr ""
#: src/templates/admin/invKoForm.php:213
-#: src/TouchPoint-WP/Involvement.php:1854
+#: src/TouchPoint-WP/Involvement.php:1853
#: src/TouchPoint-WP/Taxonomies.php:744
msgid "Weekday"
msgstr ""
#: src/templates/admin/invKoForm.php:217
-#: src/TouchPoint-WP/Involvement.php:1880
+#: src/TouchPoint-WP/Involvement.php:1879
#: src/TouchPoint-WP/Taxonomies.php:802
msgid "Time of Day"
msgstr ""
@@ -271,7 +271,7 @@ msgstr ""
#. translators: %s will be the plural post type (e.g. Small Groups)
#: src/templates/parts/involvement-list-none.php:16
-#: src/TouchPoint-WP/Involvement.php:2101
+#: src/TouchPoint-WP/Involvement.php:2099
msgid "No %s Found."
msgstr ""
@@ -282,25 +282,25 @@ msgstr ""
#. translators: number of miles
#: src/templates/parts/involvement-nearby-list.php:10
-#: src/TouchPoint-WP/Involvement.php:3577
+#: src/TouchPoint-WP/Involvement.php:3575
msgctxt "miles. Unit is appended to a number. %2.1f is the number, so %2.1fmi looks like '12.3mi'"
msgid "%2.1fmi"
msgstr ""
#. translators: %s is "what you call TouchPoint at your church", which is a setting
-#: src/TouchPoint-WP/Auth.php:141
+#: src/TouchPoint-WP/Auth.php:142
msgid "Sign in with your %s account"
msgstr ""
-#: src/TouchPoint-WP/Auth.php:409
+#: src/TouchPoint-WP/Auth.php:410
msgid "Your login token expired."
msgstr ""
-#: src/TouchPoint-WP/Auth.php:424
+#: src/TouchPoint-WP/Auth.php:425
msgid "Your login token is invalid."
msgstr ""
-#: src/TouchPoint-WP/Auth.php:436
+#: src/TouchPoint-WP/Auth.php:437
msgid "Session could not be validated."
msgstr ""
@@ -310,7 +310,7 @@ msgid "%s is cancelled."
msgstr ""
#. Translators: %s is the plural name of the of the Meetings, such as "Events".
-#: src/TouchPoint-WP/CalendarGrid.php:272
+#: src/TouchPoint-WP/CalendarGrid.php:269
msgid "There are no %s published for this month."
msgstr ""
@@ -323,163 +323,163 @@ msgstr ""
msgid "Multi-Day"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:137
+#: src/TouchPoint-WP/Involvement.php:136
msgid "Creating an Involvement object from an object without a post_id is not yet supported."
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:496
+#: src/TouchPoint-WP/Involvement.php:495
msgid "Currently Full"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:501
+#: src/TouchPoint-WP/Involvement.php:500
msgid "Currently Closed"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:508
+#: src/TouchPoint-WP/Involvement.php:507
msgid "Registration Not Open Yet"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:514
+#: src/TouchPoint-WP/Involvement.php:513
msgid "Registration Closed"
msgstr ""
#. translators: %1$s is the date(s), %2$s is the time(s).
#. Translators: %1$s is the start date, %2$s is the start time.
-#: src/TouchPoint-WP/Involvement.php:996
-#: src/TouchPoint-WP/Involvement.php:1028
-#: src/TouchPoint-WP/Involvement.php:1121
-#: src/TouchPoint-WP/Involvement.php:1145
+#: src/TouchPoint-WP/Involvement.php:995
+#: src/TouchPoint-WP/Involvement.php:1027
+#: src/TouchPoint-WP/Involvement.php:1120
+#: src/TouchPoint-WP/Involvement.php:1144
#: src/TouchPoint-WP/Utilities/DateFormats.php:283
#: src/TouchPoint-WP/Utilities/DateFormats.php:347
msgid "%1$s at %2$s"
msgstr ""
#. translators: "Mon All Day" or "Sundays All Day"
-#: src/TouchPoint-WP/Involvement.php:999
-#: src/TouchPoint-WP/Involvement.php:1022
+#: src/TouchPoint-WP/Involvement.php:998
+#: src/TouchPoint-WP/Involvement.php:1021
msgid "%1$s All Day"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1023
+#: src/TouchPoint-WP/Involvement.php:1022
msgid "All Day"
msgstr ""
#. translators: {start date} through {end date} e.g. February 14 through August 12
-#: src/TouchPoint-WP/Involvement.php:1037
+#: src/TouchPoint-WP/Involvement.php:1036
msgid "%1$s through %2$s"
msgstr ""
#. translators: {schedule}, {start date} through {end date} e.g. Sundays at 11am, February 14 through August 12
-#: src/TouchPoint-WP/Involvement.php:1046
+#: src/TouchPoint-WP/Involvement.php:1045
msgid "%1$s, %2$s through %3$s"
msgstr ""
#. translators: Starts {start date} e.g. Starts September 15
-#: src/TouchPoint-WP/Involvement.php:1055
+#: src/TouchPoint-WP/Involvement.php:1054
msgid "Starts %1$s"
msgstr ""
#. translators: {schedule}, starting {start date} e.g. Sundays at 11am, starting February 14
-#: src/TouchPoint-WP/Involvement.php:1063
+#: src/TouchPoint-WP/Involvement.php:1062
msgid "%1$s, starting %2$s"
msgstr ""
#. translators: Through {end date} e.g. Through September 15
-#: src/TouchPoint-WP/Involvement.php:1071
+#: src/TouchPoint-WP/Involvement.php:1070
msgid "Through %1$s"
msgstr ""
#. translators: {schedule}, through {end date} e.g. Sundays at 11am, through February 14
-#: src/TouchPoint-WP/Involvement.php:1079
+#: src/TouchPoint-WP/Involvement.php:1078
msgid "%1$s, through %2$s"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1729
+#: src/TouchPoint-WP/Involvement.php:1728
#: src/TouchPoint-WP/Partner.php:814
msgid "Any"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1786
+#: src/TouchPoint-WP/Involvement.php:1785
msgid "Genders"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1829
+#: src/TouchPoint-WP/Involvement.php:1828
msgid "Language"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1902
+#: src/TouchPoint-WP/Involvement.php:1901
#: src/TouchPoint-WP/Taxonomies.php:863
msgid "Marital Status"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1903
+#: src/TouchPoint-WP/Involvement.php:1902
msgctxt "Marital status for a group of people"
msgid "Mostly Single"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1904
+#: src/TouchPoint-WP/Involvement.php:1903
msgctxt "Marital status for a group of people"
msgid "Mostly Married"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1915
+#: src/TouchPoint-WP/Involvement.php:1914
msgid "Age"
msgstr ""
#. translators: %s is for the user-provided term for the items on the map (e.g. Small Group or Partner)
-#: src/TouchPoint-WP/Involvement.php:1937
+#: src/TouchPoint-WP/Involvement.php:1936
#: src/TouchPoint-WP/Partner.php:838
msgid "The %s listed are only those shown on the map."
msgstr ""
#. translators: %s is the link to "reset the map"
-#: src/TouchPoint-WP/Involvement.php:1945
+#: src/TouchPoint-WP/Involvement.php:1944
#: src/TouchPoint-WP/Partner.php:854
msgid "Zoom out or %s to see more."
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1948
+#: src/TouchPoint-WP/Involvement.php:1947
#: src/TouchPoint-WP/Partner.php:857
msgctxt "Zoom out or reset the map to see more."
msgid "reset the map"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:2042
+#: src/TouchPoint-WP/Involvement.php:2040
msgid "This involvement type doesn't exist."
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:2052
+#: src/TouchPoint-WP/Involvement.php:2050
msgid "This involvement type doesn't have geographic locations enabled."
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:2071
+#: src/TouchPoint-WP/Involvement.php:2069
msgid "Could not locate."
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3556
+#: src/TouchPoint-WP/Involvement.php:3554
msgid "Men Only"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3559
+#: src/TouchPoint-WP/Involvement.php:3557
msgid "Women Only"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3636
+#: src/TouchPoint-WP/Involvement.php:3634
msgid "Contact Leaders"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3653
+#: src/TouchPoint-WP/Involvement.php:3651
#: src/TouchPoint-WP/Partner.php:1318
msgid "Show on Map"
msgstr ""
#. Translators: %s is the system name. "TouchPoint" by default.
-#: src/TouchPoint-WP/Involvement.php:3665
+#: src/TouchPoint-WP/Involvement.php:3663
msgid "Involvement in %s"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3705
-#: src/TouchPoint-WP/Involvement.php:3747
+#: src/TouchPoint-WP/Involvement.php:3704
+#: src/TouchPoint-WP/Involvement.php:3763
msgid "Register"
msgstr ""
@@ -507,23 +507,23 @@ msgstr ""
msgid "Get Tickets"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3738
+#: src/TouchPoint-WP/Involvement.php:3754
#: assets/js/base-defer.js:1001
msgid "Join"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3843
-#: src/TouchPoint-WP/Involvement.php:3940
+#: src/TouchPoint-WP/Involvement.php:3859
+#: src/TouchPoint-WP/Involvement.php:3962
msgid "Invalid Post Type."
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3917
-#: src/TouchPoint-WP/Person.php:1844
+#: src/TouchPoint-WP/Involvement.php:3939
+#: src/TouchPoint-WP/Person.php:1850
msgid "Contact Blocked for Spam."
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3927
-#: src/TouchPoint-WP/Person.php:1827
+#: src/TouchPoint-WP/Involvement.php:3949
+#: src/TouchPoint-WP/Person.php:1833
msgid "Contact Prohibited."
msgstr ""
@@ -559,22 +559,22 @@ msgid "Unknown"
msgstr ""
#: src/TouchPoint-WP/Meeting.php:672
-#: src/TouchPoint-WP/TouchPointWP.php:971
+#: src/TouchPoint-WP/TouchPointWP.php:1027
msgid "Only GET requests are allowed."
msgstr ""
#: src/TouchPoint-WP/Meeting.php:700
-#: src/TouchPoint-WP/TouchPointWP.php:354
+#: src/TouchPoint-WP/TouchPointWP.php:360
msgid "Only POST requests are allowed."
msgstr ""
#: src/TouchPoint-WP/Meeting.php:710
-#: src/TouchPoint-WP/TouchPointWP.php:363
+#: src/TouchPoint-WP/TouchPointWP.php:369
msgid "Invalid data provided."
msgstr ""
-#: src/TouchPoint-WP/Meeting.php:739
-#: src/TouchPoint-WP/Meeting.php:759
+#: src/TouchPoint-WP/Meeting.php:745
+#: src/TouchPoint-WP/Meeting.php:766
#: src/TouchPoint-WP/Rsvp.php:80
msgid "RSVP"
msgstr ""
@@ -620,7 +620,7 @@ msgstr ""
msgid "Registration Blocked for Spam."
msgstr ""
-#: src/TouchPoint-WP/Person.php:1682
+#: src/TouchPoint-WP/Person.php:1688
msgid "You may need to sign in."
msgstr ""
@@ -728,679 +728,695 @@ msgstr ""
msgid "Classify Partners by category chosen in settings."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:260
+#: src/TouchPoint-WP/TouchPointWP.php:266
msgid "Every 15 minutes"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:1948
+#: src/TouchPoint-WP/TouchPointWP.php:2023
msgid "Unknown Type"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2005
+#: src/TouchPoint-WP/TouchPointWP.php:2080
msgid "Your Searches"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2008
+#: src/TouchPoint-WP/TouchPointWP.php:2083
msgid "Public Searches"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2011
+#: src/TouchPoint-WP/TouchPointWP.php:2086
msgid "Status Flags"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2016
-#: src/TouchPoint-WP/TouchPointWP.php:2017
+#: src/TouchPoint-WP/TouchPointWP.php:2091
+#: src/TouchPoint-WP/TouchPointWP.php:2092
msgid "Current Value"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2134
-#: src/TouchPoint-WP/TouchPointWP.php:2170
+#: src/TouchPoint-WP/TouchPointWP.php:2209
+#: src/TouchPoint-WP/TouchPointWP.php:2245
msgid "Invalid or incomplete API Settings."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2184
-#: src/TouchPoint-WP/TouchPointWP.php:2228
+#: src/TouchPoint-WP/TouchPointWP.php:2259
+#: src/TouchPoint-WP/TouchPointWP.php:2303
msgid "Host appears to be missing from TouchPoint-WP configuration."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2301
+#: src/TouchPoint-WP/TouchPointWP.php:2376
msgid "The scripts on TouchPoint that interact with this plugin are out-of-date, and an automatic update failed."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2360
+#: src/TouchPoint-WP/TouchPointWP.php:2435
msgid "People Query Failed"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:255
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:258
msgid "Basic Settings"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:256
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:259
msgid "Connect to TouchPoint and choose which features you wish to use."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:260
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:263
msgid "Enable Authentication"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:261
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:264
msgid "Allow TouchPoint users to sign into this website with TouchPoint."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:272
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:275
msgid "Enable RSVP Tool"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:273
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:276
msgid "Add a crazy-simple RSVP button to WordPress event pages."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:280
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:283
msgid "Enable Involvements"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:281
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:284
msgid "Load Involvements from TouchPoint for involvement listings and entries native in your website."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:291
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:294
msgid "Enable Meeting Calendar"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:292
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:295
msgid "Load Meetings from TouchPoint for a calendar, native in your website."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:302
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:305
msgid "Enable Public People Lists"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:303
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:306
msgid "Import public people listings from TouchPoint (e.g. staff or elders)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:313
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:316
msgid "Enable Global Partner Listings"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:314
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:317
msgid "Import ministry partners from TouchPoint to list publicly."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:324
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:327
msgid "Enable Campuses"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:325
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:328
msgid "Import campuses as a taxonomy. (You probably want to do this if you're multi-campus.)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:335
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:338
msgid "Display Name"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:336
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:339
msgid "What your church calls your TouchPoint database."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:346
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:349
msgid "TouchPoint Host Name"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:347
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:350
msgid "The domain for your TouchPoint database, without the https or any slashes."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:359
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:362
msgid "Custom Mobile App Deeplink Host Name"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:360
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:363
msgid "The domain for your mobile app deeplinks, without the https or any slashes. If you aren't using the custom mobile app, leave this blank."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:371
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:374
msgid "TouchPoint API Username"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:372
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:375
msgid "The username of a user account in TouchPoint with API permissions. It is strongly recommended that you create a separate person/user for this purpose, rather than using a staff member's account."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:383
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:386
msgid "TouchPoint API User Password"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:384
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:387
msgid "The password of a user account in TouchPoint with API permissions."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:396
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:399
msgid "TouchPoint API Script Name"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:397
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:400
msgid "The name of the Python script loaded into TouchPoint. Don't change this unless you know what you're doing."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:408
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:411
msgid "Google Maps Javascript API Key"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:409
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:412
msgid "Required for embedding maps."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:420
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:423
msgid "Google Maps Geocoding API Key"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:421
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:424
msgid "Optional. Allows for reverse geocoding of user locations."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:439
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:444
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:434
+msgid "ipapi.co API Key"
+msgstr ""
+
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:435
+msgid "Optional. Allows for geolocation of user IP addresses. This generally will work without a key, but may be rate limited."
+msgstr ""
+
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:445
+msgid "Allow the TouchPoint-WP developers to publicly list your site/church as using TouchPoint-WP"
+msgstr ""
+
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:446
+msgid "Helps other prospective churches see what can be done by combining WordPress with the best ChMS on the planet. Only applies if this site is accessible on the public internet."
+msgstr ""
+
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:464
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:469
msgid "Generate Scripts"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:442
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:467
msgid "Once your settings on this page are set and saved, use this tool to generate the scripts needed for TouchPoint in a convenient installation package."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:443
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:468
msgid "Upload the package to {tpName} here"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:460
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:485
msgid "People"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:461
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:486
msgid "Manage how people are synchronized between TouchPoint and WordPress."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:465
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:490
msgid "Contact Keywords"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:466
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:491
msgid "These keywords will be used when someone clicks the \"Contact\" button on a Person's listing or profile."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:477
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:502
msgid "Extra Value for WordPress User ID"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:478
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:503
msgid "The name of the extra value to use for the WordPress User ID. If you are using multiple WordPress instances with one TouchPoint database, you will need these values to be unique between WordPress instances. In most cases, the default is fine."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:488
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:513
msgid "Extra Value: Biography"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:489
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:514
msgid "Import a Bio from a Person Extra Value field. Can be an HTML or Text Extra Value. This will overwrite any values set by WordPress. Leave blank to not import."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:499
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:737
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:524
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:762
msgid "Extra Values to Import"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:500
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:525
msgid "Import People Extra Value fields as User Meta data."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:516
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:541
msgid "Authentication"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:517
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:542
msgid "Allow users to log into WordPress using TouchPoint."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:521
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:546
msgid "Make TouchPoint the default authentication method."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:522
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:547
msgid "By checking this box, the TouchPoint login page will become the default. To prevent the redirect and reach the standard WordPress login page, add 'tp_no_redirect' as a URL parameter."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:531
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:556
msgid "Enable Auto-Provisioning"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:532
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:557
msgid "Automatically create WordPress users, if needed, to match authenticated TouchPoint users."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:541
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:566
msgid "Change 'Edit Profile' links"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:542
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:567
msgid "\"Edit Profile\" links will take the user to their TouchPoint profile, instead of their WordPress profile."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:551
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:576
msgid "Enable full logout"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:552
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:577
msgid "Logout of TouchPoint when logging out of WordPress."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:558
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:583
msgid "Prevent Subscriber Admin Bar"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:559
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:584
msgid "By enabling this option, users who can't edit anything won't see the Admin bar."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:573
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:598
msgid "Involvements"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:574
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:599
msgid "Import Involvements from TouchPoint to list them on your website, for Small Groups, Classes, and more. Select the division(s) that immediately correspond to the type of Involvement you want to list. For example, if you want a Small Group list and have a Small Group Division, only select the Small Group Division. If you want Involvements to be filterable by additional Divisions, select those Divisions on the Divisions tab, not here."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:579
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:604
msgid "Involvement Post Types"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:609
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:634
msgid "Global Partners"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:610
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:635
msgid "Manage how global partners are imported from TouchPoint for listing on WordPress. Partners are grouped by family, and content is provided through Family Extra Values. This works for both People and Business records."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:614
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:639
msgid "Global Partner Name (Plural)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:615
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:640
msgid "What you call Global Partners at your church"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:625
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:650
msgid "Global Partner Name (Singular)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:626
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:651
msgid "What you call a Global Partner at your church"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:636
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:661
msgid "Global Partner Name for Secure Places (Plural)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:637
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:662
msgid "What you call Secure Global Partners at your church"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:647
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:672
msgid "Global Partner Name for Secure Places (Singular)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:648
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:673
msgid "What you call a Secure Global Partner at your church"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:658
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:683
msgid "Global Partner Slug"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:659
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:684
msgid "The root path for Global Partner posts"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:671
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:696
msgid "Saved Search"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:672
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:697
msgid "Anyone who is included in this saved search will be included in the listing."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:682
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:707
msgid "Extra Value: Description"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:683
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:708
msgid "Import a description from a Family Extra Value field. Can be an HTML or Text Extra Value. This becomes the body of the Global Partner post."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:693
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:718
msgid "Extra Value: Summary"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:694
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:719
msgid "Optional. Import a short description from a Family Extra Value field. Can be an HTML or Text Extra Value. If not provided, the full bio will be truncated."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:704
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:729
msgid "Latitude Override"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:705
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:730
msgid "Designate a text Family Extra Value that will contain a latitude that overrides any locations on the partner's profile for the partner map. Both latitude and longitude must be provided for an override to take place."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:715
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:740
msgid "Longitude Override"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:716
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:741
msgid "Designate a text Family Extra Value that will contain a longitude that overrides any locations on the partner's profile for the partner map. Both latitude and longitude must be provided for an override to take place."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:726
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:751
msgid "Public Location"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:727
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:752
msgid "Designate a text Family Extra Value that will contain the partner's location, as you want listed publicly. For partners who have DecoupleLocation enabled, this field will be associated with the map point, not the list entry."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:738
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:763
msgid "Import Family Extra Value fields as Meta data on the partner's post"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:749
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:774
msgid "Primary Taxonomy"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:750
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:775
msgid "Import a Family Extra Value as the primary means by which partners are organized."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:767
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:792
msgid "Events Calendar plugin by Modern Tribe"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:771
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:796
msgid "TouchPoint Meetings"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:777
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:802
msgid "App 2.0 Calendar"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:778
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:803
msgid "Integrate Custom Mobile app version 2.0 with The Events Calendar from Modern Tribe."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:782
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:807
msgid "Events Provider"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:783
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:808
msgid "The source of events for version 2.0 of the Custom Mobile App."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:793
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:818
msgid "Events for Custom Mobile App"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:796
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:821
msgid "To use your Events Calendar events in the Custom mobile app, set the Provider to Wordpress Plugin - Modern Tribe (regardless of which provider you're using above) and use this url:"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:798
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:823
msgid "Preview"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:813
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:838
msgid "Use Standardizing Stylesheet"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:814
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:839
msgid "Inserts some basic CSS into the events feed to clean up display"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:826
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:851
msgid "Meeting Calendars"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:827
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:852
msgid "Import Meetings from TouchPoint to a calendar on your website."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:831
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:856
msgid "Meeting Name (Plural)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:832
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:857
msgid "What you call Meetings at your church"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:837
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:839
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:862
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:864
msgid "Meetings"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:837
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:839
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:862
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:864
msgid "Events"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:843
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:868
msgid "Meeting Name (Singular)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:844
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:869
msgid "What you call a Meeting at your church"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:849
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:851
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:874
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:876
msgid "Meeting"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:849
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:851
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:874
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:876
msgid "Event"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:855
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:880
msgid "Meetings Slug"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:856
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:881
msgid "The root path for Meetings"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:868
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:893
msgid "Days of Future"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:869
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:894
msgid "Meetings more than this many days in the future will not be imported."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:881
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:906
msgid "Archive After Days"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:882
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:907
msgid "Meetings more than this many days in the past will be moved to the Events Archive. Once this date passes, meeting information will no longer update."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:894
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:919
msgid "Days of History"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:895
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:920
msgid "Meetings will be kept for the public calendar until the event is this many days in the past."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:907
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:932
msgid "Meeting Deletion Handling"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:908
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:933
msgid "When a Meeting is deleted in TouchPoint that has already been imported to WordPress, how should that be handled?"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:914
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:939
msgid "Always delete from WordPress"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:915
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:940
msgid "Mark the occurrence as cancelled"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:925
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:950
msgid "Divisions"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:926
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:951
msgid "Import Divisions from TouchPoint to your website as a taxonomy. These are used to classify users and involvements."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:930
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:955
msgid "Division Name (Plural)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:931
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:956
msgid "What you call Divisions at your church"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:942
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:967
msgid "Division Name (Singular)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:943
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:968
msgid "What you call a Division at your church"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:954
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:979
msgid "Division Slug"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:955
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:980
msgid "The root path for the Division Taxonomy"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:968
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:993
msgid "These Divisions will be imported for the taxonomy"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:979
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1110
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1004
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1135
msgid "Post Types"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:980
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1005
msgid "Select post types which should have Divisions available as a native taxonomy."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:994
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1000
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1019
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1025
msgid "Locations"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:995
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1020
msgid "Locations are physical places, probably campuses. None are required, but they can help present geographic information clearly."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1019
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1044
msgid "Campuses"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1020
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1045
msgid "Import Campuses from TouchPoint to your website as a taxonomy. These are used to classify users and involvements."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1027
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1052
msgid "Campus Name (Plural)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1028
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1053
msgid "What you call Campuses at your church"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1039
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1064
msgid "Campus Name (Singular)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1040
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1065
msgid "What you call a Campus at your church"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1051
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1076
msgid "Campus Slug"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1052
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1077
msgid "The root path for the Campus Taxonomy"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1068
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1093
msgid "Resident Codes"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1069
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1094
msgid "Import Resident Codes from TouchPoint to your website as a taxonomy. These are used to classify users and involvements that have locations."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1073
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1098
msgid "Resident Code Name (Plural)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1074
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1099
msgid "What you call Resident Codes at your church"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1085
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1110
msgid "Resident Code Name (Singular)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1086
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1111
msgid "What you call a Resident Code at your church"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1097
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1122
msgid "Resident Code Slug"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1098
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1123
msgid "The root path for the Resident Code Taxonomy"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1111
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1136
msgid "Select post types which should have Resident Codes available as a native taxonomy."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1274
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1299
msgid "password saved"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1328
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1329
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1353
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1354
msgid "TouchPoint-WP"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1377
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1402
msgid "Settings"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1609
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1639
msgid "Script Update Failed"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1731
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1761
msgid "TouchPoint-WP Settings"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1782
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1812
msgid "Save Settings"
msgstr ""
diff --git a/src/TouchPoint-WP/Stats.php b/src/TouchPoint-WP/Stats.php
index 386d6e11..f6380b84 100644
--- a/src/TouchPoint-WP/Stats.php
+++ b/src/TouchPoint-WP/Stats.php
@@ -177,6 +177,8 @@ public function getStatsForSubmission(): array
{
$data = $this->jsonSerialize();
+ $sets = TouchPointWP::instance()->settings;
+
$data['site'] = get_site_url();
$data['plugin'] = 'TouchPointWP';
$data['version'] = TouchPointWP::VERSION;
@@ -186,6 +188,7 @@ public function getStatsForSubmission(): array
$data['wpTimezone'] = get_option('timezone_string');
$data['adminEmail'] = get_option('admin_email');
$data['siteName'] = get_bloginfo('name');
+ $data['listPublicly'] = $sets->enable_public_listing === 'on';
$data['installId'] = $this->installId;
$data['privateKey'] = $this->privateKey;
diff --git a/src/TouchPoint-WP/TouchPointWP.php b/src/TouchPoint-WP/TouchPointWP.php
index e203be6d..c9ab56aa 100644
--- a/src/TouchPoint-WP/TouchPointWP.php
+++ b/src/TouchPoint-WP/TouchPointWP.php
@@ -673,6 +673,7 @@ protected function createTables(): void
createdDT datetime DEFAULT NOW(),
updatedDT datetime DEFAULT NOW() ON UPDATE NOW(),
+ listPublicly tinyint(1) DEFAULT 1,
lastQueryDT datetime DEFAULT NULL,
lastQueryStatus int(3) DEFAULT NULL,
diff --git a/src/TouchPoint-WP/TouchPointWP_Settings.php b/src/TouchPoint-WP/TouchPointWP_Settings.php
index b57b1eae..54ea88e1 100644
--- a/src/TouchPoint-WP/TouchPointWP_Settings.php
+++ b/src/TouchPoint-WP/TouchPointWP_Settings.php
@@ -33,6 +33,8 @@
* @property-read string google_geo_api_key Google Maps API Key for geocoding
* @property-read string ipapi_key The API key for ipapi.co for geolocation.
*
+ * @property-read string enable_public_listing Whether to allow the site to be listed as using TouchPoint-WP
+ *
* @property-read array people_contact_keywords Keywords to use for the generic Contact person button.
* @property-read string people_ev_bio Extra Value field that should be imported as a User bio.
* @property-read string people_ev_wpId The name of the extra value field where the WordPress User ID will be stored.
@@ -438,6 +440,17 @@ private function settingsFields(bool|string $includeDetail = false): array
'default' => '',
'placeholder' => '',
],
+ [
+ 'id' => 'enable_public_listing',
+ 'label' => __('Allow the TouchPoint-WP developers to publicly list your site/church as using TouchPoint-WP', 'TouchPoint-WP'),
+ 'description' => __(
+ "Helps other prospective churches see what can be done by combining WordPress with the best ChMS on the planet. Only applies if this site is accessible on the public internet.",
+ 'TouchPoint-WP'
+ ),
+ 'type' => 'checkbox',
+ 'default' => 'on',
+ 'autoload' => false,
+ ],
],
];
From bcdb84bda0c007ad236bb32fd7495fadee28f71c Mon Sep 17 00:00:00 2001
From: "James K."
Date: Tue, 19 Nov 2024 08:56:20 -0500
Subject: [PATCH 210/423] make list publicly an int
---
src/TouchPoint-WP/Stats.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/TouchPoint-WP/Stats.php b/src/TouchPoint-WP/Stats.php
index f6380b84..4f88dfd5 100644
--- a/src/TouchPoint-WP/Stats.php
+++ b/src/TouchPoint-WP/Stats.php
@@ -188,7 +188,7 @@ public function getStatsForSubmission(): array
$data['wpTimezone'] = get_option('timezone_string');
$data['adminEmail'] = get_option('admin_email');
$data['siteName'] = get_bloginfo('name');
- $data['listPublicly'] = $sets->enable_public_listing === 'on';
+ $data['listPublicly'] = 1 * ($sets->enable_public_listing === 'on');
$data['installId'] = $this->installId;
$data['privateKey'] = $this->privateKey;
From 3ec316545d76aea373088b197c8fe4e4c77a7924 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Tue, 19 Nov 2024 10:54:23 -0500
Subject: [PATCH 211/423] Fix a semantic error with jsonSerialize
---
src/TouchPoint-WP/Stats.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/TouchPoint-WP/Stats.php b/src/TouchPoint-WP/Stats.php
index 4f88dfd5..a3e41c21 100644
--- a/src/TouchPoint-WP/Stats.php
+++ b/src/TouchPoint-WP/Stats.php
@@ -220,7 +220,7 @@ protected function submitStats(): void
*
* @inheritDoc
*/
- public function jsonSerialize()
+ public function jsonSerialize(): array
{
$r = [];
From 7aa24949b5c463736211ee54ea7966b6c822ddce Mon Sep 17 00:00:00 2001
From: "James K."
Date: Tue, 19 Nov 2024 10:54:37 -0500
Subject: [PATCH 212/423] Updating readme about Events and stats
---
README.md | 22 ++++++++++++++++------
1 file changed, 16 insertions(+), 6 deletions(-)
diff --git a/README.md b/README.md
index edada27e..b2427661 100644
--- a/README.md
+++ b/README.md
@@ -22,6 +22,11 @@ If you're a developer looking to leverage this for a church, you're welcome to b
[Small Groups Example.](https://www.tenth.org/smallgroups)
[Classes Example.](https://www.tenth.org/abs)
+### Event Calendar
+Automatically sync meetings from TouchPoint to your WordPress site, with details and images imported from their
+involvements.
+[Example.](https://www.tenth.org/events)
+
### Crazy-Simple RSVP interface
Let folks RSVP for an event for each member in their family in just a few clicks.
No login required, just an email address and zip code.
@@ -33,19 +38,20 @@ Show your Staff members, Elders, or other collections of people, automatically k
### Embedded Reports
Any SQL or Python report generated in TouchPoint can be embedded into your website and automatically updated. For example,
we have a financial update chart that is automatically updated to reflect giving.
+[Example (the bar graph on this page).](https://www.tenth.org/give)
### Outreach Partners
Automatically import partner bios and info from TouchPoint for display on your public website, with
appropriate care for their security.
[Example.](https://www.tenth.org/outreach/partners)
-### Events
-Improve display of events in the TouchPoint Custom Mobile App by providing content from [The Events Calendar Plugin by
-Modern Tribe](https://theeventscalendar.com/). This is compatible with both the free and "Pro" versions.
-
### Authentication (Beta)
Authenticate TouchPoint users to WordPress, so you can know your website users.
+### Old App Calendar (Deprecated)
+Improve display of events in the TouchPoint Custom Mobile App by providing content from [The Events Calendar Plugin by
+Modern Tribe](https://theeventscalendar.com/). This is compatible with both the free and "Pro" versions.
+
## Costs & Considerations
**This plugin is FREE!** We developed this plugin for us, but want to share it with any other churches that would
@@ -65,12 +71,16 @@ If you're not sure whether WordPress is the right tool for you, feel free to get
relationships with several firms who could help with the setup and technical maintenance if you're interested. But,
it's probably not the right tool for every church.
+We do collect some basic usage data when you use this plugin, including the admin email address configured in WordPress,
+the site address, and the name of the site. We use this data to understand how the plugin is being used and to improve
+it. You can choose in the plugin settings whether to allow us to list your site publicly as a reference, including some
+basic anonymous statistics such as the number of involvements you have synced or the number of people who have RSVPed to
+meetings through the plugin.
+
## Future Features
- Authenticate
- Track viewership of webpages and web resources non-anonymously. (Know who attended your virtual worship service.)
- Sync WordPress Permissions with TouchPoint involvements or roles.
-- Events
- - Sync TouchPoint Meetings with events on your public web calendar.
- Small Groups
- Suggest demographically-targeted small groups.
- Integrated Directory
From 701eb35bc846cb97880d33972e59d09673ad75c7 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Wed, 20 Nov 2024 22:51:04 -0500
Subject: [PATCH 213/423] Cron to submit stats. Theoretically closes #209
---
src/TouchPoint-WP/Stats.php | 66 +++++++++++++++++++++++++++++-
src/TouchPoint-WP/TouchPointWP.php | 8 ++++
2 files changed, 73 insertions(+), 1 deletion(-)
diff --git a/src/TouchPoint-WP/Stats.php b/src/TouchPoint-WP/Stats.php
index a3e41c21..d118f882 100644
--- a/src/TouchPoint-WP/Stats.php
+++ b/src/TouchPoint-WP/Stats.php
@@ -30,8 +30,10 @@
* @property int $userAuths
* @property int $softAuths
*/
-class Stats implements api, \JsonSerializable
+class Stats implements api, \JsonSerializable, updatesViaCron
{
+ public const CRON_HOOK = TouchPointWP::HOOK_PREFIX . 'stats_submit';
+
protected static ?self $instance = null;
private bool $_dirty = false;
@@ -111,6 +113,68 @@ protected function __destruct()
}
}
+ /**
+ * Loads the module and initializes the other actions.
+ *
+ * @return bool
+ */
+ public static function load(): bool
+ {
+ add_action(TouchPointWP::INIT_ACTION_HOOK, [self::class, 'init']);
+
+ //////////////////
+ /// Shortcodes ///
+ //////////////////
+
+
+ ///////////////
+ /// Syncing ///
+ ///////////////
+
+ // Setup cron for calling home weekly.
+ add_action(self::CRON_HOOK, [self::class, 'updateCron']);
+ if ( ! wp_next_scheduled(self::CRON_HOOK)) {
+ // Runs at 4am EST (9am UTC)
+ wp_schedule_event(
+ date('U', strtotime('tomorrow') + 3600 * 9),
+ 'weekly',
+ self::CRON_HOOK
+ );
+ }
+
+ return true;
+ }
+
+ /**
+ * Call home, triggered by migration.
+ *
+ * @return void
+ */
+ public static function migrate(): void
+ {
+ self::instance()->submitStats();
+ }
+
+ /**
+ * Call home, triggered by cron.
+ *
+ * @return void
+ */
+ public static function updateCron(): void
+ {
+ self::instance()->submitStats();
+ }
+
+ /**
+ * Check to see if a cron run is needed, and run it if so. Connected to an init function.
+ *
+ * @return void
+ */
+ public static function checkUpdates()
+ {
+ // This method does nothing because the overhead is relatively great, and should not be hooked to every page load.
+ }
+
/**
* Save the stats to the database.
*
diff --git a/src/TouchPoint-WP/TouchPointWP.php b/src/TouchPoint-WP/TouchPointWP.php
index c9ab56aa..d5ad9e9f 100644
--- a/src/TouchPoint-WP/TouchPointWP.php
+++ b/src/TouchPoint-WP/TouchPointWP.php
@@ -731,6 +731,8 @@ public static function load($file): TouchPointWP
}
}
+ Stats::load();
+
// Load Auth tool if enabled.
if ($instance->settings->enable_authentication === "on") {
if ( ! TOUCHPOINT_COMPOSER_ENABLED) {
@@ -1344,6 +1346,8 @@ public function activation(): void
self::queueFlushRewriteRules();
$this->migrate(true);
+
+ Stats::migrate();
}
/**
@@ -1353,6 +1357,8 @@ public function deactivation(): void
{
$this->logVersion();
+ Stats::migrate();
+
self::clearScheduledHooks();
self::flushRewriteRules();
@@ -1367,6 +1373,8 @@ public static function uninstall(): void
// TODO remove all taxonomies (maybe)
// TODO remove all posts
+ Stats::migrate();
+
self::clearScheduledHooks();
self::dropTables();
From e9a5ee56c61e5521efcf56b03c39ec37e6ea83a0 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Thu, 21 Nov 2024 19:02:57 -0500
Subject: [PATCH 214/423] Correct missing references
---
src/TouchPoint-WP/Stats.php | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/src/TouchPoint-WP/Stats.php b/src/TouchPoint-WP/Stats.php
index d118f882..ad7202fe 100644
--- a/src/TouchPoint-WP/Stats.php
+++ b/src/TouchPoint-WP/Stats.php
@@ -15,6 +15,7 @@
if ( ! TOUCHPOINT_COMPOSER_ENABLED) {
require_once "api.php";
+ require_once "updatesViaCron.php";
}
/**
@@ -120,8 +121,6 @@ protected function __destruct()
*/
public static function load(): bool
{
- add_action(TouchPointWP::INIT_ACTION_HOOK, [self::class, 'init']);
-
//////////////////
/// Shortcodes ///
//////////////////
From c8c3d8ab54061eb2b3a7cbc3815d4673420bb467 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Thu, 21 Nov 2024 20:00:17 -0500
Subject: [PATCH 215/423] Add ability to limit involvement import to a given
campus. Closes #208
---
src/TouchPoint-WP/Involvement.php | 2 +
.../Involvement_PostTypeSettings.php | 2 +
src/TouchPoint-WP/Taxonomies.php | 8 +++-
src/TouchPoint-WP/TouchPointWP.php | 4 --
src/python/WebApi.py | 8 +++-
src/templates/admin/invKoForm.php | 41 ++++++++++++++++++-
6 files changed, 58 insertions(+), 7 deletions(-)
diff --git a/src/TouchPoint-WP/Involvement.php b/src/TouchPoint-WP/Involvement.php
index 6928a63d..7d1b242c 100644
--- a/src/TouchPoint-WP/Involvement.php
+++ b/src/TouchPoint-WP/Involvement.php
@@ -2490,6 +2490,8 @@ final protected static function updateInvolvementPostsForType(Involvement_PostTy
}
try {
+ $qOpts['camps'] = Utilities::idArrayToIntArray($typeSets->importCampuses, false);
+
if ($typeSets->postType === Meeting::POST_TYPE) {
$qOpts['featMtgs'] = 1;
$qOpts['exDivs'] = Utilities::idArrayToIntArray(Involvement_PostTypeSettings::getAllDivs(), false);
diff --git a/src/TouchPoint-WP/Involvement_PostTypeSettings.php b/src/TouchPoint-WP/Involvement_PostTypeSettings.php
index 480b0b84..1c3aa0cf 100644
--- a/src/TouchPoint-WP/Involvement_PostTypeSettings.php
+++ b/src/TouchPoint-WP/Involvement_PostTypeSettings.php
@@ -19,6 +19,7 @@
* @property-read string $namePlural
* @property-read string $slug
* @property-read string[] $importDivs
+ * @property-read string[] $importCampuses
* @property-read bool $useImages
* @property-read bool $useGeo
* @property-read bool $hierarchical
@@ -43,6 +44,7 @@ class Involvement_PostTypeSettings
protected string $namePlural;
protected string $slug;
protected array $importDivs = [];
+ protected array $importCampuses = [];
protected bool $useImages = false;
protected bool $useGeo = false;
protected bool $hierarchical = false;
diff --git a/src/TouchPoint-WP/Taxonomies.php b/src/TouchPoint-WP/Taxonomies.php
index 12f79cd2..a0569bc5 100644
--- a/src/TouchPoint-WP/Taxonomies.php
+++ b/src/TouchPoint-WP/Taxonomies.php
@@ -281,8 +281,14 @@ public static function insertTerms($instance = null): void
// Campuses
$types = self::getPostTypesForTaxonomy($instance, self::TAX_CAMPUS);
if (count($types) > 0) {
+ if ($instance->settings->enable_campuses == "on") {
+ $campuses = $instance->getCampuses();
+ } else {
+ $campuses = [];
+ }
+
self::insertTermsForLookupBasedTaxonomy(
- $instance->getCampuses(),
+ $campuses,
self::TAX_CAMPUS,
self::$forceTermLookupIdUpdate
);
diff --git a/src/TouchPoint-WP/TouchPointWP.php b/src/TouchPoint-WP/TouchPointWP.php
index d5ad9e9f..e00a1ed8 100644
--- a/src/TouchPoint-WP/TouchPointWP.php
+++ b/src/TouchPoint-WP/TouchPointWP.php
@@ -1689,10 +1689,6 @@ public function getResCodes(): array
*/
public function getCampuses(): array
{
- if ($this->settings->enable_campuses !== "on") {
- return [];
- }
-
$cObj = $this->settings->get('meta_campuses');
$needsUpdate = false;
diff --git a/src/python/WebApi.py b/src/python/WebApi.py
index c7fcae1d..a0824092 100644
--- a/src/python/WebApi.py
+++ b/src/python/WebApi.py
@@ -193,10 +193,14 @@ def get_person_info_for_sync(person_obj):
regex = re.compile('[^0-9,]')
divs = regex.sub('', Data.divs)
exDivs = regex.sub('', Data.exDivs)
+ camps = regex.sub('', Data.camps)
+
if (len(divs)) < 1:
divs = '0'
if (len(exDivs)) < 1:
exDivs = '-1'
+ if (len(camps)) < 1:
+ camps = '-1'
mtgHist = -int(Data.mtgHist) if Data.mtgHist != "" else 0
mtgFuture = int(Data.mtgFuture) if Data.mtgFuture != "" else 365
@@ -226,6 +230,7 @@ def get_person_info_for_sync(person_obj):
LEFT JOIN Organizations o3 ON o2.ParentOrgId = o3.OrganizationId
WHERE m.OrganizationId = o.OrganizationId
AND o.ShowInSites = {2}
+ AND (o.CampusId IN ({6}) OR -1 IN ({6}) OR (o.CampusId IS NULL AND 0 IN ({6})))
AND m.MeetingDate > DATEADD(day, {3}, GETDATE())
AND m.MeetingDate < DATEADD(day, {4}, GETDATE())
GROUP BY m.OrganizationId, o2.OrganizationId, o3.OrganizationId, o3.ParentOrgId
@@ -463,7 +468,7 @@ def get_person_info_for_sync(person_obj):
LEFT JOIN lookup.Campus c
ON o.CampusId = c.Id
ORDER BY o.parentInvId ASC, o.OrganizationId ASC''').
- format(divs, hostMemTypes, featMtgs, mtgHist, mtgFuture, exDivs))
+ format(divs, hostMemTypes, featMtgs, mtgHist, mtgFuture, exDivs, camps))
groups = model.SqlListDynamicData(invSql)
@@ -1143,6 +1148,7 @@ def get_person_info_for_sync(person_obj):
# noinspection SqlResolve,SqlConstantCondition,SqlConstantExpression
sqlReportsQ = 'SELECT Id, Name, Body, TypeId FROM Content WHERE 1=0'
+ # noinspection SqlResolve,SqlConstantCondition,SqlConstantExpression
pyReportsQ = 'SELECT Id, Name, Body, TypeId FROM Content WHERE 1=0'
sqlPs = {}
pyPs = {}
diff --git a/src/templates/admin/invKoForm.php b/src/templates/admin/invKoForm.php
index 5ed1be59..9e46d491 100644
--- a/src/templates/admin/invKoForm.php
+++ b/src/templates/admin/invKoForm.php
@@ -5,8 +5,9 @@
$divs = json_encode($this->parent->getDivisions());
$kws = json_encode($this->parent->getKeywords());
+$camps = json_encode($this->parent->getCampuses());
/** @noinspection CommaExpressionJS */
-echo "";
+echo "";
?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -272,6 +296,7 @@ function InvType(data) {
this.namePlural = ko.observable(data.namePlural ?? "");
this.slug = ko.observable(data.slug ?? "smallgroup").extend({slug: 0});
this.importDivs = ko.observable(data.importDivs ?? []);
+ this.importCampuses = ko.observable(data.importCampuses ?? []);
this.useGeo = ko.observable(data.useGeo ?? false);
this.useImages = ko.observable(data.useImages ?? true);
this.excludeIf = ko.observable(data.excludeIf ?? []);
@@ -302,6 +327,19 @@ function InvType(data) {
}
})
+ this._importCampusesAll = ko.pureComputed({
+ read: function() {
+ return self.importCampuses().length === 0;
+ },
+ write: function(value) {
+ if (value) {
+ self.importCampuses([]);
+ } else if (self.importCampuses().length === 0) {
+ self.importCampuses(['c0']);
+ }
+ }
+ });
+
// operations
this.toggleVisibility = function() {
self._visible(! self._visible())
@@ -321,6 +359,7 @@ function InvTypeVM(invData) {
self.invTypes = ko.observableArray(invInits);
self.divisions = tpvm._vmContext.divs;
self.keywords = tpvm._vmContext.kws;
+ self.campuses = tpvm._vmContext.campuses;
// Operations
self.addInvType = function() {
From 38e79b50cf771ccb5d2625a56e02db079f698bd4 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Thu, 21 Nov 2024 20:13:36 -0500
Subject: [PATCH 216/423] Automatically update private key periodically.
---
src/TouchPoint-WP/Stats.php | 16 +++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)
diff --git a/src/TouchPoint-WP/Stats.php b/src/TouchPoint-WP/Stats.php
index ad7202fe..24a9cbb9 100644
--- a/src/TouchPoint-WP/Stats.php
+++ b/src/TouchPoint-WP/Stats.php
@@ -161,7 +161,9 @@ public static function migrate(): void
*/
public static function updateCron(): void
{
- self::instance()->submitStats();
+ $i = self::instance();
+ $i->replacePrivateKey();
+ $i->submitStats();
}
/**
@@ -297,6 +299,18 @@ public function jsonSerialize(): array
return $r;
}
+ /**
+ * Replace the private key with a new one. Should be done periodically.
+ *
+ * @return void
+ */
+ protected function replacePrivateKey(): void
+ {
+ $this->privateKey = Utilities::createGuid();
+ $this->_dirty = true;
+ $this->updateDb();
+ }
+
/**
* Update the stats that are determined from queries.
*
From 99362cd14d428b48f6f09b72686d9ecb6b6ac321 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Thu, 21 Nov 2024 20:14:55 -0500
Subject: [PATCH 217/423] Version bump and translation updates
---
composer.json | 2 +-
docs | 2 +-
i18n/TouchPoint-WP-es_ES.po | 207 +++++++++---------
i18n/TouchPoint-WP.pot | 225 ++++++++++----------
package.json | 2 +-
src/TouchPoint-WP/TouchPointWP.php | 2 +-
src/TouchPoint-WP/Utilities/DateFormats.php | 6 +-
src/python/WebApi.py | 2 +-
touchpoint-wp.php | 2 +-
9 files changed, 236 insertions(+), 214 deletions(-)
diff --git a/composer.json b/composer.json
index 42c30436..cc55b172 100644
--- a/composer.json
+++ b/composer.json
@@ -3,7 +3,7 @@
"description": "A WordPress Plugin for integrating with TouchPoint Church Management Software.",
"license": "AGPL-3.0-or-later",
"type": "wordpress-plugin",
- "version": "0.0.94",
+ "version": "0.0.95",
"keywords": [
"wordpress",
"wp",
diff --git a/docs b/docs
index 5a910bf2..e53d723f 160000
--- a/docs
+++ b/docs
@@ -1 +1 @@
-Subproject commit 5a910bf25a4c0f33996ed097f8f3bc5d09a9ea3a
+Subproject commit e53d723f44bfc397d48a2707d8a9d2567762ff56
diff --git a/i18n/TouchPoint-WP-es_ES.po b/i18n/TouchPoint-WP-es_ES.po
index 775cffb9..7cd03594 100644
--- a/i18n/TouchPoint-WP-es_ES.po
+++ b/i18n/TouchPoint-WP-es_ES.po
@@ -36,56 +36,57 @@ msgstr "James K"
msgid "https://github.com/jkrrv"
msgstr "https://github.com/jkrrv"
-#: src/templates/admin/invKoForm.php:17
+#: src/templates/admin/invKoForm.php:18
#: src/templates/admin/locationsKoForm.php:13
#: src/templates/admin/locationsKoForm.php:58
msgid "Delete"
msgstr "Borrar"
-#: src/templates/admin/invKoForm.php:23
+#: src/templates/admin/invKoForm.php:24
msgid "Singular Name"
msgstr "Nombre singular"
-#: src/templates/admin/invKoForm.php:31
+#: src/templates/admin/invKoForm.php:32
msgid "Plural Name"
msgstr "Nombre Plural"
-#: src/templates/admin/invKoForm.php:39
+#: src/templates/admin/invKoForm.php:40
msgid "Slug"
msgstr "Slug"
-#: src/templates/admin/invKoForm.php:47
+#: src/templates/admin/invKoForm.php:48
#: src/TouchPoint-WP/TouchPointWP_Settings.php:992
msgid "Divisions to Import"
msgstr "Divisiones a Importar"
-#: src/templates/admin/invKoForm.php:60
+#: src/templates/admin/invKoForm.php:84
msgid "Import Hierarchically (Parent-Child Relationships)"
msgstr "Importar jerárquicamente (relaciones padre-hijo)"
-#: src/templates/admin/invKoForm.php:86
+#: src/templates/admin/invKoForm.php:110
msgid "Use Geographic Location"
msgstr "Usar ubicación geográfica"
-#: src/templates/admin/invKoForm.php:92
+#: src/templates/admin/invKoForm.php:116
msgid "Exclude Involvements if"
msgstr "Excluir participaciones si"
-#: src/templates/admin/invKoForm.php:96
+#: src/templates/admin/invKoForm.php:120
msgid "Involvement is Closed"
msgstr "La participación está cerrada"
-#: src/templates/admin/invKoForm.php:100
+#: src/templates/admin/invKoForm.php:124
msgid "Involvement is a Child Involvement"
msgstr "La participación es una participación infantil"
-#: src/templates/admin/invKoForm.php:122
+#: src/templates/admin/invKoForm.php:146
msgid "Leader Member Types"
msgstr "Tipos de miembros de líder"
-#: src/templates/admin/invKoForm.php:125
-#: src/templates/admin/invKoForm.php:141
-#: src/templates/admin/invKoForm.php:293
+#: src/templates/admin/invKoForm.php:63
+#: src/templates/admin/invKoForm.php:149
+#: src/templates/admin/invKoForm.php:165
+#: src/templates/admin/invKoForm.php:318
#: src/templates/parts/involvement-nearby-list.php:2
#: src/TouchPoint-WP/Meeting.php:746
#: src/TouchPoint-WP/Rsvp.php:75
@@ -94,80 +95,80 @@ msgstr "Tipos de miembros de líder"
msgid "Loading..."
msgstr "Cargando..."
-#: src/templates/admin/invKoForm.php:137
+#: src/templates/admin/invKoForm.php:161
msgid "Host Member Types"
msgstr "Tipos de miembros anfitriones"
-#: src/templates/admin/invKoForm.php:153
+#: src/templates/admin/invKoForm.php:177
msgid "Default Grouping"
msgstr "Agrupación Predeterminada"
-#: src/templates/admin/invKoForm.php:157
+#: src/templates/admin/invKoForm.php:181
msgid "No Grouping"
msgstr "Sin agrupar"
-#: src/templates/admin/invKoForm.php:158
+#: src/templates/admin/invKoForm.php:182
msgid "Upcoming / Current"
msgstr "Próximo / Actual"
-#: src/templates/admin/invKoForm.php:159
+#: src/templates/admin/invKoForm.php:183
msgid "Current / Upcoming"
msgstr "Actual / Próximo"
-#: src/templates/admin/invKoForm.php:167
+#: src/templates/admin/invKoForm.php:191
msgid "Default Filters"
msgstr "Filtros predeterminados"
-#: src/templates/admin/invKoForm.php:199
+#: src/templates/admin/invKoForm.php:223
msgid "Gender"
msgstr "Género"
-#: src/templates/admin/invKoForm.php:213
+#: src/templates/admin/invKoForm.php:237
#: src/TouchPoint-WP/Involvement.php:1853
-#: src/TouchPoint-WP/Taxonomies.php:744
+#: src/TouchPoint-WP/Taxonomies.php:750
msgid "Weekday"
msgstr "Día laborable"
-#: src/templates/admin/invKoForm.php:217
+#: src/templates/admin/invKoForm.php:241
#: src/TouchPoint-WP/Involvement.php:1879
-#: src/TouchPoint-WP/Taxonomies.php:802
+#: src/TouchPoint-WP/Taxonomies.php:808
msgid "Time of Day"
msgstr "Hora del día"
-#: src/templates/admin/invKoForm.php:221
+#: src/templates/admin/invKoForm.php:245
msgid "Prevailing Marital Status"
msgstr "Estado civil prevaleciente"
-#: src/templates/admin/invKoForm.php:225
-#: src/TouchPoint-WP/Taxonomies.php:831
+#: src/templates/admin/invKoForm.php:249
+#: src/TouchPoint-WP/Taxonomies.php:837
msgid "Age Group"
msgstr "Grupo de edad"
-#: src/templates/admin/invKoForm.php:230
+#: src/templates/admin/invKoForm.php:254
msgid "Task Owner"
msgstr "Propietario de la tarea"
-#: src/templates/admin/invKoForm.php:237
+#: src/templates/admin/invKoForm.php:261
msgid "Contact Leader Task Keywords"
msgstr "Palabras clave de la tarea del líder de contacto"
-#: src/templates/admin/invKoForm.php:248
+#: src/templates/admin/invKoForm.php:272
msgid "Join Task Keywords"
msgstr "Unirse a las palabras clave de la tarea"
-#: src/templates/admin/invKoForm.php:264
+#: src/templates/admin/invKoForm.php:288
msgid "Add Involvement Post Type"
msgstr "Agregar tipo de publicación de participación"
-#: src/templates/admin/invKoForm.php:271
+#: src/templates/admin/invKoForm.php:295
msgid "Small Group"
msgstr "Grupo Pequeño"
-#: src/templates/admin/invKoForm.php:272
+#: src/templates/admin/invKoForm.php:296
msgid "Small Groups"
msgstr "Grupos Pequeños"
-#: src/templates/admin/invKoForm.php:403
+#: src/templates/admin/invKoForm.php:442
msgid "Select..."
msgstr "Seleccione..."
@@ -235,53 +236,53 @@ msgstr "Cualquier"
msgid "The %s listed are only those shown on the map."
msgstr "Los %s enumerados son solo los que se muestran en el mapa."
-#: src/TouchPoint-WP/Involvement.php:3554
+#: src/TouchPoint-WP/Involvement.php:3556
msgid "Men Only"
msgstr "Solo hombres"
-#: src/TouchPoint-WP/Involvement.php:3557
+#: src/TouchPoint-WP/Involvement.php:3559
msgid "Women Only"
msgstr "Solo mujeres"
-#: src/TouchPoint-WP/Involvement.php:3634
+#: src/TouchPoint-WP/Involvement.php:3636
msgid "Contact Leaders"
msgstr "Contacta con las líderes"
-#: src/TouchPoint-WP/Involvement.php:3704
-#: src/TouchPoint-WP/Involvement.php:3763
+#: src/TouchPoint-WP/Involvement.php:3706
+#: src/TouchPoint-WP/Involvement.php:3765
msgid "Register"
msgstr "Regístrate ahora"
-#: src/TouchPoint-WP/Involvement.php:3710
+#: src/TouchPoint-WP/Involvement.php:3712
msgid "Create Account"
msgstr "Crear cuenta"
-#: src/TouchPoint-WP/Involvement.php:3714
+#: src/TouchPoint-WP/Involvement.php:3716
msgid "Schedule"
msgstr "Programe"
-#: src/TouchPoint-WP/Involvement.php:3719
+#: src/TouchPoint-WP/Involvement.php:3721
msgid "Give"
msgstr "Dar"
-#: src/TouchPoint-WP/Involvement.php:3722
+#: src/TouchPoint-WP/Involvement.php:3724
msgid "Manage Subscriptions"
msgstr "Administrar suscripciones"
-#: src/TouchPoint-WP/Involvement.php:3725
+#: src/TouchPoint-WP/Involvement.php:3727
msgid "Record Attendance"
msgstr "Registre su asistencia"
-#: src/TouchPoint-WP/Involvement.php:3728
+#: src/TouchPoint-WP/Involvement.php:3730
msgid "Get Tickets"
msgstr "Obtener boletos"
-#: src/TouchPoint-WP/Involvement.php:3754
+#: src/TouchPoint-WP/Involvement.php:3756
#: assets/js/base-defer.js:1001
msgid "Join"
msgstr "Únete"
-#: src/TouchPoint-WP/Involvement.php:3651
+#: src/TouchPoint-WP/Involvement.php:3653
#: src/TouchPoint-WP/Partner.php:1318
msgid "Show on Map"
msgstr "Muestra en el mapa"
@@ -313,38 +314,38 @@ msgstr "Contacta"
msgid "RSVP"
msgstr "RSVP"
-#: src/TouchPoint-WP/TouchPointWP.php:2023
+#: src/TouchPoint-WP/TouchPointWP.php:2027
msgid "Unknown Type"
msgstr "Tipo desconocido"
-#: src/TouchPoint-WP/TouchPointWP.php:2080
+#: src/TouchPoint-WP/TouchPointWP.php:2084
msgid "Your Searches"
msgstr "Tus búsquedas"
-#: src/TouchPoint-WP/TouchPointWP.php:2083
+#: src/TouchPoint-WP/TouchPointWP.php:2087
msgid "Public Searches"
msgstr "Búsquedas públicas"
-#: src/TouchPoint-WP/TouchPointWP.php:2086
+#: src/TouchPoint-WP/TouchPointWP.php:2090
msgid "Status Flags"
msgstr "Indicadores de Estado"
-#: src/TouchPoint-WP/TouchPointWP.php:2091
-#: src/TouchPoint-WP/TouchPointWP.php:2092
+#: src/TouchPoint-WP/TouchPointWP.php:2095
+#: src/TouchPoint-WP/TouchPointWP.php:2096
msgid "Current Value"
msgstr "Valor actual"
-#: src/TouchPoint-WP/TouchPointWP.php:2209
-#: src/TouchPoint-WP/TouchPointWP.php:2245
+#: src/TouchPoint-WP/TouchPointWP.php:2213
+#: src/TouchPoint-WP/TouchPointWP.php:2249
msgid "Invalid or incomplete API Settings."
msgstr "Configuración de API no válida o incompleta."
-#: src/TouchPoint-WP/TouchPointWP.php:2259
-#: src/TouchPoint-WP/TouchPointWP.php:2303
+#: src/TouchPoint-WP/TouchPointWP.php:2263
+#: src/TouchPoint-WP/TouchPointWP.php:2307
msgid "Host appears to be missing from TouchPoint-WP configuration."
msgstr "Parece que falta el host en la configuración de TouchPoint-WP."
-#: src/TouchPoint-WP/TouchPointWP.php:2435
+#: src/TouchPoint-WP/TouchPointWP.php:2439
msgid "People Query Failed"
msgstr "Consulta de registros de personas fallida"
@@ -971,7 +972,7 @@ msgstr "Enviar"
msgid "Nothing to submit."
msgstr "Nada que enviar."
-#: src/TouchPoint-WP/TouchPointWP.php:2376
+#: src/TouchPoint-WP/TouchPointWP.php:2380
msgid "The scripts on TouchPoint that interact with this plugin are out-of-date, and an automatic update failed."
msgstr "Los scripts en TouchPoint que interactúan con este complemento están desactualizados y falló una actualización automática."
@@ -1027,7 +1028,7 @@ msgid "Next"
msgstr "Siguiente"
#: src/TouchPoint-WP/Involvement.php:1901
-#: src/TouchPoint-WP/Taxonomies.php:863
+#: src/TouchPoint-WP/Taxonomies.php:869
msgid "Marital Status"
msgstr "Estado civil"
@@ -1109,15 +1110,15 @@ msgctxt "e.g. \"Event happens weekly on...\" or \"This ...\""
msgid "Sat"
msgstr "Sáb"
-#: src/templates/admin/invKoForm.php:104
+#: src/templates/admin/invKoForm.php:128
msgid "Based on Involvement setting in TouchPoint"
msgstr "Basado en la configuración de participación en TouchPoint"
-#: src/templates/admin/invKoForm.php:104
+#: src/templates/admin/invKoForm.php:128
msgid "Involvement does not meet weekly"
msgstr "La participación no se reúne semanalmente"
-#: src/templates/admin/invKoForm.php:108
+#: src/templates/admin/invKoForm.php:132
msgid "Involvement does not have a Schedule"
msgstr "La participación no tiene horario"
@@ -1220,7 +1221,6 @@ msgid "reset the map"
msgstr "restablecer el mapa"
#. translators: %1$s is the date(s), %2$s is the time(s).
-#. Translators: %1$s is the start date, %2$s is the start time.
#: src/TouchPoint-WP/Involvement.php:995
#: src/TouchPoint-WP/Involvement.php:1027
#: src/TouchPoint-WP/Involvement.php:1120
@@ -1262,7 +1262,7 @@ msgstr "%1$s, hasta el %2$s"
#. translators: number of miles
#: src/templates/parts/involvement-nearby-list.php:10
-#: src/TouchPoint-WP/Involvement.php:3575
+#: src/TouchPoint-WP/Involvement.php:3577
msgctxt "miles. Unit is appended to a number. %2.1f is the number, so %2.1fmi looks like '12.3mi'"
msgid "%2.1fmi"
msgstr "%2.1fmi"
@@ -1271,11 +1271,11 @@ msgstr "%2.1fmi"
msgid "The username of a user account in TouchPoint with API permissions. It is strongly recommended that you create a separate person/user for this purpose, rather than using a staff member's account."
msgstr "El nombre de usuario de una cuenta de usuario en TouchPoint con permisos API. Se recomienda encarecidamente que cree una persona/usuario independiente para este fin, en lugar de utilizar la cuenta de un miembro del personal."
-#: src/templates/admin/invKoForm.php:112
+#: src/templates/admin/invKoForm.php:136
msgid "Involvement has a registration type of \"No Online Registration\""
msgstr "La participación tiene un tipo de registro de \"No Online Registration\""
-#: src/templates/admin/invKoForm.php:116
+#: src/templates/admin/invKoForm.php:140
msgid "Involvement registration has ended (end date is past)"
msgstr "El registro de participación ha finalizado (la fecha de finalización ya pasó)"
@@ -1292,7 +1292,7 @@ msgid "Could not locate."
msgstr "No se pudo localizar."
#: src/TouchPoint-WP/Meeting.php:672
-#: src/TouchPoint-WP/TouchPointWP.php:1027
+#: src/TouchPoint-WP/TouchPointWP.php:1029
msgid "Only GET requests are allowed."
msgstr "Solo se permiten solicitudes GET."
@@ -1306,8 +1306,8 @@ msgstr "Solo se permiten solicitudes POST."
msgid "Invalid data provided."
msgstr "Datos proporcionados no válidos."
-#: src/TouchPoint-WP/Involvement.php:3859
-#: src/TouchPoint-WP/Involvement.php:3962
+#: src/TouchPoint-WP/Involvement.php:3861
+#: src/TouchPoint-WP/Involvement.php:3964
msgid "Invalid Post Type."
msgstr "Tipo de publicación no válida."
@@ -1315,64 +1315,64 @@ msgstr "Tipo de publicación no válida."
msgid "Enable Campuses"
msgstr "Habilitar Campus"
-#: src/TouchPoint-WP/Taxonomies.php:652
+#: src/TouchPoint-WP/Taxonomies.php:658
msgid "Classify posts by their general locations."
msgstr "clasificar las publicaciones por sus ubicaciones generales."
-#: src/TouchPoint-WP/Taxonomies.php:681
+#: src/TouchPoint-WP/Taxonomies.php:687
msgid "Classify posts by their church campus."
msgstr "Clasifique las publicaciones por el campus."
#. translators: %s: taxonomy name, singular
-#: src/TouchPoint-WP/Taxonomies.php:712
+#: src/TouchPoint-WP/Taxonomies.php:718
msgid "Classify things by %s."
msgstr "Clasifica las cosas por %s."
-#: src/TouchPoint-WP/Taxonomies.php:743
+#: src/TouchPoint-WP/Taxonomies.php:749
msgid "Classify involvements by the day on which they meet."
msgstr "Clasificar las participaciones por el día en que se reúnen."
-#: src/TouchPoint-WP/Taxonomies.php:744
+#: src/TouchPoint-WP/Taxonomies.php:750
msgid "Weekdays"
msgstr "Días de semana"
-#: src/TouchPoint-WP/Taxonomies.php:770
+#: src/TouchPoint-WP/Taxonomies.php:776
msgid "Classify involvements by tense (present, future, past)"
msgstr "Clasificar las implicaciones por tiempo (presente, futuro, pasado)"
-#: src/TouchPoint-WP/Taxonomies.php:774
+#: src/TouchPoint-WP/Taxonomies.php:780
msgid "Tense"
msgstr "Tiempo"
-#: src/TouchPoint-WP/Taxonomies.php:774
+#: src/TouchPoint-WP/Taxonomies.php:780
msgid "Tenses"
msgstr "Tiempos"
-#: src/TouchPoint-WP/Taxonomies.php:797
+#: src/TouchPoint-WP/Taxonomies.php:803
msgid "Classify involvements by the portion of the day in which they meet."
msgstr "Clasifique las participaciones por la parte del día en que se reúnen."
-#: src/TouchPoint-WP/Taxonomies.php:803
+#: src/TouchPoint-WP/Taxonomies.php:809
msgid "Times of Day"
msgstr "Tiempos del Día"
-#: src/TouchPoint-WP/Taxonomies.php:829
+#: src/TouchPoint-WP/Taxonomies.php:835
msgid "Classify involvements and users by their age groups."
msgstr "Clasifica las implicaciones y los usuarios por sus grupos de edad."
-#: src/TouchPoint-WP/Taxonomies.php:832
+#: src/TouchPoint-WP/Taxonomies.php:838
msgid "Age Groups"
msgstr "Grupos de Edad"
-#: src/TouchPoint-WP/Taxonomies.php:858
+#: src/TouchPoint-WP/Taxonomies.php:864
msgid "Classify involvements by whether participants are mostly single or married."
msgstr "Clasifique las participaciones según si los participantes son en su mayoría solteros o casados."
-#: src/TouchPoint-WP/Taxonomies.php:864
+#: src/TouchPoint-WP/Taxonomies.php:870
msgid "Marital Statuses"
msgstr "Estados Civiles"
-#: src/TouchPoint-WP/Taxonomies.php:897
+#: src/TouchPoint-WP/Taxonomies.php:903
msgid "Classify Partners by category chosen in settings."
msgstr "Clasifique a los ministeriales por categoría elegida en la configuración."
@@ -1431,11 +1431,11 @@ msgstr "Cada 15 minutos"
msgid "Language"
msgstr "Idioma"
-#: src/templates/admin/invKoForm.php:67
+#: src/templates/admin/invKoForm.php:91
msgid "Import Images from TouchPoint"
msgstr "Importar imágenes desde TouchPoint"
-#: src/templates/admin/invKoForm.php:71
+#: src/templates/admin/invKoForm.php:95
msgid "Importing images sometimes conflicts with other plugins. Disabling image imports can help."
msgstr "La importación de imágenes a veces entra en conflicto con otros complementos. Deshabilitar las importaciones de imágenes puede ayudar."
@@ -1452,7 +1452,7 @@ msgstr "Calendarios de Reuniones"
msgid "Import Meetings from TouchPoint to a calendar on your website."
msgstr "Importe reuniones desde TouchPoint a un calendario en su sitio web."
-#: src/templates/admin/invKoForm.php:78
+#: src/templates/admin/invKoForm.php:102
msgid "Import All Meetings to Calendar"
msgstr "Importe reuniones a los calendarios"
@@ -1480,7 +1480,7 @@ msgstr "Eliminar siempre de WordPress"
msgid "Mark the occurrence as cancelled"
msgstr "Marcar la ocurrencia como cancelada"
-#: src/TouchPoint-WP/Involvement.php:3949
+#: src/TouchPoint-WP/Involvement.php:3951
#: src/TouchPoint-WP/Person.php:1833
msgid "Contact Prohibited."
msgstr "Contacto prohibido."
@@ -1505,7 +1505,7 @@ msgstr "Algo salió mal."
msgid "You may need to sign in."
msgstr "Es posible que tengas que iniciar sesión."
-#: src/TouchPoint-WP/Involvement.php:3939
+#: src/TouchPoint-WP/Involvement.php:3941
#: src/TouchPoint-WP/Person.php:1850
msgid "Contact Blocked for Spam."
msgstr "Contacto bloqueado por spam."
@@ -1585,7 +1585,7 @@ msgstr "hoy"
msgid "Tomorrow"
msgstr "mañana"
-#: src/templates/admin/invKoForm.php:366
+#: src/templates/admin/invKoForm.php:405
msgid "(named person)"
msgstr "(persona nombrada)"
@@ -1631,7 +1631,7 @@ msgid "%s is cancelled."
msgstr "%s esta cancelado."
#. Translators: %s is the system name. "TouchPoint" by default.
-#: src/TouchPoint-WP/Involvement.php:3663
+#: src/TouchPoint-WP/Involvement.php:3665
msgid "Involvement in %s"
msgstr "Participaciones en %s"
@@ -1724,8 +1724,7 @@ msgstr "todo el dia los %1$s"
msgid "Creating a Meeting object from an object without a post_id is not yet supported."
msgstr "Aún no se admite la creación de un objeto de reunión a partir de un objeto sin post_id."
-#. translators: %1$s is the start time, %2$s is the end time.
-#. Translators: %1$s is the start date, %2$s is the end date.
+#. translators: %1$s is the start date/time, %2$s is the end date/time.
#: src/TouchPoint-WP/Utilities/DateFormats.php:89
#: src/TouchPoint-WP/Utilities/DateFormats.php:326
msgid "%1$s – %2$s"
@@ -1822,15 +1821,15 @@ msgstr "Integre la versión 2.0 de la aplicación móvil personalizada con el ca
msgid "This %s has been Cancelled."
msgstr "Este %s ha sido Cancelado."
-#: src/templates/admin/invKoForm.php:173
+#: src/templates/admin/invKoForm.php:197
msgid "Division"
msgstr "Division"
-#: src/templates/admin/invKoForm.php:180
+#: src/templates/admin/invKoForm.php:204
msgid "Resident Code"
msgstr "Código de Residente"
-#: src/templates/admin/invKoForm.php:187
+#: src/templates/admin/invKoForm.php:211
msgid "Campus"
msgstr "Campus"
@@ -1858,3 +1857,15 @@ msgstr "Permitir que los desarrolladores de TouchPoint-WP incluyan públicamente
#: src/TouchPoint-WP/TouchPointWP_Settings.php:446
msgid "Helps other prospective churches see what can be done by combining WordPress with the best ChMS on the planet. Only applies if this site is accessible on the public internet."
msgstr "Ayuda a otras iglesias potenciales a ver lo que se puede hacer combinando WordPress con el mejor ChMS del planeta. Solo se aplica si este sitio es accesible en Internet público."
+
+#: src/templates/admin/invKoForm.php:60
+msgid "Import Campuses"
+msgstr "Importar Campus"
+
+#: src/templates/admin/invKoForm.php:67
+msgid "All Campuses"
+msgstr "Todos los campus"
+
+#: src/templates/admin/invKoForm.php:71
+msgid "(No Campus)"
+msgstr "(Sin campus)"
diff --git a/i18n/TouchPoint-WP.pot b/i18n/TouchPoint-WP.pot
index 58dfbe9d..63a78e97 100644
--- a/i18n/TouchPoint-WP.pot
+++ b/i18n/TouchPoint-WP.pot
@@ -2,14 +2,14 @@
# This file is distributed under the AGPLv3+.
msgid ""
msgstr ""
-"Project-Id-Version: TouchPoint WP 0.0.94\n"
+"Project-Id-Version: TouchPoint WP 0.0.95\n"
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/TouchPoint-WP\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"POT-Creation-Date: 2024-11-19T13:48:25+00:00\n"
+"POT-Creation-Date: 2024-11-22T01:13:58+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"X-Generator: WP-CLI 2.11.0\n"
"X-Domain: TouchPoint-WP\n"
@@ -39,186 +39,199 @@ msgstr ""
msgid "https://github.com/jkrrv"
msgstr ""
-#: src/templates/admin/invKoForm.php:17
+#: src/templates/admin/invKoForm.php:18
#: src/templates/admin/locationsKoForm.php:13
#: src/templates/admin/locationsKoForm.php:58
msgid "Delete"
msgstr ""
-#: src/templates/admin/invKoForm.php:23
+#: src/templates/admin/invKoForm.php:24
msgid "Singular Name"
msgstr ""
-#: src/templates/admin/invKoForm.php:31
+#: src/templates/admin/invKoForm.php:32
msgid "Plural Name"
msgstr ""
-#: src/templates/admin/invKoForm.php:39
+#: src/templates/admin/invKoForm.php:40
msgid "Slug"
msgstr ""
-#: src/templates/admin/invKoForm.php:47
+#: src/templates/admin/invKoForm.php:48
#: src/TouchPoint-WP/TouchPointWP_Settings.php:992
msgid "Divisions to Import"
msgstr ""
#: src/templates/admin/invKoForm.php:60
-msgid "Import Hierarchically (Parent-Child Relationships)"
+msgid "Import Campuses"
+msgstr ""
+
+#: src/templates/admin/invKoForm.php:63
+#: src/templates/admin/invKoForm.php:149
+#: src/templates/admin/invKoForm.php:165
+#: src/templates/admin/invKoForm.php:318
+#: src/templates/parts/involvement-nearby-list.php:2
+#: src/TouchPoint-WP/Meeting.php:746
+#: src/TouchPoint-WP/Rsvp.php:75
+#: assets/js/base-defer.js:192
+#: assets/js/base-defer.js:1133
+msgid "Loading..."
msgstr ""
#: src/templates/admin/invKoForm.php:67
-msgid "Import Images from TouchPoint"
+msgid "All Campuses"
msgstr ""
#: src/templates/admin/invKoForm.php:71
+msgid "(No Campus)"
+msgstr ""
+
+#: src/templates/admin/invKoForm.php:84
+msgid "Import Hierarchically (Parent-Child Relationships)"
+msgstr ""
+
+#: src/templates/admin/invKoForm.php:91
+msgid "Import Images from TouchPoint"
+msgstr ""
+
+#: src/templates/admin/invKoForm.php:95
msgid "Importing images sometimes conflicts with other plugins. Disabling image imports can help."
msgstr ""
-#: src/templates/admin/invKoForm.php:78
+#: src/templates/admin/invKoForm.php:102
msgid "Import All Meetings to Calendar"
msgstr ""
-#: src/templates/admin/invKoForm.php:86
+#: src/templates/admin/invKoForm.php:110
msgid "Use Geographic Location"
msgstr ""
-#: src/templates/admin/invKoForm.php:92
+#: src/templates/admin/invKoForm.php:116
msgid "Exclude Involvements if"
msgstr ""
-#: src/templates/admin/invKoForm.php:96
+#: src/templates/admin/invKoForm.php:120
msgid "Involvement is Closed"
msgstr ""
-#: src/templates/admin/invKoForm.php:100
+#: src/templates/admin/invKoForm.php:124
msgid "Involvement is a Child Involvement"
msgstr ""
-#: src/templates/admin/invKoForm.php:104
+#: src/templates/admin/invKoForm.php:128
msgid "Based on Involvement setting in TouchPoint"
msgstr ""
-#: src/templates/admin/invKoForm.php:104
+#: src/templates/admin/invKoForm.php:128
msgid "Involvement does not meet weekly"
msgstr ""
-#: src/templates/admin/invKoForm.php:108
+#: src/templates/admin/invKoForm.php:132
msgid "Involvement does not have a Schedule"
msgstr ""
-#: src/templates/admin/invKoForm.php:112
+#: src/templates/admin/invKoForm.php:136
msgid "Involvement has a registration type of \"No Online Registration\""
msgstr ""
-#: src/templates/admin/invKoForm.php:116
+#: src/templates/admin/invKoForm.php:140
msgid "Involvement registration has ended (end date is past)"
msgstr ""
-#: src/templates/admin/invKoForm.php:122
+#: src/templates/admin/invKoForm.php:146
msgid "Leader Member Types"
msgstr ""
-#: src/templates/admin/invKoForm.php:125
-#: src/templates/admin/invKoForm.php:141
-#: src/templates/admin/invKoForm.php:293
-#: src/templates/parts/involvement-nearby-list.php:2
-#: src/TouchPoint-WP/Meeting.php:746
-#: src/TouchPoint-WP/Rsvp.php:75
-#: assets/js/base-defer.js:192
-#: assets/js/base-defer.js:1133
-msgid "Loading..."
-msgstr ""
-
-#: src/templates/admin/invKoForm.php:137
+#: src/templates/admin/invKoForm.php:161
msgid "Host Member Types"
msgstr ""
-#: src/templates/admin/invKoForm.php:153
+#: src/templates/admin/invKoForm.php:177
msgid "Default Grouping"
msgstr ""
-#: src/templates/admin/invKoForm.php:157
+#: src/templates/admin/invKoForm.php:181
msgid "No Grouping"
msgstr ""
-#: src/templates/admin/invKoForm.php:158
+#: src/templates/admin/invKoForm.php:182
msgid "Upcoming / Current"
msgstr ""
-#: src/templates/admin/invKoForm.php:159
+#: src/templates/admin/invKoForm.php:183
msgid "Current / Upcoming"
msgstr ""
-#: src/templates/admin/invKoForm.php:167
+#: src/templates/admin/invKoForm.php:191
msgid "Default Filters"
msgstr ""
-#: src/templates/admin/invKoForm.php:173
+#: src/templates/admin/invKoForm.php:197
msgid "Division"
msgstr ""
-#: src/templates/admin/invKoForm.php:180
+#: src/templates/admin/invKoForm.php:204
msgid "Resident Code"
msgstr ""
-#: src/templates/admin/invKoForm.php:187
+#: src/templates/admin/invKoForm.php:211
msgid "Campus"
msgstr ""
-#: src/templates/admin/invKoForm.php:199
+#: src/templates/admin/invKoForm.php:223
msgid "Gender"
msgstr ""
-#: src/templates/admin/invKoForm.php:213
+#: src/templates/admin/invKoForm.php:237
#: src/TouchPoint-WP/Involvement.php:1853
-#: src/TouchPoint-WP/Taxonomies.php:744
+#: src/TouchPoint-WP/Taxonomies.php:750
msgid "Weekday"
msgstr ""
-#: src/templates/admin/invKoForm.php:217
+#: src/templates/admin/invKoForm.php:241
#: src/TouchPoint-WP/Involvement.php:1879
-#: src/TouchPoint-WP/Taxonomies.php:802
+#: src/TouchPoint-WP/Taxonomies.php:808
msgid "Time of Day"
msgstr ""
-#: src/templates/admin/invKoForm.php:221
+#: src/templates/admin/invKoForm.php:245
msgid "Prevailing Marital Status"
msgstr ""
-#: src/templates/admin/invKoForm.php:225
-#: src/TouchPoint-WP/Taxonomies.php:831
+#: src/templates/admin/invKoForm.php:249
+#: src/TouchPoint-WP/Taxonomies.php:837
msgid "Age Group"
msgstr ""
-#: src/templates/admin/invKoForm.php:230
+#: src/templates/admin/invKoForm.php:254
msgid "Task Owner"
msgstr ""
-#: src/templates/admin/invKoForm.php:237
+#: src/templates/admin/invKoForm.php:261
msgid "Contact Leader Task Keywords"
msgstr ""
-#: src/templates/admin/invKoForm.php:248
+#: src/templates/admin/invKoForm.php:272
msgid "Join Task Keywords"
msgstr ""
-#: src/templates/admin/invKoForm.php:264
+#: src/templates/admin/invKoForm.php:288
msgid "Add Involvement Post Type"
msgstr ""
-#: src/templates/admin/invKoForm.php:271
+#: src/templates/admin/invKoForm.php:295
msgid "Small Group"
msgstr ""
-#: src/templates/admin/invKoForm.php:272
+#: src/templates/admin/invKoForm.php:296
msgid "Small Groups"
msgstr ""
-#: src/templates/admin/invKoForm.php:366
+#: src/templates/admin/invKoForm.php:405
msgid "(named person)"
msgstr ""
-#: src/templates/admin/invKoForm.php:403
+#: src/templates/admin/invKoForm.php:442
msgid "Select..."
msgstr ""
@@ -282,7 +295,7 @@ msgstr ""
#. translators: number of miles
#: src/templates/parts/involvement-nearby-list.php:10
-#: src/TouchPoint-WP/Involvement.php:3575
+#: src/TouchPoint-WP/Involvement.php:3577
msgctxt "miles. Unit is appended to a number. %2.1f is the number, so %2.1fmi looks like '12.3mi'"
msgid "%2.1fmi"
msgstr ""
@@ -344,7 +357,6 @@ msgid "Registration Closed"
msgstr ""
#. translators: %1$s is the date(s), %2$s is the time(s).
-#. Translators: %1$s is the start date, %2$s is the start time.
#: src/TouchPoint-WP/Involvement.php:995
#: src/TouchPoint-WP/Involvement.php:1027
#: src/TouchPoint-WP/Involvement.php:1120
@@ -408,7 +420,7 @@ msgid "Language"
msgstr ""
#: src/TouchPoint-WP/Involvement.php:1901
-#: src/TouchPoint-WP/Taxonomies.php:863
+#: src/TouchPoint-WP/Taxonomies.php:869
msgid "Marital Status"
msgstr ""
@@ -456,73 +468,73 @@ msgstr ""
msgid "Could not locate."
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3554
+#: src/TouchPoint-WP/Involvement.php:3556
msgid "Men Only"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3557
+#: src/TouchPoint-WP/Involvement.php:3559
msgid "Women Only"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3634
+#: src/TouchPoint-WP/Involvement.php:3636
msgid "Contact Leaders"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3651
+#: src/TouchPoint-WP/Involvement.php:3653
#: src/TouchPoint-WP/Partner.php:1318
msgid "Show on Map"
msgstr ""
#. Translators: %s is the system name. "TouchPoint" by default.
-#: src/TouchPoint-WP/Involvement.php:3663
+#: src/TouchPoint-WP/Involvement.php:3665
msgid "Involvement in %s"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3704
-#: src/TouchPoint-WP/Involvement.php:3763
+#: src/TouchPoint-WP/Involvement.php:3706
+#: src/TouchPoint-WP/Involvement.php:3765
msgid "Register"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3710
+#: src/TouchPoint-WP/Involvement.php:3712
msgid "Create Account"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3714
+#: src/TouchPoint-WP/Involvement.php:3716
msgid "Schedule"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3719
+#: src/TouchPoint-WP/Involvement.php:3721
msgid "Give"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3722
+#: src/TouchPoint-WP/Involvement.php:3724
msgid "Manage Subscriptions"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3725
+#: src/TouchPoint-WP/Involvement.php:3727
msgid "Record Attendance"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3728
+#: src/TouchPoint-WP/Involvement.php:3730
msgid "Get Tickets"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3754
+#: src/TouchPoint-WP/Involvement.php:3756
#: assets/js/base-defer.js:1001
msgid "Join"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3859
-#: src/TouchPoint-WP/Involvement.php:3962
+#: src/TouchPoint-WP/Involvement.php:3861
+#: src/TouchPoint-WP/Involvement.php:3964
msgid "Invalid Post Type."
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3939
+#: src/TouchPoint-WP/Involvement.php:3941
#: src/TouchPoint-WP/Person.php:1850
msgid "Contact Blocked for Spam."
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3949
+#: src/TouchPoint-WP/Involvement.php:3951
#: src/TouchPoint-WP/Person.php:1833
msgid "Contact Prohibited."
msgstr ""
@@ -559,7 +571,7 @@ msgid "Unknown"
msgstr ""
#: src/TouchPoint-WP/Meeting.php:672
-#: src/TouchPoint-WP/TouchPointWP.php:1027
+#: src/TouchPoint-WP/TouchPointWP.php:1029
msgid "Only GET requests are allowed."
msgstr ""
@@ -667,64 +679,64 @@ msgstr ""
msgid "New %s"
msgstr ""
-#: src/TouchPoint-WP/Taxonomies.php:652
+#: src/TouchPoint-WP/Taxonomies.php:658
msgid "Classify posts by their general locations."
msgstr ""
-#: src/TouchPoint-WP/Taxonomies.php:681
+#: src/TouchPoint-WP/Taxonomies.php:687
msgid "Classify posts by their church campus."
msgstr ""
#. translators: %s: taxonomy name, singular
-#: src/TouchPoint-WP/Taxonomies.php:712
+#: src/TouchPoint-WP/Taxonomies.php:718
msgid "Classify things by %s."
msgstr ""
-#: src/TouchPoint-WP/Taxonomies.php:743
+#: src/TouchPoint-WP/Taxonomies.php:749
msgid "Classify involvements by the day on which they meet."
msgstr ""
-#: src/TouchPoint-WP/Taxonomies.php:744
+#: src/TouchPoint-WP/Taxonomies.php:750
msgid "Weekdays"
msgstr ""
-#: src/TouchPoint-WP/Taxonomies.php:770
+#: src/TouchPoint-WP/Taxonomies.php:776
msgid "Classify involvements by tense (present, future, past)"
msgstr ""
-#: src/TouchPoint-WP/Taxonomies.php:774
+#: src/TouchPoint-WP/Taxonomies.php:780
msgid "Tense"
msgstr ""
-#: src/TouchPoint-WP/Taxonomies.php:774
+#: src/TouchPoint-WP/Taxonomies.php:780
msgid "Tenses"
msgstr ""
-#: src/TouchPoint-WP/Taxonomies.php:797
+#: src/TouchPoint-WP/Taxonomies.php:803
msgid "Classify involvements by the portion of the day in which they meet."
msgstr ""
-#: src/TouchPoint-WP/Taxonomies.php:803
+#: src/TouchPoint-WP/Taxonomies.php:809
msgid "Times of Day"
msgstr ""
-#: src/TouchPoint-WP/Taxonomies.php:829
+#: src/TouchPoint-WP/Taxonomies.php:835
msgid "Classify involvements and users by their age groups."
msgstr ""
-#: src/TouchPoint-WP/Taxonomies.php:832
+#: src/TouchPoint-WP/Taxonomies.php:838
msgid "Age Groups"
msgstr ""
-#: src/TouchPoint-WP/Taxonomies.php:858
+#: src/TouchPoint-WP/Taxonomies.php:864
msgid "Classify involvements by whether participants are mostly single or married."
msgstr ""
-#: src/TouchPoint-WP/Taxonomies.php:864
+#: src/TouchPoint-WP/Taxonomies.php:870
msgid "Marital Statuses"
msgstr ""
-#: src/TouchPoint-WP/Taxonomies.php:897
+#: src/TouchPoint-WP/Taxonomies.php:903
msgid "Classify Partners by category chosen in settings."
msgstr ""
@@ -732,42 +744,42 @@ msgstr ""
msgid "Every 15 minutes"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2023
+#: src/TouchPoint-WP/TouchPointWP.php:2027
msgid "Unknown Type"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2080
+#: src/TouchPoint-WP/TouchPointWP.php:2084
msgid "Your Searches"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2083
+#: src/TouchPoint-WP/TouchPointWP.php:2087
msgid "Public Searches"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2086
+#: src/TouchPoint-WP/TouchPointWP.php:2090
msgid "Status Flags"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2091
-#: src/TouchPoint-WP/TouchPointWP.php:2092
+#: src/TouchPoint-WP/TouchPointWP.php:2095
+#: src/TouchPoint-WP/TouchPointWP.php:2096
msgid "Current Value"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2209
-#: src/TouchPoint-WP/TouchPointWP.php:2245
+#: src/TouchPoint-WP/TouchPointWP.php:2213
+#: src/TouchPoint-WP/TouchPointWP.php:2249
msgid "Invalid or incomplete API Settings."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2259
-#: src/TouchPoint-WP/TouchPointWP.php:2303
+#: src/TouchPoint-WP/TouchPointWP.php:2263
+#: src/TouchPoint-WP/TouchPointWP.php:2307
msgid "Host appears to be missing from TouchPoint-WP configuration."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2376
+#: src/TouchPoint-WP/TouchPointWP.php:2380
msgid "The scripts on TouchPoint that interact with this plugin are out-of-date, and an automatic update failed."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2435
+#: src/TouchPoint-WP/TouchPointWP.php:2439
msgid "People Query Failed"
msgstr ""
@@ -1534,8 +1546,7 @@ msgstr ""
msgid "Expand"
msgstr ""
-#. translators: %1$s is the start time, %2$s is the end time.
-#. Translators: %1$s is the start date, %2$s is the end date.
+#. translators: %1$s is the start date/time, %2$s is the end date/time.
#: src/TouchPoint-WP/Utilities/DateFormats.php:89
#: src/TouchPoint-WP/Utilities/DateFormats.php:326
msgid "%1$s – %2$s"
diff --git a/package.json b/package.json
index 06a92658..fef681e5 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "touchpoint-wp",
- "version": "0.0.94",
+ "version": "0.0.95",
"description": "A WordPress Plugin for integrating with TouchPoint Church Management Software.",
"directories": {
"doc": "docs"
diff --git a/src/TouchPoint-WP/TouchPointWP.php b/src/TouchPoint-WP/TouchPointWP.php
index e00a1ed8..f457866d 100644
--- a/src/TouchPoint-WP/TouchPointWP.php
+++ b/src/TouchPoint-WP/TouchPointWP.php
@@ -35,7 +35,7 @@ class TouchPointWP
/**
* Version number
*/
- public const VERSION = "0.0.94";
+ public const VERSION = "0.0.95";
/**
* The Token
diff --git a/src/TouchPoint-WP/Utilities/DateFormats.php b/src/TouchPoint-WP/Utilities/DateFormats.php
index 16177069..e57f51ec 100644
--- a/src/TouchPoint-WP/Utilities/DateFormats.php
+++ b/src/TouchPoint-WP/Utilities/DateFormats.php
@@ -85,7 +85,7 @@ public static function TimeRangeStringFormatted(DateTimeInterface $startDt, Date
$startStr = self::TimeStringFormatted($startDt);
$endStr = self::TimeStringFormatted($endDt);
- // translators: %1$s is the start time, %2$s is the end time.
+ // translators: %1$s is the start date/time, %2$s is the end date/time.
$ts = wp_sprintf(__('%1$s – %2$s', 'TouchPoint-WP'), $startStr, $endStr);
/**
@@ -322,7 +322,7 @@ public static function DurationToStringArray(?DateTimeInterface $start, ?DateTim
$date1 = self::DateStringFormattedShort($start);
$date2 = self::DateStringFormattedShort($end);
- // Translators: %1$s is the start date, %2$s is the end date.
+ // translators: %1$s is the start date/time, %2$s is the end date/time.
$r['datetime'] = wp_sprintf(__('%1$s – %2$s', 'TouchPoint-WP'), $date1, $date2);
} else {
@@ -343,7 +343,7 @@ public static function DurationToStringArray(?DateTimeInterface $start, ?DateTim
$date = self::DateStringFormatted($start);
$time = self::TimeStringFormatted($start);
- // Translators: %1$s is the start date, %2$s is the start time.
+ // translators: %1$s is the date(s), %2$s is the time(s).
$r['datetime'] = wp_sprintf(__('%1$s at %2$s', 'TouchPoint-WP'), $date, $time);
} else {
diff --git a/src/python/WebApi.py b/src/python/WebApi.py
index a0824092..283a5c1a 100644
--- a/src/python/WebApi.py
+++ b/src/python/WebApi.py
@@ -5,7 +5,7 @@
import linecache
import sys
-VERSION = "0.0.94"
+VERSION = "0.0.95"
sgContactEvName = "Contact"
diff --git a/touchpoint-wp.php b/touchpoint-wp.php
index 785860a0..4c54688e 100644
--- a/touchpoint-wp.php
+++ b/touchpoint-wp.php
@@ -14,7 +14,7 @@
Plugin URI: https://github.com/tenthpres/touchpoint-wp
Update URI: https://github.com/tenthpres/touchpoint-wp
Description: A WordPress Plugin for integrating with TouchPoint Church Management Software.
-Version: 0.0.94
+Version: 0.0.95
Author: James K
Author URI: https://github.com/jkrrv
License: AGPLv3+
From f039fa667837bee24e093ab2983431ca823a45b0 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Fri, 22 Nov 2024 12:43:11 -0500
Subject: [PATCH 218/423] Add a dashboard widget with some simple stats.
---
docs | 2 +-
i18n/TouchPoint-WP-es_ES.po | 144 ++++++++++---------
i18n/TouchPoint-WP.pot | 146 +++++++++++---------
src/TouchPoint-WP/Report.php | 2 +-
src/TouchPoint-WP/Stats.php | 14 +-
src/TouchPoint-WP/TouchPointWP.php | 2 +
src/TouchPoint-WP/TouchPointWP_Widget.php | 117 ++++++++++++++++
src/TouchPoint-WP/Utilities.php | 14 ++
src/TouchPoint-WP/Utilities/DateFormats.php | 29 ++--
9 files changed, 325 insertions(+), 145 deletions(-)
create mode 100644 src/TouchPoint-WP/TouchPointWP_Widget.php
diff --git a/docs b/docs
index e53d723f..4ddcde14 160000
--- a/docs
+++ b/docs
@@ -1 +1 @@
-Subproject commit e53d723f44bfc397d48a2707d8a9d2567762ff56
+Subproject commit 4ddcde146fa218887d0b60482b187a512fd1bd80
diff --git a/i18n/TouchPoint-WP-es_ES.po b/i18n/TouchPoint-WP-es_ES.po
index 7cd03594..2e2c014d 100644
--- a/i18n/TouchPoint-WP-es_ES.po
+++ b/i18n/TouchPoint-WP-es_ES.po
@@ -314,38 +314,38 @@ msgstr "Contacta"
msgid "RSVP"
msgstr "RSVP"
-#: src/TouchPoint-WP/TouchPointWP.php:2027
+#: src/TouchPoint-WP/TouchPointWP.php:2029
msgid "Unknown Type"
msgstr "Tipo desconocido"
-#: src/TouchPoint-WP/TouchPointWP.php:2084
+#: src/TouchPoint-WP/TouchPointWP.php:2086
msgid "Your Searches"
msgstr "Tus búsquedas"
-#: src/TouchPoint-WP/TouchPointWP.php:2087
+#: src/TouchPoint-WP/TouchPointWP.php:2089
msgid "Public Searches"
msgstr "Búsquedas públicas"
-#: src/TouchPoint-WP/TouchPointWP.php:2090
+#: src/TouchPoint-WP/TouchPointWP.php:2092
msgid "Status Flags"
msgstr "Indicadores de Estado"
-#: src/TouchPoint-WP/TouchPointWP.php:2095
-#: src/TouchPoint-WP/TouchPointWP.php:2096
+#: src/TouchPoint-WP/TouchPointWP.php:2097
+#: src/TouchPoint-WP/TouchPointWP.php:2098
msgid "Current Value"
msgstr "Valor actual"
-#: src/TouchPoint-WP/TouchPointWP.php:2213
-#: src/TouchPoint-WP/TouchPointWP.php:2249
+#: src/TouchPoint-WP/TouchPointWP.php:2215
+#: src/TouchPoint-WP/TouchPointWP.php:2251
msgid "Invalid or incomplete API Settings."
msgstr "Configuración de API no válida o incompleta."
-#: src/TouchPoint-WP/TouchPointWP.php:2263
-#: src/TouchPoint-WP/TouchPointWP.php:2307
+#: src/TouchPoint-WP/TouchPointWP.php:2265
+#: src/TouchPoint-WP/TouchPointWP.php:2309
msgid "Host appears to be missing from TouchPoint-WP configuration."
msgstr "Parece que falta el host en la configuración de TouchPoint-WP."
-#: src/TouchPoint-WP/TouchPointWP.php:2439
+#: src/TouchPoint-WP/TouchPointWP.php:2441
msgid "People Query Failed"
msgstr "Consulta de registros de personas fallida"
@@ -809,7 +809,7 @@ msgid "Save Settings"
msgstr "Guardar ajustes"
#: src/TouchPoint-WP/Person.php:1451
-#: src/TouchPoint-WP/Utilities.php:271
+#: src/TouchPoint-WP/Utilities.php:285
#: assets/js/base-defer.js:18
msgid "and"
msgstr "y"
@@ -972,7 +972,7 @@ msgstr "Enviar"
msgid "Nothing to submit."
msgstr "Nada que enviar."
-#: src/TouchPoint-WP/TouchPointWP.php:2380
+#: src/TouchPoint-WP/TouchPointWP.php:2382
msgid "The scripts on TouchPoint that interact with this plugin are out-of-date, and an automatic update failed."
msgstr "Los scripts en TouchPoint que interactúan con este complemento están desactualizados y falló una actualización automática."
@@ -1040,72 +1040,72 @@ msgstr "Años"
msgid "Genders"
msgstr "Géneros"
-#: src/TouchPoint-WP/Utilities.php:121
+#: src/TouchPoint-WP/Utilities.php:135
msgctxt "e.g. event happens weekly on..."
msgid "Sundays"
msgstr "los domingos"
-#: src/TouchPoint-WP/Utilities.php:122
+#: src/TouchPoint-WP/Utilities.php:136
msgctxt "e.g. event happens weekly on..."
msgid "Mondays"
msgstr "los lunes"
-#: src/TouchPoint-WP/Utilities.php:123
+#: src/TouchPoint-WP/Utilities.php:137
msgctxt "e.g. event happens weekly on..."
msgid "Tuesdays"
msgstr "los martes"
-#: src/TouchPoint-WP/Utilities.php:124
+#: src/TouchPoint-WP/Utilities.php:138
msgctxt "e.g. event happens weekly on..."
msgid "Wednesdays"
msgstr "los miércoles"
-#: src/TouchPoint-WP/Utilities.php:125
+#: src/TouchPoint-WP/Utilities.php:139
msgctxt "e.g. event happens weekly on..."
msgid "Thursdays"
msgstr "los jueves"
-#: src/TouchPoint-WP/Utilities.php:126
+#: src/TouchPoint-WP/Utilities.php:140
msgctxt "e.g. event happens weekly on..."
msgid "Fridays"
msgstr "los viernes"
-#: src/TouchPoint-WP/Utilities.php:127
+#: src/TouchPoint-WP/Utilities.php:141
msgctxt "e.g. event happens weekly on..."
msgid "Saturdays"
msgstr "los sábados"
-#: src/TouchPoint-WP/Utilities.php:173
+#: src/TouchPoint-WP/Utilities.php:187
msgctxt "e.g. \"Event happens weekly on...\" or \"This ...\""
msgid "Sun"
msgstr "Dom"
-#: src/TouchPoint-WP/Utilities.php:174
+#: src/TouchPoint-WP/Utilities.php:188
msgctxt "e.g. \"Event happens weekly on...\" or \"This ...\""
msgid "Mon"
msgstr "Lun"
-#: src/TouchPoint-WP/Utilities.php:175
+#: src/TouchPoint-WP/Utilities.php:189
msgctxt "e.g. \"Event happens weekly on...\" or \"This ...\""
msgid "Tue"
msgstr "Mar"
-#: src/TouchPoint-WP/Utilities.php:176
+#: src/TouchPoint-WP/Utilities.php:190
msgctxt "e.g. \"Event happens weekly on...\" or \"This ...\""
msgid "Wed"
msgstr "Mié"
-#: src/TouchPoint-WP/Utilities.php:177
+#: src/TouchPoint-WP/Utilities.php:191
msgctxt "e.g. \"Event happens weekly on...\" or \"This ...\""
msgid "Thu"
msgstr "Jue"
-#: src/TouchPoint-WP/Utilities.php:178
+#: src/TouchPoint-WP/Utilities.php:192
msgctxt "e.g. \"Event happens weekly on...\" or \"This ...\""
msgid "Fri"
msgstr "Vie"
-#: src/TouchPoint-WP/Utilities.php:179
+#: src/TouchPoint-WP/Utilities.php:193
msgctxt "e.g. \"Event happens weekly on...\" or \"This ...\""
msgid "Sat"
msgstr "Sáb"
@@ -1163,37 +1163,37 @@ msgstr "Ubicaciones"
msgid "Locations are physical places, probably campuses. None are required, but they can help present geographic information clearly."
msgstr "Las ubicaciones son lugares físicos, probablemente campus. No se requiere ninguno, pero pueden ayudar a presentar la información geográfica con claridad."
-#: src/TouchPoint-WP/Utilities.php:221
+#: src/TouchPoint-WP/Utilities.php:235
msgctxt "Time of Day"
msgid "Late Night"
msgstr "Tarde en la noche"
-#: src/TouchPoint-WP/Utilities.php:223
+#: src/TouchPoint-WP/Utilities.php:237
msgctxt "Time of Day"
msgid "Early Morning"
msgstr "Madrugada"
-#: src/TouchPoint-WP/Utilities.php:225
+#: src/TouchPoint-WP/Utilities.php:239
msgctxt "Time of Day"
msgid "Morning"
msgstr "Mañana"
-#: src/TouchPoint-WP/Utilities.php:227
+#: src/TouchPoint-WP/Utilities.php:241
msgctxt "Time of Day"
msgid "Midday"
msgstr "Mediodía"
-#: src/TouchPoint-WP/Utilities.php:229
+#: src/TouchPoint-WP/Utilities.php:243
msgctxt "Time of Day"
msgid "Afternoon"
msgstr "Tarde"
-#: src/TouchPoint-WP/Utilities.php:231
+#: src/TouchPoint-WP/Utilities.php:245
msgctxt "Time of Day"
msgid "Evening"
msgstr "Tardecita"
-#: src/TouchPoint-WP/Utilities.php:233
+#: src/TouchPoint-WP/Utilities.php:247
msgctxt "Time of Day"
msgid "Night"
msgstr "Noche"
@@ -1225,8 +1225,9 @@ msgstr "restablecer el mapa"
#: src/TouchPoint-WP/Involvement.php:1027
#: src/TouchPoint-WP/Involvement.php:1120
#: src/TouchPoint-WP/Involvement.php:1144
-#: src/TouchPoint-WP/Utilities/DateFormats.php:283
-#: src/TouchPoint-WP/Utilities/DateFormats.php:347
+#: src/TouchPoint-WP/TouchPointWP_Widget.php:67
+#: src/TouchPoint-WP/Utilities/DateFormats.php:288
+#: src/TouchPoint-WP/Utilities/DateFormats.php:352
msgid "%1$s at %2$s"
msgstr "%1$s a las %2$s"
@@ -1292,17 +1293,17 @@ msgid "Could not locate."
msgstr "No se pudo localizar."
#: src/TouchPoint-WP/Meeting.php:672
-#: src/TouchPoint-WP/TouchPointWP.php:1029
+#: src/TouchPoint-WP/TouchPointWP.php:1031
msgid "Only GET requests are allowed."
msgstr "Solo se permiten solicitudes GET."
#: src/TouchPoint-WP/Meeting.php:700
-#: src/TouchPoint-WP/TouchPointWP.php:360
+#: src/TouchPoint-WP/TouchPointWP.php:362
msgid "Only POST requests are allowed."
msgstr "Solo se permiten solicitudes POST."
#: src/TouchPoint-WP/Meeting.php:710
-#: src/TouchPoint-WP/TouchPointWP.php:369
+#: src/TouchPoint-WP/TouchPointWP.php:371
msgid "Invalid data provided."
msgstr "Datos proporcionados no válidos."
@@ -1571,17 +1572,17 @@ msgid "Select post types which should have Resident Codes available as a native
msgstr "Seleccione los tipos de publicaciones que deberían tener códigos de residente disponibles como taxonomía nativa."
#: src/TouchPoint-WP/Utilities/DateFormats.php:119
-#: src/TouchPoint-WP/Utilities/DateFormats.php:191
+#: src/TouchPoint-WP/Utilities/DateFormats.php:194
msgid "Tonight"
msgstr "este noche"
#: src/TouchPoint-WP/Utilities/DateFormats.php:121
-#: src/TouchPoint-WP/Utilities/DateFormats.php:193
+#: src/TouchPoint-WP/Utilities/DateFormats.php:196
msgid "Today"
msgstr "hoy"
-#: src/TouchPoint-WP/Utilities/DateFormats.php:127
-#: src/TouchPoint-WP/Utilities/DateFormats.php:199
+#: src/TouchPoint-WP/Utilities/DateFormats.php:128
+#: src/TouchPoint-WP/Utilities/DateFormats.php:203
msgid "Tomorrow"
msgstr "mañana"
@@ -1589,7 +1590,7 @@ msgstr "mañana"
msgid "(named person)"
msgstr "(persona nombrada)"
-#: src/TouchPoint-WP/Utilities.php:482
+#: src/TouchPoint-WP/Utilities.php:496
msgid "Expand"
msgstr "Ampliar"
@@ -1602,25 +1603,25 @@ msgid "Scheduled"
msgstr "Programado"
#. translators: %1$s is "Monday". %2$s is "January 1".
-#: src/TouchPoint-WP/Utilities/DateFormats.php:144
+#: src/TouchPoint-WP/Utilities/DateFormats.php:147
msgctxt "Date format string"
msgid "Last %1$s, %2$s"
msgstr "el pasado %1$s %2$s"
#. translators: %1$s is "Monday". %2$s is "January 1".
-#: src/TouchPoint-WP/Utilities/DateFormats.php:150
+#: src/TouchPoint-WP/Utilities/DateFormats.php:153
msgctxt "Date format string"
msgid "This %1$s, %2$s"
msgstr "este %1$s %2$s"
#. translators: %1$s is "Monday". %2$s is "January 1".
-#: src/TouchPoint-WP/Utilities/DateFormats.php:156
+#: src/TouchPoint-WP/Utilities/DateFormats.php:159
msgctxt "Date format string"
msgid "Next %1$s, %2$s"
msgstr "el proximo %1$s %2$s"
#. translators: %1$s is "Monday". %2$s is "January 1".
-#: src/TouchPoint-WP/Utilities/DateFormats.php:161
+#: src/TouchPoint-WP/Utilities/DateFormats.php:164
msgctxt "Date format string"
msgid "%1$s, %2$s"
msgstr "%1$s %2$s"
@@ -1685,22 +1686,22 @@ msgstr "Reunión"
msgid "Event"
msgstr "Evento"
-#: src/TouchPoint-WP/Utilities/DateFormats.php:134
+#: src/TouchPoint-WP/Utilities/DateFormats.php:137
msgctxt "Date string for day of the week, when the year is current."
msgid "l"
msgstr "l"
-#: src/TouchPoint-WP/Utilities/DateFormats.php:135
+#: src/TouchPoint-WP/Utilities/DateFormats.php:138
msgctxt "Date string when the year is current."
msgid "F j"
msgstr "j F"
-#: src/TouchPoint-WP/Utilities/DateFormats.php:137
+#: src/TouchPoint-WP/Utilities/DateFormats.php:140
msgctxt "Date string for day of the week, when the year is not current."
msgid "l"
msgstr "l"
-#: src/TouchPoint-WP/Utilities/DateFormats.php:138
+#: src/TouchPoint-WP/Utilities/DateFormats.php:141
msgctxt "Date string when the year is not current."
msgid "F j, Y"
msgstr "j F Y"
@@ -1726,55 +1727,55 @@ msgstr "Aún no se admite la creación de un objeto de reunión a partir de un o
#. translators: %1$s is the start date/time, %2$s is the end date/time.
#: src/TouchPoint-WP/Utilities/DateFormats.php:89
-#: src/TouchPoint-WP/Utilities/DateFormats.php:326
+#: src/TouchPoint-WP/Utilities/DateFormats.php:331
msgid "%1$s – %2$s"
msgstr "%1$s – %2$s"
-#: src/TouchPoint-WP/Utilities/DateFormats.php:206
+#: src/TouchPoint-WP/Utilities/DateFormats.php:211
msgctxt "Short date string for day of the week, when the year is current."
msgid "D"
msgstr "D"
-#: src/TouchPoint-WP/Utilities/DateFormats.php:207
+#: src/TouchPoint-WP/Utilities/DateFormats.php:212
msgctxt "Short date string when the year is current."
msgid "M j"
msgstr "j M"
-#: src/TouchPoint-WP/Utilities/DateFormats.php:209
+#: src/TouchPoint-WP/Utilities/DateFormats.php:214
msgctxt "Short date string for day of the week, when the year is not current."
msgid "D"
msgstr "D"
-#: src/TouchPoint-WP/Utilities/DateFormats.php:210
+#: src/TouchPoint-WP/Utilities/DateFormats.php:215
msgctxt "Short date string when the year is not current."
msgid "M j, Y"
msgstr "j M Y"
#. translators: %1$s is the start date, %2$s start time, %3$s is the end date, and %4$s end time.
-#: src/TouchPoint-WP/Utilities/DateFormats.php:359
+#: src/TouchPoint-WP/Utilities/DateFormats.php:364
msgid "%1$s at %2$s – %3$s at %4$s"
msgstr "%1$s a %2$s – %3$s a %4$s"
#. translators: %1$s is "Mon". %2$s is "Jan 1".
-#: src/TouchPoint-WP/Utilities/DateFormats.php:216
+#: src/TouchPoint-WP/Utilities/DateFormats.php:221
msgctxt "Short date format string"
msgid "Last %1$s, %2$s"
msgstr "el pasado %1$s %2$s"
#. translators: %1$s is "Mon". %2$s is "Jan 1".
-#: src/TouchPoint-WP/Utilities/DateFormats.php:222
+#: src/TouchPoint-WP/Utilities/DateFormats.php:227
msgctxt "Short date format string"
msgid "This %1$s, %2$s"
msgstr "este %1$s %2$s"
#. translators: %1$s is "Mon". %2$s is "Jan 1".
-#: src/TouchPoint-WP/Utilities/DateFormats.php:228
+#: src/TouchPoint-WP/Utilities/DateFormats.php:233
msgctxt "Short date format string"
msgid "Next %1$s, %2$s"
msgstr "proximo %1$s %2$s"
#. translators: %1$s is "Mon". %2$s is "Jan 1".
-#: src/TouchPoint-WP/Utilities/DateFormats.php:233
+#: src/TouchPoint-WP/Utilities/DateFormats.php:238
msgctxt "Short date format string"
msgid "%1$s, %2$s"
msgstr "%1$s %2$s"
@@ -1837,7 +1838,7 @@ msgstr "Campus"
msgid "All Day"
msgstr "todo el dia"
-#: src/TouchPoint-WP/Utilities.php:276
+#: src/TouchPoint-WP/Utilities.php:290
msgctxt "list of items, and *others*"
msgid "others"
msgstr "otros"
@@ -1869,3 +1870,20 @@ msgstr "Todos los campus"
#: src/templates/admin/invKoForm.php:71
msgid "(No Campus)"
msgstr "(Sin campus)"
+
+#: src/TouchPoint-WP/TouchPointWP_Widget.php:37
+msgid "TouchPoint-WP Status"
+msgstr "Estado de TouchPoint-WP"
+
+#: src/TouchPoint-WP/TouchPointWP_Widget.php:92
+msgid "Imported"
+msgstr "Importadas"
+
+#: src/TouchPoint-WP/TouchPointWP_Widget.php:93
+msgid "Last Updated"
+msgstr "Actualizada"
+
+#: src/TouchPoint-WP/Utilities/DateFormats.php:130
+#: src/TouchPoint-WP/Utilities/DateFormats.php:205
+msgid "Yesterday"
+msgstr "Ayer"
diff --git a/i18n/TouchPoint-WP.pot b/i18n/TouchPoint-WP.pot
index 63a78e97..71300fa4 100644
--- a/i18n/TouchPoint-WP.pot
+++ b/i18n/TouchPoint-WP.pot
@@ -9,7 +9,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"POT-Creation-Date: 2024-11-22T01:13:58+00:00\n"
+"POT-Creation-Date: 2024-11-22T17:39:16+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"X-Generator: WP-CLI 2.11.0\n"
"X-Domain: TouchPoint-WP\n"
@@ -361,8 +361,9 @@ msgstr ""
#: src/TouchPoint-WP/Involvement.php:1027
#: src/TouchPoint-WP/Involvement.php:1120
#: src/TouchPoint-WP/Involvement.php:1144
-#: src/TouchPoint-WP/Utilities/DateFormats.php:283
-#: src/TouchPoint-WP/Utilities/DateFormats.php:347
+#: src/TouchPoint-WP/TouchPointWP_Widget.php:67
+#: src/TouchPoint-WP/Utilities/DateFormats.php:288
+#: src/TouchPoint-WP/Utilities/DateFormats.php:352
msgid "%1$s at %2$s"
msgstr ""
@@ -571,17 +572,17 @@ msgid "Unknown"
msgstr ""
#: src/TouchPoint-WP/Meeting.php:672
-#: src/TouchPoint-WP/TouchPointWP.php:1029
+#: src/TouchPoint-WP/TouchPointWP.php:1031
msgid "Only GET requests are allowed."
msgstr ""
#: src/TouchPoint-WP/Meeting.php:700
-#: src/TouchPoint-WP/TouchPointWP.php:360
+#: src/TouchPoint-WP/TouchPointWP.php:362
msgid "Only POST requests are allowed."
msgstr ""
#: src/TouchPoint-WP/Meeting.php:710
-#: src/TouchPoint-WP/TouchPointWP.php:369
+#: src/TouchPoint-WP/TouchPointWP.php:371
msgid "Invalid data provided."
msgstr ""
@@ -618,7 +619,7 @@ msgid "Person in %s"
msgstr ""
#: src/TouchPoint-WP/Person.php:1451
-#: src/TouchPoint-WP/Utilities.php:271
+#: src/TouchPoint-WP/Utilities.php:285
#: assets/js/base-defer.js:18
msgid "and"
msgstr ""
@@ -744,42 +745,42 @@ msgstr ""
msgid "Every 15 minutes"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2027
+#: src/TouchPoint-WP/TouchPointWP.php:2029
msgid "Unknown Type"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2084
+#: src/TouchPoint-WP/TouchPointWP.php:2086
msgid "Your Searches"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2087
+#: src/TouchPoint-WP/TouchPointWP.php:2089
msgid "Public Searches"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2090
+#: src/TouchPoint-WP/TouchPointWP.php:2092
msgid "Status Flags"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2095
-#: src/TouchPoint-WP/TouchPointWP.php:2096
+#: src/TouchPoint-WP/TouchPointWP.php:2097
+#: src/TouchPoint-WP/TouchPointWP.php:2098
msgid "Current Value"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2213
-#: src/TouchPoint-WP/TouchPointWP.php:2249
+#: src/TouchPoint-WP/TouchPointWP.php:2215
+#: src/TouchPoint-WP/TouchPointWP.php:2251
msgid "Invalid or incomplete API Settings."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2263
-#: src/TouchPoint-WP/TouchPointWP.php:2307
+#: src/TouchPoint-WP/TouchPointWP.php:2265
+#: src/TouchPoint-WP/TouchPointWP.php:2309
msgid "Host appears to be missing from TouchPoint-WP configuration."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2380
+#: src/TouchPoint-WP/TouchPointWP.php:2382
msgid "The scripts on TouchPoint that interact with this plugin are out-of-date, and an automatic update failed."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2439
+#: src/TouchPoint-WP/TouchPointWP.php:2441
msgid "People Query Failed"
msgstr ""
@@ -1432,231 +1433,248 @@ msgstr ""
msgid "Save Settings"
msgstr ""
-#: src/TouchPoint-WP/Utilities.php:121
+#: src/TouchPoint-WP/TouchPointWP_Widget.php:37
+msgid "TouchPoint-WP Status"
+msgstr ""
+
+#: src/TouchPoint-WP/TouchPointWP_Widget.php:92
+msgid "Imported"
+msgstr ""
+
+#: src/TouchPoint-WP/TouchPointWP_Widget.php:93
+msgid "Last Updated"
+msgstr ""
+
+#: src/TouchPoint-WP/Utilities.php:135
msgctxt "e.g. event happens weekly on..."
msgid "Sundays"
msgstr ""
-#: src/TouchPoint-WP/Utilities.php:122
+#: src/TouchPoint-WP/Utilities.php:136
msgctxt "e.g. event happens weekly on..."
msgid "Mondays"
msgstr ""
-#: src/TouchPoint-WP/Utilities.php:123
+#: src/TouchPoint-WP/Utilities.php:137
msgctxt "e.g. event happens weekly on..."
msgid "Tuesdays"
msgstr ""
-#: src/TouchPoint-WP/Utilities.php:124
+#: src/TouchPoint-WP/Utilities.php:138
msgctxt "e.g. event happens weekly on..."
msgid "Wednesdays"
msgstr ""
-#: src/TouchPoint-WP/Utilities.php:125
+#: src/TouchPoint-WP/Utilities.php:139
msgctxt "e.g. event happens weekly on..."
msgid "Thursdays"
msgstr ""
-#: src/TouchPoint-WP/Utilities.php:126
+#: src/TouchPoint-WP/Utilities.php:140
msgctxt "e.g. event happens weekly on..."
msgid "Fridays"
msgstr ""
-#: src/TouchPoint-WP/Utilities.php:127
+#: src/TouchPoint-WP/Utilities.php:141
msgctxt "e.g. event happens weekly on..."
msgid "Saturdays"
msgstr ""
-#: src/TouchPoint-WP/Utilities.php:173
+#: src/TouchPoint-WP/Utilities.php:187
msgctxt "e.g. \"Event happens weekly on...\" or \"This ...\""
msgid "Sun"
msgstr ""
-#: src/TouchPoint-WP/Utilities.php:174
+#: src/TouchPoint-WP/Utilities.php:188
msgctxt "e.g. \"Event happens weekly on...\" or \"This ...\""
msgid "Mon"
msgstr ""
-#: src/TouchPoint-WP/Utilities.php:175
+#: src/TouchPoint-WP/Utilities.php:189
msgctxt "e.g. \"Event happens weekly on...\" or \"This ...\""
msgid "Tue"
msgstr ""
-#: src/TouchPoint-WP/Utilities.php:176
+#: src/TouchPoint-WP/Utilities.php:190
msgctxt "e.g. \"Event happens weekly on...\" or \"This ...\""
msgid "Wed"
msgstr ""
-#: src/TouchPoint-WP/Utilities.php:177
+#: src/TouchPoint-WP/Utilities.php:191
msgctxt "e.g. \"Event happens weekly on...\" or \"This ...\""
msgid "Thu"
msgstr ""
-#: src/TouchPoint-WP/Utilities.php:178
+#: src/TouchPoint-WP/Utilities.php:192
msgctxt "e.g. \"Event happens weekly on...\" or \"This ...\""
msgid "Fri"
msgstr ""
-#: src/TouchPoint-WP/Utilities.php:179
+#: src/TouchPoint-WP/Utilities.php:193
msgctxt "e.g. \"Event happens weekly on...\" or \"This ...\""
msgid "Sat"
msgstr ""
-#: src/TouchPoint-WP/Utilities.php:221
+#: src/TouchPoint-WP/Utilities.php:235
msgctxt "Time of Day"
msgid "Late Night"
msgstr ""
-#: src/TouchPoint-WP/Utilities.php:223
+#: src/TouchPoint-WP/Utilities.php:237
msgctxt "Time of Day"
msgid "Early Morning"
msgstr ""
-#: src/TouchPoint-WP/Utilities.php:225
+#: src/TouchPoint-WP/Utilities.php:239
msgctxt "Time of Day"
msgid "Morning"
msgstr ""
-#: src/TouchPoint-WP/Utilities.php:227
+#: src/TouchPoint-WP/Utilities.php:241
msgctxt "Time of Day"
msgid "Midday"
msgstr ""
-#: src/TouchPoint-WP/Utilities.php:229
+#: src/TouchPoint-WP/Utilities.php:243
msgctxt "Time of Day"
msgid "Afternoon"
msgstr ""
-#: src/TouchPoint-WP/Utilities.php:231
+#: src/TouchPoint-WP/Utilities.php:245
msgctxt "Time of Day"
msgid "Evening"
msgstr ""
-#: src/TouchPoint-WP/Utilities.php:233
+#: src/TouchPoint-WP/Utilities.php:247
msgctxt "Time of Day"
msgid "Night"
msgstr ""
-#: src/TouchPoint-WP/Utilities.php:276
+#: src/TouchPoint-WP/Utilities.php:290
msgctxt "list of items, and *others*"
msgid "others"
msgstr ""
-#: src/TouchPoint-WP/Utilities.php:482
+#: src/TouchPoint-WP/Utilities.php:496
msgid "Expand"
msgstr ""
#. translators: %1$s is the start date/time, %2$s is the end date/time.
#: src/TouchPoint-WP/Utilities/DateFormats.php:89
-#: src/TouchPoint-WP/Utilities/DateFormats.php:326
+#: src/TouchPoint-WP/Utilities/DateFormats.php:331
msgid "%1$s – %2$s"
msgstr ""
#: src/TouchPoint-WP/Utilities/DateFormats.php:119
-#: src/TouchPoint-WP/Utilities/DateFormats.php:191
+#: src/TouchPoint-WP/Utilities/DateFormats.php:194
msgid "Tonight"
msgstr ""
#: src/TouchPoint-WP/Utilities/DateFormats.php:121
-#: src/TouchPoint-WP/Utilities/DateFormats.php:193
+#: src/TouchPoint-WP/Utilities/DateFormats.php:196
msgid "Today"
msgstr ""
-#: src/TouchPoint-WP/Utilities/DateFormats.php:127
-#: src/TouchPoint-WP/Utilities/DateFormats.php:199
+#: src/TouchPoint-WP/Utilities/DateFormats.php:128
+#: src/TouchPoint-WP/Utilities/DateFormats.php:203
msgid "Tomorrow"
msgstr ""
-#: src/TouchPoint-WP/Utilities/DateFormats.php:134
+#: src/TouchPoint-WP/Utilities/DateFormats.php:130
+#: src/TouchPoint-WP/Utilities/DateFormats.php:205
+msgid "Yesterday"
+msgstr ""
+
+#: src/TouchPoint-WP/Utilities/DateFormats.php:137
msgctxt "Date string for day of the week, when the year is current."
msgid "l"
msgstr ""
-#: src/TouchPoint-WP/Utilities/DateFormats.php:135
+#: src/TouchPoint-WP/Utilities/DateFormats.php:138
msgctxt "Date string when the year is current."
msgid "F j"
msgstr ""
-#: src/TouchPoint-WP/Utilities/DateFormats.php:137
+#: src/TouchPoint-WP/Utilities/DateFormats.php:140
msgctxt "Date string for day of the week, when the year is not current."
msgid "l"
msgstr ""
-#: src/TouchPoint-WP/Utilities/DateFormats.php:138
+#: src/TouchPoint-WP/Utilities/DateFormats.php:141
msgctxt "Date string when the year is not current."
msgid "F j, Y"
msgstr ""
#. translators: %1$s is "Monday". %2$s is "January 1".
-#: src/TouchPoint-WP/Utilities/DateFormats.php:144
+#: src/TouchPoint-WP/Utilities/DateFormats.php:147
msgctxt "Date format string"
msgid "Last %1$s, %2$s"
msgstr ""
#. translators: %1$s is "Monday". %2$s is "January 1".
-#: src/TouchPoint-WP/Utilities/DateFormats.php:150
+#: src/TouchPoint-WP/Utilities/DateFormats.php:153
msgctxt "Date format string"
msgid "This %1$s, %2$s"
msgstr ""
#. translators: %1$s is "Monday". %2$s is "January 1".
-#: src/TouchPoint-WP/Utilities/DateFormats.php:156
+#: src/TouchPoint-WP/Utilities/DateFormats.php:159
msgctxt "Date format string"
msgid "Next %1$s, %2$s"
msgstr ""
#. translators: %1$s is "Monday". %2$s is "January 1".
-#: src/TouchPoint-WP/Utilities/DateFormats.php:161
+#: src/TouchPoint-WP/Utilities/DateFormats.php:164
msgctxt "Date format string"
msgid "%1$s, %2$s"
msgstr ""
-#: src/TouchPoint-WP/Utilities/DateFormats.php:206
+#: src/TouchPoint-WP/Utilities/DateFormats.php:211
msgctxt "Short date string for day of the week, when the year is current."
msgid "D"
msgstr ""
-#: src/TouchPoint-WP/Utilities/DateFormats.php:207
+#: src/TouchPoint-WP/Utilities/DateFormats.php:212
msgctxt "Short date string when the year is current."
msgid "M j"
msgstr ""
-#: src/TouchPoint-WP/Utilities/DateFormats.php:209
+#: src/TouchPoint-WP/Utilities/DateFormats.php:214
msgctxt "Short date string for day of the week, when the year is not current."
msgid "D"
msgstr ""
-#: src/TouchPoint-WP/Utilities/DateFormats.php:210
+#: src/TouchPoint-WP/Utilities/DateFormats.php:215
msgctxt "Short date string when the year is not current."
msgid "M j, Y"
msgstr ""
#. translators: %1$s is "Mon". %2$s is "Jan 1".
-#: src/TouchPoint-WP/Utilities/DateFormats.php:216
+#: src/TouchPoint-WP/Utilities/DateFormats.php:221
msgctxt "Short date format string"
msgid "Last %1$s, %2$s"
msgstr ""
#. translators: %1$s is "Mon". %2$s is "Jan 1".
-#: src/TouchPoint-WP/Utilities/DateFormats.php:222
+#: src/TouchPoint-WP/Utilities/DateFormats.php:227
msgctxt "Short date format string"
msgid "This %1$s, %2$s"
msgstr ""
#. translators: %1$s is "Mon". %2$s is "Jan 1".
-#: src/TouchPoint-WP/Utilities/DateFormats.php:228
+#: src/TouchPoint-WP/Utilities/DateFormats.php:233
msgctxt "Short date format string"
msgid "Next %1$s, %2$s"
msgstr ""
#. translators: %1$s is "Mon". %2$s is "Jan 1".
-#: src/TouchPoint-WP/Utilities/DateFormats.php:233
+#: src/TouchPoint-WP/Utilities/DateFormats.php:238
msgctxt "Short date format string"
msgid "%1$s, %2$s"
msgstr ""
#. translators: %1$s is the start date, %2$s start time, %3$s is the end date, and %4$s end time.
-#: src/TouchPoint-WP/Utilities/DateFormats.php:359
+#: src/TouchPoint-WP/Utilities/DateFormats.php:364
msgid "%1$s at %2$s – %3$s at %4$s"
msgstr ""
diff --git a/src/TouchPoint-WP/Report.php b/src/TouchPoint-WP/Report.php
index ce34ec3c..e130c0d3 100644
--- a/src/TouchPoint-WP/Report.php
+++ b/src/TouchPoint-WP/Report.php
@@ -144,7 +144,7 @@ public static function load(): bool
/// Cron ///
////////////
- // Setup cron for updating People daily.
+ // Setup cron for updating Reports daily.
add_action(self::CRON_HOOK, [self::class, 'updateCron']);
if ( ! wp_next_scheduled(self::CRON_HOOK)) {
// Runs every 15 minutes, starting now.
diff --git a/src/TouchPoint-WP/Stats.php b/src/TouchPoint-WP/Stats.php
index 24a9cbb9..ba857834 100644
--- a/src/TouchPoint-WP/Stats.php
+++ b/src/TouchPoint-WP/Stats.php
@@ -236,10 +236,16 @@ public function __get(string $name)
/**
* Assemble the information that's submitted.
*
+ * @param bool $updateQueried
+ *
* @return array
*/
- public function getStatsForSubmission(): array
+ public function getStatsForSubmission(bool $updateQueried = false): array
{
+ if ($updateQueried) {
+ $this->updateQueriedStats();
+ }
+
$data = $this->jsonSerialize();
$sets = TouchPointWP::instance()->settings;
@@ -321,9 +327,9 @@ protected function updateQueriedStats(): void
global $wpdb;
$this->involvementPosts = $wpdb->get_var("SELECT COUNT(DISTINCT meta_value) as c FROM $wpdb->postmeta WHERE meta_key = 'tp_invId'") ?? -1;
- $this->meetings = $wpdb->get_var("SELECT COUNT(DISTINCT meta_value) as c FROM $wpdb->postmeta WHERE meta_key = 'tp_mtgId'") ?? -1;
- $this->people = $wpdb->get_var("SELECT COUNT(DISTINCT meta_value) as c FROM $wpdb->usermeta WHERE meta_key = 'tp_peopleId';") ?? -1;
- $this->partnerPosts = $wpdb->get_var("SELECT COUNT(*) as c FROM $wpdb->posts WHERE post_type = 'tp_partner'") ?? -1;
+ $this->meetings = $wpdb->get_var("SELECT COUNT(DISTINCT meta_value) as c FROM $wpdb->postmeta WHERE meta_key = 'tp_mtgId'") ?? -1;
+ $this->people = $wpdb->get_var("SELECT COUNT(DISTINCT meta_value) as c FROM $wpdb->usermeta WHERE meta_key = 'tp_peopleId';") ?? -1;
+ $this->partnerPosts = $wpdb->get_var("SELECT COUNT(*) as c FROM $wpdb->posts WHERE post_type = 'tp_partner'") ?? -1;
$this->_dirty = true;
}
diff --git a/src/TouchPoint-WP/TouchPointWP.php b/src/TouchPoint-WP/TouchPointWP.php
index f457866d..fa914b67 100644
--- a/src/TouchPoint-WP/TouchPointWP.php
+++ b/src/TouchPoint-WP/TouchPointWP.php
@@ -298,8 +298,10 @@ public function admin(): TouchPointWP_AdminAPI
if ($this->admin === null) {
if ( ! TOUCHPOINT_COMPOSER_ENABLED) {
require_once 'TouchPointWP_AdminAPI.php';
+ require_once 'TouchPointWP_Widget.php';
}
$this->admin = new TouchPointWP_AdminAPI();
+ TouchPointWP_Widget::init();
}
return $this->admin;
diff --git a/src/TouchPoint-WP/TouchPointWP_Widget.php b/src/TouchPoint-WP/TouchPointWP_Widget.php
new file mode 100644
index 00000000..43e89a0c
--- /dev/null
+++ b/src/TouchPoint-WP/TouchPointWP_Widget.php
@@ -0,0 +1,117 @@
+getStatsForSubmission(true);
+ $settings = TouchPointWP::instance()->settings;
+
+ global $wpdb;
+ $rpt = Report::POST_TYPE;
+ $reportData = $wpdb->get_row("SELECT MAX(post_modified) as ts, COUNT(*) as cnt FROM $wpdb->posts WHERE post_type = '$rpt'");
+
+ echo '';
+ echo '
';
+
+ echo " ";
+
+ echo "" . __("Imported", "TouchPoint-WP") . " ";
+ echo "" . __("Last Updated", "TouchPoint-WP") . " ";
+
+ echo 'People ' . $stats->people . ' ' . self::timestampToFormated($settings->person_cron_last_run) . " ";
+
+ if ($settings->enable_involvements === "on") {
+ echo 'Involvements ' . $stats->involvementPosts . ' ' . self::timestampToFormated($settings->inv_cron_last_run) . " ";
+ }
+
+ if ($settings->enable_meeting_cal === "on") {
+ echo 'Meetings ' . $stats->meetings . ' ' . self::timestampToFormated($settings->inv_cron_last_run) . " ";
+ }
+
+ if ($settings->enable_global === "on") {
+ echo 'Partners ' . $stats->partnerPosts . ' ' . self::timestampToFormated($settings->global_cron_last_run) . " ";
+ }
+
+ echo 'Reports ' . $reportData->cnt . ' ' . self::timestampToFormated($reportData->ts) . " ";
+
+ echo "
";
+
+ echo '
Version ' . TouchPointWP::VERSION . "
";
+
+ echo '
';
+ }
+}
\ No newline at end of file
diff --git a/src/TouchPoint-WP/Utilities.php b/src/TouchPoint-WP/Utilities.php
index 6a0ead78..78ef94f4 100644
--- a/src/TouchPoint-WP/Utilities.php
+++ b/src/TouchPoint-WP/Utilities.php
@@ -89,6 +89,19 @@ public static function dateTimeNowPlus1D(): DateTimeImmutable
return self::$_dateTimeNowPlus1D;
}
+
+ /**
+ * @return DateTimeImmutable
+ */
+ public static function dateTimeNowMinus1D(): DateTimeImmutable
+ {
+ if (self::$_dateTimeNowMinus1D === null) {
+ $aDay = new DateInterval('P-1D');
+ self::$_dateTimeNowMinus1D = self::dateTimeNow()->add($aDay);
+ }
+
+ return self::$_dateTimeNowMinus1D;
+ }
/**
* @return DateTimeZone
@@ -106,6 +119,7 @@ public static function utcTimeZone(): DateTimeZone
private static ?DateTimeImmutable $_dateTimeTodayAtMidnight = null;
private static ?DateTimeImmutable $_dateTimeNowPlus1Y = null;
private static ?DateTimeImmutable $_dateTimeNowPlus1D = null;
+ private static ?DateTimeImmutable $_dateTimeNowMinus1D = null;
private static ?DateTimeZone $_utcTimeZone = null;
/**
diff --git a/src/TouchPoint-WP/Utilities/DateFormats.php b/src/TouchPoint-WP/Utilities/DateFormats.php
index e57f51ec..25cf8ea6 100644
--- a/src/TouchPoint-WP/Utilities/DateFormats.php
+++ b/src/TouchPoint-WP/Utilities/DateFormats.php
@@ -121,10 +121,13 @@ public static function DateStringFormatted(DateTimeInterface $dt): string
$r = __("Today", "TouchPoint-WP");
}
} else {
- // Tomorrow
+ // Tomorrow & Yesterday
$tomorrow = Utilities::dateTimeNowPlus1D();
+ $yesterday = Utilities::dateTimeNowMinus1D();
if ($tomorrow->format("Ymd") === $dt->format("Ymd")) {
$r = __("Tomorrow", "TouchPoint-WP");
+ } elseif ($yesterday->format("Ymd") === $dt->format("Ymd")) {
+ $r = __("Yesterday", "TouchPoint-WP");
} else {
$ts = DateFormats::timestampWithoutOffset($dt);
$nowTs = DateFormats::timestampWithoutOffset($now);
@@ -142,16 +145,16 @@ public static function DateStringFormatted(DateTimeInterface $dt): string
if ($ts < $nowTs && $ts - $nowTs > -7 * 86400) {
// translators: %1$s is "Monday". %2$s is "January 1".
$r = sprintf(_x('Last %1$s, %2$s', "Date format string", 'TouchPoint-WP'), $day, $date);
- }
+
// This week
- else if ($ts > $nowTs && $ts - $nowTs < 7 * 86400) {
+ } else if ($ts > $nowTs && $ts - $nowTs < 7 * 86400) {
// translators: %1$s is "Monday". %2$s is "January 1".
$r = sprintf(_x('This %1$s, %2$s', "Date format string", 'TouchPoint-WP'), $day, $date);
- }
+
// Next week
- else if ($ts > $nowTs && $ts - $nowTs < 14 * 86400) {
+ } else if ($ts > $nowTs && $ts - $nowTs < 14 * 86400) {
// translators: %1$s is "Monday". %2$s is "January 1".
$r = sprintf(_x('Next %1$s, %2$s', "Date format string", 'TouchPoint-WP'), $day, $date);
@@ -193,16 +196,18 @@ public static function DateStringFormattedShort(DateTimeInterface $dt): string
$r = __("Today", "TouchPoint-WP");
}
} else {
- // Tomorrow
+ // Tomorrow & Yesterday
$tomorrow = Utilities::dateTimeNowPlus1D();
+ $yesterday = Utilities::dateTimeNowMinus1D();
if ($tomorrow->format("Ymd") === $dt->format("Ymd")) {
$r = __("Tomorrow", "TouchPoint-WP");
+ } elseif ($yesterday->format("Ymd") === $dt->format("Ymd")) {
+ $r = __("Yesterday", "TouchPoint-WP");
} else {
$ts = DateFormats::timestampWithoutOffset($dt);
$nowTs = DateFormats::timestampWithoutOffset($now);
-
- if ($tomorrow->format("Y") === $dt->format("Y")) { // Same Year
+ if ($now->format("Y") === $dt->format("Y")) { // Same Year
$day = wp_date(_x('D', "Short date string for day of the week, when the year is current.", "TouchPoint-WP"), $ts);
$date = wp_date(_x('M j', "Short date string when the year is current.", "TouchPoint-WP"), $ts);
} else {
@@ -214,16 +219,16 @@ public static function DateStringFormattedShort(DateTimeInterface $dt): string
if ($ts < $nowTs && $ts - $nowTs > -7 * 86400) {
// translators: %1$s is "Mon". %2$s is "Jan 1".
$r = sprintf(_x('Last %1$s, %2$s', "Short date format string", 'TouchPoint-WP'), $day, $date);
- }
+
// This week
- else if ($ts > $nowTs && $ts - $nowTs < 7 * 86400) {
+ } else if ($ts > $nowTs && $ts - $nowTs < 7 * 86400) {
// translators: %1$s is "Mon". %2$s is "Jan 1".
$r = sprintf(_x('This %1$s, %2$s', "Short date format string", 'TouchPoint-WP'), $day, $date);
- }
+
// Next week
- else if ($ts > $nowTs && $ts - $nowTs < 14 * 86400) {
+ } else if ($ts > $nowTs && $ts - $nowTs < 14 * 86400) {
// translators: %1$s is "Mon". %2$s is "Jan 1".
$r = sprintf(_x('Next %1$s, %2$s', "Short date format string", 'TouchPoint-WP'), $day, $date);
From b94429bc4363507fbaf0baaba34eef041ad2a551 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Fri, 22 Nov 2024 13:06:01 -0500
Subject: [PATCH 219/423] Adding reports to submitted stats
---
src/TouchPoint-WP/Stats.php | 3 +++
src/TouchPoint-WP/TouchPointWP.php | 1 +
2 files changed, 4 insertions(+)
diff --git a/src/TouchPoint-WP/Stats.php b/src/TouchPoint-WP/Stats.php
index ba857834..ff9f9d1c 100644
--- a/src/TouchPoint-WP/Stats.php
+++ b/src/TouchPoint-WP/Stats.php
@@ -24,6 +24,7 @@
* @property int $involvementJoins
* @property int $involvementContacts
* @property int $involvementPosts
+ * @property int $reportPosts
* @property int $meetings
* @property int $rsvps
* @property int $people
@@ -42,6 +43,7 @@ class Stats implements api, \JsonSerializable, updatesViaCron
protected int $involvementJoins = 0;
protected int $involvementContacts = 0;
protected int $involvementPosts = 0; // updated by query
+ protected int $reportPosts = 0; // updated by query
protected int $meetings = 0; // updated by query
protected int $rsvps = 0;
protected int $people = 0; // updated by query
@@ -327,6 +329,7 @@ protected function updateQueriedStats(): void
global $wpdb;
$this->involvementPosts = $wpdb->get_var("SELECT COUNT(DISTINCT meta_value) as c FROM $wpdb->postmeta WHERE meta_key = 'tp_invId'") ?? -1;
+ $this->reportPosts = $wpdb->get_var("SELECT COUNT(*) as c FROM $wpdb->posts WHERE post_type = 'tp_report'") ?? -1;
$this->meetings = $wpdb->get_var("SELECT COUNT(DISTINCT meta_value) as c FROM $wpdb->postmeta WHERE meta_key = 'tp_mtgId'") ?? -1;
$this->people = $wpdb->get_var("SELECT COUNT(DISTINCT meta_value) as c FROM $wpdb->usermeta WHERE meta_key = 'tp_peopleId';") ?? -1;
$this->partnerPosts = $wpdb->get_var("SELECT COUNT(*) as c FROM $wpdb->posts WHERE post_type = 'tp_partner'") ?? -1;
diff --git a/src/TouchPoint-WP/TouchPointWP.php b/src/TouchPoint-WP/TouchPointWP.php
index fa914b67..c89c99b7 100644
--- a/src/TouchPoint-WP/TouchPointWP.php
+++ b/src/TouchPoint-WP/TouchPointWP.php
@@ -682,6 +682,7 @@ protected function createTables(): void
involvementJoins int(10) DEFAULT 0,
involvementContacts int(10) DEFAULT 0,
involvementPosts int(10) DEFAULT 0,
+ reportPosts int(10) DEFAULT 0,
meetings int(10) DEFAULT 0,
rsvps int(10) DEFAULT 0,
people int(10) DEFAULT 0,
From b78a81e6ebce9e197ce3952d2dc23c4c8b6a65a3 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Fri, 22 Nov 2024 13:08:51 -0500
Subject: [PATCH 220/423] Updating several settings
---
i18n/TouchPoint-WP-es_ES.po | 384 ++++++++++----------
i18n/TouchPoint-WP.pot | 378 +++++++++----------
src/TouchPoint-WP/TouchPointWP_Settings.php | 22 +-
3 files changed, 370 insertions(+), 414 deletions(-)
diff --git a/i18n/TouchPoint-WP-es_ES.po b/i18n/TouchPoint-WP-es_ES.po
index 2e2c014d..abb41fe6 100644
--- a/i18n/TouchPoint-WP-es_ES.po
+++ b/i18n/TouchPoint-WP-es_ES.po
@@ -55,7 +55,7 @@ msgid "Slug"
msgstr "Slug"
#: src/templates/admin/invKoForm.php:48
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:992
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:977
msgid "Divisions to Import"
msgstr "Divisiones a Importar"
@@ -314,497 +314,497 @@ msgstr "Contacta"
msgid "RSVP"
msgstr "RSVP"
-#: src/TouchPoint-WP/TouchPointWP.php:2029
+#: src/TouchPoint-WP/TouchPointWP.php:2030
msgid "Unknown Type"
msgstr "Tipo desconocido"
-#: src/TouchPoint-WP/TouchPointWP.php:2086
+#: src/TouchPoint-WP/TouchPointWP.php:2087
msgid "Your Searches"
msgstr "Tus búsquedas"
-#: src/TouchPoint-WP/TouchPointWP.php:2089
+#: src/TouchPoint-WP/TouchPointWP.php:2090
msgid "Public Searches"
msgstr "Búsquedas públicas"
-#: src/TouchPoint-WP/TouchPointWP.php:2092
+#: src/TouchPoint-WP/TouchPointWP.php:2093
msgid "Status Flags"
msgstr "Indicadores de Estado"
-#: src/TouchPoint-WP/TouchPointWP.php:2097
#: src/TouchPoint-WP/TouchPointWP.php:2098
+#: src/TouchPoint-WP/TouchPointWP.php:2099
msgid "Current Value"
msgstr "Valor actual"
-#: src/TouchPoint-WP/TouchPointWP.php:2215
-#: src/TouchPoint-WP/TouchPointWP.php:2251
+#: src/TouchPoint-WP/TouchPointWP.php:2216
+#: src/TouchPoint-WP/TouchPointWP.php:2252
msgid "Invalid or incomplete API Settings."
msgstr "Configuración de API no válida o incompleta."
-#: src/TouchPoint-WP/TouchPointWP.php:2265
-#: src/TouchPoint-WP/TouchPointWP.php:2309
+#: src/TouchPoint-WP/TouchPointWP.php:2266
+#: src/TouchPoint-WP/TouchPointWP.php:2310
msgid "Host appears to be missing from TouchPoint-WP configuration."
msgstr "Parece que falta el host en la configuración de TouchPoint-WP."
-#: src/TouchPoint-WP/TouchPointWP.php:2441
+#: src/TouchPoint-WP/TouchPointWP.php:2442
msgid "People Query Failed"
msgstr "Consulta de registros de personas fallida"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:258
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:257
msgid "Basic Settings"
msgstr "Ajustes básicos"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:259
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:258
msgid "Connect to TouchPoint and choose which features you wish to use."
msgstr "Conéctese a TouchPoint y elija qué funciones desea usar."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:263
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:262
msgid "Enable Authentication"
msgstr "Habilitar autenticación"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:264
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:263
msgid "Allow TouchPoint users to sign into this website with TouchPoint."
msgstr "Permita que los usuarios de TouchPoint inicien sesión en este sitio web con TouchPoint."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:275
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:274
msgid "Enable RSVP Tool"
msgstr "Habilitar la herramienta RSVP"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:276
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:275
msgid "Add a crazy-simple RSVP button to WordPress event pages."
msgstr "Agregue un botón RSVP muy simple a las páginas de eventos de WordPress."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:283
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:282
msgid "Enable Involvements"
msgstr "Habilitar Participaciones"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:284
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:283
msgid "Load Involvements from TouchPoint for involvement listings and entries native in your website."
msgstr "Cargue participaciones desde TouchPoint para obtener listas de participación y entradas nativas en su sitio web."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:305
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:304
msgid "Enable Public People Lists"
msgstr "Habilitar listas de personas públicas"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:306
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:305
msgid "Import public people listings from TouchPoint (e.g. staff or elders)"
msgstr "Importe listados públicos de personas desde TouchPoint (por ejemplo, personal o ancianos)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:316
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:315
msgid "Enable Global Partner Listings"
msgstr "Habilitar listados de Socios Globales"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:317
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:316
msgid "Import ministry partners from TouchPoint to list publicly."
msgstr "Importe socios ministeriales de TouchPoint para incluirlos en una lista pública."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:338
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:337
msgid "Display Name"
msgstr "Nombre para mostrar"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:339
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:338
msgid "What your church calls your TouchPoint database."
msgstr "Lo que su iglesia llama su base de datos TouchPoint."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:349
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:348
msgid "TouchPoint Host Name"
msgstr "Nombre de host del TouchPoint"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:350
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:349
msgid "The domain for your TouchPoint database, without the https or any slashes."
msgstr "El dominio de su base de datos TouchPoint, sin https ni barras."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:362
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:361
msgid "Custom Mobile App Deeplink Host Name"
msgstr "Nombre de host de enlace profundo de aplicación móvil personalizada"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:374
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:373
msgid "TouchPoint API Username"
msgstr "Nombre de usuario de la API de TouchPoint"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:386
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:385
msgid "TouchPoint API User Password"
msgstr "Contraseña de usuario de la API de TouchPoint"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:387
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:386
msgid "The password of a user account in TouchPoint with API permissions."
msgstr "La contraseña de una cuenta de usuario en TouchPoint con permisos de API."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:399
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:398
msgid "TouchPoint API Script Name"
msgstr "Nombre de la secuencia de comandos de la API de TouchPoint"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:400
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:399
msgid "The name of the Python script loaded into TouchPoint. Don't change this unless you know what you're doing."
msgstr "El nombre de la secuencia de comandos de Python cargada en TouchPoint. No cambies esto a menos que sepas lo que estás haciendo."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:411
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:410
msgid "Google Maps Javascript API Key"
msgstr "Clave de la API de Javascript de Google Maps"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:412
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:411
msgid "Required for embedding maps."
msgstr "Necesario para incrustar mapas."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:423
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:422
msgid "Google Maps Geocoding API Key"
msgstr "Clave API de codificación geográfica de Google Maps"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:424
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:423
msgid "Optional. Allows for reverse geocoding of user locations."
msgstr "Opcional. Permite la geocodificación inversa de las ubicaciones de los usuarios."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:464
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:469
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:463
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:468
msgid "Generate Scripts"
msgstr "Generar secuencias de comandos"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:468
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:467
msgid "Upload the package to {tpName} here"
msgstr "Sube el paquete a {tpName} aquí"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:485
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:484
msgid "People"
msgstr "Gente"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:486
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:485
msgid "Manage how people are synchronized between TouchPoint and WordPress."
msgstr "Administre cómo se sincronizan las personas entre TouchPoint y WordPress."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:490
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:489
msgid "Contact Keywords"
msgstr "Palabras clave de contacto"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:491
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:490
msgid "These keywords will be used when someone clicks the \"Contact\" button on a Person's listing or profile."
msgstr "Estas palabras clave se utilizarán cuando alguien haga clic en el botón \"Contactar\" en la lista o el perfil de una Persona."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:502
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:501
msgid "Extra Value for WordPress User ID"
msgstr "Valor Adicional para la ID de usuario de WordPress"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:503
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:502
msgid "The name of the extra value to use for the WordPress User ID. If you are using multiple WordPress instances with one TouchPoint database, you will need these values to be unique between WordPress instances. In most cases, the default is fine."
msgstr "El nombre del valor adicional que se usará para el ID de usuario de WordPress. Si está utilizando varias instancias de WordPress con una base de datos de TouchPoint, necesitará que estos valores sean únicos entre las instancias de WordPress. En la mayoría de los casos, el valor predeterminado está bien."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:513
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:512
msgid "Extra Value: Biography"
msgstr "Valor Adicional: Biografía"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:514
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:513
msgid "Import a Bio from a Person Extra Value field. Can be an HTML or Text Extra Value. This will overwrite any values set by WordPress. Leave blank to not import."
msgstr "Importe una biografía desde un campo de Valor Adicional de Persona. Puede ser un Valor Adicional HTML o de texto. Esto sobrescribirá cualquier valor establecido por WordPress. Dejar en blanco para no importar."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:524
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:762
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:523
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:761
msgid "Extra Values to Import"
msgstr "Valor Adicional para importar"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:525
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:524
msgid "Import People Extra Value fields as User Meta data."
msgstr "Importe campos de valor extra de personas como metadatos de usuario."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:541
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:540
msgid "Authentication"
msgstr "Autenticación"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:542
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:541
msgid "Allow users to log into WordPress using TouchPoint."
msgstr "Permita que los usuarios inicien sesión en WordPress usando TouchPoint."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:546
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:545
msgid "Make TouchPoint the default authentication method."
msgstr "Haga que TouchPoint sea el método de autenticación predeterminado."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:556
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:555
msgid "Enable Auto-Provisioning"
msgstr "Habilitar el aprovisionamiento automático"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:557
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:556
msgid "Automatically create WordPress users, if needed, to match authenticated TouchPoint users."
msgstr "Cree automáticamente usuarios de WordPress, si es necesario, para que coincidan con los usuarios autenticados de TouchPoint."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:566
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:565
msgid "Change 'Edit Profile' links"
msgstr "Cambiar los enlaces 'Editar perfil'"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:567
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:566
msgid "\"Edit Profile\" links will take the user to their TouchPoint profile, instead of their WordPress profile."
msgstr "Los enlaces \"Editar perfil\" llevarán al usuario a su perfil de TouchPoint, en lugar de a su perfil de WordPress."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:576
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:575
msgid "Enable full logout"
msgstr "Habilitar cierre de sesión completo"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:577
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:576
msgid "Logout of TouchPoint when logging out of WordPress."
msgstr "Cierre sesión en TouchPoint al cerrar sesión en WordPress."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:583
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:582
msgid "Prevent Subscriber Admin Bar"
msgstr "Prevenir la barra de administración de suscriptores"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:584
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:583
msgid "By enabling this option, users who can't edit anything won't see the Admin bar."
msgstr "Al habilitar esta opción, los usuarios que no pueden editar nada no verán la barra de administración."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:598
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:597
msgid "Involvements"
msgstr "Involucramientos"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:599
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:598
msgid "Import Involvements from TouchPoint to list them on your website, for Small Groups, Classes, and more. Select the division(s) that immediately correspond to the type of Involvement you want to list. For example, if you want a Small Group list and have a Small Group Division, only select the Small Group Division. If you want Involvements to be filterable by additional Divisions, select those Divisions on the Divisions tab, not here."
msgstr "Importe participaciones desde TouchPoint para enumerarlas en su sitio web, para grupos pequeños, clases y más. Seleccione la(s) división(es) que corresponda(n) inmediatamente al tipo de participación que desea enumerar. Por ejemplo, si desea una lista de grupos pequeños y tiene una división de grupos pequeños, solo seleccione la división de grupos pequeños. Si desea que las participaciones se puedan filtrar por divisiones adicionales, seleccione esas divisiones en la pestaña Divisiones, no aquí."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:604
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:603
msgid "Involvement Post Types"
msgstr "Tipos de publicaciones de Involucramientos"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:634
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:633
msgid "Global Partners"
msgstr "Misioneros"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:635
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:634
msgid "Manage how global partners are imported from TouchPoint for listing on WordPress. Partners are grouped by family, and content is provided through Family Extra Values. This works for both People and Business records."
msgstr "Administre cómo se importan los socios globales desde TouchPoint para incluirlos en WordPress. Los socios se agrupan por familia y el contenido se proporciona a través de Valor Extra Familiar. Esto funciona tanto para registros de personas como de empresas."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:639
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:638
msgid "Global Partner Name (Plural)"
msgstr "Nombre de los misioneros (plural)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:640
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:639
msgid "What you call Global Partners at your church"
msgstr "Lo que llamas los Misioneros en tu iglesia"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:650
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:649
msgid "Global Partner Name (Singular)"
msgstr "Nombre de un misionero (singular)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:651
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:650
msgid "What you call a Global Partner at your church"
msgstr "Lo que llamas un Misionero en tu iglesia"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:661
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:660
msgid "Global Partner Name for Secure Places (Plural)"
msgstr "Nombre de los misioneros para lugares seguros (plural)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:662
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:661
msgid "What you call Secure Global Partners at your church"
msgstr "Lo que llamas un Misionero seguro en tu iglesia"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:672
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:671
msgid "Global Partner Name for Secure Places (Singular)"
msgstr "Nombre de un misionero para lugares seguros (singular)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:673
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:672
msgid "What you call a Secure Global Partner at your church"
msgstr "Lo que llamas los Misioneros seguros en tu iglesia"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:683
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:682
msgid "Global Partner Slug"
msgstr "Slug de Socio Global"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:684
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:683
msgid "The root path for Global Partner posts"
msgstr "La ruta raíz para las publicaciones de Socios Globales"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:696
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:695
msgid "Saved Search"
msgstr "Búsqueda Guardada"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:697
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:696
msgid "Anyone who is included in this saved search will be included in the listing."
msgstr "Cualquiera que esté incluido en esta búsqueda guardada se incluirá en la lista."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:707
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:706
msgid "Extra Value: Description"
msgstr "Valor Adicional: Descripción"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:708
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:707
msgid "Import a description from a Family Extra Value field. Can be an HTML or Text Extra Value. This becomes the body of the Global Partner post."
msgstr "Importe una descripción de un campo de Valor Extra Familiar. Puede ser un valor adicional HTML o de texto. Esto se convierte en el cuerpo de la publicación del socio global."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:718
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:717
msgid "Extra Value: Summary"
msgstr "Valor Adicional: Resumen"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:719
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:718
msgid "Optional. Import a short description from a Family Extra Value field. Can be an HTML or Text Extra Value. If not provided, the full bio will be truncated."
msgstr "Opcional. Importe una breve descripción de un campo de Valor Extra Familiar. Puede ser un Valor Adicional HTML o de texto. Si no se proporciona, la biografía completa se truncará."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:729
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:728
msgid "Latitude Override"
msgstr "Anulación de latitud"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:730
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:729
msgid "Designate a text Family Extra Value that will contain a latitude that overrides any locations on the partner's profile for the partner map. Both latitude and longitude must be provided for an override to take place."
msgstr "Designe un Valor Familiar Adicional de texto que contenga una latitud que anule cualquier ubicación en el perfil del socio para el mapa de socios. Tanto la latitud como la longitud deben proporcionarse para que se produzca una anulación."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:740
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:739
msgid "Longitude Override"
msgstr "Anulación de longitud"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:741
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:740
msgid "Designate a text Family Extra Value that will contain a longitude that overrides any locations on the partner's profile for the partner map. Both latitude and longitude must be provided for an override to take place."
msgstr "Designe un Valor Familiar Adicional de texto que contenga una longitud que anule cualquier ubicación en el perfil del socio para el mapa de socios. Tanto la latitud como la longitud deben proporcionarse para que se produzca una anulación."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:751
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:750
msgid "Public Location"
msgstr "Ubicación Pública"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:752
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:751
msgid "Designate a text Family Extra Value that will contain the partner's location, as you want listed publicly. For partners who have DecoupleLocation enabled, this field will be associated with the map point, not the list entry."
msgstr "Designe un Valor Adicional Familiar de texto que contendrá la ubicación del socio, como desea que se enumere públicamente. Para los socios que tienen DecoupleLocation habilitado, este campo se asociará con el punto del mapa, no con la entrada de la lista."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:763
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:762
msgid "Import Family Extra Value fields as Meta data on the partner's post"
msgstr "Importe campos de Valor Adicional Familiar como Metadatos en la publicación del socio"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:774
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:773
msgid "Primary Taxonomy"
msgstr "Taxonomía Primaria"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:775
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:774
msgid "Import a Family Extra Value as the primary means by which partners are organized."
msgstr "Importe un Valor Adicional Familiar como el medio principal por el cual se organizan los socios."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:818
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:817
msgid "Events for Custom Mobile App"
msgstr "Eventos para la aplicación móvil personalizada"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:823
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:822
msgid "Preview"
msgstr "Preestrena"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:838
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:837
msgid "Use Standardizing Stylesheet"
msgstr "Usar hoja de estilo de estandarización"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:839
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:838
msgid "Inserts some basic CSS into the events feed to clean up display"
msgstr "Inserta algo de CSS básico en el feed de eventos para limpiar la pantalla"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:950
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:935
msgid "Divisions"
msgstr "Divisiones"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:951
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:936
msgid "Import Divisions from TouchPoint to your website as a taxonomy. These are used to classify users and involvements."
msgstr "Importe Divisiones desde TouchPoint a su sitio web como una taxonomía. Estos se utilizan para clasificar a los usuarios y las participaciones."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:955
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:940
msgid "Division Name (Plural)"
msgstr "Nombre de la División (plural)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:956
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:941
msgid "What you call Divisions at your church"
msgstr "Lo que llamas Divisiones en tu iglesia"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:967
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:952
msgid "Division Name (Singular)"
msgstr "Nombre de la División (Singular)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:968
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:953
msgid "What you call a Division at your church"
msgstr "Lo que llamas una división en tu iglesia"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:979
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:964
msgid "Division Slug"
msgstr "Slug de División"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:980
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:965
msgid "The root path for the Division Taxonomy"
msgstr "La ruta raíz para la Taxonomía de División"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:993
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:978
msgid "These Divisions will be imported for the taxonomy"
msgstr "Estas Divisiones se importarán para la taxonomía"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1044
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1029
msgid "Campuses"
msgstr "Campus"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1045
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1030
msgid "Import Campuses from TouchPoint to your website as a taxonomy. These are used to classify users and involvements."
msgstr "Importe Campus desde TouchPoint a su sitio web como una taxonomía. Estos se utilizan para clasificar a los usuarios y las participaciones."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1052
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1037
msgid "Campus Name (Plural)"
msgstr "Nombre del Campus (Plural)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1053
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1038
msgid "What you call Campuses at your church"
msgstr "Lo que llamas Campus en tu iglesia"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1064
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1049
msgid "Campus Name (Singular)"
msgstr "Nombre del Campus (Singular)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1065
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1050
msgid "What you call a Campus at your church"
msgstr "Lo que llamas un Campus en tu iglesia"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1076
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1061
msgid "Campus Slug"
msgstr "Slug de Campus"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1077
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1062
msgid "The root path for the Campus Taxonomy"
msgstr "La ruta raíz para la Taxonomía del Campus"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1093
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1078
msgid "Resident Codes"
msgstr "Códigos de Residentes"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1094
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1079
msgid "Import Resident Codes from TouchPoint to your website as a taxonomy. These are used to classify users and involvements that have locations."
msgstr "Importe Códigos de Residentes desde TouchPoint a su sitio web como una taxonomía. Estos se utilizan para clasificar los usuarios y las participaciones que tienen ubicaciones."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1098
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1083
msgid "Resident Code Name (Plural)"
msgstr "Nombre de Código de Tesidente (Plural)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1099
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1084
msgid "What you call Resident Codes at your church"
msgstr "Lo que llamas Códigos de Residente en tu iglesia"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1110
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1095
msgid "Resident Code Name (Singular)"
msgstr "Nombre de Código de Residente (singular)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1111
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1096
msgid "What you call a Resident Code at your church"
msgstr "Lo que llamas un Código de Residencia en tu iglesia"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1122
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1107
msgid "Resident Code Slug"
msgstr "Slug de Código Residente"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1123
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1108
msgid "The root path for the Resident Code Taxonomy"
msgstr "La ruta raíz para la Taxonomía del Código de Residente"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1299
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1284
msgid "password saved"
msgstr "contraseña guardada"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1353
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1354
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1338
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1339
msgid "TouchPoint-WP"
msgstr "TouchPoint-WP"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1402
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1387
msgid "Settings"
msgstr "Ajustes"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1639
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1627
msgid "Script Update Failed"
msgstr "Actualización de secuencia de comandos fallida"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1761
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1749
msgid "TouchPoint-WP Settings"
msgstr "Configuración de TouchPoint-WP"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1812
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1800
msgid "Save Settings"
msgstr "Guardar ajustes"
@@ -972,7 +972,7 @@ msgstr "Enviar"
msgid "Nothing to submit."
msgstr "Nada que enviar."
-#: src/TouchPoint-WP/TouchPointWP.php:2382
+#: src/TouchPoint-WP/TouchPointWP.php:2383
msgid "The scripts on TouchPoint that interact with this plugin are out-of-date, and an automatic update failed."
msgstr "Los scripts en TouchPoint que interactúan con este complemento están desactualizados y falló una actualización automática."
@@ -1154,12 +1154,12 @@ msgstr "Añade una ubicación"
msgid "The Campus"
msgstr "El campus"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1019
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1025
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1004
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1010
msgid "Locations"
msgstr "Ubicaciones"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1020
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1005
msgid "Locations are physical places, probably campuses. None are required, but they can help present geographic information clearly."
msgstr "Las ubicaciones son lugares físicos, probablemente campus. No se requiere ninguno, pero pueden ayudar a presentar la información geográfica con claridad."
@@ -1268,7 +1268,7 @@ msgctxt "miles. Unit is appended to a number. %2.1f is the number, so %2.1fmi l
msgid "%2.1fmi"
msgstr "%2.1fmi"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:375
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:374
msgid "The username of a user account in TouchPoint with API permissions. It is strongly recommended that you create a separate person/user for this purpose, rather than using a staff member's account."
msgstr "El nombre de usuario de una cuenta de usuario en TouchPoint con permisos API. Se recomienda encarecidamente que cree una persona/usuario independiente para este fin, en lugar de utilizar la cuenta de un miembro del personal."
@@ -1293,7 +1293,7 @@ msgid "Could not locate."
msgstr "No se pudo localizar."
#: src/TouchPoint-WP/Meeting.php:672
-#: src/TouchPoint-WP/TouchPointWP.php:1031
+#: src/TouchPoint-WP/TouchPointWP.php:1032
msgid "Only GET requests are allowed."
msgstr "Solo se permiten solicitudes GET."
@@ -1312,7 +1312,7 @@ msgstr "Datos proporcionados no válidos."
msgid "Invalid Post Type."
msgstr "Tipo de publicación no válida."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:327
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:326
msgid "Enable Campuses"
msgstr "Habilitar Campus"
@@ -1377,7 +1377,7 @@ msgstr "Estados Civiles"
msgid "Classify Partners by category chosen in settings."
msgstr "Clasifique a los ministeriales por categoría elegida en la configuración."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:328
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:327
msgid "Import campuses as a taxonomy. (You probably want to do this if you're multi-campus.)"
msgstr "Importar campus como taxonomía. (Probablemente quieras hacer esto si tienes varios campus)."
@@ -1445,11 +1445,11 @@ msgctxt "list of people, and *others*"
msgid "others"
msgstr "otros"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:851
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:850
msgid "Meeting Calendars"
msgstr "Calendarios de Reuniones"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:852
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:851
msgid "Import Meetings from TouchPoint to a calendar on your website."
msgstr "Importe reuniones desde TouchPoint a un calendario en su sitio web."
@@ -1457,44 +1457,28 @@ msgstr "Importe reuniones desde TouchPoint a un calendario en su sitio web."
msgid "Import All Meetings to Calendar"
msgstr "Importe reuniones a los calendarios"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:880
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:879
msgid "Meetings Slug"
msgstr "Slug de reuniones"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:881
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:880
msgid "The root path for Meetings"
msgstr "La ruta raíz para las reuniones"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:932
-msgid "Meeting Deletion Handling"
-msgstr "Manejo de eliminación de reuniones"
-
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:933
-msgid "When a Meeting is deleted in TouchPoint that has already been imported to WordPress, how should that be handled?"
-msgstr "Cuando se elimina una reunión en TouchPoint que ya se ha importado a WordPress, ¿cómo se debe manejar?"
-
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:939
-msgid "Always delete from WordPress"
-msgstr "Eliminar siempre de WordPress"
-
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:940
-msgid "Mark the occurrence as cancelled"
-msgstr "Marcar la ocurrencia como cancelada"
-
#: src/TouchPoint-WP/Involvement.php:3951
#: src/TouchPoint-WP/Person.php:1833
msgid "Contact Prohibited."
msgstr "Contacto prohibido."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:547
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:546
msgid "By checking this box, the TouchPoint login page will become the default. To prevent the redirect and reach the standard WordPress login page, add 'tp_no_redirect' as a URL parameter."
msgstr "Al marcar esta casilla, la página de inicio de sesión de TouchPoint se convertirá en la predeterminada. Para evitar la redirección y llegar a la página de inicio de sesión estándar de WordPress, agregue 'tp_no_redirect' como parámetro de URL."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:363
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:362
msgid "The domain for your mobile app deeplinks, without the https or any slashes. If you aren't using the custom mobile app, leave this blank."
msgstr "El dominio de los enlaces profundos de su aplicación móvil, sin https ni barras diagonales. Si no está utilizando la aplicación móvil personalizada, déjelo en blanco."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:467
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:466
msgid "Once your settings on this page are set and saved, use this tool to generate the scripts needed for TouchPoint in a convenient installation package."
msgstr "Una vez que haya configurado y guardado la configuración en esta página, utilice esta herramienta para generar los scripts necesarios para TouchPoint en un paquete de instalación conveniente."
@@ -1526,48 +1510,40 @@ msgctxt "What Meetings should be called, singular."
msgid "Event"
msgstr "Evento"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:294
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:293
msgid "Enable Meeting Calendar"
msgstr "Habilitar calendario de reuniones"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:295
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:294
msgid "Load Meetings from TouchPoint for a calendar, native in your website."
msgstr "Cargue reuniones desde TouchPoint para un calendario nativo en su sitio web."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:893
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:892
msgid "Days of Future"
msgstr "Días del futuro"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:894
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:893
msgid "Meetings more than this many days in the future will not be imported."
msgstr "No se importarán reuniones que superen estos días en el futuro."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:906
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:905
msgid "Archive After Days"
msgstr "Archivo después de días"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:907
-msgid "Meetings more than this many days in the past will be moved to the Events Archive. Once this date passes, meeting information will no longer update."
-msgstr "Las reuniones que hayan transcurrido más de esta cantidad de días pasados se trasladarán al Archivo de eventos. Una vez que pase esta fecha, la información de la reunión ya no se actualizará."
-
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:919
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:918
msgid "Days of History"
msgstr "Días de la Historia"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:920
-msgid "Meetings will be kept for the public calendar until the event is this many days in the past."
-msgstr "Las reuniones se mantendrán para el calendario público hasta que hayan transcurrido tantos días desde el evento."
-
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1004
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1135
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:989
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1120
msgid "Post Types"
msgstr "Tipos de publicaciones"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1005
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:990
msgid "Select post types which should have Divisions available as a native taxonomy."
msgstr "Seleccione los tipos de publicaciones que deberían tener Divisiones disponibles como taxonomía nativa."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1136
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1121
msgid "Select post types which should have Resident Codes available as a native taxonomy."
msgstr "Seleccione los tipos de publicaciones que deberían tener códigos de residente disponibles como taxonomía nativa."
@@ -1650,39 +1626,39 @@ msgstr "Reunión en %s"
msgid "Person in %s"
msgstr "Persona en %s"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:856
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:855
msgid "Meeting Name (Plural)"
msgstr "Nombre de las reuniones (singular)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:857
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:856
msgid "What you call Meetings at your church"
msgstr "Lo que llamas Reuniones en tu iglesia"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:862
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:864
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:861
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:863
msgid "Meetings"
msgstr "Reuniones"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:862
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:864
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:861
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:863
msgid "Events"
msgstr "Eventos"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:868
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:867
msgid "Meeting Name (Singular)"
msgstr "Nombre de la reunión (singular)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:869
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:868
msgid "What you call a Meeting at your church"
msgstr "Cómo se llama una Reunión en tu iglesia"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:874
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:876
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:873
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:875
msgid "Meeting"
msgstr "Reunión"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:874
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:876
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:873
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:875
msgid "Event"
msgstr "Evento"
@@ -1789,31 +1765,31 @@ msgstr "No hay %s publicados para este mes."
msgid "Radius (miles)"
msgstr "Radio (millas)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:792
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:791
msgid "Events Calendar plugin by Modern Tribe"
msgstr "Complemento de calendario de eventos de Modern Tribe"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:796
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:795
msgid "TouchPoint Meetings"
msgstr "reuniones de TouchPoint"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:802
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:801
msgid "App 2.0 Calendar"
msgstr "Calendario de la app 2.0"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:807
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:806
msgid "Events Provider"
msgstr "Proveedor de eventos"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:808
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:807
msgid "The source of events for version 2.0 of the Custom Mobile App."
msgstr "El origen de los eventos para la versión 2.0 de la aplicación móvil personalizada."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:821
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:820
msgid "To use your Events Calendar events in the Custom mobile app, set the Provider to Wordpress Plugin - Modern Tribe (regardless of which provider you're using above) and use this url:"
msgstr "Para usar sus eventos del Calendario de eventos en la aplicación móvil personalizada, configure el Proveedor en Wordpress Plugin - Modern Tribe (independientemente del proveedor que esté utilizando anteriormente) y use esta URL:"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:803
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:802
msgid "Integrate Custom Mobile app version 2.0 with The Events Calendar from Modern Tribe."
msgstr "Integre la versión 2.0 de la aplicación móvil personalizada con el calendario de eventos de Modern Tribe."
@@ -1843,19 +1819,19 @@ msgctxt "list of items, and *others*"
msgid "others"
msgstr "otros"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:434
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:433
msgid "ipapi.co API Key"
msgstr "Clave API de ipapi.co"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:435
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:434
msgid "Optional. Allows for geolocation of user IP addresses. This generally will work without a key, but may be rate limited."
msgstr "Opcional. Permite la geolocalización de las direcciones IP de los usuarios. Por lo general, esto funcionará sin una clave, pero puede tener una frecuencia limitada."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:445
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:444
msgid "Allow the TouchPoint-WP developers to publicly list your site/church as using TouchPoint-WP"
msgstr "Permitir que los desarrolladores de TouchPoint-WP incluyan públicamente su sitio/iglesia como usuarios de TouchPoint-WP"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:446
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:445
msgid "Helps other prospective churches see what can be done by combining WordPress with the best ChMS on the planet. Only applies if this site is accessible on the public internet."
msgstr "Ayuda a otras iglesias potenciales a ver lo que se puede hacer combinando WordPress con el mejor ChMS del planeta. Solo se aplica si este sitio es accesible en Internet público."
@@ -1887,3 +1863,11 @@ msgstr "Actualizada"
#: src/TouchPoint-WP/Utilities/DateFormats.php:205
msgid "Yesterday"
msgstr "Ayer"
+
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:906
+msgid "Meetings more than this many days in the past will no longer update from TouchPoint, allowing you to keep some historical event information on the calendar for reference, even if you reuse and update the information in the Involvement."
+msgstr "Las reuniones con más de esta cantidad de días en el pasado ya no se actualizarán desde TouchPoint, lo que le permitirá conservar información histórica de eventos en el calendario para referencia, incluso si reutiliza y actualiza la información en Participación."
+
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:919
+msgid "Meetings will be kept on the calendar until the event is this many days in the past. Once an event is older than this, it'll be deleted."
+msgstr "Las reuniones se mantendrán en el calendario hasta que el evento tenga esta cantidad de días en el pasado. Una vez que un evento tenga más de esta cantidad de días, se eliminará."
diff --git a/i18n/TouchPoint-WP.pot b/i18n/TouchPoint-WP.pot
index 71300fa4..977622c1 100644
--- a/i18n/TouchPoint-WP.pot
+++ b/i18n/TouchPoint-WP.pot
@@ -9,7 +9,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"POT-Creation-Date: 2024-11-22T17:39:16+00:00\n"
+"POT-Creation-Date: 2024-11-22T18:07:49+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"X-Generator: WP-CLI 2.11.0\n"
"X-Domain: TouchPoint-WP\n"
@@ -58,7 +58,7 @@ msgid "Slug"
msgstr ""
#: src/templates/admin/invKoForm.php:48
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:992
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:977
msgid "Divisions to Import"
msgstr ""
@@ -572,7 +572,7 @@ msgid "Unknown"
msgstr ""
#: src/TouchPoint-WP/Meeting.php:672
-#: src/TouchPoint-WP/TouchPointWP.php:1031
+#: src/TouchPoint-WP/TouchPointWP.php:1032
msgid "Only GET requests are allowed."
msgstr ""
@@ -745,691 +745,675 @@ msgstr ""
msgid "Every 15 minutes"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2029
+#: src/TouchPoint-WP/TouchPointWP.php:2030
msgid "Unknown Type"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2086
+#: src/TouchPoint-WP/TouchPointWP.php:2087
msgid "Your Searches"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2089
+#: src/TouchPoint-WP/TouchPointWP.php:2090
msgid "Public Searches"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2092
+#: src/TouchPoint-WP/TouchPointWP.php:2093
msgid "Status Flags"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2097
#: src/TouchPoint-WP/TouchPointWP.php:2098
+#: src/TouchPoint-WP/TouchPointWP.php:2099
msgid "Current Value"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2215
-#: src/TouchPoint-WP/TouchPointWP.php:2251
+#: src/TouchPoint-WP/TouchPointWP.php:2216
+#: src/TouchPoint-WP/TouchPointWP.php:2252
msgid "Invalid or incomplete API Settings."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2265
-#: src/TouchPoint-WP/TouchPointWP.php:2309
+#: src/TouchPoint-WP/TouchPointWP.php:2266
+#: src/TouchPoint-WP/TouchPointWP.php:2310
msgid "Host appears to be missing from TouchPoint-WP configuration."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2382
+#: src/TouchPoint-WP/TouchPointWP.php:2383
msgid "The scripts on TouchPoint that interact with this plugin are out-of-date, and an automatic update failed."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2441
+#: src/TouchPoint-WP/TouchPointWP.php:2442
msgid "People Query Failed"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:258
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:257
msgid "Basic Settings"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:259
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:258
msgid "Connect to TouchPoint and choose which features you wish to use."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:263
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:262
msgid "Enable Authentication"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:264
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:263
msgid "Allow TouchPoint users to sign into this website with TouchPoint."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:275
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:274
msgid "Enable RSVP Tool"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:276
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:275
msgid "Add a crazy-simple RSVP button to WordPress event pages."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:283
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:282
msgid "Enable Involvements"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:284
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:283
msgid "Load Involvements from TouchPoint for involvement listings and entries native in your website."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:294
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:293
msgid "Enable Meeting Calendar"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:295
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:294
msgid "Load Meetings from TouchPoint for a calendar, native in your website."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:305
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:304
msgid "Enable Public People Lists"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:306
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:305
msgid "Import public people listings from TouchPoint (e.g. staff or elders)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:316
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:315
msgid "Enable Global Partner Listings"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:317
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:316
msgid "Import ministry partners from TouchPoint to list publicly."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:327
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:326
msgid "Enable Campuses"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:328
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:327
msgid "Import campuses as a taxonomy. (You probably want to do this if you're multi-campus.)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:338
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:337
msgid "Display Name"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:339
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:338
msgid "What your church calls your TouchPoint database."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:349
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:348
msgid "TouchPoint Host Name"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:350
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:349
msgid "The domain for your TouchPoint database, without the https or any slashes."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:362
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:361
msgid "Custom Mobile App Deeplink Host Name"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:363
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:362
msgid "The domain for your mobile app deeplinks, without the https or any slashes. If you aren't using the custom mobile app, leave this blank."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:374
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:373
msgid "TouchPoint API Username"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:375
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:374
msgid "The username of a user account in TouchPoint with API permissions. It is strongly recommended that you create a separate person/user for this purpose, rather than using a staff member's account."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:386
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:385
msgid "TouchPoint API User Password"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:387
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:386
msgid "The password of a user account in TouchPoint with API permissions."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:399
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:398
msgid "TouchPoint API Script Name"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:400
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:399
msgid "The name of the Python script loaded into TouchPoint. Don't change this unless you know what you're doing."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:411
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:410
msgid "Google Maps Javascript API Key"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:412
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:411
msgid "Required for embedding maps."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:423
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:422
msgid "Google Maps Geocoding API Key"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:424
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:423
msgid "Optional. Allows for reverse geocoding of user locations."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:434
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:433
msgid "ipapi.co API Key"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:435
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:434
msgid "Optional. Allows for geolocation of user IP addresses. This generally will work without a key, but may be rate limited."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:445
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:444
msgid "Allow the TouchPoint-WP developers to publicly list your site/church as using TouchPoint-WP"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:446
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:445
msgid "Helps other prospective churches see what can be done by combining WordPress with the best ChMS on the planet. Only applies if this site is accessible on the public internet."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:464
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:469
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:463
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:468
msgid "Generate Scripts"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:467
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:466
msgid "Once your settings on this page are set and saved, use this tool to generate the scripts needed for TouchPoint in a convenient installation package."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:468
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:467
msgid "Upload the package to {tpName} here"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:485
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:484
msgid "People"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:486
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:485
msgid "Manage how people are synchronized between TouchPoint and WordPress."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:490
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:489
msgid "Contact Keywords"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:491
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:490
msgid "These keywords will be used when someone clicks the \"Contact\" button on a Person's listing or profile."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:502
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:501
msgid "Extra Value for WordPress User ID"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:503
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:502
msgid "The name of the extra value to use for the WordPress User ID. If you are using multiple WordPress instances with one TouchPoint database, you will need these values to be unique between WordPress instances. In most cases, the default is fine."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:513
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:512
msgid "Extra Value: Biography"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:514
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:513
msgid "Import a Bio from a Person Extra Value field. Can be an HTML or Text Extra Value. This will overwrite any values set by WordPress. Leave blank to not import."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:524
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:762
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:523
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:761
msgid "Extra Values to Import"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:525
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:524
msgid "Import People Extra Value fields as User Meta data."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:541
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:540
msgid "Authentication"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:542
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:541
msgid "Allow users to log into WordPress using TouchPoint."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:546
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:545
msgid "Make TouchPoint the default authentication method."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:547
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:546
msgid "By checking this box, the TouchPoint login page will become the default. To prevent the redirect and reach the standard WordPress login page, add 'tp_no_redirect' as a URL parameter."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:556
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:555
msgid "Enable Auto-Provisioning"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:557
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:556
msgid "Automatically create WordPress users, if needed, to match authenticated TouchPoint users."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:566
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:565
msgid "Change 'Edit Profile' links"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:567
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:566
msgid "\"Edit Profile\" links will take the user to their TouchPoint profile, instead of their WordPress profile."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:576
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:575
msgid "Enable full logout"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:577
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:576
msgid "Logout of TouchPoint when logging out of WordPress."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:583
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:582
msgid "Prevent Subscriber Admin Bar"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:584
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:583
msgid "By enabling this option, users who can't edit anything won't see the Admin bar."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:598
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:597
msgid "Involvements"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:599
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:598
msgid "Import Involvements from TouchPoint to list them on your website, for Small Groups, Classes, and more. Select the division(s) that immediately correspond to the type of Involvement you want to list. For example, if you want a Small Group list and have a Small Group Division, only select the Small Group Division. If you want Involvements to be filterable by additional Divisions, select those Divisions on the Divisions tab, not here."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:604
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:603
msgid "Involvement Post Types"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:634
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:633
msgid "Global Partners"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:635
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:634
msgid "Manage how global partners are imported from TouchPoint for listing on WordPress. Partners are grouped by family, and content is provided through Family Extra Values. This works for both People and Business records."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:639
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:638
msgid "Global Partner Name (Plural)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:640
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:639
msgid "What you call Global Partners at your church"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:650
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:649
msgid "Global Partner Name (Singular)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:651
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:650
msgid "What you call a Global Partner at your church"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:661
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:660
msgid "Global Partner Name for Secure Places (Plural)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:662
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:661
msgid "What you call Secure Global Partners at your church"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:672
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:671
msgid "Global Partner Name for Secure Places (Singular)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:673
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:672
msgid "What you call a Secure Global Partner at your church"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:683
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:682
msgid "Global Partner Slug"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:684
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:683
msgid "The root path for Global Partner posts"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:696
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:695
msgid "Saved Search"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:697
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:696
msgid "Anyone who is included in this saved search will be included in the listing."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:707
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:706
msgid "Extra Value: Description"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:708
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:707
msgid "Import a description from a Family Extra Value field. Can be an HTML or Text Extra Value. This becomes the body of the Global Partner post."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:718
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:717
msgid "Extra Value: Summary"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:719
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:718
msgid "Optional. Import a short description from a Family Extra Value field. Can be an HTML or Text Extra Value. If not provided, the full bio will be truncated."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:729
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:728
msgid "Latitude Override"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:730
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:729
msgid "Designate a text Family Extra Value that will contain a latitude that overrides any locations on the partner's profile for the partner map. Both latitude and longitude must be provided for an override to take place."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:740
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:739
msgid "Longitude Override"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:741
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:740
msgid "Designate a text Family Extra Value that will contain a longitude that overrides any locations on the partner's profile for the partner map. Both latitude and longitude must be provided for an override to take place."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:751
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:750
msgid "Public Location"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:752
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:751
msgid "Designate a text Family Extra Value that will contain the partner's location, as you want listed publicly. For partners who have DecoupleLocation enabled, this field will be associated with the map point, not the list entry."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:763
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:762
msgid "Import Family Extra Value fields as Meta data on the partner's post"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:774
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:773
msgid "Primary Taxonomy"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:775
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:774
msgid "Import a Family Extra Value as the primary means by which partners are organized."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:792
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:791
msgid "Events Calendar plugin by Modern Tribe"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:796
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:795
msgid "TouchPoint Meetings"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:802
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:801
msgid "App 2.0 Calendar"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:803
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:802
msgid "Integrate Custom Mobile app version 2.0 with The Events Calendar from Modern Tribe."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:807
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:806
msgid "Events Provider"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:808
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:807
msgid "The source of events for version 2.0 of the Custom Mobile App."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:818
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:817
msgid "Events for Custom Mobile App"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:821
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:820
msgid "To use your Events Calendar events in the Custom mobile app, set the Provider to Wordpress Plugin - Modern Tribe (regardless of which provider you're using above) and use this url:"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:823
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:822
msgid "Preview"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:838
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:837
msgid "Use Standardizing Stylesheet"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:839
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:838
msgid "Inserts some basic CSS into the events feed to clean up display"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:851
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:850
msgid "Meeting Calendars"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:852
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:851
msgid "Import Meetings from TouchPoint to a calendar on your website."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:856
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:855
msgid "Meeting Name (Plural)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:857
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:856
msgid "What you call Meetings at your church"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:862
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:864
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:861
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:863
msgid "Meetings"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:862
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:864
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:861
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:863
msgid "Events"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:868
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:867
msgid "Meeting Name (Singular)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:869
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:868
msgid "What you call a Meeting at your church"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:874
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:876
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:873
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:875
msgid "Meeting"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:874
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:876
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:873
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:875
msgid "Event"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:880
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:879
msgid "Meetings Slug"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:881
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:880
msgid "The root path for Meetings"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:893
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:892
msgid "Days of Future"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:894
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:893
msgid "Meetings more than this many days in the future will not be imported."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:906
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:905
msgid "Archive After Days"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:907
-msgid "Meetings more than this many days in the past will be moved to the Events Archive. Once this date passes, meeting information will no longer update."
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:906
+msgid "Meetings more than this many days in the past will no longer update from TouchPoint, allowing you to keep some historical event information on the calendar for reference, even if you reuse and update the information in the Involvement."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:919
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:918
msgid "Days of History"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:920
-msgid "Meetings will be kept for the public calendar until the event is this many days in the past."
-msgstr ""
-
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:932
-msgid "Meeting Deletion Handling"
-msgstr ""
-
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:933
-msgid "When a Meeting is deleted in TouchPoint that has already been imported to WordPress, how should that be handled?"
-msgstr ""
-
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:939
-msgid "Always delete from WordPress"
-msgstr ""
-
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:940
-msgid "Mark the occurrence as cancelled"
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:919
+msgid "Meetings will be kept on the calendar until the event is this many days in the past. Once an event is older than this, it'll be deleted."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:950
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:935
msgid "Divisions"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:951
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:936
msgid "Import Divisions from TouchPoint to your website as a taxonomy. These are used to classify users and involvements."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:955
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:940
msgid "Division Name (Plural)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:956
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:941
msgid "What you call Divisions at your church"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:967
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:952
msgid "Division Name (Singular)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:968
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:953
msgid "What you call a Division at your church"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:979
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:964
msgid "Division Slug"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:980
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:965
msgid "The root path for the Division Taxonomy"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:993
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:978
msgid "These Divisions will be imported for the taxonomy"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1004
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1135
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:989
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1120
msgid "Post Types"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1005
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:990
msgid "Select post types which should have Divisions available as a native taxonomy."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1019
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1025
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1004
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1010
msgid "Locations"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1020
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1005
msgid "Locations are physical places, probably campuses. None are required, but they can help present geographic information clearly."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1044
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1029
msgid "Campuses"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1045
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1030
msgid "Import Campuses from TouchPoint to your website as a taxonomy. These are used to classify users and involvements."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1052
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1037
msgid "Campus Name (Plural)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1053
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1038
msgid "What you call Campuses at your church"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1064
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1049
msgid "Campus Name (Singular)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1065
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1050
msgid "What you call a Campus at your church"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1076
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1061
msgid "Campus Slug"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1077
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1062
msgid "The root path for the Campus Taxonomy"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1093
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1078
msgid "Resident Codes"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1094
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1079
msgid "Import Resident Codes from TouchPoint to your website as a taxonomy. These are used to classify users and involvements that have locations."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1098
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1083
msgid "Resident Code Name (Plural)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1099
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1084
msgid "What you call Resident Codes at your church"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1110
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1095
msgid "Resident Code Name (Singular)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1111
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1096
msgid "What you call a Resident Code at your church"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1122
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1107
msgid "Resident Code Slug"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1123
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1108
msgid "The root path for the Resident Code Taxonomy"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1136
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1121
msgid "Select post types which should have Resident Codes available as a native taxonomy."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1299
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1284
msgid "password saved"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1353
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1354
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1338
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1339
msgid "TouchPoint-WP"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1402
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1387
msgid "Settings"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1639
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1627
msgid "Script Update Failed"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1761
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1749
msgid "TouchPoint-WP Settings"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1812
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1800
msgid "Save Settings"
msgstr ""
diff --git a/src/TouchPoint-WP/TouchPointWP_Settings.php b/src/TouchPoint-WP/TouchPointWP_Settings.php
index 54ea88e1..71162a74 100644
--- a/src/TouchPoint-WP/TouchPointWP_Settings.php
+++ b/src/TouchPoint-WP/TouchPointWP_Settings.php
@@ -78,7 +78,6 @@
* @property-read int mc_future_days Number of days into the future to import.
* @property-read int mc_archive_days Number of days to wait to move something to history.
* @property-read int|string mc_hist_days Number of days of history to keep. (Can be '' if module isn't enabled.)
- * @property-read string mc_deletion_method Determines how meetings should be handled in WordPress if they're deleted in TouchPoint
*
* @property-read string rc_name_plural What resident codes should be called, plural (e.g. "Resident Codes" or "Zones")
* @property-read string rc_name_singular What a resident code should be called, singular (e.g. "Resident Code" or "Zone")
@@ -905,7 +904,7 @@ private function settingsFields(bool|string $includeDetail = false): array
'id' => 'mc_archive_days',
'label' => __('Archive After Days', 'TouchPoint-WP'),
'description' => __(
- 'Meetings more than this many days in the past will be moved to the Events Archive. Once this date passes, meeting information will no longer update.',
+ 'Meetings more than this many days in the past will no longer update from TouchPoint, allowing you to keep some historical event information on the calendar for reference, even if you reuse and update the information in the Involvement.',
'TouchPoint-WP'
),
'type' => 'number',
@@ -918,7 +917,7 @@ private function settingsFields(bool|string $includeDetail = false): array
'id' => 'mc_hist_days',
'label' => __('Days of History', 'TouchPoint-WP'),
'description' => __(
- 'Meetings will be kept for the public calendar until the event is this many days in the past.',
+ "Meetings will be kept on the calendar until the event is this many days in the past. Once an event is older than this, it'll be deleted.",
'TouchPoint-WP'
),
'type' => 'number',
@@ -927,20 +926,6 @@ private function settingsFields(bool|string $includeDetail = false): array
'max' => 1825,
'min' => 0
],
- [
- 'id' => 'mc_deletion_method',
- 'label' => __('Meeting Deletion Handling', 'TouchPoint-WP'),
- 'description' => __(
- 'When a Meeting is deleted in TouchPoint that has already been imported to WordPress, how should that be handled?',
- 'TouchPoint-WP'
- ),
- 'type' => 'select',
- 'options' => [
- 'delete' => __('Always delete from WordPress', 'TouchPoint-WP'),
- 'cancel' => __('Mark the occurrence as cancelled', 'TouchPoint-WP'),
- ],
- 'default' => 'delete',
- ],
],
];
}
@@ -1617,6 +1602,9 @@ public function migrate(): void
$years = TouchPointWP::TTL_IP_GEO;
$wpdb->query("DELETE FROM $tableName WHERE `updatedDT` < NOW() - INTERVAL $years YEAR OR `data` LIKE 'Too many rapid requests.%';");
+ // 0.0.95 - Remove never-really-used option for deletion handling
+ delete_option('tp_mc_deletion_method');
+
// Update version string
$this->set('version', TouchPointWP::VERSION);
}
From ca1b07b4d24b19f9a25032e215c9deb300aeedb7 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Fri, 22 Nov 2024 14:25:37 -0500
Subject: [PATCH 221/423] Timezone-related bug
---
src/TouchPoint-WP/TouchPointWP_Widget.php | 6 ++++--
src/TouchPoint-WP/Utilities.php | 3 ++-
2 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/src/TouchPoint-WP/TouchPointWP_Widget.php b/src/TouchPoint-WP/TouchPointWP_Widget.php
index 43e89a0c..759292c8 100644
--- a/src/TouchPoint-WP/TouchPointWP_Widget.php
+++ b/src/TouchPoint-WP/TouchPointWP_Widget.php
@@ -50,17 +50,19 @@ protected static function timestampToFormated(mixed $timestamp): string
{
if (!is_numeric($timestamp)) {
try {
- $timestamp = new \DateTime($timestamp);
+ $timestamp = new \DateTime($timestamp, wp_timezone());
} catch (\Exception $e) {
return 'Never';
}
} else {
try {
- $timestamp = new \DateTime('@' . $timestamp);
+ $timestamp = new \DateTime('@' . $timestamp, Utilities::utcTimeZone());
+
} catch (\Exception $e) {
return 'Never';
}
}
+ $timestamp->setTimezone(wp_timezone());
return wp_sprintf(
// translators: %1$s is the date(s), %2$s is the time(s).
diff --git a/src/TouchPoint-WP/Utilities.php b/src/TouchPoint-WP/Utilities.php
index 78ef94f4..a05b41b6 100644
--- a/src/TouchPoint-WP/Utilities.php
+++ b/src/TouchPoint-WP/Utilities.php
@@ -96,7 +96,8 @@ public static function dateTimeNowPlus1D(): DateTimeImmutable
public static function dateTimeNowMinus1D(): DateTimeImmutable
{
if (self::$_dateTimeNowMinus1D === null) {
- $aDay = new DateInterval('P-1D');
+ $aDay = new DateInterval('P1D');
+ $aDay->invert = 1;
self::$_dateTimeNowMinus1D = self::dateTimeNow()->add($aDay);
}
From 9668b2fa2294e23c13b0d62404f0dc1e718dfb72 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Sun, 24 Nov 2024 11:31:33 -0500
Subject: [PATCH 222/423] Replace references with imports
---
src/TouchPoint-WP/TouchPointWP_Widget.php | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/src/TouchPoint-WP/TouchPointWP_Widget.php b/src/TouchPoint-WP/TouchPointWP_Widget.php
index 759292c8..a7b419ce 100644
--- a/src/TouchPoint-WP/TouchPointWP_Widget.php
+++ b/src/TouchPoint-WP/TouchPointWP_Widget.php
@@ -5,6 +5,8 @@
namespace tp\TouchPointWP;
+use DateTime;
+use Exception;
use tp\TouchPointWP\Utilities\DateFormats;
if ( ! defined('ABSPATH')) {
@@ -50,15 +52,15 @@ protected static function timestampToFormated(mixed $timestamp): string
{
if (!is_numeric($timestamp)) {
try {
- $timestamp = new \DateTime($timestamp, wp_timezone());
- } catch (\Exception $e) {
+ $timestamp = new DateTime($timestamp, wp_timezone());
+ } catch (Exception) {
return 'Never';
}
} else {
try {
- $timestamp = new \DateTime('@' . $timestamp, Utilities::utcTimeZone());
+ $timestamp = new DateTime('@' . $timestamp, Utilities::utcTimeZone());
- } catch (\Exception $e) {
+ } catch (Exception) {
return 'Never';
}
}
From 313d29e677f8940a6d35568aa43c04b333a7f0cc Mon Sep 17 00:00:00 2001
From: "James K."
Date: Sun, 24 Nov 2024 18:01:37 -0500
Subject: [PATCH 223/423] Allowing SVG reports to have background colors.
Closes #212
---
docs | 2 +-
src/TouchPoint-WP/Report.php | 24 +++++++---
src/TouchPoint-WP/Utilities/Database.php | 45 +++++++++++++++++++
.../Utilities/ImageConversions.php | 15 ++++++-
4 files changed, 76 insertions(+), 10 deletions(-)
create mode 100644 src/TouchPoint-WP/Utilities/Database.php
diff --git a/docs b/docs
index 4ddcde14..d99ffbf9 160000
--- a/docs
+++ b/docs
@@ -1 +1 @@
-Subproject commit 4ddcde146fa218887d0b60482b187a512fd1bd80
+Subproject commit d99ffbf9acd0da60003f3ee043afbb887b871554
diff --git a/src/TouchPoint-WP/Report.php b/src/TouchPoint-WP/Report.php
index e130c0d3..d3a9f284 100644
--- a/src/TouchPoint-WP/Report.php
+++ b/src/TouchPoint-WP/Report.php
@@ -9,6 +9,7 @@
use DateTime;
use Exception;
use JsonSerializable;
+use tp\TouchPointWP\Utilities\Database;
use tp\TouchPointWP\Utilities\Http;
use tp\TouchPointWP\Utilities\ImageConversions;
use WP_Error;
@@ -255,13 +256,24 @@ public static function api(array $uri): bool
break;
case "svg.png":
- $cached = get_post_meta($r->getPost()->ID, self::META_PREFIX . "svg_png", true);
+ $bgColor = $_GET['bg'] ?? null;
+
+ if ($bgColor !== null) {
+ $bgColor = strtolower($bgColor);
+ if (preg_match('/^[0-9a-f]{6}$/', $bgColor)) {
+ $bgColor = "#" . $bgColor;
+ }
+ }
+
+ $bgColorStr = ($bgColor === null) ? "" : "_$bgColor";
+
+ $cached = get_post_meta($r->getPost()->ID, self::META_PREFIX . "svg_png" . $bgColorStr, true);
if ($cached !== '') {
$content = base64_decode($cached);
} else {
try {
- $content = ImageConversions::svgToPng($content);
- update_post_meta($r->getPost()->ID, self::META_PREFIX . "svg_png", base64_encode($content));
+ $content = ImageConversions::svgToPng($content, $bgColor);
+ update_post_meta($r->getPost()->ID, self::META_PREFIX . "svg_png" . $bgColorStr, base64_encode($content));
} catch (TouchPointWP_Exception $e) {
http_response_code(Http::SERVICE_UNAVAILABLE);
echo $e->getMessage();
@@ -497,10 +509,8 @@ protected function submitUpdate()
return null;
}
- // Clear the cached PNG if it exists.
- if (get_post_meta($this->post->ID, self::META_PREFIX . "svg_png", true) !== '') {
- update_post_meta($this->post->ID, self::META_PREFIX . "svg_png", '');
- }
+ // Clear the cached PNGs if they exist.
+ Database::deletePostMetaByPrefix($this->post->ID, self::META_PREFIX . "svg_png");
return wp_update_post($this->post);
}
diff --git a/src/TouchPoint-WP/Utilities/Database.php b/src/TouchPoint-WP/Utilities/Database.php
new file mode 100644
index 00000000..e1851d4c
--- /dev/null
+++ b/src/TouchPoint-WP/Utilities/Database.php
@@ -0,0 +1,45 @@
+get_col(
+ $wpdb->prepare(
+ "SELECT meta_key FROM $wpdb->postmeta WHERE post_id = %d AND meta_key LIKE %s",
+ $postId,
+ $wpdb->esc_like($prefix) . '%'
+ )
+ );
+
+ // Loop through each meta key and delete it
+ $success = true;
+ foreach ($meta_keys as $meta_key) {
+ $success *= delete_post_meta($postId, $meta_key);
+ }
+ return $success;
+ }
+}
\ No newline at end of file
diff --git a/src/TouchPoint-WP/Utilities/ImageConversions.php b/src/TouchPoint-WP/Utilities/ImageConversions.php
index 637b5d54..49c2c491 100644
--- a/src/TouchPoint-WP/Utilities/ImageConversions.php
+++ b/src/TouchPoint-WP/Utilities/ImageConversions.php
@@ -17,7 +17,7 @@ abstract class ImageConversions
* @throws \ImagickException
* @throws TouchPointWP_Exception
*/
- public static function svgToPng($svgContent): string
+ public static function svgToPng($svgContent, ?string $backgroundColor = null): string
{
$svg = new DOMDocument();
$svg->loadXML($svgContent);
@@ -36,7 +36,18 @@ public static function svgToPng($svgContent): string
$im = new \Imagick();
$im->setResolution(300, 300);
- $im->setBackgroundColor(new \ImagickPixel('transparent'));
+
+ if (!empty($backgroundColor)) {
+ try {
+ $pxColor = new \ImagickPixel($backgroundColor);
+ $im->setBackgroundColor($pxColor);
+ } catch (\ImagickPixelException) {
+ $im->setBackgroundColor(new \ImagickPixel('transparent'));
+ }
+ } else {
+ $im->setBackgroundColor(new \ImagickPixel('transparent'));
+ }
+
$im->readImageBlob($svg->saveXML());
$im->setImageAlphaChannel(\Imagick::ALPHACHANNEL_ACTIVATE);
From f9e994ae8d5d730224f60e3f3febb8409a72ba4c Mon Sep 17 00:00:00 2001
From: "James K."
Date: Thu, 28 Nov 2024 14:02:32 -0500
Subject: [PATCH 224/423] Provide a non-empty response to this API endpoint.
---
src/TouchPoint-WP/Stats.php | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/TouchPoint-WP/Stats.php b/src/TouchPoint-WP/Stats.php
index ff9f9d1c..914f1fc5 100644
--- a/src/TouchPoint-WP/Stats.php
+++ b/src/TouchPoint-WP/Stats.php
@@ -284,6 +284,7 @@ protected function submitStats(): void
'timeout' => 10,
'blocking' => false,
]);
+ echo "ok";
}
/**
@@ -435,7 +436,7 @@ public static function handleSubmission(): bool
return false;
}
- echo $r;
+ echo $r;
return true;
}
}
\ No newline at end of file
From 3a230bd216b155d556e08ee6cd435ad31f08c217 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Thu, 28 Nov 2024 14:15:57 -0500
Subject: [PATCH 225/423] Add site logo in reported stats, add a filter to
prevent or adjust reporting, and update docs/i18n.
---
docs | 2 +-
i18n/TouchPoint-WP-es_ES.po | 102 ++++++++++----------
i18n/TouchPoint-WP.pot | 92 +++++++++---------
src/TouchPoint-WP/Stats.php | 21 +++-
src/TouchPoint-WP/TouchPointWP.php | 1 +
src/TouchPoint-WP/TouchPointWP_Settings.php | 4 +-
6 files changed, 121 insertions(+), 101 deletions(-)
diff --git a/docs b/docs
index d99ffbf9..2b93d032 160000
--- a/docs
+++ b/docs
@@ -1 +1 @@
-Subproject commit d99ffbf9acd0da60003f3ee043afbb887b871554
+Subproject commit 2b93d032d2306cca5631e7f30f9665825b8eafb8
diff --git a/i18n/TouchPoint-WP-es_ES.po b/i18n/TouchPoint-WP-es_ES.po
index abb41fe6..9a201c6e 100644
--- a/i18n/TouchPoint-WP-es_ES.po
+++ b/i18n/TouchPoint-WP-es_ES.po
@@ -314,38 +314,38 @@ msgstr "Contacta"
msgid "RSVP"
msgstr "RSVP"
-#: src/TouchPoint-WP/TouchPointWP.php:2030
+#: src/TouchPoint-WP/TouchPointWP.php:2031
msgid "Unknown Type"
msgstr "Tipo desconocido"
-#: src/TouchPoint-WP/TouchPointWP.php:2087
+#: src/TouchPoint-WP/TouchPointWP.php:2088
msgid "Your Searches"
msgstr "Tus búsquedas"
-#: src/TouchPoint-WP/TouchPointWP.php:2090
+#: src/TouchPoint-WP/TouchPointWP.php:2091
msgid "Public Searches"
msgstr "Búsquedas públicas"
-#: src/TouchPoint-WP/TouchPointWP.php:2093
+#: src/TouchPoint-WP/TouchPointWP.php:2094
msgid "Status Flags"
msgstr "Indicadores de Estado"
-#: src/TouchPoint-WP/TouchPointWP.php:2098
#: src/TouchPoint-WP/TouchPointWP.php:2099
+#: src/TouchPoint-WP/TouchPointWP.php:2100
msgid "Current Value"
msgstr "Valor actual"
-#: src/TouchPoint-WP/TouchPointWP.php:2216
-#: src/TouchPoint-WP/TouchPointWP.php:2252
+#: src/TouchPoint-WP/TouchPointWP.php:2217
+#: src/TouchPoint-WP/TouchPointWP.php:2253
msgid "Invalid or incomplete API Settings."
msgstr "Configuración de API no válida o incompleta."
-#: src/TouchPoint-WP/TouchPointWP.php:2266
-#: src/TouchPoint-WP/TouchPointWP.php:2310
+#: src/TouchPoint-WP/TouchPointWP.php:2267
+#: src/TouchPoint-WP/TouchPointWP.php:2311
msgid "Host appears to be missing from TouchPoint-WP configuration."
msgstr "Parece que falta el host en la configuración de TouchPoint-WP."
-#: src/TouchPoint-WP/TouchPointWP.php:2442
+#: src/TouchPoint-WP/TouchPointWP.php:2443
msgid "People Query Failed"
msgstr "Consulta de registros de personas fallida"
@@ -809,7 +809,7 @@ msgid "Save Settings"
msgstr "Guardar ajustes"
#: src/TouchPoint-WP/Person.php:1451
-#: src/TouchPoint-WP/Utilities.php:285
+#: src/TouchPoint-WP/Utilities.php:286
#: assets/js/base-defer.js:18
msgid "and"
msgstr "y"
@@ -972,7 +972,7 @@ msgstr "Enviar"
msgid "Nothing to submit."
msgstr "Nada que enviar."
-#: src/TouchPoint-WP/TouchPointWP.php:2383
+#: src/TouchPoint-WP/TouchPointWP.php:2384
msgid "The scripts on TouchPoint that interact with this plugin are out-of-date, and an automatic update failed."
msgstr "Los scripts en TouchPoint que interactúan con este complemento están desactualizados y falló una actualización automática."
@@ -1040,72 +1040,72 @@ msgstr "Años"
msgid "Genders"
msgstr "Géneros"
-#: src/TouchPoint-WP/Utilities.php:135
+#: src/TouchPoint-WP/Utilities.php:136
msgctxt "e.g. event happens weekly on..."
msgid "Sundays"
msgstr "los domingos"
-#: src/TouchPoint-WP/Utilities.php:136
+#: src/TouchPoint-WP/Utilities.php:137
msgctxt "e.g. event happens weekly on..."
msgid "Mondays"
msgstr "los lunes"
-#: src/TouchPoint-WP/Utilities.php:137
+#: src/TouchPoint-WP/Utilities.php:138
msgctxt "e.g. event happens weekly on..."
msgid "Tuesdays"
msgstr "los martes"
-#: src/TouchPoint-WP/Utilities.php:138
+#: src/TouchPoint-WP/Utilities.php:139
msgctxt "e.g. event happens weekly on..."
msgid "Wednesdays"
msgstr "los miércoles"
-#: src/TouchPoint-WP/Utilities.php:139
+#: src/TouchPoint-WP/Utilities.php:140
msgctxt "e.g. event happens weekly on..."
msgid "Thursdays"
msgstr "los jueves"
-#: src/TouchPoint-WP/Utilities.php:140
+#: src/TouchPoint-WP/Utilities.php:141
msgctxt "e.g. event happens weekly on..."
msgid "Fridays"
msgstr "los viernes"
-#: src/TouchPoint-WP/Utilities.php:141
+#: src/TouchPoint-WP/Utilities.php:142
msgctxt "e.g. event happens weekly on..."
msgid "Saturdays"
msgstr "los sábados"
-#: src/TouchPoint-WP/Utilities.php:187
+#: src/TouchPoint-WP/Utilities.php:188
msgctxt "e.g. \"Event happens weekly on...\" or \"This ...\""
msgid "Sun"
msgstr "Dom"
-#: src/TouchPoint-WP/Utilities.php:188
+#: src/TouchPoint-WP/Utilities.php:189
msgctxt "e.g. \"Event happens weekly on...\" or \"This ...\""
msgid "Mon"
msgstr "Lun"
-#: src/TouchPoint-WP/Utilities.php:189
+#: src/TouchPoint-WP/Utilities.php:190
msgctxt "e.g. \"Event happens weekly on...\" or \"This ...\""
msgid "Tue"
msgstr "Mar"
-#: src/TouchPoint-WP/Utilities.php:190
+#: src/TouchPoint-WP/Utilities.php:191
msgctxt "e.g. \"Event happens weekly on...\" or \"This ...\""
msgid "Wed"
msgstr "Mié"
-#: src/TouchPoint-WP/Utilities.php:191
+#: src/TouchPoint-WP/Utilities.php:192
msgctxt "e.g. \"Event happens weekly on...\" or \"This ...\""
msgid "Thu"
msgstr "Jue"
-#: src/TouchPoint-WP/Utilities.php:192
+#: src/TouchPoint-WP/Utilities.php:193
msgctxt "e.g. \"Event happens weekly on...\" or \"This ...\""
msgid "Fri"
msgstr "Vie"
-#: src/TouchPoint-WP/Utilities.php:193
+#: src/TouchPoint-WP/Utilities.php:194
msgctxt "e.g. \"Event happens weekly on...\" or \"This ...\""
msgid "Sat"
msgstr "Sáb"
@@ -1163,37 +1163,37 @@ msgstr "Ubicaciones"
msgid "Locations are physical places, probably campuses. None are required, but they can help present geographic information clearly."
msgstr "Las ubicaciones son lugares físicos, probablemente campus. No se requiere ninguno, pero pueden ayudar a presentar la información geográfica con claridad."
-#: src/TouchPoint-WP/Utilities.php:235
+#: src/TouchPoint-WP/Utilities.php:236
msgctxt "Time of Day"
msgid "Late Night"
msgstr "Tarde en la noche"
-#: src/TouchPoint-WP/Utilities.php:237
+#: src/TouchPoint-WP/Utilities.php:238
msgctxt "Time of Day"
msgid "Early Morning"
msgstr "Madrugada"
-#: src/TouchPoint-WP/Utilities.php:239
+#: src/TouchPoint-WP/Utilities.php:240
msgctxt "Time of Day"
msgid "Morning"
msgstr "Mañana"
-#: src/TouchPoint-WP/Utilities.php:241
+#: src/TouchPoint-WP/Utilities.php:242
msgctxt "Time of Day"
msgid "Midday"
msgstr "Mediodía"
-#: src/TouchPoint-WP/Utilities.php:243
+#: src/TouchPoint-WP/Utilities.php:244
msgctxt "Time of Day"
msgid "Afternoon"
msgstr "Tarde"
-#: src/TouchPoint-WP/Utilities.php:245
+#: src/TouchPoint-WP/Utilities.php:246
msgctxt "Time of Day"
msgid "Evening"
msgstr "Tardecita"
-#: src/TouchPoint-WP/Utilities.php:247
+#: src/TouchPoint-WP/Utilities.php:248
msgctxt "Time of Day"
msgid "Night"
msgstr "Noche"
@@ -1225,7 +1225,7 @@ msgstr "restablecer el mapa"
#: src/TouchPoint-WP/Involvement.php:1027
#: src/TouchPoint-WP/Involvement.php:1120
#: src/TouchPoint-WP/Involvement.php:1144
-#: src/TouchPoint-WP/TouchPointWP_Widget.php:67
+#: src/TouchPoint-WP/TouchPointWP_Widget.php:71
#: src/TouchPoint-WP/Utilities/DateFormats.php:288
#: src/TouchPoint-WP/Utilities/DateFormats.php:352
msgid "%1$s at %2$s"
@@ -1293,7 +1293,7 @@ msgid "Could not locate."
msgstr "No se pudo localizar."
#: src/TouchPoint-WP/Meeting.php:672
-#: src/TouchPoint-WP/TouchPointWP.php:1032
+#: src/TouchPoint-WP/TouchPointWP.php:1033
msgid "Only GET requests are allowed."
msgstr "Solo se permiten solicitudes GET."
@@ -1411,16 +1411,16 @@ msgstr "Agregar Nuevo %s"
msgid "New %s"
msgstr "Nuevo %s"
-#: src/TouchPoint-WP/Report.php:176
+#: src/TouchPoint-WP/Report.php:177
msgid "TouchPoint Reports"
msgstr "Informes de TouchPoint"
-#: src/TouchPoint-WP/Report.php:177
+#: src/TouchPoint-WP/Report.php:178
msgid "TouchPoint Report"
msgstr "Informe de TouchPoint"
#. translators: Last updated date/time for a report. %1$s is the date. %2$s is the time.
-#: src/TouchPoint-WP/Report.php:405
+#: src/TouchPoint-WP/Report.php:417
msgid "Updated on %1$s at %2$s"
msgstr "Actualizada %1$s %2$s"
@@ -1566,7 +1566,7 @@ msgstr "mañana"
msgid "(named person)"
msgstr "(persona nombrada)"
-#: src/TouchPoint-WP/Utilities.php:496
+#: src/TouchPoint-WP/Utilities.php:497
msgid "Expand"
msgstr "Ampliar"
@@ -1814,7 +1814,7 @@ msgstr "Campus"
msgid "All Day"
msgstr "todo el dia"
-#: src/TouchPoint-WP/Utilities.php:290
+#: src/TouchPoint-WP/Utilities.php:291
msgctxt "list of items, and *others*"
msgid "others"
msgstr "otros"
@@ -1827,14 +1827,6 @@ msgstr "Clave API de ipapi.co"
msgid "Optional. Allows for geolocation of user IP addresses. This generally will work without a key, but may be rate limited."
msgstr "Opcional. Permite la geolocalización de las direcciones IP de los usuarios. Por lo general, esto funcionará sin una clave, pero puede tener una frecuencia limitada."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:444
-msgid "Allow the TouchPoint-WP developers to publicly list your site/church as using TouchPoint-WP"
-msgstr "Permitir que los desarrolladores de TouchPoint-WP incluyan públicamente su sitio/iglesia como usuarios de TouchPoint-WP"
-
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:445
-msgid "Helps other prospective churches see what can be done by combining WordPress with the best ChMS on the planet. Only applies if this site is accessible on the public internet."
-msgstr "Ayuda a otras iglesias potenciales a ver lo que se puede hacer combinando WordPress con el mejor ChMS del planeta. Solo se aplica si este sitio es accesible en Internet público."
-
#: src/templates/admin/invKoForm.php:60
msgid "Import Campuses"
msgstr "Importar Campus"
@@ -1847,15 +1839,15 @@ msgstr "Todos los campus"
msgid "(No Campus)"
msgstr "(Sin campus)"
-#: src/TouchPoint-WP/TouchPointWP_Widget.php:37
+#: src/TouchPoint-WP/TouchPointWP_Widget.php:39
msgid "TouchPoint-WP Status"
msgstr "Estado de TouchPoint-WP"
-#: src/TouchPoint-WP/TouchPointWP_Widget.php:92
+#: src/TouchPoint-WP/TouchPointWP_Widget.php:96
msgid "Imported"
msgstr "Importadas"
-#: src/TouchPoint-WP/TouchPointWP_Widget.php:93
+#: src/TouchPoint-WP/TouchPointWP_Widget.php:97
msgid "Last Updated"
msgstr "Actualizada"
@@ -1871,3 +1863,11 @@ msgstr "Las reuniones con más de esta cantidad de días en el pasado ya no se a
#: src/TouchPoint-WP/TouchPointWP_Settings.php:919
msgid "Meetings will be kept on the calendar until the event is this many days in the past. Once an event is older than this, it'll be deleted."
msgstr "Las reuniones se mantendrán en el calendario hasta que el evento tenga esta cantidad de días en el pasado. Una vez que un evento tenga más de esta cantidad de días, se eliminará."
+
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:444
+msgid "List Site in Directory"
+msgstr "Listar sitio en directorio"
+
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:445
+msgid "Allow the TouchPoint-WP developers to publicly list your site/church as using TouchPoint-WP. Helps other prospective churches see what can be done by combining WordPress with the best ChMS on the planet. Only applies if this site is accessible on the public internet."
+msgstr "Permita que los desarrolladores de TouchPoint-WP incluyan públicamente su sitio o iglesia como sitios que usan TouchPoint-WP. Esto ayuda a otras iglesias potenciales a ver lo que se puede hacer al combinar WordPress con el mejor ChMS del planeta. Solo se aplica si este sitio es accesible en Internet público."
diff --git a/i18n/TouchPoint-WP.pot b/i18n/TouchPoint-WP.pot
index 977622c1..92ee09b7 100644
--- a/i18n/TouchPoint-WP.pot
+++ b/i18n/TouchPoint-WP.pot
@@ -9,7 +9,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"POT-Creation-Date: 2024-11-22T18:07:49+00:00\n"
+"POT-Creation-Date: 2024-11-28T19:12:52+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"X-Generator: WP-CLI 2.11.0\n"
"X-Domain: TouchPoint-WP\n"
@@ -361,7 +361,7 @@ msgstr ""
#: src/TouchPoint-WP/Involvement.php:1027
#: src/TouchPoint-WP/Involvement.php:1120
#: src/TouchPoint-WP/Involvement.php:1144
-#: src/TouchPoint-WP/TouchPointWP_Widget.php:67
+#: src/TouchPoint-WP/TouchPointWP_Widget.php:71
#: src/TouchPoint-WP/Utilities/DateFormats.php:288
#: src/TouchPoint-WP/Utilities/DateFormats.php:352
msgid "%1$s at %2$s"
@@ -572,7 +572,7 @@ msgid "Unknown"
msgstr ""
#: src/TouchPoint-WP/Meeting.php:672
-#: src/TouchPoint-WP/TouchPointWP.php:1032
+#: src/TouchPoint-WP/TouchPointWP.php:1033
msgid "Only GET requests are allowed."
msgstr ""
@@ -619,7 +619,7 @@ msgid "Person in %s"
msgstr ""
#: src/TouchPoint-WP/Person.php:1451
-#: src/TouchPoint-WP/Utilities.php:285
+#: src/TouchPoint-WP/Utilities.php:286
#: assets/js/base-defer.js:18
msgid "and"
msgstr ""
@@ -637,16 +637,16 @@ msgstr ""
msgid "You may need to sign in."
msgstr ""
-#: src/TouchPoint-WP/Report.php:176
+#: src/TouchPoint-WP/Report.php:177
msgid "TouchPoint Reports"
msgstr ""
-#: src/TouchPoint-WP/Report.php:177
+#: src/TouchPoint-WP/Report.php:178
msgid "TouchPoint Report"
msgstr ""
#. translators: Last updated date/time for a report. %1$s is the date. %2$s is the time.
-#: src/TouchPoint-WP/Report.php:405
+#: src/TouchPoint-WP/Report.php:417
msgid "Updated on %1$s at %2$s"
msgstr ""
@@ -745,42 +745,42 @@ msgstr ""
msgid "Every 15 minutes"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2030
+#: src/TouchPoint-WP/TouchPointWP.php:2031
msgid "Unknown Type"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2087
+#: src/TouchPoint-WP/TouchPointWP.php:2088
msgid "Your Searches"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2090
+#: src/TouchPoint-WP/TouchPointWP.php:2091
msgid "Public Searches"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2093
+#: src/TouchPoint-WP/TouchPointWP.php:2094
msgid "Status Flags"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2098
#: src/TouchPoint-WP/TouchPointWP.php:2099
+#: src/TouchPoint-WP/TouchPointWP.php:2100
msgid "Current Value"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2216
-#: src/TouchPoint-WP/TouchPointWP.php:2252
+#: src/TouchPoint-WP/TouchPointWP.php:2217
+#: src/TouchPoint-WP/TouchPointWP.php:2253
msgid "Invalid or incomplete API Settings."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2266
-#: src/TouchPoint-WP/TouchPointWP.php:2310
+#: src/TouchPoint-WP/TouchPointWP.php:2267
+#: src/TouchPoint-WP/TouchPointWP.php:2311
msgid "Host appears to be missing from TouchPoint-WP configuration."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2383
+#: src/TouchPoint-WP/TouchPointWP.php:2384
msgid "The scripts on TouchPoint that interact with this plugin are out-of-date, and an automatic update failed."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2442
+#: src/TouchPoint-WP/TouchPointWP.php:2443
msgid "People Query Failed"
msgstr ""
@@ -921,11 +921,11 @@ msgid "Optional. Allows for geolocation of user IP addresses. This generally wi
msgstr ""
#: src/TouchPoint-WP/TouchPointWP_Settings.php:444
-msgid "Allow the TouchPoint-WP developers to publicly list your site/church as using TouchPoint-WP"
+msgid "List Site in Directory"
msgstr ""
#: src/TouchPoint-WP/TouchPointWP_Settings.php:445
-msgid "Helps other prospective churches see what can be done by combining WordPress with the best ChMS on the planet. Only applies if this site is accessible on the public internet."
+msgid "Allow the TouchPoint-WP developers to publicly list your site/church as using TouchPoint-WP. Helps other prospective churches see what can be done by combining WordPress with the best ChMS on the planet. Only applies if this site is accessible on the public internet."
msgstr ""
#: src/TouchPoint-WP/TouchPointWP_Settings.php:463
@@ -1417,129 +1417,129 @@ msgstr ""
msgid "Save Settings"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Widget.php:37
+#: src/TouchPoint-WP/TouchPointWP_Widget.php:39
msgid "TouchPoint-WP Status"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Widget.php:92
+#: src/TouchPoint-WP/TouchPointWP_Widget.php:96
msgid "Imported"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Widget.php:93
+#: src/TouchPoint-WP/TouchPointWP_Widget.php:97
msgid "Last Updated"
msgstr ""
-#: src/TouchPoint-WP/Utilities.php:135
+#: src/TouchPoint-WP/Utilities.php:136
msgctxt "e.g. event happens weekly on..."
msgid "Sundays"
msgstr ""
-#: src/TouchPoint-WP/Utilities.php:136
+#: src/TouchPoint-WP/Utilities.php:137
msgctxt "e.g. event happens weekly on..."
msgid "Mondays"
msgstr ""
-#: src/TouchPoint-WP/Utilities.php:137
+#: src/TouchPoint-WP/Utilities.php:138
msgctxt "e.g. event happens weekly on..."
msgid "Tuesdays"
msgstr ""
-#: src/TouchPoint-WP/Utilities.php:138
+#: src/TouchPoint-WP/Utilities.php:139
msgctxt "e.g. event happens weekly on..."
msgid "Wednesdays"
msgstr ""
-#: src/TouchPoint-WP/Utilities.php:139
+#: src/TouchPoint-WP/Utilities.php:140
msgctxt "e.g. event happens weekly on..."
msgid "Thursdays"
msgstr ""
-#: src/TouchPoint-WP/Utilities.php:140
+#: src/TouchPoint-WP/Utilities.php:141
msgctxt "e.g. event happens weekly on..."
msgid "Fridays"
msgstr ""
-#: src/TouchPoint-WP/Utilities.php:141
+#: src/TouchPoint-WP/Utilities.php:142
msgctxt "e.g. event happens weekly on..."
msgid "Saturdays"
msgstr ""
-#: src/TouchPoint-WP/Utilities.php:187
+#: src/TouchPoint-WP/Utilities.php:188
msgctxt "e.g. \"Event happens weekly on...\" or \"This ...\""
msgid "Sun"
msgstr ""
-#: src/TouchPoint-WP/Utilities.php:188
+#: src/TouchPoint-WP/Utilities.php:189
msgctxt "e.g. \"Event happens weekly on...\" or \"This ...\""
msgid "Mon"
msgstr ""
-#: src/TouchPoint-WP/Utilities.php:189
+#: src/TouchPoint-WP/Utilities.php:190
msgctxt "e.g. \"Event happens weekly on...\" or \"This ...\""
msgid "Tue"
msgstr ""
-#: src/TouchPoint-WP/Utilities.php:190
+#: src/TouchPoint-WP/Utilities.php:191
msgctxt "e.g. \"Event happens weekly on...\" or \"This ...\""
msgid "Wed"
msgstr ""
-#: src/TouchPoint-WP/Utilities.php:191
+#: src/TouchPoint-WP/Utilities.php:192
msgctxt "e.g. \"Event happens weekly on...\" or \"This ...\""
msgid "Thu"
msgstr ""
-#: src/TouchPoint-WP/Utilities.php:192
+#: src/TouchPoint-WP/Utilities.php:193
msgctxt "e.g. \"Event happens weekly on...\" or \"This ...\""
msgid "Fri"
msgstr ""
-#: src/TouchPoint-WP/Utilities.php:193
+#: src/TouchPoint-WP/Utilities.php:194
msgctxt "e.g. \"Event happens weekly on...\" or \"This ...\""
msgid "Sat"
msgstr ""
-#: src/TouchPoint-WP/Utilities.php:235
+#: src/TouchPoint-WP/Utilities.php:236
msgctxt "Time of Day"
msgid "Late Night"
msgstr ""
-#: src/TouchPoint-WP/Utilities.php:237
+#: src/TouchPoint-WP/Utilities.php:238
msgctxt "Time of Day"
msgid "Early Morning"
msgstr ""
-#: src/TouchPoint-WP/Utilities.php:239
+#: src/TouchPoint-WP/Utilities.php:240
msgctxt "Time of Day"
msgid "Morning"
msgstr ""
-#: src/TouchPoint-WP/Utilities.php:241
+#: src/TouchPoint-WP/Utilities.php:242
msgctxt "Time of Day"
msgid "Midday"
msgstr ""
-#: src/TouchPoint-WP/Utilities.php:243
+#: src/TouchPoint-WP/Utilities.php:244
msgctxt "Time of Day"
msgid "Afternoon"
msgstr ""
-#: src/TouchPoint-WP/Utilities.php:245
+#: src/TouchPoint-WP/Utilities.php:246
msgctxt "Time of Day"
msgid "Evening"
msgstr ""
-#: src/TouchPoint-WP/Utilities.php:247
+#: src/TouchPoint-WP/Utilities.php:248
msgctxt "Time of Day"
msgid "Night"
msgstr ""
-#: src/TouchPoint-WP/Utilities.php:290
+#: src/TouchPoint-WP/Utilities.php:291
msgctxt "list of items, and *others*"
msgid "others"
msgstr ""
-#: src/TouchPoint-WP/Utilities.php:496
+#: src/TouchPoint-WP/Utilities.php:497
msgid "Expand"
msgstr ""
diff --git a/src/TouchPoint-WP/Stats.php b/src/TouchPoint-WP/Stats.php
index 914f1fc5..28d38f0e 100644
--- a/src/TouchPoint-WP/Stats.php
+++ b/src/TouchPoint-WP/Stats.php
@@ -261,6 +261,7 @@ public function getStatsForSubmission(bool $updateQueried = false): array
$data['wpTimezone'] = get_option('timezone_string');
$data['adminEmail'] = get_option('admin_email');
$data['siteName'] = get_bloginfo('name');
+ $data['siteLogoUrl'] = esc_url( wp_get_attachment_image_src( get_theme_mod( 'custom_logo' ), 'full' )[0] );
$data['listPublicly'] = 1 * ($sets->enable_public_listing === 'on');
$data['installId'] = $this->installId;
$data['privateKey'] = $this->privateKey;
@@ -279,7 +280,25 @@ protected function submitStats(): void
$data = $this->getStatsForSubmission();
- wp_remote_post(self::SUBMISSION_ENDPOINT, [
+ /**
+ * This plugin is designed to be used by other churches, but to help troubleshoot and understand usage, some
+ * basic statistics are sent back to Tenth. This filter allows you to change the endpoint to which the data is
+ * sent, which may be necessary if you have a proxy system setup. It also allows you to disable the sending of
+ * all information back to Tenth by setting the value to an empty string.
+ *
+ * The URL must use https.
+ *
+ * @since 0.0.96 Added
+ *
+ * @param string $endpoint The endpoint value to use.
+ */
+ $endpoint = (string)apply_filters('tp_stats_endpoint', self::SUBMISSION_ENDPOINT);
+
+ if ( ! str_starts_with($endpoint, 'https://')) {
+ return;
+ }
+
+ wp_remote_post($endpoint, [
'body' => ['data' => $data],
'timeout' => 10,
'blocking' => false,
diff --git a/src/TouchPoint-WP/TouchPointWP.php b/src/TouchPoint-WP/TouchPointWP.php
index c89c99b7..3f114957 100644
--- a/src/TouchPoint-WP/TouchPointWP.php
+++ b/src/TouchPoint-WP/TouchPointWP.php
@@ -672,6 +672,7 @@ protected function createTables(): void
wpTimezone varchar(50) NOT NULL,
adminEmail varchar(255) NOT NULL,
siteName varchar(255) NOT NULL,
+ siteLogo varchar(512) NOT NULL,
createdDT datetime DEFAULT NOW(),
updatedDT datetime DEFAULT NOW() ON UPDATE NOW(),
diff --git a/src/TouchPoint-WP/TouchPointWP_Settings.php b/src/TouchPoint-WP/TouchPointWP_Settings.php
index 71162a74..c203c7ac 100644
--- a/src/TouchPoint-WP/TouchPointWP_Settings.php
+++ b/src/TouchPoint-WP/TouchPointWP_Settings.php
@@ -441,9 +441,9 @@ private function settingsFields(bool|string $includeDetail = false): array
],
[
'id' => 'enable_public_listing',
- 'label' => __('Allow the TouchPoint-WP developers to publicly list your site/church as using TouchPoint-WP', 'TouchPoint-WP'),
+ 'label' => __('List Site in Directory', 'TouchPoint-WP'),
'description' => __(
- "Helps other prospective churches see what can be done by combining WordPress with the best ChMS on the planet. Only applies if this site is accessible on the public internet.",
+ "Allow the TouchPoint-WP developers to publicly list your site/church as using TouchPoint-WP. Helps other prospective churches see what can be done by combining WordPress with the best ChMS on the planet. Only applies if this site is accessible on the public internet.",
'TouchPoint-WP'
),
'type' => 'checkbox',
From e4e0010eb0b8fc608642acd9c5c0ebd638c0cdfa Mon Sep 17 00:00:00 2001
From: "James K."
Date: Thu, 28 Nov 2024 14:32:49 -0500
Subject: [PATCH 226/423] Hook documentation improvements
---
docs | 2 +-
src/TouchPoint-WP/Involvement.php | 9 +++++++--
src/TouchPoint-WP/Partner.php | 17 ++++++++++++++---
src/TouchPoint-WP/Report.php | 6 ++++--
src/TouchPoint-WP/Stats.php | 4 +++-
src/TouchPoint-WP/TouchPointWP.php | 10 ++++++++--
src/TouchPoint-WP/TouchPointWP_Settings.php | 2 ++
src/TouchPoint-WP/Utilities.php | 17 ++++++++++-------
src/TouchPoint-WP/Utilities/DateFormats.php | 2 +-
9 files changed, 50 insertions(+), 19 deletions(-)
diff --git a/docs b/docs
index 2b93d032..01f959fa 160000
--- a/docs
+++ b/docs
@@ -1 +1 @@
-Subproject commit 2b93d032d2306cca5631e7f30f9665825b8eafb8
+Subproject commit 01f959faa7b2ef2c2307d6aef36454a2be2466b1
diff --git a/src/TouchPoint-WP/Involvement.php b/src/TouchPoint-WP/Involvement.php
index 7d1b242c..119d3c2d 100644
--- a/src/TouchPoint-WP/Involvement.php
+++ b/src/TouchPoint-WP/Involvement.php
@@ -436,6 +436,9 @@ public final static function updateFromTouchPoint(bool $verbose = false): int
*/
public static function templateFilter(string $template): string
{
+ $className = self::class;
+ $useTemplates = true;
+
/**
* Determines whether the plugin's default templates should be used. Theme developers can return false in this
* filter to prevent the default templates from applying, especially if they conflict with the theme.
@@ -447,7 +450,7 @@ public static function templateFilter(string $template): string
* @param bool $value The value to return. True will allow the default templates to be applied.
* @param string $className The name of the class calling for the template.
*/
- if (!!apply_filters('tp_use_default_templates', true, self::class)) {
+ if (!!apply_filters('tp_use_default_templates', $useTemplates, $className)) {
$postTypesToFilter = Involvement_PostTypeSettings::getPostTypes();
$templateFilesToOverwrite = self::TEMPLATES_TO_OVERWRITE;
@@ -3891,6 +3894,8 @@ private static function ajaxInvJoin(): void
*/
protected static function allowContact(string $invType): bool
{
+ $allowed = true;
+
/**
* Determines whether contact of any kind is allowed. This is meant to prevent abuse in contact forms by
* removing the ability to contact people and thereby hiding the forms.
@@ -3899,7 +3904,7 @@ protected static function allowContact(string $invType): bool
*
* @param bool $allowed True if contact is allowed.
*/
- $allowed = !!apply_filters('tp_allow_contact', true);
+ $allowed = !!apply_filters('tp_allow_contact', $allowed);
/**
* Determines whether contact is allowed for any Involvements. This is called *after* tp_allow_contact, and
diff --git a/src/TouchPoint-WP/Partner.php b/src/TouchPoint-WP/Partner.php
index 943d86c9..275c4851 100644
--- a/src/TouchPoint-WP/Partner.php
+++ b/src/TouchPoint-WP/Partner.php
@@ -563,18 +563,24 @@ public static function updateFromTouchPoint(bool $verbose = false)
*/
public static function templateFilter(string $template): string
{
+ $className = self::class;
+ $useTemplates = true;
+
/**
* Determines whether the plugin's default templates should be used. Theme developers can return false in this
* filter to prevent the default templates from applying, especially if they conflict with the theme.
*
* Default is true.
*
- * @since 0.0.6 Added
+ * TODO merge with the same filter in Involvement
*
* @param bool $value The value to return. True will allow the default templates to be applied.
* @param string $className The name of the class calling for the template.
+ *
+ *@since 0.0.6 Added
+ *
*/
- if (!!apply_filters('tp_use_default_templates', true, self::class)) {
+ if (!!apply_filters('tp_use_default_templates', $useTemplates, $className)) {
$postTypesToFilter = self::POST_TYPE;
$templateFilesToOverwrite = self::TEMPLATES_TO_OVERWRITE;
@@ -685,6 +691,9 @@ public static function listShortcode($params = [], string $content = ""): string
}
$params = array_change_key_case($params, CASE_LOWER);
+ $useCss = true;
+ $className = self::class;
+
// set some defaults
/** @noinspection SpellCheckingInspection */
$params = shortcode_atts(
@@ -697,10 +706,12 @@ public static function listShortcode($params = [], string $content = ""): string
*
* @since 0.0.15 Added
*
+ * TODO merge with the same filter in Involvement
+ *
* @param bool $useCss Whether or not to include the default CSS. True = include
* @param string $className The name of the current calling class.
*/
- 'includecss' => apply_filters('tp_use_css', true, self::class),
+ 'includecss' => apply_filters('tp_use_css', $useCss, $className),
'itemclass' => self::$itemClass,
],
$params,
diff --git a/src/TouchPoint-WP/Report.php b/src/TouchPoint-WP/Report.php
index d3a9f284..af3ac4a5 100644
--- a/src/TouchPoint-WP/Report.php
+++ b/src/TouchPoint-WP/Report.php
@@ -394,13 +394,15 @@ public static function reportShortcode($params = [], string $content = ""): stri
// Add Figure elt with a unique ID
$idAttr = "id=\"" . wp_unique_id('tp-report-') . "\"";
+ $class = self::$classDefault;
+
/**
* Filter the class name to be used for the displaying the report.
*
- * @param string $className The class name to be used.
+ * @param string $class The class name to be used.
* @param Report $report The report being displayed.
*/
- $class = apply_filters("tp_rpt_figure_class", self::$classDefault, $report);
+ $class = apply_filters("tp_rpt_figure_class", $class, $report);
$permalink = esc_attr(get_post_permalink($report->getPost()));
diff --git a/src/TouchPoint-WP/Stats.php b/src/TouchPoint-WP/Stats.php
index 28d38f0e..76d476af 100644
--- a/src/TouchPoint-WP/Stats.php
+++ b/src/TouchPoint-WP/Stats.php
@@ -280,6 +280,8 @@ protected function submitStats(): void
$data = $this->getStatsForSubmission();
+ $endpoint = self::SUBMISSION_ENDPOINT;
+
/**
* This plugin is designed to be used by other churches, but to help troubleshoot and understand usage, some
* basic statistics are sent back to Tenth. This filter allows you to change the endpoint to which the data is
@@ -292,7 +294,7 @@ protected function submitStats(): void
*
* @param string $endpoint The endpoint value to use.
*/
- $endpoint = (string)apply_filters('tp_stats_endpoint', self::SUBMISSION_ENDPOINT);
+ $endpoint = (string)apply_filters('tp_stats_endpoint', $endpoint);
if ( ! str_starts_with($endpoint, 'https://')) {
return;
diff --git a/src/TouchPoint-WP/TouchPointWP.php b/src/TouchPoint-WP/TouchPointWP.php
index 3f114957..70eef512 100644
--- a/src/TouchPoint-WP/TouchPointWP.php
+++ b/src/TouchPoint-WP/TouchPointWP.php
@@ -978,12 +978,15 @@ public static function requireScript(string $name = null): void
public static function requireStyle(string $name = null): void
{
$filename = strtolower($name);
+
+ $includeStyle = true;
+
/**
* Filter to determine if a given stylesheet (which comes with TouchPoint-WP) should be included.
*
* @params bool $include Whether to include the stylesheet.
*/
- if ( ! apply_filters("tp_include_style_$filename", true)) {
+ if ( ! apply_filters("tp_include_style_$filename", $includeStyle)) {
return;
}
@@ -2541,12 +2544,15 @@ public static function enqueuePartialsStyle(): void
*/
public static function enqueueActionsStyle(string $action): void
{
+ $includeActionsStyle = true;
+
/**
* Filter to determine if the stylesheet that adjusts SWAL and other action-related items should be included.
*
* @params bool $include Whether to include the styles. Default true = include.
+ * @params string $action The action that is being performed.
*/
- $includeActionsStyle = !!apply_filters("tp_include_actions_style", true, $action);
+ $includeActionsStyle = !!apply_filters("tp_include_actions_style", $includeActionsStyle, $action);
if ($includeActionsStyle) {
wp_enqueue_style(
TouchPointWP::SHORTCODE_PREFIX . 'actions-style',
diff --git a/src/TouchPoint-WP/TouchPointWP_Settings.php b/src/TouchPoint-WP/TouchPointWP_Settings.php
index c203c7ac..42a427c5 100644
--- a/src/TouchPoint-WP/TouchPointWP_Settings.php
+++ b/src/TouchPoint-WP/TouchPointWP_Settings.php
@@ -1260,6 +1260,8 @@ private function settingsFields(bool|string $includeDetail = false): array
* Adjust the settings array before it's returned.
*
* @since 0.0.90 Added
+ *
+ * @params array $this->settings The settings array.
*/
$this->settings = apply_filters('tp_settings_fields', $this->settings);
diff --git a/src/TouchPoint-WP/Utilities.php b/src/TouchPoint-WP/Utilities.php
index a05b41b6..037fa398 100644
--- a/src/TouchPoint-WP/Utilities.php
+++ b/src/TouchPoint-WP/Utilities.php
@@ -357,18 +357,20 @@ public static function getPostContentWithShortcode($shortcode): array
*/
public static function getColorFor(string $itemName, string $setName): string
{
+ $current = null;
+
/**
* Allows for a custom color function to assign a color for a given value.
*
* @since 0.0.90 Added
*
- * @param mixed $current The current value. Null is provided to the function because the color hasn't otherwise been determined yet.
+ * @param ?string $current The current value. Null is provided to the function because the color hasn't otherwise been determined yet.
* @param string $itemName The name of the current item.
* @param string $setName The name of the set to which the item belongs.
*
- * @return string|null The color in hex, starting with '#'. Null to defer to the default color assignment.
+ * @return ?string The color in hex, starting with '#'. Null to defer to the default color assignment.
*/
- $r = apply_filters('tp_custom_color_function', null, $itemName, $setName);
+ $r = apply_filters('tp_custom_color_function', $current, $itemName, $setName);
if ($r !== null)
return $r;
@@ -386,6 +388,7 @@ public static function getColorFor(string $itemName, string $setName): string
self::$colorAssignments[$setName][] = $itemName;
}
+ $array = [];
/**
* Allows for a custom color set to be used for color assignment to match branding. This filter should return an
* array of colors in hex format, starting with '#'. The colors will be assigned in order, but it is not
@@ -394,10 +397,10 @@ public static function getColorFor(string $itemName, string $setName): string
*
* @since 0.0.90 Added
*
- * @param string[] $array The array of colors in hex format, starting with '#'.
+ * @param string[] $array The array of colors in hex format strings, starting with '#'.
* @param string $setName The name of the set for which the colors are needed.
*/
- $colorSet = apply_filters('tp_custom_color_set', [], $setName);
+ $colorSet = apply_filters('tp_custom_color_set', $array, $setName);
if (count($colorSet) > 0) {
return $colorSet[$idx % count($colorSet)];
@@ -678,7 +681,7 @@ public static function standardizeHtml(?string $html, ?string $context = null):
* @return string The standardized HTML.
*/
$html = apply_filters('tp_pre_standardize_html', $html, $context);
-
+ $maxHeader = 2;
/**
* The maximum header level to allow in an HTML string. Default is 2.
@@ -690,7 +693,7 @@ public static function standardizeHtml(?string $html, ?string $context = null):
*
* @return int The maximum header level to allow in the HTML.
*/
- $maxHeader = intval(apply_filters('tp_standardize_h_tags_max_h', 2, $context));
+ $maxHeader = intval(apply_filters('tp_standardize_h_tags_max_h', $maxHeader, $context));
$allowedTags = [
'p', 'br', 'a', 'em', 'strong', 'b', 'i', 'u', 'hr', 'ul', 'ol', 'li',
diff --git a/src/TouchPoint-WP/Utilities/DateFormats.php b/src/TouchPoint-WP/Utilities/DateFormats.php
index 25cf8ea6..5de1ea25 100644
--- a/src/TouchPoint-WP/Utilities/DateFormats.php
+++ b/src/TouchPoint-WP/Utilities/DateFormats.php
@@ -98,7 +98,7 @@ public static function TimeRangeStringFormatted(DateTimeInterface $startDt, Date
* @param string $startStr The start string, with default formatting.
* @param string $endStr The end string, with default formatting
* @param DateTimeInterface $startDt The DateTimeInterface object for the start.
- * @param DateTimeInterface $endDt The DateTimeInterface object for the $end.
+ * @param DateTimeInterface $endDt The DateTimeInterface object for the end.
*/
return apply_filters('tp_adjust_time_range_string', $ts, $startStr, $endStr, $startDt, $endDt);
}
From 1bee5368c5b6afe0cbb8a65124bdddf9070ce930 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Sun, 1 Dec 2024 08:06:24 -0500
Subject: [PATCH 227/423] Correcting issue with Report sync.
---
src/TouchPoint-WP/Report.php | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/TouchPoint-WP/Report.php b/src/TouchPoint-WP/Report.php
index af3ac4a5..c2a43118 100644
--- a/src/TouchPoint-WP/Report.php
+++ b/src/TouchPoint-WP/Report.php
@@ -26,6 +26,7 @@
require_once "storedAsPost.php";
require_once "Utilities/ImageConversions.php";
require_once "Utilities/Http.php";
+ require_once "Utilities/Database.php";
}
/**
From 04b90186de75eb35d0fa41910fd8f26a55ecf5be Mon Sep 17 00:00:00 2001
From: "James K."
Date: Sun, 1 Dec 2024 17:43:05 -0500
Subject: [PATCH 228/423] Syntactic items in Report.php
---
src/TouchPoint-WP/Report.php | 32 ++++++++++++++++++++++----------
1 file changed, 22 insertions(+), 10 deletions(-)
diff --git a/src/TouchPoint-WP/Report.php b/src/TouchPoint-WP/Report.php
index c2a43118..013973be 100644
--- a/src/TouchPoint-WP/Report.php
+++ b/src/TouchPoint-WP/Report.php
@@ -240,12 +240,18 @@ public static function api(array $uri): bool
case "py":
TouchPointWP::doCacheHeaders(TouchPointWP::CACHE_NONE);
- $r = Report::fromParams([
- 'type' => 'python',
- 'name' => $filename,
- 'p1' => $_GET['p1'] ?? ''
- ]);
- $content = $r->content();
+ try {
+ $r = Report::fromParams([
+ 'type' => 'python',
+ 'name' => $filename,
+ 'p1' => $_GET['p1'] ?? ''
+ ]);
+ $content = $r->content();
+ } catch (TouchPointWP_Exception) {
+ http_response_code(Http::SERVER_ERROR);
+ exit;
+ }
+
if ($content === self::DEFAULT_CONTENT) {
http_response_code(Http::NOT_FOUND);
exit;
@@ -300,11 +306,16 @@ public static function api(array $uri): bool
case "sql":
TouchPointWP::doCacheHeaders(TouchPointWP::CACHE_NONE);
header("Cache-Control: max-age=3600, must-revalidate, public");
+ try {
$r = Report::fromParams([
'type' => 'sql',
'name' => $filename,
'p1' => $_GET['p1'] ?? ''
]);
+ } catch (TouchPointWP_Exception) {
+ http_response_code(Http::SERVER_ERROR);
+ exit;
+ }
$content = $r->content();
if ($content === self::DEFAULT_CONTENT) {
http_response_code(Http::NOT_FOUND);
@@ -353,8 +364,9 @@ protected function title(): string
*
* @return string
*/
- public static function reportShortcode($params = [], string $content = ""): string
+ public static function reportShortcode(mixed $params = [], string $content = ""): string
{
+ /** @noinspection PhpRedundantOptionalArgumentInspection */
$params = array_change_key_case($params, CASE_LOWER);
$params = shortcode_atts(
@@ -506,7 +518,7 @@ public function getPost(bool $create = false): ?WP_Post
*
* @return int|WP_Error|null
*/
- protected function submitUpdate()
+ protected function submitUpdate(): int|null|WP_Error
{
if ( ! $this->getPost()) {
return null;
@@ -597,7 +609,7 @@ public static function updateFromTouchPoint(bool $forceEvenIfNotDue = false): in
foreach ($updates as $u) {
try {
$report = self::fromParams($u);
- } catch (TouchPointWP_Exception $e) {
+ } catch (TouchPointWP_Exception) {
continue;
}
@@ -726,7 +738,7 @@ public static function updateCron(): void
if ( ! $forked) {
self::updateFromTouchPoint();
}
- } catch (Exception $ex) {
+ } catch (Exception) {
}
}
From 53829c189ee162b6a6a1a7e77ae1d98288c0a002 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Mon, 2 Dec 2024 13:33:25 -0500
Subject: [PATCH 229/423] Making ids clearer
---
src/TouchPoint-WP/Involvement.php | 2 +-
src/TouchPoint-WP/Meeting.php | 10 ++++++++++
2 files changed, 11 insertions(+), 1 deletion(-)
diff --git a/src/TouchPoint-WP/Involvement.php b/src/TouchPoint-WP/Involvement.php
index 119d3c2d..eca5de62 100644
--- a/src/TouchPoint-WP/Involvement.php
+++ b/src/TouchPoint-WP/Involvement.php
@@ -754,7 +754,7 @@ protected static function scheduleStrings(int $invId, $inv = null): ?array
* This is separated out to a static method to prevent involvement from being instantiated (with those database
* hits) when the content is cached. (10x faster or more)
*
- * @param int $objId
+ * @param int $objId Involvement Id.
* @param ?Involvement $obj
*
* @return ?string
diff --git a/src/TouchPoint-WP/Meeting.php b/src/TouchPoint-WP/Meeting.php
index df97ecf5..9b9052b2 100644
--- a/src/TouchPoint-WP/Meeting.php
+++ b/src/TouchPoint-WP/Meeting.php
@@ -183,6 +183,16 @@ protected function __construct(object $object)
$this->registerConstruction();
}
+ /**
+ * Get the Meeting ID.
+ *
+ * @return int
+ */
+ public function mtgId(): int
+ {
+ return $this->mtgId;
+ }
+
/**
* Create a Meeting object from a Meeting ID. Only Meetings that are already imported as Posts are currently
From 30d2f0ab812ef86c743799507358ad999eba5a90 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Tue, 3 Dec 2024 14:56:55 -0500
Subject: [PATCH 230/423] Dealing with bug in stats logo submission.
---
src/TouchPoint-WP/Stats.php | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/src/TouchPoint-WP/Stats.php b/src/TouchPoint-WP/Stats.php
index 76d476af..b00d5934 100644
--- a/src/TouchPoint-WP/Stats.php
+++ b/src/TouchPoint-WP/Stats.php
@@ -261,7 +261,12 @@ public function getStatsForSubmission(bool $updateQueried = false): array
$data['wpTimezone'] = get_option('timezone_string');
$data['adminEmail'] = get_option('admin_email');
$data['siteName'] = get_bloginfo('name');
- $data['siteLogoUrl'] = esc_url( wp_get_attachment_image_src( get_theme_mod( 'custom_logo' ), 'full' )[0] );
+ $data['siteLogoUrl'] = get_theme_mod('custom_logo');
+ if ($data['siteLogoUrl']) {
+ $data['siteLogoUrl'] = esc_url(wp_get_attachment_image_src($data['siteLogoUrl'], 'full')[0]);
+ } else {
+ $data['siteLogoUrl'] = '';
+ }
$data['listPublicly'] = 1 * ($sets->enable_public_listing === 'on');
$data['installId'] = $this->installId;
$data['privateKey'] = $this->privateKey;
From 70c6c17ea748e3c9f5212eaa5a907e4d42b94fe5 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Thu, 19 Dec 2024 22:39:39 -0500
Subject: [PATCH 231/423] Fixes issue calculating calendar range. Closes #215.
Possibly related to #207.
---
src/TouchPoint-WP/CalendarGrid.php | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/TouchPoint-WP/CalendarGrid.php b/src/TouchPoint-WP/CalendarGrid.php
index ff2aabac..e551f3df 100644
--- a/src/TouchPoint-WP/CalendarGrid.php
+++ b/src/TouchPoint-WP/CalendarGrid.php
@@ -74,7 +74,9 @@ public function __construct(WP_Query $q, int $month = null, int $year = null)
$d = new DateTime('now', $tz);
$d = new DateTime($d->format('Y-m-01 00:00:00'), $tz);
} else {
- $d = new DateTime("$year-$month-01", $tz);
+ $d = new DateTime(null, $tz);
+ $d->setDate($year, $month, 1);
+ $d->setTime(0, 0);
}
} catch (Exception $e) {
$this->html = "";
@@ -88,6 +90,12 @@ public function __construct(WP_Query $q, int $month = null, int $year = null)
// Get the day of the week for the first day of the month (0 = Sunday, 1 = Monday, ..., 6 = Saturday)
$offsetDays = intval($d->format('w')); // w: Numeric representation of the day of the week
+
+ // Extra days at the end of the month
+ $daysInMonth = intval($d->format('t'));
+ $daysToShow = 7 * ceil(($daysInMonth + $offsetDays) / 7);
+
+ // Set start of range to be before the offset
try {
$d->modify("-$offsetDays days");
} catch (Exception) { // Exception is not feasible.
@@ -95,10 +103,6 @@ public function __construct(WP_Query $q, int $month = null, int $year = null)
$d->setTimezone($tz);
$r = "";
- // Extra days at the end of the month
- $daysInMonth = intval($d->format('t'));
- $daysToShow = ((42 - $daysInMonth - $offsetDays) % 7) + $daysInMonth;
-
// Create a table to display the calendar
$r .= '';
foreach (Utilities::getDaysOfWeekShort() as $dayStr) {
From 6f3a4c6046b32df99f94f0e499fbb8b1d8d8db99 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Tue, 21 Jan 2025 17:30:58 -0500
Subject: [PATCH 232/423] Resolve an issue where involvements aren't
instantiated in JS for maps
---
src/TouchPoint-WP/Involvement.php | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/src/TouchPoint-WP/Involvement.php b/src/TouchPoint-WP/Involvement.php
index eca5de62..3ab60c86 100644
--- a/src/TouchPoint-WP/Involvement.php
+++ b/src/TouchPoint-WP/Involvement.php
@@ -2419,6 +2419,12 @@ public static function mapShortcode($params = [], string $content = ""): string
if ($params['all']) {
self::requireAllObjectsInJs();
self::$_hasArchiveMap = true;
+ } else {
+ // enqueue this object for js instantiation
+ $post = get_post();
+ if ($post) {
+ self::fromPost($post)?->enqueueForJsInstantiation();
+ }
}
$script = file_get_contents(TouchPointWP::$dir . "/src/js-partials/involvement-map-inline.js");
From ff6bda5e386064a5f284453b577e3debb89283b1 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Tue, 4 Feb 2025 10:24:45 -0500
Subject: [PATCH 233/423] Adding a method that confirms if post matches a class
---
src/TouchPoint-WP/Involvement.php | 18 +++++++++++++++---
src/TouchPoint-WP/Meeting.php | 12 ++++++++++++
src/TouchPoint-WP/Partner.php | 12 ++++++++++++
src/TouchPoint-WP/PostTypeCapable.php | 10 ++++++++++
4 files changed, 49 insertions(+), 3 deletions(-)
diff --git a/src/TouchPoint-WP/Involvement.php b/src/TouchPoint-WP/Involvement.php
index 3ab60c86..e5d22d5d 100644
--- a/src/TouchPoint-WP/Involvement.php
+++ b/src/TouchPoint-WP/Involvement.php
@@ -3021,7 +3021,7 @@ protected static function doPostUpdate($post, object $inv, Involvement_PostTypeS
}
/**
- * @param \WP_Post|object $post The parent post, which could be a group or Meeting.
+ * @param WP_Post|object $post The parent post, which could be a group or Meeting.
* @param object $inv The involvement object from the API.
* @param Involvement_PostTypeSettings $typeSets
* @param int $imagePostId
@@ -3837,15 +3837,27 @@ public function getTouchPointId(): int
/**
* Indicates if the given post can be instantiated as an Involvement.
*
- * @param \WP_Post $post
+ * @param WP_Post $post
*
* @return bool
*/
- public static function postIsType(\WP_Post $post): bool
+ public static function postIsType(WP_Post $post): bool
{
return intval(get_post_meta($post->ID, TouchPointWP::INVOLVEMENT_META_KEY, true)) > 0;
}
+ /**
+ * Indicates if the given post type name is the post type for this class.
+ *
+ * @param string $postType
+ *
+ * @return bool
+ */
+ public static function postTypeMatches(string $postType): bool
+ {
+ return str_starts_with($postType, "tp_inv_") || $postType == "tp_smallgroup" || $postType == "tp_course";
+ }
+
/**
* Handles the API call to join an involvement through a 'join' button.
*/
diff --git a/src/TouchPoint-WP/Meeting.php b/src/TouchPoint-WP/Meeting.php
index 9b9052b2..74359e11 100644
--- a/src/TouchPoint-WP/Meeting.php
+++ b/src/TouchPoint-WP/Meeting.php
@@ -799,6 +799,18 @@ public static function postIsType(WP_Post $post): bool
return intval(get_post_meta($post->ID, Meeting::MEETING_META_KEY, true)) > 0;
}
+ /**
+ * Indicates if the given post type name is the post type for this class.
+ *
+ * @param string $postType
+ *
+ * @return bool
+ */
+ public static function postTypeMatches(string $postType): bool
+ {
+ return $postType === self::POST_TYPE;
+ }
+
public static function load(): bool
{
if (self::$_isLoaded) {
diff --git a/src/TouchPoint-WP/Partner.php b/src/TouchPoint-WP/Partner.php
index 275c4851..b395d6c5 100644
--- a/src/TouchPoint-WP/Partner.php
+++ b/src/TouchPoint-WP/Partner.php
@@ -1456,6 +1456,18 @@ public static function postIsType(WP_Post $post): bool
return intval(get_post_meta($post->ID, self::FAMILY_META_KEY, true)) > 0;
}
+ /**
+ * Indicates if the given post type name is the post type for this class.
+ *
+ * @param string $postType
+ *
+ * @return bool
+ */
+ public static function postTypeMatches(string $postType): bool
+ {
+ return $postType === self::POST_TYPE;
+ }
+
/**
* Serialize. Mostly, manage the security requirements.
*
diff --git a/src/TouchPoint-WP/PostTypeCapable.php b/src/TouchPoint-WP/PostTypeCapable.php
index 8128e413..1c4bcd8b 100644
--- a/src/TouchPoint-WP/PostTypeCapable.php
+++ b/src/TouchPoint-WP/PostTypeCapable.php
@@ -122,6 +122,16 @@ public abstract function getActionButtons(string $context = null, string $btnCla
public static abstract function postIsType(WP_Post $post): bool;
+ /**
+ * Indicates if the given post type name is the post type for this class.
+ *
+ * @param string $postType
+ *
+ * @return bool
+ */
+ public static abstract function postTypeMatches(string $postType): bool;
+
+
/**
* Gets a TouchPoint item ID number, regardless of what type of object this is.
*
From 9f9aa83f7d5ffa27896ed4bd31522e62fb48d17a Mon Sep 17 00:00:00 2001
From: "James K."
Date: Tue, 4 Feb 2025 14:13:36 -0500
Subject: [PATCH 234/423] Resolve a null issue
---
src/TouchPoint-WP/CalendarGrid.php | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/src/TouchPoint-WP/CalendarGrid.php b/src/TouchPoint-WP/CalendarGrid.php
index e551f3df..c742f1af 100644
--- a/src/TouchPoint-WP/CalendarGrid.php
+++ b/src/TouchPoint-WP/CalendarGrid.php
@@ -68,15 +68,14 @@ public function __construct(WP_Query $q, int $month = null, int $year = null)
try {
// Validate month & year; create $d as a day within the month
$tz = wp_timezone();
- $month = intval($month);
+ $monthInt = intval($month);
+ $monthStr = substr("0$monthInt", -2);
$year = intval($year);
- if ($month < 1 || $month > 12 || $year < 2020 || $year > 2100) {
+ if ($monthInt < 1 || $monthInt > 12 || $year < 2020 || $year > 2100) {
$d = new DateTime('now', $tz);
$d = new DateTime($d->format('Y-m-01 00:00:00'), $tz);
} else {
- $d = new DateTime(null, $tz);
- $d->setDate($year, $month, 1);
- $d->setTime(0, 0);
+ $d = new DateTime("$year-$monthStr-01 00:00:00", $tz);
}
} catch (Exception $e) {
$this->html = "";
From 24d5523ec42b4524164ec8238bd9e8f0fc4c487f Mon Sep 17 00:00:00 2001
From: "James K."
Date: Tue, 11 Feb 2025 10:29:12 -0500
Subject: [PATCH 235/423] Add rate limiting to IP API
---
src/TouchPoint-WP/TouchPointWP.php | 11 +++++++++++
src/TouchPoint-WP/TouchPointWP_Settings.php | 1 +
2 files changed, 12 insertions(+)
diff --git a/src/TouchPoint-WP/TouchPointWP.php b/src/TouchPoint-WP/TouchPointWP.php
index 70eef512..7b282367 100644
--- a/src/TouchPoint-WP/TouchPointWP.php
+++ b/src/TouchPoint-WP/TouchPointWP.php
@@ -1234,6 +1234,11 @@ protected function getIpData(string $ip, bool $useApi = true)
return false;
}
+ if (intval($this->settings->ipapi_ratelimit_exp) > time()) {
+ // Rate limited.
+ return false;
+ }
+
$ipapi_key = $this->settings->ipapi_key;
if ($ipapi_key !== "") {
$ipapi_key = [
@@ -1248,9 +1253,15 @@ protected function getIpData(string $ip, bool $useApi = true)
$return = $return['body'];
if (str_contains($return, 'Too many rapid requests')) {
+ $this->settings->set('ipapi_ratelimit_exp', time() + 10); // defer for 10 seconds.
throw new TouchPointWP_Exception("IP Geolocation Error: Too many requests", 178001);
}
+ if (str_contains($return, 'RateLimited')) {
+ $this->settings->set('ipapi_ratelimit_exp', time() + 300); // defer for 5 minutes.
+ throw new TouchPointWP_Exception("IP Geolocation Error: Rate Limited", 178001);
+ }
+
try {
json_decode($return, flags: JSON_THROW_ON_ERROR);
} catch (JsonException) {
diff --git a/src/TouchPoint-WP/TouchPointWP_Settings.php b/src/TouchPoint-WP/TouchPointWP_Settings.php
index 42a427c5..312f5292 100644
--- a/src/TouchPoint-WP/TouchPointWP_Settings.php
+++ b/src/TouchPoint-WP/TouchPointWP_Settings.php
@@ -32,6 +32,7 @@
* @property-read string google_maps_api_key Google Maps API Key for embedded maps
* @property-read string google_geo_api_key Google Maps API Key for geocoding
* @property-read string ipapi_key The API key for ipapi.co for geolocation.
+ * @property-read ?int ipapi_ratelimit_exp The time at which the rate limit for ipapi.co will expire.
*
* @property-read string enable_public_listing Whether to allow the site to be listed as using TouchPoint-WP
*
From ac3c29235f7949a6001ae1f1dd3dd06fe9cc5cdf Mon Sep 17 00:00:00 2001
From: "James K."
Date: Tue, 11 Feb 2025 10:48:22 -0500
Subject: [PATCH 236/423] Resolving an issue where an array key is not defined.
---
src/TouchPoint-WP/Report.php | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/src/TouchPoint-WP/Report.php b/src/TouchPoint-WP/Report.php
index 013973be..8a053d00 100644
--- a/src/TouchPoint-WP/Report.php
+++ b/src/TouchPoint-WP/Report.php
@@ -70,7 +70,8 @@ protected function __construct($params)
{
$this->name = $params['name'];
$this->type = $params['type'];
- $this->interval = max(floor(floatval($params['interval']) * 4) / 4, 0.25);
+ $interval = $params['interval'] ?? 24;
+ $this->interval = max(floor(floatval($interval) * 4) / 4, 0.25);
$this->p1 = $params['p1'] ?? "";
}
@@ -108,6 +109,8 @@ public static function fromParams($params): self
throw new TouchPointWP_Exception("Invalid Report type.", 173002);
}
+ $params['interval'] = floatval($params['interval'] ?? 24);
+
$key = self::cacheKey($params);
if (isset(self::$_instances[$key])) {
self::$_instances[$key]->mergeParams($params);
From 3adea6010f358e399bdbdab15e9bac53afe5c700 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Wed, 12 Feb 2025 13:19:37 -0500
Subject: [PATCH 237/423] Significantly extending validity of IP cache
---
src/TouchPoint-WP/TouchPointWP.php | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/src/TouchPoint-WP/TouchPointWP.php b/src/TouchPoint-WP/TouchPointWP.php
index 7b282367..37ec46f8 100644
--- a/src/TouchPoint-WP/TouchPointWP.php
+++ b/src/TouchPoint-WP/TouchPointWP.php
@@ -88,7 +88,8 @@ class TouchPointWP
*/
public const CACHE_TTL = 8;
- public const TTL_IP_GEO = 5; // years
+ public const TTL_IP_GEO = 5; // years until deleted
+ public const TTU_IP_GEO = 180; // days until updated
/**
* Caching
@@ -1214,8 +1215,9 @@ protected function getIpData(string $ip, bool $useApi = true)
global $wpdb;
$tableName = $wpdb->base_prefix . self::TABLE_IP_GEO;
+ $days = self::TTU_IP_GEO;
/** @noinspection SqlResolve */
- $q = $wpdb->prepare("SELECT * FROM $tableName WHERE ip = %s and updatedDt > (NOW() - INTERVAL 30 DAY)", $ip_pton);
+ $q = $wpdb->prepare("SELECT * FROM $tableName WHERE ip = %s and updatedDt > (NOW() - INTERVAL $days DAY)", $ip_pton);
$cache = $wpdb->get_row($q);
if ($cache) {
$this->ipData = $cache->data;
From fc32941fe34a37c771a8dd1fbbf618a79a880e98 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Wed, 12 Feb 2025 13:30:48 -0500
Subject: [PATCH 238/423] Improving rate limiting again
---
src/TouchPoint-WP/TouchPointWP.php | 4 ++--
src/TouchPoint-WP/TouchPointWP_Settings.php | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/TouchPoint-WP/TouchPointWP.php b/src/TouchPoint-WP/TouchPointWP.php
index 37ec46f8..2b2394f7 100644
--- a/src/TouchPoint-WP/TouchPointWP.php
+++ b/src/TouchPoint-WP/TouchPointWP.php
@@ -1256,12 +1256,12 @@ protected function getIpData(string $ip, bool $useApi = true)
if (str_contains($return, 'Too many rapid requests')) {
$this->settings->set('ipapi_ratelimit_exp', time() + 10); // defer for 10 seconds.
- throw new TouchPointWP_Exception("IP Geolocation Error: Too many requests", 178001);
+ throw new TouchPointWP_Exception("IP Geolocation Error: Too many requests. Backing off for 10 seconds.", 178001);
}
if (str_contains($return, 'RateLimited')) {
$this->settings->set('ipapi_ratelimit_exp', time() + 300); // defer for 5 minutes.
- throw new TouchPointWP_Exception("IP Geolocation Error: Rate Limited", 178001);
+ throw new TouchPointWP_Exception("IP Geolocation Error: Rate Limited. Backing off for 5 minutes.", 178001);
}
try {
diff --git a/src/TouchPoint-WP/TouchPointWP_Settings.php b/src/TouchPoint-WP/TouchPointWP_Settings.php
index 312f5292..fbf702ca 100644
--- a/src/TouchPoint-WP/TouchPointWP_Settings.php
+++ b/src/TouchPoint-WP/TouchPointWP_Settings.php
@@ -1603,7 +1603,7 @@ public function migrate(): void
// 0.0.94 - Cleanup old IP Geo data
$tableName = $wpdb->base_prefix . TouchPointWP::TABLE_IP_GEO;
$years = TouchPointWP::TTL_IP_GEO;
- $wpdb->query("DELETE FROM $tableName WHERE `updatedDT` < NOW() - INTERVAL $years YEAR OR `data` LIKE 'Too many rapid requests.%';");
+ $wpdb->query("DELETE FROM $tableName WHERE `updatedDT` < NOW() - INTERVAL $years YEAR OR `data` LIKE '%error\": true%';");
// 0.0.95 - Remove never-really-used option for deletion handling
delete_option('tp_mc_deletion_method');
From 19965dff7c4e93edf642693dadc192e9191294d0 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Sun, 16 Feb 2025 22:30:22 -0500
Subject: [PATCH 239/423] Correcting issue where __destruct should always be
public
---
src/TouchPoint-WP/Stats.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/TouchPoint-WP/Stats.php b/src/TouchPoint-WP/Stats.php
index b00d5934..770f1343 100644
--- a/src/TouchPoint-WP/Stats.php
+++ b/src/TouchPoint-WP/Stats.php
@@ -109,7 +109,7 @@ protected function __construct()
*
* @throws Exception
*/
- protected function __destruct()
+ public function __destruct()
{
if ($this->_dirty) {
throw new Exception("Stats object was not saved.");
From cfaa257a5349cdb87ad440db98e763a31ef487f7 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Sun, 16 Feb 2025 22:33:34 -0500
Subject: [PATCH 240/423] Correcting an issue that caused map shortcode to not
work for meetings
---
src/TouchPoint-WP/Involvement.php | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/src/TouchPoint-WP/Involvement.php b/src/TouchPoint-WP/Involvement.php
index e5d22d5d..8fbadf58 100644
--- a/src/TouchPoint-WP/Involvement.php
+++ b/src/TouchPoint-WP/Involvement.php
@@ -2423,7 +2423,13 @@ public static function mapShortcode($params = [], string $content = ""): string
// enqueue this object for js instantiation
$post = get_post();
if ($post) {
- self::fromPost($post)?->enqueueForJsInstantiation();
+ $inv = null;
+ if (Meeting::postIsType($post)) {
+ $inv = Meeting::fromPost($post)?->involvement();
+ } elseif (Involvement::postIsType($post)) {
+ $inv = Involvement::fromPost($post);
+ }
+ $inv?->enqueueForJsInstantiation();
}
}
From a93b22569d87274f82d4802dd0a9fefa094bc4a5 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Thu, 27 Feb 2025 14:10:07 -0500
Subject: [PATCH 241/423] Some adjustments to the calendar grid api
---
src/TouchPoint-WP/CalendarGrid.php | 24 ++++++++++++++++++++++++
src/templates/meeting-archive.php | 10 +---------
2 files changed, 25 insertions(+), 9 deletions(-)
diff --git a/src/TouchPoint-WP/CalendarGrid.php b/src/TouchPoint-WP/CalendarGrid.php
index c742f1af..ffca369c 100644
--- a/src/TouchPoint-WP/CalendarGrid.php
+++ b/src/TouchPoint-WP/CalendarGrid.php
@@ -464,4 +464,28 @@ protected static function getMonthNameForDate(DateTimeInterface $date): string
}
return $label;
}
+
+
+ protected static ?CalendarGrid $defaultItem = null;
+
+ /**
+ * Get a standard calendar grid, as would be used for most applications on a standard archive page.
+ *
+ * @return CalendarGrid
+ */
+ public final static function getDefaultGrid(): CalendarGrid
+ {
+ global $wp_query;
+ if (self::$defaultItem === null) {
+ if (!isset($_GET['page']) || !preg_match('/^(?P[0-9]{2})-(?P[0-9]{4})$/', $_GET['page'], $matches)) {
+ $matches = [
+ 'mo' => null,
+ 'yr' => null
+ ];
+ }
+
+ self::$defaultItem = new CalendarGrid($wp_query, $matches['mo'], $matches['yr']);
+ }
+ return self::$defaultItem;
+ }
}
\ No newline at end of file
diff --git a/src/templates/meeting-archive.php b/src/templates/meeting-archive.php
index 7d62f5d5..e69ba196 100644
--- a/src/templates/meeting-archive.php
+++ b/src/templates/meeting-archive.php
@@ -36,15 +36,7 @@
[0-9]{2})-(?P[0-9]{4})$/', $_GET['page'], $matches)) {
- $matches = [
- 'mo' => null,
- 'yr' => null
- ];
- }
-
- $grid = new CalendarGrid($wp_query, $matches['mo'], $matches['yr']);
-
+ $grid = CalendarGrid::getDefaultGrid();
echo $grid->navBar(true);
echo $grid;
if ($grid->eventCount > 0) {
From 38e4fb64e147a30d04714cc5088db210b2f90daa Mon Sep 17 00:00:00 2001
From: "James K."
Date: Thu, 27 Feb 2025 14:25:56 -0500
Subject: [PATCH 242/423] Adding calendar grid shortcode
---
src/TouchPoint-WP/CalendarGrid.php | 23 +++++++++++++++++++++++
src/TouchPoint-WP/Meeting.php | 6 ++++++
src/templates/meeting-archive.php | 14 ++------------
3 files changed, 31 insertions(+), 12 deletions(-)
diff --git a/src/TouchPoint-WP/CalendarGrid.php b/src/TouchPoint-WP/CalendarGrid.php
index ffca369c..39d05e59 100644
--- a/src/TouchPoint-WP/CalendarGrid.php
+++ b/src/TouchPoint-WP/CalendarGrid.php
@@ -488,4 +488,27 @@ public final static function getDefaultGrid(): CalendarGrid
}
return self::$defaultItem;
}
+
+ /**
+ * @return void
+ */
+ public static function shortcode(): void
+ {
+ if (have_posts()) {
+ global $wp_query;
+
+ $grid = self::getDefaultGrid();
+ echo $grid->navBar(true);
+ echo $grid;
+ if ($grid->eventCount > 0) {
+ echo $grid->navBar(false, 'bottom');
+ }
+
+ wp_reset_query();
+ $taxQuery = [[]];
+ $wp_query->tax_query->queries = $taxQuery;
+ $wp_query->query_vars['tax_query'] = $taxQuery;
+ $wp_query->is_tax = false; // prevents templates from thinking this is a taxonomy archive
+ }
+ }
}
\ No newline at end of file
diff --git a/src/TouchPoint-WP/Meeting.php b/src/TouchPoint-WP/Meeting.php
index 74359e11..8551f827 100644
--- a/src/TouchPoint-WP/Meeting.php
+++ b/src/TouchPoint-WP/Meeting.php
@@ -43,6 +43,8 @@ class Meeting extends PostTypeCapable implements api, module, hasGeo, hierarchic
public const MEETING_STATUS_META_KEY = TouchPointWP::SETTINGS_PREFIX . "status";
public const MEETING_INV_ID_META_KEY = TouchPointWP::SETTINGS_PREFIX . "mtgInvId";
+ public const SHORTCODE_GRID = TouchPointWP::SHORTCODE_PREFIX . "calendar";
+
public const STATUS_CANCELLED = "cancelled";
public const STATUS_SCHEDULED = "scheduled";
public const STATUS_UNKNOWN = "unknown";
@@ -821,6 +823,10 @@ public static function load(): bool
add_action(TouchPointWP::INIT_ACTION_HOOK, [self::class, 'init']);
+ if ( ! shortcode_exists(self::SHORTCODE_GRID)) {
+ add_shortcode(self::SHORTCODE_GRID, [CalendarGrid::class, "shortcode"]);
+ }
+
return true;
}
diff --git a/src/templates/meeting-archive.php b/src/templates/meeting-archive.php
index e69ba196..3d1b4073 100644
--- a/src/templates/meeting-archive.php
+++ b/src/templates/meeting-archive.php
@@ -36,18 +36,8 @@
navBar(true);
- echo $grid;
- if ($grid->eventCount > 0) {
- echo $grid->navBar(false, 'bottom');
- }
-
- wp_reset_query();
- $taxQuery = [[]];
- $wp_query->tax_query->queries = $taxQuery;
- $wp_query->query_vars['tax_query'] = $taxQuery;
- $wp_query->is_tax = false; // prevents templates from thinking this is a taxonomy archive
+ CalendarGrid::shortcode();
+
}
?>
From faf18afc02b8e5eb992ed9b065403ec3059f06bc Mon Sep 17 00:00:00 2001
From: "James K."
Date: Thu, 27 Feb 2025 14:31:34 -0500
Subject: [PATCH 243/423] Correcting a comment
---
src/TouchPoint-WP/storedAsPost.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/TouchPoint-WP/storedAsPost.php b/src/TouchPoint-WP/storedAsPost.php
index 2d587268..b28e8487 100644
--- a/src/TouchPoint-WP/storedAsPost.php
+++ b/src/TouchPoint-WP/storedAsPost.php
@@ -8,7 +8,7 @@
use WP_Post;
/**
- * This is a base interface for classes that have "schedule" strings.
+ * This is a base interface for classes that store TouchPoint items as posts in WordPress.
*/
interface storedAsPost
{
From 64f77b8480a8168ff16584985e0e3f645929c243 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Thu, 27 Feb 2025 14:47:38 -0500
Subject: [PATCH 244/423] Improving inline documentation
---
src/TouchPoint-WP/CalendarGrid.php | 7 +++++++
src/TouchPoint-WP/EventsCalendar.php | 2 ++
src/TouchPoint-WP/ExtraValueHandler.php | 6 ++++--
src/TouchPoint-WP/api.php | 4 +++-
src/TouchPoint-WP/extraValues.php | 2 +-
5 files changed, 17 insertions(+), 4 deletions(-)
diff --git a/src/TouchPoint-WP/CalendarGrid.php b/src/TouchPoint-WP/CalendarGrid.php
index 39d05e59..0a541d3a 100644
--- a/src/TouchPoint-WP/CalendarGrid.php
+++ b/src/TouchPoint-WP/CalendarGrid.php
@@ -29,7 +29,14 @@
* @package TouchPointWP
*/
class CalendarGrid {
+ /**
+ * @var ?DateTimeImmutable The date of the next month.
+ */
public ?DateTimeImmutable $next = null;
+
+ /**
+ * @var ?DateTimeImmutable The date of the previous month.
+ */
public ?DateTimeImmutable $prev = null;
/**
diff --git a/src/TouchPoint-WP/EventsCalendar.php b/src/TouchPoint-WP/EventsCalendar.php
index 5f9e59a3..04d17a43 100644
--- a/src/TouchPoint-WP/EventsCalendar.php
+++ b/src/TouchPoint-WP/EventsCalendar.php
@@ -20,6 +20,8 @@
* Provides an interface to bridge the gap between The Events Calendar plugin (by Modern Tribe) and the TouchPoint
* mobile app.
*
+ * This class and its features are deprecated since it will no longer be needed when mobile v2 is retired.
+ *
* @since 0.0.90 Deprecated. Will be removed once v2.0 apps are no longer in use, as this won't be necessary for 3.0+.
* @deprecated since 0.0.90 Will not be necessary once mobile 3.0 exists.
*/
diff --git a/src/TouchPoint-WP/ExtraValueHandler.php b/src/TouchPoint-WP/ExtraValueHandler.php
index b2bd8741..9718c4af 100644
--- a/src/TouchPoint-WP/ExtraValueHandler.php
+++ b/src/TouchPoint-WP/ExtraValueHandler.php
@@ -8,11 +8,13 @@
use DateTime;
/**
- * Manages the handling of Extra Values. Items that support Extra Values MUST use the ExtraValues Trait.
+ * Classes that have extra values should implement the ExtraValues trait, which provides a ExtraValues() method which
+ * returns an instance of this class and allows getting the values via its getter. That trait has the abstract methods
+ * that need to be implemented for Extra Values to be available.
*/
class ExtraValueHandler
{
- /** @var object|extraValues $owner */
+ /** @var object|extraValues $owner The object that has extra values */
protected object $owner; // Must have the extraValues trait.
/**
diff --git a/src/TouchPoint-WP/api.php b/src/TouchPoint-WP/api.php
index 8fae0c90..3055c69b 100644
--- a/src/TouchPoint-WP/api.php
+++ b/src/TouchPoint-WP/api.php
@@ -11,7 +11,9 @@
/**
- * API Interface
+ * Any classes that handle API requests from the client via /touchpoint-api/ should implement this interface.
+ *
+ * This is NOT for the connection to TouchPoint's API, but rather for XHR and such from the client.
*/
interface api
{
diff --git a/src/TouchPoint-WP/extraValues.php b/src/TouchPoint-WP/extraValues.php
index e289e310..95329540 100644
--- a/src/TouchPoint-WP/extraValues.php
+++ b/src/TouchPoint-WP/extraValues.php
@@ -14,7 +14,7 @@
}
/**
- * Enables a class with Extra Values
+ * Enables a class to have Extra Values. Defines several abstract methods that must be implemented.
*/
trait extraValues
{
From 2e58017d71c39cc35c36e534524f466342437973 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Thu, 27 Feb 2025 14:49:20 -0500
Subject: [PATCH 245/423] boring i18n update
---
i18n/TouchPoint-WP-es_ES.po | 528 +++++++++++++++++------------------
i18n/TouchPoint-WP.pot | 532 ++++++++++++++++++------------------
2 files changed, 530 insertions(+), 530 deletions(-)
diff --git a/i18n/TouchPoint-WP-es_ES.po b/i18n/TouchPoint-WP-es_ES.po
index 9a201c6e..204bc25d 100644
--- a/i18n/TouchPoint-WP-es_ES.po
+++ b/i18n/TouchPoint-WP-es_ES.po
@@ -55,7 +55,7 @@ msgid "Slug"
msgstr "Slug"
#: src/templates/admin/invKoForm.php:48
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:977
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:978
msgid "Divisions to Import"
msgstr "Divisiones a Importar"
@@ -88,7 +88,7 @@ msgstr "Tipos de miembros de líder"
#: src/templates/admin/invKoForm.php:165
#: src/templates/admin/invKoForm.php:318
#: src/templates/parts/involvement-nearby-list.php:2
-#: src/TouchPoint-WP/Meeting.php:746
+#: src/TouchPoint-WP/Meeting.php:758
#: src/TouchPoint-WP/Rsvp.php:75
#: assets/js/base-defer.js:192
#: assets/js/base-defer.js:1133
@@ -124,13 +124,13 @@ msgid "Gender"
msgstr "Género"
#: src/templates/admin/invKoForm.php:237
-#: src/TouchPoint-WP/Involvement.php:1853
+#: src/TouchPoint-WP/Involvement.php:1856
#: src/TouchPoint-WP/Taxonomies.php:750
msgid "Weekday"
msgstr "Día laborable"
#: src/templates/admin/invKoForm.php:241
-#: src/TouchPoint-WP/Involvement.php:1879
+#: src/TouchPoint-WP/Involvement.php:1882
#: src/TouchPoint-WP/Taxonomies.php:808
msgid "Time of Day"
msgstr "Hora del día"
@@ -174,7 +174,7 @@ msgstr "Seleccione..."
#. translators: %s will be the plural post type (e.g. Small Groups)
#: src/templates/parts/involvement-list-none.php:16
-#: src/TouchPoint-WP/Involvement.php:2099
+#: src/TouchPoint-WP/Involvement.php:2102
msgid "No %s Found."
msgstr "No se encontraron %s"
@@ -200,99 +200,99 @@ msgstr "Su token de inicio de sesión no es válido."
msgid "Session could not be validated."
msgstr "No se pudo validar la sesión."
-#: src/TouchPoint-WP/EventsCalendar.php:77
+#: src/TouchPoint-WP/EventsCalendar.php:79
msgid "Recurring"
msgstr "Periódico"
-#: src/TouchPoint-WP/EventsCalendar.php:80
-#: src/TouchPoint-WP/EventsCalendar.php:297
+#: src/TouchPoint-WP/EventsCalendar.php:82
+#: src/TouchPoint-WP/EventsCalendar.php:299
msgid "Multi-Day"
msgstr "varios días"
-#: src/TouchPoint-WP/Involvement.php:495
+#: src/TouchPoint-WP/Involvement.php:498
msgid "Currently Full"
msgstr "Actualmente lleno"
-#: src/TouchPoint-WP/Involvement.php:500
+#: src/TouchPoint-WP/Involvement.php:503
msgid "Currently Closed"
msgstr "Actualmente cerrado"
-#: src/TouchPoint-WP/Involvement.php:507
+#: src/TouchPoint-WP/Involvement.php:510
msgid "Registration Not Open Yet"
msgstr "Registro aún no abierto"
-#: src/TouchPoint-WP/Involvement.php:513
+#: src/TouchPoint-WP/Involvement.php:516
msgid "Registration Closed"
msgstr "Registro cerrado"
-#: src/TouchPoint-WP/Involvement.php:1728
-#: src/TouchPoint-WP/Partner.php:814
+#: src/TouchPoint-WP/Involvement.php:1731
+#: src/TouchPoint-WP/Partner.php:825
msgid "Any"
msgstr "Cualquier"
#. translators: %s is for the user-provided term for the items on the map (e.g. Small Group or Partner)
-#: src/TouchPoint-WP/Involvement.php:1936
-#: src/TouchPoint-WP/Partner.php:838
+#: src/TouchPoint-WP/Involvement.php:1939
+#: src/TouchPoint-WP/Partner.php:849
msgid "The %s listed are only those shown on the map."
msgstr "Los %s enumerados son solo los que se muestran en el mapa."
-#: src/TouchPoint-WP/Involvement.php:3556
+#: src/TouchPoint-WP/Involvement.php:3571
msgid "Men Only"
msgstr "Solo hombres"
-#: src/TouchPoint-WP/Involvement.php:3559
+#: src/TouchPoint-WP/Involvement.php:3574
msgid "Women Only"
msgstr "Solo mujeres"
-#: src/TouchPoint-WP/Involvement.php:3636
+#: src/TouchPoint-WP/Involvement.php:3651
msgid "Contact Leaders"
msgstr "Contacta con las líderes"
-#: src/TouchPoint-WP/Involvement.php:3706
-#: src/TouchPoint-WP/Involvement.php:3765
+#: src/TouchPoint-WP/Involvement.php:3721
+#: src/TouchPoint-WP/Involvement.php:3780
msgid "Register"
msgstr "Regístrate ahora"
-#: src/TouchPoint-WP/Involvement.php:3712
+#: src/TouchPoint-WP/Involvement.php:3727
msgid "Create Account"
msgstr "Crear cuenta"
-#: src/TouchPoint-WP/Involvement.php:3716
+#: src/TouchPoint-WP/Involvement.php:3731
msgid "Schedule"
msgstr "Programe"
-#: src/TouchPoint-WP/Involvement.php:3721
+#: src/TouchPoint-WP/Involvement.php:3736
msgid "Give"
msgstr "Dar"
-#: src/TouchPoint-WP/Involvement.php:3724
+#: src/TouchPoint-WP/Involvement.php:3739
msgid "Manage Subscriptions"
msgstr "Administrar suscripciones"
-#: src/TouchPoint-WP/Involvement.php:3727
+#: src/TouchPoint-WP/Involvement.php:3742
msgid "Record Attendance"
msgstr "Registre su asistencia"
-#: src/TouchPoint-WP/Involvement.php:3730
+#: src/TouchPoint-WP/Involvement.php:3745
msgid "Get Tickets"
msgstr "Obtener boletos"
-#: src/TouchPoint-WP/Involvement.php:3756
+#: src/TouchPoint-WP/Involvement.php:3771
#: assets/js/base-defer.js:1001
msgid "Join"
msgstr "Únete"
-#: src/TouchPoint-WP/Involvement.php:3653
-#: src/TouchPoint-WP/Partner.php:1318
+#: src/TouchPoint-WP/Involvement.php:3668
+#: src/TouchPoint-WP/Partner.php:1329
msgid "Show on Map"
msgstr "Muestra en el mapa"
#. translators: %s is for the user-provided "Global Partner" and "Secure Partner" terms.
-#: src/TouchPoint-WP/Partner.php:845
+#: src/TouchPoint-WP/Partner.php:856
msgid "The %1$s listed are only those shown on the map, as well as all %2$s."
msgstr "Los %1$s enumerados son solo los que se muestran en el mapa, así como todos los %2$s."
-#: src/TouchPoint-WP/Partner.php:1259
+#: src/TouchPoint-WP/Partner.php:1270
msgid "Not Shown on Map"
msgstr "No se muestra en el mapa"
@@ -308,503 +308,503 @@ msgstr "ID de Personas de TouchPoint"
msgid "Contact"
msgstr "Contacta"
-#: src/TouchPoint-WP/Meeting.php:745
-#: src/TouchPoint-WP/Meeting.php:766
+#: src/TouchPoint-WP/Meeting.php:757
+#: src/TouchPoint-WP/Meeting.php:778
#: src/TouchPoint-WP/Rsvp.php:80
msgid "RSVP"
msgstr "RSVP"
-#: src/TouchPoint-WP/TouchPointWP.php:2031
+#: src/TouchPoint-WP/TouchPointWP.php:2047
msgid "Unknown Type"
msgstr "Tipo desconocido"
-#: src/TouchPoint-WP/TouchPointWP.php:2088
+#: src/TouchPoint-WP/TouchPointWP.php:2104
msgid "Your Searches"
msgstr "Tus búsquedas"
-#: src/TouchPoint-WP/TouchPointWP.php:2091
+#: src/TouchPoint-WP/TouchPointWP.php:2107
msgid "Public Searches"
msgstr "Búsquedas públicas"
-#: src/TouchPoint-WP/TouchPointWP.php:2094
+#: src/TouchPoint-WP/TouchPointWP.php:2110
msgid "Status Flags"
msgstr "Indicadores de Estado"
-#: src/TouchPoint-WP/TouchPointWP.php:2099
-#: src/TouchPoint-WP/TouchPointWP.php:2100
+#: src/TouchPoint-WP/TouchPointWP.php:2115
+#: src/TouchPoint-WP/TouchPointWP.php:2116
msgid "Current Value"
msgstr "Valor actual"
-#: src/TouchPoint-WP/TouchPointWP.php:2217
-#: src/TouchPoint-WP/TouchPointWP.php:2253
+#: src/TouchPoint-WP/TouchPointWP.php:2233
+#: src/TouchPoint-WP/TouchPointWP.php:2269
msgid "Invalid or incomplete API Settings."
msgstr "Configuración de API no válida o incompleta."
-#: src/TouchPoint-WP/TouchPointWP.php:2267
-#: src/TouchPoint-WP/TouchPointWP.php:2311
+#: src/TouchPoint-WP/TouchPointWP.php:2283
+#: src/TouchPoint-WP/TouchPointWP.php:2327
msgid "Host appears to be missing from TouchPoint-WP configuration."
msgstr "Parece que falta el host en la configuración de TouchPoint-WP."
-#: src/TouchPoint-WP/TouchPointWP.php:2443
+#: src/TouchPoint-WP/TouchPointWP.php:2459
msgid "People Query Failed"
msgstr "Consulta de registros de personas fallida"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:257
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:258
msgid "Basic Settings"
msgstr "Ajustes básicos"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:258
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:259
msgid "Connect to TouchPoint and choose which features you wish to use."
msgstr "Conéctese a TouchPoint y elija qué funciones desea usar."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:262
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:263
msgid "Enable Authentication"
msgstr "Habilitar autenticación"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:263
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:264
msgid "Allow TouchPoint users to sign into this website with TouchPoint."
msgstr "Permita que los usuarios de TouchPoint inicien sesión en este sitio web con TouchPoint."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:274
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:275
msgid "Enable RSVP Tool"
msgstr "Habilitar la herramienta RSVP"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:275
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:276
msgid "Add a crazy-simple RSVP button to WordPress event pages."
msgstr "Agregue un botón RSVP muy simple a las páginas de eventos de WordPress."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:282
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:283
msgid "Enable Involvements"
msgstr "Habilitar Participaciones"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:283
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:284
msgid "Load Involvements from TouchPoint for involvement listings and entries native in your website."
msgstr "Cargue participaciones desde TouchPoint para obtener listas de participación y entradas nativas en su sitio web."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:304
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:305
msgid "Enable Public People Lists"
msgstr "Habilitar listas de personas públicas"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:305
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:306
msgid "Import public people listings from TouchPoint (e.g. staff or elders)"
msgstr "Importe listados públicos de personas desde TouchPoint (por ejemplo, personal o ancianos)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:315
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:316
msgid "Enable Global Partner Listings"
msgstr "Habilitar listados de Socios Globales"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:316
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:317
msgid "Import ministry partners from TouchPoint to list publicly."
msgstr "Importe socios ministeriales de TouchPoint para incluirlos en una lista pública."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:337
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:338
msgid "Display Name"
msgstr "Nombre para mostrar"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:338
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:339
msgid "What your church calls your TouchPoint database."
msgstr "Lo que su iglesia llama su base de datos TouchPoint."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:348
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:349
msgid "TouchPoint Host Name"
msgstr "Nombre de host del TouchPoint"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:349
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:350
msgid "The domain for your TouchPoint database, without the https or any slashes."
msgstr "El dominio de su base de datos TouchPoint, sin https ni barras."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:361
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:362
msgid "Custom Mobile App Deeplink Host Name"
msgstr "Nombre de host de enlace profundo de aplicación móvil personalizada"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:373
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:374
msgid "TouchPoint API Username"
msgstr "Nombre de usuario de la API de TouchPoint"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:385
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:386
msgid "TouchPoint API User Password"
msgstr "Contraseña de usuario de la API de TouchPoint"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:386
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:387
msgid "The password of a user account in TouchPoint with API permissions."
msgstr "La contraseña de una cuenta de usuario en TouchPoint con permisos de API."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:398
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:399
msgid "TouchPoint API Script Name"
msgstr "Nombre de la secuencia de comandos de la API de TouchPoint"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:399
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:400
msgid "The name of the Python script loaded into TouchPoint. Don't change this unless you know what you're doing."
msgstr "El nombre de la secuencia de comandos de Python cargada en TouchPoint. No cambies esto a menos que sepas lo que estás haciendo."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:410
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:411
msgid "Google Maps Javascript API Key"
msgstr "Clave de la API de Javascript de Google Maps"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:411
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:412
msgid "Required for embedding maps."
msgstr "Necesario para incrustar mapas."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:422
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:423
msgid "Google Maps Geocoding API Key"
msgstr "Clave API de codificación geográfica de Google Maps"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:423
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:424
msgid "Optional. Allows for reverse geocoding of user locations."
msgstr "Opcional. Permite la geocodificación inversa de las ubicaciones de los usuarios."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:463
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:468
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:464
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:469
msgid "Generate Scripts"
msgstr "Generar secuencias de comandos"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:467
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:468
msgid "Upload the package to {tpName} here"
msgstr "Sube el paquete a {tpName} aquí"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:484
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:485
msgid "People"
msgstr "Gente"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:485
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:486
msgid "Manage how people are synchronized between TouchPoint and WordPress."
msgstr "Administre cómo se sincronizan las personas entre TouchPoint y WordPress."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:489
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:490
msgid "Contact Keywords"
msgstr "Palabras clave de contacto"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:490
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:491
msgid "These keywords will be used when someone clicks the \"Contact\" button on a Person's listing or profile."
msgstr "Estas palabras clave se utilizarán cuando alguien haga clic en el botón \"Contactar\" en la lista o el perfil de una Persona."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:501
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:502
msgid "Extra Value for WordPress User ID"
msgstr "Valor Adicional para la ID de usuario de WordPress"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:502
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:503
msgid "The name of the extra value to use for the WordPress User ID. If you are using multiple WordPress instances with one TouchPoint database, you will need these values to be unique between WordPress instances. In most cases, the default is fine."
msgstr "El nombre del valor adicional que se usará para el ID de usuario de WordPress. Si está utilizando varias instancias de WordPress con una base de datos de TouchPoint, necesitará que estos valores sean únicos entre las instancias de WordPress. En la mayoría de los casos, el valor predeterminado está bien."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:512
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:513
msgid "Extra Value: Biography"
msgstr "Valor Adicional: Biografía"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:513
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:514
msgid "Import a Bio from a Person Extra Value field. Can be an HTML or Text Extra Value. This will overwrite any values set by WordPress. Leave blank to not import."
msgstr "Importe una biografía desde un campo de Valor Adicional de Persona. Puede ser un Valor Adicional HTML o de texto. Esto sobrescribirá cualquier valor establecido por WordPress. Dejar en blanco para no importar."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:523
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:761
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:524
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:762
msgid "Extra Values to Import"
msgstr "Valor Adicional para importar"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:524
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:525
msgid "Import People Extra Value fields as User Meta data."
msgstr "Importe campos de valor extra de personas como metadatos de usuario."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:540
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:541
msgid "Authentication"
msgstr "Autenticación"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:541
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:542
msgid "Allow users to log into WordPress using TouchPoint."
msgstr "Permita que los usuarios inicien sesión en WordPress usando TouchPoint."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:545
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:546
msgid "Make TouchPoint the default authentication method."
msgstr "Haga que TouchPoint sea el método de autenticación predeterminado."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:555
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:556
msgid "Enable Auto-Provisioning"
msgstr "Habilitar el aprovisionamiento automático"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:556
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:557
msgid "Automatically create WordPress users, if needed, to match authenticated TouchPoint users."
msgstr "Cree automáticamente usuarios de WordPress, si es necesario, para que coincidan con los usuarios autenticados de TouchPoint."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:565
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:566
msgid "Change 'Edit Profile' links"
msgstr "Cambiar los enlaces 'Editar perfil'"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:566
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:567
msgid "\"Edit Profile\" links will take the user to their TouchPoint profile, instead of their WordPress profile."
msgstr "Los enlaces \"Editar perfil\" llevarán al usuario a su perfil de TouchPoint, en lugar de a su perfil de WordPress."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:575
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:576
msgid "Enable full logout"
msgstr "Habilitar cierre de sesión completo"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:576
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:577
msgid "Logout of TouchPoint when logging out of WordPress."
msgstr "Cierre sesión en TouchPoint al cerrar sesión en WordPress."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:582
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:583
msgid "Prevent Subscriber Admin Bar"
msgstr "Prevenir la barra de administración de suscriptores"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:583
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:584
msgid "By enabling this option, users who can't edit anything won't see the Admin bar."
msgstr "Al habilitar esta opción, los usuarios que no pueden editar nada no verán la barra de administración."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:597
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:598
msgid "Involvements"
msgstr "Involucramientos"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:598
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:599
msgid "Import Involvements from TouchPoint to list them on your website, for Small Groups, Classes, and more. Select the division(s) that immediately correspond to the type of Involvement you want to list. For example, if you want a Small Group list and have a Small Group Division, only select the Small Group Division. If you want Involvements to be filterable by additional Divisions, select those Divisions on the Divisions tab, not here."
msgstr "Importe participaciones desde TouchPoint para enumerarlas en su sitio web, para grupos pequeños, clases y más. Seleccione la(s) división(es) que corresponda(n) inmediatamente al tipo de participación que desea enumerar. Por ejemplo, si desea una lista de grupos pequeños y tiene una división de grupos pequeños, solo seleccione la división de grupos pequeños. Si desea que las participaciones se puedan filtrar por divisiones adicionales, seleccione esas divisiones en la pestaña Divisiones, no aquí."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:603
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:604
msgid "Involvement Post Types"
msgstr "Tipos de publicaciones de Involucramientos"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:633
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:634
msgid "Global Partners"
msgstr "Misioneros"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:634
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:635
msgid "Manage how global partners are imported from TouchPoint for listing on WordPress. Partners are grouped by family, and content is provided through Family Extra Values. This works for both People and Business records."
msgstr "Administre cómo se importan los socios globales desde TouchPoint para incluirlos en WordPress. Los socios se agrupan por familia y el contenido se proporciona a través de Valor Extra Familiar. Esto funciona tanto para registros de personas como de empresas."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:638
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:639
msgid "Global Partner Name (Plural)"
msgstr "Nombre de los misioneros (plural)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:639
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:640
msgid "What you call Global Partners at your church"
msgstr "Lo que llamas los Misioneros en tu iglesia"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:649
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:650
msgid "Global Partner Name (Singular)"
msgstr "Nombre de un misionero (singular)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:650
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:651
msgid "What you call a Global Partner at your church"
msgstr "Lo que llamas un Misionero en tu iglesia"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:660
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:661
msgid "Global Partner Name for Secure Places (Plural)"
msgstr "Nombre de los misioneros para lugares seguros (plural)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:661
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:662
msgid "What you call Secure Global Partners at your church"
msgstr "Lo que llamas un Misionero seguro en tu iglesia"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:671
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:672
msgid "Global Partner Name for Secure Places (Singular)"
msgstr "Nombre de un misionero para lugares seguros (singular)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:672
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:673
msgid "What you call a Secure Global Partner at your church"
msgstr "Lo que llamas los Misioneros seguros en tu iglesia"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:682
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:683
msgid "Global Partner Slug"
msgstr "Slug de Socio Global"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:683
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:684
msgid "The root path for Global Partner posts"
msgstr "La ruta raíz para las publicaciones de Socios Globales"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:695
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:696
msgid "Saved Search"
msgstr "Búsqueda Guardada"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:696
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:697
msgid "Anyone who is included in this saved search will be included in the listing."
msgstr "Cualquiera que esté incluido en esta búsqueda guardada se incluirá en la lista."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:706
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:707
msgid "Extra Value: Description"
msgstr "Valor Adicional: Descripción"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:707
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:708
msgid "Import a description from a Family Extra Value field. Can be an HTML or Text Extra Value. This becomes the body of the Global Partner post."
msgstr "Importe una descripción de un campo de Valor Extra Familiar. Puede ser un valor adicional HTML o de texto. Esto se convierte en el cuerpo de la publicación del socio global."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:717
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:718
msgid "Extra Value: Summary"
msgstr "Valor Adicional: Resumen"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:718
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:719
msgid "Optional. Import a short description from a Family Extra Value field. Can be an HTML or Text Extra Value. If not provided, the full bio will be truncated."
msgstr "Opcional. Importe una breve descripción de un campo de Valor Extra Familiar. Puede ser un Valor Adicional HTML o de texto. Si no se proporciona, la biografía completa se truncará."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:728
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:729
msgid "Latitude Override"
msgstr "Anulación de latitud"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:729
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:730
msgid "Designate a text Family Extra Value that will contain a latitude that overrides any locations on the partner's profile for the partner map. Both latitude and longitude must be provided for an override to take place."
msgstr "Designe un Valor Familiar Adicional de texto que contenga una latitud que anule cualquier ubicación en el perfil del socio para el mapa de socios. Tanto la latitud como la longitud deben proporcionarse para que se produzca una anulación."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:739
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:740
msgid "Longitude Override"
msgstr "Anulación de longitud"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:740
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:741
msgid "Designate a text Family Extra Value that will contain a longitude that overrides any locations on the partner's profile for the partner map. Both latitude and longitude must be provided for an override to take place."
msgstr "Designe un Valor Familiar Adicional de texto que contenga una longitud que anule cualquier ubicación en el perfil del socio para el mapa de socios. Tanto la latitud como la longitud deben proporcionarse para que se produzca una anulación."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:750
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:751
msgid "Public Location"
msgstr "Ubicación Pública"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:751
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:752
msgid "Designate a text Family Extra Value that will contain the partner's location, as you want listed publicly. For partners who have DecoupleLocation enabled, this field will be associated with the map point, not the list entry."
msgstr "Designe un Valor Adicional Familiar de texto que contendrá la ubicación del socio, como desea que se enumere públicamente. Para los socios que tienen DecoupleLocation habilitado, este campo se asociará con el punto del mapa, no con la entrada de la lista."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:762
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:763
msgid "Import Family Extra Value fields as Meta data on the partner's post"
msgstr "Importe campos de Valor Adicional Familiar como Metadatos en la publicación del socio"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:773
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:774
msgid "Primary Taxonomy"
msgstr "Taxonomía Primaria"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:774
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:775
msgid "Import a Family Extra Value as the primary means by which partners are organized."
msgstr "Importe un Valor Adicional Familiar como el medio principal por el cual se organizan los socios."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:817
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:818
msgid "Events for Custom Mobile App"
msgstr "Eventos para la aplicación móvil personalizada"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:822
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:823
msgid "Preview"
msgstr "Preestrena"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:837
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:838
msgid "Use Standardizing Stylesheet"
msgstr "Usar hoja de estilo de estandarización"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:838
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:839
msgid "Inserts some basic CSS into the events feed to clean up display"
msgstr "Inserta algo de CSS básico en el feed de eventos para limpiar la pantalla"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:935
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:936
msgid "Divisions"
msgstr "Divisiones"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:936
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:937
msgid "Import Divisions from TouchPoint to your website as a taxonomy. These are used to classify users and involvements."
msgstr "Importe Divisiones desde TouchPoint a su sitio web como una taxonomía. Estos se utilizan para clasificar a los usuarios y las participaciones."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:940
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:941
msgid "Division Name (Plural)"
msgstr "Nombre de la División (plural)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:941
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:942
msgid "What you call Divisions at your church"
msgstr "Lo que llamas Divisiones en tu iglesia"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:952
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:953
msgid "Division Name (Singular)"
msgstr "Nombre de la División (Singular)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:953
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:954
msgid "What you call a Division at your church"
msgstr "Lo que llamas una división en tu iglesia"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:964
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:965
msgid "Division Slug"
msgstr "Slug de División"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:965
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:966
msgid "The root path for the Division Taxonomy"
msgstr "La ruta raíz para la Taxonomía de División"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:978
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:979
msgid "These Divisions will be imported for the taxonomy"
msgstr "Estas Divisiones se importarán para la taxonomía"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1029
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1030
msgid "Campuses"
msgstr "Campus"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1030
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1031
msgid "Import Campuses from TouchPoint to your website as a taxonomy. These are used to classify users and involvements."
msgstr "Importe Campus desde TouchPoint a su sitio web como una taxonomía. Estos se utilizan para clasificar a los usuarios y las participaciones."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1037
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1038
msgid "Campus Name (Plural)"
msgstr "Nombre del Campus (Plural)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1038
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1039
msgid "What you call Campuses at your church"
msgstr "Lo que llamas Campus en tu iglesia"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1049
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1050
msgid "Campus Name (Singular)"
msgstr "Nombre del Campus (Singular)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1050
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1051
msgid "What you call a Campus at your church"
msgstr "Lo que llamas un Campus en tu iglesia"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1061
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1062
msgid "Campus Slug"
msgstr "Slug de Campus"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1062
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1063
msgid "The root path for the Campus Taxonomy"
msgstr "La ruta raíz para la Taxonomía del Campus"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1078
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1079
msgid "Resident Codes"
msgstr "Códigos de Residentes"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1079
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1080
msgid "Import Resident Codes from TouchPoint to your website as a taxonomy. These are used to classify users and involvements that have locations."
msgstr "Importe Códigos de Residentes desde TouchPoint a su sitio web como una taxonomía. Estos se utilizan para clasificar los usuarios y las participaciones que tienen ubicaciones."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1083
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1084
msgid "Resident Code Name (Plural)"
msgstr "Nombre de Código de Tesidente (Plural)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1084
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1085
msgid "What you call Resident Codes at your church"
msgstr "Lo que llamas Códigos de Residente en tu iglesia"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1095
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1096
msgid "Resident Code Name (Singular)"
msgstr "Nombre de Código de Residente (singular)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1096
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1097
msgid "What you call a Resident Code at your church"
msgstr "Lo que llamas un Código de Residencia en tu iglesia"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1107
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1108
msgid "Resident Code Slug"
msgstr "Slug de Código Residente"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1108
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1109
msgid "The root path for the Resident Code Taxonomy"
msgstr "La ruta raíz para la Taxonomía del Código de Residente"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1284
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1287
msgid "password saved"
msgstr "contraseña guardada"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1338
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1339
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1341
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1342
msgid "TouchPoint-WP"
msgstr "TouchPoint-WP"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1387
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1390
msgid "Settings"
msgstr "Ajustes"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1627
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1630
msgid "Script Update Failed"
msgstr "Actualización de secuencia de comandos fallida"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1749
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1752
msgid "TouchPoint-WP Settings"
msgstr "Configuración de TouchPoint-WP"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1800
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1803
msgid "Save Settings"
msgstr "Guardar ajustes"
@@ -972,7 +972,7 @@ msgstr "Enviar"
msgid "Nothing to submit."
msgstr "Nada que enviar."
-#: src/TouchPoint-WP/TouchPointWP.php:2384
+#: src/TouchPoint-WP/TouchPointWP.php:2400
msgid "The scripts on TouchPoint that interact with this plugin are out-of-date, and an automatic update failed."
msgstr "Los scripts en TouchPoint que interactúan con este complemento están desactualizados y falló una actualización automática."
@@ -1027,16 +1027,16 @@ msgstr "OK"
msgid "Next"
msgstr "Siguiente"
-#: src/TouchPoint-WP/Involvement.php:1901
+#: src/TouchPoint-WP/Involvement.php:1904
#: src/TouchPoint-WP/Taxonomies.php:869
msgid "Marital Status"
msgstr "Estado civil"
-#: src/TouchPoint-WP/Involvement.php:1914
+#: src/TouchPoint-WP/Involvement.php:1917
msgid "Age"
msgstr "Años"
-#: src/TouchPoint-WP/Involvement.php:1785
+#: src/TouchPoint-WP/Involvement.php:1788
msgid "Genders"
msgstr "Géneros"
@@ -1154,12 +1154,12 @@ msgstr "Añade una ubicación"
msgid "The Campus"
msgstr "El campus"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1004
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1010
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1005
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1011
msgid "Locations"
msgstr "Ubicaciones"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1005
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1006
msgid "Locations are physical places, probably campuses. None are required, but they can help present geographic information clearly."
msgstr "Las ubicaciones son lugares físicos, probablemente campus. No se requiere ninguno, pero pueden ayudar a presentar la información geográfica con claridad."
@@ -1198,33 +1198,33 @@ msgctxt "Time of Day"
msgid "Night"
msgstr "Noche"
-#: src/TouchPoint-WP/Involvement.php:1902
+#: src/TouchPoint-WP/Involvement.php:1905
msgctxt "Marital status for a group of people"
msgid "Mostly Single"
msgstr "Mayoría solteras"
-#: src/TouchPoint-WP/Involvement.php:1903
+#: src/TouchPoint-WP/Involvement.php:1906
msgctxt "Marital status for a group of people"
msgid "Mostly Married"
msgstr "Mayoría casadas"
#. translators: %s is the link to "reset the map"
-#: src/TouchPoint-WP/Involvement.php:1944
-#: src/TouchPoint-WP/Partner.php:854
+#: src/TouchPoint-WP/Involvement.php:1947
+#: src/TouchPoint-WP/Partner.php:865
msgid "Zoom out or %s to see more."
msgstr "Alejar o %s para ver más."
-#: src/TouchPoint-WP/Involvement.php:1947
-#: src/TouchPoint-WP/Partner.php:857
+#: src/TouchPoint-WP/Involvement.php:1950
+#: src/TouchPoint-WP/Partner.php:868
msgctxt "Zoom out or reset the map to see more."
msgid "reset the map"
msgstr "restablecer el mapa"
#. translators: %1$s is the date(s), %2$s is the time(s).
-#: src/TouchPoint-WP/Involvement.php:995
-#: src/TouchPoint-WP/Involvement.php:1027
-#: src/TouchPoint-WP/Involvement.php:1120
-#: src/TouchPoint-WP/Involvement.php:1144
+#: src/TouchPoint-WP/Involvement.php:998
+#: src/TouchPoint-WP/Involvement.php:1030
+#: src/TouchPoint-WP/Involvement.php:1123
+#: src/TouchPoint-WP/Involvement.php:1147
#: src/TouchPoint-WP/TouchPointWP_Widget.php:71
#: src/TouchPoint-WP/Utilities/DateFormats.php:288
#: src/TouchPoint-WP/Utilities/DateFormats.php:352
@@ -1232,43 +1232,43 @@ msgid "%1$s at %2$s"
msgstr "%1$s a las %2$s"
#. translators: {start date} through {end date} e.g. February 14 through August 12
-#: src/TouchPoint-WP/Involvement.php:1036
+#: src/TouchPoint-WP/Involvement.php:1039
msgid "%1$s through %2$s"
msgstr "%1$s al %2$s"
#. translators: {schedule}, {start date} through {end date} e.g. Sundays at 11am, February 14 through August 12
-#: src/TouchPoint-WP/Involvement.php:1045
+#: src/TouchPoint-WP/Involvement.php:1048
msgid "%1$s, %2$s through %3$s"
msgstr "%1$s, %2$s al %3$s"
#. translators: Starts {start date} e.g. Starts September 15
-#: src/TouchPoint-WP/Involvement.php:1054
+#: src/TouchPoint-WP/Involvement.php:1057
msgid "Starts %1$s"
msgstr "Comienza el %1$s"
#. translators: {schedule}, starting {start date} e.g. Sundays at 11am, starting February 14
-#: src/TouchPoint-WP/Involvement.php:1062
+#: src/TouchPoint-WP/Involvement.php:1065
msgid "%1$s, starting %2$s"
msgstr "%1$s, comienza el %2$s"
#. translators: Through {end date} e.g. Through September 15
-#: src/TouchPoint-WP/Involvement.php:1070
+#: src/TouchPoint-WP/Involvement.php:1073
msgid "Through %1$s"
msgstr "Hasta el %1$s"
#. translators: {schedule}, through {end date} e.g. Sundays at 11am, through February 14
-#: src/TouchPoint-WP/Involvement.php:1078
+#: src/TouchPoint-WP/Involvement.php:1081
msgid "%1$s, through %2$s"
msgstr "%1$s, hasta el %2$s"
#. translators: number of miles
#: src/templates/parts/involvement-nearby-list.php:10
-#: src/TouchPoint-WP/Involvement.php:3577
+#: src/TouchPoint-WP/Involvement.php:3592
msgctxt "miles. Unit is appended to a number. %2.1f is the number, so %2.1fmi looks like '12.3mi'"
msgid "%2.1fmi"
msgstr "%2.1fmi"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:374
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:375
msgid "The username of a user account in TouchPoint with API permissions. It is strongly recommended that you create a separate person/user for this purpose, rather than using a staff member's account."
msgstr "El nombre de usuario de una cuenta de usuario en TouchPoint con permisos API. Se recomienda encarecidamente que cree una persona/usuario independiente para este fin, en lugar de utilizar la cuenta de un miembro del personal."
@@ -1280,39 +1280,39 @@ msgstr "La participación tiene un tipo de registro de \"No Online Registration\
msgid "Involvement registration has ended (end date is past)"
msgstr "El registro de participación ha finalizado (la fecha de finalización ya pasó)"
-#: src/TouchPoint-WP/Involvement.php:2040
+#: src/TouchPoint-WP/Involvement.php:2043
msgid "This involvement type doesn't exist."
msgstr "Este tipo de participación no existe."
-#: src/TouchPoint-WP/Involvement.php:2050
+#: src/TouchPoint-WP/Involvement.php:2053
msgid "This involvement type doesn't have geographic locations enabled."
msgstr "Este tipo de participación no tiene habilitadas las ubicaciones geográficas."
-#: src/TouchPoint-WP/Involvement.php:2069
+#: src/TouchPoint-WP/Involvement.php:2072
msgid "Could not locate."
msgstr "No se pudo localizar."
-#: src/TouchPoint-WP/Meeting.php:672
-#: src/TouchPoint-WP/TouchPointWP.php:1033
+#: src/TouchPoint-WP/Meeting.php:684
+#: src/TouchPoint-WP/TouchPointWP.php:1037
msgid "Only GET requests are allowed."
msgstr "Solo se permiten solicitudes GET."
-#: src/TouchPoint-WP/Meeting.php:700
-#: src/TouchPoint-WP/TouchPointWP.php:362
+#: src/TouchPoint-WP/Meeting.php:712
+#: src/TouchPoint-WP/TouchPointWP.php:363
msgid "Only POST requests are allowed."
msgstr "Solo se permiten solicitudes POST."
-#: src/TouchPoint-WP/Meeting.php:710
-#: src/TouchPoint-WP/TouchPointWP.php:371
+#: src/TouchPoint-WP/Meeting.php:722
+#: src/TouchPoint-WP/TouchPointWP.php:372
msgid "Invalid data provided."
msgstr "Datos proporcionados no válidos."
-#: src/TouchPoint-WP/Involvement.php:3861
-#: src/TouchPoint-WP/Involvement.php:3964
+#: src/TouchPoint-WP/Involvement.php:3888
+#: src/TouchPoint-WP/Involvement.php:3993
msgid "Invalid Post Type."
msgstr "Tipo de publicación no válida."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:326
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:327
msgid "Enable Campuses"
msgstr "Habilitar Campus"
@@ -1377,7 +1377,7 @@ msgstr "Estados Civiles"
msgid "Classify Partners by category chosen in settings."
msgstr "Clasifique a los ministeriales por categoría elegida en la configuración."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:327
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:328
msgid "Import campuses as a taxonomy. (You probably want to do this if you're multi-campus.)"
msgstr "Importar campus como taxonomía. (Probablemente quieras hacer esto si tienes varios campus)."
@@ -1411,24 +1411,24 @@ msgstr "Agregar Nuevo %s"
msgid "New %s"
msgstr "Nuevo %s"
-#: src/TouchPoint-WP/Report.php:177
+#: src/TouchPoint-WP/Report.php:181
msgid "TouchPoint Reports"
msgstr "Informes de TouchPoint"
-#: src/TouchPoint-WP/Report.php:178
+#: src/TouchPoint-WP/Report.php:182
msgid "TouchPoint Report"
msgstr "Informe de TouchPoint"
#. translators: Last updated date/time for a report. %1$s is the date. %2$s is the time.
-#: src/TouchPoint-WP/Report.php:417
+#: src/TouchPoint-WP/Report.php:435
msgid "Updated on %1$s at %2$s"
msgstr "Actualizada %1$s %2$s"
-#: src/TouchPoint-WP/TouchPointWP.php:266
+#: src/TouchPoint-WP/TouchPointWP.php:267
msgid "Every 15 minutes"
msgstr "Cada 15 minutos"
-#: src/TouchPoint-WP/Involvement.php:1828
+#: src/TouchPoint-WP/Involvement.php:1831
msgid "Language"
msgstr "Idioma"
@@ -1445,11 +1445,11 @@ msgctxt "list of people, and *others*"
msgid "others"
msgstr "otros"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:850
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:851
msgid "Meeting Calendars"
msgstr "Calendarios de Reuniones"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:851
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:852
msgid "Import Meetings from TouchPoint to a calendar on your website."
msgstr "Importe reuniones desde TouchPoint a un calendario en su sitio web."
@@ -1457,28 +1457,28 @@ msgstr "Importe reuniones desde TouchPoint a un calendario en su sitio web."
msgid "Import All Meetings to Calendar"
msgstr "Importe reuniones a los calendarios"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:879
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:880
msgid "Meetings Slug"
msgstr "Slug de reuniones"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:880
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:881
msgid "The root path for Meetings"
msgstr "La ruta raíz para las reuniones"
-#: src/TouchPoint-WP/Involvement.php:3951
+#: src/TouchPoint-WP/Involvement.php:3980
#: src/TouchPoint-WP/Person.php:1833
msgid "Contact Prohibited."
msgstr "Contacto prohibido."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:546
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:547
msgid "By checking this box, the TouchPoint login page will become the default. To prevent the redirect and reach the standard WordPress login page, add 'tp_no_redirect' as a URL parameter."
msgstr "Al marcar esta casilla, la página de inicio de sesión de TouchPoint se convertirá en la predeterminada. Para evitar la redirección y llegar a la página de inicio de sesión estándar de WordPress, agregue 'tp_no_redirect' como parámetro de URL."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:362
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:363
msgid "The domain for your mobile app deeplinks, without the https or any slashes. If you aren't using the custom mobile app, leave this blank."
msgstr "El dominio de los enlaces profundos de su aplicación móvil, sin https ni barras diagonales. Si no está utilizando la aplicación móvil personalizada, déjelo en blanco."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:466
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:467
msgid "Once your settings on this page are set and saved, use this tool to generate the scripts needed for TouchPoint in a convenient installation package."
msgstr "Una vez que haya configurado y guardado la configuración en esta página, utilice esta herramienta para generar los scripts necesarios para TouchPoint en un paquete de instalación conveniente."
@@ -1490,7 +1490,7 @@ msgstr "Algo salió mal."
msgid "You may need to sign in."
msgstr "Es posible que tengas que iniciar sesión."
-#: src/TouchPoint-WP/Involvement.php:3941
+#: src/TouchPoint-WP/Involvement.php:3970
#: src/TouchPoint-WP/Person.php:1850
msgid "Contact Blocked for Spam."
msgstr "Contacto bloqueado por spam."
@@ -1500,50 +1500,50 @@ msgid "Registration Blocked for Spam."
msgstr "Registro bloqueado por spam."
#: src/templates/meeting-archive.php:27
-#: src/TouchPoint-WP/Meeting.php:269
+#: src/TouchPoint-WP/Meeting.php:281
msgctxt "What Meetings should be called, plural."
msgid "Events"
msgstr "Eventos"
-#: src/TouchPoint-WP/Meeting.php:270
+#: src/TouchPoint-WP/Meeting.php:282
msgctxt "What Meetings should be called, singular."
msgid "Event"
msgstr "Evento"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:293
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:294
msgid "Enable Meeting Calendar"
msgstr "Habilitar calendario de reuniones"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:294
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:295
msgid "Load Meetings from TouchPoint for a calendar, native in your website."
msgstr "Cargue reuniones desde TouchPoint para un calendario nativo en su sitio web."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:892
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:893
msgid "Days of Future"
msgstr "Días del futuro"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:893
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:894
msgid "Meetings more than this many days in the future will not be imported."
msgstr "No se importarán reuniones que superen estos días en el futuro."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:905
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:906
msgid "Archive After Days"
msgstr "Archivo después de días"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:918
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:919
msgid "Days of History"
msgstr "Días de la Historia"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:989
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1120
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:990
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1121
msgid "Post Types"
msgstr "Tipos de publicaciones"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:990
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:991
msgid "Select post types which should have Divisions available as a native taxonomy."
msgstr "Seleccione los tipos de publicaciones que deberían tener Divisiones disponibles como taxonomía nativa."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1121
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1122
msgid "Select post types which should have Resident Codes available as a native taxonomy."
msgstr "Seleccione los tipos de publicaciones que deberían tener códigos de residente disponibles como taxonomía nativa."
@@ -1566,15 +1566,15 @@ msgstr "mañana"
msgid "(named person)"
msgstr "(persona nombrada)"
-#: src/TouchPoint-WP/Utilities.php:497
+#: src/TouchPoint-WP/Utilities.php:500
msgid "Expand"
msgstr "Ampliar"
-#: src/TouchPoint-WP/Meeting.php:549
+#: src/TouchPoint-WP/Meeting.php:561
msgid "Cancelled"
msgstr "Cancelado"
-#: src/TouchPoint-WP/Meeting.php:550
+#: src/TouchPoint-WP/Meeting.php:562
msgid "Scheduled"
msgstr "Programado"
@@ -1603,21 +1603,21 @@ msgid "%1$s, %2$s"
msgstr "%1$s %2$s"
#. Translators: %s is the singular name of the of a Meeting, such as "Event".
-#: src/TouchPoint-WP/CalendarGrid.php:189
+#: src/TouchPoint-WP/CalendarGrid.php:199
msgid "%s is cancelled."
msgstr "%s esta cancelado."
#. Translators: %s is the system name. "TouchPoint" by default.
-#: src/TouchPoint-WP/Involvement.php:3665
+#: src/TouchPoint-WP/Involvement.php:3680
msgid "Involvement in %s"
msgstr "Participaciones en %s"
-#: src/TouchPoint-WP/Meeting.php:422
+#: src/TouchPoint-WP/Meeting.php:434
msgid "In the Past"
msgstr "en el pasado"
#. Translators: %s is the system name. "TouchPoint" by default.
-#: src/TouchPoint-WP/Meeting.php:494
+#: src/TouchPoint-WP/Meeting.php:506
msgid "Meeting in %s"
msgstr "Reunión en %s"
@@ -1626,39 +1626,39 @@ msgstr "Reunión en %s"
msgid "Person in %s"
msgstr "Persona en %s"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:855
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:856
msgid "Meeting Name (Plural)"
msgstr "Nombre de las reuniones (singular)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:856
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:857
msgid "What you call Meetings at your church"
msgstr "Lo que llamas Reuniones en tu iglesia"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:861
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:863
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:862
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:864
msgid "Meetings"
msgstr "Reuniones"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:861
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:863
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:862
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:864
msgid "Events"
msgstr "Eventos"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:867
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:868
msgid "Meeting Name (Singular)"
msgstr "Nombre de la reunión (singular)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:868
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:869
msgid "What you call a Meeting at your church"
msgstr "Cómo se llama una Reunión en tu iglesia"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:873
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:875
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:874
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:876
msgid "Meeting"
msgstr "Reunión"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:873
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:875
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:874
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:876
msgid "Event"
msgstr "Evento"
@@ -1682,7 +1682,7 @@ msgctxt "Date string when the year is not current."
msgid "F j, Y"
msgstr "j F Y"
-#: src/TouchPoint-WP/Meeting.php:551
+#: src/TouchPoint-WP/Meeting.php:563
msgctxt "Event Status is not a recognized value."
msgid "Unknown"
msgstr "desconocido"
@@ -1692,12 +1692,12 @@ msgid "Creating an Involvement object from an object without a post_id is not ye
msgstr "Aún no se admite la creación de un objeto de participación a partir de un objeto sin post_id."
#. translators: "Mon All Day" or "Sundays All Day"
-#: src/TouchPoint-WP/Involvement.php:998
-#: src/TouchPoint-WP/Involvement.php:1021
+#: src/TouchPoint-WP/Involvement.php:1001
+#: src/TouchPoint-WP/Involvement.php:1024
msgid "%1$s All Day"
msgstr "todo el dia los %1$s"
-#: src/TouchPoint-WP/Meeting.php:94
+#: src/TouchPoint-WP/Meeting.php:96
msgid "Creating a Meeting object from an object without a post_id is not yet supported."
msgstr "Aún no se admite la creación de un objeto de reunión a partir de un objeto sin post_id."
@@ -1757,7 +1757,7 @@ msgid "%1$s, %2$s"
msgstr "%1$s %2$s"
#. Translators: %s is the plural name of the of the Meetings, such as "Events".
-#: src/TouchPoint-WP/CalendarGrid.php:269
+#: src/TouchPoint-WP/CalendarGrid.php:279
msgid "There are no %s published for this month."
msgstr "No hay %s publicados para este mes."
@@ -1765,31 +1765,31 @@ msgstr "No hay %s publicados para este mes."
msgid "Radius (miles)"
msgstr "Radio (millas)"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:791
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:792
msgid "Events Calendar plugin by Modern Tribe"
msgstr "Complemento de calendario de eventos de Modern Tribe"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:795
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:796
msgid "TouchPoint Meetings"
msgstr "reuniones de TouchPoint"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:801
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:802
msgid "App 2.0 Calendar"
msgstr "Calendario de la app 2.0"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:806
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:807
msgid "Events Provider"
msgstr "Proveedor de eventos"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:807
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:808
msgid "The source of events for version 2.0 of the Custom Mobile App."
msgstr "El origen de los eventos para la versión 2.0 de la aplicación móvil personalizada."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:820
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:821
msgid "To use your Events Calendar events in the Custom mobile app, set the Provider to Wordpress Plugin - Modern Tribe (regardless of which provider you're using above) and use this url:"
msgstr "Para usar sus eventos del Calendario de eventos en la aplicación móvil personalizada, configure el Proveedor en Wordpress Plugin - Modern Tribe (independientemente del proveedor que esté utilizando anteriormente) y use esta URL:"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:802
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:803
msgid "Integrate Custom Mobile app version 2.0 with The Events Calendar from Modern Tribe."
msgstr "Integre la versión 2.0 de la aplicación móvil personalizada con el calendario de eventos de Modern Tribe."
@@ -1810,7 +1810,7 @@ msgstr "Código de Residente"
msgid "Campus"
msgstr "Campus"
-#: src/TouchPoint-WP/Involvement.php:1022
+#: src/TouchPoint-WP/Involvement.php:1025
msgid "All Day"
msgstr "todo el dia"
@@ -1819,11 +1819,11 @@ msgctxt "list of items, and *others*"
msgid "others"
msgstr "otros"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:433
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:434
msgid "ipapi.co API Key"
msgstr "Clave API de ipapi.co"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:434
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:435
msgid "Optional. Allows for geolocation of user IP addresses. This generally will work without a key, but may be rate limited."
msgstr "Opcional. Permite la geolocalización de las direcciones IP de los usuarios. Por lo general, esto funcionará sin una clave, pero puede tener una frecuencia limitada."
@@ -1856,18 +1856,18 @@ msgstr "Actualizada"
msgid "Yesterday"
msgstr "Ayer"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:906
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:907
msgid "Meetings more than this many days in the past will no longer update from TouchPoint, allowing you to keep some historical event information on the calendar for reference, even if you reuse and update the information in the Involvement."
msgstr "Las reuniones con más de esta cantidad de días en el pasado ya no se actualizarán desde TouchPoint, lo que le permitirá conservar información histórica de eventos en el calendario para referencia, incluso si reutiliza y actualiza la información en Participación."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:919
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:920
msgid "Meetings will be kept on the calendar until the event is this many days in the past. Once an event is older than this, it'll be deleted."
msgstr "Las reuniones se mantendrán en el calendario hasta que el evento tenga esta cantidad de días en el pasado. Una vez que un evento tenga más de esta cantidad de días, se eliminará."
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:444
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:445
msgid "List Site in Directory"
msgstr "Listar sitio en directorio"
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:445
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:446
msgid "Allow the TouchPoint-WP developers to publicly list your site/church as using TouchPoint-WP. Helps other prospective churches see what can be done by combining WordPress with the best ChMS on the planet. Only applies if this site is accessible on the public internet."
msgstr "Permita que los desarrolladores de TouchPoint-WP incluyan públicamente su sitio o iglesia como sitios que usan TouchPoint-WP. Esto ayuda a otras iglesias potenciales a ver lo que se puede hacer al combinar WordPress con el mejor ChMS del planeta. Solo se aplica si este sitio es accesible en Internet público."
diff --git a/i18n/TouchPoint-WP.pot b/i18n/TouchPoint-WP.pot
index 92ee09b7..ffa7dcf7 100644
--- a/i18n/TouchPoint-WP.pot
+++ b/i18n/TouchPoint-WP.pot
@@ -1,4 +1,4 @@
-# Copyright (C) 2024 James K
+# Copyright (C) 2025 James K
# This file is distributed under the AGPLv3+.
msgid ""
msgstr ""
@@ -9,7 +9,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"POT-Creation-Date: 2024-11-28T19:12:52+00:00\n"
+"POT-Creation-Date: 2025-02-27T19:48:49+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"X-Generator: WP-CLI 2.11.0\n"
"X-Domain: TouchPoint-WP\n"
@@ -58,7 +58,7 @@ msgid "Slug"
msgstr ""
#: src/templates/admin/invKoForm.php:48
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:977
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:978
msgid "Divisions to Import"
msgstr ""
@@ -71,7 +71,7 @@ msgstr ""
#: src/templates/admin/invKoForm.php:165
#: src/templates/admin/invKoForm.php:318
#: src/templates/parts/involvement-nearby-list.php:2
-#: src/TouchPoint-WP/Meeting.php:746
+#: src/TouchPoint-WP/Meeting.php:758
#: src/TouchPoint-WP/Rsvp.php:75
#: assets/js/base-defer.js:192
#: assets/js/base-defer.js:1133
@@ -183,13 +183,13 @@ msgid "Gender"
msgstr ""
#: src/templates/admin/invKoForm.php:237
-#: src/TouchPoint-WP/Involvement.php:1853
+#: src/TouchPoint-WP/Involvement.php:1856
#: src/TouchPoint-WP/Taxonomies.php:750
msgid "Weekday"
msgstr ""
#: src/templates/admin/invKoForm.php:241
-#: src/TouchPoint-WP/Involvement.php:1879
+#: src/TouchPoint-WP/Involvement.php:1882
#: src/TouchPoint-WP/Taxonomies.php:808
msgid "Time of Day"
msgstr ""
@@ -277,14 +277,14 @@ msgid "This %s has been Cancelled."
msgstr ""
#: src/templates/meeting-archive.php:27
-#: src/TouchPoint-WP/Meeting.php:269
+#: src/TouchPoint-WP/Meeting.php:281
msgctxt "What Meetings should be called, plural."
msgid "Events"
msgstr ""
#. translators: %s will be the plural post type (e.g. Small Groups)
#: src/templates/parts/involvement-list-none.php:16
-#: src/TouchPoint-WP/Involvement.php:2099
+#: src/TouchPoint-WP/Involvement.php:2102
msgid "No %s Found."
msgstr ""
@@ -295,7 +295,7 @@ msgstr ""
#. translators: number of miles
#: src/templates/parts/involvement-nearby-list.php:10
-#: src/TouchPoint-WP/Involvement.php:3577
+#: src/TouchPoint-WP/Involvement.php:3592
msgctxt "miles. Unit is appended to a number. %2.1f is the number, so %2.1fmi looks like '12.3mi'"
msgid "%2.1fmi"
msgstr ""
@@ -318,21 +318,21 @@ msgid "Session could not be validated."
msgstr ""
#. Translators: %s is the singular name of the of a Meeting, such as "Event".
-#: src/TouchPoint-WP/CalendarGrid.php:189
+#: src/TouchPoint-WP/CalendarGrid.php:199
msgid "%s is cancelled."
msgstr ""
#. Translators: %s is the plural name of the of the Meetings, such as "Events".
-#: src/TouchPoint-WP/CalendarGrid.php:269
+#: src/TouchPoint-WP/CalendarGrid.php:279
msgid "There are no %s published for this month."
msgstr ""
-#: src/TouchPoint-WP/EventsCalendar.php:77
+#: src/TouchPoint-WP/EventsCalendar.php:79
msgid "Recurring"
msgstr ""
-#: src/TouchPoint-WP/EventsCalendar.php:80
-#: src/TouchPoint-WP/EventsCalendar.php:297
+#: src/TouchPoint-WP/EventsCalendar.php:82
+#: src/TouchPoint-WP/EventsCalendar.php:299
msgid "Multi-Day"
msgstr ""
@@ -340,27 +340,27 @@ msgstr ""
msgid "Creating an Involvement object from an object without a post_id is not yet supported."
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:495
+#: src/TouchPoint-WP/Involvement.php:498
msgid "Currently Full"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:500
+#: src/TouchPoint-WP/Involvement.php:503
msgid "Currently Closed"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:507
+#: src/TouchPoint-WP/Involvement.php:510
msgid "Registration Not Open Yet"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:513
+#: src/TouchPoint-WP/Involvement.php:516
msgid "Registration Closed"
msgstr ""
#. translators: %1$s is the date(s), %2$s is the time(s).
-#: src/TouchPoint-WP/Involvement.php:995
-#: src/TouchPoint-WP/Involvement.php:1027
-#: src/TouchPoint-WP/Involvement.php:1120
-#: src/TouchPoint-WP/Involvement.php:1144
+#: src/TouchPoint-WP/Involvement.php:998
+#: src/TouchPoint-WP/Involvement.php:1030
+#: src/TouchPoint-WP/Involvement.php:1123
+#: src/TouchPoint-WP/Involvement.php:1147
#: src/TouchPoint-WP/TouchPointWP_Widget.php:71
#: src/TouchPoint-WP/Utilities/DateFormats.php:288
#: src/TouchPoint-WP/Utilities/DateFormats.php:352
@@ -368,236 +368,236 @@ msgid "%1$s at %2$s"
msgstr ""
#. translators: "Mon All Day" or "Sundays All Day"
-#: src/TouchPoint-WP/Involvement.php:998
-#: src/TouchPoint-WP/Involvement.php:1021
+#: src/TouchPoint-WP/Involvement.php:1001
+#: src/TouchPoint-WP/Involvement.php:1024
msgid "%1$s All Day"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1022
+#: src/TouchPoint-WP/Involvement.php:1025
msgid "All Day"
msgstr ""
#. translators: {start date} through {end date} e.g. February 14 through August 12
-#: src/TouchPoint-WP/Involvement.php:1036
+#: src/TouchPoint-WP/Involvement.php:1039
msgid "%1$s through %2$s"
msgstr ""
#. translators: {schedule}, {start date} through {end date} e.g. Sundays at 11am, February 14 through August 12
-#: src/TouchPoint-WP/Involvement.php:1045
+#: src/TouchPoint-WP/Involvement.php:1048
msgid "%1$s, %2$s through %3$s"
msgstr ""
#. translators: Starts {start date} e.g. Starts September 15
-#: src/TouchPoint-WP/Involvement.php:1054
+#: src/TouchPoint-WP/Involvement.php:1057
msgid "Starts %1$s"
msgstr ""
#. translators: {schedule}, starting {start date} e.g. Sundays at 11am, starting February 14
-#: src/TouchPoint-WP/Involvement.php:1062
+#: src/TouchPoint-WP/Involvement.php:1065
msgid "%1$s, starting %2$s"
msgstr ""
#. translators: Through {end date} e.g. Through September 15
-#: src/TouchPoint-WP/Involvement.php:1070
+#: src/TouchPoint-WP/Involvement.php:1073
msgid "Through %1$s"
msgstr ""
#. translators: {schedule}, through {end date} e.g. Sundays at 11am, through February 14
-#: src/TouchPoint-WP/Involvement.php:1078
+#: src/TouchPoint-WP/Involvement.php:1081
msgid "%1$s, through %2$s"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1728
-#: src/TouchPoint-WP/Partner.php:814
+#: src/TouchPoint-WP/Involvement.php:1731
+#: src/TouchPoint-WP/Partner.php:825
msgid "Any"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1785
+#: src/TouchPoint-WP/Involvement.php:1788
msgid "Genders"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1828
+#: src/TouchPoint-WP/Involvement.php:1831
msgid "Language"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1901
+#: src/TouchPoint-WP/Involvement.php:1904
#: src/TouchPoint-WP/Taxonomies.php:869
msgid "Marital Status"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1902
+#: src/TouchPoint-WP/Involvement.php:1905
msgctxt "Marital status for a group of people"
msgid "Mostly Single"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1903
+#: src/TouchPoint-WP/Involvement.php:1906
msgctxt "Marital status for a group of people"
msgid "Mostly Married"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1914
+#: src/TouchPoint-WP/Involvement.php:1917
msgid "Age"
msgstr ""
#. translators: %s is for the user-provided term for the items on the map (e.g. Small Group or Partner)
-#: src/TouchPoint-WP/Involvement.php:1936
-#: src/TouchPoint-WP/Partner.php:838
+#: src/TouchPoint-WP/Involvement.php:1939
+#: src/TouchPoint-WP/Partner.php:849
msgid "The %s listed are only those shown on the map."
msgstr ""
#. translators: %s is the link to "reset the map"
-#: src/TouchPoint-WP/Involvement.php:1944
-#: src/TouchPoint-WP/Partner.php:854
+#: src/TouchPoint-WP/Involvement.php:1947
+#: src/TouchPoint-WP/Partner.php:865
msgid "Zoom out or %s to see more."
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:1947
-#: src/TouchPoint-WP/Partner.php:857
+#: src/TouchPoint-WP/Involvement.php:1950
+#: src/TouchPoint-WP/Partner.php:868
msgctxt "Zoom out or reset the map to see more."
msgid "reset the map"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:2040
+#: src/TouchPoint-WP/Involvement.php:2043
msgid "This involvement type doesn't exist."
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:2050
+#: src/TouchPoint-WP/Involvement.php:2053
msgid "This involvement type doesn't have geographic locations enabled."
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:2069
+#: src/TouchPoint-WP/Involvement.php:2072
msgid "Could not locate."
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3556
+#: src/TouchPoint-WP/Involvement.php:3571
msgid "Men Only"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3559
+#: src/TouchPoint-WP/Involvement.php:3574
msgid "Women Only"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3636
+#: src/TouchPoint-WP/Involvement.php:3651
msgid "Contact Leaders"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3653
-#: src/TouchPoint-WP/Partner.php:1318
+#: src/TouchPoint-WP/Involvement.php:3668
+#: src/TouchPoint-WP/Partner.php:1329
msgid "Show on Map"
msgstr ""
#. Translators: %s is the system name. "TouchPoint" by default.
-#: src/TouchPoint-WP/Involvement.php:3665
+#: src/TouchPoint-WP/Involvement.php:3680
msgid "Involvement in %s"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3706
-#: src/TouchPoint-WP/Involvement.php:3765
+#: src/TouchPoint-WP/Involvement.php:3721
+#: src/TouchPoint-WP/Involvement.php:3780
msgid "Register"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3712
+#: src/TouchPoint-WP/Involvement.php:3727
msgid "Create Account"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3716
+#: src/TouchPoint-WP/Involvement.php:3731
msgid "Schedule"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3721
+#: src/TouchPoint-WP/Involvement.php:3736
msgid "Give"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3724
+#: src/TouchPoint-WP/Involvement.php:3739
msgid "Manage Subscriptions"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3727
+#: src/TouchPoint-WP/Involvement.php:3742
msgid "Record Attendance"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3730
+#: src/TouchPoint-WP/Involvement.php:3745
msgid "Get Tickets"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3756
+#: src/TouchPoint-WP/Involvement.php:3771
#: assets/js/base-defer.js:1001
msgid "Join"
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3861
-#: src/TouchPoint-WP/Involvement.php:3964
+#: src/TouchPoint-WP/Involvement.php:3888
+#: src/TouchPoint-WP/Involvement.php:3993
msgid "Invalid Post Type."
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3941
+#: src/TouchPoint-WP/Involvement.php:3970
#: src/TouchPoint-WP/Person.php:1850
msgid "Contact Blocked for Spam."
msgstr ""
-#: src/TouchPoint-WP/Involvement.php:3951
+#: src/TouchPoint-WP/Involvement.php:3980
#: src/TouchPoint-WP/Person.php:1833
msgid "Contact Prohibited."
msgstr ""
-#: src/TouchPoint-WP/Meeting.php:94
+#: src/TouchPoint-WP/Meeting.php:96
msgid "Creating a Meeting object from an object without a post_id is not yet supported."
msgstr ""
-#: src/TouchPoint-WP/Meeting.php:270
+#: src/TouchPoint-WP/Meeting.php:282
msgctxt "What Meetings should be called, singular."
msgid "Event"
msgstr ""
-#: src/TouchPoint-WP/Meeting.php:422
+#: src/TouchPoint-WP/Meeting.php:434
msgid "In the Past"
msgstr ""
#. Translators: %s is the system name. "TouchPoint" by default.
-#: src/TouchPoint-WP/Meeting.php:494
+#: src/TouchPoint-WP/Meeting.php:506
msgid "Meeting in %s"
msgstr ""
-#: src/TouchPoint-WP/Meeting.php:549
+#: src/TouchPoint-WP/Meeting.php:561
msgid "Cancelled"
msgstr ""
-#: src/TouchPoint-WP/Meeting.php:550
+#: src/TouchPoint-WP/Meeting.php:562
msgid "Scheduled"
msgstr ""
-#: src/TouchPoint-WP/Meeting.php:551
+#: src/TouchPoint-WP/Meeting.php:563
msgctxt "Event Status is not a recognized value."
msgid "Unknown"
msgstr ""
-#: src/TouchPoint-WP/Meeting.php:672
-#: src/TouchPoint-WP/TouchPointWP.php:1033
+#: src/TouchPoint-WP/Meeting.php:684
+#: src/TouchPoint-WP/TouchPointWP.php:1037
msgid "Only GET requests are allowed."
msgstr ""
-#: src/TouchPoint-WP/Meeting.php:700
-#: src/TouchPoint-WP/TouchPointWP.php:362
+#: src/TouchPoint-WP/Meeting.php:712
+#: src/TouchPoint-WP/TouchPointWP.php:363
msgid "Only POST requests are allowed."
msgstr ""
-#: src/TouchPoint-WP/Meeting.php:710
-#: src/TouchPoint-WP/TouchPointWP.php:371
+#: src/TouchPoint-WP/Meeting.php:722
+#: src/TouchPoint-WP/TouchPointWP.php:372
msgid "Invalid data provided."
msgstr ""
-#: src/TouchPoint-WP/Meeting.php:745
-#: src/TouchPoint-WP/Meeting.php:766
+#: src/TouchPoint-WP/Meeting.php:757
+#: src/TouchPoint-WP/Meeting.php:778
#: src/TouchPoint-WP/Rsvp.php:80
msgid "RSVP"
msgstr ""
#. translators: %s is for the user-provided "Global Partner" and "Secure Partner" terms.
-#: src/TouchPoint-WP/Partner.php:845
+#: src/TouchPoint-WP/Partner.php:856
msgid "The %1$s listed are only those shown on the map, as well as all %2$s."
msgstr ""
-#: src/TouchPoint-WP/Partner.php:1259
+#: src/TouchPoint-WP/Partner.php:1270
msgid "Not Shown on Map"
msgstr ""
@@ -637,16 +637,16 @@ msgstr ""
msgid "You may need to sign in."
msgstr ""
-#: src/TouchPoint-WP/Report.php:177
+#: src/TouchPoint-WP/Report.php:181
msgid "TouchPoint Reports"
msgstr ""
-#: src/TouchPoint-WP/Report.php:178
+#: src/TouchPoint-WP/Report.php:182
msgid "TouchPoint Report"
msgstr ""
#. translators: Last updated date/time for a report. %1$s is the date. %2$s is the time.
-#: src/TouchPoint-WP/Report.php:417
+#: src/TouchPoint-WP/Report.php:435
msgid "Updated on %1$s at %2$s"
msgstr ""
@@ -741,679 +741,679 @@ msgstr ""
msgid "Classify Partners by category chosen in settings."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:266
+#: src/TouchPoint-WP/TouchPointWP.php:267
msgid "Every 15 minutes"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2031
+#: src/TouchPoint-WP/TouchPointWP.php:2047
msgid "Unknown Type"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2088
+#: src/TouchPoint-WP/TouchPointWP.php:2104
msgid "Your Searches"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2091
+#: src/TouchPoint-WP/TouchPointWP.php:2107
msgid "Public Searches"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2094
+#: src/TouchPoint-WP/TouchPointWP.php:2110
msgid "Status Flags"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2099
-#: src/TouchPoint-WP/TouchPointWP.php:2100
+#: src/TouchPoint-WP/TouchPointWP.php:2115
+#: src/TouchPoint-WP/TouchPointWP.php:2116
msgid "Current Value"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2217
-#: src/TouchPoint-WP/TouchPointWP.php:2253
+#: src/TouchPoint-WP/TouchPointWP.php:2233
+#: src/TouchPoint-WP/TouchPointWP.php:2269
msgid "Invalid or incomplete API Settings."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2267
-#: src/TouchPoint-WP/TouchPointWP.php:2311
+#: src/TouchPoint-WP/TouchPointWP.php:2283
+#: src/TouchPoint-WP/TouchPointWP.php:2327
msgid "Host appears to be missing from TouchPoint-WP configuration."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2384
+#: src/TouchPoint-WP/TouchPointWP.php:2400
msgid "The scripts on TouchPoint that interact with this plugin are out-of-date, and an automatic update failed."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP.php:2443
+#: src/TouchPoint-WP/TouchPointWP.php:2459
msgid "People Query Failed"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:257
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:258
msgid "Basic Settings"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:258
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:259
msgid "Connect to TouchPoint and choose which features you wish to use."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:262
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:263
msgid "Enable Authentication"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:263
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:264
msgid "Allow TouchPoint users to sign into this website with TouchPoint."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:274
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:275
msgid "Enable RSVP Tool"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:275
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:276
msgid "Add a crazy-simple RSVP button to WordPress event pages."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:282
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:283
msgid "Enable Involvements"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:283
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:284
msgid "Load Involvements from TouchPoint for involvement listings and entries native in your website."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:293
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:294
msgid "Enable Meeting Calendar"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:294
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:295
msgid "Load Meetings from TouchPoint for a calendar, native in your website."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:304
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:305
msgid "Enable Public People Lists"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:305
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:306
msgid "Import public people listings from TouchPoint (e.g. staff or elders)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:315
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:316
msgid "Enable Global Partner Listings"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:316
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:317
msgid "Import ministry partners from TouchPoint to list publicly."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:326
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:327
msgid "Enable Campuses"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:327
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:328
msgid "Import campuses as a taxonomy. (You probably want to do this if you're multi-campus.)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:337
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:338
msgid "Display Name"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:338
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:339
msgid "What your church calls your TouchPoint database."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:348
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:349
msgid "TouchPoint Host Name"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:349
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:350
msgid "The domain for your TouchPoint database, without the https or any slashes."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:361
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:362
msgid "Custom Mobile App Deeplink Host Name"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:362
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:363
msgid "The domain for your mobile app deeplinks, without the https or any slashes. If you aren't using the custom mobile app, leave this blank."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:373
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:374
msgid "TouchPoint API Username"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:374
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:375
msgid "The username of a user account in TouchPoint with API permissions. It is strongly recommended that you create a separate person/user for this purpose, rather than using a staff member's account."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:385
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:386
msgid "TouchPoint API User Password"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:386
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:387
msgid "The password of a user account in TouchPoint with API permissions."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:398
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:399
msgid "TouchPoint API Script Name"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:399
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:400
msgid "The name of the Python script loaded into TouchPoint. Don't change this unless you know what you're doing."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:410
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:411
msgid "Google Maps Javascript API Key"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:411
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:412
msgid "Required for embedding maps."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:422
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:423
msgid "Google Maps Geocoding API Key"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:423
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:424
msgid "Optional. Allows for reverse geocoding of user locations."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:433
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:434
msgid "ipapi.co API Key"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:434
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:435
msgid "Optional. Allows for geolocation of user IP addresses. This generally will work without a key, but may be rate limited."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:444
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:445
msgid "List Site in Directory"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:445
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:446
msgid "Allow the TouchPoint-WP developers to publicly list your site/church as using TouchPoint-WP. Helps other prospective churches see what can be done by combining WordPress with the best ChMS on the planet. Only applies if this site is accessible on the public internet."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:463
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:468
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:464
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:469
msgid "Generate Scripts"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:466
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:467
msgid "Once your settings on this page are set and saved, use this tool to generate the scripts needed for TouchPoint in a convenient installation package."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:467
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:468
msgid "Upload the package to {tpName} here"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:484
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:485
msgid "People"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:485
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:486
msgid "Manage how people are synchronized between TouchPoint and WordPress."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:489
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:490
msgid "Contact Keywords"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:490
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:491
msgid "These keywords will be used when someone clicks the \"Contact\" button on a Person's listing or profile."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:501
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:502
msgid "Extra Value for WordPress User ID"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:502
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:503
msgid "The name of the extra value to use for the WordPress User ID. If you are using multiple WordPress instances with one TouchPoint database, you will need these values to be unique between WordPress instances. In most cases, the default is fine."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:512
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:513
msgid "Extra Value: Biography"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:513
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:514
msgid "Import a Bio from a Person Extra Value field. Can be an HTML or Text Extra Value. This will overwrite any values set by WordPress. Leave blank to not import."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:523
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:761
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:524
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:762
msgid "Extra Values to Import"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:524
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:525
msgid "Import People Extra Value fields as User Meta data."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:540
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:541
msgid "Authentication"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:541
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:542
msgid "Allow users to log into WordPress using TouchPoint."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:545
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:546
msgid "Make TouchPoint the default authentication method."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:546
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:547
msgid "By checking this box, the TouchPoint login page will become the default. To prevent the redirect and reach the standard WordPress login page, add 'tp_no_redirect' as a URL parameter."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:555
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:556
msgid "Enable Auto-Provisioning"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:556
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:557
msgid "Automatically create WordPress users, if needed, to match authenticated TouchPoint users."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:565
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:566
msgid "Change 'Edit Profile' links"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:566
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:567
msgid "\"Edit Profile\" links will take the user to their TouchPoint profile, instead of their WordPress profile."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:575
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:576
msgid "Enable full logout"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:576
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:577
msgid "Logout of TouchPoint when logging out of WordPress."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:582
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:583
msgid "Prevent Subscriber Admin Bar"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:583
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:584
msgid "By enabling this option, users who can't edit anything won't see the Admin bar."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:597
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:598
msgid "Involvements"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:598
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:599
msgid "Import Involvements from TouchPoint to list them on your website, for Small Groups, Classes, and more. Select the division(s) that immediately correspond to the type of Involvement you want to list. For example, if you want a Small Group list and have a Small Group Division, only select the Small Group Division. If you want Involvements to be filterable by additional Divisions, select those Divisions on the Divisions tab, not here."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:603
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:604
msgid "Involvement Post Types"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:633
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:634
msgid "Global Partners"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:634
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:635
msgid "Manage how global partners are imported from TouchPoint for listing on WordPress. Partners are grouped by family, and content is provided through Family Extra Values. This works for both People and Business records."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:638
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:639
msgid "Global Partner Name (Plural)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:639
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:640
msgid "What you call Global Partners at your church"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:649
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:650
msgid "Global Partner Name (Singular)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:650
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:651
msgid "What you call a Global Partner at your church"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:660
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:661
msgid "Global Partner Name for Secure Places (Plural)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:661
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:662
msgid "What you call Secure Global Partners at your church"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:671
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:672
msgid "Global Partner Name for Secure Places (Singular)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:672
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:673
msgid "What you call a Secure Global Partner at your church"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:682
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:683
msgid "Global Partner Slug"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:683
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:684
msgid "The root path for Global Partner posts"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:695
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:696
msgid "Saved Search"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:696
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:697
msgid "Anyone who is included in this saved search will be included in the listing."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:706
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:707
msgid "Extra Value: Description"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:707
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:708
msgid "Import a description from a Family Extra Value field. Can be an HTML or Text Extra Value. This becomes the body of the Global Partner post."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:717
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:718
msgid "Extra Value: Summary"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:718
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:719
msgid "Optional. Import a short description from a Family Extra Value field. Can be an HTML or Text Extra Value. If not provided, the full bio will be truncated."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:728
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:729
msgid "Latitude Override"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:729
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:730
msgid "Designate a text Family Extra Value that will contain a latitude that overrides any locations on the partner's profile for the partner map. Both latitude and longitude must be provided for an override to take place."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:739
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:740
msgid "Longitude Override"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:740
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:741
msgid "Designate a text Family Extra Value that will contain a longitude that overrides any locations on the partner's profile for the partner map. Both latitude and longitude must be provided for an override to take place."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:750
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:751
msgid "Public Location"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:751
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:752
msgid "Designate a text Family Extra Value that will contain the partner's location, as you want listed publicly. For partners who have DecoupleLocation enabled, this field will be associated with the map point, not the list entry."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:762
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:763
msgid "Import Family Extra Value fields as Meta data on the partner's post"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:773
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:774
msgid "Primary Taxonomy"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:774
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:775
msgid "Import a Family Extra Value as the primary means by which partners are organized."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:791
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:792
msgid "Events Calendar plugin by Modern Tribe"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:795
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:796
msgid "TouchPoint Meetings"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:801
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:802
msgid "App 2.0 Calendar"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:802
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:803
msgid "Integrate Custom Mobile app version 2.0 with The Events Calendar from Modern Tribe."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:806
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:807
msgid "Events Provider"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:807
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:808
msgid "The source of events for version 2.0 of the Custom Mobile App."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:817
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:818
msgid "Events for Custom Mobile App"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:820
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:821
msgid "To use your Events Calendar events in the Custom mobile app, set the Provider to Wordpress Plugin - Modern Tribe (regardless of which provider you're using above) and use this url:"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:822
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:823
msgid "Preview"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:837
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:838
msgid "Use Standardizing Stylesheet"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:838
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:839
msgid "Inserts some basic CSS into the events feed to clean up display"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:850
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:851
msgid "Meeting Calendars"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:851
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:852
msgid "Import Meetings from TouchPoint to a calendar on your website."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:855
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:856
msgid "Meeting Name (Plural)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:856
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:857
msgid "What you call Meetings at your church"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:861
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:863
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:862
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:864
msgid "Meetings"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:861
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:863
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:862
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:864
msgid "Events"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:867
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:868
msgid "Meeting Name (Singular)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:868
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:869
msgid "What you call a Meeting at your church"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:873
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:875
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:874
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:876
msgid "Meeting"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:873
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:875
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:874
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:876
msgid "Event"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:879
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:880
msgid "Meetings Slug"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:880
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:881
msgid "The root path for Meetings"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:892
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:893
msgid "Days of Future"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:893
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:894
msgid "Meetings more than this many days in the future will not be imported."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:905
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:906
msgid "Archive After Days"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:906
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:907
msgid "Meetings more than this many days in the past will no longer update from TouchPoint, allowing you to keep some historical event information on the calendar for reference, even if you reuse and update the information in the Involvement."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:918
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:919
msgid "Days of History"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:919
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:920
msgid "Meetings will be kept on the calendar until the event is this many days in the past. Once an event is older than this, it'll be deleted."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:935
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:936
msgid "Divisions"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:936
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:937
msgid "Import Divisions from TouchPoint to your website as a taxonomy. These are used to classify users and involvements."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:940
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:941
msgid "Division Name (Plural)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:941
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:942
msgid "What you call Divisions at your church"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:952
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:953
msgid "Division Name (Singular)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:953
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:954
msgid "What you call a Division at your church"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:964
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:965
msgid "Division Slug"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:965
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:966
msgid "The root path for the Division Taxonomy"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:978
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:979
msgid "These Divisions will be imported for the taxonomy"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:989
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1120
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:990
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1121
msgid "Post Types"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:990
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:991
msgid "Select post types which should have Divisions available as a native taxonomy."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1004
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1010
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1005
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1011
msgid "Locations"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1005
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1006
msgid "Locations are physical places, probably campuses. None are required, but they can help present geographic information clearly."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1029
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1030
msgid "Campuses"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1030
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1031
msgid "Import Campuses from TouchPoint to your website as a taxonomy. These are used to classify users and involvements."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1037
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1038
msgid "Campus Name (Plural)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1038
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1039
msgid "What you call Campuses at your church"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1049
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1050
msgid "Campus Name (Singular)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1050
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1051
msgid "What you call a Campus at your church"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1061
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1062
msgid "Campus Slug"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1062
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1063
msgid "The root path for the Campus Taxonomy"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1078
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1079
msgid "Resident Codes"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1079
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1080
msgid "Import Resident Codes from TouchPoint to your website as a taxonomy. These are used to classify users and involvements that have locations."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1083
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1084
msgid "Resident Code Name (Plural)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1084
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1085
msgid "What you call Resident Codes at your church"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1095
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1096
msgid "Resident Code Name (Singular)"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1096
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1097
msgid "What you call a Resident Code at your church"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1107
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1108
msgid "Resident Code Slug"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1108
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1109
msgid "The root path for the Resident Code Taxonomy"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1121
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1122
msgid "Select post types which should have Resident Codes available as a native taxonomy."
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1284
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1287
msgid "password saved"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1338
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1339
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1341
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1342
msgid "TouchPoint-WP"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1387
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1390
msgid "Settings"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1627
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1630
msgid "Script Update Failed"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1749
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1752
msgid "TouchPoint-WP Settings"
msgstr ""
-#: src/TouchPoint-WP/TouchPointWP_Settings.php:1800
+#: src/TouchPoint-WP/TouchPointWP_Settings.php:1803
msgid "Save Settings"
msgstr ""
@@ -1539,7 +1539,7 @@ msgctxt "list of items, and *others*"
msgid "others"
msgstr ""
-#: src/TouchPoint-WP/Utilities.php:497
+#: src/TouchPoint-WP/Utilities.php:500
msgid "Expand"
msgstr ""
From 6d8e35b4ebf17363aa46746b0b386e3a46471cc1 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Thu, 27 Feb 2025 14:59:54 -0500
Subject: [PATCH 246/423] Correcting a shortcode typo
---
src/TouchPoint-WP/Meeting.php | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/src/TouchPoint-WP/Meeting.php b/src/TouchPoint-WP/Meeting.php
index 8551f827..77bc1ecc 100644
--- a/src/TouchPoint-WP/Meeting.php
+++ b/src/TouchPoint-WP/Meeting.php
@@ -43,7 +43,7 @@ class Meeting extends PostTypeCapable implements api, module, hasGeo, hierarchic
public const MEETING_STATUS_META_KEY = TouchPointWP::SETTINGS_PREFIX . "status";
public const MEETING_INV_ID_META_KEY = TouchPointWP::SETTINGS_PREFIX . "mtgInvId";
- public const SHORTCODE_GRID = TouchPointWP::SHORTCODE_PREFIX . "calendar";
+ public const SHORTCODE_GRID = TouchPointWP::SHORTCODE_PREFIX . "Calendar";
public const STATUS_CANCELLED = "cancelled";
public const STATUS_SCHEDULED = "scheduled";
@@ -823,6 +823,10 @@ public static function load(): bool
add_action(TouchPointWP::INIT_ACTION_HOOK, [self::class, 'init']);
+ //////////////////
+ /// Shortcodes ///
+ //////////////////
+
if ( ! shortcode_exists(self::SHORTCODE_GRID)) {
add_shortcode(self::SHORTCODE_GRID, [CalendarGrid::class, "shortcode"]);
}
From 1c243e2a1a17eedf6bd29e2f145ec0acb3dc2869 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Thu, 27 Feb 2025 19:16:07 -0500
Subject: [PATCH 247/423] Correct a few issues with WordPress menu Customizer
---
src/TouchPoint-WP/Involvement.php | 12 +++++++++++-
src/TouchPoint-WP/Partner.php | 13 ++++++++++++-
src/TouchPoint-WP/Report.php | 12 +++++++++++-
src/TouchPoint-WP/Taxonomies.php | 2 +-
4 files changed, 35 insertions(+), 4 deletions(-)
diff --git a/src/TouchPoint-WP/Involvement.php b/src/TouchPoint-WP/Involvement.php
index 8fbadf58..3cfb3ae2 100644
--- a/src/TouchPoint-WP/Involvement.php
+++ b/src/TouchPoint-WP/Involvement.php
@@ -297,7 +297,17 @@ public static function init(): void
],
'query_var' => $type->slug,
'can_export' => false,
- 'delete_with_user' => false
+ 'delete_with_user' => false,
+ 'capability_type' => 'post',
+ 'capabilities' => [
+ 'create_posts' => 'do_not_allow', // Disable creating new posts
+ 'edit_posts' => 'do_not_allow', // Disable editing posts
+ 'edit_others_posts' => 'do_not_allow', // Disable editing others' posts
+ 'delete_posts' => 'do_not_allow', // Disable deleting posts
+ 'delete_others_posts' => 'do_not_allow', // Disable deleting others' posts
+ 'publish_posts' => 'do_not_allow', // Disable publishing posts
+ ],
+ 'map_meta_cap' => true, // Ensure users can still view posts
]
);
}
diff --git a/src/TouchPoint-WP/Partner.php b/src/TouchPoint-WP/Partner.php
index b395d6c5..30233d4b 100644
--- a/src/TouchPoint-WP/Partner.php
+++ b/src/TouchPoint-WP/Partner.php
@@ -233,7 +233,18 @@ public static function init(): void
],
'query_var' => TouchPointWP::instance()->settings->global_slug,
'can_export' => false,
- 'delete_with_user' => false
+ 'delete_with_user' => false,
+ 'capability_type' => 'post',
+ 'capabilities' => [
+ 'create_posts' => 'do_not_allow', // Disable creating new posts
+ 'edit_posts' => 'do_not_allow', // Disable editing posts
+ 'edit_others_posts' => 'do_not_allow', // Disable editing others' posts
+ 'delete_posts' => 'do_not_allow', // Disable deleting posts
+ 'delete_others_posts' => 'do_not_allow', // Disable deleting others' posts
+ 'publish_posts' => 'do_not_allow', // Disable publishing posts
+ ],
+ 'map_meta_cap' => true, // Ensure users can still view posts
+
]
);
diff --git a/src/TouchPoint-WP/Report.php b/src/TouchPoint-WP/Report.php
index 8a053d00..84c88cf8 100644
--- a/src/TouchPoint-WP/Report.php
+++ b/src/TouchPoint-WP/Report.php
@@ -190,7 +190,17 @@ public static function init(): void
'has_archive' => false,
'rewrite' => false,
'can_export' => false,
- 'delete_with_user' => false
+ 'delete_with_user' => false,
+ 'capability_type' => 'post',
+ 'capabilities' => [
+ 'create_posts' => 'do_not_allow', // Disable creating new posts
+ 'edit_posts' => 'do_not_allow', // Disable editing posts
+ 'edit_others_posts' => 'do_not_allow', // Disable editing others' posts
+ 'delete_posts' => 'do_not_allow', // Disable deleting posts
+ 'delete_others_posts' => 'do_not_allow', // Disable deleting others' posts
+ 'publish_posts' => 'do_not_allow', // Disable publishing posts
+ ],
+ 'map_meta_cap' => true, // Ensure users can still view posts
]
);
}
diff --git a/src/TouchPoint-WP/Taxonomies.php b/src/TouchPoint-WP/Taxonomies.php
index a0569bc5..63184c4a 100644
--- a/src/TouchPoint-WP/Taxonomies.php
+++ b/src/TouchPoint-WP/Taxonomies.php
@@ -26,7 +26,7 @@ abstract class Taxonomies
public const TAX_GP_CATEGORY = TouchPointWP::HOOK_PREFIX . "partner_category";
public const TAX_WEEKDAY = TouchPointWP::HOOK_PREFIX . "weekday";
public const TAX_TENSE_FUTURE = "future";
- public const TAX_DAYTIME = TouchPointWP::HOOK_PREFIX . "timeOfDay";
+ public const TAX_DAYTIME = TouchPointWP::HOOK_PREFIX . "timeofday";
public const TAX_TENSE = TouchPointWP::HOOK_PREFIX . "tense";
public const TAXMETA_LOOKUP_ID = TouchPointWP::HOOK_PREFIX . "lookup_id";
From f65b3205ee37f8a2f7e63ed8be18d7bcf43fc4b5 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Thu, 27 Feb 2025 19:36:53 -0500
Subject: [PATCH 248/423] minor spacing
---
src/TouchPoint-WP/Involvement.php | 2 +-
src/TouchPoint-WP/Partner.php | 3 +--
src/TouchPoint-WP/Report.php | 2 +-
3 files changed, 3 insertions(+), 4 deletions(-)
diff --git a/src/TouchPoint-WP/Involvement.php b/src/TouchPoint-WP/Involvement.php
index 3cfb3ae2..6a0677d7 100644
--- a/src/TouchPoint-WP/Involvement.php
+++ b/src/TouchPoint-WP/Involvement.php
@@ -301,7 +301,7 @@ public static function init(): void
'capability_type' => 'post',
'capabilities' => [
'create_posts' => 'do_not_allow', // Disable creating new posts
- 'edit_posts' => 'do_not_allow', // Disable editing posts
+ 'edit_posts' => 'do_not_allow', // Disable editing posts
'edit_others_posts' => 'do_not_allow', // Disable editing others' posts
'delete_posts' => 'do_not_allow', // Disable deleting posts
'delete_others_posts' => 'do_not_allow', // Disable deleting others' posts
diff --git a/src/TouchPoint-WP/Partner.php b/src/TouchPoint-WP/Partner.php
index 30233d4b..17df2f6c 100644
--- a/src/TouchPoint-WP/Partner.php
+++ b/src/TouchPoint-WP/Partner.php
@@ -237,14 +237,13 @@ public static function init(): void
'capability_type' => 'post',
'capabilities' => [
'create_posts' => 'do_not_allow', // Disable creating new posts
- 'edit_posts' => 'do_not_allow', // Disable editing posts
+ 'edit_posts' => 'do_not_allow', // Disable editing posts
'edit_others_posts' => 'do_not_allow', // Disable editing others' posts
'delete_posts' => 'do_not_allow', // Disable deleting posts
'delete_others_posts' => 'do_not_allow', // Disable deleting others' posts
'publish_posts' => 'do_not_allow', // Disable publishing posts
],
'map_meta_cap' => true, // Ensure users can still view posts
-
]
);
diff --git a/src/TouchPoint-WP/Report.php b/src/TouchPoint-WP/Report.php
index 84c88cf8..fbac7e83 100644
--- a/src/TouchPoint-WP/Report.php
+++ b/src/TouchPoint-WP/Report.php
@@ -194,7 +194,7 @@ public static function init(): void
'capability_type' => 'post',
'capabilities' => [
'create_posts' => 'do_not_allow', // Disable creating new posts
- 'edit_posts' => 'do_not_allow', // Disable editing posts
+ 'edit_posts' => 'do_not_allow', // Disable editing posts
'edit_others_posts' => 'do_not_allow', // Disable editing others' posts
'delete_posts' => 'do_not_allow', // Disable deleting posts
'delete_others_posts' => 'do_not_allow', // Disable deleting others' posts
From efa2a2e7ca21b4fbdf1ffd4c99d7f83b0c65b423 Mon Sep 17 00:00:00 2001
From: "James K."
Date: Fri, 28 Feb 2025 18:35:14 -0500
Subject: [PATCH 249/423] Resolving a (previously unknown) issue with
defer/async script tags.
---
src/TouchPoint-WP/TouchPointWP.php | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/TouchPoint-WP/TouchPointWP.php b/src/TouchPoint-WP/TouchPointWP.php
index 2b2394f7..98a85cac 100644
--- a/src/TouchPoint-WP/TouchPointWP.php
+++ b/src/TouchPoint-WP/TouchPointWP.php
@@ -1012,12 +1012,13 @@ public static function requireStyle(string $name = null): void
*/
public function filterByTag(?string $tag, ?string $handle): string
{
- if (str_contains($tag, 'async') &&
- strpos($handle, '-async') > 0) {
+ if (!str_contains($tag, ' async') &&
+ strpos($handle, '-async') > 0
+ ) {
$tag = str_replace(' src=', ' async="async" src=', $tag);
}
- if (str_contains($tag, 'defer') &&
- strpos($handle, '-defer') > 0
+ if (!str_contains($tag, ' defer') &&
+ strpos($handle, '-defer') > 0
) {
$tag = str_replace('