Skip to content

Commit

Permalink
civicrm: pre-release fix for export
Browse files Browse the repository at this point in the history
civicrm/civicrm-core#11936
Signed-off-by: Kevin Cristiano <kcristiano@tadpole.cc>
  • Loading branch information
kcristiano committed May 16, 2018
1 parent 8b16271 commit a4138d5
Show file tree
Hide file tree
Showing 8 changed files with 129 additions and 155 deletions.
74 changes: 0 additions & 74 deletions civicrm/CRM/Case/Form/Task.php
Original file line number Diff line number Diff line change
Expand Up @@ -40,80 +40,6 @@ class CRM_Case_Form_Task extends CRM_Core_Form_Task {
// Must be set to entity shortname (eg. event)
static $entityShortname = 'case';

/**
* Deprecated copy of $_entityIds
*
* @var array
* @deprecated
*/
public $_caseIds;

/**
* Build all the data structures needed to build the form.
*/
public function preProcess() {
self::preProcessCommon($this);
}

/**
* @param CRM_Core_Form $form
*/
public static function preProcessCommon(&$form) {
$form->_caseIds = array();

$values = $form->controller->exportValues($form->get('searchFormName'));

$form->_task = $values['task'];
$caseTasks = CRM_Case_Task::tasks();
$form->assign('taskName', $caseTasks[$form->_task]);

$ids = array();
if ($values['radio_ts'] == 'ts_sel') {
foreach ($values as $name => $value) {
if (substr($name, 0, CRM_Core_Form::CB_PREFIX_LEN) == CRM_Core_Form::CB_PREFIX) {
$ids[] = substr($name, CRM_Core_Form::CB_PREFIX_LEN);
}
}
}
else {
$queryParams = $form->get('queryParams');
$query = new CRM_Contact_BAO_Query($queryParams, NULL, NULL, FALSE, FALSE,
CRM_Contact_BAO_Query::MODE_CASE
);
$query->_distinctComponentClause = " ( civicrm_case.id )";
$query->_groupByComponentClause = " GROUP BY civicrm_case.id ";
$result = $query->searchQuery(0, 0, NULL);
while ($result->fetch()) {
$ids[] = $result->case_id;
}
}

if (!empty($ids)) {
$form->_componentClause = ' civicrm_case.id IN ( ' . implode(',', $ids) . ' ) ';
$form->assign('totalSelectedCases', count($ids));
}

$form->_caseIds = $form->_entityIds = $form->_componentIds = $ids;

//set the context for redirection for any task actions
$qfKey = CRM_Utils_Request::retrieve('qfKey', 'String', $form);
$urlParams = 'force=1';
if (CRM_Utils_Rule::qfKey($qfKey)) {
$urlParams .= "&qfKey=$qfKey";
}

$session = CRM_Core_Session::singleton();
$searchFormName = strtolower($form->get('searchFormName'));
if ($searchFormName == 'search') {
$session->replaceUserContext(CRM_Utils_System::url('civicrm/case/search', $urlParams));
}
else {
$session->replaceUserContext(CRM_Utils_System::url("civicrm/contact/search/$searchFormName",
$urlParams
));
}
}

/**
* @inheritDoc
*/
Expand Down
2 changes: 1 addition & 1 deletion civicrm/CRM/Case/Form/Task/Delete.php
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ public function buildQuickForm() {
*/
public function postProcess() {
$deleted = $failed = 0;
foreach ($this->_caseIds as $caseId) {
foreach ($this->_entityIds as $caseId) {
if (CRM_Case_BAO_Case::deleteCase($caseId, $this->_moveToTrash)) {
$deleted++;
}
Expand Down
2 changes: 1 addition & 1 deletion civicrm/CRM/Case/Form/Task/PDF.php
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ public function postProcess() {
*/
public function listTokens() {
$tokens = CRM_Core_SelectValues::contactTokens();
foreach ($this->_componentIds as $key => $caseId) {
foreach ($this->_entityIds as $key => $caseId) {
$caseTypeId = CRM_Core_DAO::getFieldValue('CRM_Case_DAO_Case', $caseId, 'case_type_id');
$tokens += CRM_Core_SelectValues::caseTokens($caseTypeId);
}
Expand Down
2 changes: 1 addition & 1 deletion civicrm/CRM/Case/Form/Task/Restore.php
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ public function buildQuickForm() {
*/
public function postProcess() {
$restoredCases = $failed = 0;
foreach ($this->_caseIds as $caseId) {
foreach ($this->_entityIds as $caseId) {
if (CRM_Case_BAO_Case::restoreCase($caseId)) {
$restoredCases++;
}
Expand Down
2 changes: 1 addition & 1 deletion civicrm/CRM/Case/Form/Task/SearchTaskHookSample.php
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ public function preProcess() {
parent::preProcess();
$rows = array();
// display name and email of all contact ids
$caseIDs = implode(',', $this->_caseIds);
$caseIDs = implode(',', $this->_entityIds);
$statusId = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_OptionGroup', 'case_status', 'id', 'name');
$query = "
SELECT ct.display_name as display_name,
Expand Down
1 change: 1 addition & 0 deletions civicrm/CRM/Core/DAO.php
Original file line number Diff line number Diff line change
Expand Up @@ -1686,6 +1686,7 @@ public static function cascadeUpdate($daoName, $fromId, $toId, $newData = array(
* @param $componentIDs
* @param string $tableName
* @param string $idField
*
* @return array
*/
public static function getContactIDsFromComponent($componentIDs, $tableName, $idField = 'id') {
Expand Down
58 changes: 39 additions & 19 deletions civicrm/CRM/Core/Form/Task.php
Original file line number Diff line number Diff line change
Expand Up @@ -77,16 +77,30 @@ abstract class CRM_Core_Form_Task extends CRM_Core_Form {

/**
* Build all the data structures needed to build the form.
*
* @throws \CRM_Core_Exception
*/
public function preProcess() {
$this->_entityIds = array();
self::preProcessCommon($this);
}

/**
* Common pre-processing function.
*
* @param CRM_Core_Form $form
* @param bool $useTable FIXME This parameter could probably be deprecated as it's not used here
*
* @throws \CRM_Core_Exception
*/
public static function preProcessCommon(&$form, $useTable = FALSE) {
$form->_entityIds = array();

$values = $this->controller->exportValues($this->get('searchFormName'));
$values = $form->controller->exportValues($form->get('searchFormName'));

$this->_task = $values['task'];
$className = 'CRM_' . ucfirst($this::$entityShortname) . '_Task';
$form->_task = $values['task'];
$className = 'CRM_' . ucfirst($form::$entityShortname) . '_Task';
$entityTasks = $className::tasks();
$this->assign('taskName', $entityTasks[$this->_task]);
$form->assign('taskName', $entityTasks[$form->_task]);

$ids = array();
if ($values['radio_ts'] == 'ts_sel') {
Expand All @@ -97,42 +111,48 @@ public function preProcess() {
}
}
else {
$queryParams = $this->get('queryParams');
$queryParams = $form->get('queryParams');
$sortOrder = NULL;
if ($this->get(CRM_Utils_Sort::SORT_ORDER)) {
$sortOrder = $this->get(CRM_Utils_Sort::SORT_ORDER);
if ($form->get(CRM_Utils_Sort::SORT_ORDER)) {
$sortOrder = $form->get(CRM_Utils_Sort::SORT_ORDER);
}

$query = new CRM_Contact_BAO_Query($queryParams, NULL, NULL, FALSE, FALSE,
CRM_Contact_BAO_Query::MODE_CASE
);
$query->_distinctComponentClause = " ( " . $this::$tableName . ".id )";
$query->_groupByComponentClause = " GROUP BY " . $this::$tableName . ".id ";
$query->_distinctComponentClause = " ( " . $form::$tableName . ".id )";
$query->_groupByComponentClause = " GROUP BY " . $form::$tableName . ".id ";
$result = $query->searchQuery(0, 0, $sortOrder);
$selector = $this::$entityShortname . '_id';
$selector = $form::$entityShortname . '_id';
while ($result->fetch()) {
$ids[] = $result->$selector;
}
}

if (!empty($ids)) {
$this->_componentClause = ' ' . $this::$tableName . '.id IN ( ' . implode(',', $ids) . ' ) ';
$this->assign('totalSelected' . ucfirst($this::$entityShortname) . 's', count($ids));
$form->_componentClause = ' ' . $form::$tableName . '.id IN ( ' . implode(',', $ids) . ' ) ';
$form->assign('totalSelected' . ucfirst($form::$entityShortname) . 's', count($ids));
}

$this->_entityIds = $this->_componentIds = $ids;
$form->_entityIds = $form->_componentIds = $ids;

// Some functions (eg. PDF letter tokens) rely on Ids being in specific fields rather than the generic $form->_entityIds
// So we set that specific field here (eg. for cases $form->_caseIds = $form->_entityIds).
// FIXME: This is really to handle legacy code that should probably be updated to use $form->_entityIds
$entitySpecificIdsName = '_' . $form::$entityShortname . 'Ids';
$form->$entitySpecificIdsName = $form->_entityIds;

//set the context for redirection for any task actions
$qfKey = CRM_Utils_Request::retrieve('qfKey', 'String', $this);
$qfKey = CRM_Utils_Request::retrieve('qfKey', 'String', $form);
$urlParams = 'force=1';
if (CRM_Utils_Rule::qfKey($qfKey)) {
$urlParams .= "&qfKey=$qfKey";
}

$session = CRM_Core_Session::singleton();
$searchFormName = strtolower($this->get('searchFormName'));
$searchFormName = strtolower($form->get('searchFormName'));
if ($searchFormName == 'search') {
$session->replaceUserContext(CRM_Utils_System::url('civicrm/' . $this::$entityShortname . '/search', $urlParams));
$session->replaceUserContext(CRM_Utils_System::url('civicrm/' . $form::$entityShortname . '/search', $urlParams));
}
else {
$session->replaceUserContext(CRM_Utils_System::url("civicrm/contact/search/$searchFormName",
Expand All @@ -142,8 +162,8 @@ public function preProcess() {
}

/**
* Given the signer id, compute the contact id
* since its used for things like send email
* Given the entity id, compute the contact id since its used for things like send email
* For example, for cases we need to override this function as the table name is civicrm_case_contact
*/
public function setContactIDs() {
$this->_contactIds = &CRM_Core_DAO::getContactIDsFromComponent($this->_entityIds,
Expand Down
Loading

0 comments on commit a4138d5

Please sign in to comment.