예제 #1
0
 function run()
 {
     CRM_Utils_System::setTitle(ts('Bank Transaction Exporter'));
     // get the plugins
     $plugin_list = CRM_Banking_BAO_PluginInstance::listInstances('export');
     $this->assign('plugin_list', $plugin_list);
     // get the IDs
     $txbatch2ids = CRM_Banking_PluginModel_Exporter::getIdLists($_REQUEST);
     $txcount = 0;
     foreach ($txbatch2ids as $txbatchid => $txbatchcontent) {
         $txcount += count($txbatchcontent);
     }
     $this->assign('txbatch_count', count($txbatch2ids));
     $this->assign('tx_count', $txcount);
     if (!empty($_REQUEST['list'])) {
         $this->assign('list', $_REQUEST['list']);
     }
     if (!empty($_REQUEST['s_list'])) {
         $this->assign('s_list', $_REQUEST['s_list']);
     }
     // check for the page mode
     if (isset($_REQUEST['exporter-plugin'])) {
         // EXECUTE
         // get the plugin instance
         $plugin_id = $_REQUEST['exporter-plugin'];
         foreach ($plugin_list as $plugin) {
             if ($plugin->id == $plugin_id) {
                 break;
             }
         }
         $plugin_instance = $plugin->getInstance();
         // TODO: select WHICH mode (this is only file mode)
         // start exporting
         $file_data = $plugin_instance->export_file($txbatch2ids, $_REQUEST);
         // process result (redirect, ...)
         if (empty($file_data['is_error'])) {
             $mime_type = mime_content_type($file_data['path']);
             $buffer = file_get_contents($file_data['path']);
             CRM_Utils_System::download($file_data['file_name'], $file_data['mime_type'], $buffer, $file_data['file_extension']);
         }
     } else {
         // CONFIGURATION MODE:
         $plugin_capabilities = array();
         foreach ($plugin_list as $plugin) {
             $capability = '';
             $instance = $plugin->getInstance();
             if ($instance->does_export_files()) {
                 $capability .= 'F';
             }
             if ($instance->does_export_stream()) {
                 $capability .= 'S';
             }
             $plugin_capabilities[$plugin->id] = $capability;
         }
         $this->assign('plugin_capabilities', $plugin_capabilities);
     }
     // URLs
     $this->assign('url_action', CRM_Utils_System::url('civicrm/banking/export'));
     parent::run();
 }
예제 #2
0
 function run()
 {
     // Example: Set the page-title dynamically; alternatively, declare a static title in xml/Menu/*.xml
     CRM_Utils_System::setTitle(ts('Bank Transaction Importer'));
     // get the plugins
     $plugin_list = CRM_Banking_BAO_PluginInstance::listInstances('import');
     // check for the page mode
     if (isset($_REQUEST['importer-plugin'])) {
         // RUN MODE
         $this->assign('page_mode', 'run');
         $plugin_id = $_REQUEST['importer-plugin'];
         $this->assign('plugin_id', $plugin_id);
         // assign values
         $this->assign('dry_run', isset($_REQUEST['dry_run']) ? $_REQUEST['dry_run'] : "off");
         $this->assign('process', isset($_REQUEST['process']) ? $_REQUEST['process'] : "off");
         foreach ($plugin_list as $plugin) {
             if ($plugin->id == $plugin_id) {
                 $this->assign('plugin_list', array($plugin));
                 break;
             }
         }
         // RUN the importer
         $file_info = isset($_FILES['uploadFile']) ? $_FILES['uploadFile'] : null;
         $this->assign('file_info', $file_info);
         $plugin_instance = $plugin->getInstance();
         $import_parameters = array('dry_run' => isset($_REQUEST['dry_run']) ? $_REQUEST['dry_run'] : "off", 'source' => isset($file_info['name']) ? $file_info['name'] : 'stream');
         if ($file_info != null && $plugin_instance::does_import_files()) {
             // run file import
             $file = $file_info['tmp_name'];
             if ($plugin_instance->probe_file($file, $import_parameters)) {
                 $plugin_instance->import_file($file, $import_parameters);
             } else {
                 CRM_Core_Session::setStatus(ts('File rejected by importer!'), ts('Bad input file'), 'alert');
             }
         } else {
             if ($plugin_instance::does_import_stream()) {
                 // run stream import
                 if ($plugin_instance->probe_stream($import_parameters)) {
                     $plugin_instance->import_stream($import_parameters);
                 } else {
                     CRM_Core_Session::setStatus(ts('Import stream rejected by importer, maybe not ready!'), ts('Bad input stream'), 'alert');
                 }
             } else {
                 CRM_Core_Session::setStatus(ts('Importer needs a file to proceed.'), ts('No input file'), 'alert');
             }
         }
         // TODO: RUN the processor
         if (isset($_REQUEST['process']) && $_REQUEST['process'] == "on") {
             CRM_Core_Session::setStatus(ts('Automated running not yet implemented'), ts('Not implemented'), 'alert');
         }
         // add the resulting log
         $this->assign('log', $plugin_instance->getLog());
     } else {
         // CONFIGURATION MODE:
         $this->assign('page_mode', 'config');
         $this->assign('plugin_list', $plugin_list);
         // extract the sources for the plugins
         $has_file_source = array();
         foreach ($plugin_list as $plugin) {
             $class = $plugin->getClass();
             if ($class::does_import_files()) {
                 $has_file_source[$plugin->id] = 'true';
             } else {
                 $has_file_source[$plugin->id] = 'false';
             }
         }
         $this->assign('has_file_source', $has_file_source);
     }
     // URLs
     $this->assign('url_action', CRM_Utils_System::url('civicrm/banking/import'));
     $this->assign('url_payments', CRM_Utils_System::url('civicrm/banking/payments', 'show=statements'));
     parent::run();
 }