function &civicrm_api3_survey_respondant_count($params) { $petition = new CRM_Campaign_BAO_Petition(); if (array_key_exists('groupby', $params) && $params['groupby'] == 'country') { $signaturesCount = $petition->getPetitionSignatureTotalbyCountry($params['survey_id']); } else { $signaturesCount = $petition->getPetitionSignatureTotal($params['survey_id']); } return $signaturesCount; }
public function browse() { //get the survey id $surveyId = CRM_Utils_Request::retrieve('sid', 'Positive', $this); $signatures = CRM_Campaign_BAO_Petition::getPetitionSignature($surveyId); $this->assign('signatures', $signatures); }
function browse() { require_once 'CRM/Core/Permission.php'; //get the survey id $surveyId = CRM_Utils_Request::retrieve('sid', 'Positive', $this); $signatures = CRM_Campaign_BAO_Petition::getPetitionSignature($surveyId); $this->assign('signatures', $signatures); }
/** * Function to check if contact has signed this petition * * @param int $surveyId * @param int $contactId * * @return array * @static */ static function checkSignature($surveyId, $contactId) { $surveyInfo = CRM_Campaign_BAO_Petition::getSurveyInfo($surveyId); $signature = array(); $activityContacts = CRM_Core_OptionGroup::values('activity_contacts', FALSE, FALSE, FALSE, NULL, 'name'); $sourceID = CRM_Utils_Array::key('Activity Source', $activityContacts); $sql = "\n SELECT a.id AS id,\n a.source_record_id AS source_record_id,\n ac.contact_id AS source_contact_id,\n a.activity_date_time AS activity_date_time,\n a.activity_type_id AS activity_type_id,\n a.status_id AS status_id,\n %1 AS survey_title\n FROM civicrm_activity a\n INNER JOIN civicrm_activity_contact ac ON (ac.activity_id = a.id AND ac.record_type_id = %5)\n WHERE a.source_record_id = %2\n AND a.activity_type_id = %3\n AND ac.contact_id = %4\n"; $params = array(1 => array($surveyInfo['title'], 'String'), 2 => array($surveyId, 'Integer'), 3 => array($surveyInfo['activity_type_id'], 'Integer'), 4 => array($contactId, 'Integer'), 5 => array($sourceID, 'Integer')); $dao = CRM_Core_DAO::executeQuery($sql, $params); while ($dao->fetch()) { $signature[$dao->id]['id'] = $dao->id; $signature[$dao->id]['source_record_id'] = $dao->source_record_id; $signature[$dao->id]['source_contact_id'] = CRM_Contact_BAO_Contact::displayName($dao->source_contact_id); $signature[$dao->id]['activity_date_time'] = $dao->activity_date_time; $signature[$dao->id]['activity_type_id'] = $dao->activity_type_id; $signature[$dao->id]['status_id'] = $dao->status_id; $signature[$dao->id]['survey_title'] = $dao->survey_title; $signature[$dao->id]['contactId'] = $dao->source_contact_id; } return $signature; }
/** * This function uses the deprecated v1 datatable api and needs updating. See CRM-16353. * @deprecated */ public function petitionList() { //get the search criteria params. $searchCriteria = CRM_Utils_Request::retrieve('searchCriteria', 'String', CRM_Core_DAO::$_nullObject, FALSE, NULL, 'POST'); $searchParams = explode(',', $searchCriteria); $params = $searchRows = array(); foreach ($searchParams as $param) { if (!empty($_POST[$param])) { $params[$param] = $_POST[$param]; } } //this is sequence columns on datatable. $selectorCols = array('id', 'title', 'campaign_id', 'campaign', 'activity_type_id', 'activity_type', 'is_default', 'is_active', 'isActive', 'action'); // get the data table params. $dataTableParams = array('sEcho' => array('name' => 'sEcho', 'type' => 'Integer', 'default' => 0), 'offset' => array('name' => 'iDisplayStart', 'type' => 'Integer', 'default' => 0), 'rowCount' => array('name' => 'iDisplayLength', 'type' => 'Integer', 'default' => 25), 'sort' => array('name' => 'iSortCol_0', 'type' => 'Integer', 'default' => 'created_date'), 'sortOrder' => array('name' => 'sSortDir_0', 'type' => 'String', 'default' => 'desc')); foreach ($dataTableParams as $pName => $pValues) { ${$pName} = $pValues['default']; if (!empty($_POST[$pValues['name']])) { ${$pName} = CRM_Utils_Type::escape($_POST[$pValues['name']], $pValues['type']); if ($pName == 'sort') { ${$pName} = $selectorCols[${$pName}]; } } } foreach (array('sort', 'offset', 'rowCount', 'sortOrder') as $sortParam) { $params[$sortParam] = ${$sortParam}; } $petitions = CRM_Campaign_Page_DashBoard::getPetitionSummary($params); $searchCount = CRM_Campaign_BAO_Petition::getPetitionSummary($params, TRUE); $iTotal = $searchCount; if ($searchCount > 0) { if ($searchCount < $offset) { $offset = 0; } foreach ($petitions as $petitionID => $values) { foreach ($selectorCols as $col) { $searchRows[$petitionID][$col] = CRM_Utils_Array::value($col, $values); } } } $selectorElements = $selectorCols; $iFilteredTotal = $iTotal; CRM_Utils_System::setHttpHeader('Content-Type', 'application/json'); echo CRM_Utils_JSON::encodeDataTableSelector($searchRows, $sEcho, $iTotal, $iFilteredTotal, $selectorElements); CRM_Utils_System::civiExit(); }
/** * Confirm email verification. * * @param int $contact_id * The id of the contact. * @param int $subscribe_id * The id of the subscription event. * @param string $hash * The hash. * * @param int $activity_id * @param int $petition_id * * @return bool * True on success */ public static function confirm($contact_id, $subscribe_id, $hash, $activity_id, $petition_id) { $se = CRM_Mailing_Event_BAO_Subscribe::verify($contact_id, $subscribe_id, $hash); if (!$se) { return FALSE; } $transaction = new CRM_Core_Transaction(); $ce = new CRM_Mailing_Event_BAO_Confirm(); $ce->event_subscribe_id = $se->id; $ce->time_stamp = date('YmdHis'); $ce->save(); CRM_Contact_BAO_GroupContact::addContactsToGroup(array($contact_id), $se->group_id, 'Email', 'Added', $ce->id); $bao = new CRM_Campaign_BAO_Petition(); $bao->confirmSignature($activity_id, $contact_id, $petition_id); }
/** * @param array $params * * @return array */ public static function getPetitionSummary($params = array()) { $config = CRM_Core_Config::singleton(); $petitionsData = array(); //get the petitions. $petitions = CRM_Campaign_BAO_Petition::getPetitionSummary($params); if (!empty($petitions)) { $campaigns = CRM_Campaign_BAO_Campaign::getCampaigns(NULL, NULL, FALSE, FALSE, FALSE, TRUE); $petitionType = CRM_Campaign_BAO_Survey::getSurveyActivityType('label', TRUE); foreach ($petitions as $pid => $petition) { $petitionsData[$pid] = $petition; $camapignId = CRM_Utils_Array::value('campaign_id', $petition); $petitionsData[$pid]['campaign'] = CRM_Utils_Array::value($camapignId, $campaigns); $petitionsData[$pid]['activity_type'] = $petitionType[$petition['activity_type_id']]; $action = array_sum(array_keys(self::petitionActionLinks())); if ($petition['is_active']) { $action -= CRM_Core_Action::ENABLE; } else { $action -= CRM_Core_Action::DISABLE; } $isActive = ts('No'); if ($petitionsData[$pid]['is_active']) { $isActive = ts('Yes'); } $petitionsData[$pid]['isActive'] = $isActive; $isDefault = NULL; if ($petitionsData[$pid]['is_default']) { $isDefault = '<img src="' . $config->resourceBase . 'i/check.gif" alt="' . ts('Default') . '" />'; } $petitionsData[$pid]['is_default'] = $isDefault; $petitionsData[$pid]['action'] = CRM_Core_Action::formLink(self::petitionActionLinks(), $action, array('id' => $pid), ts('more'), FALSE, 'petition.dashboard.row', 'Petition', $pid); } } return $petitionsData; }
/** * Function to check if contact has signed this petition * * @param int $surveyId * @param int $contactId * @static */ static function checkSignature($surveyId, $contactId) { $surveyInfo = CRM_Campaign_BAO_Petition::getSurveyInfo($surveyId); $signature = array(); $sql = "\nSELECT \ta.id AS id,\n\t\ta.source_record_id AS source_record_id,\n\t\ta.source_contact_id AS source_contact_id,\n\t\ta.activity_date_time AS activity_date_time,\n\t\ta.activity_type_id AS activity_type_id,\n\t\ta.status_id AS status_id," . "'" . $surveyInfo['title'] . "'" . " AS survey_title \nFROM \tcivicrm_activity a\nWHERE \ta.source_record_id = " . $surveyId . " \n\tAND a.activity_type_id = " . $surveyInfo['activity_type_id'] . "\n\tAND a.source_contact_id = " . $contactId; require_once 'CRM/Contact/BAO/Contact.php'; $dao =& CRM_Core_DAO::executeQuery($sql); while ($dao->fetch()) { $signature[$dao->id]['id'] = $dao->id; $signature[$dao->id]['source_record_id'] = $dao->source_record_id; $signature[$dao->id]['source_contact_id'] = CRM_Contact_BAO_Contact::displayName($dao->source_contact_id); $signature[$dao->id]['activity_date_time'] = $dao->activity_date_time; $signature[$dao->id]['activity_type_id'] = $dao->activity_type_id; $signature[$dao->id]['status_id'] = $dao->status_id; $signature[$dao->id]['survey_title'] = $dao->survey_title; $signature[$dao->id]['contactId'] = $dao->source_contact_id; } return $signature; }
/** * Confirm email verification * * @param int $contact_id The id of the contact * @param int $subscribe_id The id of the subscription event * @param string $hash The hash * @return boolean True on success * @access public * @static */ public static function confirm($contact_id, $subscribe_id, $hash, $activity_id, $petition_id) { require_once 'CRM/Mailing/Event/BAO/Subscribe.php'; $se =& CRM_Mailing_Event_BAO_Subscribe::verify($contact_id, $subscribe_id, $hash); if (!$se) { return false; } require_once 'CRM/Core/Transaction.php'; $transaction = new CRM_Core_Transaction(); $ce = new CRM_Mailing_Event_BAO_Confirm(); $ce->event_subscribe_id = $se->id; $ce->time_stamp = date('YmdHis'); $ce->save(); require_once 'CRM/Contact/BAO/GroupContact.php'; CRM_Contact_BAO_GroupContact::updateGroupMembershipStatus($contact_id, $se->group_id, 'Email', $ce->id); require_once 'CRM/Campaign/BAO/Petition.php'; $bao = new CRM_Campaign_BAO_Petition(); $bao->confirmSignature($activity_id, $contact_id, $petition_id); }
/** * Function to check if contact has signed this petition * * @param int $surveyId * @param int $contactId * @static */ static function checkSignature($surveyId, $contactId) { $surveyInfo = CRM_Campaign_BAO_Petition::getSurveyInfo($surveyId); $signature = array(); $sql = "\n SELECT a.id AS id,\n a.source_record_id AS source_record_id,\n a.source_contact_id AS source_contact_id,\n a.activity_date_time AS activity_date_time,\n a.activity_type_id AS activity_type_id,\n a.status_id AS status_id,\n %1 AS survey_title\n FROM civicrm_activity a\n WHERE a.source_record_id = %2\n AND a.activity_type_id = %3\n AND a.source_contact_id = %4\n"; $params = array(1 => array($surveyInfo['title'], 'String'), 2 => array($surveyId, 'Integer'), 3 => array($surveyInfo['activity_type_id'], 'Integer'), 4 => array($contactId, 'Integer')); $dao = CRM_Core_DAO::executeQuery($sql, $params); while ($dao->fetch()) { $signature[$dao->id]['id'] = $dao->id; $signature[$dao->id]['source_record_id'] = $dao->source_record_id; $signature[$dao->id]['source_contact_id'] = CRM_Contact_BAO_Contact::displayName($dao->source_contact_id); $signature[$dao->id]['activity_date_time'] = $dao->activity_date_time; $signature[$dao->id]['activity_type_id'] = $dao->activity_type_id; $signature[$dao->id]['status_id'] = $dao->status_id; $signature[$dao->id]['survey_title'] = $dao->survey_title; $signature[$dao->id]['contactId'] = $dao->source_contact_id; } return $signature; }
function browsePetition() { $surveysData = array(); //get the survey. $surveys = CRM_Campaign_BAO_Petition::getPetition(true); if (!empty($surveys)) { $campaigns = CRM_Campaign_BAO_Campaign::getAllCampaign(); $surveyType = CRM_Campaign_BAO_Survey::getSurveyActivityType(); foreach ($surveys as $sid => $survey) { $surveysData[$sid] = $survey; $camapignId = CRM_Utils_Array::value('campaign_id', $survey); $surveysData[$sid]['campaign_id'] = CRM_Utils_Array::value($camapignId, $campaigns); $surveysData[$sid]['activity_type'] = $surveyType[$survey['activity_type_id']]; $surveysData[$sid]['result_id'] = CRM_Utils_Array::value('result_id', $survey); if (CRM_Utils_Array::value('release_frequency', $survey)) { $surveysData[$sid]['release_frequency'] = $survey['release_frequency'] . ' Day(s)'; } $action = array_sum(array_keys($this->surveyActionLinks($surveysData[$sid]['activity_type']))); if ($survey['is_active']) { $action -= CRM_Core_Action::ENABLE; } else { $action -= CRM_Core_Action::DISABLE; } $surveysData[$sid]['action'] = CRM_Core_Action::formLink($this->surveyActionLinks($surveysData[$sid]['activity_type']), $action, array('id' => $sid)); if (CRM_Utils_Array::value('activity_type', $surveysData[$sid]) != 'Petition') { $surveysData[$sid]['voterLinks'] = CRM_Campaign_BAO_Survey::buildPermissionLinks($sid); } } } $this->assign('surveys', $surveysData); $this->assign('addSurveyUrl', CRM_Utils_System::url('civicrm/petition/add', 'reset=1&action=add')); }