/**
  * Delete addresses
  *
  * @return	void
  */
 private function deleteCustomFields()
 {
     // set the group fields by flipping the custom fields array for this group
     $groupFields = array_flip($this->group['custom_fields']);
     // group custom fields found
     if (!empty($groupFields)) {
         // loop the group fields and empty every value
         foreach ($groupFields as &$field) {
             $field = '';
         }
     }
     // loop the fields
     foreach ($this->fields as $field) {
         // check if the passed field is in the group's field list
         if (isset($groupFields[$field])) {
             // delete the custom field in CM
             BackendMailmotorCMHelper::deleteCustomField('[' . $field . ']', $this->group['id']);
             // remove the field from the group's field listing
             unset($groupFields[$field]);
         }
     }
     // update custom fields for this group
     BackendMailmotorModel::updateCustomFields($groupFields, $this->group['id']);
     // redirect
     $this->redirect(BackendModel::createURLForAction('custom_fields') . '&group_id=' . $this->group['id'] . '&report=deleted-custom-fields&var=' . $this->group['name']);
 }
 /**
  * Validate the form
  */
 private function validateForm()
 {
     // is the form submitted?
     if ($this->frm->isSubmitted()) {
         // cleanup the submitted fields, ignore fields that were added by hackers
         $this->frm->cleanupFields();
         // shorten fields
         $txtName = $this->frm->getField('name');
         // validate fields
         if ($txtName->isFilled(BL::err('NameIsRequired'))) {
             if (in_array($txtName->getValue(), $this->group['custom_fields'])) {
                 $txtName->addError(BL::err('CustomFieldExists'));
             }
         }
         // no errors?
         if ($this->frm->isCorrect()) {
             try {
                 // add the new item to the custom fields list
                 $this->group['custom_fields'][] = $txtName->getValue();
                 // set the group fields by flipping the custom fields array for this group
                 $groupFields = array_flip($this->group['custom_fields']);
                 // group custom fields found
                 if (!empty($groupFields)) {
                     // loop the group fields and empty every value
                     foreach ($groupFields as &$field) {
                         $field = '';
                     }
                 }
                 // addresses found and custom field delete with CM
                 BackendMailmotorCMHelper::createCustomField($txtName->getValue(), $this->group['id']);
                 // update custom fields for this group
                 BackendMailmotorModel::updateCustomFields($groupFields, $this->group['id']);
             } catch (Exception $e) {
                 // redirect with a custom error
                 $this->redirect(BackendModel::createURLForAction('custom_fields') . '&group_id=' . $this->group['id'] . '&error=campaign-monitor-error&var=' . urlencode($e->getMessage()));
             }
             // everything is saved, so redirect to the overview
             $this->redirect(BackendModel::createURLForAction('custom_fields') . '&group_id=' . $this->group['id'] . '&report=added&var=' . urlencode($txtName->getValue()) . '&highlight=id-' . $this->group['id']);
         }
     }
 }
示例#3
0
    /**
     * Subscribes an e-mail address and send him/her to CampaignMonitor
     *
     * @param string $email The emailaddress.
     * @param string[optional] $groupId The group wherin the emailaddress should be added.
     * @param array[optional] $customFields Any optional custom fields.
     * @return bool
     */
    public static function subscribe($email, $groupId = null, $customFields = null)
    {
        // get objects
        $db = BackendModel::getDB(true);
        $cm = self::getCM();
        // set groupID
        $groupId = !empty($groupId) ? $groupId : BackendMailmotorModel::getDefaultGroupID();
        // get group CM ID
        $groupCMId = self::getCampaignMonitorID('list', $groupId);
        // see if the name is present in the custom fields
        $name = self::getNameFieldValue($customFields);
        // group ID found
        if (BackendMailmotorModel::existsGroup($groupId) && $cm->subscribe($email, $name, $customFields, true, $groupCMId)) {
            // set variables
            $subscriber['email'] = $email;
            $subscriber['source'] = 'CMS';
            $subscriber['created_on'] = BackendModel::getUTCDate('Y-m-d H:i:s');
            // insert/update the user
            $db->execute('INSERT INTO mailmotor_addresses(email, source, created_on)
							VALUES (?, ?, ?)
							ON DUPLICATE KEY UPDATE source = ?, created_on = ?', array($subscriber['email'], $subscriber['source'], $subscriber['created_on'], $subscriber['source'], $subscriber['created_on']));
            // set variables
            $subscriberGroup['email'] = $email;
            $subscriberGroup['group_id'] = $groupId;
            $subscriberGroup['status'] = 'subscribed';
            $subscriberGroup['subscribed_on'] = BackendModel::getUTCDate('Y-m-d H:i:s');
            // insert/update the user
            $db->execute('INSERT INTO mailmotor_addresses_groups(email, group_id, status, subscribed_on)
				 VALUES (?, ?, ?, ?)
				 ON DUPLICATE KEY UPDATE group_id = ?, status = ?, subscribed_on = ?', array($subscriberGroup['email'], $subscriberGroup['group_id'], $subscriberGroup['status'], $subscriberGroup['subscribed_on'], $subscriberGroup['group_id'], $subscriberGroup['status'], $subscriberGroup['subscribed_on']));
            // update custom fields for this subscriber/group
            if (!empty($customFields)) {
                BackendMailmotorModel::updateCustomFields($customFields, $groupId, $email);
            }
            // user subscribed
            return true;
        }
        // user not subscribed
        return false;
    }