public function toHTML() { $returnHtml = $this->text; if (isset($this->params->vars)) { foreach ($this->params->vars as $i => $var) { $html = "<s>invalid</s>"; switch ($var->type) { case "user": $user = UserManager::getFromBLID($var->blid); $html = "<a href=\"/user/view.php?blid=" . $var->blid . "\">" . $user->getUserName() . "</a>"; break; case "addon": $addon = AddonManager::getFromID($var->id); if ($addon) { $html = "<a href=\"/addons/addon.php?id=" . $var->id . "\">" . $addon->getName() . "</a>"; } else { $html = "<a href=\"/addons/addon.php?id=" . $var->id . "\">{error}</a>"; } break; } $returnHtml = str_replace('$' . ($i + 1), $html, $returnHtml); } } return $returnHtml; }
public function testGetTag2() { $response = TagManager::getAddonsFromTagID(1); $this->assertNotEquals(false, $response); $this->assertEquals(1, count($response)); $obj = AddonManager::getFromID($response[0]); $this->assertEquals('crapy adon', $obj->getName()); }
public static function removeDependencyByAddonID($targetID, $requiredID) { $target = AddonManager::getFromID($targetID); if ($target === false) { return false; } $required = AddonManager::getFromID($requiredID); if ($required === false) { return false; } DependencyManager::removeDependencyByAddon($target, $required); }
public static function addStatsToAddon($aid) { $database = new DatabaseManager(); StatManager::verifyTable($database); $addon = AddonManager::getFromID($aid); if (!$addon->getApproved()) { return; //only create for approved add-ons } if (!$database->query("INSERT INTO `addon_stats` (`aid`) VALUES ('" . $database->sanitize($aid) . "')")) { throw new Exception("Database Error: " . $database->error()); } }
<?php $_PAGETITLE = "Blockland Glass | Inspect Update"; include realpath(dirname(__DIR__) . "/../private/header.php"); include realpath(dirname(__DIR__) . "/../private/navigationbar.php"); require_once realpath(dirname(__DIR__) . "/../private/class/AddonManager.php"); require_once realpath(dirname(__DIR__) . "/../private/class/BoardManager.php"); require_once realpath(dirname(__DIR__) . "/../private/class/UserManager.php"); require_once realpath(dirname(__DIR__) . "/../private/class/UserLog.php"); $user = UserManager::getCurrent(); $review = false; if (is_object($user)) { $review = $user->inGroup("Reviewer"); } $addon = AddonManager::getFromID($_REQUEST['id']); $manager = UserManager::getFromBLID($addon->getManagerBLID()); ?> <script type="text/javascript"> var addonId = <?php echo $addon->getId(); ?> ; var isReviewer = <?php echo $review ? 1 : 0; ?> ; var root = null; function openPopup(title, body) { $("#popupTitle").html(title); $("#popupBody").html(body);
?> </div> <table class="boardtable"> <tbody> <tr class="boardheader"> <td>Name</td> <td>Author(s)</td> <td>Rating</td> <td>Downloads</td> </tr> <?php //$addons = $boardObject->getAddons(($page-1)*10, 10); $addonIDs = AddonManager::getFromBoardID($boardObject->getID(), ($page - 1) * 10, 10); //$addons = BoardManager::getAddonsFromBoardID($boardObject->getID(), ($page-1)*10, 10); foreach ($addonIDs as $aid) { $addon = AddonManager::getFromID($aid); ?> <tr> <td style="width: 33%"><a href="addon.php?id=<?php echo $addon->getID(); ?> "><?php echo $addon->getName(); ?> </a></td> <td style="font-size: 11pt"><?php $authors = $addon->getAuthorInfo(); //This system should probably be rethought if (sizeof($authors) == 1) { //$uo = new UserHandler(); //$uo->initFromId($authors[0]->id);
<?php /*$_GET['aid'] = $_REQUEST['id']; $comments = include(dirname(__DIR__) . "/../../../private/json/getPageCommentsWithUsers.php"); echo json_encode($comments, JSON_PRETTY_PRINT);*/ require_once dirname(__DIR__) . "/../../../private/class/AddonManager.php"; require_once dirname(__DIR__) . "/../../../private/class/CommentManager.php"; $aid = $_REQUEST['id']; if (!isset($_REQUEST['page'])) { $page = 0; } else { $page = $_REQUEST['page']; } $addonObject = AddonManager::getFromID($aid); $ret = array(); $start = $page * 10; $comments = CommentManager::getCommentIDsFromAddon($addonObject->getId(), $start, 10); foreach ($comments as $comid) { $comment = CommentManager::getFromId($comid); $commento = new stdClass(); $commento->id = $comment->getId(); $commento->author = UserLog::getCurrentUsername($comment->getBLID()); $commento->authorblid = $comment->getBlid(); $text = str_replace("\r\n", "<br>", $comment->getComment()); $text = str_replace("\n", "<br>", $text); $commento->text = $text; $commento->date = date("F j, g:i a", strtotime($comment->getTimeStamp())); $ret[] = $commento; } echo json_encode($ret, JSON_PRETTY_PRINT);
public static function getNewAddons($count = 10) { $count += 0; $newestAddonIDs = apc_fetch('newestAddonIDs_' . $count, $success); if ($success === false) { $database = new DatabaseManager(); AddonManager::verifyTable($database); $resource = $database->query("SELECT * FROM `addon_addons` ORDER BY `uploadDate` DESC LIMIT " . $database->sanitize($count)); if (!$resource) { throw new Exception("Database error: " . $database->error()); } $newestAddonIDs = []; while ($row = $resource->fetch_object()) { $newestAddonIDs[] = AddonManager::getFromID($row->id, $row)->getID(); } $resource->close(); apc_store('newestAddonIDs_' . $count, $newestAddonIDs, AddonManager::$searchCacheTime); } return $newestAddonIDs; }
public static function getNewAddons($count = 10) { $count += 0; $database = new DatabaseManager(); AddonManager::verifyTable($database); $resource = $database->query("SELECT * FROM `addon_addons` WHERE `deleted`=0 AND `approved`=1 ORDER BY `uploadDate` DESC LIMIT " . $database->sanitize($count)); if (!$resource) { throw new Exception("Database error: " . $database->error()); } $newestAddonIDs = []; while ($row = $resource->fetch_object()) { $newestAddonIDs[] = AddonManager::getFromID($row->id, $row)->getID(); } $resource->close(); return $newestAddonIDs; }
<?php //collects together all the information needed by /addons/addon.php if (!isset($_GET['id'])) { return false; } require_once realpath(dirname(__DIR__) . "/class/AddonManager.php"); require_once realpath(dirname(__DIR__) . "/class/UserManager.php"); require_once realpath(dirname(__DIR__) . "/class/TagManager.php"); require_once realpath(dirname(__DIR__) . "/class/DependencyManager.php"); $addon = AddonManager::getFromID($_GET['id'] + 0); if ($addon === false) { return false; } $user = UserManager::getFromBLID($addon->blid); $tagIDs = $addon->getTags(); $dependencyIDs = $addon->getDependencies(); $tags = []; $dependencies = []; foreach ($tagIDS as $tid) { $tags[] = TagManager::getFromID($tid); } foreach ($dependencyIDs as $did) { $dependencies[] = DependencyManager::getFromID($did); } //to do: replace "downloads" with "stats" $response = ["addon" => $addon, "user" => $user, "tags" => $tags, "dependencies" => $dependencies, "downloads" => $addon->getTotalDownloads()]; return $response;
public static function removeTagIDFromAddonID($tid, $aid) { $addon = AddonManager::getFromID($aid); if ($addon === false) { return false; } $tag = TagManager::getFromID($tid); if ($tag === false) { return false; } return TagManager::removeTagFromAddon($tag, $addon); }
public static function downloadAddonID($aid) { $addon = AddonManager::getFromID($aid); if (!$addon) { return false; } return downloadAddon($addon); }
public static function injectVersionInfo($aid, $branchId, $file) { $addonObject = AddonManager::getFromID($aid); $branchName[1] = "stable"; $branchName[2] = "beta"; if ($branchId == 1) { $v = $addonObject->getVersion(); } else { $v = $addonObject->getBetaVersion(); } $versionData = new stdClass(); $versionData->version = $v; $versionData->channel = $branchName[$branchId]; $mainRepo = new stdClass(); $mainRepo->url = "http://api.blocklandglass.com/api/2/repository.php"; $mainRepo->format = "JSON"; $mainRepo->id = $aid; $backupRepo = new stdClass(); $backupRepo->url = "http://" . AWSFileManager::getBucket() . "/repository.txt"; $backupRepo->format = "JSON"; $backupRepo->id = $aid; $versionData->repositories = [$mainRepo, $backupRepo]; $workingDir = dirname(dirname(__DIR__)) . "/addons/upload/files/"; $tempFile = $workingDir . "temp/" . $addonObject->getId() . "version.json"; if (!is_dir($workingDir . "temp")) { mkdir($workingDir . "temp", 0777, true); } $res = file_put_contents($tempFile, json_encode($versionData)); if ($res === false) { return false; } $zip = new ZipArchive(); $res = $zip->open($file); if ($res === TRUE) { $zip->addFile($tempFile, 'version.json'); $zip->close(); unlink($tempFile); } else { return false; } }
<?php session_start(); require_once realpath(dirname(__DIR__) . "/../private/class/AddonManager.php"); var_dump($_POST); $addon = AddonManager::getFromID($_POST['aid']); $userObject = UserManager::getCurrent(); $reviewer = false; $owner = false; if ($userObject->getBlid() == $addon->getManagerBLID()) { $owner = true; } if ((!$userObject || !$userObject->inGroup("Reviewer")) && !$owner) { header('Location: /addons'); return; } else { $reviewer = true; } if ($reviewer) { if (isset($_POST['action']) && is_object($userObject)) { if ($_POST['action'] == "Approve") { // approve $update = AddonManager::getUpdates($addon)[0]; try { AddonManager::approveUpdate($update); } catch (Exception $e) { } header('Location: updates.php'); } else { if ($_POST['action'] == "Reject") { // reject
public static function injectVersionInfo($aid, $branchId, $file) { $addonObject = AddonManager::getFromID($aid); /* { "version": "1.0.0", "channel": "stable", "repositories": [ { "url": "http://blocklandglass.com/api/support_updater/repo.php", "format": "JSON", "id": "11" }, { "url": "http://cdn.blocklandglass.com/repo.txt", "format": "JSON", "id": "11" } ] } */ $branchName[1] = "stable"; $branchName[2] = "unstable"; $branchName[3] = "development"; $versionInfo = $addonObject->getVersionInfo(); $bn = $branchName[$branchId]; $branch = $versionInfo->{$bn}; $versionData = new stdClass(); $versionData->version = $branch->version; $versionData->channel = $branchName[$branchId]; $mainRepo = new stdClass(); $mainRepo->url = "http://api.blocklandglass.com/api/2/repository.php"; $mainRepo->format = "JSON"; $mainRepo->id = $aid; $backupRepo = new stdClass(); $backupRepo->url = "http://cdn.blocklandglass.com/repository.txt"; $backupRepo->format = "JSON"; $backupRepo->id = $aid; $versionData->repositories = [$mainRepo, $backupRepo]; $workingDir = dirname(dirname(__DIR__)) . "/addons/upload/files/"; $tempFile = $workingDir . "temp/" . $addonObject->getId() . "version.json"; if (!is_dir($workingDir . "temp")) { mkdir($workingDir . "temp", 0777, true); } $res = file_put_contents($tempFile, json_encode($versionData)); if ($res === false) { return false; } $zip = new ZipArchive(); $res = $zip->open($file); if ($res === TRUE) { $zip->addFile($tempFile, 'version.json'); $zip->close(); unlink($tempFile); } else { return false; } }
$debug = $_REQUEST['debug']; } if ($type == "addon_update" || $type == "addon_download") { $id = $_REQUEST['id']; if (isset($_REQUEST['branch'])) { $branch = $_REQUEST['branch']; } else { $branch = 1; } $head = 'Location: http://cdn.blocklandglass.com/addons/' . $id . '_' . $branch; if ($debug) { echo $head; } else { header($head); } $ao = AddonManager::getFromID($id); /* //ideal code? need to review how stats work and are kept //(object, type[0=web, 1=ingame, 2=update], increment) AddonManager::incrementDailyDownloads($ao, 1 ,1); AddonManager::incrementWeeklyDownloads($ao, 1, 1); AddonManager::incrementTotalDownloads($ao, 1, 1); */ } else { if ($type == "build") { $id = $_REQUEST['id']; $head = 'Location: http://cdn.blocklandglass.com/build/' . $id; if ($debug) { echo $head; } else { header($head);