// list simfiles
public function serveBannerAction($hash)
{
+ if($hash == 'default')
+ {
+ $file = '../files/banners/default.png';
+ $this->_response->setHeader('Content-Type', 'image/png')
+ ->setHeader('Content-Length', filesize($file))
+ ->setBody(file_get_contents($file))
+ ->sendResponse();
+ }
+
$file = $this->_fileRepository->findByHash($hash);
if(!$file)
return;
}
-
+
$match = reset(glob('../files/' . $file->getPath() . '/' . $file->getHash() . '.*'));
+
$this->_response->setHeader('Content-Type', $file->getMimetype())
->setHeader('Content-Length', $file->getSize())
->setBody(file_get_contents($match))
public function listAction()\r
{\r
/* @var $simfile Domain\Entities\StepMania\ISimfile */\r
- $simfiles = $this->_simfileRepository->findRange(1, 10);\r
- $returnArray = array();\r
+ $simfiles = $this->_simfileRepository->findAll();\r
+ $packs = $this->_packRepository->findAll();\r
+ $simfileArray = array();\r
+ $packArray = array();\r
\r
foreach($simfiles as $simfile)\r
{\r
- $singleSteps = array();\r
- $doubleSteps = array();\r
- \r
- foreach($simfile->getSteps() as $steps)\r
- { \r
- $stepDetails = array(\r
- 'artist' => $steps->getArtist()->getTag(),\r
- 'difficulty' => $steps->getDifficulty()->getITGName(),\r
- 'rating' => $steps->getRating()\r
- );\r
- \r
- if($steps->getMode()->getPrettyName() == 'Single')\r
- {\r
- $singleSteps[] = $stepDetails;\r
- } else {\r
- $doubleSteps[] = $stepDetails;\r
- }\r
+ $simfileArray[] = $this->simfileToArray($simfile);\r
+ }\r
+ \r
+ foreach($packs as $pack)\r
+ {\r
+ $packSimfiles = array();\r
+ foreach($pack->getSimfiles() as $simfile)\r
+ {\r
+ $packSimfiles[] = $this->simfileToArray($simfile);\r
}\r
\r
- $returnArray[] = array(\r
- 'title' => $simfile->getTitle(),\r
- 'artist' => $simfile->getArtist()->getName(),\r
- 'steps' => array(\r
- 'single' => $singleSteps,\r
- 'double' => $doubleSteps\r
- ),\r
- 'bgChanges' => $simfile->hasBgChanges() ? 'Yes' : 'No',\r
- 'fgChanges' => $simfile->hasFgChanges() ? 'Yes' : 'No',\r
- 'bpmChanges' => $simfile->hasBPMChanges() ? 'Yes' : 'No',\r
- 'banner' => $simfile->getBanner() ? 'files/banner/' . $simfile->getBanner()->getHash() : 'files/banner/default'\r
+ $packArray[] = array(\r
+ 'title'=> $pack->getTitle(),\r
+ 'contributors' => $pack->getContributors(),\r
+ 'simfiles' => $packSimfiles,\r
+ 'banner' => $pack->getBanner() ? 'files/banner/' . $pack->getBanner()->getHash() : 'files/banner/default'\r
);\r
}\r
\r
+ $returnArray = array('simfiles' => $simfileArray, 'packs' => $packArray);\r
+ \r
$this->_response->setHeader('Content-Type', 'application/json')\r
->setBody(json_encode($returnArray))\r
->sendResponse();\r
}\r
}\r
}\r
+ \r
+ private function simfileToArray(ISimfile $simfile)\r
+ {\r
+ $singleSteps = array();\r
+ $doubleSteps = array();\r
+\r
+ foreach($simfile->getSteps() as $steps)\r
+ { \r
+ $stepDetails = array(\r
+ 'artist' => $steps->getArtist()->getTag(),\r
+ 'difficulty' => $steps->getDifficulty()->getITGName(),\r
+ 'rating' => $steps->getRating()\r
+ );\r
+\r
+ if($steps->getMode()->getPrettyName() == 'Single')\r
+ {\r
+ $singleSteps[] = $stepDetails;\r
+ } else {\r
+ $doubleSteps[] = $stepDetails;\r
+ }\r
+ }\r
+\r
+ return array(\r
+ 'title' => $simfile->getTitle(),\r
+ 'artist' => $simfile->getArtist()->getName(),\r
+ 'steps' => array(\r
+ 'single' => $singleSteps,\r
+ 'double' => $doubleSteps\r
+ ),\r
+ 'bgChanges' => $simfile->hasBgChanges() ? 'Yes' : 'No',\r
+ 'fgChanges' => $simfile->hasFgChanges() ? 'Yes' : 'No',\r
+ 'bpmChanges' => $simfile->hasBPMChanges() ? 'Yes' : 'No',\r
+ 'banner' => $simfile->getBanner() ? 'files/banner/' . $simfile->getBanner()->getHash() : 'files/banner/default'\r
+ );\r
+ }\r
}\r
public function findById($id) {
$queryBuilder = $this->_queryBuilderFactory->createInstance();
- $queryBuilder->where('id', '=', "$id");
+ $queryBuilder->where('id', '=', $id);
+
+ $results = $this->_dataMapper->map(
+ 'File',
+ $queryBuilder
+ );
+
+ return reset($results);
+ }
+
+ public function findAll()
+ {
+ $queryBuilder = $this->_queryBuilderFactory->createInstance();
+ $queryBuilder->where('id', '>', 0);
return $this->_dataMapper->map(
'File',
interface IRepository\r
{\r
public function findById($id);\r
+ public function findAll();\r
public function findRange($id, $limit);\r
}
\ No newline at end of file
public function limit($start, $end);
public function where($column, $operator, $value);
public function join($type, $tableA, $columnA, $tableB, $columnB);
+ public function null($columnName);
public function buildQuery();
}
\ No newline at end of file
return $this;
}
+ public function null($columnName)
+ {
+ return $this->where($columnName, 'is', null);
+ }
+
private function applyJoinClauses()
{
foreach($this->_joinClauses as $joinClause)
case 'string':
$this->_queryString .= sprintf("%s %s '%s'", $columnName, $columnValue['operator'], $columnValue['value']) . ' AND ';
break;
+ case 'NULL':
+ $this->_queryString .= sprintf("%s is null", $columnName) . ' AND ';
+ break;
}
}
return reset($result);\r
}\r
\r
+ public function findAll()\r
+ {\r
+ $queryBuilder = $this->_queryBuilderFactory->createInstance();\r
+ $queryBuilder->where('id', '>', 0);\r
+ \r
+ $result = $this->_dataMapper->map('Pack', $queryBuilder);\r
+ return $result;\r
+ }\r
+ \r
public function findRange($id, $limit)\r
{\r
$queryBuilder = $this->_queryBuilderFactory->createInstance();\r
\r
public function findById($id) {\r
$queryBuilder = $this->_queryBuilderFactory->createInstance();\r
- $queryBuilder->where('id', '=', $id);\r
+ $queryBuilder->where('id', '=', $id)->null('pack_id');\r
\r
$result = $this->_dataMapper->map('Simfile', $queryBuilder);\r
return reset($result);\r
}\r
\r
+ public function findAll()\r
+ {\r
+ $queryBuilder = $this->_queryBuilderFactory->createInstance();\r
+ $queryBuilder->where('id', '>', 0)->null('pack_id');\r
+ $result = $this->_dataMapper->map('Simfile', $queryBuilder);\r
+ return $result;\r
+ }\r
+ \r
public function findRange($id, $limit)\r
{\r
$queryBuilder = $this->_queryBuilderFactory->createInstance();\r
- $queryBuilder->where('id', '>=', $id)->limit($limit);\r
+ $queryBuilder->where('id', '>=', $id)->null('pack_id')->limit($limit);\r
\r
return $this->_dataMapper->map('Simfile', $queryBuilder);\r
}\r
$constraints->applyTo($queryBuilder);\r
}\r
\r
+ $queryBuilder->null('pack_id');\r
+ \r
return $this->_dataMapper->map('Simfile', $queryBuilder);\r
}\r
\r
public function findById($id) {
$queryBuilder = $this->_queryBuilderFactory->createInstance();
- $queryBuilder->where('id', '=', "$id");
+ $queryBuilder->where('id', '=', $id);
+
+ $results = $this->_dataMapper->map(
+ 'User',
+ $queryBuilder
+ );
+
+ return reset($results);
+ }
+
+ public function findAll()
+ {
+ $queryBuilder = $this->_queryBuilderFactory->createInstance();
+ $queryBuilder->where('id', '>', 0);
return $this->_dataMapper->map(
'User',
public function getSimfiles()
{
- return $this->_file;
+ return $this->_simfiles;
}
public function getTitle()
$artists = array();
foreach($simfile->getSteps() as $steps)
{
- /* @var $steps \Domain\VOs\StepMania\IStepChart */
- if(!in_array($steps->getArtist(), $artists)) $artists[] = $steps->getArtist ();
+ /* @var $steps \Domain\VOs\StepMania\StepChart */
+ if($steps->getArtist()->getTag() && !in_array($steps->getArtist()->getTag(), $artists)) $artists[] = $steps->getArtist()->getTag();
}
return $artists;
\r
namespace Domain\VOs\StepMania;\r
\r
-use Domain\VOs\StepMania\DanceMode;\r
-use Domain\VOs\StepMania\Difficulty;\r
-use Domain\VOs\StepMania\StepArtist;\r
+use Domain\VOs\StepMania\IDanceMode;\r
+use Domain\VOs\StepMania\IDifficulty;\r
+use Domain\VOs\StepMania\IStepArtist;\r
\r
class StepChart implements IStepChart\r
{ \r
protected $artist;\r
\r
function __construct(\r
- DanceMode $mode,\r
- Difficulty $difficulty,\r
- StepArtist $artist = null,\r
+ IDanceMode $mode,\r
+ IDifficulty $difficulty,\r
+ IStepArtist $artist = null,\r
$rating\r
) {\r
$this->mode = $mode;\r
'controller' => 'Simfile',\r
'action' => 'upload'\r
],\r
- \r
- //XXX: Test, delete later\r
- '/simfiles/pack' => [\r
- 'methods' => ['GET'],\r
- 'controller' => 'PackTest',\r
- ],\r
- \r
+ \r
'/simfiles/argTest/:testarg' => [\r
'methods' => ['GET'],\r
'controller' => 'Simfile',\r