Skip to content

Commit

Permalink
AENV-356 - Related articles is not showing correctly issues - added p…
Browse files Browse the repository at this point in the history
…arameter
  • Loading branch information
takeit committed Mar 4, 2015
1 parent 5deae2e commit 7b23a29
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 16 deletions.
32 changes: 18 additions & 14 deletions newscoop/library/Newscoop/Entity/Repository/IssueRepository.php
Expand Up @@ -4,7 +4,6 @@
* @copyright 2011 Sourcefabric o.p.s.
* @license http://www.gnu.org/licenses/gpl.txt
*/

namespace Newscoop\Entity\Repository;

use Doctrine\ORM\EntityRepository;
Expand All @@ -20,11 +19,13 @@ class IssueRepository extends EntityRepository
* specified. Think of parameters: Publication, Languages, published or not,
* etc.
*
* @param array $parameters Array containing filter options
* @param array $parameters Array containing filter options
* @param boolean|int $maxResults Max results to show
* @param boolean $leftJoins Adds left joins to the query to get section and language
*
* @return \Newscoop\Entity\Issue|null
*/
public function getLatestByPublication($publicationId, $maxResults = 1)
public function getLatestByPublication($publicationId, $maxResults = 1, $leftJoins = true)
{
$issuesIds = $this->createQueryBuilder('i')
->select('i.id')
Expand All @@ -40,7 +41,7 @@ public function getLatestByPublication($publicationId, $maxResults = 1)
->getArrayResult();

if (count($issuesIds) == 0) {
return null;
return;
}

$ids = array();
Expand All @@ -49,15 +50,18 @@ public function getLatestByPublication($publicationId, $maxResults = 1)
}

$query = $this->createQueryBuilder('i')
->select('i', 'l', 's')
->andWhere('i.id IN (:ids)')
->leftJoin('i.language', 'l')
->leftJoin('i.sections', 's')
->setParameter('ids', $ids)
->orderBy('i.id', 'DESC')
->getQuery();
->where('i.id IN (:ids)')
->setParameter('ids', $ids);

return $query;
if ($leftJoins) {
$query->select('i', 'l', 's')
->leftJoin('i.language', 'l')
->leftJoin('i.sections', 's');
}

$query->orderBy('i.id', 'DESC');

return $query->getQuery();
}

public function getByPublicationAndNumberAndLanguage($publication, $number, $language)
Expand Down Expand Up @@ -89,12 +93,12 @@ public function getIssue($languageCode, $publication, $shortName = null)
{
$qb = $this->createQueryBuilder('i')
->select('i', 'l')
->leftJoin('i.language' , 'l')
->leftJoin('i.language', 'l')
->where('l.code = :language')
->andWhere('i.publication = :publicationId')
->setParameters(array(
'language' => $languageCode,
'publicationId' => $publication
'publicationId' => $publication,
));

if (!is_null($shortName)) {
Expand Down
Expand Up @@ -42,14 +42,14 @@ public function getIssuesAction(Request $request)
$publication = $this->get('newscoop_newscoop.publication_service')->getPublication()->getId();

$issues = $em->getRepository('Newscoop\Entity\Issue')
->getLatestByPublication($request->query->get('publication', $publication), false);
->getLatestByPublication($request->query->get('publication', $publication), false, false);

if (!$issues) {
throw new NotFoundHttpException('Result was not found.');
}

$paginator = $this->get('newscoop.paginator.paginator_service');
$issues = $paginator->paginate($issues->getResult(), array(
$issues = $paginator->paginate($issues, array(
'distinct' => false,
));

Expand Down

0 comments on commit 7b23a29

Please sign in to comment.