function postProcess() { //to reset quickform elements of next (pcp) page. if ($this->controller->getNextName('Widget') == 'PCP') { $this->controller->resetPage('PCP'); } // get the submitted form values. $params = $this->controller->exportValues($this->_name); if ($this->_widget) { $params['id'] = $this->_widget->id; } $params['contribution_page_id'] = $this->_id; $params['is_active'] = CRM_Utils_Array::value('is_active', $params, false); require_once 'CRM/Contribute/DAO/Widget.php'; $widget = new CRM_Contribute_DAO_Widget(); $widget->copyValues($params); $widget->save(); $buttonName = $this->controller->getButtonName(); if ($buttonName = $this->_refreshButtonName) { return; } }
/** * returns the list of fields that can be exported * * @access public * return array * @static */ static function &export($prefix = false) { if (!self::$_export) { self::$_export = array(); $fields = self::fields(); foreach ($fields as $name => $field) { if (CRM_Utils_Array::value('export', $field)) { if ($prefix) { self::$_export['contribution_widget'] =& $fields[$name]; } else { self::$_export[$name] =& $fields[$name]; } } } } return self::$_export; }
/** * Gets all campaign related data and returns it as a std class. * * @param int $contributionPageID * @param string $widgetID * * @return stdClass */ public static function getContributionPageData($contributionPageID, $widgetID) { $config = CRM_Core_Config::singleton(); $data = array(); $data['currencySymbol'] = $config->defaultCurrencySymbol; if (empty($contributionPageID) || CRM_Utils_Type::validate($contributionPageID, 'Integer') == NULL) { $data['is_error'] = TRUE; CRM_Core_Error::debug_log_message("{$contributionPageID} is not set"); return $data; } $widget = new CRM_Contribute_DAO_Widget(); $widget->contribution_page_id = $contributionPageID; if (!$widget->find(TRUE)) { $data['is_error'] = TRUE; CRM_Core_Error::debug_log_message("{$contributionPageID} is not found"); return $data; } $data['is_error'] = FALSE; if (!$widget->is_active) { $data['is_active'] = FALSE; } $data['is_active'] = TRUE; $data['title'] = $widget->title; $data['logo'] = $widget->url_logo; $data['button_title'] = $widget->button_title; $data['about'] = $widget->about; $query = "\n SELECT count( id ) as count,\n sum( total_amount) as amount\n FROM civicrm_contribution\n WHERE is_test = 0\n AND contribution_status_id = 1\n AND contribution_page_id = %1"; $params = array(1 => array($contributionPageID, 'Integer')); $dao = CRM_Core_DAO::executeQuery($query, $params); if ($dao->fetch()) { $data['num_donors'] = (int) $dao->count; $data['money_raised'] = (int) $dao->amount; } else { $data['num_donors'] = $data['money_raised'] = $data->money_raised = 0; } $query = "\n SELECT goal_amount, start_date, end_date, is_active\n FROM civicrm_contribution_page\n WHERE id = %1"; $params = array(1 => array($contributionPageID, 'Integer')); $dao = CRM_Core_DAO::executeQuery($query, $params); $data['campaign_start'] = ''; $startDate = NULL; if ($dao->fetch()) { $data['money_target'] = (int) $dao->goal_amount; // conditions that needs to be handled // 1. Campaign is not active - no text // 2. Campaign start date greater than today - show start date // 3. Campaign end date is set and greater than today - show end date // 4. If no start and end date or no end date and start date greater than today, then it's ongoing if ($dao->is_active) { $data['campaign_start'] = ts('Campaign is ongoing'); // check for time being between start and end date $now = time(); if ($dao->start_date) { $startDate = CRM_Utils_Date::unixTime($dao->start_date); if ($startDate && $startDate >= $now) { $data['is_active'] = FALSE; $data['campaign_start'] = ts('Campaign starts on %1', array(1 => CRM_Utils_Date::customFormat($dao->start_date, $config->dateformatFull))); } } if ($dao->end_date) { $endDate = CRM_Utils_Date::unixTime($dao->end_date); if ($endDate && $endDate < $now) { $data['is_active'] = FALSE; $data['campaign_start'] = ts('Campaign ended on %1', array(1 => CRM_Utils_Date::customFormat($dao->end_date, $config->dateformatFull))); } elseif ($startDate >= $now) { $data['campaign_start'] = ts('Campaign starts on %1', array(1 => CRM_Utils_Date::customFormat($dao->start_date, $config->dateformatFull))); } else { $data['campaign_start'] = ts('Campaign ends on %1', array(1 => CRM_Utils_Date::customFormat($dao->end_date, $config->dateformatFull))); } } } else { $data['is_active'] = FALSE; } } else { $data['is_active'] = FALSE; } $data['money_raised_percentage'] = 0; if ($data['money_target'] > 0) { $percent = $data['money_raised'] / $data['money_target']; $data['money_raised_percentage'] = round($percent, 2) * 100 . "%"; $data['money_target_display'] = CRM_Utils_Money::format($data['money_target']); $data['money_raised'] = ts('Raised %1 of %2', array(1 => CRM_Utils_Money::format($data['money_raised']), 2 => $data['money_target_display'])); } else { $data['money_raised'] = ts('Raised %1', array(1 => CRM_Utils_Money::format($data['money_raised']))); } $data['money_low'] = 0; $data['num_donors'] = $data['num_donors'] . " " . ts('Donors'); $data['home_url'] = "<a href='{$config->userFrameworkBaseURL}' class='crm-home-url' style='color:" . $widget->color_homepage_link . "'>" . ts('Learn more.') . "</a>"; // if is_active is false, show this link and hide the contribute button $data['homepage_link'] = $widget->url_homepage; $data['colors'] = array(); $data['colors']["title"] = $widget->color_title; $data['colors']["button"] = $widget->color_button; $data['colors']["bar"] = $widget->color_bar; $data['colors']["main_text"] = $widget->color_main_text; $data['colors']["main"] = $widget->color_main; $data['colors']["main_bg"] = $widget->color_main_bg; $data['colors']["bg"] = $widget->color_bg; $data['colors']["about_link"] = $widget->color_about_link; return $data; }
/** * Gets all campaign related data and returns it as a std class. * * @param int $contributionPageID * @param string $widgetID * * @return object */ public function getContributionPageData($contributionPageID, $widgetID) { $config = CRM_Core_Config::singleton(); self::registerRequest($contributionPageID, $widgetID, __FUNCTION__); $data = new stdClass(); if (empty($contributionPageID) || CRM_Utils_Type::validate($contributionPageID, 'Integer') == NULL) { $data->is_error = TRUE; CRM_Core_Error::debug_log_message("{$contributionPageID} is not set"); return $data; } $widget = new CRM_Contribute_DAO_Widget(); $widget->contribution_page_id = $contributionPageID; if (!$widget->find(TRUE)) { $data->is_error = TRUE; CRM_Core_Error::debug_log_message("{$contributionPageID} is not found"); return $data; } $data->is_error = FALSE; if (!$widget->is_active) { $data->is_active = FALSE; } $data->is_active = TRUE; $data->title = $widget->title; $data->logo = $widget->url_logo; $data->button_title = $widget->button_title; $data->button_url = CRM_Utils_System::url('civicrm/contribute/transact', "reset=1&id={$contributionPageID}", TRUE, NULL, FALSE, TRUE); $data->about = $widget->about; $query = "\nSELECT count( id ) as count,\n sum( total_amount) as amount\nFROM civicrm_contribution\nWHERE is_test = 0\nAND contribution_status_id = 1\nAND contribution_page_id = %1"; $params = array(1 => array($contributionPageID, 'Integer')); $dao = CRM_Core_DAO::executeQuery($query, $params); if ($dao->fetch()) { $data->num_donors = $dao->count; $data->money_raised = $dao->amount; } else { $data->num_donors = $data->money_raised = 0; } $query = "\nSELECT goal_amount, start_date, end_date, is_active\nFROM civicrm_contribution_page\nWHERE id = %1"; $params = array(1 => array($contributionPageID, 'Integer')); $dao = CRM_Core_DAO::executeQuery($query, $params); if ($dao->fetch()) { $data->money_target = $dao->goal_amount; $data->campaign_start = CRM_Utils_Date::customFormat($dao->start_date, $config->dateformatFull); $data->campaign_end = CRM_Utils_Date::customFormat($dao->end_date, $config->dateformatFull); // check for time being between start and end date $now = time(); if ($dao->start_date) { $startDate = CRM_Utils_Date::unixTime($dao->start_date); if ($startDate && $startDate >= $now) { $data->is_active = FALSE; } } if ($dao->end_date) { $endDate = CRM_Utils_Date::unixTime($dao->end_date); if ($endDate && $endDate < $now) { $data->is_active = FALSE; } } } else { $data->is_active = FALSE; } // if is_active is false, show this link and hide the contribute button $data->homepage_link = $widget->url_homepage; // movie clip colors, must be in '0xRRGGBB' format $data->colors = array(); $hexPrefix = '0x'; $data->colors["title"] = str_replace('#', $hexPrefix, $widget->color_title); $data->colors["button"] = str_replace('#', $hexPrefix, $widget->color_button); $data->colors["bar"] = str_replace('#', $hexPrefix, $widget->color_bar); $data->colors["main_text"] = str_replace('#', $hexPrefix, $widget->color_main_text); $data->colors["main"] = str_replace('#', $hexPrefix, $widget->color_main); $data->colors["main_bg"] = str_replace('#', $hexPrefix, $widget->color_main_bg); $data->colors["bg"] = str_replace('#', $hexPrefix, $widget->color_bg); // these two have colors as normal hex format // because they're being used in a CSS object $data->colors["about_link"] = str_replace('#', $hexPrefix, $widget->color_about_link); $data->colors["homepage_link"] = str_replace('#', $hexPrefix, $widget->color_homepage_link); return $data; }
public function postProcess() { //to reset quickform elements of next (pcp) page. if ($this->controller->getNextName('Widget') == 'PCP') { $this->controller->resetPage('PCP'); } // get the submitted form values. $params = $this->controller->exportValues($this->_name); if ($this->_widget) { $params['id'] = $this->_widget->id; } $params['contribution_page_id'] = $this->_id; $params['is_active'] = CRM_Utils_Array::value('is_active', $params, FALSE); $params['url_homepage'] = 'null'; $widget = new CRM_Contribute_DAO_Widget(); $widget->copyValues($params); $widget->save(); $buttonName = $this->controller->getButtonName(); if ($buttonName == $this->_refreshButtonName) { return; } parent::endPostProcess(); }