Remove in-project menu bundle and use composer #222

This commit is contained in:
Kendrick Chan 2019-06-08 15:23:24 +08:00
parent 7d59006e90
commit fa069218b2
9 changed files with 202 additions and 631 deletions

View file

@ -1,13 +0,0 @@
<?php
namespace Catalyst\MenuBundle\Annotation;
use Annotation;
/**
* @Annotation
*/
class Menu
{
public $selected;
}

View file

@ -1,10 +0,0 @@
<?php
namespace Catalyst\MenuBundle;
use Symfony\Component\HttpKernel\Bundle\Bundle;
class CatalystMenuBundle extends Bundle
{
}

View file

@ -1,76 +0,0 @@
<?php
namespace Catalyst\MenuBundle\Listener;
use Doctrine\Common\Annotations\Reader;
use ReflectionClass;
use ReflectionException;
use RuntimeException;
use Symfony\Component\HttpKernel\Event\FilterControllerEvent;
use Twig\Environment as TwigEnvironment;
use Catalyst\MenuBundle\Annotation\Menu as MenuAnnotation;
use Catalyst\MenuBundle\Menu\Generator as MenuGenerator;
class MenuAnnotationListener
{
protected $annot_reader;
protected $menu_gen;
protected $twig;
protected $menu_name;
public function __construct(Reader $annot_reader, MenuGenerator $menu_gen, TwigEnvironment $twig, $menu_name)
{
$this->annot_reader = $annot_reader;
$this->menu_gen = $menu_gen;
$this->twig = $twig;
$this->menu_name = $menu_name;
}
public function onKernelController(FilterControllerEvent $event)
{
if (!$event->isMasterRequest())
return;
// get controller
$event_controller = $event->getController();
if (!is_array($event_controller))
return;
list($controller, $method_name) = $event_controller;
// get reflection class
try
{
$ref_controller = new ReflectionClass($controller);
}
catch (ReflectionException $e)
{
throw new RuntimeException('Cannot read menu annotation.');
}
// get method annotations
$ref_method = $ref_controller->getMethod($method_name);
$annotation = $this->annot_reader->getMethodAnnotation($ref_method, MenuAnnotation::class);
// check if we get anything
if ($annotation == null)
return;
$this->selectMenu($annotation->selected);
}
protected function selectMenu($selected)
{
// get menu
$menu = $this->menu_gen->getMenu($this->menu_name);
// set menu selected
$sel = $menu['index']->get($selected);
if ($sel != null)
$sel->setSelected();
// create twig global variable
$this->twig->addGlobal($this->menu_name, $menu);
}
}

View file

@ -1,71 +0,0 @@
<?php
namespace Catalyst\MenuBundle\Menu;
use Iterator;
// iterable collection of menu items
class Collection implements Iterator
{
protected $position = 0;
protected $array;
protected $index_array;
public function __construct()
{
$this->position = 0;
$this->array = array();
$this->index_array = array();
}
// iterator stuff
public function rewind()
{
$this->position = 0;
}
public function current()
{
return $this->array[$this->index_array[$this->position]];
}
public function key()
{
return $this->position;
}
public function next()
{
return ++$this->position;
}
public function valid()
{
return isset($this->index_array[$this->position]);
}
// end of iterator stuff
public function add(Item $mi)
{
$id = $mi->getID();
$this->array[$id] = $mi;
$this->index_array[] = $id;
return $this;
}
public function get($id)
{
if (isset($this->array[$id]))
return $this->array[$id];
return null;
}
public function unselectAll()
{
foreach ($this->array as $mi)
$mi->setSelected(false, false);
return $this;
}
}

View file

@ -1,164 +0,0 @@
<?php
namespace Catalyst\MenuBundle\Menu;
use Symfony\Component\Routing\Exception\RouteNotFoundException;
use Symfony\Component\Yaml\Parser as YamlParser;
use Symfony\Component\Config\ConfigCache;
use Symfony\Component\Config\Resource\FileResource;
use Symfony\Component\Routing\RouterInterface;
class Generator
{
protected $index;
protected $menu;
protected $router;
protected $cache_dir;
protected $config_dir;
protected $config_file;
public function __construct(RouterInterface $router, string $cache_dir, string $config_dir, $config_file = 'menu.yaml')
{
$this->index = new Collection();
$this->menu = new Collection();
$this->router = $router;
$this->cache_dir = $cache_dir;
$this->config_dir = $config_dir;
$this->config_file = $config_file;
}
public function getMenu($menu_key)
{
// initialize
$menu_data = [
'menu' => [],
'index' => []
];
// cache config
$cache_file = $this->cache_dir . '/' . $this->config_file . '.' . $menu_key . '.serial';
$menu_cache = new ConfigCache($cache_file, true);
// cache not fresh
if (!$menu_cache->isFresh())
{
$files = [];
$resources = [];
try
{
// get location of menu config file
$path = $this->config_dir . '/' . $this->config_file;
$files[] = $path;
$resources[] = new FileResource($path);
// TODO: handle routes changes as well
// NOTE: need to figure out how to handle route changes or require
// a cache clear for every route change
// process bundle menu
$this->parseMenu($path, $menu_key);
}
catch (\InvalidArgumentException $e)
{
error_log($e->getMessage());
error_log($menu_key . ' menu not found.');
return $menu_data;
}
$menu_data = [
'menu' => $this->menu,
'index' => $this->index,
];
$menu_serial = serialize($menu_data);
$menu_cache->write($menu_serial, $resources);
}
else
{
$menu_serial = file_get_contents($cache_file);
$menu_data = unserialize($menu_serial);
$this->menu = $menu_data['menu'];
$this->index = $menu_data['index'];
}
return $menu_data;
}
protected function parseMenu($path, $menu_key)
{
$parser = new YamlParser();
$menu_config = $parser->parse(file_get_contents($path));
// check if we have menu items
if (!isset($menu_config[$menu_key]))
{
error_log('No ' . $menu_key . ' found for ' . $path);
return;
}
// go through each one
foreach ($menu_config[$menu_key] as $mi_data)
{
// check params
if (!isset($mi_data['icon']))
$mi_data['icon'] = null;
// instantiate
$mi = $this->newItem($mi_data['id'], $mi_data['label'], $mi_data['icon']);
// acl
if (isset($mi_data['acl']))
$mi->setACLKey($mi_data['acl']);
// check parent
if (isset($mi_data['parent']) && $mi_data['parent'] != null)
{
$parent = $this->index->get($mi_data['parent']);
if ($parent == null)
continue;
$parent->addChild($mi);
}
else
$this->menu->add($mi);
}
}
protected function newItem($id, $label, $icon = null)
{
$mi = new Item();
$mi->setID($id)
->setLabel($label);
try
{
$mi->setLink($this->router->generate($id));
}
catch (RouteNotFoundException $e)
{
// no route, set to #
$mi->setLink('#');
}
if ($icon != null)
$mi->setIcon($icon);
$this->index->add($mi);
return $mi;
}
public function generate()
{
$this->getAllBundleMenus();
return $this->menu;
}
public function getIndex()
{
return $this->index;
}
}

View file

@ -1,138 +0,0 @@
<?php
namespace Catalyst\MenuBundle\Menu;
class Item
{
protected $id;
protected $icon;
protected $link;
protected $label;
protected $children;
protected $selected;
protected $parent;
protected $acl_key;
public function __construct()
{
$this->id = '';
$this->icon = null;
$this->link = null;
$this->label = '';
$this->children = [];
$this->selected = false;
$this->parent = null;
$this->acl_key = null;
}
// setters
public function setID($id)
{
$this->id = $id;
return $this;
}
public function setIcon($icon)
{
$this->icon = $icon;
return $this;
}
public function setLink($link)
{
$this->link = $link;
return $this;
}
public function setLabel($label)
{
$this->label = $label;
return $this;
}
public function setParent(self $parent)
{
$this->parent = $parent;
return $this;
}
public function addChild(self $child)
{
$child->setParent($this);
// check if selected
if ($child->isSelected())
$this->setSelected();
$this->children[] = $child;
return $this;
}
public function setSelected($sel = true, $to_bubble = true)
{
if ($sel)
{
$this->selected = true;
// bubble up to parents
if ($this->parent != null && $to_bubble)
$this->parent->setSelected(true, true);
}
else
$this->selected = false;
return $this;
}
public function setACLKey($key)
{
$this->acl_key = $key;
return $this;
}
// getters
public function getID()
{
return $this->id;
}
public function getIcon()
{
return $this->icon;
}
public function getLink()
{
return $this->link;
}
public function getLabel()
{
return $this->label;
}
public function getChildren()
{
return $this->children;
}
public function hasChildren()
{
if (count($this->children) > 0)
return true;
return false;
}
public function isSelected()
{
return $this->selected;
}
public function getParent()
{
return $this->parent;
}
public function getACLKey()
{
return $this->acl_key;
}
}

View file

@ -2,12 +2,14 @@
"type": "project",
"license": "proprietary",
"repositories": [
{ "type": "vcs", "url": "https://gitlab.com/jankstudio-catalyst/catalyst-auth.git" }
{ "type": "vcs", "url": "git@gitlab.com:jankstudio-catalyst/auth-bundle.git" },
{ "type": "vcs", "url": "git@gitlab.com:jankstudio-catalyst/menu-bundle.git" }
],
"require": {
"php": "^7.1.3",
"ext-iconv": "*",
"catalyst/auth-bundle": "dev-master",
"catalyst/menu-bundle": "dev-master",
"creof/doctrine2-spatial": "^1.2",
"data-dog/audit-bundle": "^0.1.10",
"guzzlehttp/guzzle": "^6.3",
@ -41,7 +43,6 @@
"autoload": {
"psr-4": {
"App\\": "src/",
"Catalyst\\MenuBundle\\": "catalyst/menu-bundle/",
"Catalyst\\APIBundle\\": "catalyst/api-bundle/"
}
},

353
composer.lock generated
View file

@ -4,20 +4,20 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
"content-hash": "b5e6f0fd50491b8275ea11d3668b26aa",
"content-hash": "60a481bcfc7c5465c831c26c20d2d7f6",
"packages": [
{
"name": "catalyst/auth-bundle",
"version": "dev-master",
"source": {
"type": "git",
"url": "https://gitlab.com/jankstudio-catalyst/catalyst-auth.git",
"reference": "ee09abd3edd506f14dd073130c3ec2ad9047caae"
"url": "https://gitlab.com/jankstudio-catalyst/auth-bundle.git",
"reference": "156cf4d31aeb3de5e4f948b7dd608ac5545d1fc2"
},
"dist": {
"type": "zip",
"url": "https://gitlab.com/api/v4/projects/jankstudio-catalyst%2Fcatalyst-auth/repository/archive.zip?sha=ee09abd3edd506f14dd073130c3ec2ad9047caae",
"reference": "ee09abd3edd506f14dd073130c3ec2ad9047caae",
"url": "https://gitlab.com/api/v4/projects/jankstudio-catalyst%2Fauth-bundle/repository/archive.zip?sha=156cf4d31aeb3de5e4f948b7dd608ac5545d1fc2",
"reference": "156cf4d31aeb3de5e4f948b7dd608ac5545d1fc2",
"shasum": ""
},
"require": {
@ -41,7 +41,44 @@
"email": "kc@jankstudio.com"
}
],
"time": "2019-06-05T15:46:15+00:00"
"time": "2019-06-05T16:44:31+00:00"
},
{
"name": "catalyst/menu-bundle",
"version": "dev-master",
"source": {
"type": "git",
"url": "https://gitlab.com/jankstudio-catalyst/menu-bundle.git",
"reference": "f2c9131b0e810f32d769febb7a39b01d4018a526"
},
"dist": {
"type": "zip",
"url": "https://gitlab.com/api/v4/projects/jankstudio-catalyst%2Fmenu-bundle/repository/archive.zip?sha=f2c9131b0e810f32d769febb7a39b01d4018a526",
"reference": "f2c9131b0e810f32d769febb7a39b01d4018a526",
"shasum": ""
},
"require": {
"doctrine/dbal": "^2.5.12",
"doctrine/doctrine-cache-bundle": "~1.2",
"php": "^7.0",
"symfony/framework-bundle": "~4.0"
},
"type": "symfony-bundle",
"autoload": {
"psr-4": {
"Catalyst\\MenuBundle\\": ""
}
},
"license": [
"MIT"
],
"authors": [
{
"name": "Kendrick Chan",
"email": "kc@jankstudio.com"
}
],
"time": "2019-06-08T07:13:56+00:00"
},
{
"name": "creof/doctrine2-spatial",
@ -1202,20 +1239,20 @@
},
{
"name": "doctrine/migrations",
"version": "v2.0.2",
"version": "v2.1.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/migrations.git",
"reference": "43280c14b696a7896a9c70a5e0e4a312ff003187"
"reference": "ebe6f891a4c61574f77fc4a06d913d29236b8466"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/migrations/zipball/43280c14b696a7896a9c70a5e0e4a312ff003187",
"reference": "43280c14b696a7896a9c70a5e0e4a312ff003187",
"url": "https://api.github.com/repos/doctrine/migrations/zipball/ebe6f891a4c61574f77fc4a06d913d29236b8466",
"reference": "ebe6f891a4c61574f77fc4a06d913d29236b8466",
"shasum": ""
},
"require": {
"doctrine/dbal": "^2.6",
"doctrine/dbal": "^2.9",
"ocramius/package-versions": "^1.3",
"ocramius/proxy-manager": "^2.0.2",
"php": "^7.1",
@ -1223,7 +1260,7 @@
"symfony/stopwatch": "^3.4||^4.0"
},
"require-dev": {
"doctrine/coding-standard": "^5.0",
"doctrine/coding-standard": "^6.0",
"doctrine/orm": "^2.6",
"ext-pdo_sqlite": "*",
"jdorn/sql-formatter": "^1.1",
@ -1246,7 +1283,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.0.x-dev"
"dev-master": "2.1.x-dev"
}
},
"autoload": {
@ -1280,7 +1317,7 @@
"migrations",
"php"
],
"time": "2019-04-25T22:14:55+00:00"
"time": "2019-06-06T15:47:41+00:00"
},
{
"name": "doctrine/orm",
@ -2321,16 +2358,16 @@
},
{
"name": "symfony/cache",
"version": "v4.3.0",
"version": "v4.3.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/cache.git",
"reference": "f09463d1165396745fef0aae64b7a784c891be9f"
"reference": "2edc417da273bafee589a8758f0278416d04af38"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/cache/zipball/f09463d1165396745fef0aae64b7a784c891be9f",
"reference": "f09463d1165396745fef0aae64b7a784c891be9f",
"url": "https://api.github.com/repos/symfony/cache/zipball/2edc417da273bafee589a8758f0278416d04af38",
"reference": "2edc417da273bafee589a8758f0278416d04af38",
"shasum": ""
},
"require": {
@ -2395,7 +2432,7 @@
"caching",
"psr6"
],
"time": "2019-05-27T08:16:38+00:00"
"time": "2019-06-06T10:05:02+00:00"
},
{
"name": "symfony/cache-contracts",
@ -2457,16 +2494,16 @@
},
{
"name": "symfony/config",
"version": "v4.3.0",
"version": "v4.3.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/config.git",
"reference": "5455fc0ae8b46269b83a22949429ea878496408c"
"reference": "6379ee07398643e09e6ed1e87d9c62dfcad7f4eb"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/config/zipball/5455fc0ae8b46269b83a22949429ea878496408c",
"reference": "5455fc0ae8b46269b83a22949429ea878496408c",
"url": "https://api.github.com/repos/symfony/config/zipball/6379ee07398643e09e6ed1e87d9c62dfcad7f4eb",
"reference": "6379ee07398643e09e6ed1e87d9c62dfcad7f4eb",
"shasum": ""
},
"require": {
@ -2517,20 +2554,20 @@
],
"description": "Symfony Config Component",
"homepage": "https://symfony.com",
"time": "2019-05-20T16:16:12+00:00"
"time": "2019-05-30T16:10:05+00:00"
},
{
"name": "symfony/console",
"version": "v4.3.0",
"version": "v4.3.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
"reference": "707b619d2c3bedf0224d56f95f77dabc60102305"
"reference": "d50bbeeb0e17e6dd4124ea391eff235e932cbf64"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/console/zipball/707b619d2c3bedf0224d56f95f77dabc60102305",
"reference": "707b619d2c3bedf0224d56f95f77dabc60102305",
"url": "https://api.github.com/repos/symfony/console/zipball/d50bbeeb0e17e6dd4124ea391eff235e932cbf64",
"reference": "d50bbeeb0e17e6dd4124ea391eff235e932cbf64",
"shasum": ""
},
"require": {
@ -2592,20 +2629,20 @@
],
"description": "Symfony Console Component",
"homepage": "https://symfony.com",
"time": "2019-05-27T08:16:38+00:00"
"time": "2019-06-05T13:25:51+00:00"
},
{
"name": "symfony/debug",
"version": "v4.3.0",
"version": "v4.3.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/debug.git",
"reference": "97cde06d798f1326857090bc1b7c8f9d225c3dcb"
"reference": "4e025104f1f9adb1f7a2d14fb102c9986d6e97c6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/debug/zipball/97cde06d798f1326857090bc1b7c8f9d225c3dcb",
"reference": "97cde06d798f1326857090bc1b7c8f9d225c3dcb",
"url": "https://api.github.com/repos/symfony/debug/zipball/4e025104f1f9adb1f7a2d14fb102c9986d6e97c6",
"reference": "4e025104f1f9adb1f7a2d14fb102c9986d6e97c6",
"shasum": ""
},
"require": {
@ -2648,20 +2685,20 @@
],
"description": "Symfony Debug Component",
"homepage": "https://symfony.com",
"time": "2019-05-20T16:16:12+00:00"
"time": "2019-05-30T16:10:05+00:00"
},
{
"name": "symfony/dependency-injection",
"version": "v4.3.0",
"version": "v4.3.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/dependency-injection.git",
"reference": "aa6fe799fa5adc938fc55aeccd2f5fb0aa0b8eac"
"reference": "fea7f73e278ee0337349a5a68b867fc656bb33f3"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/dependency-injection/zipball/aa6fe799fa5adc938fc55aeccd2f5fb0aa0b8eac",
"reference": "aa6fe799fa5adc938fc55aeccd2f5fb0aa0b8eac",
"url": "https://api.github.com/repos/symfony/dependency-injection/zipball/fea7f73e278ee0337349a5a68b867fc656bb33f3",
"reference": "fea7f73e278ee0337349a5a68b867fc656bb33f3",
"shasum": ""
},
"require": {
@ -2721,20 +2758,20 @@
],
"description": "Symfony DependencyInjection Component",
"homepage": "https://symfony.com",
"time": "2019-05-28T07:50:59+00:00"
"time": "2019-05-30T16:10:05+00:00"
},
{
"name": "symfony/doctrine-bridge",
"version": "v4.3.0",
"version": "v4.3.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/doctrine-bridge.git",
"reference": "5803336d65b4c7de8185d8947e843810ec61012d"
"reference": "b0cda757096cef5b73415fd1b685cc916a76838b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/5803336d65b4c7de8185d8947e843810ec61012d",
"reference": "5803336d65b4c7de8185d8947e843810ec61012d",
"url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/b0cda757096cef5b73415fd1b685cc916a76838b",
"reference": "b0cda757096cef5b73415fd1b685cc916a76838b",
"shasum": ""
},
"require": {
@ -2811,20 +2848,20 @@
],
"description": "Symfony Doctrine Bridge",
"homepage": "https://symfony.com",
"time": "2019-05-28T11:49:01+00:00"
"time": "2019-06-06T07:45:42+00:00"
},
{
"name": "symfony/event-dispatcher",
"version": "v4.3.0",
"version": "v4.3.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher.git",
"reference": "c71314cd3b9420b732e1526f33a24eff5430b5b3"
"reference": "4e6c670af81c4fb0b6c08b035530a9915d0b691f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/c71314cd3b9420b732e1526f33a24eff5430b5b3",
"reference": "c71314cd3b9420b732e1526f33a24eff5430b5b3",
"url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/4e6c670af81c4fb0b6c08b035530a9915d0b691f",
"reference": "4e6c670af81c4fb0b6c08b035530a9915d0b691f",
"shasum": ""
},
"require": {
@ -2881,7 +2918,7 @@
],
"description": "Symfony EventDispatcher Component",
"homepage": "https://symfony.com",
"time": "2019-05-28T07:50:59+00:00"
"time": "2019-05-30T16:10:05+00:00"
},
{
"name": "symfony/event-dispatcher-contracts",
@ -2943,16 +2980,16 @@
},
{
"name": "symfony/filesystem",
"version": "v4.3.0",
"version": "v4.3.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/filesystem.git",
"reference": "988ab7d70c267c34efa85772ca20de3fad11c74b"
"reference": "bf2af40d738dec5e433faea7b00daa4431d0a4cf"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/filesystem/zipball/988ab7d70c267c34efa85772ca20de3fad11c74b",
"reference": "988ab7d70c267c34efa85772ca20de3fad11c74b",
"url": "https://api.github.com/repos/symfony/filesystem/zipball/bf2af40d738dec5e433faea7b00daa4431d0a4cf",
"reference": "bf2af40d738dec5e433faea7b00daa4431d0a4cf",
"shasum": ""
},
"require": {
@ -2989,11 +3026,11 @@
],
"description": "Symfony Filesystem Component",
"homepage": "https://symfony.com",
"time": "2019-05-24T12:50:04+00:00"
"time": "2019-06-03T20:27:40+00:00"
},
{
"name": "symfony/finder",
"version": "v4.3.0",
"version": "v4.3.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/finder.git",
@ -3042,16 +3079,16 @@
},
{
"name": "symfony/flex",
"version": "v1.2.5",
"version": "v1.2.6",
"source": {
"type": "git",
"url": "https://github.com/symfony/flex.git",
"reference": "27909122a3da4676c3dc5dc34c8f82323c610d69"
"reference": "5ed49091eb73f912dd23dab92bf07c0180cfb009"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/flex/zipball/27909122a3da4676c3dc5dc34c8f82323c610d69",
"reference": "27909122a3da4676c3dc5dc34c8f82323c610d69",
"url": "https://api.github.com/repos/symfony/flex/zipball/5ed49091eb73f912dd23dab92bf07c0180cfb009",
"reference": "5ed49091eb73f912dd23dab92bf07c0180cfb009",
"shasum": ""
},
"require": {
@ -3087,20 +3124,20 @@
}
],
"description": "Composer plugin for Symfony",
"time": "2019-05-07T08:10:46+00:00"
"time": "2019-06-05T14:26:30+00:00"
},
{
"name": "symfony/framework-bundle",
"version": "v4.3.0",
"version": "v4.3.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/framework-bundle.git",
"reference": "19714b45c7b5af238e66720017bae6fcf2d5fa01"
"reference": "fe407e6840d2b8f34c3fb67111e05c6d65319ef6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/framework-bundle/zipball/19714b45c7b5af238e66720017bae6fcf2d5fa01",
"reference": "19714b45c7b5af238e66720017bae6fcf2d5fa01",
"url": "https://api.github.com/repos/symfony/framework-bundle/zipball/fe407e6840d2b8f34c3fb67111e05c6d65319ef6",
"reference": "fe407e6840d2b8f34c3fb67111e05c6d65319ef6",
"shasum": ""
},
"require": {
@ -3209,20 +3246,20 @@
],
"description": "Symfony FrameworkBundle",
"homepage": "https://symfony.com",
"time": "2019-05-30T03:17:01+00:00"
"time": "2019-06-06T08:35:06+00:00"
},
{
"name": "symfony/http-foundation",
"version": "v4.3.0",
"version": "v4.3.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-foundation.git",
"reference": "e8da078912bed1339f046c3a9488a5cbd0605971"
"reference": "b7e4945dd9b277cd24e93566e4da0a87956392a9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/http-foundation/zipball/e8da078912bed1339f046c3a9488a5cbd0605971",
"reference": "e8da078912bed1339f046c3a9488a5cbd0605971",
"url": "https://api.github.com/repos/symfony/http-foundation/zipball/b7e4945dd9b277cd24e93566e4da0a87956392a9",
"reference": "b7e4945dd9b277cd24e93566e4da0a87956392a9",
"shasum": ""
},
"require": {
@ -3264,20 +3301,20 @@
],
"description": "Symfony HttpFoundation Component",
"homepage": "https://symfony.com",
"time": "2019-05-29T18:10:42+00:00"
"time": "2019-06-06T10:05:02+00:00"
},
{
"name": "symfony/http-kernel",
"version": "v4.3.0",
"version": "v4.3.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-kernel.git",
"reference": "b4ce396bdce518978a17324d3d39d61058d039e6"
"reference": "738ad561cd6a8d1c44ee1da941b2e628e264c429"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/b4ce396bdce518978a17324d3d39d61058d039e6",
"reference": "b4ce396bdce518978a17324d3d39d61058d039e6",
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/738ad561cd6a8d1c44ee1da941b2e628e264c429",
"reference": "738ad561cd6a8d1c44ee1da941b2e628e264c429",
"shasum": ""
},
"require": {
@ -3356,20 +3393,20 @@
],
"description": "Symfony HttpKernel Component",
"homepage": "https://symfony.com",
"time": "2019-05-30T06:21:08+00:00"
"time": "2019-06-06T13:23:34+00:00"
},
{
"name": "symfony/inflector",
"version": "v4.3.0",
"version": "v4.3.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/inflector.git",
"reference": "fc31c163077e75bb0b1055fe60a27f5c3cb9ae7c"
"reference": "889dc28cb6350ddb302fe9b8c796e4e6eb836856"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/inflector/zipball/fc31c163077e75bb0b1055fe60a27f5c3cb9ae7c",
"reference": "fc31c163077e75bb0b1055fe60a27f5c3cb9ae7c",
"url": "https://api.github.com/repos/symfony/inflector/zipball/889dc28cb6350ddb302fe9b8c796e4e6eb836856",
"reference": "889dc28cb6350ddb302fe9b8c796e4e6eb836856",
"shasum": ""
},
"require": {
@ -3414,7 +3451,7 @@
"symfony",
"words"
],
"time": "2019-04-01T13:53:46+00:00"
"time": "2019-05-30T09:28:08+00:00"
},
{
"name": "symfony/maker-bundle",
@ -3484,16 +3521,16 @@
},
{
"name": "symfony/mime",
"version": "v4.3.0",
"version": "v4.3.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/mime.git",
"reference": "0b166aee243364cd9de05755d2e9651876090abb"
"reference": "ec2c5565de60e03f33d4296a655e3273f0ad1f8b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/mime/zipball/0b166aee243364cd9de05755d2e9651876090abb",
"reference": "0b166aee243364cd9de05755d2e9651876090abb",
"url": "https://api.github.com/repos/symfony/mime/zipball/ec2c5565de60e03f33d4296a655e3273f0ad1f8b",
"reference": "ec2c5565de60e03f33d4296a655e3273f0ad1f8b",
"shasum": ""
},
"require": {
@ -3539,7 +3576,7 @@
"mime",
"mime-type"
],
"time": "2019-05-22T13:16:28+00:00"
"time": "2019-06-04T09:22:54+00:00"
},
{
"name": "symfony/orm-pack",
@ -3891,16 +3928,16 @@
},
{
"name": "symfony/property-access",
"version": "v4.3.0",
"version": "v4.3.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/property-access.git",
"reference": "a14764290356f3fd17b65d2e98babc19b85e2814"
"reference": "18ea48862a39e364927e71b9e4942af3c1a1cb8c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/property-access/zipball/a14764290356f3fd17b65d2e98babc19b85e2814",
"reference": "a14764290356f3fd17b65d2e98babc19b85e2814",
"url": "https://api.github.com/repos/symfony/property-access/zipball/18ea48862a39e364927e71b9e4942af3c1a1cb8c",
"reference": "18ea48862a39e364927e71b9e4942af3c1a1cb8c",
"shasum": ""
},
"require": {
@ -3954,20 +3991,20 @@
"property path",
"reflection"
],
"time": "2019-05-20T16:16:12+00:00"
"time": "2019-06-06T10:05:02+00:00"
},
{
"name": "symfony/routing",
"version": "v4.3.0",
"version": "v4.3.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/routing.git",
"reference": "e6cc85f03102ef5e4aedfe636f83e58cf6fd7338"
"reference": "9b31cd24f6ad2cebde6845f6daa9c6d69efe2465"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/routing/zipball/e6cc85f03102ef5e4aedfe636f83e58cf6fd7338",
"reference": "e6cc85f03102ef5e4aedfe636f83e58cf6fd7338",
"url": "https://api.github.com/repos/symfony/routing/zipball/9b31cd24f6ad2cebde6845f6daa9c6d69efe2465",
"reference": "9b31cd24f6ad2cebde6845f6daa9c6d69efe2465",
"shasum": ""
},
"require": {
@ -4030,20 +4067,20 @@
"uri",
"url"
],
"time": "2019-05-20T16:16:12+00:00"
"time": "2019-06-05T09:16:20+00:00"
},
{
"name": "symfony/security-bundle",
"version": "v4.3.0",
"version": "v4.3.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/security-bundle.git",
"reference": "cb5ea7c36f0ee17ddd003dc3477d626281731115"
"reference": "ce3826058a4b1b892bb3b60e6f5019b44b079ddd"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/security-bundle/zipball/cb5ea7c36f0ee17ddd003dc3477d626281731115",
"reference": "cb5ea7c36f0ee17ddd003dc3477d626281731115",
"url": "https://api.github.com/repos/symfony/security-bundle/zipball/ce3826058a4b1b892bb3b60e6f5019b44b079ddd",
"reference": "ce3826058a4b1b892bb3b60e6f5019b44b079ddd",
"shasum": ""
},
"require": {
@ -4114,20 +4151,20 @@
],
"description": "Symfony SecurityBundle",
"homepage": "https://symfony.com",
"time": "2019-04-18T16:59:05+00:00"
"time": "2019-05-30T16:10:05+00:00"
},
{
"name": "symfony/security-core",
"version": "v4.3.0",
"version": "v4.3.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/security-core.git",
"reference": "b69e4898a4a2f950e24672836c9ecd40ca4883bb"
"reference": "7c1fc94098ce58452d28af4006b6870f8839d075"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/security-core/zipball/b69e4898a4a2f950e24672836c9ecd40ca4883bb",
"reference": "b69e4898a4a2f950e24672836c9ecd40ca4883bb",
"url": "https://api.github.com/repos/symfony/security-core/zipball/7c1fc94098ce58452d28af4006b6870f8839d075",
"reference": "7c1fc94098ce58452d28af4006b6870f8839d075",
"shasum": ""
},
"require": {
@ -4186,20 +4223,20 @@
],
"description": "Symfony Security Component - Core Library",
"homepage": "https://symfony.com",
"time": "2019-05-27T08:16:38+00:00"
"time": "2019-06-03T20:27:40+00:00"
},
{
"name": "symfony/security-csrf",
"version": "v4.3.0",
"version": "v4.3.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/security-csrf.git",
"reference": "2ec1a4047302de6d0c4fb2cc377e578f530097c7"
"reference": "e7e3509ef7de66ea4970c75f9a0a72bf132d452e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/security-csrf/zipball/2ec1a4047302de6d0c4fb2cc377e578f530097c7",
"reference": "2ec1a4047302de6d0c4fb2cc377e578f530097c7",
"url": "https://api.github.com/repos/symfony/security-csrf/zipball/e7e3509ef7de66ea4970c75f9a0a72bf132d452e",
"reference": "e7e3509ef7de66ea4970c75f9a0a72bf132d452e",
"shasum": ""
},
"require": {
@ -4245,20 +4282,20 @@
],
"description": "Symfony Security Component - CSRF Library",
"homepage": "https://symfony.com",
"time": "2019-01-16T21:53:39+00:00"
"time": "2019-05-30T16:10:05+00:00"
},
{
"name": "symfony/security-guard",
"version": "v4.3.0",
"version": "v4.3.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/security-guard.git",
"reference": "33621882e935a2b7fa558311ffe9a4f6b1b7ee9f"
"reference": "2177390e39f49e5ae0ac5765982fa32a4aeb536f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/security-guard/zipball/33621882e935a2b7fa558311ffe9a4f6b1b7ee9f",
"reference": "33621882e935a2b7fa558311ffe9a4f6b1b7ee9f",
"url": "https://api.github.com/repos/symfony/security-guard/zipball/2177390e39f49e5ae0ac5765982fa32a4aeb536f",
"reference": "2177390e39f49e5ae0ac5765982fa32a4aeb536f",
"shasum": ""
},
"require": {
@ -4299,20 +4336,20 @@
],
"description": "Symfony Security Component - Guard",
"homepage": "https://symfony.com",
"time": "2019-04-07T18:20:37+00:00"
"time": "2019-05-30T16:10:05+00:00"
},
{
"name": "symfony/security-http",
"version": "v4.3.0",
"version": "v4.3.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/security-http.git",
"reference": "13594beb3faaeea891aaae9eeea8ffde16a99faf"
"reference": "8e8d92dc843be9855d6c1b1dbbe95d0477d1dfc6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/security-http/zipball/13594beb3faaeea891aaae9eeea8ffde16a99faf",
"reference": "13594beb3faaeea891aaae9eeea8ffde16a99faf",
"url": "https://api.github.com/repos/symfony/security-http/zipball/8e8d92dc843be9855d6c1b1dbbe95d0477d1dfc6",
"reference": "8e8d92dc843be9855d6c1b1dbbe95d0477d1dfc6",
"shasum": ""
},
"require": {
@ -4364,7 +4401,7 @@
],
"description": "Symfony Security Component - HTTP Integration",
"homepage": "https://symfony.com",
"time": "2019-05-26T20:47:49+00:00"
"time": "2019-06-05T13:25:51+00:00"
},
{
"name": "symfony/service-contracts",
@ -4426,7 +4463,7 @@
},
{
"name": "symfony/stopwatch",
"version": "v4.3.0",
"version": "v4.3.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/stopwatch.git",
@ -4533,16 +4570,16 @@
},
{
"name": "symfony/twig-bridge",
"version": "v4.3.0",
"version": "v4.3.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/twig-bridge.git",
"reference": "5ed4b37b36e37baeb36028e2e27725c571853444"
"reference": "52aa76480b775be0f6465b90ca9e3c2dccc8f3cd"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/twig-bridge/zipball/5ed4b37b36e37baeb36028e2e27725c571853444",
"reference": "5ed4b37b36e37baeb36028e2e27725c571853444",
"url": "https://api.github.com/repos/symfony/twig-bridge/zipball/52aa76480b775be0f6465b90ca9e3c2dccc8f3cd",
"reference": "52aa76480b775be0f6465b90ca9e3c2dccc8f3cd",
"shasum": ""
},
"require": {
@ -4627,20 +4664,20 @@
],
"description": "Symfony Twig Bridge",
"homepage": "https://symfony.com",
"time": "2019-05-28T09:03:44+00:00"
"time": "2019-06-01T07:11:44+00:00"
},
{
"name": "symfony/twig-bundle",
"version": "v4.3.0",
"version": "v4.3.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/twig-bundle.git",
"reference": "2792936cbcd92267596363b67b5cebb5e347af59"
"reference": "b8e1c193a474b97b608de74fe0a01214678bfd89"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/twig-bundle/zipball/2792936cbcd92267596363b67b5cebb5e347af59",
"reference": "2792936cbcd92267596363b67b5cebb5e347af59",
"url": "https://api.github.com/repos/symfony/twig-bundle/zipball/b8e1c193a474b97b608de74fe0a01214678bfd89",
"reference": "b8e1c193a474b97b608de74fe0a01214678bfd89",
"shasum": ""
},
"require": {
@ -4703,20 +4740,20 @@
],
"description": "Symfony TwigBundle",
"homepage": "https://symfony.com",
"time": "2019-05-10T08:01:19+00:00"
"time": "2019-05-30T16:10:05+00:00"
},
{
"name": "symfony/validator",
"version": "v4.3.0",
"version": "v4.3.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/validator.git",
"reference": "6ad0600c5a4bb673a627533f88b77b2af43e71b7"
"reference": "ea74d2843fd8a9f2d4800136c985d13da586a405"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/validator/zipball/6ad0600c5a4bb673a627533f88b77b2af43e71b7",
"reference": "6ad0600c5a4bb673a627533f88b77b2af43e71b7",
"url": "https://api.github.com/repos/symfony/validator/zipball/ea74d2843fd8a9f2d4800136c985d13da586a405",
"reference": "ea74d2843fd8a9f2d4800136c985d13da586a405",
"shasum": ""
},
"require": {
@ -4795,20 +4832,20 @@
],
"description": "Symfony Validator Component",
"homepage": "https://symfony.com",
"time": "2019-05-29T13:02:41+00:00"
"time": "2019-06-03T20:27:40+00:00"
},
{
"name": "symfony/var-dumper",
"version": "v4.3.0",
"version": "v4.3.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-dumper.git",
"reference": "2fd2ecf7913fb96f0c2e941ca15bb702184c6574"
"reference": "f974f448154928d2b5fb7c412bd23b81d063f34b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/var-dumper/zipball/2fd2ecf7913fb96f0c2e941ca15bb702184c6574",
"reference": "2fd2ecf7913fb96f0c2e941ca15bb702184c6574",
"url": "https://api.github.com/repos/symfony/var-dumper/zipball/f974f448154928d2b5fb7c412bd23b81d063f34b",
"reference": "f974f448154928d2b5fb7c412bd23b81d063f34b",
"shasum": ""
},
"require": {
@ -4871,11 +4908,11 @@
"debug",
"dump"
],
"time": "2019-05-01T12:55:49+00:00"
"time": "2019-06-05T02:08:12+00:00"
},
{
"name": "symfony/var-exporter",
"version": "v4.3.0",
"version": "v4.3.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-exporter.git",
@ -4935,16 +4972,16 @@
},
{
"name": "symfony/web-profiler-bundle",
"version": "v4.3.0",
"version": "v4.3.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/web-profiler-bundle.git",
"reference": "b371e362dada3c1fcd9e7f7a31a91bd681860331"
"reference": "ca3a3c8558bc641df7c8c2c546381ccd78d0777a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/b371e362dada3c1fcd9e7f7a31a91bd681860331",
"reference": "b371e362dada3c1fcd9e7f7a31a91bd681860331",
"url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/ca3a3c8558bc641df7c8c2c546381ccd78d0777a",
"reference": "ca3a3c8558bc641df7c8c2c546381ccd78d0777a",
"shasum": ""
},
"require": {
@ -4997,11 +5034,11 @@
],
"description": "Symfony WebProfilerBundle",
"homepage": "https://symfony.com",
"time": "2019-05-26T20:47:49+00:00"
"time": "2019-05-30T16:10:05+00:00"
},
{
"name": "symfony/yaml",
"version": "v4.3.0",
"version": "v4.3.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/yaml.git",
@ -5296,34 +5333,35 @@
},
{
"name": "doctrine/doctrine-fixtures-bundle",
"version": "3.1.0",
"version": "3.2.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/DoctrineFixturesBundle.git",
"reference": "f016565b251c2dfa32a8d6da44d1650dc9ec1498"
"reference": "13b2e8e1af099bc06f8611497fe079a4e0b4e497"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/f016565b251c2dfa32a8d6da44d1650dc9ec1498",
"reference": "f016565b251c2dfa32a8d6da44d1650dc9ec1498",
"url": "https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/13b2e8e1af099bc06f8611497fe079a4e0b4e497",
"reference": "13b2e8e1af099bc06f8611497fe079a4e0b4e497",
"shasum": ""
},
"require": {
"doctrine/data-fixtures": "^1.3",
"doctrine/doctrine-bundle": "^1.6",
"doctrine/orm": "^2.6.0",
"php": "^7.1",
"symfony/doctrine-bridge": "~3.4|^4.1",
"symfony/framework-bundle": "^3.4|^4.1"
},
"require-dev": {
"doctrine/coding-standard": "^5.0",
"doctrine/coding-standard": "^6.0",
"phpunit/phpunit": "^7.4",
"symfony/phpunit-bridge": "^4.1"
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-master": "3.1.x-dev"
"dev-master": "3.2.x-dev"
}
},
"autoload": {
@ -5355,11 +5393,11 @@
"Fixture",
"persistence"
],
"time": "2018-12-21T10:10:51+00:00"
"time": "2019-06-07T11:21:53+00:00"
},
{
"name": "symfony/dotenv",
"version": "v4.3.0",
"version": "v4.3.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/dotenv.git",
@ -5461,7 +5499,8 @@
"aliases": [],
"minimum-stability": "stable",
"stability-flags": {
"catalyst/auth-bundle": 20
"catalyst/auth-bundle": 20,
"catalyst/menu-bundle": 20
},
"prefer-stable": false,
"prefer-lowest": false,

View file

@ -2,6 +2,9 @@
"catalyst/auth-bundle": {
"version": "dev-master"
},
"catalyst/menu-bundle": {
"version": "dev-master"
},
"creof/doctrine2-spatial": {
"version": "1.2.0"
},