Overview

Namespaces

  • Cloudflare
    • Organizations
      • Firewall
        • AccessRules
    • User
      • Billing
        • Subscriptions
      • Firewall
    • Zone
      • Firewall
      • SSL
      • WAF
        • Packages

Classes

  • Cloudflare\Api
  • Cloudflare\Certificates
  • Cloudflare\IPs
  • Cloudflare\Organizations\Firewall\AccessRules\Rules
  • Cloudflare\Organizations\Invites
  • Cloudflare\Organizations\Members
  • Cloudflare\Organizations\Organizations
  • Cloudflare\Organizations\Railguns
  • Cloudflare\Organizations\Roles
  • Cloudflare\Organizations\Virtual_Dns
  • Cloudflare\Railguns
  • Cloudflare\User
  • Cloudflare\User\Billing
  • Cloudflare\User\Billing\Subscriptions\Apps
  • Cloudflare\User\Billing\Subscriptions\Zones
  • Cloudflare\User\Firewall\AccessRules
  • Cloudflare\User\Invites
  • Cloudflare\User\Organizations
  • Cloudflare\User\Virtual_Dns
  • Cloudflare\Zone
  • Cloudflare\Zone\Analytics
  • Cloudflare\Zone\Cache
  • Cloudflare\Zone\CustomPages
  • Cloudflare\Zone\CustomSSL
  • Cloudflare\Zone\Dns
  • Cloudflare\Zone\Firewall\AccessRules
  • Cloudflare\Zone\KeylessSSL
  • Cloudflare\Zone\Pagerules
  • Cloudflare\Zone\Plan
  • Cloudflare\Zone\Railgun
  • Cloudflare\Zone\Settings
  • Cloudflare\Zone\SSL
  • Cloudflare\Zone\SSL\Analyze
  • Cloudflare\Zone\SSL\CertificatePacks
  • Cloudflare\Zone\WAF\Packages
  • Cloudflare\Zone\WAF\Packages\Groups
  • Cloudflare\Zone\WAF\Packages\Rules
  • Overview
  • Namespace
  • Class
  1: <?php
  2: 
  3: namespace Cloudflare\Zone;
  4: 
  5: use Cloudflare\Api;
  6: use Cloudflare\Zone;
  7: 
  8: /**
  9:  * CloudFlare API wrapper
 10:  *
 11:  * DNS Record
 12:  * CloudFlare DNS records
 13:  *
 14:  * @author James Bell <[email protected]>
 15:  *
 16:  * @version 1
 17:  */
 18: class Dns extends Api
 19: {
 20:     /**
 21:      * Default permissions level
 22:      *
 23:      * @var array
 24:      */
 25:     protected $permission_level = ['read' => '#dns_records:read', 'edit' => '#dns_records:edit'];
 26: 
 27:     /**
 28:      * Create DNS record (permission needed: #dns_records:edit)
 29:      * Create a new DNS record for a zone. See the record object definitions for required attributes for each record type
 30:      *
 31:      * @param string     $zone_identifier
 32:      * @param string     $type            DNS record type (A, AAAA, CNAME, TXT, SRV, LOC, MX, NS, SPF)
 33:      * @param string     $name            DNS record name
 34:      * @param string     $content         DNS record content
 35:      * @param int|null   $ttl             Time to live for DNS record. Value of 1 is 'automatic'
 36:      * @param bool|null  $proxied         Whether to proxy the domain through CloudFlare or not
 37:      * @param int|null   $priority        MX record priority value
 38:      * @param array|null $data            Additional data required for SRV record
 39:      */
 40:     public function create($zone_identifier, $type, $name, $content, $ttl = null, $proxied = null, $priority = null, $data = null)
 41:     {
 42:         $data = [
 43:             'type'     => strtoupper($type),
 44:             'name'     => $name,
 45:             'content'  => $content,
 46:             'ttl'      => $ttl,
 47:             'proxied'  => $proxied,
 48:             'priority' => $priority,
 49:             'data'     => $data,
 50:         ];
 51: 
 52:         return $this->post('zones/'.$zone_identifier.'/dns_records', $data);
 53:     }
 54: 
 55:     /**
 56:      * List DNS Records (permission needed: #dns_records:read)
 57:      * List, search, sort, and filter a zones' DNS records.
 58:      *
 59:      * @param string      $zone_identifier
 60:      * @param string|null $type                      DNS record type (A, AAAA, CNAME, TXT, SRV, LOC, MX, NS, SPF)
 61:      * @param string|null $name                      DNS record name
 62:      * @param string|null $content                   DNS record content
 63:      * @param string|null $vanity_name_server_record Flag for records that were created for the vanity name server feature (true, false)
 64:      * @param int|null    $page                      Page number of paginated results
 65:      * @param int|null    $per_page                  Number of DNS records per page
 66:      * @param string|null $order                     Field to order records by (type, name, content, ttl, proxied)
 67:      * @param string|null $direction                 Direction to order domains (asc, desc)
 68:      * @param string|null $match                     Whether to match all search requirements or at least one (any) (any, all)
 69:      */
 70:     public function list_records($zone_identifier, $type = null, $name = null, $content = null, $vanity_name_server_record = null, $page = null, $per_page = null, $order = null, $direction = null, $match = null)
 71:     {
 72:         $data = [
 73:             'type'                      => $type,
 74:             'name'                      => $name,
 75:             'content'                   => $content,
 76:             'vanity_name_server_record' => $vanity_name_server_record,
 77:             'page'                      => $page,
 78:             'per_page'                  => $per_page,
 79:             'order'                     => $order,
 80:             'direction'                 => $direction,
 81:             'match'                     => $match,
 82:         ];
 83: 
 84:         return $this->get('zones/'.$zone_identifier.'/dns_records', $data);
 85:     }
 86: 
 87:     /**
 88:      * DNS record details (permission needed: #dns_records:read)
 89:      *
 90:      * @param string $zone_identifier
 91:      * @param string $identifier      API item identifier tag
 92:      */
 93:     public function details($zone_identifier, $identifier)
 94:     {
 95:         return $this->get('zones/'.$zone_identifier.'/dns_records/'.$identifier);
 96:     }
 97: 
 98:     /**
 99:      * Update DNS record (permission needed: #dns_records:edit)
100:      *
101:      * @param string      $zone_identifier
102:      * @param string      $identifier      API item identifier tag
103:      * @param string|null $type            DNS record type (A, AAAA, CNAME, TXT, SRV, LOC, MX, NS, SPF)
104:      * @param string|null $name            DNS record name
105:      * @param string|null $content         DNS record content
106:      * @param string|null $ttl             Time to live for DNS record. Value of 1 is 'automatic'
107:      * @param bool|null   $proxied         Whether to proxy the domain through CloudFlare or not
108:      * @param array|null  $data            Additional data required for SRV record
109:      * @param int|null    $priority        MX record priority value
110:      */
111:     public function update($zone_identifier, $identifier, $type = null, $name = null, $content = null, $ttl = null, $proxied = null, $data = null, $priority = null)
112:     {
113:         $data = [
114:             'type'      => $type,
115:             'name'      => $name,
116:             'content'   => $content,
117:             'ttl'       => $ttl,
118:             'proxied'   => $proxied,
119:             'priority'  => $priority,
120:             'data'      => $data,
121:         ];
122: 
123:         return $this->put('zones/'.$zone_identifier.'/dns_records/'.$identifier, $data);
124:     }
125: 
126:     /**
127:      * Update DNS record (permission needed: #dns_records:edit)
128:      *
129:      * @param string $zone_identifier
130:      * @param string $identifier      API item identifier tag
131:      */
132:     public function delete_record($zone_identifier, $identifier)
133:     {
134:         return $this->delete('zones/'.$zone_identifier.'/dns_records/'.$identifier);
135:     }
136: }
137: 
API documentation generated by ApiGen