/** * @return array|null */ public function getAll() { $extensionsSerialize = $this->redisClient->hgetall(self::EXTENSION_HASH_STORE); if (!$extensionsSerialize) { return; } $result = []; foreach ($extensionsSerialize as $serialized) { $extension = new Extension(); $extension->unserialize($serialized); $meta = json_decode($this->redisClient->hget(self::EXTENSIONMETA_HASH_STORE, $extension->getName()), true); $extension->setWatchers($meta['watchers']); $extension->setStars($meta['stars']); $result[$extension->getName()] = $extension; } return $result; }
/** * GET /package/register. */ public function registerAction() { if (!$this->app->request()->get('confirm')) { $this->app->render('extension/register.html', ['repository' => $this->app->request()->get('repository')]); return; } $transaction = $this->app->request()->get('id'); $pathTransaction = $this->app->config('cache_dir') . '/' . $transaction . '.json'; $pathMetaTransaction = $this->app->config('cache_dir') . '/' . $transaction . '_meta.json'; if (!file_exists($pathTransaction)) { $this->app->flash('error', 'No active registration process'); $this->app->redirect('/package/register'); exit; } $serializeExtension = file_get_contents($pathTransaction); unlink($pathTransaction); $extension = new Extension(); $extension->unserialize($serializeExtension); $serializeExtensionMeta = file_get_contents($pathMetaTransaction); unlink($pathMetaTransaction); $extensionMeta = json_decode($serializeExtensionMeta, true); $extension->setWatchers($extensionMeta['watchers']); $extension->setStars($extensionMeta['stars']); $packageName = $extension->getName(); $vendorName = $extension->getVendor(); $pathTransactionLog = $transaction . 'log'; if (file_exists($pathTransactionLog)) { unlink($pathTransactionLog); } $user = $this->app->user(); $user->addExtension($packageName); $userRepository = $this->app->container->get('user.repository'); $userRepository->persist($user); $redis = $this->app->container->get('redis.client'); $extensionRepository = $this->app->container->get('extension.repository'); $extensionRepository->persist($extension, $user); $rest = new Rest($extension, $this->app); $rest->update(); $es = $this->app->container->get('elastica.client'); $indexer = new Indexer($es); $indexer->indexExtension($extension); $this->app->flash('warning', $packageName . ' has been registred'); $this->app->redirect('/package/' . $packageName); }