/**
  * @return int
  */
 public function __invoke()
 {
     if ($this->total === null) {
         $this->total = $this->moduleMapper->getTotal();
     }
     return $this->total;
 }
 public function indexAction()
 {
     $query = $this->params()->fromQuery('query', null);
     $results = $this->moduleMapper->findByLike($query);
     $viewModel = new ViewModel(['results' => $results]);
     $viewModel->setTerminal(true);
     return $viewModel;
 }
 public function modulesForUserAction()
 {
     $params = $this->params();
     $query = $params->fromQuery('query', null);
     $page = (int) $params->fromQuery('page', 1);
     $owner = $params->fromRoute('owner');
     $modules = $this->moduleMapper->pagination($page, 10, $owner, 'created_at', 'DESC');
     return new ViewModel(['modules' => $modules, 'query' => $query]);
 }
 public function createService(ServiceLocatorInterface $serviceLocator)
 {
     $hydrator = $serviceLocator->get(ModuleHydrator::class);
     $dbAdapter = $serviceLocator->get('zfcuser_zend_db_adapter');
     $mapper = new Module();
     $mapper->setDbAdapter($dbAdapter);
     $mapper->setEntityPrototype(new \ZfModule\Entity\Module());
     $mapper->setHydrator($hydrator);
     return $mapper;
 }
 /**
  * Removes a Module
  *
  * @return Http\Response
  * @throws Exception\InvalidDataException
  * @throws Exception\RepositoryException
  */
 public function removeAction()
 {
     if (!$this->zfcUserAuthentication()->hasIdentity()) {
         return $this->redirect()->toRoute('zfcuser/login');
     }
     $request = $this->getRequest();
     if (!$request->isPost()) {
         throw Exception\InvalidDataException::fromInvalidRequest('Something went wrong with the post values of the request...', $request);
     }
     $postParams = $request->getPost();
     $repo = $postParams->get('repo');
     $owner = $postParams->get('owner');
     $repository = $this->repositoryRetriever->getUserRepositoryMetadata($owner, $repo);
     if (!$repository instanceof \stdClass) {
         throw Exception\RepositoryException::fromNotFoundRepository('Not able to fetch the repository from GitHub due to an unknown error.', $owner, $repo);
     }
     if ($repository->fork || !$repository->permissions->push) {
         throw Exception\RepositoryException::fromInsufficientPermissions('You have no permission to remove this module. The reason might be that you are neither the owner nor a collaborator of this repository.', $repository->full_name, ['pushAccess', 'noFork']);
     }
     $module = $this->moduleMapper->findByUrl($repository->html_url);
     if (!$module) {
         throw Exception\RepositoryException::fromNotFoundRepositoryUrl($repository->name . ' was not found', $repository->html_url);
     }
     $this->moduleMapper->delete($module);
     $this->flashMessenger()->addSuccessMessage($repository->name . ' has been removed from ZF Modules');
     return $this->redirect()->toRoute('zfcuser');
 }
 /**
  * RSS feed for recently added modules
  * @return FeedModel
  */
 public function feedAction()
 {
     $url = $this->plugin('url');
     // Prepare the feed
     $feed = new Feed();
     $feed->setTitle('ZF2 Modules');
     $feed->setDescription('Recently added ZF2 modules');
     $feed->setFeedLink($url->fromRoute('feed', [], ['force_canonical' => true]), 'atom');
     $feed->setLink($url->fromRoute('home', [], ['force_canonical' => true]));
     // Get the recent modules
     $page = 1;
     $modules = $this->moduleMapper->pagination($page, self::MODULES_PER_PAGE, null, 'created_at', 'DESC');
     // Load them into the feed
     $mapper = new Mapper\ModuleToFeed($feed, $url);
     $mapper->addModules($modules);
     // Render the feed
     $feedmodel = new FeedModel();
     $feedmodel->setFeed($feed);
     return $feedmodel;
 }
 public function getServiceConfig()
 {
     return array('factories' => array('zfmodule_cache' => function ($sm) {
         $config = $sm->get('Config');
         $storage = StorageFactory::factory($config['zfmodule']['cache']);
         return $storage;
     }, 'zfmodule_mapper_module' => function ($sm) {
         $mapper = new Mapper\Module();
         $mapper->setDbAdapter($sm->get('zfcuser_zend_db_adapter'));
         $mapper->setEntityPrototype(new Entity\Module());
         $mapper->setHydrator(new Mapper\ModuleHydrator());
         return $mapper;
     }, 'zfmodule_service_module' => function ($sm) {
         $service = new Service\Module();
         return $service;
     }, 'zfmodule_service_repository' => function ($sm) {
         $service = new Service\Repository();
         $service->setApi($sm->get('EdpGithub\\Client'));
         return $service;
     }));
 }
 /**
  * @return stdClass[]
  */
 public function currentUserModules()
 {
     /* @var RepositoryCollection $repositoryCollection */
     $repositoryCollection = $this->githubClient->api('current_user')->repos(['type' => 'all', 'per_page' => 100]);
     return array_filter(iterator_to_array($repositoryCollection), function ($repository) {
         if (true === $repository->fork) {
             return false;
         }
         if (false === $repository->permissions->push) {
             return false;
         }
         if (!$this->moduleMapper->findByUrl($repository->html_url)) {
             return false;
         }
         return true;
     });
 }
 public function testFindByLikeMatchesEntitiesWhereAllWordsExist()
 {
     $value = 'foo bar baz qux';
     $query = 'foo baz';
     $module = $this->module();
     $module->setDescription($value);
     $this->mapper->insert($module);
     $moduleFoo = $this->module();
     $moduleFoo->setDescription('foo');
     $this->mapper->insert($moduleFoo);
     $moduleBaz = $this->module();
     $moduleBaz->setDescription('baz');
     $this->mapper->insert($moduleBaz);
     /* @var Db\ResultSet\HydratingResultSet $resultSet */
     $resultSet = $this->mapper->findByLike($query);
     $this->assertCount(1, $resultSet);
     /* @var Entity\Module $result */
     $result = $resultSet->current();
     $this->assertInstanceOf(Entity\Module::class, $result);
     $this->assertSame($result->getDescription(), $module->getDescription());
 }
 /**
  * @return string
  */
 public function __invoke()
 {
     $modules = $this->moduleMapper->findAll(10, 'created_at', 'DESC');
     return $this->getView()->render('zf-module/helper/new-module', ['modules' => $modules]);
 }