From 9fff5d53cfa7956149549b62e19e0abf286f326f Mon Sep 17 00:00:00 2001 From: Garry Yeatman Date: Thu, 30 May 2019 11:36:45 +1200 Subject: [PATCH 1/9] Adding in analytics code to ubiquity --- README.md | 4 ++++ src/Extensions/UbiquitySiteConfigExtension.php | 9 +++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 97f62a6..130df55 100755 --- a/README.md +++ b/README.md @@ -11,3 +11,7 @@ To set this up, - 4. Enter the user defined form you wish to edit. - 5. Under the Ubiquity Config, select the Ubiquity database you want to work with. - 6. You will be able to add the ubiquity form ids to a user defined form. +##Analytics Template Code +<% if $SiteConfig.UbiquityAnalyticsEnabled %> + +<% end_if %> \ No newline at end of file diff --git a/src/Extensions/UbiquitySiteConfigExtension.php b/src/Extensions/UbiquitySiteConfigExtension.php index 2ddd3ad..858fa60 100755 --- a/src/Extensions/UbiquitySiteConfigExtension.php +++ b/src/Extensions/UbiquitySiteConfigExtension.php @@ -7,7 +7,8 @@ class UbiquitySiteConfigExtension extends DataExtension { private static $db = [ 'UbiquityEnabled' => 'Boolean', - 'UbiquityAnalyticsEnabled' => 'Boolean' + 'UbiquityAnalyticsEnabled' => 'Boolean', + 'UbiquityAnalyticsKey' => 'Varchar(255)' ]; private static $has_many = [ @@ -23,11 +24,15 @@ public function updateCMSFields(FieldList $fields) { $config = GridFieldConfig_RecordEditor::create(); $gridfield = GridField::create('UbiquityDatabases', 'Ubiquity Database', $this->owner->UbiquityDatabases(), $config); - + $analyticsKey = TextField::create('UbiquityAnalyticsKey', 'Ubiquity Analytics Key'); + $fields->addFieldsToTab('Root.UbiquitySetup', [ CheckboxField::create('UbiquityEnabled', 'Ubiquity Enabled'), CheckboxField::create('UbiquityAnalyticsEnabled', 'Ubiquity Analytics Enabled'), + $analyticsKey, $gridfield ]); + + $analyticsKey->displayIf('UbiquityAnalyticsEnabled')->isChecked(); } } From 8523ebb1a7adc712d987b6d0f3d0a2154f1f77e7 Mon Sep 17 00:00:00 2001 From: Garry Yeatman Date: Thu, 30 May 2019 12:01:54 +1200 Subject: [PATCH 2/9] Adding JS requrement --- src/Extensions/UbiquityPageControllerExtension.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/Extensions/UbiquityPageControllerExtension.php b/src/Extensions/UbiquityPageControllerExtension.php index 7d94daa..a5c0cf5 100755 --- a/src/Extensions/UbiquityPageControllerExtension.php +++ b/src/Extensions/UbiquityPageControllerExtension.php @@ -13,5 +13,9 @@ public function UbiquityAnalyticsKeys() // get the analytics keys, and check if tracking is enabled $keys = UbiquityService::get_analytics_keys(); return (!empty($keys)) ? new ArrayList($keys) : null; + + Requirements::javascript('https://wt.engage.ubiquity.co.nz/device/register/$SiteConfig.UbiquityAnalyticsKey', [ + 'async' => true + ])->set_force_js_to_bottom(true); } } From d37229c269ef484cfd6b48d509568be6ebea3434 Mon Sep 17 00:00:00 2001 From: Garry Yeatman Date: Fri, 31 May 2019 10:13:58 +1200 Subject: [PATCH 3/9] Adding in ubiquity analytics --- .../UbiquityPageControllerExtension.php | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/Extensions/UbiquityPageControllerExtension.php b/src/Extensions/UbiquityPageControllerExtension.php index a5c0cf5..41fd38e 100755 --- a/src/Extensions/UbiquityPageControllerExtension.php +++ b/src/Extensions/UbiquityPageControllerExtension.php @@ -5,6 +5,17 @@ */ class UbiquityPageControllerExtension extends Extension { + public function onAfterInit() { + $SiteConfig = SiteConfig::current_site_config(); + + if ($SiteConfig->UbiquityAnalyticsEnabled) { + Requirements::javascript('https://wt.engage.ubiquity.co.nz/device/register/'.$SiteConfig->UbiquityAnalyticsKey, [ + 'async' => true, + 'set_write_js_to_body' => false + ]); + } + } + /** * Fetch Ubiquity traking keys for use in templates */ @@ -13,9 +24,5 @@ public function UbiquityAnalyticsKeys() // get the analytics keys, and check if tracking is enabled $keys = UbiquityService::get_analytics_keys(); return (!empty($keys)) ? new ArrayList($keys) : null; - - Requirements::javascript('https://wt.engage.ubiquity.co.nz/device/register/$SiteConfig.UbiquityAnalyticsKey', [ - 'async' => true - ])->set_force_js_to_bottom(true); } } From a1444f839c5d65f71f65d7adbbd8a33cdab324df Mon Sep 17 00:00:00 2001 From: Garry Yeatman Date: Fri, 31 May 2019 10:15:06 +1200 Subject: [PATCH 4/9] Ammending readme file --- README.md | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/README.md b/README.md index 130df55..710a281 100755 --- a/README.md +++ b/README.md @@ -10,8 +10,4 @@ To set this up, - 3. Enter your Ubiquity database information - 4. Enter the user defined form you wish to edit. - 5. Under the Ubiquity Config, select the Ubiquity database you want to work with. -- 6. You will be able to add the ubiquity form ids to a user defined form. -##Analytics Template Code -<% if $SiteConfig.UbiquityAnalyticsEnabled %> - -<% end_if %> \ No newline at end of file +- 6. You will be able to add the ubiquity form ids to a user defined form. \ No newline at end of file From 20d2deb3ca847568ad25bb3227386f75b84d7956 Mon Sep 17 00:00:00 2001 From: Garry Yeatman Date: Wed, 5 Jun 2019 12:36:09 +1200 Subject: [PATCH 5/9] Removing old way of getting ubiquity keys --- src/Extensions/UbiquityPageControllerExtension.php | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/src/Extensions/UbiquityPageControllerExtension.php b/src/Extensions/UbiquityPageControllerExtension.php index 41fd38e..9a525d8 100755 --- a/src/Extensions/UbiquityPageControllerExtension.php +++ b/src/Extensions/UbiquityPageControllerExtension.php @@ -8,21 +8,11 @@ class UbiquityPageControllerExtension extends Extension public function onAfterInit() { $SiteConfig = SiteConfig::current_site_config(); - if ($SiteConfig->UbiquityAnalyticsEnabled) { + if ($SiteConfig->UbiquityAnalyticsEnabled && $SiteConfig->UbiquityAnalyticsKey) { Requirements::javascript('https://wt.engage.ubiquity.co.nz/device/register/'.$SiteConfig->UbiquityAnalyticsKey, [ 'async' => true, 'set_write_js_to_body' => false ]); } } - - /** - * Fetch Ubiquity traking keys for use in templates - */ - public function UbiquityAnalyticsKeys() - { - // get the analytics keys, and check if tracking is enabled - $keys = UbiquityService::get_analytics_keys(); - return (!empty($keys)) ? new ArrayList($keys) : null; - } } From d482a022cec262d25a22a2e9caf7d72408098df7 Mon Sep 17 00:00:00 2001 From: Garry Yeatman Date: Wed, 5 Jun 2019 13:11:26 +1200 Subject: [PATCH 6/9] Fixing an issue with get_ubiquity_environment --- src/Models/UbiquityDatabase.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Models/UbiquityDatabase.php b/src/Models/UbiquityDatabase.php index 0eec748..cff319e 100755 --- a/src/Models/UbiquityDatabase.php +++ b/src/Models/UbiquityDatabase.php @@ -27,7 +27,7 @@ public function getCMSFields() $environment = $this->isInDB() && $this->Environment ? $this->Environment - : UbiquityService::get_ubiquity_environment(); + : Director::get_environment_type(); $fields->addFieldsToTab('Root.Main', [ ReadonlyField::create('Environment', 'Environment', $environment), @@ -44,7 +44,7 @@ public function getCMSFields() public function onBeforeWrite() { if (!$this->isInDB() || !$this->Environment) { - $this->Environment = UbiquityService::get_ubiquity_environment(); + $this->Environment = Director::get_environment_type(); } parent::onBeforeWrite(); From 969599968935fb97c79751e930f5095f70ae5330 Mon Sep 17 00:00:00 2001 From: Garry Yeatman Date: Wed, 5 Jun 2019 13:27:57 +1200 Subject: [PATCH 7/9] Fixes validation issue on Sign Up tab in site config --- src/Models/UbiquityDatabase.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Models/UbiquityDatabase.php b/src/Models/UbiquityDatabase.php index cff319e..a6fa2dc 100755 --- a/src/Models/UbiquityDatabase.php +++ b/src/Models/UbiquityDatabase.php @@ -68,7 +68,7 @@ public function NiceTitle() public static function get_available_databases() { $siteConfig = SiteConfig::current_site_config(); - $environment = Director::isLive() ? 'production' : 'staging'; + $environment = Director::get_environment_type(); return $siteConfig->UbiquityDatabases() ->filter('Environment', $environment); From 61d31dcbd409e41b6304d34f40b86f01da2e0bac Mon Sep 17 00:00:00 2001 From: Garry Yeatman Date: Wed, 5 Jun 2019 14:03:02 +1200 Subject: [PATCH 8/9] Fixing valid db check --- src/Models/UbiquityDatabase.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Models/UbiquityDatabase.php b/src/Models/UbiquityDatabase.php index a6fa2dc..d620f55 100755 --- a/src/Models/UbiquityDatabase.php +++ b/src/Models/UbiquityDatabase.php @@ -93,7 +93,7 @@ public static function get_database_options() */ public function isValidDatabase() { - $environment = Director::isLive() ? 'production' : 'staging'; + $environment = Director::get_environment_type(); if ($environment !== $this->Environment) { return sprintf("Invalid Ubiquity database (%s) for environnment", $this->NiceTitle()); From 22085f559707da3136b0970744a38c522d0af4a4 Mon Sep 17 00:00:00 2001 From: Garry Yeatman Date: Mon, 17 Jun 2019 16:12:10 +1200 Subject: [PATCH 9/9] Fixes an issue that stops updating a contact --- src/Services/UbiquityService.php | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/Services/UbiquityService.php b/src/Services/UbiquityService.php index 942bb7e..8d79942 100755 --- a/src/Services/UbiquityService.php +++ b/src/Services/UbiquityService.php @@ -8,6 +8,8 @@ class UbiquityService const METHOD_POST = 'POST'; + const METHOD_PUT = 'PUT'; + protected $database; private static $base_uri = 'https://api.ubiquity.co.nz/'; @@ -152,7 +154,7 @@ public function getDefaultOptions() */ public function call($method = null, string $uri = null, $query = null, $data = null) { - if (!in_array($method, [self::METHOD_GET, self::METHOD_POST])) { + if (!in_array($method, [self::METHOD_GET, self::METHOD_POST, self::METHOD_PUT])) { throw new Exception('Invalid Ubiqutiy request method'); } @@ -258,6 +260,9 @@ public function createOrUpdateContact($data) $id = $contact['referenceID']; $uri .= '/' . $id; $data = $this->filterUpdateData($data, $contact); + $method = self::METHOD_PUT; + } else { + $method = self::METHOD_POST; } // If there is no data to update, exit here @@ -265,7 +270,7 @@ public function createOrUpdateContact($data) return true; } - $response = $this->call(self::METHOD_POST, $uri, null, $data); + $response = $this->call($method, $uri, null, $data); if ($contact) { if ($response->getStatusCode() !== 200) {