';
echo '
';
echo '';
if (is_array($_POST)) {
$url="http://itunes.apple.com/search?term=".urlencode($_POST['appname'])."&country=us&entity=".$_POST['type']."";
$contents = file_get_contents($url);
$contents = utf8_encode($contents);
$foundApps = json_decode($contents);
$listOfApps = $foundApps->results;
//echo "";print_r($listOfApps);echo "
";
//echo "[$url]
";
echo '';
foreach ($listOfApps as $appData) {
if($appData->price == 0) {
$TheAppPrice = "Free!";
} elseif($appData->price < 1) {
$TheAppPrice = number_format($appData->price,2)*100;
$TheAppPrice .="¢";
} else {
$TheAppPrice = "$".$appData->price."";
}
echo '
';
echo '
';
echo '

';
echo '
';
echo '
';
echo $appData->trackName;
echo " (".$appData->version.")";
echo " [".$TheAppPrice."]
";
echo 'trackId.'"]';
echo '">';
echo '
';
echo "
";
}
echo "
";
}
}
function appStore_app_handler( $atts,$content=null, $code="" ) {
// Get App ID and more_info_text from shortcode
extract( shortcode_atts( array(
'id' => '',
'more_info_text' => 'continued...'
), $atts ) );
//Don't do anything if the ID is blank or non-numeric
if($id == "" || !is_numeric($id))return;
//Get the App Data
$app = appStore_get_data($id);
if($app)
return appStore_page_output($app,$more_info_text,"internal",$code);
else
wp_die('No valid data for app id: ' . $id);
}
function iTunesStore_handler( $atts,$content=null, $code="" ) {
// Get iTunes ID and more_info_text from shortcode
extract( shortcode_atts( array(
'id' => '',
'more_info_text' => 'continued...'
), $atts ) );
//Don't do anything if the ID is blank or non-numeric
if($id == "" || !is_numeric($id))return;
//Get the Music Data
$iTunesItem = appStore_get_data($id);
if($iTunesItem)
return iTunesStore_page_output($iTunesItem,$more_info_text,"internal",$code);
else
wp_die('No valid data for iTunes id: ' . $id);
}
function iBooksStore_handler( $atts,$content=null, $code="" ) {
// Get iBooks ID and more_info_text from shortcode
extract( shortcode_atts( array(
'id' => '',
'more_info_text' => 'continued...'
), $atts ) );
//Don't do anything if the ID is blank or non-numeric
if($id == "" || !is_numeric($id))return;
//Get the Book Data
return true;
}
function appStore_atomfeed_handler($atts, $content = null, $code="") {
// Get ATOM URL and more_info_text from shortcode
extract( shortcode_atts( array(
'atomurl' => '',
'more_info_text' => 'open in The App Store...'
), $atts ) );
$last = $atomurl[strlen($atomurl)-1];
if($last != "/") $AddSlash = "/";
$RSS_Feed = $atomurl.$AddSlash."xml";
//Check to see if feed is available cached
$appStore_option = "appStore_rssfeed_".hash('md2', $RSS_Feed);
$feedData = get_option($appStore_option);
if (!empty($feedData)) {
$appIDs = $feedData;
} else {
// Get Array of AppIDs for ATOM Feed
$appIDs = appStore_getIDs_from_feed($RSS_Feed);
update_option($appStore_option, $appIDs);
}
//Pair down array to number of apps preference
array_splice($appIDs, appStore_setting('qty_of_apps'));
//Load App data
foreach($appIDs as $appID) {
if($appID == "" || !is_numeric($appID)) return;
$app = appStore_get_data($appID);
if($app)
echo appStore_page_output($app,$more_info_text,"external",$code);
else
wp_die('No valid data for app id: ' . $id);
}
return;
}
// ------------START OF MAIN FUNCTIONS-----------------
function iTunesStore_page_output($iTunesItem, $more_info_text,$mode="internal",$platform="music_store") {
GLOBAL $is_iphone;
// Start capturing output so the text in the post comes first.
ob_start();
switch ($iTunesItem->wrapperType) {
case "collection":
$unformattedPrice = $iTunesItem->collectionPrice;
if($iTunesItem->collectionID) $iTunesID = $iTunesItem->collectionID;
if($iTunesItem->collectionId) $iTunesID = $iTunesItem->collectionId;
$iTunesName = $iTunesItem->collectionName;
$isExplicit = $iTunesItem->collectionExplicitness;
$trackCount = $iTunesItem->trackCount;
$iTunesKind = $iTunesItem->collectionType;
$iTunesURL = $iTunesItem->collectionViewUrl;
break;
case "track":
$unformattedPrice = $iTunesItem->trackPrice;
$iTunesID = $iTunesItem->trackId;
$iTunesName = $iTunesItem->trackName;
$fromAlbum = $iTunesItem->collectionName;
$isExplicit = $iTunesItem->trackExplicitness;
$trackTime = $iTunesItem->trackTimeMillis;
$iTunesKind = $iTunesItem->kind;
$iTunesURL = $iTunesItem->trackViewUrl;
break;
case "audiobook":
$unformattedPrice = $iTunesItem->collectionPrice;
$iTunesID = $iTunesItem->collectionId;
$iTunesName = $iTunesItem->collectionName;
$isExplicit = $iTunesItem->collectionExplicitness;
$iTunesURL = $iTunesItem->collectionViewUrl;
break;
}
$iTunesCategory = $iTunesItem->primaryGenreName;
$artistName = $iTunesItem->artistName;
$releaseDate = date( 'F j, Y', strtotime($iTunesItem->releaseDate));
$contentAdvisoryRating = $iTunesItem->contentAdvisoryRating;
$artistType = "Artist";
$cavType = "Explicit";
$trackType = "Track Count";
switch ($iTunesItem->kind) {
case "song":
$artistType = "Artist";
break;
case "feature-movie":
$artistType = "Director";
$cavType = "Rated";
$description = $iTunesItem->longDescription;
break;
case "tv-episode":
$artistType = "Series";
$cavType = "Rated";
$description = $iTunesItem->longDescription;
break;
}
switch ($iTunesItem->collectionType) {
case "TV Season":
$trackType = "Episodes";
$artistType = "Series";
$cavType = "Rated";
$description = $iTunesItem->longDescription;
break;
}
//Check to see if the app is free, or under a dollar
if($unformattedPrice == 0) {
$iTunesPrice = "Free!";
} elseif($unformattedPrice < 1) {
$iTunesPrice = number_format($unformattedPrice,2)*100;
$iTunesPrice .="¢";
} else {
$iTunesPrice = "$".$unformattedPrice."";
}
// iTunes Artwork
switch (appStore_setting('itunesicon_to_use')) {
case "30":
$artwork_url = $iTunesItem->artworkUrl30;
break;
case "60":
$artwork_url = $iTunesItem->artworkUrl60;
break;
case "100":
$artwork_url = $iTunesItem->artworkUrl100;
break;
}
if(appStore_setting('cache_images_locally') == '1') {
$upload_dir = wp_upload_dir();
$artwork_url = $upload_dir['baseurl'] . '/appstoreassistant_cache/' . $iTunesID . '/' . basename($artwork_url);
}
$originalImageSize = getimagesize("$artwork_url");
$adjustIcon = appStore_setting('itunesicon_size_adjust')/100;
if($is_iphone) $adjustIcon = appStore_setting('itunesicon_iOS_size_adjust')/100;
$newImageWidth = $originalImageSize[0] * $adjustIcon;
$newImageHeight = $originalImageSize[1] * $adjustIcon;
$iTunesURL = getAffiliateURL($iTunesURL);
if(appStore_setting('smaller_buy_button_iOS') == "yes" && $is_iphone) {
$buttonText = $iTunesPrice." ";
} else {
$buttonText = $iTunesPrice." - View in iTunes";
}
?>
'.$iTunesName.'';
}
if (appStore_setting('displayitunestrackcount') == "yes" AND !empty($trackCount)) {
echo '
'.$trackType.': '.$trackCount.'';
}
if (appStore_setting('displayitunesartistname') == "yes" AND !empty($artistName)) {
echo '
'.$artistType.': '.$artistName.'';
}
if (appStore_setting('displayfromalbum') == "yes" AND !empty($fromAlbum)) {
echo '
From: '.$fromAlbum.'';
}
if (appStore_setting('displayitunesgenre') == "yes" AND !empty($iTunesCategory)) {
echo '
Genre: '.$iTunesCategory.'';
}
if (appStore_setting('displayadvisoryrating') == "yes" AND !empty($contentAdvisoryRating)) {
echo '
'.$cavType.': '.$contentAdvisoryRating.'';
}
if (appStore_setting('displayitunesreleasedate') == "yes" AND !empty($releaseDate)) {
echo '
Released: '.$releaseDate.'';
}
if (appStore_setting('displayitunesexplicitwarning') == "yes" AND $isExplicit == "explicit") {
echo '
.')
';// 450x268
}
if (appStore_setting('displayitunesdescription') == "yes" AND !empty($description)) {
echo '
';
echo nl2br($description);
echo '
';
}
?>
";
echo "";echo print_r($iTunesItem, true);echo "
";
}
$return = ob_get_contents();
ob_end_clean();
return $return;
}
function appStore_page_output($app, $more_info_text,$mode="internal",$platform="ios_app") {
GLOBAL $is_iphone;
// Start capturing output so the text in the post comes first.
ob_start();
//Check to see if the app is free, or under a dollar
if($app->price == 0) {
$TheAppPrice = "Free!";
} elseif($app->price < 1) {
$TheAppPrice = number_format($app->price,2)*100;
$TheAppPrice .="¢";
} else {
$TheAppPrice = "$".$app->price."";
}
$appURL = getAffiliateURL($app->trackViewUrl);
// App Artwork
switch (appStore_setting('appstoreicon_to_use')) {
case "60":
$artwork_url = $app->artworkUrl60;
break;
case "512":
$artwork_url = $app->artworkUrl512;
break;
}
if(appStore_setting('cache_images_locally') == '1') {
$upload_dir = wp_upload_dir();
$artwork_url = $upload_dir['baseurl'] . '/appstoreassistant_cache/' . $app->trackId . '/' . basename($artwork_url);
}
$originalImageSize = getimagesize("$artwork_url");
$adjustIcon = appStore_setting('appicon_size_adjust')/100;
if($is_iphone) $adjustIcon = appStore_setting('appicon_iOS_size_adjust')/100;
$newImageWidth = $originalImageSize[0] * $adjustIcon;
$newImageHeight = $originalImageSize[1] * $adjustIcon;
//App Category
$appCategory = $app->genres;
$appCategoryList = implode(', ', $appCategory);
//App Rating
if ($app->averageUserRating > 0 && $app->averageUserRating <=10) {
$appRating = $app->averageUserRating * 20;
}else {
$appRating = 0;
}
$AppFeatures = $app->features;
if(appStore_setting('smaller_buy_button_iOS') == "yes" && $is_iphone) {
$buttonText = $TheAppPrice." ";
} else {
$buttonText = $TheAppPrice." - View in App Store ";
}
?>
trackName)) OR $mode != "internal") {
echo '
'.$app->trackName.'
';
}
if (appStore_setting('displayversion') == "yes" AND !empty($app->version)) {
echo '
Version: '.$app->version.'';
}
if ($app->artistName == $app->sellerName) {
if ((appStore_setting('displaydevelopername') == "yes" OR appStore_setting('displaysellername') == "yes") AND !empty($app->artistName)) {
echo '
Created & Sold by: '.$app->artistName.'';
}
} else {
if (appStore_setting('displaydevelopername') == "yes" AND !empty($app->artistName)) {
echo '
Created by: '.$app->artistName.'';
}
if (appStore_setting('displaysellername') == "yes" AND !empty($app->sellerName)) {
echo '
Sold by: '.$app->sellerName.'';
}
}
if (appStore_setting('displayreleasedate') == "yes" AND !empty($app->releaseDate)) {
echo '
Released: '.date( 'F j, Y', strtotime($app->releaseDate) ).'';
}
if (appStore_setting('displayfilesize') == "yes" AND !empty($app->fileSizeBytes)) {
echo '
File Size: '.filesizeinfo($app->fileSizeBytes).'';
}
if (appStore_setting('displayuniversal') == "yes" AND $AppFeatures[0] == "iosUniversal") {
echo '
This app is designed for both iPhone and iPad';
}
if (appStore_setting('displayadvisoryrating') == "yes" AND !empty($app->contentAdvisoryRating)) {
echo '
Age Rating: '.$app->contentAdvisoryRating.'';
}
if (appStore_setting('displaycategories') == "yes" AND !empty($appCategory)) {
echo '
';
if(count($appCategory) == 1) {
echo "Category: ";
echo $appCategory[0];
} elseif (count($appCategory) > 1) {
echo "Categories: ";
echo $appCategoryList;
}
echo '';
}
if(isset($app->userRatingCount) AND appStore_setting('displaystarrating') == "yes") {
echo '
';
echo ' ';
echo ' ';
echo ' by '.$app->userRatingCount.' users.';
echo '
';
}
if (appStore_setting('displaygamecenterenabled') == "yes" AND $app->isGameCenterEnabled == 1) {
echo '
.')
';
}
?>
';
echo nl2br($app->description);
echo '';
echo '
';
echo '
';
// Display iPhone Screenshots
if(count($app->screenshotUrls) > 0) {
echo ' ';
echo '
';
if($platform=="mac_app") echo "Mac ";
if($platform=="ios_app") echo "iPhone ";
echo 'Screenshots:
';
echo '
';
foreach($app->screenshotUrls as $ssurl) {
$ssurl = str_replace(".png", ".320x480-75.jpg", $ssurl);
if(appStore_setting('cache_images_locally') == '1') {
$upload_dir = wp_upload_dir();
$ssurl = $upload_dir['baseurl'] . '/appstoreassistant_cache/' . $app->trackId . '/' . basename($ssurl);
}
echo '
';
}
echo '
';
echo '
';
echo '
';
}
// Display iPad Screenshots
if(count($app->ipadScreenshotUrls) > 0) {
echo ' ';
echo '
iPad Screenshots:
';
echo '
';
foreach($app->ipadScreenshotUrls as $ssurl) {
if(appStore_setting('cache_images_locally') == '1') {
$upload_dir = wp_upload_dir();
$ssurl = $upload_dir['baseurl'] . '/appstoreassistant_cache/' . $app->trackId . '/' . basename($ssurl);
}
echo '
';
}
echo '
';
echo '
';
}
echo '
';
echo ' ';
} else {
$smallDescription = shortenDescription($app->description);
echo ' ';
echo nl2br($smallDescription);
if($mode=="internal") {
echo ' -
continued…';
echo '
';
echo '
';
} else {
echo ' -
'.$more_info_text.'';
}
echo '
';
}
echo '
';
if (appStore_setting('displaysupporteddevices') == "yes" AND is_array($app->supportedDevices)) {
echo 'Supported Devices: '.implode(", ", $app->supportedDevices)."
";
}
echo ' ';
//echo '
';
if($_SERVER['REMOTE_ADDR'] == "98.148.220.0B") {
echo "
";
echo "";echo print_r($iTunesItem, true);echo "
";
}
$return = ob_get_contents();
ob_end_clean();
return $return;
}
function getAffiliateURL($iTunesURL){
switch (appStore_setting('affiliatepartnerid')) {
case 30:
$AffiliateURL = appStore_setting('affiliatecode');
if (strpos($iTunesURL, '?') !== false) {
$AffiliateURL .= urlencode(urlencode($iTunesURL.'&partnerId=30'));
} else {
$AffiliateURL .= urlencode(urlencode($iTunesURL.'?partnerId=30'));
}
break;
case 2003:
$AffiliateURL = "http://clk.tradedoubler.com/click?p=".appStore_setting('tdprogramID')."&a=".appStore_setting('tdwebsiteID')."&url=";
if (strpos($iTunesURL, '?') !== false) {
$AffiliateURL .= urlencode(urlencode($iTunesURL.'&partnerId=2003'));
} else {
$AffiliateURL .= urlencode(urlencode($iTunesURL.'?partnerId=2003'));
}
break;
case 1002:
$AffiliateURL = appStore_setting('dgmwrapper');
if (strpos($iTunesURL, '?') !== false) {
$AffiliateURL .= urlencode(urlencode($iTunesURL.'&partnerId=1002'));
} else {
$AffiliateURL .= urlencode(urlencode($iTunesURL.'?partnerId=1002'));
}
break;
default:
$AffiliateURL = "http://click.linksynergy.com/fs-bin/stat?id=uiuOb3Yu7Hg&offerid=146261&type=3&subid=0&tmpid=1826&RD_PARM1=";
if (strpos($iTunesURL, '?') !== false) {
$AffiliateURL .= urlencode(urlencode($iTunesURL.'&partnerId=30'));
} else {
$AffiliateURL .= urlencode(urlencode($iTunesURL.'?partnerId=30'));
}
}
return $AffiliateURL;
}
function appStore_get_data( $id ) {
//Check to see if we have a cached version of the JSON.
$appStore_options = get_option('appStore_appData_' . $id, '');
if($appStore_options == '' || $appStore_options['next_check'] < time()) {
$appStore_options_data = appStore_page_get_json($id);
$appStore_options = array('next_check' => time() + appStore_setting('cache_time_select_box'), 'app_data' => $appStore_options_data);
update_option('appStore_appData_' . $id, $appStore_options);
if(appStore_setting('cache_images_locally') == '1') appStore_save_images_locally($appStore_options['app_data']);
}
return $appStore_options['app_data'];
}
function appStore_getIDs_from_feed($atomurl) {
$last = $atomurl[strlen($atomurl)-1];
if($last != "/") $AddSlash = "/";
$urlEnd = 'xml';
$RSS_Feed = $atomurl.$AddSlash.$urlEnd;
$feed = new SimplePie();
$feed->set_feed_url($RSS_Feed);
$feed->init();
$feed->handle_content_type();
foreach ($feed->get_items() as $item):
$appID = $item->get_id();
$pattern = '(id[0-9]+)';
preg_match($pattern, $appID, $matches, PREG_OFFSET_CAPTURE, 3);
$appIDs[] = substr($matches[0][0], 2);
endforeach;
return $appIDs;
}
function appStore_page_add_stylesheet() {
wp_register_style('appStore-styles', plugins_url( 'appStore-styles.css', __FILE__ ));
wp_enqueue_style( 'appStore-styles');
}
function appStore_page_get_json($id) {
if(function_exists('file_get_contents') && ini_get('allow_url_fopen'))
$json_data = appStore_page_get_json_via_fopen($id);
else if(function_exists('curl_exec'))
$json_data = appStore_page_get_json_via_curl($id);
else
wp_die('You must have either file_get_contents() or curl_exec() enabled on your web server. Please contact your hosting provider.
');
if($json_data->resultCount == 0) {
wp_die('Apple returned no app with that app ID.
Please check your app ID.
');
}
return $json_data->results[0];
}
function appStore_page_get_json_via_fopen($id) {
return json_decode(appStore_fopenme(ASA_APPSTORE_URL . $id));
}
function appStore_page_get_json_via_curl($id) {
return json_decode(appStore_curlme(ASA_APPSTORE_URL . $id));
}
function appStore_fopenme ($url) {
return @file_get_contents($url);
}
function appStore_curlme ($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$output = curl_exec($ch);
curl_close($ch);
return $output;
}
function appStore_fopen_or_curl($url) {
if(function_exists('file_get_contents') && ini_get('allow_url_fopen'))
return appStore_fopenme($url);
else if(function_exists('curl_exec'))
return appStore_curlme($url);
else
wp_die('You must have either file_get_contents() or curl_exec() enabled on your web server. Please contact your hosting provider.
');
}
function appStore_save_images_locally($app) {
$appID = $app->trackId;
if($app->wrapperType == "audiobook") $appID = $app->collectionId;
if($app->wrapperType == "collection") $appID = $app->collectionId;
$upload_dir = wp_upload_dir();
if(!is_writeable($upload_dir['basedir'])) {
//Uploads dir isn't writeable. bummer.
appStore_set_setting('cache_images_locally', '0');
return;
} else {
//Loop through screenshots and the app icons and cache everything
if(!is_dir($upload_dir['basedir'] . '/appstoreassistant_cache/' . $appID)) {
if(!mkdir($upload_dir['basedir'] . '/appstoreassistant_cache/' . $appID, 0755, true)) {
appStore_set_setting('cache_images_locally', '0');
return;
}
}
$urls_to_cache = array();
if($app->artworkUrl30) $urls_to_cache[] = $app->artworkUrl30;
if($app->artworkUrl60) $urls_to_cache[] = $app->artworkUrl60;
if($app->artworkUrl100) $urls_to_cache[] = $app->artworkUrl100;
if($app->artworkUrl512) $urls_to_cache[] = $app->artworkUrl512;
if($app->screenshotUrls) {
foreach($app->screenshotUrls as $ssurl) {
$ssurl2 = str_replace(".png", ".320x480-75.jpg", $ssurl);
$urls_to_cache[] = $ssurl;
$urls_to_cache[] = $ssurl2;
}
}
if($app->ipadScreenshotUrls) {
foreach($app->ipadScreenshotUrls as $ssurl) {
$ssurl2 = str_replace(".png", ".320x480-75.jpg", $ssurl);
$urls_to_cache[] = $ssurl;
$urls_to_cache[] = $ssurl2;
}
}
foreach($urls_to_cache as $url) {
$content = appStore_fopen_or_curl($url);
if($fp = fopen($upload_dir['basedir'] . '/appstoreassistant_cache/' . $appID . '/' . basename($url), "w+")) {
fwrite($fp, $content);
fclose($fp);
} else {
//Couldnt write the file. Permissions must be wrong.
appStore_set_setting('cache_images_locally', '0');
return;
}
}
}
}
$appStore_settings = array();
function appStore_setting($name) {
global $appStore_settings;
$appStore_settings = get_option('appStore_options');
if(!$appStore_settings) {
appStore_add_defaults();
$appStore_settings = get_option('appStore_options');
}
return $appStore_settings[$name];
}
function appStore_set_setting($name, $value) {
global $appStore_settings;
$appStore_settings = get_option('appStore_options');
if(!$appStore_settings) {
appStore_add_defaults();
$appStore_settings = get_option('appStore_options');
}
$appStore_settings[$name] = $value;
}
function shortenDescription($string){
$string = substr($string,0,appStore_setting('max_description'));
$string = substr($string,0,strrpos($string," "));
return $string;
}
function filesizeinfo($fs) {
$bytes = array('KB', 'KB', 'MB', 'GB', 'TB');
// values are always displayed in at least 1 kilobyte:
if ($fs <= 999) $fs = 1;
for ($i = 0; $fs > 999; $i++) {
$fs /= 1024;
}
return ceil($fs)." ".$bytes[$i];
}
// ------------ END OF FUNCTIONS-----------------
?>