Exemple #1
0
 /**
  * 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;
 }
Exemple #3
0
 /**
  * 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;
 }