/**
  * Constructor for ZoneSettings.
  *
  * @param string $zone_id
  *   The zone's zoneId.
  * @param \CloudFlarePhpSdk\ApiTypes\CloudFlareApiResponse $query_results
  *   The results from an API Zone Settings Query.
  */
 public function __construct($zone_id, CloudFlareApiResponse $query_results)
 {
     $this->id = $zone_id;
     foreach ($query_results->getResult() as $raw_setting) {
         // @todo would like to add some stronger parsing/validation here and
         // Potentially break it out into a separate class with a single
         // responsibility for parsing.
         $setting_name = $raw_setting[self::SETTING_WRAPPER_ID];
         $modified_time = Utils::parseCloudFlareDate($raw_setting[self::SETTING_WRAPPER_MODIFIED_ON]);
         $editable = $raw_setting[self::SETTING_WRAPPER_EDITABLE];
         $value = $raw_setting[self::SETTING_WRAPPER_VALUE];
         // Parse the boolean values into ZoneSettingBools.
         if (in_array($setting_name, $this->getBooleanSettings())) {
             $this->settings[$setting_name] = new ZoneSettingBool($value, $setting_name, $editable, $modified_time);
         } else {
             switch ($setting_name) {
                 case self::SETTING_BROWSER_CACHE_TTL:
                     $this->settings[$setting_name] = new ZoneSettingBrowserCacheTtl($value, $setting_name, $editable, $modified_time);
                     break;
                 case self::SETTING_CHALLENGE_TTL:
                     $this->settings[$setting_name] = new ZoneSettingChallengeTtl($value, $setting_name, $editable, $modified_time);
                     break;
                 case self::SETTING_MINIFY:
                     $css = $value[self::SETTING_MINIFY_CSS];
                     $html = $value[self::SETTING_MINIFY_HTML];
                     $js = $value[self::SETTING_MINIFY_JS];
                     $this->settings[$setting_name] = new ZoneSettingMinify($css, $html, $js, $setting_name, $editable, $modified_time);
                     break;
                 case self::SETTING_MOBILE_REDIRECT:
                     $is_mobile_redirect_enabled = (bool) $value[self::SETTING_MOBILE_REDIRECT_ENABLED];
                     $mobile_subdomain = $value[self::SETTING_MOBILE_REDIRECT_MOBILE_SUBDOMAIN];
                     $is_strip_uri_enabled = (bool) $value[self::SETTING_MOBILE_REDIRECT_STRIP_URI];
                     $this->settings[$setting_name] = new ZoneSettingMobileRedirect($is_mobile_redirect_enabled, $mobile_subdomain, $is_strip_uri_enabled, $setting_name, $editable, $modified_time);
                     break;
                 case self::SETTING_SECURITY_HEADER:
                     $this->settings[$setting_name] = new ZoneSettingSecurityHeader($value, $setting_name, $editable, $modified_time);
                     break;
                 case self::SETTING_SECURITY_LEVEL:
                     $this->settings[$setting_name] = new ZoneSettingSecurityLevel($value, $setting_name, $editable, $modified_time);
                     break;
                 case self::SETTING_SSL:
                     $this->settings[$setting_name] = new ZoneSettingSsl($value, $setting_name, $editable, $modified_time);
                     break;
             }
         }
     }
 }
 /**
  * Gets number of pages of records/results for the last API request.
  *
  * @return int
  *   Number of pages.
  */
 public function getTotalNumberOfPagesForLastRequest()
 {
     $has_pagination_data = is_set($this->lastApiResponse->getNumPages());
     return $has_pagination_data ? $this->lastApiResponse->getNumPages() : 1;
 }