Example #1
0
 public function deleteByAppID($appID, $clearCache = true)
 {
     $avm = AppVersionModel::getInstance();
     if (!$avm->deleteByAppID($appID, $clearCache)) {
         return false;
     }
     $query = new Query('DELETE');
     $query->from('applications');
     $query->where('id = ?', $appID);
     $stmt = $query->prepare();
     if (($success = $stmt->execute()) && $clearCache) {
         $this->cm->clearGroup('appdetails');
         $this->cm->clearGroup('applist');
     }
     return $success;
 }
Example #2
0
    try {
        $appinfo = new AppStoreScraper((int) $_GET['id']);
    } catch (InvalidITunesIDException $e) {
        returnInvalid();
    } catch (AppNotFoundException $e) {
        returnInvalid();
    } catch (TimeoutException $e) {
        returnInvalid();
    }
    $smallicon = $appinfo->getITunesID() . 'icon-57x57.png';
    $bigicon = $appinfo->getITunesID() . 'icon-100x100.png';
    $am = ApplicationModel::getInstance();
    $icons = $am->saveIconsLocally($appinfo->getIconUrlPNG(), $smallicon, $bigicon);
    $bigicon = $icons ? Config::getVal('urls', 'icon_url') . '/' . $appinfo->getITunesID() . 'icon-100x100.png' : 'false';
    $smallicon = $icons ? Config::getVal('urls', 'icon_url') . '/' . $appinfo->getITunesID() . 'icon-57x57.png' : 'false';
    $version = trim(preg_replace('/(?i)\\(iP\\w+ OS 3\\S+ Tested\\)/', '', $appinfo->getVersion()));
    $avm = AppVersionModel::getInstance();
    $allvers = $avm->getByITunesIDCached($appinfo->getITunesID());
    $verlist = array();
    $i = 0;
    foreach ($allvers as $ver) {
        $verlist["{$i}"] = $ver->version;
        $i++;
    }
    if (!in_array($version, $verlist)) {
        $verlist["{$i}"] = $version;
    }
    die(json_encode(array('valid' => 1, 'appname' => $appinfo->getName(), 'appcompany' => $appinfo->getCompany(), 'category' => $appinfo->getCategory(), 'appversion' => $version, 'bigicon' => $bigicon, 'smallicon' => $smallicon, 'allversions' => $verlist)));
} else {
    returnInvalid();
}
Example #3
0
 public function submit($itunes_id, $version, $cracker, $links, $userBean, $submittedFrom = 'Web', $ignoreUserPermissions = false)
 {
     if (!$userBean->getPermission('submit_links_existing_apps') && !$ignoreUserPermissions) {
         return self::SUBMIT_FAIL_USER_CANNOT_SUBMIT_LINKS;
     }
     if (($version = trim($version)) == '') {
         $version = 'unknown';
     }
     try {
         $appinfo = new AppStoreScraper((int) $itunes_id);
     } catch (AppNotFoundException $e) {
         return self::SUBMIT_FAIL_APP_NOT_FOUND;
     } catch (TimeoutException $e) {
         return self::SUBMIT_FAIL_ITUNES_TIMEOUT;
     }
     $am = ApplicationModel::getInstance();
     $app = $am->getDetailsByITunesID($itunes_id, false);
     if (!$app) {
         if (!$userBean->getPermission('submit_new_itunes_apps') && !$ignoreUserPermissions) {
             return self::SUBMIT_FAIL_USER_CANNOT_SUBMIT_NEW_APP;
         }
         if (!$userBean->getPermission('submit_free_itunes_apps') && strtolower($appinfo->getPrice()) == 'free' && !$ignoreUserPermissions) {
             return self::SUBMIT_FAIL_USER_CANNOT_SUBMIT_FREE_APP;
         }
         if (!$am->createFromITunesScraper($appinfo)) {
             return self::SUBMIT_FAIL_UNKNOWN_ERROR;
         }
         if (!($app = $am->getDetailsByITunesID($itunes_id, false))) {
             return self::SUBMIT_FAIL_UNKNOWN_ERROR;
         }
         $newapp = true;
     } else {
         $newapp = false;
     }
     $avm = AppVersionModel::getInstance();
     $verBean = $avm->getByAppID($app->id, $version);
     if (!$verBean) {
         $testVersion = trim(preg_replace('/(?i)\\(iP\\w+ OS 3\\S+ Tested\\)/', '', $appinfo->getVersion()));
         if (!$userBean->getPermission('submit_unknown_app_versions') && !$ignoreUserPermissions && $testVersion != $version) {
             return self::SUBMIT_FAIL_USER_CANNOT_SUBMIT_NEW_VERSION;
         }
         if (!$avm->create($app->id, $version, $appinfo->getVersionInfo())) {
             return self::SUBMIT_FAIL_UNKNOWN_ERROR;
         }
         if (!($verBean = $avm->getByAppID($app->id, $version))) {
             return self::SUBMIT_FAIL_UNKNOWN_ERROR;
         }
         $newver = true;
     } else {
         $newver = false;
     }
     $verBean = $verBean[0];
     $vers = $avm->getByAppID($app->id, false, 1);
     $updated = false;
     if (is_null($app->latest_version) || $app->latest_version == '' || $verBean->id != $vers[0]->id || $app->latest_version != $verBean->version) {
         $app->latest_version = $version;
         $app->latest_version_first_cracker = $cracker;
         $app->set('latest_version_added', 'NOW()', true);
         try {
             $app->update();
         } catch (QueryFailedException $e) {
             return self::SUBMIT_FAIL_UNKNOWN_ERROR;
         }
         $updated = true;
     }
     $submitLinks = array();
     $ulinks = $this->getUniqueURLs($links);
     foreach ($ulinks as $ulink) {
         if (substr(strtolower($ulink), 0, 7) != 'http://') {
             $ulink = "http://" . $ulink;
         }
         $parsed_url = @parse_url($ulink);
         if ($parsed_url) {
             $domain = strtolower($parsed_url['host']);
             while (preg_match('/\\..+\\./', $domain)) {
                 $domain = substr($domain, strpos($domain, '.') + 1);
             }
             $legaldomains = Config::getVal('domains', 'allowed', false);
             if (!preg_match('/[\\<\\>]/', $ulink) && (!$legaldomains || in_array($domain, $legaldomains))) {
                 $submitLinks[] = $ulink;
             }
         }
     }
     if (count($submitLinks) == 0) {
         return self::SUBMIT_FAIL_NO_VALID_LINKS;
     }
     $bean = new AppLinkBean();
     $bean->app_id = $app->id;
     $bean->version_id = $verBean->id;
     $bean->filetype = 2;
     $bean->cracker = $cracker;
     $bean->set('date_added', 'NOW()', true);
     $bean->set('last_updated', 'NOW()', true);
     $bean->submitter_id = $userBean->id;
     $bean->submitter_ip = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '';
     $bean->submitted_from = $submittedFrom;
     foreach ($submitLinks as $link) {
         $bean->url = $link;
         try {
             $bean->insert();
         } catch (QueryFailedException $e) {
             return self::SUBMIT_FAIL_UNKNOWN_ERROR;
         }
     }
     $this->cm->clear('alm_getByAppID_' . $app->id . '_1');
     $this->cm->clear('alm_getByAppID_' . $app->id . '_0');
     $this->cm->clear('alm_getByAppID_' . $app->id);
     if (!$newapp && ($updated || Config::getVal('general', 'update_app_every_submit') == '1')) {
         $am->updateFromITunesScraper($app->id, $appinfo);
     }
     if (count($submitLinks) != count($links)) {
         return self::SUBMIT_PARTIAL_OK;
     }
     return self::SUBMIT_OK;
 }