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 getAddonsFromBoardID($id, $offset, $limit) { if (isset($limit)) { return AddonManager::getFromBoardID($id, $offset, $limit); } else { return AddonManager::getFromBoardID($id); } }
function getAddons($offset, $limit) { if (isset($limit)) { return AddonManager::getFromBoardId($this->id, false, $limit, $offset); } else { return AddonManager::getFromBoardId($this->id); } }
function collectHourStat($store = false) { $stats = new stdClass(); $stats->time = gmdate("Y-m-d H:00:00", time()); $stats->duration = "hour"; $database = new DatabaseManager(); //Addons! $addons = new stdClass(); $addonArray = AddonManager::getAll(); $addons->count = sizeof($addonArray); $addons->cumulative_downloads = array(); $addons->usage = array(); $addons->usage_total = array(); foreach ($addonArray as $addon) { $downloadData = new stdClass(); // TODO we need to go back. I dont want total downloads, I want individual //$downloadData->web = //$downloadData->ingame = //$downloadData->update = $addons->cumulative_downloads[$addon->getId()] = $downloadData; $res = $database->query("SELECT `version` FROM `stats_usage` WHERE `aid`='" . $addon->getId() . "' AND `reported` > now() - INTERVAL 1 HOUR"); $ret = $res->fetch_object(); $usage = array(); $total = 0; while ($obj = $res->fetch_object()) { $total++; if (!isset($usage[$obj->version])) { $usage[$obj->version] = 1; } else { $usage[$obj->version]++; } } $addons->usage[$addon->getId()] = $usage; $addons->usage_total[$addon->getId()] = $total; } $stats->addons = $addons; //Builds $builds = new stdClass(); $buildArray = BuildManager::getAll(); $builds->count = sizeof($buildArray); $builds->cumulative_downloads = array(); foreach ($buildArray as $build) { // TODO this isn't done either... //$builds->cumulative_downloads[$build->getId()] = $build->getDownloads(); } $stats->builds = $builds; //Master Server $stats->master = new stdClass(); $master = CronStatManager::getMasterServerStats(); $stats->master->users = $master[0]; $stats->master->servers = $master[1]; if ($store) { CronStatManager::verifyTable($database); $database->query("INSERT INTO `cron_statistics` (`time` , `duration` , `data`) VALUES ('" . $stats->time . "', 'hour', '" . $database->sanitize(json_encode($stats)) . "')"); } return $stats; }
public static function verifyTable($database) { require_once realpath(dirname(__FILE__) . '/UserManager.php'); require_once realpath(dirname(__FILE__) . '/AddonManager.php'); UserManager::verifyTable($database); AddonManager::verifyTable($database); if (!$database->query("CREATE TABLE IF NOT EXISTS `addon_ratings` (\n\t\t\t`id` INT AUTO_INCREMENT,\n\t\t\t`blid` INT NOT NULL,\n\t\t\t`aid` INT NOT NULL,\n\t\t\t`rating` TINYINT NOT NULL,\n\t\t\tFOREIGN KEY (`blid`)\n\t\t\t\tREFERENCES users(`blid`)\n\t\t\t\tON UPDATE CASCADE\n\t\t\t\tON DELETE CASCADE,\n\t\t\tFOREIGN KEY (`aid`)\n\t\t\t\tREFERENCES addon_addons(`id`)\n\t\t\t\tON UPDATE CASCADE\n\t\t\t\tON DELETE CASCADE,\n\t\t\tPRIMARY KEY (`id`))")) { throw new Exception("Unable to create table addon_ratings: " . $database->error()); } }
public static function loadBasicDummyData() { TestManager::clearDatabase(); $database = new DatabaseManager(); UserManager::verifyTable($database); AddonManager::verifyTable($database); BoardManager::verifyTable($database); TagManager::verifyTable($database); GroupManager::verifyTable($database); DependencyManager::verifyTable($database); CommentManager::verifyTable($database); RatingManager::verifyTable($database); BuildManager::verifyTable($database); StatManager::verifyTable($database); ScreenshotManager::verifyTable($database); if (!$database->query("INSERT INTO `addon_boards` (name, video, description) VALUES ('General Content', 'general_content_bg', 'Bricks, Events, Sounds, Prints, Environments, and much more!')")) { throw new Exception("Database error: " . $database->error()); } if (!$database->query("INSERT INTO `addon_boards` (name, video, description) VALUES ('Minigames', 'minigames_bg', 'Weapons, Vehicles, Gamemodes, and all your gaming needs!')")) { throw new Exception("Database error: " . $database->error()); } if (!$database->query("INSERT INTO `addon_boards` (name, video, description) VALUES ('Client Mods', 'client_mods_bg', 'Mods that run on your client.')")) { throw new Exception("Database error: " . $database->error()); } if (!$database->query("INSERT INTO `addon_boards` (name, video, description) VALUES ('Bargain Bin', 'bargain_bin_bg', 'A home for \\'special\\' content.')")) { throw new Exception("Database error: " . $database->error()); } if (!$database->query("INSERT INTO `users` (username, blid, password, email, salt, verified) VALUES ('testuser', '4833', '1d8436e97ef95a7a6151f47b909167c77cfe1985ee5500efa8d46cfe825abc59', '*****@*****.**', '273eb4', '1')")) { throw new Exception("Database error: " . $database->error()); } //the default json types likely need to be reworked if (!$database->query("INSERT INTO `addon_addons` (board, blid, name, filename, description, approved, versionInfo, authorInfo, reviewInfo) VALUES ('1', '4833', 'crapy adon', 'sciprt_hax.zip', 'bad addone pls delete', '1', '{}', '[]', '[]')")) { throw new Exception("Database error: " . $database->error()); } StatManager::addStatsToAddon(1); if (!$database->query("INSERT INTO `addon_tags` (name, base_color, icon) VALUES ('dum tag', 'ff6600', 'brokenimage')")) { throw new Exception("Database error: " . $database->error()); } if (!$database->query("INSERT INTO `addon_tagmap` (aid, tid) VALUES ('1', '1')")) { throw new Exception("Database error: " . $database->error()); } if (!$database->query("INSERT INTO `group_groups` (leader, name, description, color, icon) VALUES ('4833', 'legion of dumies', 'a group for people who just want to be in a group', '00ff00', 'brokenimage')")) { throw new Exception("Database error: " . $database->error()); } if (!$database->query("INSERT INTO `group_usermap` (gid, blid, administrator) VALUES ('1', '4833', '1')")) { throw new Exception("Database error: " . $database->error()); } if (!$database->query("INSERT INTO `addon_comments` (blid, aid, comment) VALUES ('4833', '1', 'glorious addon comrade')")) { throw new Exception("Database error: " . $database->error()); } if (!$database->query("INSERT INTO `addon_ratings` (blid, aid, rating) VALUES ('4833', '1', '1')")) { throw new Exception("Database error: " . $database->error()); } }
function collectHourStat($store = false) { $stats = new stdClass(); $stats->time = gmdate("Y-m-d H:00:00", time()); $stats->duration = "hour"; //Addons! $addons = new stdClass(); $addonArray = AddonManager::getAll(); $addons->count = sizeof($addonArray); $addons->cumulative_downloads = array(); foreach ($addonArray as $addon) { $downloadData = new stdClass(); // TODO we need to go back. I dont want total downloads, I want individual //$downloadData->web = //$downloadData->ingame = //$downloadData->update = $addons->cumulative_downloads[$addon->getId()] = $downloadData; } $stats->addons = $addons; //Builds $builds = new stdClass(); $buildArray = BuildManager::getAll(); $builds->count = sizeof($buildArray); $builds->cumulative_downloads = array(); foreach ($buildArray as $build) { // TODO this isn't done either... //$builds->cumulative_downloads[$build->getId()] = $build->getDownloads(); } $stats->builds = $builds; //Master Server $stats->master = new stdClass(); $master = CronStatManager::getMasterServerStats(); $stats->master->users = $master[0]; $stats->master->servers = $master[1]; if ($store) { $database = new DatabaseManager(); CronStatManager::verifyTable($database); $database->query("INSERT INTO `cron_statistics` (`time` , `duration` , `data`) VALUES ('" . $stats->time . "', 'hour', '" . $database->sanitize(json_encode($stats)) . "')"); } return $stats; }
<?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);
<?php require_once dirname(__DIR__) . "/../private/class/AddonManager.php"; header('Content-Type: text/tml'); $addon = AddonManager::getFromId($_REQUEST['id']); if ($addon === false) { die("Error: add-on doesn't exist"); } $updates = AddonManager::getUpdates($addon); foreach ($updates as $up) { echo "<version:" . $up->getVersion() . ">\n"; echo $up->getChangeLog(); echo "\n</version>\n"; }
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; }
require_once dirname(dirname(__DIR__)) . '/private/class/SemVer.php'; header('Content-Type: text/json'); $db = new DatabaseManager(); if (!isset($_GET['mods'])) { $ret = new stdClass(); $ret->status = "error"; $ret->error = "mods field is blank"; die(json_encode($ret, JSON_PRETTY_PRINT)); } $addonIds = explode("-", $db->sanitize($_GET['mods'])); $repo = new stdClass(); $repo->name = "Blockland Glass Generated Repo"; $ao = 'add-ons'; $repo->{$ao} = array(); foreach ($addonIds as $id) { $obj = AddonManager::getFromId($id); $webUrl = "api.blocklandglass.com"; $cdnUrl = "cdn.blocklandglass.com"; $addon = new stdClass(); $addon->name = $obj->getFilename(); $addon->description = str_replace("\r\n", "<br>", $obj->getDescription()); $channelId[1] = "stable"; $channelId[2] = "unstable"; $channelId[3] = "development"; foreach ($channelId as $cid => $name) { $channel = new stdClass(); $chanDat = $obj->getBranchInfo($cid); if ($chanDat !== false) { $channel->name = $channelId[$cid]; $channel->version = $chanDat->version; if ($chanDat->restart !== null && $chanDat->restart !== false) {
} catch (Exception $e) { continue; } } echo json_encode($ret, JSON_PRETTY_PRINT); return; } if ($request == "comments") { $ret = array(); if (!isset($_GET['page'])) { $page = 0; } else { $page = $_GET['page']; } $start = $page * 10; $end = $start + 10; $addonObject = AddonManager::getFromId($_GET['aid']); $comments = $addonObject->getCommentsRange($start, $end); foreach ($comments as $comment) { $commento = new stdClass(); $commento->author = $comment->getAuthor()->getName(); $commento->authorblid = $comment->getAuthor()->getBlid(); $text = str_replace("\r\n", "<br>", $comment->getText()); $text = str_replace("\n", "<br>", $text); $commento->text = $text; $commento->date = date("F j, g:i a", strtotime($comment->getTime())); $ret[] = $commento; } echo json_encode($ret, JSON_PRETTY_PRINT); return; }
</div> <hr /> <div style="text-align:center"><img src="/img/rtb_logo.gif"></div> <hr /> <?php if ($addonData->glass_id == 0 || $addonData->approved != 1) { ?> <div style="text-align: center"> <?php $id = "RTB"; $class = "red"; echo '<a href="http://' . AWSFileManager::getBucket() . '/rtb/' . $addonData->filename . '" class="btn dlbtn ' . $class . '"><b>' . ucfirst($id) . '</b><span style="font-size:9pt"><br />Imported Archive</span></a>'; ?> </div> <?php } else { $addon = AddonManager::getFromId($addonData->glass_id); ?> <p style="text-align:center">This add-on has been imported to <a href="/addons/addon.php?id=<?php echo $addon->getId(); ?> "><?php echo $addon->getName(); ?> </a></p> <?php } ?> </div> <?php include realpath(dirname(__DIR__) . "/../private/footer.php");
public static function submitRating($aid, $blid, $rating) { if ($rating < 1) { $rating = 1; } if ($rating > 5) { $rating = 5; } $rating = ceil($rating); $db = new DatabaseManager(); AddonManager::verifyTable($db); $res = $db->query($sq = "SELECT COUNT(*) FROM `addon_ratings` WHERE `blid`='" . $db->sanitize($blid) . "' AND `aid`='" . $db->sanitize($aid) . "'"); $ret = $res->fetch_row(); if (!isset($ret[0]) || $ret[0] == 0) { $res = $db->query($sq = "INSERT INTO `addon_ratings` (`blid`, `aid`, `rating`) VALUES (\n '" . $db->sanitize($blid) . "',\n '" . $db->sanitize($aid) . "',\n '" . $db->sanitize($rating) . "')"); } else { $db->update("addon_ratings", ["blid" => $blid, "aid" => $aid], ["rating" => $rating]); } //recalculate total $res = $db->query("SELECT * FROM `addon_ratings` WHERE `aid`='" . $db->sanitize($aid) . "'"); $ratings = array(); while ($obj = $res->fetch_object()) { $ratings[] = $obj->rating; } $avg = array_sum($ratings) / sizeof($ratings); $db->update("addon_addons", ["id" => $aid], ["rating" => $avg]); echo $db->error(); return $avg; }
public static function verifyTable($database) { if ($database->debug()) { require_once realpath(dirname(__FILE__) . '/UserManager.php'); require_once realpath(dirname(__FILE__) . '/AddonManager.php'); UserManager::verifyTable($database); //we need users table to exist before we can create this one AddonManager::verifyTable($database); if (!$database->query("CREATE TABLE IF NOT EXISTS `build_builds` (\n\t\t\t\t`id` INT NOT NULL AUTO_INCREMENT,\n\t\t\t\t`blid` INT NOT NULL,\n\t\t\t\t`name` VARCHAR(60) NOT NULL,\n\t\t\t\t`filename` VARCHAR(60) NOT NULL,\n\t\t\t\t`bricks` INT NOT NULL DEFAULT 0,\n\t\t\t\t`description` TEXT NOT NULL,\n\t\t\t\tFOREIGN KEY (`blid`)\n\t\t\t\t\tREFERENCES users(`blid`)\n\t\t\t\t\tON UPDATE CASCADE\n\t\t\t\t\tON DELETE CASCADE,\n\t\t\t\tKEY (`name`),\n\t\t\t\tPRIMARY KEY (`id`))")) { throw new Exception("Error creating builds table: " . $database->error()); } //to do: probably should move this to another class, maybe make dependencyManager more general if (!$database->query("CREATE TABLE IF NOT EXISTS `build_dependency` (\n\t\t\t\t`id` INT NOT NULL AUTO_INCREMENT,\n\t\t\t\t`bid` INT NOT NULL,\n\t\t\t\t`aid` INT NOT NULL,\n\t\t\t\tFOREIGN KEY (`bid`)\n\t\t\t\t\tREFERENCES build_builds(`id`)\n\t\t\t\t\tON UPDATE CASCADE\n\t\t\t\t\tON DELETE CASCADE,\n\t\t\t\tFOREIGN KEY (`aid`)\n\t\t\t\t\tREFERENCES addon_addons(`id`)\n\t\t\t\t\tON UPDATE CASCADE\n\t\t\t\t\tON DELETE CASCADE,\n\t\t\t\tPRIMARY KEY (`id`))")) { throw new Exception("unable to create build dependency table: " . $database->error()); } } }
<?php session_start(); require_once realpath(dirname(__DIR__) . "/../private/class/AddonManager.php"); var_dump($_POST); $userObject = UserManager::getCurrent(); if (isset($_POST['action']) && is_object($userObject)) { if ($_POST['action'] == "Approve") { // approve AddonManager::approveAddon($_POST['aid'], $_POST['board'], $userObject->getBLID()); header('Location: /addons/addon.php?id=' . $_POST['aid']); } else { if ($_POST['action'] == "Reject") { // reject } } }
<?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);
<?php require_once dirname(__DIR__) . "/../../../private/class/AddonManager.php"; $by = $_REQUEST['by']; $type = $_REQUEST['type']; $query = $_REQUEST['query']; if ($type == "addon") { if ($by == "name" || $by == "blid") { $res = AddonManager::searchAddons(array($by => $query)); } else { $ret = new stdClass(); $ret->status = "error"; $ret->error = "invalid search type"; die(json_encode($ret, JSON_PRETTY_PRINT)); } $ret = new stdClass(); $ret->results = array(); //$ret->count = ? foreach ($res as $result) { $r = new stdClass(); $addon = AddonManager::getFromId($result); $r->type = "addon"; $r->title = $addon->getName(); //$r->author $r->description = $addon->getDescription(); $ret->results[] = $r; } } else { //coming soon? } echo json_encode($ret, JSON_PRETTY_PRINT);
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; } }
//to do: aws stuff instead of this move_uploaded_file($tempPath, $tempLocation); chmod($tempLocation, 0777); $type = $_POST['type']; //these should probably return an array with something like // 'ok' => true/false // 'message' => descriptive message if ($type == 1) { $valid = AddonFileHandler::validateAddon($tempLocation); } else { if ($type == 2) { $valid = AddonFileHandler::validatePrint($tempLocation); } else { if ($type == 3) { $valid = AddonFileHandler::validateColorset($tempLocation); } else { $valid = false; } } } if (!$valid) { $response = ["message" => "Your add-on is missing required files"]; return $response; } else { //repeated but slightly different path from above? $tempLocation = realpath(dirname(__DIR__) . "/../addons/upload/files/" . $filename); $response = AddonManager::uploadNewAddon($user, $uploadAddonName, $type, $tempLocation, $uploadFileName, $uploadDescription); return $response; } } return $response;
public static function verifyTable($database) { if ($database->debug()) { UserManager::verifyTable($database); AddonManager::verifyTable($database); TagManager::verifyTable($database); BuildManager::verifyTable($database); GroupManager::verifyTable($database); if (!$database->query("CREATE TABLE IF NOT EXISTS `addon_stats` (\n\t\t\t\t`aid` INT NOT NULL,\n\t\t\t\t`rating` FLOAT,\n\t\t\t\t`totalDownloads` INT NOT NULL DEFAULT 0,\n\t\t\t\t`iterationDownloads` INT NOT NULL DEFAULT 0,\n\t\t\t\t`webDownloads` INT NOT NULL DEFAULT 0,\n\t\t\t\t`ingameDownloads` INT NOT NULL DEFAULT 0,\n\t\t\t\t`updateDownloads` INT NOT NULL DEFAULT 0,\n\t\t\t\tKEY (`totalDownloads`),\n\t\t\t\tKEY (`iterationDownloads`),\n\t\t\t\tFOREIGN KEY (`aid`)\n\t\t\t\t\tREFERENCES addon_addons(`id`)\n\t\t\t\t\tON UPDATE CASCADE\n\t\t\t\t\tON DELETE CASCADE)")) { throw new Exception("Failed to create addon stats table: " . $database->error()); } if (!$database->query("CREATE TABLE IF NOT EXISTS `build_stats` (\n\t\t\t\t`bid` INT NOT NULL,\n\t\t\t\t`rating` FLOAT,\n\t\t\t\t`totalDownloads` INT NOT NULL DEFAULT 0,\n\t\t\t\t`iterationDownloads` INT NOT NULL DEFAULT 0,\n\t\t\t\tKEY (`totalDownloads`),\n\t\t\t\tKEY (`iterationDownloads`),\n\t\t\t\tFOREIGN KEY (`bid`)\n\t\t\t\t\tREFERENCES build_builds(`id`)\n\t\t\t\t\tON UPDATE CASCADE\n\t\t\t\t\tON DELETE CASCADE)")) { throw new Exception("Failed to create build stats table: " . $database->error()); } if (!$database->query("CREATE TABLE IF NOT EXISTS `tag_stats` (\n\t\t\t\t`tid` INT NOT NULL,\n\t\t\t\t`totalDownloads` INT NOT NULL DEFAULT 0,\n\t\t\t\t`iterationDownloads` INT NOT NULL DEFAULT 0,\n\t\t\t\tKEY (`totalDownloads`),\n\t\t\t\tKEY (`iterationDownloads`),\n\t\t\t\tFOREIGN KEY (`tid`)\n\t\t\t\t\tREFERENCES addon_tags(`id`)\n\t\t\t\t\tON UPDATE CASCADE\n\t\t\t\t\tON DELETE CASCADE)")) { throw new Exception("Failed to create tag stats table: " . $database->error()); } //includes a lot of foreign keys, not sure if it is a good idea to include them all if (!$database->query("CREATE TABLE IF NOT EXISTS `statistics` (\n\t\t\t\t`id` INT NOT NULL AUTO_INCREMENT,\n\t\t\t\t`date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,\n\t\t\t\t`users` INT NOT NULL DEFAULT 0,\n\t\t\t\t`addons` INT NOT NULL DEFAULT 0,\n\t\t\t\t`downloads` INT NOT NULL DEFAULT 0,\n\t\t\t\t`groups` INT NOT NULL DEFAULT 0,\n\t\t\t\t`comments` INT NOT NULL DEFAULT 0,\n\t\t\t\t`builds` INT NOT NULL DEFAULT 0,\n\t\t\t\t`tags` INT NOT NULL DEFAULT 0,\n\t\t\t\t`addon0` INT NOT NULL,\n\t\t\t\t`addon1` INT NOT NULL,\n\t\t\t\t`addon2` INT NOT NULL,\n\t\t\t\t`addon3` INT NOT NULL,\n\t\t\t\t`addon4` INT NOT NULL,\n\t\t\t\t`addon5` INT NOT NULL,\n\t\t\t\t`addon6` INT NOT NULL,\n\t\t\t\t`addon7` INT NOT NULL,\n\t\t\t\t`addon8` INT NOT NULL,\n\t\t\t\t`addon9` INT NOT NULL,\n\t\t\t\t`addonDownloads0` INT NOT NULL,\n\t\t\t\t`addonDownloads1` INT NOT NULL,\n\t\t\t\t`addonDownloads2` INT NOT NULL,\n\t\t\t\t`addonDownloads3` INT NOT NULL,\n\t\t\t\t`addonDownloads4` INT NOT NULL,\n\t\t\t\t`addonDownloads5` INT NOT NULL,\n\t\t\t\t`addonDownloads6` INT NOT NULL,\n\t\t\t\t`addonDownloads7` INT NOT NULL,\n\t\t\t\t`addonDownloads8` INT NOT NULL,\n\t\t\t\t`addonDownloads9` INT NOT NULL,\n\t\t\t\t`tag0` INT NOT NULL,\n\t\t\t\t`tag1` INT NOT NULL,\n\t\t\t\t`tag2` INT NOT NULL,\n\t\t\t\t`tag3` INT NOT NULL,\n\t\t\t\t`tag4` INT NOT NULL,\n\t\t\t\t`tagDownloads0` INT NOT NULL,\n\t\t\t\t`tagDownloads1` INT NOT NULL,\n\t\t\t\t`tagDownloads2` INT NOT NULL,\n\t\t\t\t`tagDownloads3` INT NOT NULL,\n\t\t\t\t`tagDownloads4` INT NOT NULL,\n\t\t\t\t`build0` INT NOT NULL,\n\t\t\t\t`build1` INT NOT NULL,\n\t\t\t\t`build2` INT NOT NULL,\n\t\t\t\t`buildDownloads0` INT NOT NULL,\n\t\t\t\t`buildDownloads1` INT NOT NULL,\n\t\t\t\t`buildDownloads2` INT NOT NULL,\n\t\t\t\tKEY (`date`),\n\t\t\t\tPRIMARY KEY (`id`))")) { throw new Exception("Failed to create stat history table: " . $database->error()); } } }
?> </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 session_start(); require_once realpath(dirname(__DIR__) . "/../private/class/AddonManager.php"); var_dump($_POST); $userObject = UserManager::getCurrent(); if (!$userObject || !$userObject->inGroup("Reviewer")) { header('Location: /addons'); return; } if (isset($_POST['action']) && is_object($userObject)) { if ($_POST['action'] == "Approve") { // approve AddonManager::approveAddon($_POST['aid'], $_POST['board'], $userObject->getBLID()); header('Location: list.php'); } else { if ($_POST['action'] == "Reject") { AddonManager::rejectAddon($_POST['aid'], $_POST['reason'], $userObject->getBLID()); header('Location: list.php'); } } }
<?php require_once realpath(dirname(__DIR__) . "/private/class/AddonManager.php"); $uo = UserManager::getCurrent(); if (isset($_REQUEST['aid']) && isset($_REQUEST['rating'])) { $aid = $_REQUEST['aid']; $rating = $_REQUEST['rating']; $blid = $uo->getBLID(); $newAvg = AddonManager::submitRating($aid, $blid, $rating); echo $newAvg; }
public static function verifyTable($database) { if ($database->debug()) { AddonManager::verifyTable($database); //to do: change addon_tags to something more general so build and stuff can be tagged if (!$database->query("CREATE TABLE IF NOT EXISTS `addon_tags` (\n\t\t\t\t`id` INT NOT NULL AUTO_INCREMENT,\n\t\t\t\t`name` varchar(16) NOT NULL,\n\t\t\t\t`base_color` varchar(6) NOT NULL,\n\t\t\t\t`icon` text NOT NULL,\n\t\t\t\t`important` TINYINT NOT NULL DEFAULT 0,\n\t\t\t\tKEY (`name`),\n\t\t\t\tPRIMARY KEY (`id`))")) { throw new Exception("Error creating tag table: " . $database->error()); } //this table might not need a primary key if (!$database->query("CREATE TABLE IF NOT EXISTS `addon_tagmap` (\n\t\t\t\t`id` INT NOT NULL AUTO_INCREMENT,\n\t\t\t\t`aid` INT NOT NULL,\n\t\t\t\t`tid` INT NOT NULL,\n\t\t\t\tFOREIGN KEY (`aid`)\n\t\t\t\t\tREFERENCES addon_addons(id)\n\t\t\t\t\tON UPDATE CASCADE\n\t\t\t\t\tON DELETE CASCADE,\n\t\t\t\tFOREIGN KEY (`tid`)\n\t\t\t\t\tREFERENCES addon_tags(id)\n\t\t\t\t\tON UPDATE CASCADE\n\t\t\t\t\tON DELETE CASCADE,\n\t\t\t\tPRIMARY KEY (`id`))")) { throw new Exception("Error creating tagmap table: " . $database->error()); } } }
public static function verifyTable($database) { UserManager::verifyTable($database); AddonManager::verifyTable($database); if (!$database->query("CREATE TABLE IF NOT EXISTS `addon_stats` (\n\t\t\t`aid` INT NOT NULL,\n\t\t\t`rating` FLOAT,\n\n\t\t\t`totalDownloads` INT NOT NULL DEFAULT 0,\n\n\t\t\t`iterationDownloads` INT NOT NULL DEFAULT 0,\n\n\t\t\t`webDownloads` INT NOT NULL DEFAULT 0,\n\t\t\t`ingameDownloads` INT NOT NULL DEFAULT 0,\n\t\t\t`updateDownloads` INT NOT NULL DEFAULT 0,\n\n\t\t\tKEY (`totalDownloads`),\n\t\t\tFOREIGN KEY (`aid`)\n\t\t\t\tREFERENCES addon_addons(`id`)\n\t\t\t\tON UPDATE CASCADE\n\t\t\t\tON DELETE CASCADE)")) { throw new Exception("Failed to create addon stats table: " . $database->error()); } if (!$database->query("CREATE TABLE IF NOT EXISTS `addon_stats_hist` (\n\t\t\t`id` INT NOT NULL AUTO_INCREMENT,\n\t\t\t`date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,\n\t\t\t`aid` INT NOT NULL DEFAULT 0,\n\n\t\t\t`webDownloads` INT NOT NULL DEFAULT 0,\n\t\t\t`ingameDownloads` INT NOT NULL DEFAULT 0,\n\t\t\t`updateDownloads` INT NOT NULL DEFAULT 0,\n\t\t\tFOREIGN KEY (`aid`)\n\t\t\t\tREFERENCES addon_addons(`id`)\n\t\t\t\tON UPDATE CASCADE\n\t\t\t\tON DELETE CASCADE,\n\t\t\tPRIMARY KEY (`id`))")) { throw new Exception("Failed to create addon stat history table: " . $database->error()); } }
<?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;
function getCount() { require_once dirname(__FILE__) . "/AddonManager.php"; return AddonManager::getCountFromBoard($this->id); }
updates: [], date: 138247923 },{ type: "summary", popular: [], statistics: [], date: 138247923 },{ type: "message", text: "asdf", date: 138247923 } ] */ $recent = AddonManager::getRecentAddons(); $recentUpdates = AddonManager::getRecentUpdates(); $dlg = new stdClass(); $dlg->type = "recent"; $ar = array(); foreach ($recent as $ao) { if ($ao->getBoard() == 10) { // bargain bin continue; } $board[1] = "Client Mods"; $board[2] = "Server Mods"; $board[3] = "Bricks"; $board[4] = "Cosmetics"; $board[5] = "Gamemodes"; $board[6] = "Tools"; $board[7] = "Weapons";