/**
     *gets tracking code based on campaign
     *@return tracking javascript for pardot api
     */
    public static function GetPardotTrackingJs()
    {
        $html = false;
        $campaign = PardotConfig::getCampaignCode();
        if ($campaign) {
            $tracker_cache = SS_Cache::factory('Pardot');
            if (!($tracking_code_template = $tracker_cache->load('pardot_tracking_code_template'))) {
                $api_credentials = PardotConfig::getPardotCredentials();
                $pardot = new Pardot_API();
                if (!$pardot->is_authenticated()) {
                    $pardot->authenticate($api_credentials);
                }
                $account = $pardot->get_account();
                if (isset($account->tracking_code_template)) {
                    $tracking_code_template = $account->tracking_code_template;
                    $tracker_cache->save($tracking_code_template, 'pardot_tracking_code_template');
                }
            }
            $tracking_code_template = str_replace('%%CAMPAIGN_ID%%', $campaign + 1000, $tracking_code_template);
            $campaign = $campaign + 1000;
            $html = <<<HTML
<script> type="text/javascript">
piCId = '{$campaign}';
{$tracking_code_template}
</script>
HTML;
        }
        return $html;
    }
 /**
  * This function starts the routine, and is the first function
  * to execute off the URL accessor (defined in @see _config.php)
  */
 public function index()
 {
     $pardot = new Pardot_API(PardotConfig::getPardotCredentials());
     $forms_object = $pardot->get_forms(PardotConfig::getPardotCredentials());
     $forms = array();
     foreach ($forms_object as $form_object) {
         $forms[]['name'] = $form_object->name;
     }
     $forms = new ArrayList($forms);
     $content_object = $pardot->get_dynamicContent(PardotConfig::getPardotCredentials());
     $contents = array();
     foreach ($content_object as $content) {
         $contents[]['name'] = $content->name;
     }
     $contents = new ArrayList($contents);
     return $this->customise(array('Forms' => $forms, 'DynamicContent' => $contents))->renderWith(array("PardotModalForm"));
 }
 /**
  *CMS fields for configuring Pardot plugin 
  */
 public function updateCMSFields(FieldList $fields)
 {
     $fields->addFieldToTab("Root.Pardot", new LiteralField($name = "pardot_logo", $content = '<div class="field"><img src="/silverstripe-pardot/images/pardot-logo.png" height="50"></div>'));
     $fields->addFieldToTab("Root.Pardot", new EmailField("pardot_email", "Email Address"));
     $password_field = new PasswordField("new_pardot_password", "Password");
     $password_field->setAttribute('placeholder', '********');
     $fields->addFieldToTab("Root.Pardot", $password_field);
     $fields->addFieldToTab("Root.Pardot", new TextField("pardot_user_key", "User Key"));
     //option to select campaign available after they have connected
     if (PardotConfig::validApiCredentials()) {
         $fields->addFieldToTab("Root.Pardot", self::getCampaignCmsDropdown());
     } else {
         $fields->addFieldToTab("Root.Pardot", new LiteralField($name = "pardot_campaign", $content = '<p class="message bad"> No valid credentials</p>'));
         $fields->addFieldToTab("Root.Pardot", new LiteralField($name = "pardot_campaign", $content = '<p class="message notice"> Once you are connected, re-visit this page and select a campaign.</p>'));
     }
     $fields->addFieldToTab("Root.Pardot", new CheckboxField("pardot_https", "Use HTTPS?"));
     return $fields;
 }
 /**
  * caches pardot dynamic content from the pardot api.
  *
  * @return array Array of dynamic content objects 
  */
 public static function cacheDynamicContentFromPardotApi()
 {
     $pardot = new Pardot_API(PardotConfig::getPardotCredentials());
     $dynamicContent = $pardot->get_dynamicContent();
     $pardot_cache = SS_Cache::factory('Pardot');
     $pardot_cache->save(serialize($dynamicContent), 'serialized_dynamic_content');
     return $dynamicContent;
 }