/** * @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]); }