URL: https://www.overclockers.at/coding-stuff/php-sql-hilfe_222804/page_1 - zur Vollversion wechseln!
hallo,
für ein projekt benutze ich civicrm, wobei ich ein paar änderungen vornehmen müsste.
ich habe das ganze genauer in diesem thread http://forum.civicrm.org/index.php/...g78673.html#new im civicrm forum beschrieben; dort konnt mir lieder niemand helfen.
ich hab nicht wirklich ahnung von php, muss ich gleich dazu sagen, und vielleicht ist auch mein ganzer ansatz lächerlich. wär trotzdem nett, wenn jemand sich das mal anschauen könnte.
danke
mfg
conte
Es wär sinnvoll wenn du das Problem hier noch einmal zusammenfassend beschreibst, was du eigentlich willst, wie der code jetzt aussieht und was du verändert hast (diff)
hi
ok:
also bei der open-source software civicrm gibt es das module civicontribute, das für die spendenverwaltung zuständig ist. In dem Modul gibt es ein dashboard mit einer tabelle in der das jährliche spendenvolumen, die spenden des aktuellen monats etc. angezeigt werden.
Diese Tabelle möchte ich um ein paar punkte erweitern. Ich möchte die Summe der einzelnen Spendentypen (Privatspenden, Firmenspeden, etc.) des aktuellen Monats aufgelistet haben.
die datei dashboard.tpl ist für die tabelle zuständig, da würde ich einfach folgendes hinzufügen, was auch funktioniert:
Code: HTML<tr> <td><strong>{ts}Private Donations{/ts}</strong></td> <td class="label">{if NOT $monthToDate.Valid.amount}{ts}(n/a){/ts}{else}{$monthToDate.Valid.amount}{/if}</td> <td class="label">{$monthToDate.Valid.count}</td> <td><a href="{$monthToDate.Valid.url}">{ts}view details{/ts}...</a></td> </tr>
Code: PHP/** * Heart of the viewing process. The runner gets all the meta data for * the contact and calls the appropriate type of page to view. * * @return void * @access public * */ function preProcess( ) { CRM_Utils_System::setTitle( ts('CiviContribute') ); $status = array( 'Valid', 'Cancelled' ); $prefixes = array( 'start', 'month', 'year' ); $startDate = null; $startToDate = $monthToDate = $yearToDate = array( ); //get contribution dates. require_once 'CRM/Contribute/BAO/Contribution.php'; $dates = CRM_Contribute_BAO_Contribution::getContributionDates( ); foreach ( array( 'now', 'yearDate', 'monthDate' ) as $date ) { $$date = $dates[$date]; } $yearNow = $yearDate + 10000; foreach ( $prefixes as $prefix ) { $aName = $prefix . 'ToDate'; $dName = $prefix . 'Date'; if ( $prefix == 'year') { $now = $yearNow; } foreach ( $status as $s ) { ${$aName}[$s] = CRM_Contribute_BAO_Contribution::getTotalAmountAndCount( $s, $$dName, $now ); ${$aName}[$s]['url'] = CRM_Utils_System::url( 'civicrm/contribute/search', "reset=1&force=1&status=1&start={$$dName}&end=$now&test=0"); } $this->assign( $aName, $$aName ); } //for contribution tabular View $buildTabularView = CRM_Utils_Array::value( 'showtable', $_GET, false ); $this->assign( 'buildTabularView', $buildTabularView ); if( $buildTabularView ) return;
Die Funktion ist nicht vollständig oder ? Egal.
Ich hab kurz bei dem anderen Thread reingeschaut und fand:
getTotalAmountAndCount( $s, $$dName, $now );
aus diesem Block:
foreach ( $status as $s ) {
${$aName}[$s] = CRM_Contribute_BAO_Contribution::getTotalAmountAndCount( $s, $$dName, $now );
${$aName}[$s]['url'] = CRM_Utils_System::url( 'civicrm/contribute/search',
"reset=1&force=1&status=1&start={$$dName}&end=$now&test=0");
Das was ich herausgezogen hab ist eine Funktion die wohl scheinbar genau das tut (könnte zmd sein, name passt ja so halbwegs) was du willst, nur das $now mit dem aktuellen Jahr funktioniert.
Du müsstest einfach eine Äquivalente Funktion in der Funktionsliste mit einer weiteren Variable einfügen, also nach $now noch , $nowmonth oder so,
dann in der Funktion eben nach $month == thismonth und $year == thisyear überprüfen und dir das dann ausgeben.
Dazu musst du halt nen weiteren Block dort einfügen wo die Ausgaben definiert werden und dort die Funktion callen.
hi
ja dieser block berechnet das, aber wie kann ich den erweitern, damit er mir die jeweiligen Summen der einzelnen Spendentypen des aktuellen Monats sagt.
ich hab das mal ohne php kenntnissen so geändert:
Code: PHP$status = array( 'Valid', 'Cancelled' ); $prefixes = array( 'start', 'month', 'year' , 'private' ); $startDate = null; $startToDate = $monthToDate = $yearToDate = $privateToDate = array( ); //get contribution dates. require_once 'CRM/Contribute/BAO/Contribution.php'; $dates = CRM_Contribute_BAO_Contribution::getContributionDates( ); foreach ( array( 'now', 'yearDate', 'monthDate', 'privateDate' ) as $date ) { $$date = $dates[$date]; } $yearNow = $yearDate + 10000; foreach ( $prefixes as $prefix ) { $aName = $prefix . 'ToDate'; $dName = $prefix . 'Date'; $type = $contribution_type_id_value = 3; if ( $prefix == 'year') { $now = $yearNow; } foreach ( $status as $s ) { ${$aName}[$s] = CRM_Contribute_BAO_Contribution::getTotalAmountAndCount( $s, $$dName, $now, $type ); ${$aName}[$s]['url'] = CRM_Utils_System::url( 'civicrm/contribute/search', "reset=1&force=1&status=1&start={$$dName}&end=$now&test=0"); } $this->assign( $aName, $$aName ); }
Code: PHP<tr> <td><strong>{ts}Privatspenden{/ts}</strong></td> <td class="label">{if NOT $privateToDate.Valid.amount}{ts}(n/a){/ts}{else}{$privateToDate.Valid.amount}{/if}</td> <td class="label">{$privateToDate.Valid.count}</td> <td><a href="{$privateToDate.Valid.url}">{ts}view details{/ts}...</a></td> </tr>
Du kannst nicht erwarten einfach einer Funktion ein zusätzliches Argument zu übergeben und das funktioniert dann. Da muss man schon auch den Code noch ändern.
Zitat von watchoutDu kannst nicht erwarten einfach einer Funktion ein zusätzliches Argument zu übergeben und das funktioniert dann. Da muss man schon auch den Code noch ändern.
Also suchst du eigentlich keine Hilfe sondern wen der das für dich macht, oder?Zitat von nicolas contedu kannst nicht erwarten, dass mir das weiter hilft.
conte
er braucht wohl ein php-tut zum besseren verständnis, vielleicht reicht auch die php-doku.
Es gibt irgendwo eine Liste in der stehen die Funktionen.Zitat von nicolas contedu kannst nicht erwarten, dass mir das weiter hilft.
conte
Zitat von watchoutAlso suchst du eigentlich keine Hilfe sondern wen der das für dich macht, oder?
Du wirst dich genauer in PHP einarbeiten müssen. So gerne dir einer von uns helfen möchte, es wird wenig bringen, wenn du die Änderungen nicht verstehst.
Du hast ja scheinbar eine funktionierende Code-Basis ... experimentiere damit herum und du wirst sehen, dass alles seinen Grund hat. Die PHP-Dokumentation ist sehr benutzerfreundlich und sorgt für ausreichend Informationen, ohne eine Suchmaschine anwerfen zu müssen.
hallo,
danke für die antworten. ich sehe schon, dass ich dies wahrscheinlich nicht hinbekommen werde.
könnte das jemand von euch, natürlich gegen bezahlung, übernehmen? wieviel arbeitsaufwand ist das ungefähr?
mfg
conte
up
check your pm^^
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025