Skip to content
Snippets Groups Projects
CaseSearch.php 3.98 KiB
Newer Older
  • Learn to ignore specific revisions
  • jaapjansma's avatar
    jaapjansma committed
    <?php
    /**
     * @author Jaap Jansma <jaap.jansma@civicoop.org>
     * @license AGPL-3.0
     */
    
    use CRM_Dataprocessor_ExtensionUtil as E;
    
    class CRM_DataprocessorSearch_Form_CaseSearch extends CRM_DataprocessorSearch_Form_AbstractSearch {
    
    
      /**
       * Returns the name of the default Entity
       *
       * @return string
       */
      public function getDefaultEntity() {
        return 'Contact';
      }
    
    
    jaapjansma's avatar
    jaapjansma committed
      /**
       * Returns the url for view of the record action
       *
       * @param $row
       *
       * @return false|string
       */
      protected function link($row) {
        $record = $row['record'];
        $idFieldName = $this->getIdFieldName();
        $contactIdFieldName = $this->getContactIdFieldName();
        $caseId = $record[$idFieldName]->formattedValue;
        $contactId = $record[$contactIdFieldName]->formattedValue;
        return CRM_Utils_System::url('civicrm/contact/view/case', 'reset=1&action=view&id='.$caseId.'&cid='.$contactId.'&context=search');
      }
    
      /**
       * Returns the link text for view of the record action
       *
       * @param $row
       *
       * @return false|string
       */
      protected function linkText($row) {
        return E::ts('Manage case');
      }
    
      /**
       * Return the data processor name
       *
       * @return String
       */
      protected function getDataProcessorName() {
        $dataProcessorName = str_replace('civicrm/dataprocessor_case_search/', '', CRM_Utils_System::getUrlPath());
        return $dataProcessorName;
      }
    
      /**
       * Returns the name of the output for this search
       *
       * @return string
       */
      protected function getOutputName() {
        return 'case_search';
      }
    
      /**
       * Checks whether the output has a valid configuration
       *
       * @return bool
       */
      protected function isConfigurationValid() {
        if (!isset($this->dataProcessorOutput['configuration']['case_id_field'])) {
          return false;
        }
        if (!isset($this->dataProcessorOutput['configuration']['contact_id_field'])) {
          return false;
        }
        return true;
      }
    
      /**
       * Returns the name of the ID field in the dataset.
       *
       * @return string
       */
      protected function getIdFieldName() {
        return $this->dataProcessorOutput['configuration']['case_id_field'];
      }
    
      /**
       * Returns the name of the ID field in the dataset.
       *
       * @return string
       */
      protected function getContactIdFieldName() {
        return $this->dataProcessorOutput['configuration']['contact_id_field'];
      }
    
      /**
       * @return string
       */
      protected function getEntityTable() {
        return 'civicrm_case';
      }
    
      /**
       * Builds the list of tasks or actions that a searcher can perform on a result set.
       *
       * @return array
       */
      public function buildTaskList() {
        if (!$this->_taskList) {
          $this->_taskList = CRM_Case_Task::permissionedTaskTitles(CRM_Core_Permission::getPermission());
        }
        return $this->_taskList;
      }
    
    
      /**
       * Returns whether the ID field is Visible
       *
       * @return bool
       */
      protected function isIdFieldVisible() {
        if (isset($this->dataProcessorOutput['configuration']['hide_id_fields']) && $this->dataProcessorOutput['configuration']['hide_id_fields']) {
          return false;
        }
        return true;
      }
    
      /**
       * Returns an array with hidden columns
       *
       * @return array
       */
      protected function getHiddenFields() {
        $hiddenFields = array();
        if (!$this->isIdFieldVisible()) {
          $hiddenFields[] = $this->getIdFieldName();
          $hiddenFields[] = $this->getContactIdFieldName();
        }
        return $hiddenFields;
      }
    
    
      /**
       * Return altered rows
       *
       * Save the ids into the queryParams value. So that when an action is done on the selected record
       * or on all records, the queryParams will hold all the activity ids so that in the next step only the selected record, or the first
       * 50 records are populated.
       *
       * @param array $rows
       * @param array $ids
       *
       */
      protected function alterRows(&$rows, $ids) {
        $this->entityIDs = $ids;
        $this->_queryParams[0] = array(
          'case_id',
          '=',
          array(
            'IN' => $this->entityIDs,
          ),
          0,
          0
        );
        $this->controller->set('queryParams', $this->_queryParams);
      }
    
    }