X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FWci%2FBAO%2FProgressBar.php;h=92654f43062300d80b92cd608cb4b231d0eca8d8;hb=5881d614c81a741069316c8835b1ebd05736a638;hp=ce2f3af31efe68ab0656263cea1161e812502786;hpb=1738aaa1808a0917477ecde2b86caa93b0fe805d;p=com.zyxware.civiwci.git diff --git a/CRM/Wci/BAO/ProgressBar.php b/CRM/Wci/BAO/ProgressBar.php index ce2f3af..92654f4 100644 --- a/CRM/Wci/BAO/ProgressBar.php +++ b/CRM/Wci/BAO/ProgressBar.php @@ -33,7 +33,7 @@ */ require_once 'CRM/Wci/DAO/ProgressBar.php'; -class CRM_WCI_BAO_ProgressBar extends CRM_WCI_DAO_ProgressBar { +class CRM_Wci_BAO_ProgressBar extends CRM_Wci_DAO_ProgressBar { /** * class constructor @@ -50,7 +50,7 @@ class CRM_WCI_BAO_ProgressBar extends CRM_WCI_DAO_ProgressBar { * * @param array $params (reference ) an assoc array of name/value pairs * - * @return object CRM_WCI_BAO_ProgressBar object + * @return object CRM_Wci_BAO_ProgressBar object * @access public * @static */ @@ -61,7 +61,7 @@ class CRM_WCI_BAO_ProgressBar extends CRM_WCI_DAO_ProgressBar { CRM_Core_Error::fatal('Not enough data to create a progress bar.'); } - $progress_bar = new CRM_WCI_BAO_ProgressBar(); + $progress_bar = new CRM_Wci_BAO_ProgressBar(); $progress_bar->copyValues($params); $progress_bar->save(); @@ -74,12 +74,12 @@ class CRM_WCI_BAO_ProgressBar extends CRM_WCI_DAO_ProgressBar { * names of civicrm_wci_widget. * * @param array $params - * @return array of CRM_WCI_BAO_ProgressBar objects + * @return array of CRM_Wci_BAO_ProgressBar objects */ static function retrieve(array $params) { $result = array(); - $progress_bar = new CRM_WCI_BAO_ProgressBar(); + $progress_bar = new CRM_Wci_BAO_ProgressBar(); $progress_bar->copyValues($params); $progress_bar->find(); @@ -96,7 +96,7 @@ class CRM_WCI_BAO_ProgressBar extends CRM_WCI_DAO_ProgressBar { * Wrapper method for retrieve * * @param mixed $id Int or int-like string representing widget ID - * @return CRM_WCI_BAO_ProgressBar + * @return CRM_Wci_BAO_ProgressBar */ static function retrieveByID($id) { if (!is_int($id) && !ctype_digit($id)) { @@ -127,4 +127,74 @@ class CRM_WCI_BAO_ProgressBar extends CRM_WCI_DAO_ProgressBar { } return FALSE; } + + /** + * Returns array of progressbars + * Fields : id, name, starting_amount, goal_amount + * @return progressbar array + * @access public + */ + public static function getProgressbarList() { + $query = "SELECT * FROM civicrm_wci_progress_bar"; + $params = array(); + $pbList = array(); + + $dao = CRM_Core_DAO::executeQuery($query, $params, TRUE, 'CRM_Wci_DAO_ProgressBar'); + + while ($dao->fetch()) { + $pbList[$dao->id] = array(); + CRM_Core_DAO::storeValues($dao, $pbList[$dao->id]); + } + + return $pbList; + } + + /** + * Returns percentage value of a progressbar + * + * @param integer progressbar id + * + * @return decimal percentage value + * @access public + */ + public static function getProgressbarPercentage($idPB) { + $bp = 0; + $query = "SELECT * FROM civicrm_wci_progress_bar where id=" . $idPB; + $params = array(); + $dao = CRM_Core_DAO::executeQuery($query, $params, TRUE, 'CRM_Wci_DAO_ProgressBar'); + + while ($dao->fetch()) { + $con_page[$dao->id] = array(); + CRM_Core_DAO::storeValues($dao, $con_page[$dao->id]); + $con_page[$dao->id]['name']; + $sa = $con_page[$dao->id]['starting_amount']; + $ga = $con_page[$dao->id]['goal_amount']; + } + + $query = "SELECT * FROM civicrm_wci_progress_bar_formula WHERE progress_bar_id =" . $idPB; + $params = array(); + + $daoPbf = CRM_Core_DAO::executeQuery($query, $params, TRUE, 'CRM_Wci_DAO_ProgressBarFormula'); + while ($daoPbf->fetch()) { + $for_page[$daoPbf->id] = array(); + CRM_Core_DAO::storeValues($daoPbf, $for_page[$daoPbf->id]); + $px = $for_page[$daoPbf->id]['percentage']; + + $query = "SELECT * FROM civicrm_contribution where contribution_page_id =" . $for_page[$daoPbf->id]['contribution_page_id']; + $params = array(); + + $daoCon = CRM_Core_DAO::executeQuery($query, $params, TRUE, 'CRM_Contribute_DAO_Contribution'); + + while ($daoCon->fetch()) { + $contributions[$daoCon->id] = array(); + CRM_Core_DAO::storeValues($daoCon, $contributions[$daoCon->id]); + $bx = $contributions[$daoCon->id]['total_amount']; + + $bp += $bx * $px / 100; + } + } + (0 == $ga) ? $perc = 0: $perc = (($sa + $bp) / $ga ) * 100; + + return $perc; + } }