diff --git a/README.md b/README.md index 97f62a6..710a281 100755 --- a/README.md +++ b/README.md @@ -10,4 +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. +- 6. You will be able to add the ubiquity form ids to a user defined form. \ No newline at end of file diff --git a/src/Extensions/UbiquityPageControllerExtension.php b/src/Extensions/UbiquityPageControllerExtension.php index 7d94daa..9a525d8 100755 --- a/src/Extensions/UbiquityPageControllerExtension.php +++ b/src/Extensions/UbiquityPageControllerExtension.php @@ -5,13 +5,14 @@ */ class UbiquityPageControllerExtension extends Extension { - /** - * 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; + public function onAfterInit() { + $SiteConfig = SiteConfig::current_site_config(); + + 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 + ]); + } } } 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(); } } diff --git a/src/Models/UbiquityDatabase.php b/src/Models/UbiquityDatabase.php index 0eec748..d620f55 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(); @@ -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); @@ -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()); 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) {