'; echo '
'; echo 'App Name:
'; echo '    All iOS'; echo '    Mac'; echo '    Just iPhone/iPod'; echo '    Just iPad'; //echo '   '; //echo ''; echo '
'; echo ''; if (!empty($_POST)) { $checkForDuplicates[] = "000000000"; //Setup array for later use $listOfApps = getSearchResultsFromApple($entity); buildListOfFoundApps($listOfApps,"1",$shortCodeStart); if($_POST['type'] == "iOS") { $biggerListOfApps = getSearchResultsFromApple("iPadSoftware"); buildListOfFoundApps($biggerListOfApps,"2",$shortCodeStart); } if(is_array($masterList)){ echo "

$Searchtype

"; echo '
'; echo ''; echo "
"; } else { echo "

No $Searchtype Results Found!

"; } echo '
 
'; } } function buildListOfFoundApps($listOfApps,$startKey,$shortCodeStart){ GLOBAL $masterList,$checkForDuplicates; $i = $startKey; foreach ($listOfApps as $appData) { $masterList[$i] = ""; if (!array_search($appData->trackId, $checkForDuplicates)) { $TheAppPrice = format_price($appData->price); $Categories = implode(", ", $appData->genres); $masterList[$i] .= "
  • artworkUrl60."\")'>"; $masterList[$i] .= "

    "; $masterList[$i] .= "".$appData->trackName.""; $masterList[$i] .= " (".$appData->version.")
    "; $masterList[$i] .= " by ".$appData->artistName."/".$appData->sellerName."
    "; $masterList[$i] .= " [".$TheAppPrice."] "; $masterList[$i] .= " [".$Categories."] "; if($startKey == "2") $masterList[$i] .= " [iPad Only]"; $masterList[$i] .= "

    "; $masterList[$i] .= ''; $masterList[$i] .= "

    "; $masterList[$i] .= '
  • '; } $checkForDuplicates[] = $appData->trackId; $i = $i + 2; } } function getSearchResultsFromApple($entity){ $url = "http://itunes.apple.com/search?term="; $url .= urlencode($_POST['appname'])."&country=us&entity=$entity"; $contents = file_get_contents($url); $contents = utf8_encode($contents); $foundApps = json_decode($contents); $listOfApps = $foundApps->results; return $listOfApps; } 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 { echo ""; //wp_die('No valid data for app id: ' . $id); } } function appStore_app_link_handler( $atts,$content=null, $code="") { // Get App ID and more_info_text from shortcode extract( shortcode_atts( array( 'id' => '', 'text' => '' ), $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) { $appURL = getAffiliateURL($app->trackViewUrl); if ($text == '') $text = $app->trackName; $appURL = ''.$text.''; return $appURL; } else { echo ""; //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' => '', 'debug' => 'false', 'mode' => 'iOS', 'more_info_text' => 'open in The App Store...' ), $atts ) ); if(empty($atomurl)) { echo 'Missing atomurl in tag. Replace id with atomurl.'; return; } //echo "[$debug]"; //if($debug=="true") echo "[$appID][".print_r($app)."]"; $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) { if(stristr($mode, 'itunes')) { echo iTunesStore_page_output($app,$more_info_text,"external",$code); } else { echo appStore_page_output($app,$more_info_text,"external",$code); } } else { echo ""; //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; } $iTunesPrice = format_price($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; if(appStore_setting('itunesicon_size_adjust_type') == 'pixels') { $newIconSize = appStore_setting('itunesicon_size_max'); if($is_iphone) $newIconSize = appStore_setting('itunesicon_iOS_size_max'); $newImageWidth = $newIconSize; $newImageHeight = $newIconSize; } $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 'Explicit Lyrics
    ';// 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(); $TheAppPrice = format_price($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; if(appStore_setting('appstoreicon_size_adjust_type') == 'pixels') { $newIconSize = appStore_setting('appicon_size_max'); if($is_iphone) $newIconSize = appStore_setting('appicon_iOS_size_max'); $newImageWidth = $newIconSize; $newImageHeight = $newIconSize; } //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 "; } $smallDescription = shortenDescription($app->description); ?>


    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 'gamecenter 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 ''; } displayAppStoreRating($appRating,$app->averageUserRating,$app->userRatingCount); if (appStore_setting('displaygamecenterenabled') == "yes" AND $app->isGameCenterEnabled == 1) { echo 'gamecenter'; } ?>
     
    '; if (appStore_setting('use_shortDesc_on_single') == "yes") { echo nl2br($smallDescription); } else { echo nl2br($app->description); } echo '
    '; echo '
    '; echo 'App Store
    '; // Original image from http://ax.phobos.apple.com.edgesuite.net/images/web/linkmaker/badge_appstore-lrg.gif 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 ' '; echo '
    '; echo '
     
    '; } // Display iPad Screenshots if(count($app->ipadScreenshotUrls) > 0) { echo '
    '; echo '

    iPad Screenshots:

    '; echo ' '; echo '
    '; } echo '
     
    '; echo '
    '; echo ' '.$TheAppPrice.' - View in App Store
    '; echo '
    '; } else { echo '
    '; if (appStore_setting('use_shortDesc_on_multiple') == "yes") { echo nl2br($smallDescription); echo ' - continued…'; $FullDescriptionButtonText = "Show Full Description & Screenshots"; } else { echo nl2br($app->description); $FullDescriptionButtonText = "Show Screenshots"; } if($mode=="internal") { echo '
     
    '; echo '
    '.$FullDescriptionButtonText.'
    '; } else { echo ' - '.$more_info_text.''; } echo '
    '; } echo '
     
    '; if (appStore_setting('displaysupporteddevices') == "yes" AND is_array($app->supportedDevices)) { echo 'Supported Devices: '.implode(", ", $app->supportedDevices)."
    "; } echo ' '; $return = ob_get_contents(); ob_end_clean(); return $return; } function displayAppStoreRating($appRating,$averageRating,$ratingCount) { if(isset($ratingCount) AND appStore_setting('displaystarrating') == "yes") { echo '
    '; echo ' '; echo ' '; echo ' by '.$ratingCount.' users.'; echo '
    '; } } 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) { return null; //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----------------- ?>