}
}
- CRM_Contact_BAO_GroupContactCache::opportunisticCacheFlush();
+ // reset the group contact cache since smart groups might be affected due to this
+ // CRM_Contact_BAO_GroupContactCache::opportunisticCacheFlush();
if (!empty($params['id'])) {
CRM_Utils_Hook::post('edit', 'Activity', $activity->id, $activity);
CRM_Contact_BAO_GroupContact::addContactsToGroup($contactIds, $addToGroupID);
}
- CRM_Contact_BAO_GroupContactCache::opportunisticCacheFlush();
+ // reset the group contact cache for this group
+ // HACK: Dave disabled this on 12/09/2014 due to a crazy amount of lock wait timeouts on cache tables, causing donations to fail.
+ //CRM_Contact_BAO_GroupContactCache::opportunisticCacheFlush();
if ($editHook) {
CRM_Utils_Hook::post('edit', 'Profile', $contactID, $params);
FROM civicrm_contact
WHERE contact_type = %1
AND ({$idFldName} IS NULL
- OR ( {$idFldName} IS NOT NULL AND ({$displayFldName} IS NULL OR {$displayFldName} = '')) )";
+ OR ( {$idFldName} IS NOT NULL AND ({$displayFldName} IS NULL OR {$displayFldName} = '')) ) LIMIT 800";
}
if ($limit) {
// also reset the acl cache
$config = CRM_Core_Config::singleton();
if (!$config->doNotResetCache) {
- CRM_ACL_BAO_Cache::resetCache();
+ // HACK: Dave commented this out on 12/09/2014 due to lock wait timeouts on the acl cache that caused donations to fail.
+ //CRM_ACL_BAO_Cache::resetCache();
}
// reset the group contact cache for all group(s)
// if this group is being used as a smart group
- CRM_Contact_BAO_GroupContactCache::opportunisticCacheFlush();
+ // HACK: Dave had to disable this, too!
+ //CRM_Contact_BAO_GroupContactCache::opportunisticCacheFlush();
CRM_Utils_Hook::post('create', 'GroupContact', $groupId, $contactIds);
2 => array(self::getRefreshDateTime(), 'String'),
);
+ // HACK: Hardcoded delete limit.
+ $deleteLimit = 1000;
+
if (!isset($groupID)) {
if ($smartGroupCacheTimeout == 0) {
$query = "
-DELETE FROM civicrm_group_contact_cache
+DELETE FROM civicrm_group_contact_cache LIMIT $deleteLimit
";
$update = "
UPDATE civicrm_group g
FROM civicrm_group_contact_cache gc
INNER JOIN civicrm_group g ON g.id = gc.group_id
WHERE g.cache_date <= %1
+LIMIT $deleteLimit
";
$update = "
UPDATE civicrm_group g
elseif (is_array($groupID)) {
$groupIDs = implode(', ', $groupID);
$query = "
-DELETE g
-FROM civicrm_group_contact_cache g
-WHERE g.group_id IN ( $groupIDs )
+DELETE
+FROM civicrm_group_contact_cache
+WHERE group_id IN ( $groupIDs )
+LIMIT $deleteLimit
";
$update = "
UPDATE civicrm_group g
}
else {
$query = "
-DELETE g
-FROM civicrm_group_contact_cache g
-WHERE g.group_id = %1
+DELETE
+FROM civicrm_group_contact_cache
+WHERE group_id = %1
+LIMIT $deleteLimit
";
$update = "
UPDATE civicrm_group g
$params = array(1 => array($groupID, 'Integer'));
}
- CRM_Core_DAO::executeQuery($query, $params);
+ // Nibble at the rows, don't try to delete everything at once!
+ do {
+ $dao = CRM_Core_DAO::executeQuery($query, $params);
+ } while($dao->affectedRows() != 0);
if ($refresh) {
CRM_Core_DAO::executeQuery($refresh, $params);
static function preProcess(&$form) {
$messageText = array();
$messageSubject = array();
- $dao = new CRM_Core_BAO_MessageTemplates();
+ $dao = new CRM_Core_BAO_MessageTemplate();
$dao->is_active = 1;
$dao->find();
while ($dao->fetch()) {
}
if (CRM_Utils_Array::value('saveTemplate', $formValues) && $formValues['saveTemplate']) {
$messageTemplate['msg_title'] = $formValues['saveTemplateName'];
- CRM_Core_BAO_MessageTemplates::add($messageTemplate);
+ CRM_Core_BAO_MessageTemplate::add($messageTemplate);
}
if (CRM_Utils_Array::value('updateTemplate', $formValues) && $formValues['template'] && $formValues['updateTemplate']) {
$messageTemplate['id'] = $formValues['template'];
unset($messageTemplate['msg_title']);
- CRM_Core_BAO_MessageTemplates::add($messageTemplate);
+ CRM_Core_BAO_MessageTemplate::add($messageTemplate);
}
}
elseif (CRM_Utils_Array::value('template', $formValues) > 0) {
foreach ($form->_contactIds as $contactId) {
$activityTargetParams = array(
+ 'contact_id' => $contactId,
'activity_id' => empty($activity->id) ? $activityIds[$contactId] : $activity->id,
'target_contact_id' => $contactId,
);
- CRM_Activity_BAO_Activity::createActivityTarget($activityTargetParams);
+ CRM_Activity_BAO_ActivityTarget::create($activityTargetParams);
}
}
);
}
- CRM_Contact_BAO_GroupContactCache::opportunisticCacheFlush();
+ // reset the group contact cache for this group
+ // HACK: dave hack - these caches are murder!!!
+ // CRM_Contact_BAO_GroupContactCache::opportunisticCacheFlush();
if ($contributionID) {
CRM_Utils_Hook::post('edit', 'Contribution', $contribution->id, $contribution);
}
else {
$this->addElement('checkbox', 'auto_renew', ts('Please renew my membership automatically.'));
+ $temphax =& $form->getElement('auto_renew');
+ $temphax->setValue(1);
}
}
$session = CRM_Core_Session::singleton();
- CRM_Contact_BAO_GroupContactCache::opportunisticCacheFlush();
+ // reset the group contact cache for this group
+ // HACK: by davet
+ // CRM_Contact_BAO_GroupContactCache::opportunisticCacheFlush();
if (!empty($params['id'])) {
CRM_Utils_Hook::post('edit', 'Participant', $participantBAO->id, $participantBAO);
CRM_Member_BAO_MembershipLog::add($membershipLog, CRM_Core_DAO::$_nullArray);
// reset the group contact cache since smart groups might be affected due to this
- CRM_Contact_BAO_GroupContactCache::opportunisticCacheFlush();
+ // HACK: a new fragrance by davet
+ // CRM_Contact_BAO_GroupContactCache::opportunisticCacheFlush();
$allStatus = CRM_Member_BAO_Membership::buildOptions('status_id', 'get');
$activityParams = array(
public function buildQuickForm() {
parent::buildQuickForm();
+ //Setting Upload File Size
+ $config = CRM_Core_Config::singleton();
+
+ $uploadFileSize = CRM_Core_Config_Defaults::formatUnitSize($config->maxFileSize . 'm', TRUE);
+ $uploadSize = round(($uploadFileSize / (1024 * 1024)), 2);
+
+ $this->assign('uploadSize', $uploadSize);
+
+ $this->add('File', 'uploadFile', ts('Import Data File'), 'size=30 maxlength=255', TRUE);
+ $this->setMaxFileSize($uploadFileSize);
+ $this->addRule('uploadFile', ts('File size should be less than %1 MBytes (%2 bytes)', array(
+ 1 => $uploadSize,
+ 2 => $uploadFileSize,
+ )), 'maxfilesize', $uploadFileSize);
+ $this->addRule('uploadFile', ts('A valid file must be uploaded.'), 'uploadedfile');
+ $this->addRule('uploadFile', ts('Input file must be in CSV format'), 'utf8File');
+
+ $this->addElement('checkbox', 'skipColumnHeader', ts('First row contains column headers'));
+
$duplicateOptions = array();
$duplicateOptions[] = $this->createElement('radio',
NULL, NULL, ts('Insert new Membership'), CRM_Import_Parser::DUPLICATE_SKIP
* $autoRenewOption ( 0:hide, 1:optional 2:required )
*/
public static function checkAutoRenewForPriceSet($priceSetId) {
+ // auto-renew option should be visible if membership types associated with all the fields has
+ // been set for auto-renew option
+ // Auto renew checkbox should be frozen if for all the membership type auto renew is required
+
+ // get the membership type auto renew option and check if required or optional
$query = 'SELECT DISTINCT mt.auto_renew, mt.duration_interval, mt.duration_unit,
pf.html_type, pf.id as price_field_id
FROM civicrm_price_field_value pfv
* @return array
* associate array of frequency interval and unit
*/
- public static function getRecurDetails($priceSetId) {
+ public static function getRecurDetails($priceSetId, $priceFieldValueIds) {
+ // Escape the array of ids.
+ foreach ($priceFieldValueIds as $index => $id) {
+ $priceFieldValueIds[$index] = CRM_Utils_Type::escape($id, 'Integer');
+ }
+
$query = 'SELECT mt.duration_interval, mt.duration_unit
FROM civicrm_price_field_value pfv
INNER JOIN civicrm_membership_type mt ON pfv.membership_type_id = mt.id
INNER JOIN civicrm_price_field pf ON pfv.price_field_id = pf.id
- WHERE pf.price_set_id = %1 LIMIT 1';
+ WHERE pf.price_set_id = %1 AND pfv.id IN ('
+ . implode(',', $priceFieldValueIds) . ') LIMIT 1';
$params = array(1 => array($priceSetId, 'Integer'));
$dao = CRM_Core_DAO::executeQuery($query, $params);
class CRM_Utils_PDF_Utils {
+ public static function enqueuePDF($pdf) {
+
+ $fname = time().'_lp.pdf';
+ file_put_contents('/tmp/'.$fname, $pdf);
+ header('Location: /civicrm/lp-setup?file='.$fname);
+ exit;
+
+ }
+
public static function latex2pdf(&$text, $fileName = 'civicrm.pdf', $output = FALSE, $pdfFormat = NULL) {
/* FIXME: get $paper_size, $orientation, $margins */
$pages = array($text);
}
-
- $head='\documentclass[11pt]{letter}
+ $head='\documentclass[12pt]{letter}
\usepackage{url}
\usepackage{ucs}
\usepackage{graphicx}
\usepackage[T1]{fontenc}
\usepackage{fullpage}
+\usepackage{fontspec,xunicode}
+%% VERY IMPORTANT. Configures supported languages and fonts to use for each one.
+\usepackage[Latin, Hebrew, Arabics, CJK, Diacritics]{ucharclasses}
+\setDefaultTransitions{\fontspec{CMU Serif}}{}
+\setTransitionsForLatin{\fontspec{CMU Serif}}{}
+\setTransitionsForArabics{\fontspec{Droid Sans Arabic}}{}
+\setTransitionsForCJK{\fontspec{WenQuanYi Zen Hei}}{}
+\setTransitionsForDiacritics{\fontspec{Droid Sans Arabic}}{}
+\setTransitionTo{Hebrew}{\fontspec{David CLM}}
+\setmainfont{CMU Serif}
\newcommand{\fsfclosing}[1]{\par\nobreak\vspace{\parskip}
\stopbreaks
\hspace*{\longindentation}\fi
\parbox{\indentedwidth}{\raggedright
\ignorespaces #1\\\\[1\medskipamount]
- \hspace*{-0.25in}\includegraphics[scale=1.0]{sigjohns.pdf}
+ \hspace*{-0.25in}\includegraphics[scale=1.0]{/var/www/drupal-7.27/sites/all/modules/civicrm/sigjohns.pdf}
\\\\
\ifx\@empty\fromsig
%% This line might be necessary, but it was not able to find utf8.def on my
%% machine.
-\usepackage[utf8x]{inputenc}
+%% \usepackage[utf8x]{inputenc}
\pagestyle{empty}
\tolerance=8000
\address{\vspace{0.05in}}
\signature{John Sullivan \\\\ Executive Director}
\usepackage[
-top = 0.4in,
-bottom = 0.9in,
-left = 0.8in,
-right = 0.8in]{geometry}
+top = 1.5in,
+bottom = 1.25in,
+left = 1.0in,
+right = 1.0in]{geometry}
\begin{document}
';
$footer='
header('Content-Type: application/pdf');
header('Content-Disposition: attachment; filename="' . $fileName . '"');
echo $pdf;
+// CRM_Utils_PDF_Utils::enqueuePDF($pdf);
+
}
- }
+ }
/**
* @param array $text
$snappy->setOption("margin-right", $margins[2] . $margins[0]);
$snappy->setOption("margin-bottom", $margins[3] . $margins[0]);
$snappy->setOption("margin-left", $margins[4] . $margins[0]);
+ $html = preg_replace('/{ }/', ' ', $html);
$pdf = $snappy->getOutputFromHtml($html);
if ($output) {
return $pdf;
CRM_Utils_System::setHttpHeader('Content-Type', 'application/pdf');
CRM_Utils_System::setHttpHeader('Content-Disposition', 'attachment; filename="' . $fileName . '"');
echo $pdf;
+ //CRM_Utils_PDF_Utils::enqueuePDF($pdf);
+
}
}
amount = 0;
}
+ // next, check for contribution amount price sets
+ check_price_set('.contribution_amount-content input[type="radio"]');
+
+ // next, check for membership level price set
+ check_price_set('.membership_amount-content input[type="radio"]');
+
+ check_price_set(cj('.price-set-option-content input[type="radio"]'));
+
// make sure amount is a number at this point
if(!amount) amount = 0;
// update premiums
function update_premiums() {
var amount = get_amount();
+ console.log('amount:', amount);
$('.premium').each(function(){
var min_contribution = $(this).attr('min_contribution');