/** * Phase for composing a message * * @param String $handler_id Name of the request handler * @param array $args Variable arguments * @param array &$data Public request data, passed by reference */ public function _handler_compose($handler_id, array $args, array &$data) { midcom::get('auth')->request_sudo(); //Load message $data['message'] = new org_openpsa_directmarketing_campaign_message_dba($args[0]); $data['campaign'] = new org_openpsa_directmarketing_campaign_dba($data['message']->campaign); $this->set_active_leaf('campaign_' . $data['campaign']->id); $this->_load_datamanager(); $this->_datamanager->autoset_storage($data['message']); $data['message_obj'] =& $data['message']; $data['message_dm'] =& $this->_datamanager; if ($handler_id === 'compose4person') { $data['person'] = new org_openpsa_contacts_person_dba($args[1]); $qb = org_openpsa_directmarketing_campaign_member_dba::new_query_builder(); $qb->add_constraint('person', '=', $this->_request_data['person']->id); $memberships = $qb->execute(); if (empty($memberships)) { $data['member'] = new org_openpsa_directmarketing_campaign_member_dba(); $data['member']->person = $data['person']->id; $data['member']->campaign = $data['message']->campaign; } else { $data['member'] = $memberships[0]; } } $data['message_array'] = $this->_datamanager->get_content_raw(); if (!array_key_exists('content', $data['message_array'])) { throw new midcom_error('"content" not defined in schema'); } //Substyle handling @debug_add("\$data['message_array']['substyle']='{$data['message_array']['substyle']}'"); if (array_key_exists('substyle', $data['message_array']) && !empty($data['message_array']['substyle']) && !preg_match('/^builtin:/', $data['message_array']['substyle'])) { debug_add("Appending substyle {$data['message_array']['substyle']}"); midcom::get('style')->append_substyle($data['message_array']['substyle']); } //This isn't necessary for dynamic-loading, but is nice for "preview". midcom::get()->skip_page_style = true; debug_add('message type: ' . $data['message_obj']->orgOpenpsaObtype); switch ($data['message_obj']->orgOpenpsaObtype) { case org_openpsa_directmarketing_campaign_message_dba::EMAIL_TEXT: case org_openpsa_directmarketing_campaign_message_dba::SMS: debug_add('Forcing content type: text/plain'); midcom::get('cache')->content->content_type('text/plain'); break; //TODO: Other content type overrides ? } midcom::get('auth')->drop_sudo(); }