3 +--------------------------------------------------------------------+
4 | CiviCRM version 4.6 |
5 +--------------------------------------------------------------------+
6 | Copyright CiviCRM LLC (c) 2004-2015 |
7 +--------------------------------------------------------------------+
8 | This file is a part of CiviCRM. |
10 | CiviCRM is free software; you can copy, modify, and distribute it |
11 | under the terms of the GNU Affero General Public License |
12 | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. |
14 | CiviCRM is distributed in the hope that it will be useful, but |
15 | WITHOUT ANY WARRANTY; without even the implied warranty of |
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
17 | See the GNU Affero General Public License for more details. |
19 | You should have received a copy of the GNU Affero General Public |
20 | License and the CiviCRM Licensing Exception along |
21 | with this program; if not, contact CiviCRM LLC |
22 | at info[AT]civicrm[DOT]org. If you have questions about the |
23 | GNU Affero General Public License or the licensing of CiviCRM, |
24 | see the CiviCRM license FAQ at http://civicrm.org/licensing |
25 +--------------------------------------------------------------------+
31 * @copyright CiviCRM LLC (c) 2004-2015
36 * Class to retrieve information about a contribution page
38 class CRM_Contribute_BAO_Widget
extends CRM_Contribute_DAO_Widget
{
41 * Gets all campaign related data and returns it as a std class.
43 * @param int $contributionPageID
44 * @param string $widgetID
48 public static function getContributionPageData($contributionPageID, $widgetID) {
49 $config = CRM_Core_Config
::singleton();
52 $data['currencySymbol'] = $config->defaultCurrencySymbol
;
54 if (empty($contributionPageID) ||
55 CRM_Utils_Type
::validate($contributionPageID, 'Integer') == NULL
57 $data['is_error'] = TRUE;
58 CRM_Core_Error
::debug_log_message("$contributionPageID is not set");
62 $widget = new CRM_Contribute_DAO_Widget();
63 $widget->contribution_page_id
= $contributionPageID;
64 if (!$widget->find(TRUE)) {
65 $data['is_error'] = TRUE;
66 CRM_Core_Error
::debug_log_message("$contributionPageID is not found");
70 $data['is_error'] = FALSE;
71 if (!$widget->is_active
) {
72 $data['is_active'] = FALSE;
75 $data['is_active'] = TRUE;
76 $data['title'] = $widget->title
;
77 $data['logo'] = $widget->url_logo
;
78 $data['button_title'] = $widget->button_title
;
79 $data['about'] = $widget->about
;
82 SELECT count( id ) as count,
83 sum( total_amount) as amount
84 FROM civicrm_contribution
86 AND contribution_status_id = 1
87 AND contribution_page_id = %1";
88 $params = array(1 => array($contributionPageID, 'Integer'));
89 $dao = CRM_Core_DAO
::executeQuery($query, $params);
91 $data['num_donors'] = (int) $dao->count
;
92 $data['money_raised'] = (int) $dao->amount
;
95 $data['num_donors'] = $data['money_raised'] = $data->money_raised
= 0;
99 SELECT goal_amount, start_date, end_date, is_active
100 FROM civicrm_contribution_page
102 $params = array(1 => array($contributionPageID, 'Integer'));
103 $dao = CRM_Core_DAO
::executeQuery($query, $params);
105 $data['campaign_start'] = '';
108 $data['money_target'] = (int) $dao->goal_amount
;
110 // conditions that needs to be handled
111 // 1. Campaign is not active - no text
112 // 2. Campaign start date greater than today - show start date
113 // 3. Campaign end date is set and greater than today - show end date
114 // 4. If no start and end date or no end date and start date greater than today, then it's ongoing
115 if ($dao->is_active
) {
116 $data['campaign_start'] = ts('Campaign is ongoing');
118 // check for time being between start and end date
120 if ($dao->start_date
) {
121 $startDate = CRM_Utils_Date
::unixTime($dao->start_date
);
125 $data['is_active'] = FALSE;
126 $data['campaign_start'] = ts('Campaign starts on %1', array(
127 1 => CRM_Utils_Date
::customFormat($dao->start_date
, $config->dateformatFull
),
133 if ($dao->end_date
) {
134 $endDate = CRM_Utils_Date
::unixTime($dao->end_date
);
138 $data['is_active'] = FALSE;
139 $data['campaign_start'] = ts('Campaign ended on %1',
141 1 => CRM_Utils_Date
::customFormat($dao->end_date
, $config->dateformatFull
),
145 elseif ($startDate >= $now) {
146 $data['campaign_start'] = ts('Campaign starts on %1',
148 1 => CRM_Utils_Date
::customFormat($dao->start_date
, $config->dateformatFull
),
153 $data['campaign_start'] = ts('Campaign ends on %1',
155 1 => CRM_Utils_Date
::customFormat($dao->end_date
, $config->dateformatFull
),
162 $data['is_active'] = FALSE;
166 $data['is_active'] = FALSE;
169 $data['money_raised_percentage'] = 0;
170 if ($data['money_target'] > 0) {
171 $percent = $data['money_raised'] / $data['money_target'];
172 $data['money_raised_percentage'] = (round($percent, 2)) * 100 . "%";
173 $data['money_target_display'] = CRM_Utils_Money
::format($data['money_target']);
174 $data['money_raised'] = ts('Raised %1 of %2', array(
175 1 => CRM_Utils_Money
::format($data['money_raised']),
176 2 => $data['money_target_display'],
180 $data['money_raised'] = ts('Raised %1', array(1 => CRM_Utils_Money
::format($data['money_raised'])));
183 $data['money_low'] = 0;
184 $data['num_donors'] = $data['num_donors'] . " " . ts('Donors');
185 $data['home_url'] = "<a href='{$config->userFrameworkBaseURL}' class='crm-home-url' style='color:" . $widget->color_homepage_link
. "'>" . ts('Learn more.') . "</a>";
187 // if is_active is false, show this link and hide the contribute button
188 $data['homepage_link'] = $widget->url_homepage
;
190 $data['colors'] = array();
192 $data['colors']["title"] = $widget->color_title
;
193 $data['colors']["button"] = $widget->color_button
;
194 $data['colors']["bar"] = $widget->color_bar
;
195 $data['colors']["main_text"] = $widget->color_main_text
;
196 $data['colors']["main"] = $widget->color_main
;
197 $data['colors']["main_bg"] = $widget->color_main_bg
;
198 $data['colors']["bg"] = $widget->color_bg
;
199 $data['colors']["about_link"] = $widget->color_about_link
;