function testProcessSalsaData()
 {
     echo "Supporter: Should successfully process data from source fields\n";
     global $dia;
     $dia->returns('get', array('Reference_Name' => 'RFP: Murdoc and Harpercollins'), array('action', '3614'));
     $s = new Supporter(array('Source' => 'Web', 'Source_Details' => 'http://act.ran.org/p/dia/action/public/?action_KEY=3614&track=sierramag'));
     $s->process();
     $this->assertEqual($s->data['source_type_category'], 'Action');
     $this->assertEqual($s->data['source_referral'], 'sierramag');
     $this->assertEqual($s->data['source_key'], '3614');
     $this->assertEqual($s->data['source_campaign'], 'RFP');
     $this->assertEqual($s->data['source_type_note'], 'Murdoc and Harpercollins');
     $dia->returns('get', array('Reference_Name' => 'RAG: WOA 3: Stage 1'), array('signup_page', '3597'));
     $s = new Supporter(array('Source' => 'Web', 'Source_Details' => 'http://act.ran.org/p/salsa/web/common/public/signup?signup_page_KEY=3597&Email=jrferraiuolo@bellsouth.net&key=45329141'));
     $s->process();
     $this->assertEqual($s->data['source_type_category'], 'Web');
     $this->assertEqual($s->data['source_key'], '3597');
     $this->assertEqual($s->data['source_campaign'], 'RAG');
     $this->assertEqual($s->data['source_type_note'], 'WOA 3: Stage 1');
     $dia->returns('get', array('Reference_Name' => 'Campaign: 2011: EOY Email 3/4 MD STRING'), array('donate_page', '7630'));
     $s = new Supporter(array('Source' => 'Web Donation', 'Source_Details' => 'https://salsa.wiredforchange.com/o/6022/t/6444/p/d/rd_ran/donations/public/ran_donate_custom.sjs?donate_page_KEY=7630&track=fb'));
     $s->process();
     $this->assertEqual($s->data['source_type_category'], 'Donation');
     $this->assertEqual($s->data['source_key'], '7630');
     $this->assertEqual($s->data['source_referral'], 'fb');
     $this->assertEqual($s->data['source_type_note'], 'Campaign: 2011: EOY Email 3/4 MD STRING');
     $s = new Supporter(array('Source' => 'Web', 'Source_Details' => 'http://rainforestheroes.ran.org/teachers-and-families/'));
     $s->process();
     $this->assertEqual($s->data['source_type_category'], 'Web');
     $this->assertEqual($s->data['source_type_note'], 'rainforestheroes.ran');
     $this->assertFalse($s->data['source_key']);
     $s = new Supporter(array('Source' => 'Web', 'Source_Details' => 'http://www.ran.org/search/node?keys=interdependence&key=0'));
     $s->process();
     $this->assertEqual($s->data['source_type_category'], 'Web');
     $this->assertEqual($s->data['source_type_note'], 'ran');
     $this->assertFalse($s->data['source_key']);
     $s = new Supporter(array('Source' => 'Web', 'Source_Details' => 'http://www3.ran.org/search/node?keys=interdependence&key=0'));
     $s->process();
     $this->assertEqual($s->data['source_type_category'], 'Web');
     $this->assertEqual($s->data['source_type_note'], 'ran');
     $this->assertFalse($s->data['source_key']);
     $s = new Supporter(array('Source' => 'Web', 'Source_Details' => 'http://act.ran.org/action/emailmrpage'));
     $s->process();
     $this->assertEqual($s->data['source_type_category'], 'Action');
     $this->assertEqual($s->data['source_type_note'], 'emailmrpage');
     $this->assertFalse($s->data['source_key']);
     $s = new Supporter(array('Source' => 'Web', 'Source_Details' => 'http://act.ran.org/signup_page/heroupdates'));
     $s->process();
     $this->assertEqual($s->data['source_type_category'], 'Web');
     $this->assertEqual($s->data['source_type_note'], 'heroupdates');
     $this->assertFalse($s->data['source_key']);
     $s = new Supporter(array('Source' => 'Web Donation', 'Source_Details' => 'https://salsa.wiredforchange.com/o/6022/donate_page/fall2010member'));
     $s->process();
     $this->assertEqual($s->data['source_type_category'], 'Donation');
     $this->assertEqual($s->data['source_type_note'], 'fall2010member');
     $this->assertFalse($s->data['source_key']);
 }
<?php

require '../../boot.php';
list($cmd, $supporter_KEY) = $argv;
#$supporter_KEY = 48965489;
$supporter_query = $db->query("SELECT * FROM supporter WHERE supporter_KEY=" . $supporter_KEY);
if ($supporter_query->num_rows > 0) {
    while ($supporter_arr = $supporter_query->fetch_assoc()) {
        $supporter = new Supporter($supporter_arr);
        $supporter->process();
        #$supporter->geovalidate();
        $supporter->updateDonationCounts();
        $supporter->updateActionCounts();
        $supporter->updateEmailCounts();
        $supporter->updateUnsubscribeInfo();
        $supporter->updateSupporterTypes();
        //$supporter->db_update();
        $supporter->data['key'] = $supporter->data['supporter_KEY'];
        //$dia->save('supporter', $supporter->data);
    }
}
echo '<pre>' . print_r($supporter) . '</pre>';