Record historical statistics every day

master
Sven Slootweg 11 years ago
parent a95e47d3b9
commit 2672c73bee

@ -32,6 +32,8 @@ class Campaign extends CPHPDatabaseRecordClass
'MonthlyProjection' => "ProjectedMonthlyDonations",
'PastMonthDonations' => "PastMonthDonations",
'PastMonthNonDonations' => "PastMonthNonDonations",
'PastMonthAmount' => "PastMonthAmount",
'PastMonthNonAmount' => "PastMonthNonAmount",
'PastMonthSubscriptions' => "PastMonthSubscriptions",
'PastMonthUnsubscriptions' => "PastMonthUnsubscriptions"
),
@ -114,6 +116,26 @@ class Campaign extends CPHPDatabaseRecordClass
return $sPaymentMethod;
}
public function CreateStatisticsEntry()
{
$sStatisticsEntry = new StatisticsEntry(0);
$sStatisticsEntry->uDonationRate = $this->sDonationRate;
$sStatisticsEntry->uSubscriberCount = $this->sSubscriberCount;
$sStatisticsEntry->uTotalMonthlyDonations = $this->sMonthlyTotal;
$sStatisticsEntry->uProjectedMonthlyDonations = $this->sMonthlyProjection;
$sStatisticsEntry->uPastMonthDonations = $this->sPastMonthDonations;
$sStatisticsEntry->uPastMonthNonDonations = $this->sPastMonthNonDonations;
$sStatisticsEntry->uPastMonthAmount = $this->sPastMonthAmount;
$sStatisticsEntry->uPastMonthNonAmount = $this->sPastMonthNonAmount;
$sStatisticsEntry->uPastMonthSubscriptions = $this->sPastMonthSubscriptions;
$sStatisticsEntry->uPastMonthUnsubscriptions = $this->sPastMonthUnsubscriptions;
$sStatisticsEntry->uHaveData = $this->sHaveData;
$sStatisticsEntry->uAllowOneTime = $this->sAllowOneTime;
$sStatisticsEntry->uDate = time();
$sStatisticsEntry->uCampaignId = $this->sId;
return $sStatisticsEntry;
}
public function UpdateStatistics()
{
global $database, $cphp_config;

@ -0,0 +1,47 @@
<?php
/*
* ReDonate is more free software. It is licensed under the WTFPL, which
* allows you to do pretty much anything with it, without having to
* ask permission. Commercial use is allowed, and no attribution is
* required. We do politely request that you share your modifications
* to benefit other developers, but you are under no enforced
* obligation to do so :)
*
* Please read the accompanying LICENSE document for the full WTFPL
* licensing text.
*/
if(!isset($_APP)) { die("Unauthorized."); }
class StatisticsEntry extends CPHPDatabaseRecordClass
{
public $table_name = "statistics_entries";
public $fill_query = "SELECT * FROM statistics_entries WHERE `Id` = :Id";
public $verify_query = "SELECT * FROM statistics_entries WHERE `Id` = :Id";
public $prototype = array(
'numeric' => array(
'CampaignId' => "CampaignId",
'SubscriberCount' => "SubscriberCount",
'TotalMonthlyDonations' => "TotalMonthlyDonations",
'ProjectedMonthlyDonations' => "ProjectedMonthlyDonations",
'PastMonthDonations' => "PastMonthDonations",
'PastMonthAmount' => "PastMonthAmount",
'PastMonthNonDonations' => "PastMonthNonDonations",
'PastMonthNonAmount' => "PastMonthNonAmount",
'PastMonthSubscriptions' => "PastMonthSubscriptions",
'PastMonthUnsubscriptions' => "PastMonthUnsubscriptions",
'DonationRate' => "DonationRate"
),
'timestamp' => array(
'Date' => "Date"
),
'boolean' => array(
'HaveData' => "HaveData",
'AllowOneTime' => "AllowOneTime"
),
'campaign' => array(
'Campaign' => "Campaign"
)
);
}

@ -68,3 +68,12 @@ foreach($sSubscriptions as $sSubscription)
$sSubscription->uLastEmailDate = time();
$sSubscription->InsertIntoDatabase();
}
/* Now, we'll log a historical statistics snapshot for every campaign. */
foreach(Campaign::CreateFromQuery("SELECT * FROM campaigns") as $sCampaign)
{
$sCampaign->UpdateStatistics();
$sStatisticsEntry = $sCampaign->CreateStatisticsEntry();
$sStatisticsEntry->InsertIntoDatabase();
}

Loading…
Cancel
Save