function LoadFromDB() { $s = new BM_Query("prods"); $s->AddOrder("prods.addedDate desc"); $s->SetLimit(POUET_CACHE_MAX); $this->data = $s->perform(); PouetCollectPlatforms($this->data); }
function LoadFromDB() { $s = new BM_Query("prods"); $s->AddOrder("prods.rank"); $s->AddWhere("prods.rank!=0"); $s->SetLimit(POUET_CACHE_MAX); $this->data = $s->perform(); PouetCollectPlatforms($this->data); }
function LoadFromDB() { $s = new BM_Query("prods"); $s->AddOrder("(prods.views/((sysdate()-prods.addedDate)/100000)+prods.views)*prods.voteavg*prods.voteup DESC"); $s->AddWhere("prods.addedDate > DATE_SUB(NOW(), INTERVAL 30 DAY)"); $s->SetLimit(POUET_CACHE_MAX); $this->data = $s->perform(); PouetCollectPlatforms($this->data); }
function LoadFromDB() { $this->prod = PouetProd::spawn($_GET["which"]); if (!$this->prod) return; $a = array(&$this->prod); PouetCollectPlatforms( $a ); $this->title = "mirrors :: ".$this->prod->name; }
function LoadFromDB() { $s = new SQLSelect(); $perPage = get_setting("prodlistprods"); $this->page = (int)max( 1, (int)$_GET["page"] ); $s = new BM_Query("prods"); if (is_array($_GET["type"])) { $cond = array(); foreach($_GET["type"] as $type) $cond[] = sprintf_esc("FIND_IN_SET('%s',prods.type)",$type); $s->AddWhere(implode(" OR ",$cond)); } if (is_array($_GET["platform"])) { global $PLATFORMS; $platforms = array(); foreach($_GET["platform"] as $platform) foreach($PLATFORMS as $k=>$v) if ($v["name"] == $platform) $platforms[] = $k; if ($platforms) { $s->AddJoin("LEFT","prods_platforms as pp","pp.prod = prods.id"); $s->AddWhere(sprintf_esc("pp.platform in (%s)",implode(",",$platforms))); } } $dir = "DESC"; if ($_GET["reverse"]) $dir = "ASC"; switch($_GET["order"]) { case "type": $s->AddOrder("prods.type ".$dir); break; case "name": $s->AddOrder("prods.name ".$dir); break; case "group": $s->AddOrder("prods.group1 ".$dir); $s->AddOrder("prods.group2 ".$dir); $s->AddOrder("prods.group3 ".$dir); break; case "party": $s->AddOrder("prods_party.name ".$dir); $s->AddOrder("prods.party_year ".$dir); $s->AddOrder("prods.party_place ".$dir); break; case "thumbup": $s->AddOrder("prods.voteup ".$dir); break; case "thumbpig": $s->AddOrder("prods.votepig ".$dir); break; case "thumbdown": $s->AddOrder("prods.votedown ".$dir); break; case "avg": $s->AddOrder("prods.voteavg ".$dir); break; case "views": $s->AddOrder("prods.views ".$dir); break; case "added": $s->AddOrder("prods.addedDate ".$dir); break; } $s->AddOrder("prods.releaseDate ".$dir); $s->AddOrder("prods.addedDate ".$dir); $s->SetLimit( $perPage, (int)(($this->page-1) * $perPage) ); //echo $s->GetQuery(); $this->prods = $s->performWithCalcRows( $this->count ); PouetCollectPlatforms($this->prods); PouetCollectAwards($this->prods); }
function LoadFromDB() { $s = new BM_Query(); $s->AddTable("cdc"); $s->attach(array("cdc"=>"which"),array("prods as prod"=>"id")); $s->AddOrder("cdc.addedDate desc"); $s->SetLimit(1); list($this->data) = $s->perform(); $a = array(&$this->data->prod); PouetCollectPlatforms($a); }
function PouetBoxSubmitProdInfo( $id ) { parent::__construct(); $this->prod = PouetProd::Spawn( $id ); $a = array(&$this->prod); PouetCollectPlatforms( $a ); $this->title = "submit things for this prod: "._html($this->prod->name); }
function LoadFromDB() { $id = SQLLib::SelectRow("SELECT prods.id as id FROM prods ORDER BY RAND() LIMIT 1")->id; $s = new BM_Query("prods"); $s->AddWhere(sprintf_esc("prods.id = %d",$id)); $s->SetLimit(1); $data = $s->perform(); $this->data = reset($data); $a = array(&$this->data); PouetCollectPlatforms($a); }
function LoadFromDB() { $s = new BM_Query("users_cdcs"); $s->attach(array("users_cdcs"=>"cdc"),array("prods as prod"=>"id")); $s->AddGroup("users_cdcs.cdc"); $s->AddField("count(*) as c"); $s->AddOrder("c desc"); $this->cdcs = $s->perform(); $a = array(); foreach($this->cdcs as $v) $a[] = &$v->prod; PouetCollectPlatforms($a); }
function PouetBoxAdminEditProd( $id ) { parent::__construct(); $this->id = (int)$id; $this->prod = PouetProd::Spawn( $this->id ); if (!$this->prod) return; $a = array(&$this->prod); PouetCollectPlatforms( $a ); $this->formifier->canDeleteFiles = true; $this->title = "edit this prod: ".$this->prod->RenderLink(); }
function LoadFromDB() { $s = new BM_Query(); $s->AddTable("(select * from comments order by comments.addedDate desc limit 25) as c"); $s->attach(array("c"=>"which"),array("prods as prod"=>"id")); $s->attach(array("c"=>"who"),array("users as user"=>"id")); $s->AddOrder("c.addedDate desc"); $s->AddField("c.id as commentID"); $s->AddField("c.rating as rating"); $s->SetLimit(POUET_CACHE_MAX); $this->data = $s->perform(); $a = array(); foreach($this->data as $p) $a[] = &$p->prod; PouetCollectPlatforms($a); }
function LoadFromDB() { global $currentUser; $ids = SQLLib::SelectRows(sprintf_esc("select prodID from watchlist where userID = %d",$currentUser->id)); if (!count($ids)) return; $i = array(); foreach($ids as $v) $i[] = $v->prodID; $s = new BM_Query("prods"); $s->AddWhere( sprintf_esc("prods.id in (%s)",implode(",",$i) ) ); $this->prods = $s->perform(); PouetCollectPlatforms($this->prods); }
function LoadFromDB() { $s = new BM_Query("comments"); $s->AddField("comments.rating"); $s->AddField("comments.addedDate"); $s->attach(array("comments"=>"which"),array("prods as prod"=>"id")); $s->attach(array("comments"=>"who"),array("users as user"=>"id")); $s->AddOrder("comments.addedDate DESC"); $s->AddWhere(sprintf_esc("(UNIX_TIMESTAMP()-UNIX_TIMESTAMP(comments.addedDate))<=(3600*%d)",get_setting("commentshours"))); $this->comments = $s->perform(); $a = array(); foreach($this->comments as $v) $a[] = &$v->prod; PouetCollectPlatforms($a); }
function LoadFromDB() { $s = new SQLSelect(); $this->group = PouetGroup::Spawn($this->id); $this->addeduser = PouetUser::Spawn($this->group->addedUser); // not to boast or anything, but this is f*****g beautiful. $sub = new SQLSelect(); $sub->AddField("max(comments.addedDate) as maxDate"); $sub->AddField("comments.which"); $sub->AddTable("comments"); $sub->AddJoin("left","prods","prods.id = comments.which"); //$sub->AddOrder("comments.addedDate desc"); $sub->AddGroup("comments.which"); $sub->AddWhere(sprintf_esc("(prods.group1 = %d) or (prods.group2 = %d) or (prods.group3 = %d)",$this->id,$this->id,$this->id)); $s = new BM_Query("prods"); $s->AddField("cmts.addedDate as lastcomment"); $s->AddField("cmts.rating as lastcommentrating"); $s->AddJoin("left","(select comments.addedDate,comments.who,comments.which,comments.rating from (".$sub->GetQuery().") as dummy left join comments on dummy.maxDate = comments.addedDate and dummy.which = comments.which) as cmts","cmts.which=prods.id"); $s->attach(array("cmts"=>"who"),array("users as user"=>"id")); $s->AddWhere(sprintf_esc("(prods.group1 = %d) or (prods.group2 = %d) or (prods.group3 = %d)",$this->id,$this->id,$this->id)); $r = !!$_GET["reverse"]; switch($_GET["order"]) { case "type": $s->AddOrder("prods.type ".($r?"DESC":"ASC")); break; case "party": $s->AddOrder("prods_party.name ".($r?"DESC":"ASC")); $s->AddOrder("prods.party_year ".($r?"DESC":"ASC")); $s->AddOrder("prods.party_place ".($r?"DESC":"ASC")); break; case "release": $s->AddOrder("prods.releaseDate ".($r?"ASC":"DESC")); break; case "thumbup": $s->AddOrder("prods.voteup ".($r?"ASC":"DESC")); break; case "thumbpig": $s->AddOrder("prods.votepig ".($r?"ASC":"DESC")); break; case "thumbdown": $s->AddOrder("prods.votedown ".($r?"ASC":"DESC")); break; case "avg": $s->AddOrder("prods.voteavg ".($r?"ASC":"DESC")); break; case "views": $s->AddOrder("prods.views ".($r?"ASC":"DESC")); break; case "latestcomment": $s->AddOrder("lastcomment ".($r?"ASC":"DESC")); break; default: $s->AddOrder("prods.name ".($r?"DESC":"ASC")); break; } $this->prods = $s->perform(); PouetCollectPlatforms($this->prods); PouetCollectAwards($this->prods); $s = new BM_Query("affiliatedboards"); $s->attach(array("affiliatedboards"=>"board"),array("boards as board"=>"id")); $s->AddWhere(sprintf_esc("affiliatedboards.group=%d",$this->id)); $this->affil = $s->perform(); }
function LoadFromDB() { $this->party = PouetParty::spawn($_GET["which"]); if (!$this->party) return; $this->party->addeduser = PouetUser::spawn( $this->party->addedUser ); if (isset($_GET["when"])) { $this->year = $_GET["when"]; } else { $r = SQLLib::selectRow(sprintf_esc("select party_year from prods where party = %d order by rand() limit 1",$_GET["which"])); $this->year = $r->party_year; } if ($this->year < 100) { $this->year += ($this->year < 50 ? 2000 : 1900); } $this->prods = array(); $s = new BM_Query("prods"); $s->AddWhere( sprintf_esc("(prods.party = %d AND prods.party_year = %d) or (prodotherparty.party = %d AND prodotherparty.party_year = %d)",$this->party->id,$this->year,$this->party->id,$this->year) ); // this is where it gets nasty; luckily we can fake it relatively elegantly: ORM won't notice if we override some of the field selections $s->AddJoin("left","prodotherparty",sprintf_esc("prodotherparty.prod = prods.id and (prodotherparty.party = %d AND prodotherparty.party_year = %d)",$this->party->id,$this->year)); foreach($s->fields as &$v) { if ($v == "prods.party_compo as prods_party_compo") { $v = "COALESCE(prodotherparty.party_compo,prods.party_compo) as prods_party_compo"; } if ($v == "prods.party_place as prods_party_place") { $v = "COALESCE(prodotherparty.party_place,prods.party_place) as prods_party_place"; } } $dir = "DESC"; if ($_GET["reverse"]) $dir = "ASC"; $this->sortByCompo = false; switch($_GET["order"]) { case "type": $s->AddOrder("prods.type ".$dir); break; case "name": $s->AddOrder("prods.name ".$dir); break; case "group": $s->AddOrder("prods.group1 ".$dir); $s->AddOrder("prods.group2 ".$dir); $s->AddOrder("prods.group3 ".$dir); break; case "party": $s->AddOrder("prods_party.name ".$dir); $s->AddOrder("prods.party_year ".$dir); $s->AddOrder("prods.party_place ".$dir); break; case "thumbup": $s->AddOrder("prods.voteup ".$dir); break; case "thumbpig": $s->AddOrder("prods.votepig ".$dir); break; case "thumbdown": $s->AddOrder("prods.votedown ".$dir); break; case "avg": $s->AddOrder("prods.voteavg ".$dir); break; case "views": $s->AddOrder("prods.views ".$dir); break; default: { $s->AddOrder( "COALESCE(prodotherparty.party_compo,prods.party_compo)" ); $s->AddOrder( "COALESCE(prodotherparty.party_place,prods.party_place)" ); $this->sortByCompo = true; // include invitations on top $inv = new BM_Query("prods"); $inv->AddWhere( sprintf_esc("(prods.invitation = %d AND prods.invitationyear = %d)",$this->party->id,$this->year,$this->party->id,$this->year) ); $inv->AddOrder( "prods.addedDate" ); $prods = $inv->perform(); foreach($prods as &$v) { $v->party_compo = 1; // invit unset($v->placings); } $this->prods = array_merge( $this->prods, $prods ); } break; } $prods = $s->perform(); $this->prods = array_merge( $this->prods, $prods ); PouetCollectPlatforms($this->prods); PouetCollectAwards($this->prods); }
function LoadFromDB() { $this->prod = PouetProd::spawn( $this->id ); if(!$this->prod) return; if($this->prod->latestip != $_SERVER["REMOTE_ADDR"] && CheckReferrer($_SERVER["HTTP_REFERER"]) ) { SQLLib::Query(sprintf_esc("UPDATE prods SET views=views+1, latestip='%s' WHERE id=%d",$_SERVER["REMOTE_ADDR"],$this->id)); } $this->linkCheck = SQLLib::SelectRow(sprintf_esc("SELECT * FROM prods_linkcheck where prodID = %d",$this->id)); $a = array(&$this->prod); PouetCollectPlatforms( $a ); if ($this->prod->boardID) $this->board = SQLLib::SelectRow(sprintf_esc("SELECT * FROM boards WHERE id = %d",$this->prod->boardID)); $s = new BM_Query(); $s->AddField("added"); $s->AddTable("screenshots"); $s->SetLimit(1); $s->attach(array("screenshots"=>"user"),array("users as user"=>"id")); $s->AddWhere(sprintf_esc("prod=%d",$this->id)); list($this->screenshot) = $s->perform(); $s = new BM_Query(); $s->AddField("prodotherparty.party_compo"); $s->AddField("prodotherparty.party_place"); $s->AddField("prodotherparty.party_year"); $s->AddTable("prodotherparty"); $s->attach(array("prodotherparty"=>"party"),array("parties as party"=>"id")); $s->AddWhere(sprintf_esc("prod=%d",$this->id)); $rows = $s->perform(); foreach($rows as $row) { $this->prod->placings[] = new PouetPlacing( array("party"=>$row->party,"compo"=>$row->party_compo,"ranking"=>$row->party_place,"year"=>$row->party_year) ); } $s = new BM_Query(); $s->AddTable("affiliatedprods"); $s->AddField("affiliatedprods.type"); $s->attach(array("affiliatedprods"=>"original"),array("prods as prodOriginal"=>"id")); $s->attach(array("affiliatedprods"=>"derivative"),array("prods as prodDerivative"=>"id")); $s->AddWhere(sprintf_esc("affiliatedprods.original=%d or affiliatedprods.derivative=%d",$this->id,$this->id)); $this->relatedProds = $s->perform(); $s = new BM_Query(); $s->AddTable("users_cdcs"); $s->attach(array("users_cdcs"=>"user"),array("users as user"=>"id")); $s->AddWhere(sprintf_esc("cdc = %d",$this->id)); $cdcs = $s->perform(); $this->userCDCs = array(); foreach($cdcs as $v) $this->userCDCs[$v->user->id] = $v; $this->isPouetCDC = SQLLib::selectRow(sprintf_esc("select * from cdc where which = %d",$this->id)); $this->awards = SQLLib::selectRows(sprintf_esc("select * from sceneorgrecommended where prodid = %d order by type, category",$this->id)); $s = new BM_Query("credits"); $s->AddField("credits.role"); $s->AddWhere(sprintf("credits.prodID = %d",$this->id)); $s->Attach(array("credits"=>"userID"),array("users as user"=>"id")); $s->AddOrder("credits.role"); $this->credits = $s->perform(); $this->downloadLinks = array(); /* if ($this->prod->sceneorg) { $o = new stdClass(); $o->type = "scene.org"; $o->id = "sceneorgID"; $o->link = "http://scene.org/file.php?id=".(int)$this->prod->sceneorg; $this->downloadLinks[] = $o; } */ if ($this->prod->csdb) { $o = new stdClass(); $o->type = "csdb"; $o->id = "csdbID"; $o->link = "http://csdb.dk/release/?id=".(int)$this->prod->csdb; $this->downloadLinks[] = $o; } if ($this->prod->zxdemo) { $o = new stdClass(); $o->type = "zxdemo"; $o->id = "zxdemoID"; $o->link = "http://zxdemo.org/item.php?id=".(int)$this->prod->zxdemo; $this->downloadLinks[] = $o; } if ($this->prod->demozoo) { $o = new stdClass(); $o->type = "demozoo"; $o->id = "demozooID"; $o->link = "http://demozoo.org/productions/".(int)$this->prod->demozoo."/"; $this->downloadLinks[] = $o; } $this->downloadLinks = array_merge($this->downloadLinks,SQLLib::selectRows(sprintf_esc("select type, link from downloadlinks where prod = %d order by type",$this->id))); $this->screenshotPath = find_screenshot($this->prod->id); }
<? require_once("../bootstrap.inc.php"); header("Content-type: application/xml; charset=utf-8"); //header("Content-type: text/plain; charset=utf-8"); $xml = new SimpleXMLElement("<"."?xml version='1.0' encoding='UTF-8'?"."><xnfo/>"); $prod = PouetProd::Spawn( $_GET["which"] ); $a = array(&$prod); PouetCollectPlatforms( $a ); if (!$prod) die($xml->AsXML()); $xml->addAttribute("standard","1.1"); $xml->addAttribute("version","1"); $xml->addAttribute("author","*****@*****.**"); $xml->addAttribute("mode","partial"); $xml->addChild("demo"); $xml->demo->addAttribute("pouet_id",_html($prod->id)); $xml->demo->addChild("name",_html($prod->name)); foreach($prod->types as $v) $xml->demo->addChild("category",ucfirst(_html($v)))->addAttribute("type",_html($v)); $s = new BM_Query(); $s->AddField("prodotherparty.party_compo"); $s->AddField("prodotherparty.party_place");
} if ($_GET["platform"]) { $platformID = -1; foreach($PLATFORMS as $k=>$v) if ($v["name"] == $_GET["platform"]) $platformID = $k; if ($platformID != -1) { $s->AddJoin("LEFT","prods_platforms as pp","pp.prod = prods.id"); $s->AddWhere(sprintf_esc("pp.platform = %d",$platformID)); } } $data = $s->perform(); PouetCollectPlatforms($data); $rss = new PouetRSS(); foreach($data as $item) { $rss->AddItem(array( "title" => $item->name . ($item->groups ? " by ".$item->RenderGroupsPlain() : ""), "pouet:title" => $item->name, "pouet:group" => array_map(function($i){ return $i->name; },$item->groups), "pouet:party" => array_map(function($i){ return trim($i->party->name." ".$i->year); },$item->placings), "pouet:type" => explode(",",$item->type), "pouet:platform" => array_map(function($i){ return $i["name"]; },$item->platforms), "link" => POUET_ROOT_URL . "prod.php?which=" . $item->id, "pubDate" => date("r",strtotime($item->addedDate)), "enclosure" => find_screenshot($item->id),
function LoadFromDB() { $s = new BM_query("lists"); $s->AddField("lists.id"); $s->AddField("lists.name"); $s->AddField("lists.desc"); $s->AddField("lists.addedDate"); $s->Attach(array("lists"=>"addedUser"),array("users as addedUser"=>"id")); $s->Attach(array("lists"=>"upkeeper"),array("users as upkeeper"=>"id")); $s->AddWhere(sprintf_esc("lists.id=%d",$this->id)); list($this->list) = $s->perform(); $s = new BM_query("listitems"); $s->Attach(array("listitems"=>"itemid"),array("prods as prod"=>"id")); $s->AddWhere(sprintf_esc("listitems.list=%d",$this->id)); $s->AddWhere("listitems.type='prod'"); $this->prods = $s->perform(); $a = array(); foreach($this->prods as $p) $a[] = &$p->prod; PouetCollectPlatforms($a); $s = new BM_query("listitems"); $s->Attach(array("listitems"=>"itemid"),array("groups as group"=>"id")); $s->AddWhere(sprintf_esc("listitems.list=%d",$this->id)); $s->AddWhere("listitems.type='group'"); $this->groups = $s->perform(); $s = new BM_query("listitems"); $s->Attach(array("listitems"=>"itemid"),array("parties as party"=>"id")); $s->AddWhere(sprintf_esc("listitems.list=%d",$this->id)); $s->AddWhere("listitems.type='party'"); $this->parties = $s->perform(); $s = new BM_query("listitems"); $s->Attach(array("listitems"=>"itemid"),array("users as user"=>"id")); $s->AddWhere(sprintf_esc("listitems.list=%d",$this->id)); $s->AddWhere("listitems.type='user'"); $this->users = $s->perform(); }