|
@@ -36,7 +36,7 @@ class PackageRepository extends EntityRepository
|
|
|
|
|
|
public function packageExists($name)
|
|
|
{
|
|
|
- $packages = $this->getPackageNames();
|
|
|
+ $packages = $this->getRawPackageNames();
|
|
|
|
|
|
return isset($packages[$name]) || in_array(strtolower($name), $packages, true);
|
|
|
}
|
|
@@ -48,7 +48,12 @@ class PackageRepository extends EntityRepository
|
|
|
return isset($packages[$name]) || in_array(strtolower($name), $packages, true);
|
|
|
}
|
|
|
|
|
|
- public function getPackageNames()
|
|
|
+ public function getPackageNames($fields = array())
|
|
|
+ {
|
|
|
+ return array_keys($this->getRawPackageNames());
|
|
|
+ }
|
|
|
+
|
|
|
+ public function getRawPackageNames()
|
|
|
{
|
|
|
if (null !== $this->packageNames) {
|
|
|
return $this->packageNames;
|
|
@@ -137,6 +142,33 @@ class PackageRepository extends EntityRepository
|
|
|
return $this->getPackageNamesForQuery($query);
|
|
|
}
|
|
|
|
|
|
+ public function getPackagesWithFields($filters, $fields)
|
|
|
+ {
|
|
|
+ $selector = '';
|
|
|
+ foreach ($fields as $field) {
|
|
|
+ $selector .= ', p.'.$field;
|
|
|
+ }
|
|
|
+ $where = '';
|
|
|
+ foreach ($filters as $filter => $val) {
|
|
|
+ $where .= 'p.'.$filter.' = :'.$filter;
|
|
|
+ }
|
|
|
+ if ($where) {
|
|
|
+ $where = 'WHERE '.$where;
|
|
|
+ }
|
|
|
+ $query = $this->getEntityManager()
|
|
|
+ ->createQuery("SELECT p.name $selector FROM Packagist\WebBundle\Entity\Package p $where")
|
|
|
+ ->setParameters($filters);
|
|
|
+
|
|
|
+ $result = array();
|
|
|
+ foreach ($query->getScalarResult() as $row) {
|
|
|
+ $name = $row['name'];
|
|
|
+ unset($row['name']);
|
|
|
+ $result[$name] = $row;
|
|
|
+ }
|
|
|
+
|
|
|
+ return $result;
|
|
|
+ }
|
|
|
+
|
|
|
private function getPackageNamesForQuery($query)
|
|
|
{
|
|
|
$names = array();
|