WP Charitable és php (összegyűlt adomány ellenőrzés)

Sziasztok!

Már napok óta küszködök a Wordpress Charitable pluginnel.
Lényeg, hogy amikor Jóska rábök a Támogatás gombra az adományozói űrlapon, akkor lefusson egy ellenőrzés, hogy a beírt összeget hozzáadva az eddig összegyűlthöz, megnézze, összegyűlt-e a célösszeg.
Ehhez írtam az alábbi sorokat egy Facebook-os WP csoporttag segítségével:

//Valóra vált a cél.

function modositsuk_a_kategoriat($donation_id, $donation_processor){
$campaign = $donation_processor->get_campaign();
/* elérte-e a kampány a célját */

$endtime_timestamp=(strtotime(get_field('expire_campaign')));
$now=strtotime(date("Y-m-d H:i:s"));

if ( $_POST['donated_amount']+$campaign->get_donated_amount() >= $campaign->get_goal() OR $now >= $endtime_timestamp) {

$campaign_id = $campaign->__get('ID');

$category = array( 103 ); // ez a kategória azonosítója, amelybe a kategóriát át akarjuk helyzeni

wp_set_post_terms( $campaign_id, $category, 'campaign_category', false );
}
}

add_action('charitable_after_save_donation','modositsuk_a_kategoriat',99,2);

A gond az, hogy ha összegyűlt a pénz, ha nem, mindenképpen átkerül a 103 ID-el rendelkező csoportba a kampány.
Itt lehet megnézni, miről beszélek: http://www.sandbox.tegyjot.hu/gyujtes/eszter-nazarov-mutetre-gyujt/

Köszönöm előre is a segítséget!

Hozzászólások

Tipp:
if ( (int) $_POST['donated_amount']+

Nekem az gyanús benne, hogy nem látszik, hogy az expire_campaign honnan jön (ha egyáltalán jön :)).
(és, hogy a plugin mindenhol get_donated_amount(true) azaz a sanitized értékével számol. ;))

Szerintem azért lehet, mert ha jól láttam akkor a támogatás gomb egy formra és kitöltés után egy köszönöm oldalra. A get_field pedig nem kap post_id-t így lehet nem azt olvassa amit te szeretnél. (értsd gondolom nem az adománynak van lejárati ideje, hanem magának a kampánynak és jó eséllyel az előbbi id-jét kapja meg :))

Próbáld meg kiíratni az értékeket, JS konzolba vagy egy fileba és kiderül:

file_put_contents(
dirname(__FILE__)."/whatshappening.log",
$_POST['donated_amount']."+".
$campaign->get_donated_amount().">=". $campaign->get_goal()."OR".$now.">=".$endtime_timestamp);

A helyes megfejtés: $_POST['donation_amount']

Még a campaign_expire változóval van bajom:
$now=2017-02-25 10:57:42
$campaign_expire=1970-01-01 (zanzásítva másoltam az értékeket)

A gond, hogy a $campaign_expire értéke elméletileg 2017-03-01 00:00:00 -re van beállítva.

Ebben ha tudnál/tudnátok még segíteni, sínen lennék.

--
-- GKPortál Blog
Tégy Jót!®
Legyen neked is Dropbox tárhelyed! :)