function preProcess()
 {
     CRM_Utils_Request::retrieve('id', 'Int', $this, false);
     $readonly = CRM_Utils_Request::retrieve('readonly', 'Boolean', $this, false);
     $this->assign('readonly', $readonly);
     $id = $this->get('id');
     $params = $this->controller->exportValues();
     $selector = new CRM_Finance_Selector_Import($id, $params);
     $this->assign('importId', $id);
     $dataExchange = new CRM_Finance_Utils_DataExchange();
     $processData = $dataExchange->getProcessById($id);
     if (isset($processData['data']['status'])) {
         $this->assign('validationSummary', $processData['data']['status']);
     }
     require_once 'CRM/Finance/BAO/Import/Source.php';
     $sourceOptions = CRM_Finance_BAO_Import_Source::getAllAsOptions();
     $processData['sourceName'] = $sourceOptions[$processData['source']];
     $this->assign('importSummary', $processData);
     $output = CRM_Core_Selector_Controller::TEMPLATE;
     $sortID = null;
     if ($this->get(CRM_Utils_Sort::SORT_ID)) {
         $sortID = CRM_Utils_Sort::sortIDValue($this->get(CRM_Utils_Sort::SORT_ID), $this->get(CRM_Utils_Sort::SORT_DIRECTION));
     }
     $controller = new CRM_Core_Selector_Controller($selector, $this->get(CRM_Utils_Pager::PAGE_ID), $sortID, CRM_Core_Action::VIEW, $this, $output);
     $controller->setEmbedded(true);
     $controller->run();
 }
class CRM_Finance_Page_AJAX
{
    function updateImport()
    {
        $importId = CRM_Utils_Array::value('import_id', $_GET);
        $importId = CRM_Utils_Type::escape($importId, 'Int');
        $recId = CRM_Utils_Array::value('id', $_GET);
        $recId = CRM_Utils_Type::escape($recId, 'Int');
        $contactId = CRM_Utils_Array::value('contact_id', $_GET);
        $contactId = CRM_Utils_Type::escape($contactId, 'Int');
        $contact = civicrm_api('Contact', 'get', array('version' => 3, 'id' => $contactId));
        if ($contact['count'] != 1) {
            throw new Exception("No contact!");
        }
        $displayName = CRM_Utils_Array::value('contact_display_name', $_GET);
        if (empty($displayName)) {
            //take it from contact loaded!
            $displayName = $contact['values'][$contact['id']]['display_name'];
        }
        $data = array('status' => 0, 'contact_id' => $contactId, 'contact_display_name' => $displayName);
        require_once 'CRM/Finance/Utils/DataExchange.php';
        $dataExchange = new CRM_Finance_Utils_DataExchange();
        $dataExchange->updateData($importId, $recId, $data);
        echo json_encode(array('is_error' => 0, 'data' => array('status_desc' => 'Updated - needs validation', 'contact_id' => $contactId, 'contact_display_name' => $displayName)));
 /**
  * returns all the rows in the given offset and rowCount
  *
  * @param enum   $action   the action being performed
  * @param int    $offset   the row number to start from
  * @param int    $rowCount the number of rows to return
  * @param string $sort     the sql string that describes the sort order
  * @param enum   $type     what should the result set include (web/email/csv)
  *
  * @return int   the total number of rows for this action
  * @access public
  */
 function &getRows($action, $offset, $rowCount, $sort, $type = null)
 {
     $id = $this->importData['id'];
     $params = array_merge($this->params, array('limitOffset' => $offset, 'limitCount' => $rowCount));
     $dao = $this->dataExchange->getDataDAO($id, $params);
     $msgs = $this->bao->getStatuses();
     $rows = array();
     while ($dao->fetch()) {
         $row = $dao->toArray();
         $row['search_contact_name'] = $this->bao->getSearchContactName($row);
         $status = $row['status'];
         $row['error_status'] = CRM_Finance_BAO_Import_SourceAbstract::isErrorStatus($status);
         $row['status_desc'] = $msgs[$status];
         $rows[] = $row;
     }
     return $rows;
 }