/** * Takes an associative array and creates a campaign object. * * the function extract all the params it needs to initialize the create a * contact object. the params array could contain additional unused name/value * pairs * * @param array $params * (reference ) an assoc array of name/value pairs. * * @return CRM_Campaign_DAO_Campaign */ public static function create(&$params) { if (empty($params)) { return NULL; } if (!CRM_Utils_Array::value('id', $params)) { if (!CRM_Utils_Array::value('created_id', $params)) { $session = CRM_Core_Session::singleton(); $params['created_id'] = $session->get('userID'); } if (!CRM_Utils_Array::value('created_date', $params)) { $params['created_date'] = date('YmdHis'); } if (!CRM_Utils_Array::value('name', $params)) { $params['name'] = CRM_Utils_String::titleToVar($params['title'], 64); } CRM_Utils_Hook::pre('create', 'Campaign', NULL, $params); } else { CRM_Utils_Hook::pre('edit', 'Campaign', $params['id'], $params); } $campaign = new CRM_Campaign_DAO_Campaign(); $campaign->copyValues($params); $campaign->save(); if (!empty($params['id'])) { CRM_Utils_Hook::post('edit', 'Campaign', $campaign->id, $campaign); } else { CRM_Utils_Hook::post('create', 'Campaign', $campaign->id, $campaign); } /* Create the campaign group record */ $groupTableName = CRM_Contact_BAO_Group::getTableName(); if (isset($params['groups']) && !empty($params['groups']['include']) && is_array($params['groups']['include'])) { foreach ($params['groups']['include'] as $entityId) { $dao = new CRM_Campaign_DAO_CampaignGroup(); $dao->campaign_id = $campaign->id; $dao->entity_table = $groupTableName; $dao->entity_id = $entityId; $dao->group_type = 'Include'; $dao->save(); $dao->free(); } } //store custom data if (!empty($params['custom']) && is_array($params['custom'])) { CRM_Core_BAO_CustomValueTable::store($params['custom'], 'civicrm_campaign', $campaign->id); } return $campaign; }
/** * adds $value['foo_display'] for each $value['foo'] enum from civicrm_campaign_group * * @param array $values (reference) the array up for enhancing * @return void */ static function addDisplayEnums(&$values) { $enumFields =& CRM_Campaign_DAO_CampaignGroup::getEnums(); foreach ($enumFields as $enum) { if (isset($values[$enum])) { $values[$enum . '_display'] = CRM_Campaign_DAO_CampaignGroup::tsEnum($enum, $values[$enum]); } } }
/** * Form submission of new/edit campaign is processed. * * * @return void */ public function postProcess() { // store the submitted values in an array $params = $this->controller->exportValues($this->_name); $session = CRM_Core_Session::singleton(); $groups = array(); if (isset($this->_campaignId)) { if ($this->_action & CRM_Core_Action::DELETE) { CRM_Campaign_BAO_Campaign::del($this->_campaignId); CRM_Core_Session::setStatus(ts('Campaign has been deleted.'), ts('Record Deleted'), 'success'); $session->replaceUserContext(CRM_Utils_System::url('civicrm/campaign', 'reset=1&subPage=campaign')); return; } $params['id'] = $this->_campaignId; } else { $params['created_id'] = $session->get('userID'); $params['created_date'] = date('YmdHis'); } // format params $params['start_date'] = CRM_Utils_Date::processDate($params['start_date'], $params['start_date_time']); $params['end_date'] = CRM_Utils_Date::processDate($params['end_date'], $params['end_date_time'], TRUE); $params['is_active'] = CRM_Utils_Array::value('is_active', $params, FALSE); $params['last_modified_id'] = $session->get('userID'); $params['last_modified_date'] = date('YmdHis'); if (is_array($params['includeGroups'])) { foreach ($params['includeGroups'] as $key => $id) { if ($id) { $groups['include'][] = $id; } } } $params['groups'] = $groups; // delete previous includes/excludes, if campaign already existed $groupTableName = CRM_Contact_BAO_Group::getTableName(); $dao = new CRM_Campaign_DAO_CampaignGroup(); $dao->campaign_id = $this->_campaignId; $dao->entity_table = $groupTableName; $dao->find(); while ($dao->fetch()) { $dao->delete(); } //process custom data. $customFields = CRM_Core_BAO_CustomField::getFields('Campaign', FALSE, FALSE, CRM_Utils_Array::value('campaign_type_id', $params)); $params['custom'] = CRM_Core_BAO_CustomField::postProcess($params, $customFields, $this->_campaignId, 'Campaign'); $result = CRM_Campaign_BAO_Campaign::create($params); if ($result) { CRM_Core_Session::setStatus(ts('Campaign %1 has been saved.', array(1 => $result->title)), ts('Saved'), 'success'); $session->pushUserContext(CRM_Utils_System::url('civicrm/campaign', 'reset=1&subPage=campaign')); } $buttonName = $this->controller->getButtonName(); if ($buttonName == $this->getButtonName('upload', 'new')) { CRM_Core_Session::setStatus(ts(' You can add another Campaign.'), '', 'info'); $session->replaceUserContext(CRM_Utils_System::url('civicrm/campaign/add', 'reset=1&action=add')); } else { $session->replaceUserContext(CRM_Utils_System::url('civicrm/campaign', 'reset=1&subPage=campaign')); } }
/** * Returns the list of fields that can be exported * * @param bool $prefix * * @return array */ static function &export($prefix = false) { if (!self::$_export) { self::$_export = array(); $fields = self::fields(); foreach ($fields as $name => $field) { if (CRM_Utils_Array::value('export', $field)) { if ($prefix) { self::$_export['campaign_group'] =& $fields[$name]; } else { self::$_export[$name] =& $fields[$name]; } } } } return self::$_export; }
/** * Function to get Campaigns groups * * @param int $campaignId campaign id * * @static */ static function getCampaignGroups($campaignId) { $campaignGroups = array(); if (!$campaignId) { return $campaignGroups; } require_once 'CRM/Campaign/DAO/CampaignGroup.php'; $campGrp = new CRM_Campaign_DAO_CampaignGroup(); $campGrp->campaign_id = $campaignId; $campGrp->group_type = 'Include'; $campGrp->find(); while ($campGrp->fetch()) { CRM_Core_DAO::storeValues($campGrp, $campaignGroups[$campGrp->id]); } return $campaignGroups; }
/** * Form submission of new/edit campaign is processed. * * @access public * @return None */ public function postProcess() { // store the submitted values in an array $params = $this->controller->exportValues($this->_name); $session = CRM_Core_Session::singleton(); $groups = array(); if (isset($this->_campaignId)) { if ($this->_action & CRM_Core_Action::DELETE) { CRM_Campaign_BAO_Campaign::del($this->_campaignId); CRM_Core_Session::setStatus(ts(' Campaign has been deleted.')); $session->replaceUserContext(CRM_Utils_System::url('civicrm/campaign', 'reset=1&subPage=campaign')); return; } $params['id'] = $this->_campaignId; } else { $params['created_id'] = $session->get('userID'); $params['created_date'] = date('YmdHis'); } // format params $params['start_date'] = CRM_Utils_Date::processDate($params['start_date'], $params['start_date_time']); $params['end_date'] = CRM_Utils_Date::processDate($params['end_date'], $params['end_date_time'], true); $params['is_active'] = CRM_Utils_Array::value('is_active', $params, false); $params['last_modified_id'] = $session->get('userID'); $params['last_modified_date'] = date('YmdHis'); if (is_array($params['includeGroups'])) { foreach ($params['includeGroups'] as $key => $id) { if ($id) { $groups['include'][] = $id; } } } $params['groups'] = $groups; // delete previous includes/excludes, if campaign already existed $groupTableName = CRM_Contact_BAO_Group::getTableName(); $dao = new CRM_Campaign_DAO_CampaignGroup(); $dao->campaign_id = $this->_campaignId; $dao->entity_table = $groupTableName; $dao->find(); while ($dao->fetch()) { $dao->delete(); } require_once 'CRM/Campaign/BAO/Campaign.php'; $result = CRM_Campaign_BAO_Campaign::create($params); if ($result) { CRM_Core_Session::setStatus(ts('Campaign %1 has been saved.', array(1 => $result->title))); $session->pushUserContext(CRM_Utils_System::url('civicrm/campaign', 'reset=1&subPage=campaign')); } if ($this->_context == 'dialog') { $returnArray = array('returnSuccess' => true); echo json_encode($returnArray); CRM_Utils_System::civiExit(); } $buttonName = $this->controller->getButtonName(); if ($buttonName == $this->getButtonName('next', 'new')) { CRM_Core_Session::setStatus(ts(' You can add another Campaign.')); $session->replaceUserContext(CRM_Utils_System::url('civicrm/campaign/add', 'reset=1&action=add')); } else { $session->replaceUserContext(CRM_Utils_System::url('civicrm/campaign', 'reset=1&subPage=campaign')); } }