diff --git a/htdocs/don.class.php b/htdocs/don.class.php index 905acccfdd5..3af42b898ed 100644 --- a/htdocs/don.class.php +++ b/htdocs/don.class.php @@ -291,5 +291,59 @@ class Don return 0; } } + /* + * Somme des dons payés + * encaissés ou non + */ + Function sum_actual() + { + $sql = "SELECT sum(amount)"; + $sql .= " FROM llx_don"; + $sql .= " WHERE fk_statut = 3"; + + if ( $this->db->query( $sql) ) + { + $row = $this->db->fetch_row(0); + + return $row[0]; + + } + } + /* + * En attente de paiement + * + */ + Function sum_pending() + { + $sql = "SELECT sum(amount)"; + $sql .= " FROM llx_don"; + $sql .= " WHERE fk_statut = 2"; + + if ( $this->db->query( $sql) ) + { + $row = $this->db->fetch_row(0); + + return $row[0]; + + } + } + /* + * Somme des promesses de dons validées + * + */ + Function sum_intent() + { + $sql = "SELECT sum(amount)"; + $sql .= " FROM llx_don"; + $sql .= " WHERE fk_statut = 1"; + + if ( $this->db->query( $sql) ) + { + $row = $this->db->fetch_row(0); + + return $row[0]; + + } + } } ?> diff --git a/htdocs/lib/thermometer.php b/htdocs/lib/thermometer.php new file mode 100644 index 00000000000..ee5d70e6f16 --- /dev/null +++ b/htdocs/lib/thermometer.php @@ -0,0 +1,179 @@ + + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * $Id$ + * $Source$ + * + */ +function moneyMeter($actualValue=0, $pendingValue=0, $intentValue=0) + /* + This function returns the html for the moneymeter. + cachedValue: amount of actual money + pendingValue: amount of money of pending memberships + intentValue: amount of intended money (that's without the amount of actual money) + */ +{ + + // variables + $height="200"; + $maximumValue=125000; + + $imageDir = "http://eucd.info/images/"; + + $imageTop = $imageDir . "therm_top.png"; + $imageMiddleActual = $imageDir . "therm_actual.png"; + $imageMiddlePending = $imageDir . "therm_pending.png"; + $imageMiddleIntent = $imageDir . "therm_intent.png"; + $imageMiddleGoal = $imageDir . "therm_goal.png"; + $imageIndex = $imageDir . "therm_index.png"; + $imageBottom = $imageDir . "therm_bottom.png"; + $imageColorActual = $imageDir . "therm_color_actual.png"; + $imageColorPending = $imageDir . "therm_color_pending.png"; + $imageColorIntent = $imageDir . "therm_color_intent.png"; + + $htmlThermTop = ' + + + +
+ + + + + + + + + + + +
+ '; + + $htmlSection = ' + '; + + $htmlThermbottom = ' +
+
+
'; + + // legenda + + $legendaActual = "€ " . round($actualValue); + $legendaPending = "€ " . round($pendingValue); + $legendaIntent = "€ " . round($intentValue); + $legendaTotal = "€ " . round($actualValue + $pendingValue + $intentValue); + $htmlLegenda = ' + + + + + + +
 Payé:
' . $legendaActual . '
 En attente:
' . $legendaPending . '
 Promesses:
' . $legendaIntent . '
 Total:
' . $legendaTotal . '
+ + '; + + // check and edit some values + + $error = 0; + if ( $maximumValue <= 0 || $height <= 0 || $actualValue < 0 || $pendingValue < 0 || $intentValue < 0) + { + return "The money meter could not be processed
\n"; + } + if ( $actualValue > $maximumValue ) + { + $actualValue = $maximumValue; + $pendingValue = 0; + $intentValue = 0; + } + else + { + if ( ($actualValue + $pendingValue) > $maximumValue ) + { + $pendingValue = $maximumValue - $actualValue; + $intentValue = 0; + } + else + { + if ( ($actualValue + $pendingValue + $intentValue) > $maximumValue ) + { + $intentValue = $maximumValue - $actualValue - $pendingValue; + } + } + } + + // start writing the html (from bottom to top) + + // bottom + $thermometer = $htmlThermbottom; + + // actual + $sectionHeight = round(($actualValue / $maximumValue) * $height); + $totalHeight = $totalHeight + $sectionHeight; + if ( $sectionHeight > 0 ) + { + $section = $htmlSection; + $section = str_replace("{image}", $imageMiddleActual, $section); + $section = str_replace("{height}", $sectionHeight, $section); + $thermometer = $section . $thermometer; + } + + // pending + $sectionHeight = round(($pendingValue / $maximumValue) * $height); + $totalHeight = $totalHeight + $sectionHeight; + if ( $sectionHeight > 0 ) + { + $section = $htmlSection; + $section = str_replace("{image}", $imageMiddlePending, $section); + $section = str_replace("{height}", $sectionHeight, $section); + $thermometer = $section . $thermometer; + } + + // intent + $sectionHeight = round(($intentValue / $maximumValue) * $height); + $totalHeight = $totalHeight + $sectionHeight; + if ( $sectionHeight > 0 ) + { + $section = $htmlSection; + $section = str_replace("{image}", $imageMiddleIntent, $section); + $section = str_replace("{height}", $sectionHeight, $section); + $thermometer = $section . $thermometer; + } + + // goal + $sectionHeight = $height- $totalHeight; + if ( $sectionHeight > 0 ) + { + $section = $htmlSection; + $section = str_replace("{image}", $imageMiddleGoal, $section); + $section = str_replace("{height}", $sectionHeight, $section); + $thermometer = $section . $thermometer; + } + + // top + $thermometer = $htmlThermTop . $thermometer; + + return $thermometer . $htmlLegenda; +} + +?> + + + diff --git a/htdocs/public/dons/therm.php b/htdocs/public/dons/therm.php index 567477f11b8..d3196f70fa6 100644 --- a/htdocs/public/dons/therm.php +++ b/htdocs/public/dons/therm.php @@ -19,53 +19,25 @@ * $Source$ */ -$thermlib = "/var/www/www.eucd.info/htdocs/thermometer.php"; +$thermlib = "../../lib/thermometer.php"; if (file_exists ($thermlib)) { include($thermlib); - $posten_file = "/var/www/www.eucd.info/htdocs/posten.txt"; - $totaal_file = "/var/www/www.eucd.info/htdocs/totaal.txt"; - - /* * Read Values */ - if (file_exists ($posten_file)) - { - if (file_exists ($totaal_file)) - { + $conf = new Conf(); + $db = new Db(); + $don = new Don($db); - /* lees posten uit file */ - $fp = fopen($posten_file, 'r' ); - - - if ($fp) - { - $post_donaties = fgets( $fp, 10 ); - $post_sponsoring = fgets( $fp, 10 ); - $post_intent = fgets( $fp, 10 ); - fclose( $fp ); - } - - /* lees posten uit file */ - $fp = fopen( $totaal_file, 'r' ); - if ($fp) - { - $totaal_ontvangen = fgets( $fp, 10 ); - $totaal_pending = fgets( $fp, 10 ); - fclose( $fp ); - } - } - } - - /* - * Graph thermometer - */ + $actualValue = $don->sum_actual(); + $pendingValue = $don->sum_pending(); + $intentValue = $don->sum_intent(); + + print moneyMeter($actualValue, $pendingValue, $intentValue); - print moneyMeter($totaal_ontvangen+$post_donaties+$post_sponsoring, $totaal_pending, $post_intent); } - ?>