/** * Browse all saved searches. * * @return content of the parents run method * */ function browse() { $rows = array(); $savedSearch = new CRM_Contact_DAO_SavedSearch(); $savedSearch->is_active = 1; $savedSearch->selectAdd(); $savedSearch->selectAdd('id, form_values'); $savedSearch->find(); $properties = array('id', 'name', 'description'); while ($savedSearch->fetch()) { // get name and description from group object $group = new CRM_Contact_DAO_Group(); $group->saved_search_id = $savedSearch->id; if ($group->find(TRUE)) { $permissions = CRM_Group_Page_Group::checkPermission($group->id, $group->title); if (!CRM_Utils_System::isNull($permissions)) { $row = array(); $row['name'] = $group->title; $row['description'] = $group->description; $row['id'] = $savedSearch->id; $formValues = unserialize($savedSearch->form_values); $query = new CRM_Contact_BAO_Query($formValues); $row['query_detail'] = $query->qill(); $action = array_sum(array_keys(self::links())); $action = $action & CRM_Core_Action::mask($permissions); $row['action'] = CRM_Core_Action::formLink(self::links(), $action, array('id' => $row['id'])); $rows[] = $row; } } } $this->assign('rows', $rows); return parent::run(); }
/** * Query the db for all saved searches. * * @return array * contains the search name as value and and id as key */ public function getAll() { $savedSearch = new CRM_Contact_DAO_SavedSearch(); $savedSearch->selectAdd(); $savedSearch->selectAdd('id, name'); $savedSearch->find(); while ($savedSearch->fetch()) { $aSavedSearch[$savedSearch->id] = $savedSearch->name; } return $aSavedSearch; }
/** * Change saved search. * * @param \CRM_Queue_TaskContext $ctx * * @return bool */ public static function changeSavedSearch(CRM_Queue_TaskContext $ctx) { $membershipStatuses = array_flip(CRM_Member_PseudoConstant::membershipStatus()); $dao = new CRM_Contact_DAO_SavedSearch(); $dao->find(); while ($dao->fetch()) { $formValues = NULL; if (!empty($dao->form_values)) { $formValues = unserialize($dao->form_values); } if (!empty($formValues['mapper'])) { foreach ($formValues['mapper'] as $key => $value) { foreach ($value as $k => $v) { if ($v[0] == 'Membership' && in_array($v[1], array('membership_status', 'membership_status_id'))) { $value = $formValues['value'][$key][$k]; $op = $formValues['operator'][$key][$k]; if ($op == 'IN') { $value = trim($value); $value = str_replace('(', '', $value); $value = str_replace(')', '', $value); $v = explode(',', $value); $value = array(); foreach ($v as $k1 => $v2) { if (is_numeric($v2)) { break 2; } $value[$k1] = $membershipStatuses[$v2]; } $formValues['value'][$key][$k] = "(" . implode(',', $value) . ")"; } elseif (in_array($op, array('=', '!='))) { if (is_numeric($value)) { break; } $formValues['value'][$key][$k] = $membershipStatuses[$value]; } } } } $dao->form_values = serialize($formValues); $dao->save(); } } return TRUE; }