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;
}
Beispiel #2
0
 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);
 }
Beispiel #3
0
 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;
 }
Beispiel #5
0
 /**
  * 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();
 }
Beispiel #6
0
 /**
  * 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);
 }
Beispiel #7
0
 /**
  * @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;
 }
Beispiel #8
0
 /**
  * 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;
 }
Beispiel #9
0
 /**
  * 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;
 }
Beispiel #11
0
 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'));
 }