本文整理汇总了PHP中CRM_Core_BAO_Email::find方法的典型用法代码示例。如果您正苦于以下问题:PHP CRM_Core_BAO_Email::find方法的具体用法?PHP CRM_Core_BAO_Email::find怎么用?PHP CRM_Core_BAO_Email::find使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CRM_Core_BAO_Email
的用法示例。
在下文中一共展示了CRM_Core_BAO_Email::find方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: unsub_from_domain
/**
* Unsubscribe a contact from the domain.
*
* @param int $job_id
* The job ID.
* @param int $queue_id
* The Queue Event ID of the recipient.
* @param string $hash
* The hash.
*
* @return bool
* Was the contact successfully unsubscribed?
*/
public static function unsub_from_domain($job_id, $queue_id, $hash)
{
$q = CRM_Mailing_Event_BAO_Queue::verify($job_id, $queue_id, $hash);
if (!$q) {
return FALSE;
}
$transaction = new CRM_Core_Transaction();
$now = date('YmdHis');
if (CRM_Core_BAO_Email::isMultipleBulkMail()) {
$email = new CRM_Core_BAO_Email();
$email->id = $q->email_id;
if ($email->find(TRUE)) {
$sql = "\nUPDATE civicrm_email\nSET on_hold = 2,\n hold_date = %1\nWHERE email = %2\n";
$sqlParams = array(1 => array($now, 'Timestamp'), 2 => array($email->email, 'String'));
CRM_Core_DAO::executeQuery($sql, $sqlParams);
}
} else {
$contact = new CRM_Contact_BAO_Contact();
$contact->id = $q->contact_id;
$contact->is_opt_out = TRUE;
$contact->save();
}
$ue = new CRM_Mailing_Event_BAO_Unsubscribe();
$ue->event_queue_id = $queue_id;
$ue->org_unsubscribe = 1;
$ue->time_stamp = $now;
$ue->save();
$shParams = array('contact_id' => $q->contact_id, 'group_id' => NULL, 'status' => 'Removed', 'method' => 'Email', 'tracking' => $ue->id);
CRM_Contact_BAO_SubscriptionHistory::create($shParams);
$transaction->commit();
return TRUE;
}
示例2: mailchimp_civicrm_pre
/**
* Implementation of hook_civicrm_pre
*
* @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_pre
*/
function mailchimp_civicrm_pre($op, $objectName, $id, &$params)
{
$params1 = array('version' => 3, 'sequential' => 1, 'contact_id' => $id, 'id' => $id);
if ($objectName == 'Email') {
$email = new CRM_Core_BAO_Email();
$email->id = $id;
$email->find(TRUE);
// If about to delete an email in CiviCRM, we must delete it from Mailchimp
// because we won't get chance to delete it once it's gone.
//
// The other case covered here is changing an email address's status
// from for-bulk-mail to not-for-bulk-mail.
// @todo Note: However, this will delete a subscriber and lose reporting
// info, where what they might have wanted was to change their email
// address.
if ($op == 'delete' || $op == 'edit' && $params['on_hold'] == 0 && $email->on_hold == 0 && $params['is_bulkmail'] == 0) {
CRM_Mailchimp_Utils::deleteMCEmail(array($id));
}
}
// If deleting an individual, delete their (bulk) email address from Mailchimp.
if ($op == 'delete' && $objectName == 'Individual') {
$result = civicrm_api('Contact', 'get', $params1);
foreach ($result['values'] as $key => $value) {
$emailId = $value['email_id'];
if ($emailId) {
CRM_Mailchimp_Utils::deleteMCEmail(array($emailId));
}
}
}
}
示例3: import
/**
* handle the values in import mode
*
* @param int $onDuplicate the code for what action to take on duplicates
* @param array $values the array of values belonging to this line
*
* @return boolean the result of this processing
* @access public
*/
function import($onDuplicate, &$values)
{
$ei = CRM_Appraisals_ExportImportValuesConverter::singleton();
$response = $this->summary($values);
$this->formatDateParams();
$this->_params['skipRecentView'] = TRUE;
$this->_params['check_permissions'] = TRUE;
$params = $this->getActiveFieldParams();
$rowParams = array();
$formatValues = array();
foreach ($params as $key => $field) {
if ($field == NULL || $field === '') {
continue;
}
$formatValues[$key] = $field;
}
$importedAppraisalCycleId = null;
if (!empty($params['appraisal_cycle_id'])) {
$importedAppraisalCycleId = (int) $params['appraisal_cycle_id'];
}
if (!$importedAppraisalCycleId) {
$importedAppraisalCycleId = $this->_appraisalCycleIdIncremental++;
}
if (empty($params['contact_id']) && !empty($params['email'])) {
$checkEmail = new CRM_Core_BAO_Email();
$checkEmail->email = $params['email'];
$checkEmail->find(TRUE);
if (!empty($checkEmail->contact_id)) {
$params['contact_id'] = $checkEmail->contact_id;
}
}
if (!empty($formatValues['external_identifier'])) {
$checkCid = new CRM_Contact_DAO_Contact();
$checkCid->external_identifier = $formatValues['external_identifier'];
$checkCid->find(TRUE);
if (!empty($params['contact_id']) && $params['contact_id'] != $checkCid->id) {
array_unshift($values, 'Mismatch of External identifier :' . $formatValues['external_identifier'] . ' and Contact Id:' . $params['contact_id']);
return CRM_Import_Parser::ERROR;
}
if (!empty($checkCid->id)) {
$params['contact_id'] = $checkCid->id;
}
}
if (empty($params['contact_id']) && (int) $params['status_id']) {
$error = 'Missing "contact_id" / "email" / "external_identifier" value.';
array_unshift($values, $error);
return CRM_Import_Parser::ERROR;
}
foreach ($this->_entity as $tableName => $entity) {
$rowParams[$entity] = $this->getEntityParams($entity);
if ($entity === 'AppraisalCycle' && $importedAppraisalCycleId) {
$rowParams[$entity]['id'] = $importedAppraisalCycleId;
}
foreach ($rowParams[$entity] as $key => $value) {
$rowParams[$entity][$key] = $ei->import($tableName, $key, $value);
}
}
if (empty($this->_appraisalCycleIds[$importedAppraisalCycleId])) {
try {
unset($rowParams['AppraisalCycle']['id']);
$appraisalCycleCreateResponse = civicrm_api3('AppraisalCycle', 'create', $rowParams['AppraisalCycle']);
} catch (CiviCRM_API3_Exception $e) {
$error = $e->getMessage();
array_unshift($values, $error);
return CRM_Import_Parser::ERROR;
}
$this->_appraisalCycleIds[$importedAppraisalCycleId] = (int) $appraisalCycleCreateResponse['id'];
}
$localAppraisalCycleId = $this->_appraisalCycleIds[$importedAppraisalCycleId];
if (!empty($params['contact_id']) && (int) $params['contact_id']) {
try {
unset($rowParams['Appraisal']['id']);
unset($rowParams['Appraisal']['external_identifier']);
unset($rowParams['Appraisal']['email']);
$rowParams['Appraisal']['appraisal_cycle_id'] = $localAppraisalCycleId;
civicrm_api3('Appraisal', 'create', $rowParams['Appraisal']);
} catch (CiviCRM_API3_Exception $e) {
$error = $e->getMessage();
array_unshift($values, $error);
return CRM_Import_Parser::ERROR;
}
}
}
示例4: getContactByEmail
public function getContactByEmail($email)
{
$contactId = null;
if (!empty($email)) {
$checkEmail = new CRM_Core_BAO_Email();
$checkEmail->email = $email;
$checkEmail->find(TRUE);
if (!empty($checkEmail->contact_id)) {
$contactId = $checkEmail->contact_id;
}
}
return $contactId;
}
示例5: import
/**
* handle the values in import mode
*
* @param int $onDuplicate the code for what action to take on duplicates
* @param array $values the array of values belonging to this line
*
* @return boolean the result of this processing
* @access public
*/
function import($onDuplicate, &$values)
{
$entityNames = array('details', 'hour', 'health', 'leave', 'pay', 'pension', 'role');
$ei = CRM_Hrjobcontract_ExportImportValuesConverter::singleton();
$response = $this->summary($values);
$this->formatDateParams();
$this->_params['skipRecentView'] = TRUE;
$this->_params['check_permissions'] = TRUE;
$params = $this->getActiveFieldParams();
$formatValues = array();
foreach ($params as $key => $field) {
if ($field == NULL || $field === '') {
continue;
}
$formatValues[$key] = $field;
}
$importedJobContractId = null;
if (!empty($params['jobcontract_id'])) {
$importedJobContractId = (int) $params['jobcontract_id'];
}
if (!$importedJobContractId) {
$importedJobContractId = $this->_jobcontractIdIncremental++;
}
if (empty($params['contact_id']) && !empty($params['email'])) {
$checkEmail = new CRM_Core_BAO_Email();
$checkEmail->email = $params['email'];
$checkEmail->find(TRUE);
if (!empty($checkEmail->contact_id)) {
$params['contact_id'] = $checkEmail->contact_id;
}
}
if (!empty($formatValues['external_identifier'])) {
$checkCid = new CRM_Contact_DAO_Contact();
$checkCid->external_identifier = $formatValues['external_identifier'];
$checkCid->find(TRUE);
if (!empty($params['contact_id']) && $params['contact_id'] != $checkCid->id) {
array_unshift($values, 'Mismatch of External identifier :' . $formatValues['external_identifier'] . ' and Contact Id:' . $params['contact_id']);
return CRM_Import_Parser::ERROR;
}
if (!empty($checkCid->id)) {
$params['contact_id'] = $checkCid->id;
}
}
if (empty($params['contact_id'])) {
$error = 'Missing "contact_id" / "email" / "external_identifier" value.';
array_unshift($values, $error);
return CRM_Import_Parser::ERROR;
}
$revisionParams = $this->getEntityParams('HRJobContractRevision');
$revisionData = array();
foreach ($entityNames as $value) {
if (empty($revisionParams[$value . '_revision_id'])) {
$revisionParams[$value . '_revision_id'] = $this->_revisionIdIncremental;
}
$revisionData[$value] = $revisionParams[$value . '_revision_id'];
}
$this->_revisionIdIncremental++;
if (empty($revisionData)) {
$error = 'Missing Revision data.';
array_unshift($values, $error);
return CRM_Import_Parser::ERROR;
}
$revisionId = max($revisionData);
if (empty($this->_jobContractIds[$importedJobContractId])) {
try {
$jobContractCreateResponse = civicrm_api3('HRJobContract', 'create', array('contact_id' => $params['contact_id']));
} catch (CiviCRM_API3_Exception $e) {
$error = $e->getMessage();
array_unshift($values, $error);
return CRM_Import_Parser::ERROR;
}
$this->_jobContractIds[$importedJobContractId] = (int) $jobContractCreateResponse['id'];
$this->_previousRevision = array();
foreach ($entityNames as $value) {
$this->_previousRevision['imported'][$value] = null;
$this->_previousRevision['local'][$value] = null;
}
$this->_previousRevision['imported']['id'] = null;
$this->_previousRevision['local']['id'] = null;
$this->_revisionIds = array();
$this->_revisionEntityMap = array();
}
$localJobContractId = $this->_jobContractIds[$importedJobContractId];
$newRevisionInstance = null;
if ($this->_previousRevision['imported']['id'] !== $revisionId) {
// create new Revision:
$newRevisionParams = $revisionParams;
unset($newRevisionParams['id']);
foreach ($entityNames as $value) {
unset($newRevisionParams[$value . '_revision_id']);
}
//.........这里部分代码省略.........
示例6: syncCollectCiviCRM
/**
* Collect CiviCRM data into temporary working table.
*/
static function syncCollectCiviCRM($listID)
{
CRM_Mailchimp_Utils::checkDebug('Start-CRM_Mailchimp_Form_Sync syncCollectCiviCRM $listID= ', $listID);
// Nb. these are temporary tables but we don't use TEMPORARY table because they are
// needed over multiple sessions because of queue.
CRM_Core_DAO::executeQuery("DROP TABLE IF EXISTS tmp_mailchimp_push_c;");
$dao = CRM_Core_DAO::executeQuery("CREATE TABLE tmp_mailchimp_push_c (\n contact_id INT(10) UNSIGNED NOT NULL,\n email_id INT(10) UNSIGNED NOT NULL,\n email VARCHAR(200),\n first_name VARCHAR(100),\n last_name VARCHAR(100),\n hash CHAR(32),\n groupings VARCHAR(4096),\n PRIMARY KEY (email_id, email, hash)\n );");
// Cheekily access the database directly to obtain a prepared statement.
$db = $dao->getDatabaseConnection();
$insert = $db->prepare('INSERT INTO tmp_mailchimp_push_c VALUES(?, ?, ?, ?, ?, ?, ?)');
//create table for mailchim civicrm syn errors
$dao = CRM_Core_DAO::executeQuery("CREATE TABLE IF NOT EXISTS mailchimp_civicrm_syn_errors (\n id int(11) NOT NULL AUTO_INCREMENT,\n email VARCHAR(200),\n error VARCHAR(200),\n error_count int(10),\n group_id int(20),\n list_id VARCHAR(20),\n PRIMARY KEY (id)\n );");
// We need to know what groupings we have maps to.
// We only care about CiviCRM groups that are mapped to this MC List:
$mapped_groups = CRM_Mailchimp_Utils::getGroupsToSync(array(), $listID);
// First, get all subscribers from the membership group for this list.
// ... Find CiviCRM group id for the membership group.
// ... And while we're at it, build an SQL-safe array of groupIds for groups mapped to groupings.
// (we use that later)
$membership_group_id = FALSE;
$grouping_group_ids = array('normal' => array(), 'smart' => array());
$default_info = array();
foreach ($mapped_groups as $group_id => $details) {
CRM_Contact_BAO_GroupContactCache::loadAll($group_id);
if (!$details['grouping_id']) {
$membership_group_id = $group_id;
} else {
$grouping_group_ids[$details['civigroup_uses_cache'] ? 'smart' : 'normal'][] = (int) $group_id;
$default_info[$details['grouping_id']][$details['group_id']] = FALSE;
}
}
$grouping_group_ids['smart'] = implode(',', $grouping_group_ids['smart']);
$grouping_group_ids['normal'] = implode(',', $grouping_group_ids['normal']);
if (!$membership_group_id) {
throw new Exception("No CiviCRM group is mapped to determine membership of Mailchimp list {$listID}");
}
// ... Load all subscribers in $groupContact object
if (!($groupContact = CRM_Mailchimp_Utils::getGroupContactObject($membership_group_id))) {
CRM_Mailchimp_Utils::checkDebug('get group contact= ', $groupContact);
throw new Exception("No CiviCRM group is mapped to determine membership of Mailchimp list {$listID}. CiviCRM group {$membership_group_id} failed to load");
}
// Now we iterate through the subscribers, collecting data about the other mapped groups
// This is pretty inefficient :-(
while ($groupContact->fetch()) {
// Find the contact, for the name fields
$contact = new CRM_Contact_BAO_Contact();
$contact->id = $groupContact->contact_id;
$contact->is_deleted = 0;
if (!$contact->find(TRUE)) {
continue;
}
// Find their primary (bulk) email
$email = new CRM_Core_BAO_Email();
$email->contact_id = $groupContact->contact_id;
$email->is_primary = TRUE;
if (!$email->find(TRUE)) {
continue;
}
// If no email, it's like they're not there.
if (!$email->email || $email->on_hold || $contact->is_opt_out || $contact->do_not_email) {
//@todo update stats.
continue;
}
// Find out if they're in any groups that we care about.
// Start off as not in the groups...
$info = $default_info;
// We can do this with two queries, one for normal groups, one for smart groups.
// Normal groups.
if ($grouping_group_ids['normal']) {
$groupContact2 = new CRM_Contact_BAO_GroupContact();
$groupContact2->contact_id = $groupContact->contact_id;
$groupContact2->whereAdd("status = 'Added'");
$groupContact2->whereAdd("group_id IN ({$grouping_group_ids['normal']})");
$groupContact2->find();
while ($groupContact2->fetch()) {
// need MC grouping_id and group_id
$details = $mapped_groups[$groupContact2->group_id];
$info[$details['grouping_id']][$details['group_id']] = TRUE;
}
unset($groupContact2);
}
// Smart groups
if ($grouping_group_ids['smart']) {
$groupContactCache = new CRM_Contact_BAO_GroupContactCache();
$groupContactCache->contact_id = $groupContact->contact_id;
$groupContactCache->whereAdd("group_id IN ({$grouping_group_ids['smart']})");
$groupContactCache->find();
while ($groupContactCache->fetch()) {
// need MC grouping_id and group_id
$details = $mapped_groups[$groupContactCache->group_id];
$info[$details['grouping_id']][$details['group_id']] = TRUE;
}
unset($groupContactCache);
}
// OK we should now have all the info we need.
// Serialize the grouping array for SQL storage - this is the fastest way.
$info = serialize($info);
//.........这里部分代码省略.........
示例7: getEmailbyId
/**
* Get an Email DAO object for a given email id.
*/
static function getEmailbyId($email_id)
{
$email = new CRM_Core_BAO_Email();
$email->id = $email_id;
if (!$email->find(TRUE)) {
throw new CRM_CiviMailchimp_Exception("Could not find Email record with ID {$email_id}");
}
return $email;
}
示例8: getContactByLookup
public function getContactByLookup($data)
{
$contactId = null;
// external_identifier:
if (!empty($data['external_identifier']) && !$contactId) {
$checkCid = new CRM_Contact_DAO_Contact();
$checkCid->external_identifier = $data['external_identifier'];
$checkCid->find(TRUE);
if (!empty($checkCid->id)) {
$contactId = $checkCid->id;
}
}
// email:
if (!empty($data['email']) && !$contactId) {
$checkEmail = new CRM_Core_BAO_Email();
$checkEmail->email = $data['email'];
$checkEmail->find(TRUE);
if (!empty($checkEmail->contact_id)) {
$contactId = $checkEmail->contact_id;
}
}
// id:
if (!empty($data['id']) && !$contactId) {
$checkId = new CRM_Contact_DAO_Contact();
$checkId->id = $data['id'];
$checkId->find(TRUE);
if (!empty($checkId->id)) {
$contactId = $checkId->id;
}
}
return $contactId;
}