Skip to content
This repository has been archived by the owner on Apr 24, 2019. It is now read-only.

Commit

Permalink
First commit
Browse files Browse the repository at this point in the history
  • Loading branch information
Tyler Hall committed Jul 15, 2009
1 parent 60a15c6 commit ce7f332
Show file tree
Hide file tree
Showing 42 changed files with 5,448 additions and 0 deletions.
29 changes: 29 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
* Copyright (c) 2006 - 2008, Simple PHP Framework <[email protected]>
* http://github.com/tylerhall/simple-php-framework/
* All rights reserved.
*
* This software is released under the terms of the New BSD License.
* http://www.opensource.org/licenses/bsd-license.php
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the Simple PHP Framework nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY Simple PHP Framework "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL Simple PHP Framework OR ITS CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
* THE POSSIBILITY OF SUCH DAMAGE.
14 changes: 14 additions & 0 deletions README.mdown
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
Appcaster
===================
Appcaster is a web-based dashboard for indie Mac developers. It's designed to manage payment and order processing with PayPal and generate and email license files to your users using the [Aquatic Prime](http://www.aquaticmac.com/) framework. It even uploads each revision of your app into Amazon S3 and can produce reports from your users' demographic info (gathered via [Sparkle](http://sparkle.andymatuschak.org/)). It also serves as a central location to collect user feedback, bug reports, and support questions.

This specific GitHub project is a complete rewrite of the previous version that was hosted on Google Code. Normally, I'm not an advocate of rewriting something that works, but in this case I felt it was needed. The original release (two years ago) was written in a very short period of time in a rush to release my first OS X applciation. This version uses an upgraded version of its PHP framework and is designed with future plans in mind.

Basic Usage
-----------

License
-------

This code is released under the MIT Open Source License. Feel free to do whatever you want with it.

37 changes: 37 additions & 0 deletions appcast.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
<?PHP
require 'includes/master.inc.php';

$app = new Application($_GET['id']);
if(!$app->ok()) die('Application not found');

$db = Database::getDatabase();

// This table format is crap, but it future proofs us against Sparkle format changes
$ip = $_SERVER['REMOTE_ADDR'];
$dt = date("Y-m-d H:i:s");
$db->query("INSERT INTO sparkle_reports (ip, dt) VALUES (:ip, :dt)", array('ip' => $ip, 'dt' => $dt));
$id = $db->insertId();
foreach($_GET as $k => $v)
$db->query("INSERT INTO sparkle_data (sparkle_id, `key`, data) VALUES (:id, :k, :v)", array('id' => $id, 'k' => $k, 'v' => $v));

$versions = DBObject::glob('Version', "SELECT * FROM versions WHERE app_id = '{$app->id}' ORDER BY dt DESC LIMIT 10");

header("Content-type: application/xml");
?>
<?PHP echo '<'; ?>?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:sparkle="http://www.andymatuschak.org/xml-namespaces/sparkle" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
<title><?PHP echo $app->name; ?> Changelog</title>
<link><?PHP echo $app->link; ?></link>
<description>Most recent changes with links to updates.</description>
<language>en</language>
<?PHP foreach($versions as $v) : ?>
<item>
<title><?PHP echo $app->name; ?> <?PHP echo $v->human_version; ?></title>
<description><![CDATA[ <?PHP echo $v->release_notes; ?> ]]></description>
<pubDate>Frim, 03 Jul 2009 19:20:11 +0000</pubDate>
<enclosure url="<?PHP echo $v->url; ?>" sparkle:shortVersionString="<?PHP echo $v->human_version; ?>" sparkle:version="<?PHP echo $v->version_number; ?>" length="<?PHP echo $v->filesize; ?>" type="application/octet-stream" sparkle:dsaSignature="<?PHP echo $v->signature; ?>" />
</item>
<?PHP endforeach; ?>
</channel>
</rss>
155 changes: 155 additions & 0 deletions appcaster.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,155 @@
-- phpMyAdmin SQL Dump
-- version 2.9.1
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generation Time: Jul 15, 2009 at 11:51 AM
-- Server version: 5.0.51
-- PHP Version: 5.2.4-2ubuntu5.6
--
-- Database: `appcaster`
--

-- --------------------------------------------------------

--
-- Table structure for table `applications`
--

CREATE TABLE `applications` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(128) character set utf8 collate utf8_unicode_ci NOT NULL default '',
`link` varchar(128) character set utf8 collate utf8_unicode_ci NOT NULL default '',
`bundle_name` varchar(128) character set utf8 collate utf8_unicode_ci NOT NULL default '',
`s3key` varchar(128) character set utf8 collate utf8_unicode_ci NOT NULL default '',
`s3pkey` varchar(128) character set utf8 collate utf8_unicode_ci NOT NULL default '',
`s3bucket` varchar(128) character set utf8 collate utf8_unicode_ci NOT NULL default '',
`s3path` varchar(128) character set utf8 collate utf8_unicode_ci NOT NULL default '',
`sparkle_key` text character set utf8 collate utf8_unicode_ci NOT NULL,
`sparkle_pkey` text character set utf8 collate utf8_unicode_ci NOT NULL,
`ap_key` text NOT NULL,
`ap_pkey` text NOT NULL,
`from_email` varchar(128) NOT NULL default '',
`email_subject` varchar(128) NOT NULL default '',
`email_body` text NOT NULL,
`license_filename` varchar(64) NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

-- --------------------------------------------------------

--
-- Table structure for table `orders`
--

CREATE TABLE `orders` (
`id` int(11) NOT NULL auto_increment,
`app_id` int(11) NOT NULL,
`dt` datetime NOT NULL,
`txn_type` varchar(25) NOT NULL,
`first_name` varchar(128) NOT NULL,
`last_name` varchar(128) NOT NULL,
`residence_country` varchar(25) NOT NULL,
`item_name` varchar(25) NOT NULL,
`payment_gross` float NOT NULL,
`mc_currency` varchar(25) NOT NULL,
`business` varchar(128) NOT NULL,
`payment_type` varchar(25) NOT NULL,
`verify_sign` varchar(128) NOT NULL,
`payer_status` varchar(25) NOT NULL,
`tax` float NOT NULL,
`payer_email` varchar(128) NOT NULL,
`txn_id` varchar(128) NOT NULL,
`quantity` int(11) NOT NULL,
`receiver_email` varchar(128) NOT NULL,
`payer_id` varchar(128) NOT NULL,
`receiver_id` varchar(128) NOT NULL,
`item_number` varchar(25) NOT NULL,
`payment_status` varchar(25) NOT NULL,
`payment_fee` float NOT NULL,
`mc_fee` float NOT NULL,
`shipping` float NOT NULL,
`mc_gross` float NOT NULL,
`custom` varchar(255) NOT NULL,
`license` text NOT NULL,
`type` enum('PayPal','Manual','Student') NOT NULL,
`deleted` tinyint(4) NOT NULL,
`hash` varchar(5) NOT NULL,
`claimed` tinyint(4) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

-- --------------------------------------------------------

--
-- Table structure for table `sessions`
--

CREATE TABLE `sessions` (
`id` int(255) NOT NULL auto_increment,
`data` text collate utf8_unicode_ci NOT NULL,
`updated_on` int(10) NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

-- --------------------------------------------------------

--
-- Table structure for table `sparkle_data`
--

CREATE TABLE `sparkle_data` (
`sparkle_id` int(11) NOT NULL,
`key` varchar(128) NOT NULL,
`data` varchar(128) NOT NULL,
KEY `sparkle_id` (`sparkle_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

-- --------------------------------------------------------

--
-- Table structure for table `sparkle_reports`
--

CREATE TABLE `sparkle_reports` (
`id` int(11) NOT NULL auto_increment,
`dt` datetime NOT NULL,
`ip` varchar(15) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

-- --------------------------------------------------------

--
-- Table structure for table `users`
--

CREATE TABLE `users` (
`id` int(11) NOT NULL auto_increment,
`username` varchar(65) collate utf8_unicode_ci NOT NULL default '',
`password` varchar(65) collate utf8_unicode_ci NOT NULL default '',
`level` enum('user','admin') collate utf8_unicode_ci NOT NULL default 'user',
`email` varchar(65) collate utf8_unicode_ci default NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `username` (`username`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

-- --------------------------------------------------------

--
-- Table structure for table `versions`
--

CREATE TABLE `versions` (
`id` int(11) NOT NULL auto_increment,
`app_id` int(11) NOT NULL default '0',
`human_version` varchar(128) collate utf8_unicode_ci NOT NULL,
`version_number` varchar(10) collate utf8_unicode_ci NOT NULL default '',
`dt` datetime NOT NULL default '0000-00-00 00:00:00',
`release_notes` text collate utf8_unicode_ci NOT NULL,
`filesize` bigint(20) NOT NULL default '0',
`url` varchar(255) collate utf8_unicode_ci NOT NULL default '',
`downloads` int(11) NOT NULL default '0',
`signature` varchar(65) collate utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Loading

0 comments on commit ce7f332

Please sign in to comment.