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; }
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(); }
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; }