      1: <?php
      2:
      3: class Mandrill_Subaccounts {
      4:     public function __construct(Mandrill $master) {
      5:         $this->master = $master;
      6:     }
      7:
      8:     /**
      9:      * Get the list of subaccounts defined for the account, optionally filtered by a prefix
     10:      * @param string $q an optional prefix to filter the subaccounts' ids and names
     11:      * @return array the subaccounts for the account, up to a maximum of 1,000
     12:      *     - return[] struct the individual subaccount info
     13:      *         - id string a unique indentifier for the subaccount
     14:      *         - name string an optional display name for the subaccount
     15:      *         - custom_quota integer an optional manual hourly quota for the subaccount. If not specified, the hourly quota will be managed based on reputation
     16:      *         - status string the current sending status of the subaccount, one of "active" or "paused"
     17:      *         - reputation integer the subaccount's current reputation on a scale from 0 to 100
     18:      *         - created_at string the date and time that the subaccount was created as a UTC string in YYYY-MM-DD HH:MM:SS format
     19:      *         - first_sent_at string the date and time that the subaccount first sent as a UTC string in YYYY-MM-DD HH:MM:SS format
     20:      *         - sent_weekly integer the number of emails the subaccount has sent so far this week (weeks start on midnight Monday, UTC)
     21:      *         - sent_monthly integer the number of emails the subaccount has sent so far this month (months start on midnight of the 1st, UTC)
     22:      *         - sent_total integer the number of emails the subaccount has sent since it was created
     23:      */
     24:     public function getList($q=null) {
     25:         $_params = array("q" => $q);
     26:         return $this->master->call('subaccounts/list', $_params);
     27:     }
     28:
     29:     /**
     30:      * Add a new subaccount
     31:      * @param string $id a unique identifier for the subaccount to be used in sending calls
     32:      * @param string $name an optional display name to further identify the subaccount
     33:      * @param string $notes optional extra text to associate with the subaccount
     34:      * @param integer $custom_quota an optional manual hourly quota for the subaccount. If not specified, Mandrill will manage this based on reputation
     35:      * @return struct the information saved about the new subaccount
     36:      *     - id string a unique indentifier for the subaccount
     37:      *     - name string an optional display name for the subaccount
     38:      *     - custom_quota integer an optional manual hourly quota for the subaccount. If not specified, the hourly quota will be managed based on reputation
     39:      *     - status string the current sending status of the subaccount, one of "active" or "paused"
     40:      *     - reputation integer the subaccount's current reputation on a scale from 0 to 100
     41:      *     - created_at string the date and time that the subaccount was created as a UTC string in YYYY-MM-DD HH:MM:SS format
     42:      *     - first_sent_at string the date and time that the subaccount first sent as a UTC string in YYYY-MM-DD HH:MM:SS format
     43:      *     - sent_weekly integer the number of emails the subaccount has sent so far this week (weeks start on midnight Monday, UTC)
     44:      *     - sent_monthly integer the number of emails the subaccount has sent so far this month (months start on midnight of the 1st, UTC)
     45:      *     - sent_total integer the number of emails the subaccount has sent since it was created
     46:      */
     47:     public function add($id, $name=null, $notes=null, $custom_quota=null) {
     48:         $_params = array("id" => $id, "name" => $name, "notes" => $notes, "custom_quota" => $custom_quota);
     49:         return $this->master->call('subaccounts/add', $_params);
     50:     }
     51:
     52:     /**
     53:      * Given the ID of an existing subaccount, return the data about it
     54:      * @param string $id the unique identifier of the subaccount to query
     55:      * @return struct the information about the subaccount
     56:      *     - id string a unique indentifier for the subaccount
     57:      *     - name string an optional display name for the subaccount
     58:      *     - notes string optional extra text to associate with the subaccount
     59:      *     - custom_quota integer an optional manual hourly quota for the subaccount. If not specified, the hourly quota will be managed based on reputation
     60:      *     - status string the current sending status of the subaccount, one of "active" or "paused"
     61:      *     - reputation integer the subaccount's current reputation on a scale from 0 to 100
     62:      *     - created_at string the date and time that the subaccount was created as a UTC string in YYYY-MM-DD HH:MM:SS format
     63:      *     - first_sent_at string the date and time that the subaccount first sent as a UTC string in YYYY-MM-DD HH:MM:SS format
     64:      *     - sent_weekly integer the number of emails the subaccount has sent so far this week (weeks start on midnight Monday, UTC)
     65:      *     - sent_monthly integer the number of emails the subaccount has sent so far this month (months start on midnight of the 1st, UTC)
     66:      *     - sent_total integer the number of emails the subaccount has sent since it was created
     67:      *     - sent_hourly integer the number of emails the subaccount has sent in the last hour
     68:      *     - hourly_quota integer the current hourly quota for the subaccount, either manual or reputation-based
     69:      *     - last_30_days struct stats for this subaccount in the last 30 days
     70:      *         - sent integer the number of emails sent for this subaccount in the last 30 days
     71:      *         - hard_bounces integer the number of emails hard bounced for this subaccount in the last 30 days
     72:      *         - soft_bounces integer the number of emails soft bounced for this subaccount in the last 30 days
     73:      *         - rejects integer the number of emails rejected for sending this subaccount in the last 30 days
     74:      *         - complaints integer the number of spam complaints for this subaccount in the last 30 days
     75:      *         - unsubs integer the number of unsbuscribes for this subaccount in the last 30 days
     76:      *         - opens integer the number of times emails have been opened for this subaccount in the last 30 days
     77:      *         - unique_opens integer the number of unique opens for emails sent for this subaccount in the last 30 days
     78:      *         - clicks integer the number of URLs that have been clicked for this subaccount in the last 30 days
     79:      *         - unique_clicks integer the number of unique clicks for emails sent for this subaccount in the last 30 days
     80:      */
     81:     public function info($id) {
     82:         $_params = array("id" => $id);
     83:         return $this->master->call('subaccounts/info', $_params);
     84:     }
     85:
     86:     /**
     87:      * Update an existing subaccount
     88:      * @param string $id the unique identifier of the subaccount to update
     89:      * @param string $name an optional display name to further identify the subaccount
     90:      * @param string $notes optional extra text to associate with the subaccount
     91:      * @param integer $custom_quota an optional manual hourly quota for the subaccount. If not specified, Mandrill will manage this based on reputation
     92:      * @return struct the information for the updated subaccount
     93:      *     - id string a unique indentifier for the subaccount
     94:      *     - name string an optional display name for the subaccount
     95:      *     - custom_quota integer an optional manual hourly quota for the subaccount. If not specified, the hourly quota will be managed based on reputation
     96:      *     - status string the current sending status of the subaccount, one of "active" or "paused"
     97:      *     - reputation integer the subaccount's current reputation on a scale from 0 to 100
     98:      *     - created_at string the date and time that the subaccount was created as a UTC string in YYYY-MM-DD HH:MM:SS format
     99:      *     - first_sent_at string the date and time that the subaccount first sent as a UTC string in YYYY-MM-DD HH:MM:SS format
    100:      *     - sent_weekly integer the number of emails the subaccount has sent so far this week (weeks start on midnight Monday, UTC)
    101:      *     - sent_monthly integer the number of emails the subaccount has sent so far this month (months start on midnight of the 1st, UTC)
    102:      *     - sent_total integer the number of emails the subaccount has sent since it was created
    103:      */
    104:     public function update($id, $name=null, $notes=null, $custom_quota=null) {
    105:         $_params = array("id" => $id, "name" => $name, "notes" => $notes, "custom_quota" => $custom_quota);
    106:         return $this->master->call('subaccounts/update', $_params);
    107:     }
    108:
    109:     /**
    110:      * Delete an existing subaccount. Any email related to the subaccount will be saved, but stats will be removed and any future sending calls to this subaccount will fail.
    111:      * @param string $id the unique identifier of the subaccount to delete
    112:      * @return struct the information for the deleted subaccount
    113:      *     - id string a unique indentifier for the subaccount
    114:      *     - name string an optional display name for the subaccount
    115:      *     - custom_quota integer an optional manual hourly quota for the subaccount. If not specified, the hourly quota will be managed based on reputation
    116:      *     - status string the current sending status of the subaccount, one of "active" or "paused"
    117:      *     - reputation integer the subaccount's current reputation on a scale from 0 to 100
    118:      *     - created_at string the date and time that the subaccount was created as a UTC string in YYYY-MM-DD HH:MM:SS format
    119:      *     - first_sent_at string the date and time that the subaccount first sent as a UTC string in YYYY-MM-DD HH:MM:SS format
    120:      *     - sent_weekly integer the number of emails the subaccount has sent so far this week (weeks start on midnight Monday, UTC)
    121:      *     - sent_monthly integer the number of emails the subaccount has sent so far this month (months start on midnight of the 1st, UTC)
    122:      *     - sent_total integer the number of emails the subaccount has sent since it was created
    123:      */
    124:     public function delete($id) {
    125:         $_params = array("id" => $id);
    126:         return $this->master->call('subaccounts/delete', $_params);
    127:     }
    128:
    129:     /**
    130:      * Pause a subaccount's sending. Any future emails delivered to this subaccount will be queued for a maximum of 3 days until the subaccount is resumed.
    131:      * @param string $id the unique identifier of the subaccount to pause
    132:      * @return struct the information for the paused subaccount
    133:      *     - id string a unique indentifier for the subaccount
    134:      *     - name string an optional display name for the subaccount
    135:      *     - custom_quota integer an optional manual hourly quota for the subaccount. If not specified, the hourly quota will be managed based on reputation
    136:      *     - status string the current sending status of the subaccount, one of "active" or "paused"
    137:      *     - reputation integer the subaccount's current reputation on a scale from 0 to 100
    138:      *     - created_at string the date and time that the subaccount was created as a UTC string in YYYY-MM-DD HH:MM:SS format
    139:      *     - first_sent_at string the date and time that the subaccount first sent as a UTC string in YYYY-MM-DD HH:MM:SS format
    140:      *     - sent_weekly integer the number of emails the subaccount has sent so far this week (weeks start on midnight Monday, UTC)
    141:      *     - sent_monthly integer the number of emails the subaccount has sent so far this month (months start on midnight of the 1st, UTC)
    142:      *     - sent_total integer the number of emails the subaccount has sent since it was created
    143:      */
    144:     public function pause($id) {
    145:         $_params = array("id" => $id);
    146:         return $this->master->call('subaccounts/pause', $_params);
    147:     }
    148:
    149:     /**
    150:      * Resume a paused subaccount's sending
    151:      * @param string $id the unique identifier of the subaccount to resume
    152:      * @return struct the information for the resumed subaccount
    153:      *     - id string a unique indentifier for the subaccount
    154:      *     - name string an optional display name for the subaccount
    155:      *     - custom_quota integer an optional manual hourly quota for the subaccount. If not specified, the hourly quota will be managed based on reputation
    156:      *     - status string the current sending status of the subaccount, one of "active" or "paused"
    157:      *     - reputation integer the subaccount's current reputation on a scale from 0 to 100
    158:      *     - created_at string the date and time that the subaccount was created as a UTC string in YYYY-MM-DD HH:MM:SS format
    159:      *     - first_sent_at string the date and time that the subaccount first sent as a UTC string in YYYY-MM-DD HH:MM:SS format
    160:      *     - sent_weekly integer the number of emails the subaccount has sent so far this week (weeks start on midnight Monday, UTC)
    161:      *     - sent_monthly integer the number of emails the subaccount has sent so far this month (months start on midnight of the 1st, UTC)
    162:      *     - sent_total integer the number of emails the subaccount has sent since it was created
    163:      */
    164:     public function resume($id) {
    165:         $_params = array("id" => $id);
    166:         return $this->master->call('subaccounts/resume', $_params);
    167:     }
    168:
    169: }
    170:
    171:
    172: