From 43c75d43a06e882d08d4bfda075ac817b967fa5f Mon Sep 17 00:00:00 2001 From: Jan Gula Date: Fri, 6 Jan 2017 11:09:14 +0100 Subject: [PATCH] Implementation of fulltext search of documents + Nette updated to 2.4 --- .../Forms/DocRequestFormFactory.php | 48 + app/Model/Howdo/HowdoDocument.php | 92 +- app/Model/Howdo/HowdoDocumentDao.php | 24 + app/Model/Howdo/HowdoFinder.php | 63 ++ .../{HowdoIndex.php => HowdoKeyword.php} | 11 +- app/Model/Howdo/HowdoRequest.php | 55 +- app/Model/Howdo/HowdoRequestDao.php | 42 + app/Model/Howdo/HowdoRequestFactory.php | 34 + app/Model/Howdo/RequestUpVoter.php | 68 ++ app/Model/ORM/IPersister.php | 16 + app/Model/ORM/Persister.php | 43 + app/Model/TEntityManager.php | 17 + app/Presenters/DocumentPresenter.php | 32 + app/Presenters/NewDocRequestPresenter.php | 23 + .../templates/Document/default.latte | 9 + .../templates/NewDocRequest/default.latte | 9 + app/config/debug.neon | 10 +- app/config/default.neon | 26 +- app/config/services.neon | 7 + composer.json | 10 +- composer.lock | 995 ++++++++++++------ migrations/Version20170106110825.php | 50 + 22 files changed, 1323 insertions(+), 361 deletions(-) create mode 100644 app/Components/Forms/DocRequestFormFactory.php create mode 100644 app/Model/Howdo/HowdoDocumentDao.php create mode 100644 app/Model/Howdo/HowdoFinder.php rename app/Model/Howdo/{HowdoIndex.php => HowdoKeyword.php} (68%) create mode 100644 app/Model/Howdo/HowdoRequestDao.php create mode 100644 app/Model/Howdo/HowdoRequestFactory.php create mode 100644 app/Model/Howdo/RequestUpVoter.php create mode 100644 app/Model/ORM/IPersister.php create mode 100644 app/Model/ORM/Persister.php create mode 100644 app/Model/TEntityManager.php create mode 100644 app/Presenters/DocumentPresenter.php create mode 100644 app/Presenters/NewDocRequestPresenter.php create mode 100644 app/Presenters/templates/Document/default.latte create mode 100644 app/Presenters/templates/NewDocRequest/default.latte create mode 100644 migrations/Version20170106110825.php diff --git a/app/Components/Forms/DocRequestFormFactory.php b/app/Components/Forms/DocRequestFormFactory.php new file mode 100644 index 0000000..11b1da5 --- /dev/null +++ b/app/Components/Forms/DocRequestFormFactory.php @@ -0,0 +1,48 @@ +howdoRequestFactory = $howdoRequestFactory; + } + + public function create(array $values = []) + { + $form = new Form(); + $form->setRenderer(new BootstrapRenderer()); + + $form->addText('title', 'Request title:') + ->setRequired(); + + $form->addTextArea('description', 'Description:') + ->setRequired(); + + $form->addSubmit('submit', 'Save'); + + $form->onSuccess[] = function (Form $form) { + $values = $form->getValues(); + + $this->howdoRequestFactory->create($values->title, $values->description); + }; + + if (count($values) > 0) { + $form->setDefaults([ + 'title' => $values['title'], + 'description' => $values['description'], + ]); + } + + return $form; + } +} + diff --git a/app/Model/Howdo/HowdoDocument.php b/app/Model/Howdo/HowdoDocument.php index 3d46106..f4b6728 100644 --- a/app/Model/Howdo/HowdoDocument.php +++ b/app/Model/Howdo/HowdoDocument.php @@ -2,9 +2,16 @@ namespace App\Model\Howdo; +use Doctrine\Common\Collections\ArrayCollection; use Doctrine\ORM\Mapping as ORM; -/** @ORM\Entity */ +/** + * @ORM\Entity + * @ORM\Table(indexes={ + * @ORM\Index(columns={"title"}, flags={"fulltext"}), + * @ORM\Index(columns={"document"}, flags={"fulltext"}) + * }) + */ class HowdoDocument { /** @@ -16,7 +23,7 @@ class HowdoDocument private $id; /** - * @ORM\Column(type="text") + * @ORM\Column(type="string") * @var string */ private $title; @@ -26,9 +33,90 @@ class HowdoDocument */ private $document; + /** + * @var HowdoKeyword[]|ArrayCollection + * @ORM\OneToMany(targetEntity="App\Model\Howdo\HowdoKeyword", mappedBy="document") + */ + private $keywords; + + /** + * @param string $title + * @param string $document + */ + public function __construct($title, $document) + { + $this->title = $title; + $this->document = $document; + $this->keywords = new ArrayCollection(); + } + + /** @return int */ public function getId() { return $this->id; } + + /** + * @return string + */ + public function getTitle() + { + return $this->title; + } + + /** + * @param string $title + * + * @return self + */ + public function setTitle($title) + { + $this->title = $title; + + return $this; + } + + /** + * @return string + */ + public function getDocument() + { + return $this->document; + } + + /** + * @param string $document + * + * @return self + */ + public function setDocument($document) + { + $this->document = $document; + + return $this; + } + + /** + * @return HowdoKeyword[] + */ + public function getKeywords() + { + return $this->keywords; + } + + /** + * @param HowdoKeyword $keyword + * + * @return self + */ + public function addKeyword(HowdoKeyword $keyword) + { + if (!$this->keywords->contains($keyword)) { + $this->keywords->add($keyword); + } + + return $this; + } } + diff --git a/app/Model/Howdo/HowdoDocumentDao.php b/app/Model/Howdo/HowdoDocumentDao.php new file mode 100644 index 0000000..0dfe96b --- /dev/null +++ b/app/Model/Howdo/HowdoDocumentDao.php @@ -0,0 +1,24 @@ +em->getRepository(HowdoDocument::class)->createQueryBuilder('d') + ->leftJoin(HowdoKeyword::class, 'k', 'WITH', 'k.document = d.id') + ->where('d.title LIKE :keyword') + ->orWhere('d.document LIKE :keyword') + ->orWhere('k.keyword LIKE :keyword') + ->setParameter('keyword', '%' . $keyword . '%') + ->getQuery() + ->getResult(); + } +} + diff --git a/app/Model/Howdo/HowdoFinder.php b/app/Model/Howdo/HowdoFinder.php new file mode 100644 index 0000000..fe207f0 --- /dev/null +++ b/app/Model/Howdo/HowdoFinder.php @@ -0,0 +1,63 @@ +howdoDocumentDao = $howdoDocumentDao; + $this->howdoRequestDao = $howdoRequestDao; + $this->requestUpVoter = $requestUpVoter; + } + + /** + * Returns array of found documents and requests + * + * @param string $keyword + * @return array + */ + public function findByKeyword($keyword) + { + return [ + 'documents' => $this->findDocuments($keyword), + 'requests' => $this->findRequests($keyword), + ]; + } + + private function findDocuments($keyword) + { + $documentEntities = $this->howdoDocumentDao->findByFulltext($keyword); + + return array_map(function (HowdoDocument $item) { + return [ + 'title' => $item->getTitle(), + 'content' => $item->getDocument(), + ]; + }, $documentEntities); + } + + private function findRequests($keyword) + { + $requestEntities = $this->howdoRequestDao->findByFulltext($keyword); + + return array_map(function (HowdoRequest $item) { + return [ + 'title' => $item->getTitle(), + 'content' => $item->getDescription(), + 'votes' => $item->getVotes(), + 'voted' => $this->requestUpVoter->alreadyVoted($item->getId()), + ]; + }, $requestEntities); + } +} + diff --git a/app/Model/Howdo/HowdoIndex.php b/app/Model/Howdo/HowdoKeyword.php similarity index 68% rename from app/Model/Howdo/HowdoIndex.php rename to app/Model/Howdo/HowdoKeyword.php index f3077c8..d857142 100644 --- a/app/Model/Howdo/HowdoIndex.php +++ b/app/Model/Howdo/HowdoKeyword.php @@ -6,9 +6,9 @@ /** * @ORM\Entity - * @ORM\Table(indexes={@ORM\Index(columns={"key_phrase"}, flags={"fulltext"})}) + * @ORM\Table(indexes={@ORM\Index(columns={"keyword"}, flags={"fulltext"})}) */ -class HowdoIndex +class HowdoKeyword { /** * @ORM\Column(type="integer") @@ -19,14 +19,15 @@ class HowdoIndex private $id; /** - * @ORM\Column(type="text") + * @ORM\Column(type="string") * @var string */ - private $keyPhrase; + private $keyword; /** - * @ORM\ManyToOne(targetEntity="App\Model\Howdo\HowdoDocument") + * @ORM\ManyToOne(targetEntity="App\Model\Howdo\HowdoDocument", inversedBy="keywords") * @var HowdoDocument */ private $document; } + diff --git a/app/Model/Howdo/HowdoRequest.php b/app/Model/Howdo/HowdoRequest.php index dcefb03..e3b67dd 100644 --- a/app/Model/Howdo/HowdoRequest.php +++ b/app/Model/Howdo/HowdoRequest.php @@ -4,7 +4,12 @@ use Doctrine\ORM\Mapping as ORM; -/** @ORM\Entity */ +/** + * @ORM\Entity + * @ORM\Table(indexes={ + * @ORM\Index(columns={"description"}, flags={"fulltext"}), + * @ORM\Index(columns={"title"}, flags={"fulltext"})}) + */ class HowdoRequest { /** @@ -16,24 +21,66 @@ class HowdoRequest private $id; /** - * @ORM\Column(type="text") + * @ORM\Column(type="string") * @var string */ - private $searchedQuery; + private $title; /** * @ORM\Column(type="text") + * @var string */ private $description; /** * @ORM\Column(type="integer") + * @var int */ - private $votes; + private $votes = 1; + + /** + * @param string $title + * @param string $description + */ + public function __construct($title, $description) + { + $this->title = $title; + $this->description = $description; + } /** @return int */ public function getId() { return $this->id; } + + /** + * @return string + */ + public function getTitle() + { + return $this->title; + } + + /** + * @return string + */ + public function getDescription() + { + return $this->description; + } + + /** + * @return int + */ + public function getVotes() + { + return $this->votes; + } + + public function addVote() + { + $this->votes++; + } } + diff --git a/app/Model/Howdo/HowdoRequestDao.php b/app/Model/Howdo/HowdoRequestDao.php new file mode 100644 index 0000000..8d40db1 --- /dev/null +++ b/app/Model/Howdo/HowdoRequestDao.php @@ -0,0 +1,42 @@ +em->getRepository(HowdoRequest::class)->createQueryBuilder('r') + ->where('r.title LIKE :keyword') + ->orWhere('r.description LIKE :keyword') + ->setParameter('keyword', '%' . $keyword . '%') + ->getQuery() + ->getResult(); + } + + /** + * @param int $requestId + * @return HowdoRequest + * @throws EntityNotFoundException + */ + public function findById($requestId) + { + $request = $this->em->getRepository(HowdoRequest::class)->find($requestId); + + if ($request === null) { + throw new EntityNotFoundException('HowdoRequest with id `' . $requestId . '` not found.'); + } + + return $request; + } +} + diff --git a/app/Model/Howdo/HowdoRequestFactory.php b/app/Model/Howdo/HowdoRequestFactory.php new file mode 100644 index 0000000..024132e --- /dev/null +++ b/app/Model/Howdo/HowdoRequestFactory.php @@ -0,0 +1,34 @@ +persister = $persister; + } + + /** + * @param string $title + * @param string $description + * + * @return HowdoRequest + */ + public function create($title, $description) + { + $request = new HowdoRequest($title, $description); + + $this->persister->save($request); + + return $request; + } + + +} + diff --git a/app/Model/Howdo/RequestUpVoter.php b/app/Model/Howdo/RequestUpVoter.php new file mode 100644 index 0000000..7817e7c --- /dev/null +++ b/app/Model/Howdo/RequestUpVoter.php @@ -0,0 +1,68 @@ +howdoRequestDao = $howdoRequestDao; + $this->session = $session; + $this->persister = $persister; + } + + /** + * @param int $requestId + * + * @return bool + */ + public function upVote($requestId) + { + if (!$this->alreadyVoted($requestId)) { + $howdoRequest = $this->howdoRequestDao->findById($requestId); + $howdoRequest->addVote(); + + $this->persister->flush(); + + $this->setVoted($requestId); + return true; + } + + return false; + } + + public function alreadyVoted($requestId) + { + return $this->getSessionSection()->offsetExists($requestId); + } + + private function setVoted($requestId) + { + $this->getSessionSection()->offsetSet($requestId, true); + } + + private function getSessionSection() + { + return $this->session->getSection(self::SESSION_SECTION); + } +} + diff --git a/app/Model/ORM/IPersister.php b/app/Model/ORM/IPersister.php new file mode 100644 index 0000000..5b6c676 --- /dev/null +++ b/app/Model/ORM/IPersister.php @@ -0,0 +1,16 @@ +em = $em; + } + + public function flush() + { + $this->em->flush(); + } + + public function persist($entity) + { + $this->em->persist($entity); + } + + public function save($entity) + { + $this->persist($entity); + $this->flush(); + } + + public function remove($entity) + { + $this->em->remove($entity); + } + + public function delete($entity) + { + $this->remove($entity); + $this->flush(); + } +} diff --git a/app/Model/TEntityManager.php b/app/Model/TEntityManager.php new file mode 100644 index 0000000..e1cefc4 --- /dev/null +++ b/app/Model/TEntityManager.php @@ -0,0 +1,17 @@ +em = $em; + } + +} diff --git a/app/Presenters/DocumentPresenter.php b/app/Presenters/DocumentPresenter.php new file mode 100644 index 0000000..8560853 --- /dev/null +++ b/app/Presenters/DocumentPresenter.php @@ -0,0 +1,32 @@ +howdoFinder->findByKeyword($keyword); + + $this->sendResponse(new JsonResponse($result)); + } + + public function handleUpVoteRequest($requestId) + { + $voted = $this->requestUpVoter->upVote($requestId); + + $this->sendResponse(new JsonResponse([ + 'success' => $voted, + ])); + } +} diff --git a/app/Presenters/NewDocRequestPresenter.php b/app/Presenters/NewDocRequestPresenter.php new file mode 100644 index 0000000..e5fc32e --- /dev/null +++ b/app/Presenters/NewDocRequestPresenter.php @@ -0,0 +1,23 @@ +docRequestFormFactory->create(); + + $form->onSuccess[] = function () { + $this->flashSuccess('Document request successfully created'); + $this->redirect('this'); + }; + + return $form; + } +} diff --git a/app/Presenters/templates/Document/default.latte b/app/Presenters/templates/Document/default.latte new file mode 100644 index 0000000..3423fd2 --- /dev/null +++ b/app/Presenters/templates/Document/default.latte @@ -0,0 +1,9 @@ +{block content} +
+ +
+

TBD

+
+
+{/block} + diff --git a/app/Presenters/templates/NewDocRequest/default.latte b/app/Presenters/templates/NewDocRequest/default.latte new file mode 100644 index 0000000..934e075 --- /dev/null +++ b/app/Presenters/templates/NewDocRequest/default.latte @@ -0,0 +1,9 @@ +{block content} +
+ +
+ {control newRequestForm} +
+
+{/block} + diff --git a/app/config/debug.neon b/app/config/debug.neon index 338c974..4642cce 100644 --- a/app/config/debug.neon +++ b/app/config/debug.neon @@ -5,13 +5,7 @@ parameters: webmasterEmail: - -nette: - application: - catchExceptions: no - - container: - debugger: yes # aktivuje panel v Debugger baru - +application: + catchExceptions: no services: diff --git a/app/config/default.neon b/app/config/default.neon index 7ee0367..249b574 100644 --- a/app/config/default.neon +++ b/app/config/default.neon @@ -20,22 +20,20 @@ php: date.timezone: Europe/Prague # zlib.output_compression: yes +application: + errorPresenter: Error + catchExceptions: yes + mapping: + *: App\*Module\Presenters\*Presenter -nette: - application: - errorPresenter: Error - catchExceptions: yes - mapping: - *: App\*Module\Presenters\*Presenter +tracy: + email: %webmasterEmail% + strictMode: yes - debugger: - email: %webmasterEmail% - strictMode: yes - - session: - autoStart: smart - expiration: 14 days - savePath: "%tempDir%/sessions" +session: + autoStart: smart + expiration: 14 days + savePath: "%tempDir%/sessions" latte: xhtml: no diff --git a/app/config/services.neon b/app/config/services.neon index c5ba973..edb7682 100644 --- a/app/config/services.neon +++ b/app/config/services.neon @@ -7,3 +7,10 @@ services: - Instante\RequireJS\JsModuleContainer(%paths.frontend%/RequireJSDependencies.json) - Instante\RequireJS\Components\JsLoaderFactory(%useSourceJavaScripts%) + - App\Model\Persister + - App\Model\Howdo\HowdoDocumentDao + - App\Model\Howdo\HowdoRequestDao + - App\Model\Howdo\HowdoFinder + - App\Model\Howdo\RequestUpVoter + - App\Model\Howdo\HowdoRequestFactory + - App\Components\Forms\DocRequestFormFactory diff --git a/composer.json b/composer.json index c27e33a..f82cd25 100644 --- a/composer.json +++ b/composer.json @@ -2,16 +2,20 @@ "name": "instante/web", "description": "Instante dev-stack documentation website", "config": { - "vendor-dir": "./vendor" + "vendor-dir": "./vendor", + "platform": { + "php": "5.6" + } }, "license": "proprietary", "require": { "php": ">=5.5.0", - "nette/nette": "2.3.*", + "nette/nette": "^2.3", "instante/require-js": "~1.1", "instante/doctrine": "~1.1", "instante/bootstrap": "~1.0", - "instante/ui": "~1.0" + "instante/ui": "~1.0", + "instante/bootstrap-3-renderer": "2.0.0-alpha" }, "require-dev": { "nette/tester": "@dev", diff --git a/composer.lock b/composer.lock index b32cb16..ce7a596 100644 --- a/composer.lock +++ b/composer.lock @@ -4,40 +4,39 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "9bb2c64b15dd9c77cfbc4ee6b4395c51", - "content-hash": "7a6b0e618c7b7eec7035e10b7284d2db", + "content-hash": "e4243a0a0d2eaf58a28cc3b4c8a710e2", "packages": [ { "name": "doctrine/annotations", - "version": "v1.2.7", + "version": "v1.3.1", "source": { "type": "git", "url": "https://github.com/doctrine/annotations.git", - "reference": "f25c8aab83e0c3e976fd7d19875f198ccf2f7535" + "reference": "bd4461328621bde0ae6b1b2675fbc6aca4ceb558" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/f25c8aab83e0c3e976fd7d19875f198ccf2f7535", - "reference": "f25c8aab83e0c3e976fd7d19875f198ccf2f7535", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/bd4461328621bde0ae6b1b2675fbc6aca4ceb558", + "reference": "bd4461328621bde0ae6b1b2675fbc6aca4ceb558", "shasum": "" }, "require": { "doctrine/lexer": "1.*", - "php": ">=5.3.2" + "php": "^5.6 || ^7.0" }, "require-dev": { "doctrine/cache": "1.*", - "phpunit/phpunit": "4.*" + "phpunit/phpunit": "^5.6.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.3.x-dev" + "dev-master": "1.4.x-dev" } }, "autoload": { - "psr-0": { - "Doctrine\\Common\\Annotations\\": "lib/" + "psr-4": { + "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" } }, "notification-url": "https://packagist.org/downloads/", @@ -73,20 +72,20 @@ "docblock", "parser" ], - "time": "2015-08-31 12:32:49" + "time": "2016-12-30T15:59:45+00:00" }, { "name": "doctrine/cache", - "version": "v1.6.0", + "version": "v1.6.1", "source": { "type": "git", "url": "https://github.com/doctrine/cache.git", - "reference": "f8af318d14bdb0eff0336795b428b547bd39ccb6" + "reference": "b6f544a20f4807e81f7044d31e679ccbb1866dc3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/cache/zipball/f8af318d14bdb0eff0336795b428b547bd39ccb6", - "reference": "f8af318d14bdb0eff0336795b428b547bd39ccb6", + "url": "https://api.github.com/repos/doctrine/cache/zipball/b6f544a20f4807e81f7044d31e679ccbb1866dc3", + "reference": "b6f544a20f4807e81f7044d31e679ccbb1866dc3", "shasum": "" }, "require": { @@ -143,7 +142,7 @@ "cache", "caching" ], - "time": "2015-12-31 16:37:02" + "time": "2016-10-29T11:16:17+00:00" }, { "name": "doctrine/collections", @@ -209,20 +208,20 @@ "collections", "iterator" ], - "time": "2015-04-14 22:21:58" + "time": "2015-04-14T22:21:58+00:00" }, { "name": "doctrine/common", - "version": "v2.6.1", + "version": "v2.6.2", "source": { "type": "git", "url": "https://github.com/doctrine/common.git", - "reference": "a579557bc689580c19fee4e27487a67fe60defc0" + "reference": "7bce00698899aa2c06fe7365c76e4d78ddb15fa3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/common/zipball/a579557bc689580c19fee4e27487a67fe60defc0", - "reference": "a579557bc689580c19fee4e27487a67fe60defc0", + "url": "https://api.github.com/repos/doctrine/common/zipball/7bce00698899aa2c06fe7365c76e4d78ddb15fa3", + "reference": "7bce00698899aa2c06fe7365c76e4d78ddb15fa3", "shasum": "" }, "require": { @@ -282,20 +281,20 @@ "persistence", "spl" ], - "time": "2015-12-25 13:18:31" + "time": "2016-11-30T16:50:46+00:00" }, { "name": "doctrine/dbal", - "version": "v2.5.4", + "version": "v2.5.5", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "abbdfd1cff43a7b99d027af3be709bc8fc7d4769" + "reference": "9f8c05cd5225a320d56d4bfdb4772f10d045a0c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/abbdfd1cff43a7b99d027af3be709bc8fc7d4769", - "reference": "abbdfd1cff43a7b99d027af3be709bc8fc7d4769", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/9f8c05cd5225a320d56d4bfdb4772f10d045a0c9", + "reference": "9f8c05cd5225a320d56d4bfdb4772f10d045a0c9", "shasum": "" }, "require": { @@ -304,7 +303,7 @@ }, "require-dev": { "phpunit/phpunit": "4.*", - "symfony/console": "2.*" + "symfony/console": "2.*||^3.0" }, "suggest": { "symfony/console": "For helpful console commands such as SQL execution and import of files." @@ -353,7 +352,7 @@ "persistence", "queryobject" ], - "time": "2016-01-05 22:11:12" + "time": "2016-09-09T19:13:33+00:00" }, { "name": "doctrine/inflector", @@ -420,7 +419,7 @@ "singularize", "string" ], - "time": "2015-11-06 14:35:42" + "time": "2015-11-06T14:35:42+00:00" }, { "name": "doctrine/instantiator", @@ -474,7 +473,7 @@ "constructor", "instantiate" ], - "time": "2015-06-14 21:17:01" + "time": "2015-06-14T21:17:01+00:00" }, { "name": "doctrine/lexer", @@ -528,20 +527,20 @@ "lexer", "parser" ], - "time": "2014-09-09 13:34:57" + "time": "2014-09-09T13:34:57+00:00" }, { "name": "doctrine/migrations", - "version": "1.4.1", + "version": "v1.5.0", "source": { "type": "git", "url": "https://github.com/doctrine/migrations.git", - "reference": "0d0ff5da10c5d30846da32060bd9e357abf70a05" + "reference": "c81147c0f2938a6566594455367e095150547f72" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/migrations/zipball/0d0ff5da10c5d30846da32060bd9e357abf70a05", - "reference": "0d0ff5da10c5d30846da32060bd9e357abf70a05", + "url": "https://api.github.com/repos/doctrine/migrations/zipball/c81147c0f2938a6566594455367e095150547f72", + "reference": "c81147c0f2938a6566594455367e095150547f72", "shasum": "" }, "require": { @@ -556,9 +555,10 @@ "doctrine/orm": "2.*", "jdorn/sql-formatter": "~1.1", "johnkary/phpunit-speedtrap": "~1.0@dev", + "mikey179/vfsstream": "^1.6", "mockery/mockery": "^0.9.4", "phpunit/phpunit": "~4.7", - "satooshi/php-coveralls": "0.6.*" + "satooshi/php-coveralls": "^1.0" }, "suggest": { "jdorn/sql-formatter": "Allows to generate formatted SQL with the diff command." @@ -569,7 +569,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "v1.5.x-dev" + "dev-master": "v1.6.x-dev" } }, "autoload": { @@ -601,26 +601,26 @@ "database", "migrations" ], - "time": "2016-03-14 12:29:11" + "time": "2016-12-25T22:54:00+00:00" }, { "name": "doctrine/orm", - "version": "v2.5.4", + "version": "v2.5.6", "source": { "type": "git", "url": "https://github.com/doctrine/doctrine2.git", - "reference": "bc4ddbfb0114cb33438cc811c9a740d8aa304aab" + "reference": "e6c434196c8ef058239aaa0724b4aadb0107940b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/doctrine2/zipball/bc4ddbfb0114cb33438cc811c9a740d8aa304aab", - "reference": "bc4ddbfb0114cb33438cc811c9a740d8aa304aab", + "url": "https://api.github.com/repos/doctrine/doctrine2/zipball/e6c434196c8ef058239aaa0724b4aadb0107940b", + "reference": "e6c434196c8ef058239aaa0724b4aadb0107940b", "shasum": "" }, "require": { "doctrine/cache": "~1.4", "doctrine/collections": "~1.2", - "doctrine/common": ">=2.5-dev,<2.7-dev", + "doctrine/common": ">=2.5-dev,<2.8-dev", "doctrine/dbal": ">=2.5-dev,<2.6-dev", "doctrine/instantiator": "~1.0.1", "ext-pdo": "*", @@ -677,26 +677,26 @@ "database", "orm" ], - "time": "2016-01-05 21:34:58" + "time": "2016-12-18T15:42:34+00:00" }, { "name": "instante/bootstrap", - "version": "1.0.3", + "version": "1.2.1", "source": { "type": "git", "url": "https://github.com/instante/bootstrap.git", - "reference": "2c30a0677342102a6abf25af038182c154ce9c08" + "reference": "b84de56d61ec97619cb224a0e316dac1f9461a69" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/instante/bootstrap/zipball/2c30a0677342102a6abf25af038182c154ce9c08", - "reference": "2c30a0677342102a6abf25af038182c154ce9c08", + "url": "https://api.github.com/repos/instante/bootstrap/zipball/b84de56d61ec97619cb224a0e316dac1f9461a69", + "reference": "b84de56d61ec97619cb224a0e316dac1f9461a69", "shasum": "" }, "require": { "instante/utils": "@dev", - "nette/bootstrap": "~2.3", - "nette/robot-loader": "~2.3" + "nette/bootstrap": "~2.4", + "nette/robot-loader": "~2.4" }, "require-dev": { "jakub-onderka/php-parallel-lint": "~0.6", @@ -725,20 +725,67 @@ "instante", "nette" ], - "time": "2016-07-14 13:14:23" + "time": "2016-10-26T13:06:56+00:00" + }, + { + "name": "instante/bootstrap-3-renderer", + "version": "2.0.0-alpha", + "source": { + "type": "git", + "url": "https://github.com/instante/bootstrap3renderer.git", + "reference": "fbce81076e184e826e26c0302ab5b5da22b1a186" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/instante/bootstrap3renderer/zipball/fbce81076e184e826e26c0302ab5b5da22b1a186", + "reference": "fbce81076e184e826e26c0302ab5b5da22b1a186", + "shasum": "" + }, + "require": { + "instante/extended-form-macros": "@dev", + "instante/utils": "~1.3", + "nette/forms": "~2.4", + "nette/utils": "~2.4" + }, + "require-dev": { + "instante/php-test-suite": "@dev", + "jakub-onderka/php-parallel-lint": "~0.6", + "mockery/mockery": "@dev", + "nette/tester": "@dev" + }, + "type": "library", + "autoload": { + "psr-4": { + "Instante\\Bootstrap3Renderer\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" + ], + "description": "Nette forms renderer with bootstrap 3", + "keywords": [ + "Forms", + "bootstrap", + "bootstrap3", + "nette" + ], + "time": "2016-09-06T12:40:41+00:00" }, { "name": "instante/doctrine", - "version": "1.1.2", + "version": "1.1.3", "source": { "type": "git", "url": "https://github.com/instante/doctrine.git", - "reference": "6148065f1e8d4a720ba4debd169da224805547ee" + "reference": "95e61af409b508b1d423b1a43be130f156d41de1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/instante/doctrine/zipball/6148065f1e8d4a720ba4debd169da224805547ee", - "reference": "6148065f1e8d4a720ba4debd169da224805547ee", + "url": "https://api.github.com/repos/instante/doctrine/zipball/95e61af409b508b1d423b1a43be130f156d41de1", + "reference": "95e61af409b508b1d423b1a43be130f156d41de1", "shasum": "" }, "require": { @@ -750,6 +797,7 @@ }, "require-dev": { "jakub-onderka/php-parallel-lint": "~0.6", + "nette/http": "~2.2", "nette/tester": "@dev" }, "type": "library", @@ -769,20 +817,69 @@ "instante", "nette" ], - "time": "2016-06-15 15:39:32" + "time": "2016-11-01T15:53:52+00:00" + }, + { + "name": "instante/extended-form-macros", + "version": "0.2", + "source": { + "type": "git", + "url": "https://github.com/instante/extended-form-macros.git", + "reference": "bb19ce6ef01c7b552b7d5edc580ecc8315429c9b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/instante/extended-form-macros/zipball/bb19ce6ef01c7b552b7d5edc580ecc8315429c9b", + "reference": "bb19ce6ef01c7b552b7d5edc580ecc8315429c9b", + "shasum": "" + }, + "require": { + "instante/utils": "~1.2", + "latte/latte": "~2.4", + "nette/bootstrap": "~2.4", + "nette/di": "~2.4", + "nette/forms": "~2.4" + }, + "require-dev": { + "instante/php-test-suite": "@dev", + "jakub-onderka/php-parallel-lint": "~0.6", + "mockery/mockery": "@dev", + "nette/application": "~2.4", + "nette/tester": "@dev" + }, + "type": "library", + "autoload": { + "psr-4": { + "Instante\\ExtendedFormMacros\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" + ], + "description": "Extended form rendering macros for Nette framework", + "keywords": [ + "Forms", + "latte", + "macros", + "nette" + ], + "time": "2016-09-06T13:35:01+00:00" }, { "name": "instante/require-js", - "version": "1.1.0", + "version": "1.2.0", "source": { "type": "git", "url": "https://github.com/instante/require-js.git", - "reference": "c09da0b5c299512730af5077bb243874c703cd9f" + "reference": "2d2b620d53f7480943e06e2695cfb5af75bf4904" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/instante/require-js/zipball/c09da0b5c299512730af5077bb243874c703cd9f", - "reference": "c09da0b5c299512730af5077bb243874c703cd9f", + "url": "https://api.github.com/repos/instante/require-js/zipball/2d2b620d53f7480943e06e2695cfb5af75bf4904", + "reference": "2d2b620d53f7480943e06e2695cfb5af75bf4904", "shasum": "" }, "require": { @@ -819,20 +916,20 @@ "instante", "nette" ], - "time": "2016-07-20 09:57:23" + "time": "2016-10-26T12:14:54+00:00" }, { "name": "instante/ui", - "version": "1.0.2", + "version": "1.0.3", "source": { "type": "git", "url": "https://github.com/instante/ui.git", - "reference": "904c06b2067e45448c7209b1a69dbb99b518e5c6" + "reference": "2d0e718d514207a29a661dbdb2fee69c349b8de0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/instante/ui/zipball/904c06b2067e45448c7209b1a69dbb99b518e5c6", - "reference": "904c06b2067e45448c7209b1a69dbb99b518e5c6", + "url": "https://api.github.com/repos/instante/ui/zipball/2d0e718d514207a29a661dbdb2fee69c349b8de0", + "reference": "2d0e718d514207a29a661dbdb2fee69c349b8de0", "shasum": "" }, "require": { @@ -861,25 +958,25 @@ "instante", "nette" ], - "time": "2016-01-03 18:58:36" + "time": "2016-07-18T13:14:05+00:00" }, { "name": "instante/utils", - "version": "1.1.0", + "version": "1.3.1", "source": { "type": "git", "url": "https://github.com/instante/utils.git", - "reference": "cc029274227f6d6a4dca565269d2e83323409e8a" + "reference": "72996a023accc519de087441c944a78829b16857" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/instante/utils/zipball/cc029274227f6d6a4dca565269d2e83323409e8a", - "reference": "cc029274227f6d6a4dca565269d2e83323409e8a", + "url": "https://api.github.com/repos/instante/utils/zipball/72996a023accc519de087441c944a78829b16857", + "reference": "72996a023accc519de087441c944a78829b16857", "shasum": "" }, "require": { "nette/utils": "~2.2", - "php": ">=5.5.0" + "php": ">=5.6.0" }, "require-dev": { "jakub-onderka/php-parallel-lint": "~0.6", @@ -908,7 +1005,7 @@ "instante", "nette" ], - "time": "2015-10-21 23:22:32" + "time": "2016-08-11T13:41:53+00:00" }, { "name": "ircmaxell/password-compat", @@ -950,7 +1047,7 @@ "hashing", "password" ], - "time": "2014-11-20 16:49:30" + "time": "2014-11-20T16:49:30+00:00" }, { "name": "kdyby/annotations", @@ -1036,7 +1133,7 @@ "kdyby", "nette" ], - "time": "2016-07-07 20:48:31" + "time": "2016-07-07T20:48:31+00:00" }, { "name": "kdyby/console", @@ -1122,7 +1219,7 @@ "kdyby", "nette" ], - "time": "2016-07-07 20:48:31" + "time": "2016-07-07T20:48:31+00:00" }, { "name": "kdyby/doctrine", @@ -1214,7 +1311,7 @@ "nette", "orm" ], - "time": "2016-07-07 23:14:14" + "time": "2016-07-07T23:14:14+00:00" }, { "name": "kdyby/doctrine-cache", @@ -1295,7 +1392,7 @@ "kdyby", "nette" ], - "time": "2016-07-07 20:48:31" + "time": "2016-07-07T20:48:31+00:00" }, { "name": "kdyby/events", @@ -1376,34 +1473,45 @@ "kdyby", "nette" ], - "time": "2016-07-07 20:48:31" + "time": "2016-07-07T20:48:31+00:00" }, { "name": "latte/latte", - "version": "v2.3.12", + "version": "v2.4.2", "source": { "type": "git", "url": "https://github.com/nette/latte.git", - "reference": "26af8b6b68ea68bb466ce692c12b8898524456bd" + "reference": "7d30f7bfd58cb017c47d7e14ed93286ce2ca1bc9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/latte/zipball/26af8b6b68ea68bb466ce692c12b8898524456bd", - "reference": "26af8b6b68ea68bb466ce692c12b8898524456bd", + "url": "https://api.github.com/repos/nette/latte/zipball/7d30f7bfd58cb017c47d7e14ed93286ce2ca1bc9", + "reference": "7d30f7bfd58cb017c47d7e14ed93286ce2ca1bc9", "shasum": "" }, "require": { + "ext-json": "*", "ext-tokenizer": "*", - "php": ">=5.3.1" + "php": ">=5.4.4" + }, + "conflict": { + "nette/application": "<2.4.1" }, "require-dev": { - "nette/tester": "~1.3" + "nette/tester": "~2.0", + "tracy/tracy": "^2.3" }, "suggest": { "ext-fileinfo": "to use filter |datastream", - "ext-mbstring": "to use filters like lower, upper, capitalize, ..." + "ext-mbstring": "to use filters like lower, upper, capitalize, ...", + "ext-xml": "to use filters like length, substring, ..." }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.4-dev" + } + }, "autoload": { "classmap": [ "src/" @@ -1431,48 +1539,61 @@ "templating", "twig" ], - "time": "2016-05-30 09:11:18" + "time": "2016-09-27T13:10:19+00:00" }, { "name": "nette/application", - "version": "v2.3.13", + "version": "v2.4.3", "source": { "type": "git", "url": "https://github.com/nette/application.git", - "reference": "ab1ed67f4b85e1be7af5d13bf00de61391544be6" + "reference": "58a8d2288dd2aae755538ccb380af183a356892d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/application/zipball/ab1ed67f4b85e1be7af5d13bf00de61391544be6", - "reference": "ab1ed67f4b85e1be7af5d13bf00de61391544be6", + "url": "https://api.github.com/repos/nette/application/zipball/58a8d2288dd2aae755538ccb380af183a356892d", + "reference": "58a8d2288dd2aae755538ccb380af183a356892d", "shasum": "" }, "require": { - "nette/component-model": "~2.2", + "nette/component-model": "~2.3", "nette/http": "~2.2", "nette/reflection": "~2.2", - "nette/security": "~2.2", - "nette/utils": "~2.2", - "php": ">=5.3.1" + "nette/utils": "~2.4", + "php": ">=5.6.0" }, "conflict": { + "nette/di": "<2.4", + "nette/forms": "<2.4", + "nette/latte": "<2.4", "nette/nette": "<2.2" }, "require-dev": { - "latte/latte": "~2.3.9", - "nette/di": "~2.3", - "nette/forms": "~2.2", - "nette/robot-loader": "~2.2", - "nette/tester": "~1.3" + "latte/latte": "^2.4.1", + "mockery/mockery": "^0.9.5", + "nette/di": "~2.4", + "nette/forms": "~2.4", + "nette/robot-loader": "~2.4", + "nette/security": "~2.4", + "nette/tester": "~2.0", + "tracy/tracy": "^2.4" }, "suggest": { "latte/latte": "Allows using Latte in templates", "nette/forms": "Allows to use Nette\\Application\\UI\\Form" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.4-dev" + } + }, "autoload": { "classmap": [ "src/" + ], + "files": [ + "src/compatibility.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -1493,26 +1614,26 @@ ], "description": "Nette Application MVC Component", "homepage": "https://nette.org", - "time": "2016-06-17 17:40:16" + "time": "2016-12-20T11:12:00+00:00" }, { "name": "nette/bootstrap", - "version": "v2.3.5", + "version": "v2.4.2", "source": { "type": "git", "url": "https://github.com/nette/bootstrap.git", - "reference": "1fc6e52b790864d2973d479a4460a89cec1f51f8" + "reference": "4db37e6d42ddf41b50417950741113b5dfc86e27" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/bootstrap/zipball/1fc6e52b790864d2973d479a4460a89cec1f51f8", - "reference": "1fc6e52b790864d2973d479a4460a89cec1f51f8", + "url": "https://api.github.com/repos/nette/bootstrap/zipball/4db37e6d42ddf41b50417950741113b5dfc86e27", + "reference": "4db37e6d42ddf41b50417950741113b5dfc86e27", "shasum": "" }, "require": { - "nette/di": "~2.3.0", - "nette/utils": "~2.2", - "php": ">=5.3.1" + "nette/di": "~2.4.0", + "nette/utils": "~2.4", + "php": ">=5.6.0" }, "conflict": { "nette/nette": "<2.2" @@ -1523,19 +1644,24 @@ "nette/caching": "~2.3", "nette/database": "~2.3", "nette/forms": "~2.3", - "nette/http": "~2.3", + "nette/http": "~2.4.0", "nette/mail": "~2.3", "nette/robot-loader": "~2.2", "nette/safe-stream": "~2.2", "nette/security": "~2.3", - "nette/tester": "~1.3", - "tracy/tracy": "~2.3" + "nette/tester": "~2.0", + "tracy/tracy": "^2.4.1" }, "suggest": { "nette/robot-loader": "to use Configurator::createRobotLoader()", - "tracy/tracy": "to use Configurator::enableDebugger()" + "tracy/tracy": "to use Configurator::enableTracy()" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.4-dev" + } + }, "autoload": { "classmap": [ "src/" @@ -1559,39 +1685,43 @@ ], "description": "Nette Bootstrap", "homepage": "https://nette.org", - "time": "2016-05-17 19:52:51" + "time": "2016-12-19T12:12:10+00:00" }, { "name": "nette/caching", - "version": "v2.3.5", + "version": "v2.5.2", "source": { "type": "git", "url": "https://github.com/nette/caching.git", - "reference": "0cb5c2c91e92a155ca5c1700479476b80c30dece" + "reference": "7da6cc65f301e220acba4fd8a11d3afdc642be9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/caching/zipball/0cb5c2c91e92a155ca5c1700479476b80c30dece", - "reference": "0cb5c2c91e92a155ca5c1700479476b80c30dece", + "url": "https://api.github.com/repos/nette/caching/zipball/7da6cc65f301e220acba4fd8a11d3afdc642be9e", + "reference": "7da6cc65f301e220acba4fd8a11d3afdc642be9e", "shasum": "" }, "require": { "nette/finder": "~2.2", - "nette/utils": "~2.2", - "php": ">=5.3.1" + "nette/utils": "~2.4", + "php": ">=5.6.0" }, "conflict": { "nette/nette": "<2.2" }, "require-dev": { - "latte/latte": "~2.3.0", - "nette/di": "~2.3", - "nette/tester": "~1.6" + "latte/latte": "~2.4", + "nette/di": "~2.4", + "nette/tester": "~2.0", + "tracy/tracy": "^2.4" + }, + "suggest": { + "ext-pdo_sqlite": "to use SQLiteStorage or SQLiteJournal" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.3-dev" + "dev-master": "2.5-dev" } }, "autoload": { @@ -1617,33 +1747,40 @@ ], "description": "Nette Caching Component", "homepage": "https://nette.org", - "time": "2016-02-22 02:08:08" + "time": "2016-10-06T00:08:42+00:00" }, { "name": "nette/component-model", - "version": "v2.2.4", + "version": "v2.3.0", "source": { "type": "git", "url": "https://github.com/nette/component-model.git", - "reference": "07bce436051fd92d084642ce7a47f00045e0d1e5" + "reference": "9b5817b246bf409b8f0f8309c23e599dd8729d28" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/component-model/zipball/07bce436051fd92d084642ce7a47f00045e0d1e5", - "reference": "07bce436051fd92d084642ce7a47f00045e0d1e5", + "url": "https://api.github.com/repos/nette/component-model/zipball/9b5817b246bf409b8f0f8309c23e599dd8729d28", + "reference": "9b5817b246bf409b8f0f8309c23e599dd8729d28", "shasum": "" }, "require": { - "nette/utils": "^2.3.5", - "php": ">=5.3.1" + "nette/utils": "^2.4", + "php": ">=5.6.0" }, "conflict": { + "nette/application": "<2.4", "nette/nette": "<2.2" }, "require-dev": { - "nette/tester": "~1.3" + "nette/tester": "~2.0", + "tracy/tracy": "^2.3" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.3-dev" + } + }, "autoload": { "classmap": [ "src/" @@ -1667,37 +1804,43 @@ ], "description": "Nette Component Model", "homepage": "https://nette.org", - "time": "2015-10-06 17:54:05" + "time": "2016-06-17T17:36:56+00:00" }, { "name": "nette/database", - "version": "v2.3.9", + "version": "v2.4.1", "source": { "type": "git", "url": "https://github.com/nette/database.git", - "reference": "a4c7ea17470a7d888df5738f5e63b2605899f289" + "reference": "7a7b51520f3d98e3f6c38df5495ac775463972d5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/database/zipball/a4c7ea17470a7d888df5738f5e63b2605899f289", - "reference": "a4c7ea17470a7d888df5738f5e63b2605899f289", + "url": "https://api.github.com/repos/nette/database/zipball/7a7b51520f3d98e3f6c38df5495ac775463972d5", + "reference": "7a7b51520f3d98e3f6c38df5495ac775463972d5", "shasum": "" }, "require": { "ext-pdo": "*", - "nette/caching": "^2.2", - "nette/utils": "^2.3.5", - "php": ">=5.3.1" + "nette/caching": "~2.2", + "nette/utils": "~2.4", + "php": ">=5.6.0" }, "conflict": { "nette/nette": "<2.2" }, "require-dev": { - "mockery/mockery": "^0.9.1", - "nette/di": "^2.3", - "nette/tester": "^1.3" + "mockery/mockery": "~1.0.0", + "nette/di": "~2.4", + "nette/tester": "~2.0", + "tracy/tracy": "^2.4" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.4-dev" + } + }, "autoload": { "classmap": [ "src/" @@ -1721,20 +1864,20 @@ ], "description": "Nette Database Component", "homepage": "https://nette.org", - "time": "2016-05-30 14:52:29" + "time": "2016-10-18T13:27:34+00:00" }, { "name": "nette/deprecated", - "version": "v2.3.3", + "version": "v2.4.0", "source": { "type": "git", "url": "https://github.com/nette/deprecated.git", - "reference": "eb5c8276824e83d2fa8ab92261ad95cf24361b4c" + "reference": "fde8fea8e3f1960ea6bcca03a996300b0ca41762" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/deprecated/zipball/eb5c8276824e83d2fa8ab92261ad95cf24361b4c", - "reference": "eb5c8276824e83d2fa8ab92261ad95cf24361b4c", + "url": "https://api.github.com/repos/nette/deprecated/zipball/fde8fea8e3f1960ea6bcca03a996300b0ca41762", + "reference": "fde8fea8e3f1960ea6bcca03a996300b0ca41762", "shasum": "" }, "require-dev": { @@ -1778,35 +1921,43 @@ ], "description": "APIs and features removed from Nette Framework", "homepage": "https://nette.org", - "time": "2016-07-15 13:06:38" + "time": "2016-07-15T13:19:27+00:00" }, { "name": "nette/di", - "version": "v2.3.12", + "version": "v2.4.5", "source": { "type": "git", "url": "https://github.com/nette/di.git", - "reference": "aed06c37a722a1450854176f1d0b11de473092f1" + "reference": "b265f305e1fef2dad1cb2e7340b49d274d3dd14c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/di/zipball/aed06c37a722a1450854176f1d0b11de473092f1", - "reference": "aed06c37a722a1450854176f1d0b11de473092f1", + "url": "https://api.github.com/repos/nette/di/zipball/b265f305e1fef2dad1cb2e7340b49d274d3dd14c", + "reference": "b265f305e1fef2dad1cb2e7340b49d274d3dd14c", "shasum": "" }, "require": { + "ext-tokenizer": "*", "nette/neon": "^2.3.3", - "nette/php-generator": "^2.3.6", - "nette/utils": "^2.3.5", - "php": ">=5.3.1" + "nette/php-generator": "^2.4", + "nette/utils": "^2.4", + "php": ">=5.6.0" }, "conflict": { + "nette/bootstrap": "<2.4", "nette/nette": "<2.2" }, "require-dev": { - "nette/tester": "^1.6" + "nette/tester": "~2.0", + "tracy/tracy": "^2.3" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.4-dev" + } + }, "autoload": { "classmap": [ "src/" @@ -1830,33 +1981,39 @@ ], "description": "Nette Dependency Injection Component", "homepage": "https://nette.org", - "time": "2016-07-06 13:10:47" + "time": "2016-12-23T10:26:44+00:00" }, { "name": "nette/finder", - "version": "v2.3.2", + "version": "v2.4.0", "source": { "type": "git", "url": "https://github.com/nette/finder.git", - "reference": "ea8e796b42d542bd90e76f5b2a41c2c86a008256" + "reference": "5cabd5fe89f9903715359a403b820c7f94f9bb5e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/finder/zipball/ea8e796b42d542bd90e76f5b2a41c2c86a008256", - "reference": "ea8e796b42d542bd90e76f5b2a41c2c86a008256", + "url": "https://api.github.com/repos/nette/finder/zipball/5cabd5fe89f9903715359a403b820c7f94f9bb5e", + "reference": "5cabd5fe89f9903715359a403b820c7f94f9bb5e", "shasum": "" }, "require": { - "nette/utils": "~2.2", - "php": ">=5.3.1" + "nette/utils": "~2.4", + "php": ">=5.6.0" }, "conflict": { "nette/nette": "<2.2" }, "require-dev": { - "nette/tester": "~1.4" + "nette/tester": "~2.0", + "tracy/tracy": "^2.3" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.4-dev" + } + }, "autoload": { "classmap": [ "src/" @@ -1880,38 +2037,43 @@ ], "description": "Nette Finder: Files Searching", "homepage": "https://nette.org", - "time": "2015-10-20 17:15:41" + "time": "2016-05-17T15:49:06+00:00" }, { "name": "nette/forms", - "version": "v2.3.10", + "version": "v2.4.3", "source": { "type": "git", "url": "https://github.com/nette/forms.git", - "reference": "22ab1e9794fabe225b980ee4c31f57ee5b7f74e2" + "reference": "c2618a144a7cd0a1f41143e18387d9c48cef91cb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/forms/zipball/22ab1e9794fabe225b980ee4c31f57ee5b7f74e2", - "reference": "22ab1e9794fabe225b980ee4c31f57ee5b7f74e2", + "url": "https://api.github.com/repos/nette/forms/zipball/c2618a144a7cd0a1f41143e18387d9c48cef91cb", + "reference": "c2618a144a7cd0a1f41143e18387d9c48cef91cb", "shasum": "" }, "require": { - "nette/component-model": "~2.2.0", + "nette/component-model": "~2.3", "nette/http": "~2.2", - "nette/utils": "~2.3.10", - "php": ">=5.3.1" + "nette/utils": "~2.4", + "php": ">=5.6.0" }, "conflict": { "nette/nette": "<2.2" }, "require-dev": { - "latte/latte": "~2.3.2", - "nette/di": "~2.3", - "nette/tester": "~1.3", - "tracy/tracy": "~2.2" + "latte/latte": "~2.4", + "nette/di": "~2.4", + "nette/tester": "~2.0", + "tracy/tracy": "^2.4" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.4-dev" + } + }, "autoload": { "classmap": [ "src/" @@ -1935,37 +2097,43 @@ ], "description": "Nette Forms: greatly facilitates web forms", "homepage": "https://nette.org", - "time": "2016-06-30 18:22:11" + "time": "2016-12-20T23:49:37+00:00" }, { "name": "nette/http", - "version": "v2.3.7", + "version": "v2.4.3", "source": { "type": "git", "url": "https://github.com/nette/http.git", - "reference": "b2f28f2437d53af8788ea80605a16501c86848e9" + "reference": "71602f2ab582312b5ae016a9f0b8df1a8a116f86" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/http/zipball/b2f28f2437d53af8788ea80605a16501c86848e9", - "reference": "b2f28f2437d53af8788ea80605a16501c86848e9", + "url": "https://api.github.com/repos/nette/http/zipball/71602f2ab582312b5ae016a9f0b8df1a8a116f86", + "reference": "71602f2ab582312b5ae016a9f0b8df1a8a116f86", "shasum": "" }, "require": { - "nette/utils": "~2.2, >=2.2.2", - "php": ">=5.3.1" + "nette/utils": "^2.4", + "php": ">=5.6.0" }, "conflict": { "nette/nette": "<2.2" }, "require-dev": { - "nette/di": "~2.3", - "nette/tester": "~1.4" + "nette/di": "^2.4", + "nette/tester": "~2.0", + "tracy/tracy": "^2.4" }, "suggest": { "ext-fileinfo": "to detect type of uploaded files" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.4-dev" + } + }, "autoload": { "classmap": [ "src/" @@ -1989,38 +2157,44 @@ ], "description": "Nette HTTP Component", "homepage": "https://nette.org", - "time": "2016-06-06 17:31:40" + "time": "2016-12-19T14:56:54+00:00" }, { "name": "nette/mail", - "version": "v2.3.5", + "version": "v2.4.1", "source": { "type": "git", "url": "https://github.com/nette/mail.git", - "reference": "44491710d30db970e731c3908c491d061a0e22df" + "reference": "135fac5b1d71cde9d0a0c9cad61a18d2704c3e47" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/mail/zipball/44491710d30db970e731c3908c491d061a0e22df", - "reference": "44491710d30db970e731c3908c491d061a0e22df", + "url": "https://api.github.com/repos/nette/mail/zipball/135fac5b1d71cde9d0a0c9cad61a18d2704c3e47", + "reference": "135fac5b1d71cde9d0a0c9cad61a18d2704c3e47", "shasum": "" }, "require": { "ext-iconv": "*", - "nette/utils": "~2.2", - "php": ">=5.3.1" + "nette/utils": "~2.4", + "php": ">=5.6.0" }, "conflict": { "nette/nette": "<2.2" }, "require-dev": { - "nette/di": "~2.3", - "nette/tester": "~1.3" + "nette/di": "~2.4", + "nette/tester": "~2.0", + "tracy/tracy": "^2.4" }, "suggest": { "ext-fileinfo": "to detect type of attached files" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.4-dev" + } + }, "autoload": { "classmap": [ "src/" @@ -2044,30 +2218,36 @@ ], "description": "Nette Mail: Sending E-mails", "homepage": "https://nette.org", - "time": "2016-04-10 12:50:29" + "time": "2016-07-31T12:06:47+00:00" }, { "name": "nette/neon", - "version": "v2.3.5", + "version": "v2.4.0", "source": { "type": "git", "url": "https://github.com/nette/neon.git", - "reference": "75699de201932e6de6b249824dc8c53d0f442cd5" + "reference": "c40c63f2afa4196844ac40d9d2a2cfb313f76906" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/neon/zipball/75699de201932e6de6b249824dc8c53d0f442cd5", - "reference": "75699de201932e6de6b249824dc8c53d0f442cd5", + "url": "https://api.github.com/repos/nette/neon/zipball/c40c63f2afa4196844ac40d9d2a2cfb313f76906", + "reference": "c40c63f2afa4196844ac40d9d2a2cfb313f76906", "shasum": "" }, "require": { "ext-iconv": "*", - "php": ">=5.3.1" + "php": ">=5.6.0" }, "require-dev": { - "nette/tester": "~1.4" + "nette/tester": "~2.0", + "tracy/tracy": "^2.3" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.4-dev" + } + }, "autoload": { "classmap": [ "src/" @@ -2091,46 +2271,51 @@ ], "description": "Nette NEON: parser & generator for Nette Object Notation", "homepage": "http://ne-on.org", - "time": "2016-05-17 17:14:44" + "time": "2016-06-25T13:59:48+00:00" }, { "name": "nette/nette", - "version": "v2.3.10", + "version": "v2.4.0", "source": { "type": "git", "url": "https://github.com/nette/nette.git", - "reference": "79d539fee7e927e5774492b0774044a0456cd50b" + "reference": "25381e4ec7902734e49924c1ffd07017830c5f31" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/nette/zipball/79d539fee7e927e5774492b0774044a0456cd50b", - "reference": "79d539fee7e927e5774492b0774044a0456cd50b", + "url": "https://api.github.com/repos/nette/nette/zipball/25381e4ec7902734e49924c1ffd07017830c5f31", + "reference": "25381e4ec7902734e49924c1ffd07017830c5f31", "shasum": "" }, "require": { - "latte/latte": "~2.3.11", - "nette/application": "~2.3.12", - "nette/bootstrap": "~2.3.4", - "nette/caching": "~2.3.5", - "nette/component-model": "~2.2.4", - "nette/database": "~2.3.8", - "nette/deprecated": "~2.3.2", - "nette/di": "~2.3.10", - "nette/finder": "~2.3.2", - "nette/forms": "~2.3.8", - "nette/http": "~2.3.6", - "nette/mail": "~2.3.5", - "nette/neon": "~2.3.4", - "nette/php-generator": "~2.3.5", - "nette/reflection": "~2.3.2", - "nette/robot-loader": "~2.3.1", - "nette/safe-stream": "~2.3.2", - "nette/security": "~2.3.1", - "nette/tokenizer": "~2.2.1", - "nette/utils": "~2.3.8", - "tracy/tracy": "~2.3.10" + "latte/latte": "^2.4", + "nette/application": "^2.4", + "nette/bootstrap": "^2.4", + "nette/caching": "^2.5", + "nette/component-model": "^2.3", + "nette/database": "^2.4", + "nette/deprecated": "^2.3", + "nette/di": "^2.4", + "nette/finder": "^2.4", + "nette/forms": "^2.4", + "nette/http": "^2.4", + "nette/mail": "^2.4", + "nette/neon": "^2.4", + "nette/php-generator": "^2.4", + "nette/reflection": "^2.4", + "nette/robot-loader": "^2.4", + "nette/safe-stream": "^2.3", + "nette/security": "^2.4", + "nette/tokenizer": "^2.2", + "nette/utils": "^2.4", + "tracy/tracy": "^2.4" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.4-dev" + } + }, "autoload": { "classmap": [ "Nette/" @@ -2163,33 +2348,39 @@ "mvc", "templating" ], - "time": "2016-04-13 18:47:10" + "time": "2016-05-03T15:59:52+00:00" }, { "name": "nette/php-generator", - "version": "v2.3.6", + "version": "v2.4.1", "source": { "type": "git", "url": "https://github.com/nette/php-generator.git", - "reference": "bbc8189aa54af093c908d98212e1c309b9170345" + "reference": "e9f4429f5ac526661634242198a1ff394fa5440a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/php-generator/zipball/bbc8189aa54af093c908d98212e1c309b9170345", - "reference": "bbc8189aa54af093c908d98212e1c309b9170345", + "url": "https://api.github.com/repos/nette/php-generator/zipball/e9f4429f5ac526661634242198a1ff394fa5440a", + "reference": "e9f4429f5ac526661634242198a1ff394fa5440a", "shasum": "" }, "require": { - "nette/utils": "~2.2", - "php": ">=5.3.1" + "nette/utils": "~2.4", + "php": ">=5.6.0" }, "conflict": { "nette/nette": "<2.2" }, "require-dev": { - "nette/tester": "~1.4" + "nette/tester": "~2.0", + "tracy/tracy": "^2.3" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.4-dev" + } + }, "autoload": { "classmap": [ "src/" @@ -2213,36 +2404,42 @@ ], "description": "Nette PHP Generator", "homepage": "https://nette.org", - "time": "2016-06-17 16:33:17" + "time": "2016-07-31T13:50:37+00:00" }, { "name": "nette/reflection", - "version": "v2.3.2", + "version": "v2.4.0", "source": { "type": "git", "url": "https://github.com/nette/reflection.git", - "reference": "6c39adc4661f5f7b64be7ee161b8f67d8174da4d" + "reference": "1922f2502e5d2bf6be51859721855e8e72ebde96" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/reflection/zipball/6c39adc4661f5f7b64be7ee161b8f67d8174da4d", - "reference": "6c39adc4661f5f7b64be7ee161b8f67d8174da4d", + "url": "https://api.github.com/repos/nette/reflection/zipball/1922f2502e5d2bf6be51859721855e8e72ebde96", + "reference": "1922f2502e5d2bf6be51859721855e8e72ebde96", "shasum": "" }, "require": { "ext-tokenizer": "*", "nette/caching": "~2.2", - "nette/utils": "~2.2", - "php": ">=5.3.1" + "nette/utils": "~2.4", + "php": ">=5.6.0" }, "conflict": { "nette/nette": "<2.2" }, "require-dev": { "nette/di": "~2.3", - "nette/tester": "~1.4" + "nette/tester": "~2.0", + "tracy/tracy": "^2.3" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.4-dev" + } + }, "autoload": { "classmap": [ "src/" @@ -2266,35 +2463,42 @@ ], "description": "Nette PHP Reflection Component", "homepage": "https://nette.org", - "time": "2016-03-12 14:57:07" + "time": "2016-05-17T15:49:34+00:00" }, { "name": "nette/robot-loader", - "version": "v2.3.2", + "version": "v2.4.2", "source": { "type": "git", "url": "https://github.com/nette/robot-loader.git", - "reference": "0dbed866df47fd0425ce9a3cc9085779d8ada143" + "reference": "f23f8885624b249d5ec7bb525b9d6b007ab00293" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/robot-loader/zipball/0dbed866df47fd0425ce9a3cc9085779d8ada143", - "reference": "0dbed866df47fd0425ce9a3cc9085779d8ada143", + "url": "https://api.github.com/repos/nette/robot-loader/zipball/f23f8885624b249d5ec7bb525b9d6b007ab00293", + "reference": "f23f8885624b249d5ec7bb525b9d6b007ab00293", "shasum": "" }, "require": { + "ext-tokenizer": "*", "nette/caching": "~2.2", "nette/finder": "~2.3", - "nette/utils": "~2.2", - "php": ">=5.3.1" + "nette/utils": "~2.4", + "php": ">=5.6.0" }, "conflict": { "nette/nette": "<2.2" }, "require-dev": { - "nette/tester": "~1.4" + "nette/tester": "~2.0", + "tracy/tracy": "^2.3" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.4-dev" + } + }, "autoload": { "classmap": [ "src/" @@ -2318,7 +2522,7 @@ ], "description": "Nette RobotLoader: comfortable autoloading", "homepage": "https://nette.org", - "time": "2016-05-17 15:36:50" + "time": "2017-01-02T17:15:22+00:00" }, { "name": "nette/safe-stream", @@ -2373,35 +2577,41 @@ ], "description": "Nette SafeStream: Atomic Operations", "homepage": "https://nette.org", - "time": "2016-03-19 13:06:04" + "time": "2016-03-19T13:06:04+00:00" }, { "name": "nette/security", - "version": "v2.3.2", + "version": "v2.4.1", "source": { "type": "git", "url": "https://github.com/nette/security.git", - "reference": "779254a5484a106344a81c8cb9ce2b8570e38f34" + "reference": "e547c81b36bae6cb5a6ba0c498314940f5d428ed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/security/zipball/779254a5484a106344a81c8cb9ce2b8570e38f34", - "reference": "779254a5484a106344a81c8cb9ce2b8570e38f34", + "url": "https://api.github.com/repos/nette/security/zipball/e547c81b36bae6cb5a6ba0c498314940f5d428ed", + "reference": "e547c81b36bae6cb5a6ba0c498314940f5d428ed", "shasum": "" }, "require": { - "nette/utils": "~2.2", - "php": ">=5.3.1" + "nette/utils": "~2.4", + "php": ">=5.6.0" }, "conflict": { "nette/nette": "<2.2" }, "require-dev": { - "nette/di": "~2.3", - "nette/http": "~2.3", - "nette/tester": "~1.4" + "nette/di": "~2.4", + "nette/http": "~2.4", + "nette/tester": "~2.0", + "tracy/tracy": "^2.4" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.4-dev" + } + }, "autoload": { "classmap": [ "src/" @@ -2425,7 +2635,7 @@ ], "description": "Nette Security: Access Control Component", "homepage": "https://nette.org", - "time": "2016-05-17 15:37:18" + "time": "2016-12-19T10:53:40+00:00" }, { "name": "nette/tokenizer", @@ -2475,38 +2685,46 @@ ], "description": "Nette Tokenizer", "homepage": "https://nette.org", - "time": "2016-04-21 13:06:32" + "time": "2016-04-21T13:06:32+00:00" }, { "name": "nette/utils", - "version": "v2.3.10", + "version": "v2.4.2", "source": { "type": "git", "url": "https://github.com/nette/utils.git", - "reference": "66ceba196e4535ca3bf8f835db50d7e02339fdb0" + "reference": "fd2e67c2ce28da409864507d8d124621780d036d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/66ceba196e4535ca3bf8f835db50d7e02339fdb0", - "reference": "66ceba196e4535ca3bf8f835db50d7e02339fdb0", + "url": "https://api.github.com/repos/nette/utils/zipball/fd2e67c2ce28da409864507d8d124621780d036d", + "reference": "fd2e67c2ce28da409864507d8d124621780d036d", "shasum": "" }, "require": { - "php": ">=5.3.1" + "php": ">=5.6.0" }, "conflict": { "nette/nette": "<2.2" }, "require-dev": { - "nette/tester": "~1.0" + "nette/tester": "~2.0", + "tracy/tracy": "^2.3" }, "suggest": { "ext-gd": "to use Image", "ext-iconv": "to use Strings::webalize() and toAscii()", "ext-intl": "for script transliteration in Strings::webalize() and toAscii()", - "ext-mbstring": "to use Strings::lower() etc..." + "ext-json": "to use Nette\\Utils\\Json", + "ext-mbstring": "to use Strings::lower() etc...", + "ext-xml": "to use Strings::length() etc. when mbstring is not available" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.4-dev" + } + }, "autoload": { "classmap": [ "src/" @@ -2530,7 +2748,7 @@ ], "description": "Nette Utility Classes", "homepage": "https://nette.org", - "time": "2016-06-17 13:28:41" + "time": "2016-12-19T22:01:55+00:00" }, { "name": "ocramius/proxy-manager", @@ -2593,40 +2811,90 @@ "proxy pattern", "service proxies" ], - "time": "2015-08-09 04:28:19" + "time": "2015-08-09T04:28:19+00:00" + }, + { + "name": "psr/log", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", + "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "Psr/Log/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "time": "2016-10-10T12:19:37+00:00" }, { "name": "symfony/console", - "version": "v3.1.3", + "version": "v3.2.1", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "f9e638e8149e9e41b570ff092f8007c477ef0ce5" + "reference": "d12aa9ca20f4db83ec58410978dab6afcb9d6aaa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/f9e638e8149e9e41b570ff092f8007c477ef0ce5", - "reference": "f9e638e8149e9e41b570ff092f8007c477ef0ce5", + "url": "https://api.github.com/repos/symfony/console/zipball/d12aa9ca20f4db83ec58410978dab6afcb9d6aaa", + "reference": "d12aa9ca20f4db83ec58410978dab6afcb9d6aaa", "shasum": "" }, "require": { "php": ">=5.5.9", + "symfony/debug": "~2.8|~3.0", "symfony/polyfill-mbstring": "~1.0" }, "require-dev": { "psr/log": "~1.0", "symfony/event-dispatcher": "~2.8|~3.0", + "symfony/filesystem": "~2.8|~3.0", "symfony/process": "~2.8|~3.0" }, "suggest": { "psr/log": "For using the console logger", "symfony/event-dispatcher": "", + "symfony/filesystem": "", "symfony/process": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1-dev" + "dev-master": "3.2-dev" } }, "autoload": { @@ -2653,20 +2921,77 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2016-07-26 08:04:17" + "time": "2016-12-11T14:34:22+00:00" + }, + { + "name": "symfony/debug", + "version": "v3.2.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/debug.git", + "reference": "9f923e68d524a3095c5a2ae5fc7220c7cbc12231" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/debug/zipball/9f923e68d524a3095c5a2ae5fc7220c7cbc12231", + "reference": "9f923e68d524a3095c5a2ae5fc7220c7cbc12231", + "shasum": "" + }, + "require": { + "php": ">=5.5.9", + "psr/log": "~1.0" + }, + "conflict": { + "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2" + }, + "require-dev": { + "symfony/class-loader": "~2.8|~3.0", + "symfony/http-kernel": "~2.8|~3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.2-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Debug\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Debug Component", + "homepage": "https://symfony.com", + "time": "2016-11-16T22:18:16+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.2.0", + "version": "v1.3.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "dff51f72b0706335131b00a7f49606168c582594" + "reference": "e79d363049d1c2128f133a2667e4f4190904f7f4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/dff51f72b0706335131b00a7f49606168c582594", - "reference": "dff51f72b0706335131b00a7f49606168c582594", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/e79d363049d1c2128f133a2667e4f4190904f7f4", + "reference": "e79d363049d1c2128f133a2667e4f4190904f7f4", "shasum": "" }, "require": { @@ -2678,7 +3003,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2-dev" + "dev-master": "1.3-dev" } }, "autoload": { @@ -2712,29 +3037,35 @@ "portable", "shim" ], - "time": "2016-05-18 14:26:46" + "time": "2016-11-14T01:06:16+00:00" }, { "name": "symfony/yaml", - "version": "v3.1.3", + "version": "v3.2.1", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "1819adf2066880c7967df7180f4f662b6f0567ac" + "reference": "a7095af4b97a0955f85c8989106c249fa649011f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/1819adf2066880c7967df7180f4f662b6f0567ac", - "reference": "1819adf2066880c7967df7180f4f662b6f0567ac", + "url": "https://api.github.com/repos/symfony/yaml/zipball/a7095af4b97a0955f85c8989106c249fa649011f", + "reference": "a7095af4b97a0955f85c8989106c249fa649011f", "shasum": "" }, "require": { "php": ">=5.5.9" }, + "require-dev": { + "symfony/console": "~2.8|~3.0" + }, + "suggest": { + "symfony/console": "For validating YAML files using the lint command" + }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1-dev" + "dev-master": "3.2-dev" } }, "autoload": { @@ -2761,30 +3092,37 @@ ], "description": "Symfony Yaml Component", "homepage": "https://symfony.com", - "time": "2016-07-17 14:02:08" + "time": "2016-12-10T10:07:06+00:00" }, { "name": "tracy/tracy", - "version": "v2.3.11", + "version": "v2.4.4", "source": { "type": "git", "url": "https://github.com/nette/tracy.git", - "reference": "152b7602115dd3a66f3190280951390097a15f65" + "reference": "c1ec73ea7661b79aa9fade863b75f8cad9f47bb5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/tracy/zipball/152b7602115dd3a66f3190280951390097a15f65", - "reference": "152b7602115dd3a66f3190280951390097a15f65", + "url": "https://api.github.com/repos/nette/tracy/zipball/c1ec73ea7661b79aa9fade863b75f8cad9f47bb5", + "reference": "c1ec73ea7661b79aa9fade863b75f8cad9f47bb5", "shasum": "" }, "require": { - "php": ">=5.3.1" + "ext-json": "*", + "ext-session": "*", + "php": ">=5.4.4" }, "require-dev": { "nette/di": "~2.3", - "nette/tester": "~1.3" + "nette/tester": "~2.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.4-dev" + } + }, "autoload": { "classmap": [ "src" @@ -2816,7 +3154,7 @@ "debugger", "nette" ], - "time": "2016-05-30 09:03:15" + "time": "2016-12-10T15:04:11+00:00" }, { "name": "zendframework/zend-code", @@ -2868,30 +3206,30 @@ "code", "zf2" ], - "time": "2016-04-20 17:26:42" + "time": "2016-04-20T17:26:42+00:00" }, { "name": "zendframework/zend-eventmanager", - "version": "3.0.1", + "version": "3.1.0", "source": { "type": "git", "url": "https://github.com/zendframework/zend-eventmanager.git", - "reference": "5c80bdee0e952be112dcec0968bad770082c3a6e" + "reference": "c3bce7b7d47c54040b9ae51bc55491c72513b75d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-eventmanager/zipball/5c80bdee0e952be112dcec0968bad770082c3a6e", - "reference": "5c80bdee0e952be112dcec0968bad770082c3a6e", + "url": "https://api.github.com/repos/zendframework/zend-eventmanager/zipball/c3bce7b7d47c54040b9ae51bc55491c72513b75d", + "reference": "c3bce7b7d47c54040b9ae51bc55491c72513b75d", "shasum": "" }, "require": { - "php": "^5.5 || ^7.0" + "php": "^5.6 || ^7.0" }, "require-dev": { "athletic/athletic": "^0.1", "container-interop/container-interop": "^1.1.0", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "^2.0", + "phpunit/phpunit": "^5.6", + "zendframework/zend-coding-standard": "~1.0.0", "zendframework/zend-stdlib": "^2.7.3 || ^3.0" }, "suggest": { @@ -2901,8 +3239,8 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev", - "dev-develop": "3.1-dev" + "dev-master": "3.1-dev", + "dev-develop": "3.2-dev" } }, "autoload": { @@ -2922,7 +3260,7 @@ "events", "zf2" ], - "time": "2016-02-18 20:53:00" + "time": "2016-12-19T21:47:12+00:00" } ], "packages-dev": [ @@ -2969,7 +3307,7 @@ "keywords": [ "test" ], - "time": "2015-05-11 14:41:42" + "time": "2015-05-11T14:41:42+00:00" }, { "name": "instante/php-test-suite", @@ -2977,12 +3315,12 @@ "source": { "type": "git", "url": "https://github.com/instante/php-test-suite.git", - "reference": "7e6cbabb08ab82aeacaa56a60e74c082d14342eb" + "reference": "4119b4e2a8a7cbf92cbd1070b4b407c1be004997" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/instante/php-test-suite/zipball/7e6cbabb08ab82aeacaa56a60e74c082d14342eb", - "reference": "7e6cbabb08ab82aeacaa56a60e74c082d14342eb", + "url": "https://api.github.com/repos/instante/php-test-suite/zipball/4119b4e2a8a7cbf92cbd1070b4b407c1be004997", + "reference": "4119b4e2a8a7cbf92cbd1070b4b407c1be004997", "shasum": "" }, "require": { @@ -3023,6 +3361,9 @@ }, "files": [ "src/shortcuts.php" + ], + "classmap": [ + "src/exceptions.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -3036,7 +3377,7 @@ "instante", "nette" ], - "time": "2016-07-29 17:21:47" + "time": "2016-10-25 14:45:18" }, { "name": "jakub-onderka/php-parallel-lint", @@ -3083,20 +3424,20 @@ ], "description": "This tool check syntax of PHP files about 20x faster than serial check.", "homepage": "https://github.com/JakubOnderka/PHP-Parallel-Lint", - "time": "2015-12-15 10:42:16" + "time": "2015-12-15T10:42:16+00:00" }, { "name": "mockery/mockery", - "version": "0.9.5", + "version": "0.9.7", "source": { "type": "git", "url": "https://github.com/padraic/mockery.git", - "reference": "4db079511a283e5aba1b3c2fb19037c645e70fc2" + "reference": "4de7969f4664da3cef1ccd83866c9f59378c3371" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/padraic/mockery/zipball/4db079511a283e5aba1b3c2fb19037c645e70fc2", - "reference": "4db079511a283e5aba1b3c2fb19037c645e70fc2", + "url": "https://api.github.com/repos/padraic/mockery/zipball/4de7969f4664da3cef1ccd83866c9f59378c3371", + "reference": "4de7969f4664da3cef1ccd83866c9f59378c3371", "shasum": "" }, "require": { @@ -3148,7 +3489,7 @@ "test double", "testing" ], - "time": "2016-05-22 21:52:33" + "time": "2016-12-19T14:50:55+00:00" }, { "name": "nette/tester", @@ -3156,12 +3497,12 @@ "source": { "type": "git", "url": "https://github.com/nette/tester.git", - "reference": "7d29c02f3216a1c4debe4c6475830b5884786922" + "reference": "fe52922154d93915b41caa017b1d9f3602a6a169" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/tester/zipball/7d29c02f3216a1c4debe4c6475830b5884786922", - "reference": "7d29c02f3216a1c4debe4c6475830b5884786922", + "url": "https://api.github.com/repos/nette/tester/zipball/fe52922154d93915b41caa017b1d9f3602a6a169", + "reference": "fe52922154d93915b41caa017b1d9f3602a6a169", "shasum": "" }, "require": { @@ -3204,12 +3545,13 @@ "testing", "unit" ], - "time": "2016-07-14 15:31:47" + "time": "2017-01-09 00:51:44" } ], "aliases": [], "minimum-stability": "stable", "stability-flags": { + "instante/bootstrap-3-renderer": 15, "nette/tester": 20, "instante/php-test-suite": 20 }, @@ -3218,5 +3560,8 @@ "platform": { "php": ">=5.5.0" }, - "platform-dev": [] + "platform-dev": [], + "platform-overrides": { + "php": "5.6" + } } diff --git a/migrations/Version20170106110825.php b/migrations/Version20170106110825.php new file mode 100644 index 0000000..9b7db19 --- /dev/null +++ b/migrations/Version20170106110825.php @@ -0,0 +1,50 @@ +abortIf($this->connection->getDatabasePlatform()->getName() != 'mysql', 'Migration can only be executed safely on \'mysql\'.'); + + $this->addSql('CREATE TABLE howdo_keyword (id INT AUTO_INCREMENT NOT NULL, document_id INT DEFAULT NULL, keyword VARCHAR(255) NOT NULL, INDEX IDX_C6745EE8C33F7837 (document_id), FULLTEXT INDEX IDX_C6745EE85A93713B (keyword), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB'); + $this->addSql('ALTER TABLE howdo_keyword ADD CONSTRAINT FK_C6745EE8C33F7837 FOREIGN KEY (document_id) REFERENCES howdo_document (id)'); + $this->addSql('DROP TABLE howdo_index'); + $this->addSql('ALTER TABLE howdo_document CHANGE title title VARCHAR(255) NOT NULL'); + $this->addSql('CREATE FULLTEXT INDEX IDX_C72FEE372B36786B ON howdo_document (title)'); + $this->addSql('CREATE FULLTEXT INDEX IDX_C72FEE37D8698A76 ON howdo_document (document)'); + $this->addSql('ALTER TABLE howdo_request ADD title VARCHAR(255) NOT NULL, DROP searched_query'); + $this->addSql('CREATE FULLTEXT INDEX IDX_A770A04C6DE44026 ON howdo_request (description)'); + $this->addSql('CREATE FULLTEXT INDEX IDX_A770A04C2B36786B ON howdo_request (title)'); + } + + /** + * @param Schema $schema + */ + public function down(Schema $schema) + { + // this down() migration is auto-generated, please modify it to your needs + $this->abortIf($this->connection->getDatabasePlatform()->getName() != 'mysql', 'Migration can only be executed safely on \'mysql\'.'); + + $this->addSql('CREATE TABLE howdo_index (id INT AUTO_INCREMENT NOT NULL, document_id INT DEFAULT NULL, key_phrase LONGTEXT NOT NULL COLLATE utf8_unicode_ci, INDEX IDX_A7688F03C33F7837 (document_id), FULLTEXT INDEX IDX_A7688F03A9720750 (key_phrase), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB'); + $this->addSql('ALTER TABLE howdo_index ADD CONSTRAINT FK_A7688F03C33F7837 FOREIGN KEY (document_id) REFERENCES howdo_document (id)'); + $this->addSql('DROP TABLE howdo_keyword'); + $this->addSql('DROP INDEX IDX_C72FEE372B36786B ON howdo_document'); + $this->addSql('DROP INDEX IDX_C72FEE37D8698A76 ON howdo_document'); + $this->addSql('ALTER TABLE howdo_document CHANGE title title LONGTEXT NOT NULL COLLATE utf8_unicode_ci'); + $this->addSql('DROP INDEX IDX_A770A04C6DE44026 ON howdo_request'); + $this->addSql('DROP INDEX IDX_A770A04C2B36786B ON howdo_request'); + $this->addSql('ALTER TABLE howdo_request ADD searched_query LONGTEXT NOT NULL COLLATE utf8_unicode_ci, DROP title'); + } +}