Пример #1
0
 /**
  * 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();
 }