diff --git a/.env.example b/.env.example
new file mode 100644
index 0000000..dba0b6e
--- /dev/null
+++ b/.env.example
@@ -0,0 +1,37 @@
+APP_ENV=local
+APP_KEY=
+APP_DEBUG=true
+APP_LOG_LEVEL=debug
+APP_URL=http://localhost
+
+DB_CONNECTION=mysql
+DB_HOST=
+DB_PORT=
+DB_DATABASE=
+DB_USERNAME=
+DB_PASSWORD=
+
+BROADCAST_DRIVER=log
+CACHE_DRIVER=file
+SESSION_DRIVER=file
+QUEUE_DRIVER=sync
+
+REDIS_HOST=127.0.0.1
+REDIS_PASSWORD=null
+REDIS_PORT=6379
+
+MAIL_DRIVER=smtp
+MAIL_HOST=mailtrap.io
+MAIL_PORT=2525
+MAIL_USERNAME=null
+MAIL_PASSWORD=null
+MAIL_ENCRYPTION=null
+
+PUSHER_APP_ID=
+PUSHER_KEY=
+PUSHER_SECRET=
+
+KONTAKT_KEY=
+KONTAKT_VERSION=
+
+TEAM_CAPACITY=
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index 41dc809..30c4492 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,7 +5,8 @@ Homestead.yaml
Homestead.json
.env
public/uploads
+public/storage/images/*
+storage/app/files/findables/*
storage/framework/messages
-.env.example
.DS_Store
/.idea
\ No newline at end of file
diff --git a/README.md b/README.md
index 3ac4a39..4710fe9 100644
--- a/README.md
+++ b/README.md
@@ -20,6 +20,18 @@ The API (V1) documentation can be found [here](https://documenter.getpostman.com
Our good friends [Mustache](http://mustache.dk/) has created an iOS app using Beacon Bacon, and put it on GitHub. It's not a SDK, but it's a very good start. Find it [here](https://github.com/mustachedk/beacon-bacon-ios).
+## Findables custom plug-ins
+
+For people interested in integrating 3rd party services or rearranging data internally, Beacon Bacon comes with an extendable structure. When a user creates a Findable the user has the option of uploading a .php-file as well. This .php-file has to follow a very strict structure in order to function. However, if the core structure has been implemented, the possibilities are endless. The major structure rules are as follow:
+
+* The Namespace MUST be namespace BB\{YOURNAME}Plugin
+* The class HAS to {YOURNAME}Plugin
+* One public function called Findable()
+* The public function has to return an array or a json object
+* The rest is up to you.
+
+An example of such a file can be found in storage/app/files/findables/TestPlugin.php. Whenever **place/{{id}}/find** is called with a payload corresponding to the Identifier chosen when creating the Findable, the new functionality will be invoked.
+
## Security Vulnerabilities
If you discover a security vulnerability within Beacon Bacon, please send an e-mail to us at webmaster@nosuchagency.dk. All security vulnerabilities will be promptly addressed.
diff --git a/app/Block.php b/app/Block.php
index 3edec07..28e6efe 100644
--- a/app/Block.php
+++ b/app/Block.php
@@ -41,15 +41,23 @@ class Block extends Model
protected static $logAttributes = ['name', 'image'];
/**
- * Return full path to image.
+ * Return full virtual path to icon.
*
- * @param string $value
+ * @return string
+ */
+ public function getVirtualIconPath()
+ {
+ return !$this->image ? '' : url('/blocks/' . $this->id . '/image');
+ }
+
+ /**
+ * Return full physical path to icon.
*
* @return string
*/
- public function getImageAttribute($value)
+ public function getPhysicalIconPath()
{
- return !$value ? '' : asset('uploads/blocks/'.$this->id.'/'.$value);
+ return !$this->image ? '' : storage_path() . '/app/images/blocks/' . $this->id . '/' . $this->image;
}
diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php
index 5b532c1..1b2ccd8 100644
--- a/app/Exceptions/Handler.php
+++ b/app/Exceptions/Handler.php
@@ -113,15 +113,15 @@ protected function renderExceptionWithWhoops($request, Exception $e)
* Convert an authentication exception into an unauthenticated response.
*
* @param \Illuminate\Http\Request $request
- * @param \Illuminate\Auth\AuthenticationException $e
- * @return \Symfony\Component\HttpFoundation\Response
+ * @param \Illuminate\Auth\AuthenticationException $exception
+ * @return \Illuminate\Http\Response
*/
- protected function unauthenticated($request, AuthenticationException $e)
+ protected function unauthenticated($request, AuthenticationException $exception)
{
- if ($request->ajax() || $request->wantsJson()) {
- return response(['error' => 'Unauthorized.'], 401);
- } else {
- return redirect()->guest('login');
+ if ($request->expectsJson()) {
+ return response()->json(['error' => 'Unauthenticated.'], 401);
}
+
+ return redirect()->guest('login');
}
}
diff --git a/app/Findable.php b/app/Findable.php
index 4cb91de..902f184 100644
--- a/app/Findable.php
+++ b/app/Findable.php
@@ -17,7 +17,7 @@ class Findable extends Model
*
* @var array
*/
- protected $fillable = ['name', 'identifier', 'parameter_one_name', 'parameter_two_name', 'parameter_three_name', 'parameter_four_name', 'parameter_five_name'];
+ protected $fillable = ['name', 'identifier', 'parameter_one_name', 'parameter_two_name', 'parameter_three_name', 'parameter_four_name', 'parameter_five_name', 'custom_file', 'type'];
/**
* The attributes that should be mutated to dates.
diff --git a/app/Floor.php b/app/Floor.php
index 0264d53..3f26d99 100644
--- a/app/Floor.php
+++ b/app/Floor.php
@@ -67,9 +67,29 @@ public function locations()
*
* @return string
*/
- public function getImageAttribute($value)
+ public function getPublicImage()
{
- return !$value ? '' : asset('uploads/floors/'.$this->id.'/'.$value);
+ return !$this->image ? '' : asset('storage/images/floors/' . $this->id . '/' . $this->image);
+ }
+
+ /**
+ * Return full virtual path to icon.
+ *
+ * @return string
+ */
+ public function getVirtualIconPath()
+ {
+ return !$this->image ? '' : url('/floors/' . $this->id . '/image');
+ }
+
+ /**
+ * Return full physical path to icon.
+ *
+ * @return string
+ */
+ public function getPhysicalIconPath()
+ {
+ return !$this->image ? '' : storage_path() . '/app/images/floors/' . $this->id . '/' . $this->image;
}
/**
diff --git a/app/Http/Controllers/API/V1/BeaconController.php b/app/Http/Controllers/API/V1/BeaconController.php
index 6269657..80dcfd4 100644
--- a/app/Http/Controllers/API/V1/BeaconController.php
+++ b/app/Http/Controllers/API/V1/BeaconController.php
@@ -45,9 +45,9 @@ public function store(Request $request)
*/
public function show(Request $request, $id)
{
- $place = Beacon::findOrFail($id);
+ $beacon = Beacon::findOrFail($id);
- return $this->attachResources($request, $place);
+ return $this->attachResources($request, $beacon);
}
/**
@@ -61,13 +61,14 @@ public function show(Request $request, $id)
public function update(Request $request, $id)
{
$this->validate($request, [
- 'name' => 'max:255',
+ 'name' => 'required|max:255',
]);
- $model = Beacon::findOrFail($id);
- $model->update($request->all());
+ $beacon = Beacon::findOrFail($id);
+
+ $beacon->update($request->all());
- return $model;
+ return $beacon;
}
/**
@@ -79,7 +80,7 @@ public function update(Request $request, $id)
*/
public function destroy($id)
{
- Beacon::findOrFail($id)->delete();
+ $beacon = Beacon::findOrFail($id)->delete();
return response('', 204);
}
diff --git a/app/Http/Controllers/API/V1/FloorController.php b/app/Http/Controllers/API/V1/FloorController.php
index 590e08f..8c5e418 100644
--- a/app/Http/Controllers/API/V1/FloorController.php
+++ b/app/Http/Controllers/API/V1/FloorController.php
@@ -16,7 +16,18 @@ class FloorController extends Controller
*/
public function index(Request $request)
{
- return $this->filteredAndOrdered($request, new Floor())->paginate($this->pageSize);
+
+ $floors = $this->filteredAndOrdered($request, new Floor())->paginate($this->pageSize);
+
+ foreach ($floors->items() as $floor) {
+ if ($floor->image) {
+ $floor->image = $floor->getPublicImage();
+ } else {
+ $floor->image = null;
+ }
+ }
+
+ return $floors;
}
/**
@@ -46,9 +57,11 @@ public function store(Request $request)
*/
public function show(Request $request, $id)
{
- $place = Floor::findOrFail($id);
+ $floor = Floor::findOrFail($id);
+
+ $floor->image = $floor->getPublicImage();
- return $this->attachResources($request, $place);
+ return $this->attachResources($request, $floor);
}
/**
@@ -62,14 +75,15 @@ public function show(Request $request, $id)
public function update(Request $request, $id)
{
$this->validate($request, [
- 'name' => 'max:255',
- 'image' => 'image',
+ 'name' => 'required|max:255',
+ 'image' => 'required|image',
]);
- $model = Floor::findOrFail($id);
- $model->update($request->all());
+ $floor = Floor::findOrFail($id);
+
+ $floor->update($request->all());
- return $model;
+ return $floor;
}
/**
@@ -81,7 +95,7 @@ public function update(Request $request, $id)
*/
public function destroy($id)
{
- Floor::findOrFail($id)->delete();
+ $floor = Floor::findOrFail($id)->delete();
return response('', 204);
}
diff --git a/app/Http/Controllers/API/V1/LocationController.php b/app/Http/Controllers/API/V1/LocationController.php
index d0ef4c8..8eab3a3 100644
--- a/app/Http/Controllers/API/V1/LocationController.php
+++ b/app/Http/Controllers/API/V1/LocationController.php
@@ -45,9 +45,9 @@ public function store(Request $request)
*/
public function show(Request $request, $id)
{
- $place = Location::findOrFail($id);
+ $location = Location::findOrFail($id);
- return $this->attachResources($request, $place);
+ return $this->attachResources($request, $location);
}
/**
@@ -61,13 +61,14 @@ public function show(Request $request, $id)
public function update(Request $request, $id)
{
$this->validate($request, [
- 'name' => 'max:255',
+ 'name' => 'required|max:255',
]);
- $model = Location::findOrFail($id);
- $model->update($request->all());
+ $location = Location::findOrFail($id);
+
+ $location->update($request->all());
- return $model;
+ return $location;
}
/**
@@ -79,7 +80,7 @@ public function update(Request $request, $id)
*/
public function destroy($id)
{
- Location::findOrFail($id)->delete();
+ $location = Location::findOrFail($id)->delete();
return response('', 204);
}
diff --git a/app/Http/Controllers/API/V1/PlaceController.php b/app/Http/Controllers/API/V1/PlaceController.php
index a835fcc..9bc1783 100644
--- a/app/Http/Controllers/API/V1/PlaceController.php
+++ b/app/Http/Controllers/API/V1/PlaceController.php
@@ -21,8 +21,15 @@ class PlaceController extends Controller
*/
public function index(Request $request)
{
- $request->request->add(array('activated' => 1));
- return $this->filteredAndOrdered($request, new Place())->paginate($this->pageSize);
+ $request->request->add(['activated' => 1]);
+
+ $places = $this->filteredAndOrdered($request, new Place())->paginate($this->pageSize);
+
+ foreach($places as $place) {
+ $place->identifier = $place->identifier_one;
+ }
+
+ return $places;
}
/**
@@ -35,7 +42,7 @@ public function index(Request $request)
public function store(Request $request)
{
$this->validate($request, [
- 'name' => 'required|max:255',
+ 'name' => 'required|max:255',
]);
return response(Place::create($request->all()), 201);
@@ -45,57 +52,45 @@ public function store(Request $request)
* Return a findable Location
*
* @param Request $request
- * @param int $id
+ * @param int $id
*
* @return json
*/
public function find(Request $request, $id)
{
$response = new \stdClass();
- $identifier = $request->find_identifier;
-
- if ( empty( $identifier ) ) {
- $response->status = 'Not Found';
- $response->data = [];
-
- return response()->json( $response );
- }
-
- $findable = Findable::where( 'identifier', $identifier )->first();
-
- if ( empty( $findable ) ) {
- $response->status = 'Not Found';
- $response->data = [];
-
- return response()->json( $response );
- }
+ $identifier = $request->find_identifier;
- $place = Place::findOrFail($id);
+ if (empty($identifier)) {
+ $response->status = 'Not Found';
+ $response->data = [];
- if ( empty( $place ) ) {
- $response->status = 'Not Found';
- $response->data = [];
+ return response()->json($response);
+ }
+ $findable = Findable::where('identifier', $identifier)->first();
- return response()->json( $response );
- }
+ if (empty($findable)) {
+ $response->status = 'Not Found';
+ $response->data = [];
+ return response()->json($response);
+ }
+ $place = Place::findOrFail($id);
- return $this->{'findable' . $identifier}( $place, $findable, $request );
+ return $this->{'findable' . $identifier}($place, $findable, $request);
}
- private function findableIMS ( $place, $findable, Request $request ) {
-
+ private function findableIMS($place, $findable, Request $request)
+ {
$response = new \stdClass();
-
-
- if ( empty( $request->data['Faust'] ) ) {
- $response->status = 'Not Found';
- $response->data = [];
-
- return response()->json( $response );
+
+ if (empty($request->data['Faust'])) {
+ $response->status = 'Not Found';
+ $response->data = [];
+
+ return response()->json($response);
}
-
- $faust = $request->data['Faust'];
+ $faust = $request->data['Faust'];
SoapWrapper::add(function ($service) {
$service
->name('imssecurity')
@@ -103,90 +98,88 @@ private function findableIMS ( $place, $findable, Request $request ) {
->trace(true)
->cache(WSDL_CACHE_NONE);
});
-
$payload = [
'Username' => config('services.ims.username'),
'Password' => config('services.ims.password'),
'ClientInfo' => config('services.ims.client'),
];
-
- $ims_response = '';
+
+ $ims_response = '';
SoapWrapper::service('imssecurity', function ($service) use ($payload, &$ims_response) {
- $ims_response = $service->call('Login', [$payload]);
+ $ims_response = $service->call('Login', [$payload]);
});
+ $token = $ims_response->Token;
- $token = $ims_response->Token;
-
SoapWrapper::add(function ($service) {
$service
->name('imsquery')
->wsdl('https://ims.lyngsoesystems.com/kkb/ImsWs/soap/Query?wsdl')
->trace(true)
->cache(WSDL_CACHE_NONE);
- });
-
- $request = (object) $request->json()->all();
- $locations = Location::where( 'findable_id', $findable->id )->lists('parameter_one', 'id');
-
- $ims_locations = [];
- foreach( $locations as $id => $parameter_one ) {
- $ims_locations[$id] = $parameter_one;
- }
+ });
+
+ $request = (object)$request->json()->all();
+ $locations = Location::where('findable_id', $findable->id)->pluck('parameter_one', 'id');
+ $ims_locations = [];
+ foreach ($locations as $id => $parameter_one) {
+ $ims_locations[$id] = $parameter_one;
+ }
$payload = [
'Token' => $token,
'BibliographicRecordId' => $faust,
'IlsStatusKey' => 0,
'Excluded' => false,
];
-
- $ims_response = '';
+
+ $ims_response = '';
SoapWrapper::service('imsquery', function ($service) use ($payload, &$ims_response) {
- $ims_response = $service->call('FindItems', [$payload]);
+ $ims_response = $service->call('FindItems', [$payload]);
});
+ if (empty($ims_response->Items)) {
+ $response->status = 'Not Found';
+ $response->data = [];
- if ( empty( $ims_response->Items ) ) {
- $response->status = 'Not Found';
- $response->data = [];
-
- return response()->json( $response );
+ return response()->json($response);
}
-
$ims_found_location = 0;
- foreach( $ims_response->Items as $item ) {
- if ( ! empty( $item->ShortPlacementText ) && in_array( $item->ShortPlacementText, $ims_locations ) ) {
- $ims_found_location = array_search( $item->ShortPlacementText, $ims_locations );
- }
- }
-
- if ( empty( $ims_found_location ) ) {
- $response->status = 'Not Found';
- $response->data = [];
-
- return response()->json( $response );
+ foreach ($ims_response->Items as $item) {
+ if (!empty($item->PlacementInfo->ShortPlacementText) && in_array($item->PlacementInfo->ShortPlacementText, $ims_locations)) {
+ $ims_found_location = array_search($item->PlacementInfo->ShortPlacementText, $ims_locations);
+ }
+ }
+ if (empty($ims_found_location)) {
+ $response->status = 'Not Found';
+ $response->data = [];
+
+ return response()->json($response);
}
-
- $location = Location::findOrFail( $ims_found_location );
+
+ $location = Location::findOrFail($ims_found_location);
$response->status = 'Found';
$response->data = new \stdClass();
-
$response->data->floor = new \stdClass();
$response->data->floor->id = $location->floor_id;
$response->data->location = new \stdClass();
$response->data->location->id = $location->id;
- $response->data->location->posX = $location->posX;
- $response->data->location->posY = $location->posY;
- return response()->json( $response );
- }
+ if(!empty($location->area) && size_of(explode(',', $location->area)) > 0) {
+ $response->data->location->area = $location->area;
+ } else {
+ $response->data->location->posX = $location->posX;
+ $response->data->location->posY = $location->posY;
+ }
+
+ return response()->json($response);
+ }
/**
* Return a single item.
*
* @param Request $request
- * @param int $id
+ * @param int $id
*
* @return json
*/
@@ -194,39 +187,51 @@ public function show(Request $request, $id)
{
$place = Place::findOrFail($id);
- $place = $this->attachResources($request, $place);
- foreach( $place->floors as $floor ) {
- foreach( $floor->locations as $location ) {
- if ( $location->poi_id > 0 ) {
- $poi = Poi::findOrFail( $location->poi_id );
- $location->poi = $poi;
- } else {
- $location->poi = null;
- }
- }
- }
-
- return $place;
+ $place = $this->attachResources($request, $place);
+ $place->identifier = $place->identifier_one;
+ foreach ($place->floors as $floor) {
+
+ $floor->image = $floor->getPublicImage();
+
+ foreach ($floor->locations as $location) {
+ if ($location->poi_id > 0) {
+
+ $poi = Poi::find($location->poi_id);
+
+ if (!$poi) {
+ continue;
+ }
+
+ $poi->icon = $poi->getPublicImage();
+ $location->poi = $poi;
+ } else {
+ $location->poi = null;
+ }
+ }
+ }
+
+ return $place;
}
/**
* Update a single item.
*
* @param Request $request
- * @param int $id
+ * @param int $id
*
* @return json
*/
public function update(Request $request, $id)
{
$this->validate($request, [
- 'name' => 'max:255',
+ 'name' => 'required|max:255',
]);
- $model = Place::findOrFail($id);
- $model->update($request->all());
+ $place = Place::findOrFail($id);
+
+ $place->update($request->all());
- return $model;
+ return $place;
}
/**
@@ -238,7 +243,7 @@ public function update(Request $request, $id)
*/
public function destroy($id)
{
- Place::findOrFail($id)->delete();
+ $place = Place::findOrFail($id)->delete();
return response('', 204);
}
@@ -262,7 +267,15 @@ public function deleted()
*/
public function menu($id)
{
- return Menu::where('place_id', $id)->orderBy('order')->with('poi')->get();
+ $menus = Menu::where('place_id', $id)->orderBy('order')->with('poi')->get();
+
+ foreach($menus as $menu ) {
+ if($menu->poi) {
+ $menu->poi->icon = $menu->poi->getPublicImage();
+ }
+ }
+
+ return $menus;
}
}
diff --git a/app/Http/Controllers/API/V1/PoiController.php b/app/Http/Controllers/API/V1/PoiController.php
index 6baee7a..7e38f2b 100644
--- a/app/Http/Controllers/API/V1/PoiController.php
+++ b/app/Http/Controllers/API/V1/PoiController.php
@@ -16,7 +16,17 @@ class PoiController extends Controller
*/
public function index(Request $request)
{
- return $this->filteredAndOrdered($request, new Poi())->paginate($this->pageSize);
+ $pois = $this->filteredAndOrdered($request, new Poi())->paginate($this->pageSize);
+
+ foreach ($pois->items() as $poi) {
+ if ($poi->icon) {
+ $poi->icon = $poi->getPublicImage();
+ } else {
+ $poi->icon = null;
+ }
+ }
+
+ return $pois;
}
@@ -50,6 +60,8 @@ public function show(Request $request, $id)
{
$poi = Poi::findOrFail($id);
+ $poi->icon = $poi->getPublicImage();
+
return $this->attachResources($request, $poi);
}
@@ -64,15 +76,16 @@ public function show(Request $request, $id)
public function update(Request $request, $id)
{
$this->validate($request, [
- 'name' => 'max:255',
- 'internal_name' => 'max:255',
- 'icon' => 'image',
+ 'name' => 'required|max:255',
+ 'internal_name' => 'required|max:255',
+ 'icon' => 'required|image',
]);
- $model = Poi::findOrFail($id);
- $model->update($request->all());
+ $poi = Poi::findOrFail($id);
+
+ $poi->update($request->all());
- return $model;
+ return $poi;
}
/**
@@ -84,7 +97,7 @@ public function update(Request $request, $id)
*/
public function destroy($id)
{
- Poi::findOrFail($id)->delete();
+ $poi = Poi::findOrFail($id)->delete();
return response('', 204);
}
diff --git a/app/Http/Controllers/API/V2/BeaconController.php b/app/Http/Controllers/API/V2/BeaconController.php
new file mode 100644
index 0000000..baebd64
--- /dev/null
+++ b/app/Http/Controllers/API/V2/BeaconController.php
@@ -0,0 +1,97 @@
+filteredAndOrdered($request, new Beacon())->paginate($this->pageSize);
+ }
+
+ /**
+ * Save a new item.
+ *
+ * @param Request $request
+ *
+ * @return json
+ */
+ public function store(Request $request)
+ {
+ $this->validate($request, [
+ 'name' => 'required|max:255',
+ ]);
+
+ return response(Beacon::create($request->all()), 201);
+ }
+
+ /**
+ * Return a single item.
+ *
+ * @param Request $request
+ * @param int $id
+ *
+ * @return json
+ */
+ public function show(Request $request, $id)
+ {
+ $beacon = Beacon::findOrFail($id);
+
+ return $this->attachResources($request, $beacon);
+ }
+
+ /**
+ * Update a single item.
+ *
+ * @param Request $request
+ * @param int $id
+ *
+ * @return json
+ */
+ public function update(Request $request, $id)
+ {
+ $this->validate($request, [
+ 'name' => 'required|max:255',
+ ]);
+
+ $beacon = Beacon::findOrFail($id);
+
+ $beacon->update($request->all());
+
+ return $beacon;
+ }
+
+ /**
+ * Delete a single item.
+ *
+ * @param int $id
+ *
+ * @return empty
+ */
+ public function destroy($id)
+ {
+ $beacon = Beacon::findOrFail($id)->delete();
+
+ return response('', 204);
+ }
+
+ /**
+ * Return a list of deleted items.
+ *
+ * @return json
+ */
+ public function deleted()
+ {
+ return Beacon::onlyTrashed()->get();
+ }
+}
diff --git a/app/Http/Controllers/API/V2/Controller.php b/app/Http/Controllers/API/V2/Controller.php
new file mode 100644
index 0000000..d16a95b
--- /dev/null
+++ b/app/Http/Controllers/API/V2/Controller.php
@@ -0,0 +1,116 @@
+pageSize = $request->has('per_page') ? $request->input('per_page') : $request->input('size', 20);
+
+ if (!$request->has('page') && $request->has('offset')) {
+ // if no "page" parameter is set, but we have an "offset" parameter,
+ // calculate and set a "page" parameter, since the paginator expects it
+ $offset = $request->input('offset', 0);
+ $request->offsetSet('page', floor(($offset / $this->pageSize) + 1));
+ }
+ }
+
+ /**
+ * Get filtered and ordered results.
+ * Only fillable fields are used in filters.
+ * Order can be prefixed with "-" for descending order.
+ *
+ * @see https://laravel.com/docs/5.2/queries
+ *
+ * @param Request $request
+ * @param Model $model
+ *
+ * @return Builder
+ */
+ protected function filteredAndOrdered(Request $request, Model $model)
+ {
+ $fillable = $model->getFillable();
+ $query = $model->newQuery();
+
+ foreach ($request->all() as $key => $value) {
+ // skip filter if not in fillable fields
+ if (!in_array($key, $fillable)) {
+ continue;
+ }
+
+ $query->where($key, $value);
+ }
+
+ if ($request->q) {
+ // search all fillable fields for the search query
+ $query->where(function (Builder $query) use ($request, $fillable) {
+ foreach ($fillable as $field) {
+ $query->orWhere($field, 'LIKE', '%'.$request->q.'%');
+ }
+ });
+ }
+
+ if ($request->order) {
+ // multiple orderBys are possible with a comma separated string
+ $order = explode(',', $request->order);
+
+ foreach ($order as $orderby) {
+ $hasPrefix = in_array(substr($orderby, 0, 1), ['-', '+']);
+
+ // if key is preceed by a minus, then the order is descending
+ $direction = substr($orderby, 0, 1) == '-' ? 'DESC' : 'ASC';
+
+ // remove order prefixes
+ $orderby = $hasPrefix ? substr($orderby, 1) : $orderby;
+
+ $query->orderBy($orderby, $direction);
+ }
+ }
+
+ return $query;
+ }
+
+ /**
+ * Support embedded resources. Also support nested resources.
+ *
+ * @see https://laravel.com/docs/5.2/eloquent-relationships#eager-loading
+ *
+ * @param Request $request
+ * @param Model $model
+ *
+ * @return Model
+ */
+ public function attachResources(Request $request, Model $model)
+ {
+ if (!$request->has('embed')) {
+ return $model;
+ }
+
+ foreach (explode(',', $request->embed) as $resource) {
+ $model->load($resource);
+ }
+
+ return $model;
+ }
+}
diff --git a/app/Http/Controllers/API/V2/FloorController.php b/app/Http/Controllers/API/V2/FloorController.php
new file mode 100644
index 0000000..9d0deca
--- /dev/null
+++ b/app/Http/Controllers/API/V2/FloorController.php
@@ -0,0 +1,156 @@
+filteredAndOrdered($request, new Floor())->paginate($this->pageSize);
+
+ foreach ($floors->items() as $floor) {
+ if ($floor->image) {
+ $floor->image = url('api/v2/floors/' . $floor->id . '/image');
+ } else {
+ $floor->image = null;
+ }
+ }
+
+ return $floors;
+ }
+
+ /**
+ * Save a new item.
+ *
+ * @param Request $request
+ *
+ * @return json
+ */
+ public function store(Request $request)
+ {
+ $this->validate($request, [
+ 'name' => 'required|max:255',
+ 'map_height_in_centimeters' => 'required|numeric',
+ 'map_width_in_centimeters' => 'required|numeric',
+ 'image' => 'required|imageable',
+ ]);
+
+ $floor = Floor::create($request->except('image'));
+
+ $this->uploadFloor($floor, $request);
+
+ return response($floor, 201);
+ }
+
+ /**
+ * Return a single item.
+ *
+ * @param Request $request
+ * @param int $id
+ *
+ * @return json
+ */
+ public function show(Request $request, $id)
+ {
+ $floor = Floor::findOrFail($id);
+
+ $floor->image = url('api/v2/floors/' . $floor->id . '/image');
+
+ return $this->attachResources($request, $floor);
+ }
+
+ /**
+ * Update a single item.
+ *
+ * @param Request $request
+ * @param int $id
+ *
+ * @return json
+ */
+ public function update(Request $request, $id)
+ {
+ $this->validate($request, [
+ 'name' => 'required|max:255',
+ 'map_height_in_centimeters' => 'required|numeric',
+ 'map_width_in_centimeters' => 'required|numeric',
+ 'image' => 'required|imageable',
+ ]);
+
+ $floor = Floor::findOrFail($id);
+
+ $floor->update($request->except('image'));
+
+ $this->uploadFloor($floor, $request);
+
+ return $floor;
+ }
+
+ /**
+ * Delete a single item.
+ *
+ * @param int $id
+ *
+ * @return empty
+ */
+ public function destroy($id)
+ {
+ $floor = Floor::findOrFail($id)->delete();
+
+ return response('', 204);
+ }
+
+ /**
+ * Return a list of deleted items.
+ *
+ * @return json
+ */
+ public function deleted()
+ {
+ return Floor::onlyTrashed()->get();
+ }
+
+ protected function uploadFloor(Floor $floor, Request $request)
+ {
+ $destinationPath = storage_path() . '/app/images/floors/' . $floor->id;
+
+ if(!File::exists($destinationPath)) {
+ File::makeDirectory($destinationPath);
+ }
+
+ $image = Image::make($request->image);
+
+ $fileName = md5($request->image) . '.' . substr($image->mime, strpos($image->mime, "/") + 1);
+
+ $file = storage_path() . '/app/images/floors/' . $floor->id . '/' . $fileName;
+
+ $image->save($file);
+
+ if ($floor->image && is_file($destinationPath . '/' . $floor->image)) {
+ unlink($destinationPath . '/' . $floor->image);
+ }
+
+ $image = Image::make($destinationPath . '/' . $fileName);
+ $image->save($destinationPath . '/original-' . $fileName);
+ $map_pixel_to_centimeter_ratio = round($image->width() / $floor->map_width_in_centimeters, 2);
+
+ $floor->update([
+ 'image' => $fileName,
+ 'map_height_in_pixels' => $image->height(),
+ 'map_width_in_pixels' => $image->width(),
+ 'map_pixel_to_centimeter_ratio' => $map_pixel_to_centimeter_ratio
+ ]);
+ }
+}
diff --git a/app/Http/Controllers/API/V2/LocationController.php b/app/Http/Controllers/API/V2/LocationController.php
new file mode 100644
index 0000000..893c60a
--- /dev/null
+++ b/app/Http/Controllers/API/V2/LocationController.php
@@ -0,0 +1,97 @@
+filteredAndOrdered($request, new Location())->paginate($this->pageSize);
+ }
+
+ /**
+ * Save a new item.
+ *
+ * @param Request $request
+ *
+ * @return json
+ */
+ public function store(Request $request)
+ {
+ $this->validate($request, [
+ 'name' => 'required|max:255',
+ ]);
+
+ return response(Location::create($request->all()), 201);
+ }
+
+ /**
+ * Return a single item.
+ *
+ * @param Request $request
+ * @param int $id
+ *
+ * @return json
+ */
+ public function show(Request $request, $id)
+ {
+ $location = Location::findOrFail($id);
+
+ return $this->attachResources($request, $location);
+ }
+
+ /**
+ * Update a single item.
+ *
+ * @param Request $request
+ * @param int $id
+ *
+ * @return json
+ */
+ public function update(Request $request, $id)
+ {
+ $this->validate($request, [
+ 'name' => 'required|max:255',
+ ]);
+
+ $location = Location::findOrFail($id);
+
+ $location->update($request->all());
+
+ return $location;
+ }
+
+ /**
+ * Delete a single item.
+ *
+ * @param int $id
+ *
+ * @return empty
+ */
+ public function destroy($id)
+ {
+ $location = Location::findOrFail($id)->delete();
+
+ return response('', 204);
+ }
+
+ /**
+ * Return a list of deleted items.
+ *
+ * @return json
+ */
+ public function deleted()
+ {
+ return Location::onlyTrashed()->get();
+ }
+}
diff --git a/app/Http/Controllers/API/V2/MediaController.php b/app/Http/Controllers/API/V2/MediaController.php
new file mode 100644
index 0000000..4eb6006
--- /dev/null
+++ b/app/Http/Controllers/API/V2/MediaController.php
@@ -0,0 +1,53 @@
+id . '/' . $poi->icon;
+
+ if (!File::exists($path)) {
+ return response(['message' => 'Resource not found',], 404);
+ }
+
+ return response()->file($path);
+ }
+
+ /**
+ * Get the specified image resource from storage.
+ *
+ * @param int $id
+ * @return \Illuminate\Http\Response
+ */
+ public function image($id)
+ {
+ $floor = Floor::findOrFail($id);
+
+ $path = storage_path() . '/app/images/floors/' . $floor->id . '/' . $floor->image;
+
+ if (!File::exists($path)) {
+ return response(['message' => 'Resource not found',], 404);
+ }
+
+ return response()->file($path);
+ }
+}
\ No newline at end of file
diff --git a/app/Http/Controllers/API/V2/PlaceController.php b/app/Http/Controllers/API/V2/PlaceController.php
new file mode 100644
index 0000000..284cd48
--- /dev/null
+++ b/app/Http/Controllers/API/V2/PlaceController.php
@@ -0,0 +1,183 @@
+request->add(array('activated' => 1));
+ return $this->filteredAndOrdered($request, new Place())->paginate($this->pageSize);
+ }
+
+ /**
+ * Save a new item.
+ *
+ * @param Request $request
+ *
+ * @return json
+ */
+ public function store(Request $request)
+ {
+ $this->validate($request, [
+ 'name' => 'required|max:255',
+ ]);
+
+ return response(Place::create($request->all()), 201);
+ }
+
+ /**
+ * Return a findable Location
+ *
+ * @param Request $request
+ * @param int $id
+ *
+ * @return json
+ */
+ public function find(Request $request, $id)
+ {
+ $identifier = $request->find_identifier;
+ if (empty($identifier)) {
+ return response(['message' => 'missing parameter', 'parameter' => 'identifier'], 400);
+ }
+ $findable = Findable::where('identifier', $identifier)->first();
+ if (empty($findable)) {
+ return response(['message' => 'resource not found', 'resource' => 'findable'], 404);
+ }
+
+ $place = Place::findOrFail($id);
+
+ $class = "BB\\" . $identifier . "Plugin\\" . $identifier . "Plugin";
+ if (!class_exists($class)) {
+ return response(['message' => 'resource not found', 'resource' => 'class'], 404);
+ }
+ $plugin = new $class;
+ if (!method_exists($plugin, 'findable' . $identifier)) {
+ return response(['message' => 'resource not found', 'resource' => 'method'], 404);
+ }
+
+ return $plugin->{'findable' . $identifier}($place, $findable, $request);
+ }
+
+ /**
+ * Return a single item.
+ *
+ * @param Request $request
+ * @param int $id
+ *
+ * @return json
+ */
+ public function show(Request $request, $id)
+ {
+ $place = Place::findOrFail($id);
+
+ $place = $this->attachResources($request, $place);
+ foreach ($place->floors as $floor) {
+
+ $floor->image = url('api/v2/floors/' . $floor->id . '/image');
+
+ foreach ($floor->locations as $location) {
+ if ($location->poi_id > 0) {
+ $poi = Poi::find($location->poi_id);
+
+ if (!$poi) {
+ continue;
+ }
+
+ $poi->icon = url('api/v2/pois/' . $poi->id . '/icon');
+ $location->poi = $poi;
+ } else {
+ $location->poi = null;
+ }
+ }
+
+ }
+
+ return $place;
+ }
+
+ /**
+ * Update a single item.
+ *
+ * @param Request $request
+ * @param int $id
+ *
+ * @return json
+ */
+ public function update(Request $request, $id)
+ {
+ $this->validate($request, [
+ 'name' => 'required|max:255',
+ ]);
+
+ $place = Place::findOrFail($id);
+
+ $place->update($request->all());
+
+ return $place;
+ }
+
+ /**
+ * Delete a single item.
+ *
+ * @param int $id
+ *
+ * @return empty
+ */
+ public function destroy($id)
+ {
+ $place = Place::findOrFail($id)->delete();
+
+ return response('', 204);
+ }
+
+ /**
+ * Return a list of deleted items.
+ *
+ * @return json
+ */
+ public function deleted()
+ {
+ return Place::onlyTrashed()->get();
+ }
+
+ /**
+ * Get menu items.
+ *
+ * @param int $id
+ *
+ * @return json
+ */
+ public function menu($id)
+ {
+ $menus = Menu::where('place_id', $id)->orderBy('order')->with('poi')->get();
+
+ foreach($menus as $menu ) {
+ if(!empty($menu->poi) && !empty($menu->poi->icon)) {
+ $menu->poi->icon = url('api/v2/pois/' . $menu->poi->id . '/icon');
+ }
+ }
+
+ return $menus;
+ }
+
+}
diff --git a/app/Http/Controllers/API/V2/PoiController.php b/app/Http/Controllers/API/V2/PoiController.php
new file mode 100644
index 0000000..d25ba5e
--- /dev/null
+++ b/app/Http/Controllers/API/V2/PoiController.php
@@ -0,0 +1,153 @@
+filteredAndOrdered($request, new Poi())->paginate($this->pageSize);
+
+ foreach ($pois->items() as $poi) {
+ if ($poi->icon) {
+ $poi->icon = url('api/v2/pois/' . $poi->id . '/icon');
+ } else {
+ $poi->icon = null;
+ }
+ }
+
+ return $pois;
+ }
+
+
+ /**
+ * Save a new item.
+ *
+ * @param Request $request
+ *
+ * @return json
+ */
+ public function store(Request $request)
+ {
+ $this->validate($request, [
+ 'name' => 'required|max:255',
+ 'internal_name' => 'required|max:255',
+ 'icon' => 'required|imageable',
+ ]);
+
+ $poi = Poi::create($request->except('icon'));
+
+ $this->uploadIcon($poi, $request);
+
+ $poi->icon = url('api/v2/pois/' . $poi->id . '/icon');
+
+ return response($poi, 201);
+ }
+
+ /**
+ * Return a single item.
+ *
+ * @param Request $request
+ * @param int $id
+ *
+ * @return json
+ */
+ public function show(Request $request, $id)
+ {
+ $poi = Poi::findOrFail($id);
+
+ $poi->icon = url('api/v2/pois/' . $poi->id . '/icon');
+
+ return $this->attachResources($request, $poi);
+ }
+
+ /**
+ * Update a single item.
+ *
+ * @param Request $request
+ * @param int $id
+ *
+ * @return json
+ */
+ public function update(Request $request, $id)
+ {
+ $this->validate($request, [
+ 'name' => 'required|max:255',
+ 'internal_name' => 'required|max:255',
+ 'icon' => 'required|imageable',
+ ]);
+
+ $poi = Poi::findOrFail($id);
+
+ $poi->update($request->except('icon'));
+
+ $this->uploadIcon($poi, $request);
+
+ $poi->icon = url('api/v2/pois/' . $poi->id . '/icon');
+
+ return $poi;
+ }
+
+ /**
+ * Delete a single item.
+ *
+ * @param int $id
+ *
+ * @return empty
+ */
+ public function destroy($id)
+ {
+ $poi = Poi::findOrFail($id)->delete();
+
+ return response('', 204);
+ }
+
+ /**
+ * Return a list of deleted items.
+ *
+ * @return json
+ */
+ public function deleted()
+ {
+ $pois = Poi::onlyTrashed()->get();
+
+ return $pois;
+ }
+
+ protected function uploadIcon(Poi $poi, Request $request)
+ {
+ $destinationPath = storage_path() . '/app/images/pois/' . $poi->id;
+
+ if (!File::exists($destinationPath)) {
+ File::makeDirectory($destinationPath);
+ }
+
+ $image = Image::make($request->icon);
+
+ $fileName = md5($request->icon . str_random(40)) . '.' . substr($image->mime, strpos($image->mime, "/") + 1);
+
+ $file = storage_path() . '/app/images/pois/' . $poi->id . '/' . $fileName;
+
+ $image->save($file);
+
+ if ($poi->icon && is_file($destinationPath . '/' . $poi->icon)) {
+ unlink($destinationPath . '/' . $poi->icon);
+ }
+
+ $poi->update([
+ 'icon' => $fileName
+ ]);
+ }
+}
diff --git a/app/Http/Controllers/API/V2/ProfileController.php b/app/Http/Controllers/API/V2/ProfileController.php
new file mode 100644
index 0000000..b8dc307
--- /dev/null
+++ b/app/Http/Controllers/API/V2/ProfileController.php
@@ -0,0 +1,37 @@
+guard('api')->user();
+ }
+
+ /**
+ * Update info of logged in user.
+ *
+ * @param Request $request
+ *
+ * @return User
+ */
+ public function update(Request $request)
+ {
+ $user = auth()->guard('api')->user();
+ $user->update($request->only(['name', 'email']));
+
+ return $user;
+ }
+}
diff --git a/app/Http/Controllers/ApiController.php b/app/Http/Controllers/ApiController.php
index fa70718..234899b 100644
--- a/app/Http/Controllers/ApiController.php
+++ b/app/Http/Controllers/ApiController.php
@@ -14,7 +14,7 @@ class ApiController extends Controller
public function index()
{
$keys = ApiKey::all();
- $users = auth()->user()->currentTeam->users()->orderBy('name')->lists('name', 'id');
+ $users = auth()->user()->currentTeam->users()->orderBy('name')->pluck('name', 'id');
return view('apikeys.index', compact('keys', 'users'));
}
diff --git a/app/Http/Controllers/Auth/ForgotPasswordController.php b/app/Http/Controllers/Auth/ForgotPasswordController.php
new file mode 100644
index 0000000..6a247fe
--- /dev/null
+++ b/app/Http/Controllers/Auth/ForgotPasswordController.php
@@ -0,0 +1,32 @@
+middleware('guest');
+ }
+}
diff --git a/app/Http/Controllers/Auth/LoginController.php b/app/Http/Controllers/Auth/LoginController.php
new file mode 100644
index 0000000..56fffee
--- /dev/null
+++ b/app/Http/Controllers/Auth/LoginController.php
@@ -0,0 +1,61 @@
+middleware('guest', ['except' => 'logout']);
+ }
+
+ /**
+ * Show the application's login form.
+ *
+ * @return \Illuminate\Http\Response
+ */
+ public function showLoginForm()
+ {
+ $teamCount = Team::count();
+
+ $teamLimit = env('TEAM_LIMIT') ? env('TEAM_LIMIT') : 1;
+
+ $allowTeam = true;
+
+ if($teamCount >= $teamLimit) {
+ $allowTeam = false;
+ }
+
+ return view('auth.login', ['allowTeam' => $allowTeam]);
+ }
+}
diff --git a/app/Http/Controllers/Auth/AuthController.php b/app/Http/Controllers/Auth/RegisterController.php
similarity index 63%
rename from app/Http/Controllers/Auth/AuthController.php
rename to app/Http/Controllers/Auth/RegisterController.php
index bcffe33..d598584 100644
--- a/app/Http/Controllers/Auth/AuthController.php
+++ b/app/Http/Controllers/Auth/RegisterController.php
@@ -2,45 +2,60 @@
namespace App\Http\Controllers\Auth;
+
use Auth;
use App\Team;
use App\User;
+use Illuminate\Auth\GuardHelpers;
use Validator;
-use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
-use Illuminate\Foundation\Auth\ThrottlesLogins;
-use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers;
+use Illuminate\Http\Request;
+use Illuminate\Foundation\Auth\RegistersUsers;
-class AuthController extends Controller
+class RegisterController extends Controller
{
/*
|--------------------------------------------------------------------------
- | Registration & Login Controller
+ | Register Controller
|--------------------------------------------------------------------------
|
- | This controller handles the registration of new users, as well as the
- | authentication of existing users. By default, this controller uses
- | a simple trait to add these behaviors. Why don't you explore it?
+ | This controller handles the registration of new users as well as their
+ | validation and creation. By default this controller uses a trait to
+ | provide this functionality without requiring any additional code.
|
*/
- use AuthenticatesAndRegistersUsers, ThrottlesLogins;
+ use RegistersUsers;
/**
- * Where to redirect users after login / registration.
+ * Where to redirect users after registration.
*
* @var string
*/
protected $redirectTo = '/';
/**
- * Create a new authentication controller instance.
+ * Show the application registration form.
+ *
+ * @return \Illuminate\Http\Response
+ */
+ public function showRegistrationForm(Request $request)
+ {
+ if($this->isTeamLimitReached() && !$request->session()->has('invite_token')) {
+ return view('auth.full');
+ }
+
+ return view('auth.register');
+ }
+
+ /**
+ * Create a new controller instance.
*
* @return void
*/
public function __construct()
{
- $this->middleware($this->guestMiddleware(), ['except' => 'logout']);
+ $this->middleware('guest');
}
/**
@@ -54,8 +69,7 @@ protected function validator(array $data)
return Validator::make($data, [
'name' => 'required|max:255',
'email' => 'required|email|max:255|unique:users',
- 'password' => 'required|confirmed|min:6',
- 'terms' => 'required',
+ 'password' => 'required|min:6|confirmed',
]);
}
@@ -90,6 +104,10 @@ public function register(Request $request)
);
}
+ if($this->isTeamLimitReached() && !$request->session()->has('invite_token')) {
+ return view('auth.full');
+ }
+
$user = $this->create($request->all());
// If user was not invited, create and join a new team
@@ -106,8 +124,16 @@ public function register(Request $request)
}
// Log the user in
- Auth::guard($this->getGuard())->login($user);
+
+ $this->guard()->login($user);
return redirect($this->redirectPath());
}
+
+ private function isTeamLimitReached() {
+ $teamLimit = env('TEAM_LIMIT') ? env('TEAM_LIMIT') : 1;
+
+ return (Team::count() >= $teamLimit);
+ }
+
}
diff --git a/app/Http/Controllers/Auth/PasswordController.php b/app/Http/Controllers/Auth/ResetPasswordController.php
similarity index 72%
rename from app/Http/Controllers/Auth/PasswordController.php
rename to app/Http/Controllers/Auth/ResetPasswordController.php
index 90c2a82..2c863aa 100644
--- a/app/Http/Controllers/Auth/PasswordController.php
+++ b/app/Http/Controllers/Auth/ResetPasswordController.php
@@ -5,7 +5,7 @@
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\ResetsPasswords;
-class PasswordController extends Controller
+class ResetPasswordController extends Controller
{
/*
|--------------------------------------------------------------------------
@@ -21,13 +21,19 @@ class PasswordController extends Controller
use ResetsPasswords;
/**
- * Create a new password controller instance.
+ * Where to redirect users after resetting their password.
+ *
+ * @var string
+ */
+ protected $redirectTo = '/';
+
+ /**
+ * Create a new controller instance.
*
* @return void
*/
public function __construct()
{
- $this->middleware($this->guestMiddleware());
- $this->subject = config('mail.templates.reset.subject');
+ $this->middleware('guest');
}
}
diff --git a/app/Http/Controllers/BeaconController.php b/app/Http/Controllers/BeaconController.php
index 0e0cdbb..d0f287b 100644
--- a/app/Http/Controllers/BeaconController.php
+++ b/app/Http/Controllers/BeaconController.php
@@ -3,6 +3,7 @@
namespace App\Http\Controllers;
use App\Floor;
+use App\Jobs\ImportBeaconsJob;
use App\Place;
use App\Beacon;
use App\Setting;
@@ -40,11 +41,12 @@ public function index()
*/
public function import()
{
- $services = array(
- '' => 'Select Service' ,
- 'kontakt.io' => 'Kontakt.io',
- 'estimote' => 'estimote',
- );
+ $services = array(
+ '' => 'Select Service',
+ 'kontakt.io' => 'Kontakt.io',
+ 'estimote' => 'estimote',
+ 'test' => 'test'
+ );
return view('beacons.import', compact('services'));
}
@@ -64,25 +66,12 @@ public function importing(Request $request)
$setting = Setting::firstOrCreate(['key' => str_replace('-', '.', $key)]);
$setting->update(['value' => $value]);
}
-
- $devices = $this->getBeaconsFromWebservice();
- foreach( $devices as $device ) {
- $beacon = Beacon::where( 'beacon_uid', '=', $device )->first();
-
- if( empty( $beacon ) ) {
- $device = $this->getBeaconFromWebservice($device);
-
- $beacon = Beacon::create([
- 'name' => $device->uniqueId,
- 'beacon_uid' => $device->uniqueId,
- 'proximity_uuid' => $device->proximity,
- 'minor' => $device->minor,
- 'major' => $device->major,
- ]);
- }
- }
-
- return redirect()->route('beacons.import');
+
+ $service = $filtered->get('beacon-import-service');
+
+ dispatch(new ImportBeaconsJob($service));
+
+ return redirect()->route('beacons.import');
}
/**
@@ -92,14 +81,14 @@ public function importing(Request $request)
*/
public function create(Request $request)
{
-// $places = Place::lists('name', 'id');
-// $floors = Floor::lists('name', 'id');
+// $places = Place::pluck('name', 'id');
+// $floors = Floor::pluck('name', 'id');
// $devices = $this->getBeaconsFromWebservice();
// if ($request->input('beacon_uid')) {
- // $beacon = $this->getBeaconFromWebservice($request->input('beacon_uid'));
- // }
+ // $beacon = $this->getBeaconFromWebservice($request->input('beacon_uid'));
+ // }
return view('beacons.create');
}
@@ -107,13 +96,13 @@ public function create(Request $request)
/**
* Store a newly created resource in storage.
*
- * @param \Illuminate\Http\Request $request
+ * @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$this->validate($request, [
- 'name' => 'required|max:255',
+ 'name' => 'required|max:255',
]);
$beacon = Beacon::create($request->all());
@@ -123,7 +112,7 @@ public function store(Request $request)
/**
* Display the specified resource.
*
- * @param int $id
+ * @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
@@ -135,14 +124,14 @@ public function show($id)
/**
* Show the form for editing the specified resource.
*
- * @param int $id
+ * @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
$beacon = Beacon::findOrFail($id);
-// $places = Place::lists('name', 'id');
-// $floors = Floor::lists('name', 'id');
+// $places = Place::pluck('name', 'id');
+// $floors = Floor::pluck('name', 'id');
return view('beacons.edit', compact('beacon'));
}
@@ -150,14 +139,14 @@ public function edit($id)
/**
* Update the specified resource in storage.
*
- * @param \Illuminate\Http\Request $request
- * @param int $id
+ * @param \Illuminate\Http\Request $request
+ * @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
$this->validate($request, [
- 'name' => 'required|max:255',
+ 'name' => 'required|max:255',
]);
$beacon = Beacon::findOrFail($id);
@@ -168,7 +157,7 @@ public function update(Request $request, $id)
/**
* Remove the specified resource from storage.
*
- * @param int $id
+ * @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
@@ -177,56 +166,4 @@ public function destroy($id)
$beacon->delete();
return redirect()->route('beacons.index');
}
-
- /**
- * Get beacons from Kontakt webservice
- * @return Illuminate\Support\Collection
- */
- protected function getBeaconsFromWebservice()
- {
- $client = new Client([
- 'base_uri' => 'https://api.kontakt.io/',
- 'headers' => [
- 'Accept' => 'application/vnd.com.kontakt+json;version=7',
- 'Api-Key' => config('services.kontakt.key'),
- 'User-Agent' => 'BeaconBacon'
- ]
- ]);
-
- try {
- $response = $client->request('GET', '/device?maxResult=1000');
- $results = json_decode($response->getBody()->getContents());
- $devices = collect();
-
- foreach ($results->devices as $device) {
- $devices->put($device->uniqueId, $device->uniqueId . ($device->alias ? ' (' . $device->alias . ')' : ''));
- }
-
- return $devices;
- }
- catch (\Exception $e) {
- return [];
- }
- }
-
- protected function getBeaconFromWebservice($beaconId)
- {
- $client = new Client([
- 'base_uri' => 'https://api.kontakt.io/',
- 'headers' => [
- 'Accept' => 'application/vnd.com.kontakt+json;version=7',
- 'Api-Key' => config('services.kontakt.key'),
- 'User-Agent' => 'BeaconBacon'
- ]
- ]);
-
- try {
- $response = $client->request('GET', '/device/'.$beaconId);
- $results = json_decode($response->getBody()->getContents());
- return $results;
- }
- catch (\Exception $e) {
- return null;
- }
- }
}
diff --git a/app/Http/Controllers/BlockController.php b/app/Http/Controllers/BlockController.php
index e966bea..1a3a55b 100644
--- a/app/Http/Controllers/BlockController.php
+++ b/app/Http/Controllers/BlockController.php
@@ -105,6 +105,19 @@ public function update(Request $request, $id)
return redirect()->route('blocks.index');
}
+ /**
+ * Get the specified image resource from storage.
+ *
+ * @param int $id
+ * @return \Illuminate\Http\Response
+ */
+ public function image($id)
+ {
+ $block = Block::findOrFail($id);
+
+ return response()->file($block->getPhysicalIconPath());
+ }
+
/**
* Remove the specified resource from storage.
*
@@ -132,15 +145,14 @@ protected function uploadIcon(Block $block, Request $request)
return;
}
- $destinationPath = public_path('uploads/blocks/' . $block->id);
- $fileName = $request->file('image')->getClientOriginalName();
+ $request->file('image')->store('blocks/' . $block->id);
+ $fileName = $request->image->hashName();
+ $destinationPath = storage_path() . '/app/images/blocks/' . $block->id;
if ($block->image && is_file($destinationPath . '/' . $block->image)) {
unlink($destinationPath . '/' . $block->image);
}
- $request->file('image')->move($destinationPath, $fileName);
-
$image = Image::make($destinationPath . '/' . $fileName);
$block->update([
diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php
index d492e0b..50dd158 100644
--- a/app/Http/Controllers/Controller.php
+++ b/app/Http/Controllers/Controller.php
@@ -10,5 +10,5 @@
class Controller extends BaseController
{
- use AuthorizesRequests, AuthorizesResources, DispatchesJobs, ValidatesRequests;
+ use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
}
diff --git a/app/Http/Controllers/FindableController.php b/app/Http/Controllers/FindableController.php
index 5ce9038..0f66117 100644
--- a/app/Http/Controllers/FindableController.php
+++ b/app/Http/Controllers/FindableController.php
@@ -5,6 +5,7 @@
use App\Findable;
use App\Http\Requests;
use Illuminate\Http\Request;
+use Artisan;
class FindableController extends Controller
{
@@ -35,8 +36,10 @@ public function index()
* @return \Illuminate\Http\Response
*/
public function create()
- {
- return view('findable.create');
+ {
+ $types = array('icon' => 'Icon', 'area' => 'Area');
+
+ return view('findable.create', compact('types'));
}
/**
@@ -49,10 +52,12 @@ public function store(Request $request)
{
$this->validate($request, [
'name' => 'required|max:255',
- 'identifier' => 'required|max:255',
+ 'identifier' => 'required|max:255|unique:findables',
]);
- $findable = Findable::create($request->all());
+ $findable = Findable::create($request->except('custom_file'));
+
+ $this->uploadFile($findable, $request);
return redirect()->route('findables.index');
}
@@ -97,7 +102,9 @@ public function update(Request $request, $id)
]);
$findable = Findable::findOrFail($id);
- $findable->update($request->all());
+ $findable->update($request->except('custom_file'));
+
+ $this->uploadFile($findable, $request);
return redirect()->route('findables.index');
}
@@ -115,4 +122,29 @@ public function destroy($id)
return redirect()->route('findables.index');
}
+
+ protected function uploadFile(Findable $findable, Request $request)
+ {
+ if (!$request->hasFile('custom_file')) {
+ return;
+ }
+
+ $file = $request->file('custom_file');
+
+ $fileName = $findable->identifier . 'Plugin.php';
+
+ $destinationPath = storage_path() . '/app/files/findables/';
+
+ if ($findable->custom_file && is_file($destinationPath . $findable->custom_file)) {
+ unlink($destinationPath . $findable->custom_file);
+ }
+
+ $file->storeAs('files/findables/', $fileName);
+
+ $findable->update([
+ 'custom_file' => $fileName,
+ ]);
+
+ $output = shell_exec('cd .. && composer dump-autoload -o 2>&1');
+ }
}
diff --git a/app/Http/Controllers/FloorController.php b/app/Http/Controllers/FloorController.php
index d9ba304..114476c 100644
--- a/app/Http/Controllers/FloorController.php
+++ b/app/Http/Controllers/FloorController.php
@@ -77,7 +77,8 @@ public function show($placeId, $id)
$floor = Floor::findOrFail($id);
if ($floor->image) {
- $image = Image::make($floor->image);
+ $path = $floor->getPhysicalIconPath();
+ $image = Image::make($path);
$floor->mapWidth = $image->width();
$floor->mapHeight = $image->height();
}
@@ -123,6 +124,19 @@ public function update(Request $request, $placeId, $id)
return redirect()->route('floors.show', [$placeId, $id]);
}
+ /**
+ * Get the specified image resource from storage.
+ *
+ * @param int $id
+ * @return \Illuminate\Http\Response
+ */
+ public function image($id)
+ {
+ $floor = Floor::findOrFail($id);
+
+ return response()->file($floor->getPhysicalIconPath());
+ }
+
/**
* Remove the specified resource from storage.
*
@@ -150,14 +164,18 @@ protected function uploadFloor(Floor $floor, Request $request)
return;
}
- $destinationPath = public_path('uploads/floors/' . $floor->id);
- $fileName = $request->file('image')->getClientOriginalName();
+ $request->file('image')->store('images/floors/' . $floor->id);
+ $fileName = $request->image->hashName();
+ $destinationPath = storage_path() . '/app/images/floors/' . $floor->id;
+
+ /*$destinationPath = public_path('uploads/floors/' . $floor->id);
+ $fileName = $request->file('image')->getClientOriginalName();*/
if ($floor->image && is_file($destinationPath . '/' . $floor->image)) {
unlink($destinationPath . '/' . $floor->image);
}
- $request->file('image')->move($destinationPath, $fileName);
+ //$request->file('image')->move($destinationPath, $fileName);
$image = Image::make($destinationPath . '/' . $fileName);
$image->save( $destinationPath . '/original-' . $fileName );
diff --git a/app/Http/Controllers/LocationController.php b/app/Http/Controllers/LocationController.php
index ea31fc2..f5d86b4 100644
--- a/app/Http/Controllers/LocationController.php
+++ b/app/Http/Controllers/LocationController.php
@@ -2,6 +2,8 @@
namespace App\Http\Controllers;
+use App\User;
+use App\Jobs\GenerateMap;
use Image;
use App\Floor;
use App\Place;
@@ -10,6 +12,7 @@
use App\Block;
use App\Findable;
use App\Location;
+use App\Setting;
use App\Http\Requests;
use Illuminate\Http\Request;
@@ -32,7 +35,7 @@ public function __construct()
*/
public function index($placeId, $floorId)
{
- //TODO -> redirect to floor show?
+ //TODO -> redirect to floor show?
$locations = Location::all();
$place = Place::findOrFail($placeId);
$floor = Floor::findOrFail($floorId);
@@ -45,72 +48,77 @@ public function index($placeId, $floorId)
*
* @return \Illuminate\Http\Response
*/
- public function create ($placeId, $floorId, $type = 'poi')
+ public function create($placeId, $floorId, $type = 'poi')
{
$place = Place::findOrFail($placeId);
$floor = Floor::findOrFail($floorId);
- if ( $type == 'beacon' ) {
+ if ($type == 'beacon') {
- $beacons = Beacon::where( 'location_id', 0 )->lists('name', 'id');
+ $beacons = Beacon::where('location_id', 0)->pluck('name', 'id');
- $beacons_select = [];
- $beacons_select[0] = 'Select Beacon...';
+ $beacons_select = [];
+ $beacons_select[0] = 'Select Beacon...';
- $beacons = Beacon::where( 'location_id', 0 )->get()->sortBy('name');
- foreach( $beacons as $beacon ) {
- $beacons_select[ $beacon->id ] = $beacon->name . ' (' . $beacon->major . ' : ' . $beacon->minor . ')';
- }
+ $beacons = Beacon::where('location_id', 0)->get()->sortBy('name');
+ foreach ($beacons as $beacon) {
+ $beacons_select[$beacon->id] = $beacon->name . ' (' . $beacon->major . ' : ' . $beacon->minor . ')';
+ }
- return view('locations.create.beacon', compact('beacons_select', 'place', 'floor', 'placeId', 'floorId'));
- }
+ return view('locations.create.beacon', compact('beacons_select', 'place', 'floor', 'placeId', 'floorId'));
+ }
- if ( $type == 'findable' ) {
+ if ($type == 'findable') {
- $findables = Findable::lists( 'name', 'id' );
- $findables->prepend( 'Select type...', 0 );
+ $findables = Findable::pluck('name', 'id');
+ $findables->prepend('Select Findable...', 0);
+ $types = array(
+ '' => 'Select type...',
+ 'point' => 'Point',
+ 'area' => 'Area'
+ );
- return view('locations.create.findable', compact('findables', 'place', 'floor', 'placeId', 'floorId'));
- }
+ return view('locations.create.findable', compact('types', 'findables', 'place', 'floor', 'placeId', 'floorId'));
+ }
- if ( $type == 'block' ) {
+ if ($type == 'block') {
- $blocks = Block::lists( 'name', 'id' );
- $blocks->prepend( 'Select block...', 0 );
+ $blocks = Block::pluck('name', 'id');
+ $blocks->prepend('Select block...', 0);
- $findables = Findable::lists( 'name', 'id' );
- $findables->prepend( 'Is this block findable?', 0 );
+ $findables = Findable::pluck('name', 'id');
+ $findables->prepend('Is this block findable?', 0);
- return view('locations.create.block', compact('blocks','findables','place', 'floor', 'placeId', 'floorId'));
- }
+ return view('locations.create.block', compact('blocks', 'findables', 'place', 'floor', 'placeId', 'floorId'));
+ }
- $pois = Poi::lists( 'name', 'id' );
- $pois->prepend( 'Select POI...', 0 );
+ $pois = Poi::pluck('name', 'id');
+ $pois->prepend('Select POI...', 0);
- return view('locations.create.poi', compact('pois', 'place', 'floor', 'placeId', 'floorId'));
+ return view('locations.create.poi', compact('pois', 'place', 'floor', 'placeId', 'floorId'));
}
/**
* Store a newly created resource in storage.
*
- * @param \Illuminate\Http\Request $request
+ * @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request, $placeId, $floorId)
{
$this->validate($request, [
- 'name' => 'required|max:255',
+ 'name' => 'required|max:255',
]);
- $location = Location::create( $request->all() );
+ $location = Location::create($request->all());
$beacon_id = $request->input('beacon_id');
- if ( ! empty( $beacon_id ) ) {
- $beacon = Beacon::findOrFail($beacon_id);
- $beacon->place_id = $request->input('place_id');
- $beacon->floor_id = $request->input('floor_id');
- $beacon->location_id = $location->id;
- $beacon->save();
+ if (!empty($beacon_id)) {
+ $beacon = Beacon::findOrFail($beacon_id);
+ $beacon->place_id = $request->input('place_id');
+ $beacon->floor_id = $request->input('floor_id');
+ $beacon->location_id = $location->id;
+ $beacon->save();
}
return redirect()->route('locations.edit', [$placeId, $floorId, $location->id]);
@@ -119,7 +127,7 @@ public function store(Request $request, $placeId, $floorId)
/**
* Display the specified resource.
*
- * @param int $id
+ * @param int $id
* @return \Illuminate\Http\Response
*/
public function show($placeId, $floorId, $id)
@@ -130,7 +138,7 @@ public function show($placeId, $floorId, $id)
/**
* Show the form for editing the specified resource.
*
- * @param int $id
+ * @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($placeId, $floorId, $id)
@@ -140,7 +148,7 @@ public function edit($placeId, $floorId, $id)
$location = Location::findOrFail($id);
if ($location->floor->image) {
- $image = Image::make($location->floor->image);
+ $image = Image::make($location->floor->getPhysicalIconPath());
$location->mapWidth = $image->width();
$location->mapHeight = $image->height();
}
@@ -148,146 +156,139 @@ public function edit($placeId, $floorId, $id)
$location->mapWidthCentimeters = $floor->map_width_in_centimeters;
$location->mapHeightCentimeters = $floor->map_height_in_centimeters;
- if ( $location->type == 'beacon' ) {
- $beacons_select = [];
- $beacons = Beacon::where( 'location_id', 0 )->get();
- foreach( $beacons as $beacon ) {
- $beacons_select[ $beacon->id ] = $beacon->name . ' (' . $beacon->major . ' : ' . $beacon->minor . ')';
- }
+ if ($location->type == 'beacon') {
+ $beacons_select = [];
+ $beacons = Beacon::where('location_id', 0)->get();
+ foreach ($beacons as $beacon) {
+ $beacons_select[$beacon->id] = $beacon->name . ' (' . $beacon->major . ' : ' . $beacon->minor . ')';
+ }
- $beacons_select[ $location->beacon->id ] = $location->beacon->name . ' (' . $location->beacon->major . ' : ' . $location->beacon->minor . ')';
+ $beacons_select[$location->beacon->id] = $location->beacon->name . ' (' . $location->beacon->major . ' : ' . $location->beacon->minor . ')';
- return view('locations.edit.beacon', compact('beacons_select','location', 'placeId', 'floorId'));
- }
+ return view('locations.edit.beacon', compact('beacons_select', 'location', 'placeId', 'floorId'));
+ }
- if ( $location->type == 'findable' ) {
+ if ($location->type == 'findable') {
- $findables = Findable::lists( 'name', 'id' );
- $findables->prepend( 'Select type...', 0 );
+ $findables = Findable::pluck('name', 'id');
+ $findables->prepend('Select Findable...', 0);
- return view('locations.edit.findable', compact('findables','location', 'placeId', 'floorId'));
- }
+ if ($location->draw_type === "area") {
+ return view('locations.edit.findable.area', compact('findables', 'location', 'placeId', 'floorId'));
+ }
- if ( $location->type == 'block' ) {
+ return view('locations.edit.findable.icon', compact('findables', 'location', 'placeId', 'floorId'));
+ }
- $blocks = Block::lists( 'name', 'id' );
- $blocks->prepend( 'Select Block...', 0 );
+ if ($location->type == 'block') {
- $findables = Findable::lists( 'name', 'id' );
- $findables->prepend( 'Is findable?', 0 );
+ $blocks = Block::pluck('name', 'id');
+ $blocks->prepend('Select Block...', 0);
- if ($location->block->image) {
- $image = Image::make($location->block->image);
- $location->imageWidth = $image->width();
- $location->imageHeight = $image->height();
- }
+ $findables = Findable::pluck('name', 'id');
+ $findables->prepend('Is findable?', 0);
- $location->imageRotation = deg2rad( $location->rotation );
+ if ($location->block->image) {
+ $path = $location->block->getPhysicalIconPath();
+ $image = Image::make($path);
+ $location->imageWidth = $image->width();
+ $location->imageHeight = $image->height();
+ }
- return view('locations.edit.block', compact('blocks','findables','location','placeId','floor','floorId'));
- }
+ $location->imageRotation = deg2rad($location->rotation);
- $pois = Poi::lists( 'name', 'id' );
+ return view('locations.edit.block', compact('blocks', 'findables', 'location', 'placeId', 'floor', 'floorId'));
+ }
+
+ $pois = Poi::pluck('name', 'id');
if ($location->poi->icon) {
- $icon = Image::make($location->poi->icon);
+ $icon = Image::make($location->poi->getPhysicalIconPath());
$location->iconWidth = 32;
- $location->iconHeight = round( 32 / $icon->width() * $icon->height() );
+ $location->iconHeight = round(32 / $icon->width() * $icon->height());
}
- if ( $location->poi->type == 'area' ) {
- return view('locations.edit.poi.area', compact('pois','location', 'placeId', 'floorId'));
- }
+ if ($location->poi->type == 'area') {
+ return view('locations.edit.poi.area', compact('pois', 'location', 'placeId', 'floorId'));
+ }
- return view('locations.edit.poi.icon', compact('pois','location', 'placeId', 'floorId'));
+ return view('locations.edit.poi.icon', compact('pois', 'location', 'placeId', 'floorId'));
}
/**
* Update the specified resource in storage.
*
- * @param \Illuminate\Http\Request $request
- * @param int $id
+ * @param \Illuminate\Http\Request $request
+ * @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $placeId, $floorId, $id)
{
$this->validate($request, [
- 'name' => 'required|max:255',
+ 'name' => 'required|max:255',
]);
$location = Location::findOrFail($id);
- if ( $location->type == 'beacon' ) {
- $beacon = Beacon::where( 'location_id', '=', $location->id )->first();
- $beacon->place_id = 0;
- $beacon->floor_id = 0;
- $beacon->location_id = 0;
- $beacon->save();
- }
+ if ($location->type == 'beacon') {
+ $beacon = Beacon::where('location_id', '=', $location->id)->first();
+ $beacon->place_id = 0;
+ $beacon->floor_id = 0;
+ $beacon->location_id = 0;
+ $beacon->save();
+ }
$beacon_id = $request->input('beacon_id');
- if ( ! empty( $beacon_id ) ) {
- $beacon = Beacon::findOrFail($beacon_id);
- $beacon->place_id = $request->input('place_id');
- $beacon->floor_id = $request->input('floor_id');
- $beacon->location_id = $location->id;
- $beacon->save();
+ if (!empty($beacon_id)) {
+ $beacon = Beacon::findOrFail($beacon_id);
+ $beacon->place_id = $request->input('place_id');
+ $beacon->floor_id = $request->input('floor_id');
+ $beacon->location_id = $location->id;
+ $beacon->save();
}
$location->update($request->all());
- if ( $location->type == 'block' ) {
- $this->createFloorMap( $location );
- }
-
- return redirect()->route('floors.show', [$placeId, $floorId]);
- }
-
- private function createFloorMap ( Location $location ) {
- $locations = $location->floor->locations;
- $floorImage = Image::make( public_path( 'uploads/floors/' . $location->floor->id . '/original-' . basename( $location->floor->image ) ) );
+ if ($location->type == 'block') {
+ $locations = Location::with('block')->get()->where('floor_id', $floorId);
- foreach( $locations as $location ) {
- if ( $location->type != 'block' || empty( $location->block->image ) ) {
- continue;
- }
+ $floor = $location->floor;
- try {
- $blockImage = Image::make( $location->block->image );
- $blockImage->rotate( -$location->rotation );
- $floorImage->insert( $blockImage, 'top-left', round( $location->posX - ( $blockImage->width() / 2 ) ), round( $location->posY - ( $blockImage->height() / 2 ) ) );
+ dispatch(new GenerateMap($locations->toArray(), $floor));
}
- catch( \Exception $e) {
- }
- }
- $floorImage->save( base_path( 'public/uploads/floors/' . $location->floor->id . '/' . basename( $location->floor->image ) ) );
+ return redirect()->route('floors.show', [$placeId, $floorId]);
}
/**
* Remove the specified resource from storage.
*
- * @param int $id
+ * @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($placeId, $floorId, $id)
{
- $location = Location::findOrFail($id);
+ $location = Location::findOrFail($id);
- if ( $location->type == 'beacon' ) {
- $beacon = Beacon::where( 'location_id', '=', $location->id )->first();
- $beacon->place_id = 0;
- $beacon->floor_id = 0;
- $beacon->location_id = 0;
- $beacon->save();
- }
+ if ($location->type == 'beacon') {
+ $beacon = Beacon::where('location_id', '=', $location->id)->first();
+ $beacon->place_id = 0;
+ $beacon->floor_id = 0;
+ $beacon->location_id = 0;
+ $beacon->save();
+ }
$location->delete();
- if ( $location->type == 'block' ) {
- $this->createFloorMap( $location );
- }
+ if ($location->type == 'block') {
+
+ $locations = Location::with('block')->get()->where('floor_id', $floorId);
+
+ $floor = $location->floor;
+
+ dispatch(new GenerateMap($locations->toArray(), $floor));
+ }
return redirect()->route('floors.show', [$placeId, $floorId]);
}
diff --git a/app/Http/Controllers/PlaceController.php b/app/Http/Controllers/PlaceController.php
index 8b63156..4315e6f 100644
--- a/app/Http/Controllers/PlaceController.php
+++ b/app/Http/Controllers/PlaceController.php
@@ -36,7 +36,7 @@ public function index()
*/
public function create()
{
- $places = Place::lists( 'name', 'id' );
+ $places = Place::pluck( 'name', 'id' );
$places->prepend( 'Select parent place...', 0 );
return view('places.create', compact('places'));
@@ -71,7 +71,7 @@ public function show($id)
{
$place = Place::findOrFail($id);
$menuitems = Menu::where('place_id', $id)->orderBy('order')->get();
- $pois = Poi::lists('name', 'id')->prepend('', '');
+ $pois = Poi::pluck('name', 'id')->prepend('', '');
return view('places.show', compact('place', 'menuitems', 'pois'));
}
@@ -87,7 +87,7 @@ public function edit($id)
{
$place = Place::findOrFail($id);
- $places = Place::lists( 'name', 'id' );
+ $places = Place::pluck( 'name', 'id' );
$places->prepend( 'Select parent place...', 0 );
return view('places.edit', compact('place','places'));
diff --git a/app/Http/Controllers/PoiController.php b/app/Http/Controllers/PoiController.php
index 3b4080f..3fca6ee 100644
--- a/app/Http/Controllers/PoiController.php
+++ b/app/Http/Controllers/PoiController.php
@@ -2,6 +2,7 @@
namespace App\Http\Controllers;
+use Image;
use App\Poi;
use App\Http\Requests;
use Illuminate\Http\Request;
@@ -36,22 +37,22 @@ public function index()
*/
public function create()
{
- $types = array('icon' => 'Icon', 'area' => 'Area');
-
+ $types = array('icon' => 'Icon', 'area' => 'Area');
+
return view('pois.create', compact('types'));
}
/**
* Store a newly created resource in storage.
*
- * @param \Illuminate\Http\Request $request
+ * @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$this->validate($request, [
- 'name' => 'required|max:255',
- 'internal_name' => 'required|max:255',
+ 'name' => 'required|max:255',
+ 'internal_name' => 'required|max:255',
]);
$poi = Poi::create($request->except('icon'));
@@ -64,7 +65,7 @@ public function store(Request $request)
/**
* Display the specified resource.
*
- * @param int $id
+ * @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
@@ -76,29 +77,29 @@ public function show($id)
/**
* Show the form for editing the specified resource.
*
- * @param int $id
+ * @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
$poi = Poi::findOrFail($id);
- $types = array('icon' => 'Icon', 'area' => 'Area');
+ $types = array('icon' => 'Icon', 'area' => 'Area');
- return view('pois.edit', compact('poi','types'));
+ return view('pois.edit', compact('poi', 'types'));
}
/**
* Update the specified resource in storage.
*
- * @param \Illuminate\Http\Request $request
- * @param int $id
+ * @param \Illuminate\Http\Request $request
+ * @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
$this->validate($request, [
- 'name' => 'required|max:255',
- 'internal_name' => 'required|max:255',
+ 'name' => 'required|max:255',
+ 'internal_name' => 'required|max:255',
]);
$poi = Poi::findOrFail($id);
@@ -109,10 +110,23 @@ public function update(Request $request, $id)
return redirect()->route('pois.index');
}
+ /**
+ * Get the specified image resource from storage.
+ *
+ * @param int $id
+ * @return \Illuminate\Http\Response
+ */
+ public function image($id)
+ {
+ $poi = Poi::findOrFail($id);
+
+ return response()->file($poi->getPhysicalIconPath());
+ }
+
/**
* Remove the specified resource from storage.
*
- * @param int $id
+ * @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
@@ -126,7 +140,7 @@ public function destroy($id)
/**
* Upload icon
* @param Poi $Poi
- * @param Request $request
+ * @param Request $request
* @return void
*/
protected function uploadIcon(Poi $poi, Request $request)
@@ -134,16 +148,14 @@ protected function uploadIcon(Poi $poi, Request $request)
if (!$request->hasFile('icon')) {
return;
}
-
- $destinationPath = public_path('uploads/pois/' . $poi->id);
- $fileName = $request->file('icon')->getClientOriginalName();
+ $request->file('icon')->store('images/pois/' . $poi->id);
+ $fileName = $request->icon->hashName();
+ $destinationPath = storage_path() . '/app/images/pois/' . $poi->id;
if ($poi->icon && is_file($destinationPath . '/' . $poi->icon)) {
unlink($destinationPath . '/' . $poi->icon);
}
- $request->file('icon')->move($destinationPath, $fileName);
-
$poi->update([
'icon' => $fileName
]);
diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php
index b70b83d..906547b 100644
--- a/app/Http/Kernel.php
+++ b/app/Http/Kernel.php
@@ -33,10 +33,12 @@ class Kernel extends HttpKernel
\App\Http\Middleware\AdminMenu::class,
\App\Http\Middleware\ConfigLoader::class,
\Xinax\LaravelGettext\Middleware\GettextMiddleware::class,
+ \Illuminate\Routing\Middleware\SubstituteBindings::class,
],
'api' => [
'throttle:60,1',
+ 'bindings',
],
];
@@ -50,8 +52,9 @@ class Kernel extends HttpKernel
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
- 'can' => \Illuminate\Foundation\Http\Middleware\Authorize::class,
+ 'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
+ 'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
];
}
diff --git a/app/Http/Middleware/ConfigLoader.php b/app/Http/Middleware/ConfigLoader.php
index f7d7a11..f2ae588 100644
--- a/app/Http/Middleware/ConfigLoader.php
+++ b/app/Http/Middleware/ConfigLoader.php
@@ -22,14 +22,14 @@ public function handle($request, Closure $next)
// check if user is logged in
if (auth()->check()) {
// get the settings in a nice key=>value format
- $settings = Setting::lists('value', 'key');
+ $settings = Setting::pluck('value', 'key');
}
// check for email input (ie. forgot password)
elseif ($request->input('email')) {
$user = User::whereEmail($request->input('email'))->first();
if ($user) {
- $settings = Setting::withoutGlobalScopes()->whereTeamId($user->current_team_id)->lists('value', 'key');
+ $settings = Setting::withoutGlobalScopes()->whereTeamId($user->current_team_id)->pluck('value', 'key');
}
}
diff --git a/app/Jobs/GenerateMap.php b/app/Jobs/GenerateMap.php
new file mode 100644
index 0000000..4f27b6f
--- /dev/null
+++ b/app/Jobs/GenerateMap.php
@@ -0,0 +1,54 @@
+locations = $locations;
+ $this->floor = $floor;
+ }
+
+ /**
+ * Execute the job.
+ *
+ * @return void
+ */
+ public function handle()
+ {
+ $floorImage = Image::make(storage_path() . '/app/images/floors/' . $this->floor->id . '/original-' . basename($this->floor->image));
+
+ foreach ($this->locations as $location) {
+
+ if ($location['type'] != 'block' || empty($location['block']['image'])) {
+ continue;
+ }
+
+ try {
+ $blockImage = Image::make(storage_path() . '/app/images/blocks/' . $location['block']['id'] . '/' . $location['block']['image']);
+ $blockImage->rotate(-$location['rotation']);
+ $floorImage->insert($blockImage, 'top-left', round($location['posX'] - ($blockImage->width() / 2)), round($location['posY'] - ($blockImage->height() / 2)));
+ } catch (\Exception $e) {
+
+ }
+ }
+
+ $floorImage->save(storage_path() . '/app/images/floors/' . $this->floor->id . '/' . basename($this->floor->image));
+ }
+}
diff --git a/app/Jobs/ImportBeaconsJob.php b/app/Jobs/ImportBeaconsJob.php
new file mode 100644
index 0000000..cbfc864
--- /dev/null
+++ b/app/Jobs/ImportBeaconsJob.php
@@ -0,0 +1,222 @@
+service = $service;
+ }
+
+ /**
+ * Execute the job.
+ *
+ * @return void
+ */
+ public function handle()
+ {
+ $externalBeacons = $this->getBeaconsFromWebservice($this->service);
+ foreach ($externalBeacons as $externalBeaconId) {
+ $beacon = DB::table('beacons')->where('beacon_uid', $externalBeaconId)->first();
+
+ if (empty($beacon)) {
+
+ $device = $this->getBeaconFromWebservice($externalBeaconId, $this->service);
+ try {
+ DB::table('beacons')->insert([
+ 'name' => $device->uniqueId,
+ 'beacon_uid' => $device->uniqueId,
+ 'proximity_uuid' => $device->proximity,
+ 'minor' => $device->minor,
+ 'major' => $device->major,
+ 'created_at' => Carbon::now()->toDateTimeString(),
+ 'updated_at' => Carbon::now()->toDateTimeString()
+ ]);
+ } catch (\Exception $e) {
+ echo $e;
+ }
+
+ } else {
+ echo "tom!";
+ }
+ }
+
+ }
+
+ /**
+ * Get beacons from Kontakt webservice
+ * @return Illuminate\Support\Collection
+ */
+ protected function getBeaconsFromWebservice($service)
+ {
+ $data = [];
+ switch ($service) {
+ case 'kontakt.io':
+ $data = $this->getBeaconsFromKontakt();
+ break;
+ case 'estimote':
+ $data = $this->getBeaconsFromEstimote();
+ break;
+ case 'test':
+ $data = $this->getBeaconsFromTest();
+ break;
+ }
+ return $data;
+ }
+
+ protected function getBeaconFromWebservice($beaconId, $service)
+ {
+ $data = [];
+
+ switch ($service) {
+ case 'kontakt.io':
+ $data = $this->getBeaconFromKontakt($beaconId);
+ break;
+ case 'estimote':
+ $data = $this->getBeaconFromEstimote($beaconId);
+ break;
+ case 'test':
+ $data = $this->getBeaconFromTest($beaconId);
+ break;
+ }
+ return $data;
+ }
+
+ protected function getBeaconsFromKontakt()
+ {
+ $settings = DB::table('settings')->get();
+
+ $client = new Client([
+ 'base_uri' => 'https://api.kontakt.io/',
+ 'headers' => [
+ 'Accept' => 'application/vnd.com.kontakt+json;version=8',
+ 'Api-Key' => $settings[3]->value,
+ 'User-Agent' => 'BeaconBacon'
+ ]
+ ]);
+
+ try {
+ $response = $client->request('GET', '/device?maxResult=5');
+ $results = json_decode($response->getBody()->getContents());
+ $devices = collect();
+
+ foreach ($results->devices as $device) {
+ $devices->put($device->uniqueId, $device->uniqueId . ($device->alias ? ' (' . $device->alias . ')' : ''));
+
+ }
+
+ return $devices;
+ } catch (\Exception $e) {
+ return [];
+ }
+ }
+
+ protected function getBeaconFromKontakt($beaconId)
+ {
+ $settings = DB::table('settings')->get();
+
+ $client = new Client([
+ 'base_uri' => 'https://api.kontakt.io/',
+ 'headers' => [
+ 'Accept' => 'application/vnd.com.kontakt+json;version=8',
+ 'Api-Key' => $settings[3]->value,
+ 'User-Agent' => 'BeaconBacon'
+ ]
+ ]);
+
+ try {
+ $response = $client->request('GET', '/device/' . $beaconId);
+ $results = json_decode($response->getBody()->getContents());
+ return $results;
+ } catch (\Exception $e) {
+ echo $e;
+ return null;
+ }
+ }
+
+ protected function getBeaconsFromEstimote()
+ {
+ $settings = DB::table('settings')->get();
+
+ $client = new Client([
+ 'base_uri' => 'https://cloud.estimote.com/v2/',
+ 'headers' => [
+ 'Accept' => 'application/json;'
+ ]
+ ]);
+
+ try {
+ $response = $client->request('GET', 'devices', ['auth' => ['user', $settings[3]->value]]);
+ $results = json_decode($response->getBody()->getContents());
+ $devices = collect();
+
+ foreach ($results->devices as $device) {
+ $devices->put($device->uniqueId, $device->uniqueId . ($device->alias ? ' (' . $device->alias . ')' : ''));
+ }
+
+ return $devices;
+ } catch (\Exception $e) {
+ return [];
+ }
+ }
+
+ protected function getBeaconFromEstimote($beaconId)
+ {
+ $settings = DB::table('settings')->get();
+
+ $client = new Client([
+ 'base_uri' => 'https://cloud.estimote.com/v2/',
+ 'headers' => [
+ 'Accept' => 'application/json'
+ ]
+ ]);
+
+ try {
+ $response = $client->request('GET', 'devices/' . $beaconId, ['auth' => ['user', $settings[3]->value]]);
+ $results = json_decode($response->getBody()->getContents());
+ return $results;
+ } catch (\Exception $e) {
+ return null;
+ }
+ }
+
+ protected function getBeaconsFromTest()
+ {
+ $devices = collect();
+
+ $devices->put('uniqueId', 'testeren');
+ $devices->put('uniqueId', 'tove2');
+
+ return $devices;
+ }
+
+ protected function getBeaconFromTest($beaconId)
+ {
+ $data = new \stdClass;
+ $data->uniqueId = "tove2";
+ $data->beacon_uid = "tove2";
+ $data->proximity = "testeren";
+ $data->minor = "1234";
+ $data->major = "4321";
+
+ return $data;
+ }
+}
diff --git a/app/Location.php b/app/Location.php
index a5cd740..58efc3f 100644
--- a/app/Location.php
+++ b/app/Location.php
@@ -17,7 +17,7 @@ class Location extends Model
*
* @var array
*/
- protected $fillable = ['place_id', 'floor_id', 'poi_id', 'block_id', 'findable_id', 'type', 'name', 'posX', 'posY', 'area', 'rotation', 'parameter_one', 'parameter_two', 'parameter_three', 'parameter_four', 'parameter_five'];
+ protected $fillable = ['place_id', 'floor_id', 'poi_id', 'block_id', 'findable_id', 'type', 'name', 'posX', 'posY', 'area', 'rotation', 'parameter_one', 'parameter_two', 'parameter_three', 'parameter_four', 'parameter_five', 'draw_type'];
/**
* The attributes that should be mutated to dates.
diff --git a/app/Place.php b/app/Place.php
index 05b03d7..34a57d5 100644
--- a/app/Place.php
+++ b/app/Place.php
@@ -17,7 +17,9 @@ class Place extends Model
*
* @var array
*/
- protected $fillable = ['name', 'address', 'zipcode', 'city', 'identifier', 'place_id', 'order', 'beacon_positioning_enabled', 'beacon_proximity_enabled', 'activated'];
+ protected $fillable = ['name', 'address', 'zipcode', 'city',
+ 'identifier_one', 'identifier_one', 'identifier_three', 'identifier_four', 'identifier_five',
+ 'place_id', 'order', 'beacon_positioning_enabled', 'beacon_proximity_enabled', 'activated'];
/**
* The attributes that should be mutated to dates.
diff --git a/app/Poi.php b/app/Poi.php
index 9f2730c..eb8bedd 100644
--- a/app/Poi.php
+++ b/app/Poi.php
@@ -41,17 +41,36 @@ class Poi extends Model
protected static $logAttributes = ['name', 'internal_name', 'icon'];
/**
- * Return full path to icon.
+ * Return full path to image.
*
* @param string $value
*
* @return string
*/
- public function getIconAttribute($value)
+ public function getPublicImage()
{
- return !$value ? '' : asset('uploads/pois/'.$this->id.'/'.$value);
+ return !$this->icon ? '' : asset('storage/images/pois/' . $this->id . '/' . $this->icon);
}
+ /**
+ * Return full virtual path to icon.
+ *
+ * @return string
+ */
+ public function getVirtualIconPath()
+ {
+ return !$this->icon ? '' : url('/pois/' . $this->id . '/image');
+ }
+
+ /**
+ * Return full physical path to icon.
+ *
+ * @return string
+ */
+ public function getPhysicalIconPath()
+ {
+ return !$this->icon ? '' : storage_path() . '/app/images/pois/' . $this->id . '/' . $this->icon;
+ }
/**
* Get locations belonging to this poi
@@ -59,7 +78,7 @@ public function getIconAttribute($value)
*/
public function locations()
{
- return $this->hasMany('App\Location');
+ return $this->hasMany('App\Location');
}
/**
diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php
index 35471f6..a5813fe 100644
--- a/app/Providers/AppServiceProvider.php
+++ b/app/Providers/AppServiceProvider.php
@@ -3,6 +3,8 @@
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
+use Illuminate\Support\Facades\Validator;
+use Intervention\Image\ImageManagerStatic;
class AppServiceProvider extends ServiceProvider
{
@@ -13,7 +15,14 @@ class AppServiceProvider extends ServiceProvider
*/
public function boot()
{
- //
+ Validator::extend('imageable', function ($attribute, $value, $params, $validator) {
+ try {
+ ImageManagerStatic::make($value);
+ return true;
+ } catch (\Exception $e) {
+ return false;
+ }
+ });
}
/**
@@ -23,6 +32,7 @@ public function boot()
*/
public function register()
{
+
//
}
}
diff --git a/app/Providers/AuthServiceProvider.php b/app/Providers/AuthServiceProvider.php
index 57d88ea..bd87817 100644
--- a/app/Providers/AuthServiceProvider.php
+++ b/app/Providers/AuthServiceProvider.php
@@ -22,9 +22,9 @@ class AuthServiceProvider extends ServiceProvider
* @param \Illuminate\Contracts\Auth\Access\Gate $gate
* @return void
*/
- public function boot(GateContract $gate)
+ public function boot()
{
- $this->registerPolicies($gate);
+ $this->registerPolicies();
//
}
diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php
index 58ce962..2d82960 100644
--- a/app/Providers/EventServiceProvider.php
+++ b/app/Providers/EventServiceProvider.php
@@ -24,9 +24,9 @@ class EventServiceProvider extends ServiceProvider
* @param \Illuminate\Contracts\Events\Dispatcher $events
* @return void
*/
- public function boot(DispatcherContract $events)
+ public function boot()
{
- parent::boot($events);
+ parent::boot();
//
}
diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php
index bde0881..e77a2ab 100644
--- a/app/Providers/RouteServiceProvider.php
+++ b/app/Providers/RouteServiceProvider.php
@@ -2,7 +2,7 @@
namespace App\Providers;
-use Illuminate\Routing\Router;
+use Illuminate\Support\Facades\Route;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
class RouteServiceProvider extends ServiceProvider
@@ -19,27 +19,27 @@ class RouteServiceProvider extends ServiceProvider
/**
* Define your route model bindings, pattern filters, etc.
*
- * @param \Illuminate\Routing\Router $router
+ * @param \Illuminate\Routing\Router $router
* @return void
*/
- public function boot(Router $router)
+ public function boot()
{
//
- parent::boot($router);
+ parent::boot();
}
/**
* Define the routes for the application.
*
- * @param \Illuminate\Routing\Router $router
+ * @param \Illuminate\Routing\Router $router
* @return void
*/
- public function map(Router $router)
+ public function map()
{
- $this->mapWebRoutes($router);
-
- //
+ $this->mapApi1Routes();
+ $this->mapApi2Routes();
+ $this->mapWebRoutes();
}
/**
@@ -47,15 +47,51 @@ public function map(Router $router)
*
* These routes all receive session state, CSRF protection, etc.
*
- * @param \Illuminate\Routing\Router $router
+ * @param \Illuminate\Routing\Router $router
* @return void
*/
- protected function mapWebRoutes(Router $router)
+ protected function mapWebRoutes()
{
- $router->group([
+ Route::group([
'namespace' => $this->namespace, 'middleware' => 'web',
], function ($router) {
- require app_path('Http/routes.php');
+ require base_path('routes/web.php');
+ });
+ }
+
+ /**
+ * Define the "api" routes for the application.
+ *
+ * These routes are typically stateless.
+ *
+ * @return void
+ */
+ protected function mapApi1Routes()
+ {
+ Route::group([
+ 'middleware' => 'auth:api',
+ 'namespace' => $this->namespace .'\API\V1',
+ 'prefix' => 'api/v1',
+ ], function ($router) {
+ require base_path('routes/api1.php');
+ });
+ }
+
+ /**
+ * Define the "api" routes for the application.
+ *
+ * These routes are typically stateless.
+ *
+ * @return void
+ */
+ protected function mapApi2Routes()
+ {
+ Route::group([
+ 'middleware' => 'auth:api',
+ 'namespace' => $this->namespace .'\API\V2',
+ 'prefix' => 'api/v2',
+ ], function ($router) {
+ require base_path('routes/api2.php');
});
}
}
diff --git a/app/User.php b/app/User.php
index 7dec34e..1ed12ae 100644
--- a/app/User.php
+++ b/app/User.php
@@ -2,13 +2,14 @@
namespace App;
+use Illuminate\Notifications\Notifiable;
use Mpociot\Teamwork\Traits\UserHasTeams;
use Spatie\Activitylog\Traits\LogsActivity;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
- use UserHasTeams, LogsActivity;
+ use UserHasTeams, LogsActivity, Notifiable;
/**
* The attributes that are mass assignable.
diff --git a/composer.json b/composer.json
index 26ea021..006b1bf 100644
--- a/composer.json
+++ b/composer.json
@@ -6,33 +6,36 @@
"type": "project",
"require": {
"php": ">=5.5.9",
- "laravel/framework": "5.2.*",
+ "laravel/framework": "5.3.*",
"barryvdh/laravel-debugbar": "^2.2",
"filp/whoops": "^2.1",
- "laravelcollective/html": "5.2.*",
+ "laravelcollective/html": "5.3.*",
"lavary/laravel-menu": "dev-master",
- "mpociot/teamwork": "~3.0",
+ "mpociot/teamwork": "~4.0",
"guzzlehttp/guzzle": "~6.0",
"intervention/image": "^2.3",
"spatie/laravel-activitylog": "^1.2",
"xinax/laravel-gettext": "^3.1",
"doctrine/dbal": "~2.3",
- "artisaninweb/laravel-soap": "0.2.*"
+ "artisaninweb/laravel-soap": "0.2.*",
+ "pda/pheanstalk": "~3.0"
},
"require-dev": {
"fzaninotto/faker": "~1.4",
"mockery/mockery": "0.9.*",
"phpunit/phpunit": "~4.0",
- "symfony/css-selector": "2.8.*|3.0.*",
- "symfony/dom-crawler": "2.8.*|3.0.*"
+ "symfony/css-selector": "3.1.*",
+ "symfony/dom-crawler": "3.1.*"
},
"autoload": {
"classmap": [
"database"
],
"psr-4": {
- "App\\": "app/"
+ "App\\": "app/",
+ "BB\\":"storage/app/files/findables/"
}
+
},
"autoload-dev": {
"classmap": [
diff --git a/composer.lock b/composer.lock
index 4b63aa3..f795bac 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,8 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
- "hash": "daadca074b9bf991b63f0cedcb1db58a",
- "content-hash": "77a028d042c54ce37f936b21ef9ab59c",
+ "content-hash": "1a38080ad47587295799aa7873a2d8c0",
"packages": [
{
"name": "anahkiasen/underscore-php",
@@ -55,7 +54,7 @@
"laravel",
"toolkit"
],
- "time": "2015-05-16 19:24:58"
+ "time": "2015-05-16T19:24:58+00:00"
},
{
"name": "artisaninweb/laravel-soap",
@@ -97,24 +96,24 @@
"soap",
"wrapper"
],
- "time": "2015-06-17 11:22:29"
+ "time": "2015-06-17T11:22:29+00:00"
},
{
"name": "barryvdh/laravel-debugbar",
- "version": "v2.3.0",
+ "version": "v2.3.2",
"source": {
"type": "git",
"url": "https://github.com/barryvdh/laravel-debugbar.git",
- "reference": "0c87981df959c7c1943abe227baf607c92f204f9"
+ "reference": "24e4f0261e352d3fd86d0447791b56ae49398674"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/0c87981df959c7c1943abe227baf607c92f204f9",
- "reference": "0c87981df959c7c1943abe227baf607c92f204f9",
+ "url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/24e4f0261e352d3fd86d0447791b56ae49398674",
+ "reference": "24e4f0261e352d3fd86d0447791b56ae49398674",
"shasum": ""
},
"require": {
- "illuminate/support": "5.1.*|5.2.*|5.3.*",
+ "illuminate/support": "5.1.*|5.2.*|5.3.*|5.4.*",
"maximebf/debugbar": "~1.13.0",
"php": ">=5.5.9",
"symfony/finder": "~2.7|~3.0"
@@ -151,24 +150,24 @@
"profiler",
"webprofiler"
],
- "time": "2016-09-15 14:05:56"
+ "time": "2017-01-19T08:19:49+00:00"
},
{
"name": "classpreloader/classpreloader",
- "version": "3.0.0",
+ "version": "3.1.0",
"source": {
"type": "git",
"url": "https://github.com/ClassPreloader/ClassPreloader.git",
- "reference": "9b10b913c2bdf90c3d2e0d726b454fb7f77c552a"
+ "reference": "bc7206aa892b5a33f4680421b69b191efd32b096"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/ClassPreloader/ClassPreloader/zipball/9b10b913c2bdf90c3d2e0d726b454fb7f77c552a",
- "reference": "9b10b913c2bdf90c3d2e0d726b454fb7f77c552a",
+ "url": "https://api.github.com/repos/ClassPreloader/ClassPreloader/zipball/bc7206aa892b5a33f4680421b69b191efd32b096",
+ "reference": "bc7206aa892b5a33f4680421b69b191efd32b096",
"shasum": ""
},
"require": {
- "nikic/php-parser": "^1.0|^2.0",
+ "nikic/php-parser": "^1.0|^2.0|^3.0",
"php": ">=5.5.9"
},
"require-dev": {
@@ -177,7 +176,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.0-dev"
+ "dev-master": "3.1-dev"
}
},
"autoload": {
@@ -205,7 +204,7 @@
"class",
"preload"
],
- "time": "2015-11-09 22:51:51"
+ "time": "2016-09-16T12:50:15+00:00"
},
{
"name": "dnoegel/php-xdg-base-dir",
@@ -238,20 +237,20 @@
"MIT"
],
"description": "implementation of xdg base directory specification for php",
- "time": "2014-10-24 07:27:01"
+ "time": "2014-10-24T07:27:01+00:00"
},
{
"name": "doctrine/annotations",
- "version": "v1.3.0",
+ "version": "v1.3.1",
"source": {
"type": "git",
"url": "https://github.com/doctrine/annotations.git",
- "reference": "30e07cf03edc3cd3ef579d0dd4dd8c58250799a5"
+ "reference": "bd4461328621bde0ae6b1b2675fbc6aca4ceb558"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/annotations/zipball/30e07cf03edc3cd3ef579d0dd4dd8c58250799a5",
- "reference": "30e07cf03edc3cd3ef579d0dd4dd8c58250799a5",
+ "url": "https://api.github.com/repos/doctrine/annotations/zipball/bd4461328621bde0ae6b1b2675fbc6aca4ceb558",
+ "reference": "bd4461328621bde0ae6b1b2675fbc6aca4ceb558",
"shasum": ""
},
"require": {
@@ -306,7 +305,7 @@
"docblock",
"parser"
],
- "time": "2016-10-24 11:45:47"
+ "time": "2016-12-30T15:59:45+00:00"
},
{
"name": "doctrine/cache",
@@ -376,32 +375,33 @@
"cache",
"caching"
],
- "time": "2016-10-29 11:16:17"
+ "time": "2016-10-29T11:16:17+00:00"
},
{
"name": "doctrine/collections",
- "version": "v1.3.0",
+ "version": "v1.4.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/collections.git",
- "reference": "6c1e4eef75f310ea1b3e30945e9f06e652128b8a"
+ "reference": "1a4fb7e902202c33cce8c55989b945612943c2ba"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/collections/zipball/6c1e4eef75f310ea1b3e30945e9f06e652128b8a",
- "reference": "6c1e4eef75f310ea1b3e30945e9f06e652128b8a",
+ "url": "https://api.github.com/repos/doctrine/collections/zipball/1a4fb7e902202c33cce8c55989b945612943c2ba",
+ "reference": "1a4fb7e902202c33cce8c55989b945612943c2ba",
"shasum": ""
},
"require": {
- "php": ">=5.3.2"
+ "php": "^5.6 || ^7.0"
},
"require-dev": {
- "phpunit/phpunit": "~4.0"
+ "doctrine/coding-standard": "~0.1@dev",
+ "phpunit/phpunit": "^5.7"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.2.x-dev"
+ "dev-master": "1.3.x-dev"
}
},
"autoload": {
@@ -442,20 +442,20 @@
"collections",
"iterator"
],
- "time": "2015-04-14 22:21:58"
+ "time": "2017-01-03T10:49:41+00:00"
},
{
"name": "doctrine/common",
- "version": "v2.6.1",
+ "version": "v2.7.2",
"source": {
"type": "git",
"url": "https://github.com/doctrine/common.git",
- "reference": "a579557bc689580c19fee4e27487a67fe60defc0"
+ "reference": "930297026c8009a567ac051fd545bf6124150347"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/common/zipball/a579557bc689580c19fee4e27487a67fe60defc0",
- "reference": "a579557bc689580c19fee4e27487a67fe60defc0",
+ "url": "https://api.github.com/repos/doctrine/common/zipball/930297026c8009a567ac051fd545bf6124150347",
+ "reference": "930297026c8009a567ac051fd545bf6124150347",
"shasum": ""
},
"require": {
@@ -464,10 +464,10 @@
"doctrine/collections": "1.*",
"doctrine/inflector": "1.*",
"doctrine/lexer": "1.*",
- "php": "~5.5|~7.0"
+ "php": "~5.6|~7.0"
},
"require-dev": {
- "phpunit/phpunit": "~4.8|~5.0"
+ "phpunit/phpunit": "^5.4.6"
},
"type": "library",
"extra": {
@@ -515,24 +515,24 @@
"persistence",
"spl"
],
- "time": "2015-12-25 13:18:31"
+ "time": "2017-01-13T14:02:13+00:00"
},
{
"name": "doctrine/dbal",
- "version": "v2.5.5",
+ "version": "v2.5.12",
"source": {
"type": "git",
"url": "https://github.com/doctrine/dbal.git",
- "reference": "9f8c05cd5225a320d56d4bfdb4772f10d045a0c9"
+ "reference": "7b9e911f9d8b30d43b96853dab26898c710d8f44"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/dbal/zipball/9f8c05cd5225a320d56d4bfdb4772f10d045a0c9",
- "reference": "9f8c05cd5225a320d56d4bfdb4772f10d045a0c9",
+ "url": "https://api.github.com/repos/doctrine/dbal/zipball/7b9e911f9d8b30d43b96853dab26898c710d8f44",
+ "reference": "7b9e911f9d8b30d43b96853dab26898c710d8f44",
"shasum": ""
},
"require": {
- "doctrine/common": ">=2.4,<2.7-dev",
+ "doctrine/common": ">=2.4,<2.8-dev",
"php": ">=5.3.2"
},
"require-dev": {
@@ -586,7 +586,7 @@
"persistence",
"queryobject"
],
- "time": "2016-09-09 19:13:33"
+ "time": "2017-02-08T12:53:47+00:00"
},
{
"name": "doctrine/inflector",
@@ -653,7 +653,7 @@
"singularize",
"string"
],
- "time": "2015-11-06 14:35:42"
+ "time": "2015-11-06T14:35:42+00:00"
},
{
"name": "doctrine/lexer",
@@ -707,20 +707,20 @@
"lexer",
"parser"
],
- "time": "2014-09-09 13:34:57"
+ "time": "2014-09-09T13:34:57+00:00"
},
{
"name": "filp/whoops",
- "version": "2.1.4",
+ "version": "2.1.5",
"source": {
"type": "git",
"url": "https://github.com/filp/whoops.git",
- "reference": "3f5cbd0e6a2fc17bc40b0238025ef1ff4c8c3efa"
+ "reference": "2abce9d956589122c6443d6265f01cf7e9388e3c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/filp/whoops/zipball/3f5cbd0e6a2fc17bc40b0238025ef1ff4c8c3efa",
- "reference": "3f5cbd0e6a2fc17bc40b0238025ef1ff4c8c3efa",
+ "url": "https://api.github.com/repos/filp/whoops/zipball/2abce9d956589122c6443d6265f01cf7e9388e3c",
+ "reference": "2abce9d956589122c6443d6265f01cf7e9388e3c",
"shasum": ""
},
"require": {
@@ -767,7 +767,7 @@
"whoops",
"zf2"
],
- "time": "2016-10-11 15:32:23"
+ "time": "2016-12-26T16:13:31+00:00"
},
{
"name": "guzzlehttp/guzzle",
@@ -829,32 +829,32 @@
"rest",
"web service"
],
- "time": "2016-10-08 15:01:37"
+ "time": "2016-10-08T15:01:37+00:00"
},
{
"name": "guzzlehttp/promises",
- "version": "1.3.0",
+ "version": "v1.3.1",
"source": {
"type": "git",
"url": "https://github.com/guzzle/promises.git",
- "reference": "2693c101803ca78b27972d84081d027fca790a1e"
+ "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/guzzle/promises/zipball/2693c101803ca78b27972d84081d027fca790a1e",
- "reference": "2693c101803ca78b27972d84081d027fca790a1e",
+ "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646",
+ "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646",
"shasum": ""
},
"require": {
"php": ">=5.5.0"
},
"require-dev": {
- "phpunit/phpunit": "~4.0"
+ "phpunit/phpunit": "^4.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.0-dev"
+ "dev-master": "1.4-dev"
}
},
"autoload": {
@@ -880,7 +880,7 @@
"keywords": [
"promise"
],
- "time": "2016-11-18 17:47:58"
+ "time": "2016-12-20T10:07:11+00:00"
},
{
"name": "guzzlehttp/psr7",
@@ -938,20 +938,20 @@
"stream",
"uri"
],
- "time": "2016-06-24 23:00:38"
+ "time": "2016-06-24T23:00:38+00:00"
},
{
"name": "intervention/image",
- "version": "2.3.8",
+ "version": "2.3.11",
"source": {
"type": "git",
"url": "https://github.com/Intervention/image.git",
- "reference": "4064a980324f6c3bfa2bd981dfb247afa705ec3c"
+ "reference": "e8881fd99b9804b29e02d6d1c2c15ee459335cf1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Intervention/image/zipball/4064a980324f6c3bfa2bd981dfb247afa705ec3c",
- "reference": "4064a980324f6c3bfa2bd981dfb247afa705ec3c",
+ "url": "https://api.github.com/repos/Intervention/image/zipball/e8881fd99b9804b29e02d6d1c2c15ee459335cf1",
+ "reference": "e8881fd99b9804b29e02d6d1c2c15ee459335cf1",
"shasum": ""
},
"require": {
@@ -1000,7 +1000,7 @@
"thumbnail",
"watermark"
],
- "time": "2016-09-01 17:04:03"
+ "time": "2017-02-04T10:37:19+00:00"
},
{
"name": "jakub-onderka/php-console-color",
@@ -1043,7 +1043,7 @@
"homepage": "http://www.acci.cz"
}
],
- "time": "2014-04-08 15:00:19"
+ "time": "2014-04-08T15:00:19+00:00"
},
{
"name": "jakub-onderka/php-console-highlighter",
@@ -1087,24 +1087,24 @@
"homepage": "http://www.acci.cz/"
}
],
- "time": "2015-04-20 18:58:01"
+ "time": "2015-04-20T18:58:01+00:00"
},
{
"name": "jeremeamia/SuperClosure",
- "version": "2.2.0",
+ "version": "2.3.0",
"source": {
"type": "git",
"url": "https://github.com/jeremeamia/super_closure.git",
- "reference": "29a88be2a4846d27c1613aed0c9071dfad7b5938"
+ "reference": "443c3df3207f176a1b41576ee2a66968a507b3db"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/jeremeamia/super_closure/zipball/29a88be2a4846d27c1613aed0c9071dfad7b5938",
- "reference": "29a88be2a4846d27c1613aed0c9071dfad7b5938",
+ "url": "https://api.github.com/repos/jeremeamia/super_closure/zipball/443c3df3207f176a1b41576ee2a66968a507b3db",
+ "reference": "443c3df3207f176a1b41576ee2a66968a507b3db",
"shasum": ""
},
"require": {
- "nikic/php-parser": "^1.2|^2.0",
+ "nikic/php-parser": "^1.2|^2.0|^3.0",
"php": ">=5.4",
"symfony/polyfill-php56": "^1.0"
},
@@ -1114,7 +1114,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.2-dev"
+ "dev-master": "2.3-dev"
}
},
"autoload": {
@@ -1145,20 +1145,20 @@
"serialize",
"tokenizer"
],
- "time": "2015-12-05 17:17:57"
+ "time": "2016-12-07T09:37:55+00:00"
},
{
"name": "laravel/framework",
- "version": "v5.2.45",
+ "version": "v5.3.30",
"source": {
"type": "git",
"url": "https://github.com/laravel/framework.git",
- "reference": "2a79f920d5584ec6df7cf996d922a742d11095d1"
+ "reference": "2d4e8c95f584b38d2279b552e2868fc447b97578"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/framework/zipball/2a79f920d5584ec6df7cf996d922a742d11095d1",
- "reference": "2a79f920d5584ec6df7cf996d922a742d11095d1",
+ "url": "https://api.github.com/repos/laravel/framework/zipball/2d4e8c95f584b38d2279b552e2868fc447b97578",
+ "reference": "2d4e8c95f584b38d2279b552e2868fc447b97578",
"shasum": ""
},
"require": {
@@ -1171,20 +1171,20 @@
"monolog/monolog": "~1.11",
"mtdowling/cron-expression": "~1.0",
"nesbot/carbon": "~1.20",
- "paragonie/random_compat": "~1.4",
- "php": ">=5.5.9",
- "psy/psysh": "0.7.*",
- "swiftmailer/swiftmailer": "~5.1",
- "symfony/console": "2.8.*|3.0.*",
- "symfony/debug": "2.8.*|3.0.*",
- "symfony/finder": "2.8.*|3.0.*",
- "symfony/http-foundation": "2.8.*|3.0.*",
- "symfony/http-kernel": "2.8.*|3.0.*",
- "symfony/polyfill-php56": "~1.0",
- "symfony/process": "2.8.*|3.0.*",
- "symfony/routing": "2.8.*|3.0.*",
- "symfony/translation": "2.8.*|3.0.*",
- "symfony/var-dumper": "2.8.*|3.0.*",
+ "paragonie/random_compat": "~1.4|~2.0",
+ "php": ">=5.6.4",
+ "psy/psysh": "0.7.*|0.8.*",
+ "ramsey/uuid": "~3.0",
+ "swiftmailer/swiftmailer": "~5.4",
+ "symfony/console": "3.1.*",
+ "symfony/debug": "3.1.*",
+ "symfony/finder": "3.1.*",
+ "symfony/http-foundation": "3.1.*",
+ "symfony/http-kernel": "3.1.*",
+ "symfony/process": "3.1.*",
+ "symfony/routing": "3.1.*",
+ "symfony/translation": "3.1.*",
+ "symfony/var-dumper": "3.1.*",
"vlucas/phpdotenv": "~2.2"
},
"replace": {
@@ -1206,6 +1206,7 @@
"illuminate/http": "self.version",
"illuminate/log": "self.version",
"illuminate/mail": "self.version",
+ "illuminate/notifications": "self.version",
"illuminate/pagination": "self.version",
"illuminate/pipeline": "self.version",
"illuminate/queue": "self.version",
@@ -1222,10 +1223,10 @@
"aws/aws-sdk-php": "~3.0",
"mockery/mockery": "~0.9.4",
"pda/pheanstalk": "~3.0",
- "phpunit/phpunit": "~4.1",
+ "phpunit/phpunit": "~5.4",
"predis/predis": "~1.0",
- "symfony/css-selector": "2.8.*|3.0.*",
- "symfony/dom-crawler": "2.8.*|3.0.*"
+ "symfony/css-selector": "3.1.*",
+ "symfony/dom-crawler": "3.1.*"
},
"suggest": {
"aws/aws-sdk-php": "Required to use the SQS queue driver and SES mail driver (~3.0).",
@@ -1237,20 +1238,17 @@
"pda/pheanstalk": "Required to use the beanstalk queue driver (~3.0).",
"predis/predis": "Required to use the redis cache and queue drivers (~1.0).",
"pusher/pusher-php-server": "Required to use the Pusher broadcast driver (~2.0).",
- "symfony/css-selector": "Required to use some of the crawler integration testing tools (2.8.*|3.0.*).",
- "symfony/dom-crawler": "Required to use most of the crawler integration testing tools (2.8.*|3.0.*).",
+ "symfony/css-selector": "Required to use some of the crawler integration testing tools (3.1.*).",
+ "symfony/dom-crawler": "Required to use most of the crawler integration testing tools (3.1.*).",
"symfony/psr-http-message-bridge": "Required to use psr7 bridging features (0.2.*)."
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "5.2-dev"
+ "dev-master": "5.3-dev"
}
},
"autoload": {
- "classmap": [
- "src/Illuminate/Queue/IlluminateQueueClosure.php"
- ],
"files": [
"src/Illuminate/Foundation/helpers.php",
"src/Illuminate/Support/helpers.php"
@@ -1266,43 +1264,43 @@
"authors": [
{
"name": "Taylor Otwell",
- "email": "taylorotwell@gmail.com"
+ "email": "taylor@laravel.com"
}
],
"description": "The Laravel Framework.",
- "homepage": "http://laravel.com",
+ "homepage": "https://laravel.com",
"keywords": [
"framework",
"laravel"
],
- "time": "2016-08-26 11:44:52"
+ "time": "2017-01-26T14:29:55+00:00"
},
{
"name": "laravelcollective/html",
- "version": "v5.2.4",
+ "version": "v5.3.1",
"source": {
"type": "git",
"url": "https://github.com/LaravelCollective/html.git",
- "reference": "3a312d39ffe37da0f57b602618b61fd07c1fcec5"
+ "reference": "2f7f2e127c6fed47f269ea29ab5efeb8f65e9d35"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/LaravelCollective/html/zipball/3a312d39ffe37da0f57b602618b61fd07c1fcec5",
- "reference": "3a312d39ffe37da0f57b602618b61fd07c1fcec5",
+ "url": "https://api.github.com/repos/LaravelCollective/html/zipball/2f7f2e127c6fed47f269ea29ab5efeb8f65e9d35",
+ "reference": "2f7f2e127c6fed47f269ea29ab5efeb8f65e9d35",
"shasum": ""
},
"require": {
- "illuminate/http": "5.2.*",
- "illuminate/routing": "5.2.*",
- "illuminate/session": "5.2.*",
- "illuminate/support": "5.2.*",
- "illuminate/view": "5.2.*",
- "php": ">=5.5.9"
+ "illuminate/http": "5.3.*",
+ "illuminate/routing": "5.3.*",
+ "illuminate/session": "5.3.*",
+ "illuminate/support": "5.3.*",
+ "illuminate/view": "5.3.*",
+ "php": ">=5.6.4"
},
"require-dev": {
- "illuminate/database": "5.2.*",
- "mockery/mockery": "~0.9",
- "phpunit/phpunit": "~4.0"
+ "illuminate/database": "5.3.*",
+ "mockery/mockery": "~0.9.4",
+ "phpunit/phpunit": "~5.4"
},
"type": "library",
"autoload": {
@@ -1329,7 +1327,7 @@
],
"description": "HTML and Form Builders for the Laravel Framework",
"homepage": "http://laravelcollective.com",
- "time": "2016-01-27 22:29:54"
+ "time": "2016-12-13T14:23:36+00:00"
},
{
"name": "lavary/laravel-menu",
@@ -1371,20 +1369,20 @@
"keywords": [
"laravel"
],
- "time": "2016-11-11 10:16:37"
+ "time": "2016-11-11T10:16:37+00:00"
},
{
"name": "league/flysystem",
- "version": "1.0.32",
+ "version": "1.0.35",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/flysystem.git",
- "reference": "1b5c4a0031697f46e779a9d1b309c2e1b24daeab"
+ "reference": "dda7f3ab94158a002d9846a97dc18ebfb7acc062"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/1b5c4a0031697f46e779a9d1b309c2e1b24daeab",
- "reference": "1b5c4a0031697f46e779a9d1b309c2e1b24daeab",
+ "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/dda7f3ab94158a002d9846a97dc18ebfb7acc062",
+ "reference": "dda7f3ab94158a002d9846a97dc18ebfb7acc062",
"shasum": ""
},
"require": {
@@ -1454,20 +1452,20 @@
"sftp",
"storage"
],
- "time": "2016-10-19 20:38:46"
+ "time": "2017-02-09T11:33:58+00:00"
},
{
"name": "maximebf/debugbar",
- "version": "v1.13.0",
+ "version": "1.13.1",
"source": {
"type": "git",
"url": "https://github.com/maximebf/php-debugbar.git",
- "reference": "5f49a5ed6cfde81d31d89378806670d77462526e"
+ "reference": "afee79a236348e39a44cb837106b7c5b4897ac2a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/maximebf/php-debugbar/zipball/5f49a5ed6cfde81d31d89378806670d77462526e",
- "reference": "5f49a5ed6cfde81d31d89378806670d77462526e",
+ "url": "https://api.github.com/repos/maximebf/php-debugbar/zipball/afee79a236348e39a44cb837106b7c5b4897ac2a",
+ "reference": "afee79a236348e39a44cb837106b7c5b4897ac2a",
"shasum": ""
},
"require": {
@@ -1515,20 +1513,20 @@
"debug",
"debugbar"
],
- "time": "2016-09-15 14:01:59"
+ "time": "2017-01-05T08:46:19+00:00"
},
{
"name": "monolog/monolog",
- "version": "1.21.0",
+ "version": "1.22.0",
"source": {
"type": "git",
"url": "https://github.com/Seldaek/monolog.git",
- "reference": "f42fbdfd53e306bda545845e4dbfd3e72edb4952"
+ "reference": "bad29cb8d18ab0315e6c477751418a82c850d558"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Seldaek/monolog/zipball/f42fbdfd53e306bda545845e4dbfd3e72edb4952",
- "reference": "f42fbdfd53e306bda545845e4dbfd3e72edb4952",
+ "url": "https://api.github.com/repos/Seldaek/monolog/zipball/bad29cb8d18ab0315e6c477751418a82c850d558",
+ "reference": "bad29cb8d18ab0315e6c477751418a82c850d558",
"shasum": ""
},
"require": {
@@ -1539,7 +1537,7 @@
"psr/log-implementation": "1.0.0"
},
"require-dev": {
- "aws/aws-sdk-php": "^2.4.9",
+ "aws/aws-sdk-php": "^2.4.9 || ^3.0",
"doctrine/couchdb": "~1.0@dev",
"graylog2/gelf-php": "~1.0",
"jakub-onderka/php-parallel-lint": "0.9",
@@ -1593,32 +1591,31 @@
"logging",
"psr-3"
],
- "time": "2016-07-29 03:23:52"
+ "time": "2016-11-26T00:15:39+00:00"
},
{
"name": "mpociot/teamwork",
- "version": "3.5.0",
+ "version": "4.1.0",
"source": {
"type": "git",
"url": "https://github.com/mpociot/teamwork.git",
- "reference": "aa17c5bde482d7185fd299218e37ee33cab13535"
+ "reference": "0c5e6a43399698e4dc09b0adb45a3b977e9a8607"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/mpociot/teamwork/zipball/aa17c5bde482d7185fd299218e37ee33cab13535",
- "reference": "aa17c5bde482d7185fd299218e37ee33cab13535",
+ "url": "https://api.github.com/repos/mpociot/teamwork/zipball/0c5e6a43399698e4dc09b0adb45a3b977e9a8607",
+ "reference": "0c5e6a43399698e4dc09b0adb45a3b977e9a8607",
"shasum": ""
},
"require": {
- "laravel/framework": "~5.0",
- "php": ">=5.5.9"
+ "laravel/framework": "~5.3",
+ "php": ">=5.6.4"
},
"require-dev": {
"illuminate/database": "~5.0",
"mockery/mockery": "dev-master",
- "orchestra/testbench": "~3.0",
- "phpunit/phpunit": "~4.1",
- "sami/sami": "dev-master"
+ "orchestra/testbench": "3.3.*@dev",
+ "phpunit/phpunit": "~4.1"
},
"type": "library",
"autoload": {
@@ -1642,20 +1639,20 @@
"Invite",
"Teams"
],
- "time": "2016-06-13 20:59:24"
+ "time": "2016-11-19T12:52:22+00:00"
},
{
"name": "mtdowling/cron-expression",
- "version": "v1.1.0",
+ "version": "v1.2.0",
"source": {
"type": "git",
"url": "https://github.com/mtdowling/cron-expression.git",
- "reference": "c9ee7886f5a12902b225a1a12f36bb45f9ab89e5"
+ "reference": "9504fa9ea681b586028adaaa0877db4aecf32bad"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/mtdowling/cron-expression/zipball/c9ee7886f5a12902b225a1a12f36bb45f9ab89e5",
- "reference": "c9ee7886f5a12902b225a1a12f36bb45f9ab89e5",
+ "url": "https://api.github.com/repos/mtdowling/cron-expression/zipball/9504fa9ea681b586028adaaa0877db4aecf32bad",
+ "reference": "9504fa9ea681b586028adaaa0877db4aecf32bad",
"shasum": ""
},
"require": {
@@ -1666,8 +1663,8 @@
},
"type": "library",
"autoload": {
- "psr-0": {
- "Cron": "src/"
+ "psr-4": {
+ "Cron\\": "src/Cron/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -1686,30 +1683,36 @@
"cron",
"schedule"
],
- "time": "2016-01-26 21:23:30"
+ "time": "2017-01-23T04:29:33+00:00"
},
{
"name": "nesbot/carbon",
- "version": "1.21.0",
+ "version": "1.22.1",
"source": {
"type": "git",
"url": "https://github.com/briannesbitt/Carbon.git",
- "reference": "7b08ec6f75791e130012f206e3f7b0e76e18e3d7"
+ "reference": "7cdf42c0b1cc763ab7e4c33c47a24e27c66bfccc"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/7b08ec6f75791e130012f206e3f7b0e76e18e3d7",
- "reference": "7b08ec6f75791e130012f206e3f7b0e76e18e3d7",
+ "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/7cdf42c0b1cc763ab7e4c33c47a24e27c66bfccc",
+ "reference": "7cdf42c0b1cc763ab7e4c33c47a24e27c66bfccc",
"shasum": ""
},
"require": {
"php": ">=5.3.0",
- "symfony/translation": "~2.6|~3.0"
+ "symfony/translation": "~2.6 || ~3.0"
},
"require-dev": {
- "phpunit/phpunit": "~4.0|~5.0"
+ "friendsofphp/php-cs-fixer": "~2",
+ "phpunit/phpunit": "~4.0 || ~5.0"
},
"type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.23-dev"
+ }
+ },
"autoload": {
"psr-4": {
"Carbon\\": "src/Carbon/"
@@ -1733,28 +1736,28 @@
"datetime",
"time"
],
- "time": "2015-11-04 20:07:17"
+ "time": "2017-01-16T07:55:07+00:00"
},
{
"name": "nikic/php-parser",
- "version": "v2.1.1",
+ "version": "v3.0.4",
"source": {
"type": "git",
"url": "https://github.com/nikic/PHP-Parser.git",
- "reference": "4dd659edadffdc2143e4753df655d866dbfeedf0"
+ "reference": "0bf561dfe75ba80441c22adecc0529056671a7d2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/4dd659edadffdc2143e4753df655d866dbfeedf0",
- "reference": "4dd659edadffdc2143e4753df655d866dbfeedf0",
+ "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/0bf561dfe75ba80441c22adecc0529056671a7d2",
+ "reference": "0bf561dfe75ba80441c22adecc0529056671a7d2",
"shasum": ""
},
"require": {
"ext-tokenizer": "*",
- "php": ">=5.4"
+ "php": ">=5.5"
},
"require-dev": {
- "phpunit/phpunit": "~4.0"
+ "phpunit/phpunit": "~4.0|~5.0"
},
"bin": [
"bin/php-parse"
@@ -1762,7 +1765,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.1-dev"
+ "dev-master": "3.0-dev"
}
},
"autoload": {
@@ -1784,20 +1787,20 @@
"parser",
"php"
],
- "time": "2016-09-16 12:04:44"
+ "time": "2017-02-10T20:20:03+00:00"
},
{
"name": "paragonie/random_compat",
- "version": "v1.4.1",
+ "version": "v2.0.4",
"source": {
"type": "git",
"url": "https://github.com/paragonie/random_compat.git",
- "reference": "c7e26a21ba357863de030f0b9e701c7d04593774"
+ "reference": "a9b97968bcde1c4de2a5ec6cbd06a0f6c919b46e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/paragonie/random_compat/zipball/c7e26a21ba357863de030f0b9e701c7d04593774",
- "reference": "c7e26a21ba357863de030f0b9e701c7d04593774",
+ "url": "https://api.github.com/repos/paragonie/random_compat/zipball/a9b97968bcde1c4de2a5ec6cbd06a0f6c919b46e",
+ "reference": "a9b97968bcde1c4de2a5ec6cbd06a0f6c919b46e",
"shasum": ""
},
"require": {
@@ -1832,7 +1835,7 @@
"pseudorandom",
"random"
],
- "time": "2016-03-18 20:34:03"
+ "time": "2016-11-07T23:38:38+00:00"
},
{
"name": "patchwork/utf8",
@@ -1891,7 +1894,57 @@
"utf-8",
"utf8"
],
- "time": "2016-05-18 13:57:10"
+ "time": "2016-05-18T13:57:10+00:00"
+ },
+ {
+ "name": "pda/pheanstalk",
+ "version": "v3.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/pda/pheanstalk.git",
+ "reference": "430e77c551479aad0c6ada0450ee844cf656a18b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/pda/pheanstalk/zipball/430e77c551479aad0c6ada0450ee844cf656a18b",
+ "reference": "430e77c551479aad0c6ada0450ee844cf656a18b",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Pheanstalk\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Paul Annesley",
+ "email": "paul@annesley.cc",
+ "homepage": "http://paul.annesley.cc/",
+ "role": "Developer"
+ }
+ ],
+ "description": "PHP client for beanstalkd queue",
+ "homepage": "https://github.com/pda/pheanstalk",
+ "keywords": [
+ "beanstalkd"
+ ],
+ "time": "2015-08-07T21:42:41+00:00"
},
{
"name": "psr/http-message",
@@ -1941,7 +1994,7 @@
"request",
"response"
],
- "time": "2016-08-06 14:39:51"
+ "time": "2016-08-06T14:39:51+00:00"
},
{
"name": "psr/log",
@@ -1988,41 +2041,42 @@
"psr",
"psr-3"
],
- "time": "2016-10-10 12:19:37"
+ "time": "2016-10-10T12:19:37+00:00"
},
{
"name": "psy/psysh",
- "version": "v0.7.2",
+ "version": "v0.8.1",
"source": {
"type": "git",
"url": "https://github.com/bobthecow/psysh.git",
- "reference": "e64e10b20f8d229cac76399e1f3edddb57a0f280"
+ "reference": "701e8a1cc426ee170f1296f5d9f6b8a26ad25c4a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/bobthecow/psysh/zipball/e64e10b20f8d229cac76399e1f3edddb57a0f280",
- "reference": "e64e10b20f8d229cac76399e1f3edddb57a0f280",
+ "url": "https://api.github.com/repos/bobthecow/psysh/zipball/701e8a1cc426ee170f1296f5d9f6b8a26ad25c4a",
+ "reference": "701e8a1cc426ee170f1296f5d9f6b8a26ad25c4a",
"shasum": ""
},
"require": {
"dnoegel/php-xdg-base-dir": "0.1",
"jakub-onderka/php-console-highlighter": "0.3.*",
- "nikic/php-parser": "^1.2.1|~2.0",
+ "nikic/php-parser": "~1.3|~2.0|~3.0",
"php": ">=5.3.9",
"symfony/console": "~2.3.10|^2.4.2|~3.0",
"symfony/var-dumper": "~2.7|~3.0"
},
"require-dev": {
- "fabpot/php-cs-fixer": "~1.5",
- "phpunit/phpunit": "~3.7|~4.0|~5.0",
- "squizlabs/php_codesniffer": "~2.0",
+ "friendsofphp/php-cs-fixer": "~1.11",
+ "hoa/console": "~3.16|~1.14",
+ "phpunit/phpunit": "~4.4|~5.0",
"symfony/finder": "~2.1|~3.0"
},
"suggest": {
"ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)",
"ext-pdo-sqlite": "The doc command requires SQLite to work.",
"ext-posix": "If you have PCNTL, you'll want the POSIX extension as well.",
- "ext-readline": "Enables support for arrow-key history navigation, and showing and manipulating command history."
+ "ext-readline": "Enables support for arrow-key history navigation, and showing and manipulating command history.",
+ "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit."
},
"bin": [
"bin/psysh"
@@ -2030,7 +2084,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-develop": "0.8.x-dev"
+ "dev-develop": "0.9.x-dev"
}
},
"autoload": {
@@ -2060,33 +2114,115 @@
"interactive",
"shell"
],
- "time": "2016-03-09 05:03:14"
+ "time": "2017-01-15T17:54:13+00:00"
+ },
+ {
+ "name": "ramsey/uuid",
+ "version": "3.5.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/ramsey/uuid.git",
+ "reference": "5677cfe02397dd6b58c861870dfaa5d9007d3954"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/ramsey/uuid/zipball/5677cfe02397dd6b58c861870dfaa5d9007d3954",
+ "reference": "5677cfe02397dd6b58c861870dfaa5d9007d3954",
+ "shasum": ""
+ },
+ "require": {
+ "paragonie/random_compat": "^1.0|^2.0",
+ "php": ">=5.4"
+ },
+ "replace": {
+ "rhumsaa/uuid": "self.version"
+ },
+ "require-dev": {
+ "apigen/apigen": "^4.1",
+ "codeception/aspect-mock": "1.0.0",
+ "doctrine/annotations": "~1.2.0",
+ "goaop/framework": "1.0.0-alpha.2",
+ "ircmaxell/random-lib": "^1.1",
+ "jakub-onderka/php-parallel-lint": "^0.9.0",
+ "mockery/mockery": "^0.9.4",
+ "moontoast/math": "^1.1",
+ "php-mock/php-mock-phpunit": "^0.3|^1.1",
+ "phpunit/phpunit": "^4.7|>=5.0 <5.4",
+ "satooshi/php-coveralls": "^0.6.1",
+ "squizlabs/php_codesniffer": "^2.3"
+ },
+ "suggest": {
+ "ext-libsodium": "Provides the PECL libsodium extension for use with the SodiumRandomGenerator",
+ "ext-uuid": "Provides the PECL UUID extension for use with the PeclUuidTimeGenerator and PeclUuidRandomGenerator",
+ "ircmaxell/random-lib": "Provides RandomLib for use with the RandomLibAdapter",
+ "moontoast/math": "Provides support for converting UUID to 128-bit integer (in string form).",
+ "ramsey/uuid-console": "A console application for generating UUIDs with ramsey/uuid",
+ "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Ramsey\\Uuid\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Marijn Huizendveld",
+ "email": "marijn.huizendveld@gmail.com"
+ },
+ {
+ "name": "Thibaud Fabre",
+ "email": "thibaud@aztech.io"
+ },
+ {
+ "name": "Ben Ramsey",
+ "email": "ben@benramsey.com",
+ "homepage": "https://benramsey.com"
+ }
+ ],
+ "description": "Formerly rhumsaa/uuid. A PHP 5.4+ library for generating RFC 4122 version 1, 3, 4, and 5 universally unique identifiers (UUID).",
+ "homepage": "https://github.com/ramsey/uuid",
+ "keywords": [
+ "guid",
+ "identifier",
+ "uuid"
+ ],
+ "time": "2016-11-22T19:21:44+00:00"
},
{
"name": "spatie/laravel-activitylog",
- "version": "1.10.2",
+ "version": "1.12.1",
"source": {
"type": "git",
"url": "https://github.com/spatie/laravel-activitylog.git",
- "reference": "ce43394406af72eb3d8a03a16ca0cd1e4ec5faf0"
+ "reference": "9c683e38eeb0dc028f5453acda7a552c7acdaaf9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/spatie/laravel-activitylog/zipball/ce43394406af72eb3d8a03a16ca0cd1e4ec5faf0",
- "reference": "ce43394406af72eb3d8a03a16ca0cd1e4ec5faf0",
+ "url": "https://api.github.com/repos/spatie/laravel-activitylog/zipball/9c683e38eeb0dc028f5453acda7a552c7acdaaf9",
+ "reference": "9c683e38eeb0dc028f5453acda7a552c7acdaaf9",
"shasum": ""
},
"require": {
- "illuminate/config": "~5.2.0|~5.3.0",
- "illuminate/database": "~5.2.6|~5.3.0",
- "illuminate/support": "~5.2.0|~5.3.0",
+ "illuminate/config": "~5.3.0|~5.4.0",
+ "illuminate/database": "~5.3.0|~5.4.0",
+ "illuminate/support": "~5.3.0|~5.4.0",
"php": "^7.0",
"spatie/string": "^2.1"
},
"require-dev": {
- "orchestra/database": "3.3.x-dev",
- "orchestra/testbench": "3.3.x-dev",
- "phpunit/phpunit": "5.*"
+ "orchestra/database": "~3.3.0|~3.4.0",
+ "orchestra/testbench": "~3.3.0|~3.4.0",
+ "phpunit/phpunit": "^5.7"
},
"type": "library",
"autoload": {
@@ -2124,20 +2260,20 @@
"spatie",
"user"
],
- "time": "2016-11-20 15:08:50"
+ "time": "2017-02-12T17:38:29+00:00"
},
{
"name": "spatie/string",
- "version": "2.2.0",
+ "version": "2.2.1",
"source": {
"type": "git",
"url": "https://github.com/spatie/string.git",
- "reference": "42b433803942494ee96dabd8f763f5b455e8de1a"
+ "reference": "5435f8095a6c2f4ac67cbc9a1fbc116197863144"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/spatie/string/zipball/42b433803942494ee96dabd8f763f5b455e8de1a",
- "reference": "42b433803942494ee96dabd8f763f5b455e8de1a",
+ "url": "https://api.github.com/repos/spatie/string/zipball/5435f8095a6c2f4ac67cbc9a1fbc116197863144",
+ "reference": "5435f8095a6c2f4ac67cbc9a1fbc116197863144",
"shasum": ""
},
"require": {
@@ -2177,27 +2313,28 @@
"spatie",
"string"
],
- "time": "2016-10-04 15:31:55"
+ "time": "2016-12-01T13:46:28+00:00"
},
{
"name": "swiftmailer/swiftmailer",
- "version": "v5.4.4",
+ "version": "v5.4.6",
"source": {
"type": "git",
"url": "https://github.com/swiftmailer/swiftmailer.git",
- "reference": "545ce9136690cea74f98f86fbb9c92dd9ab1a756"
+ "reference": "81fdccfaf8bdc5d5d7a1ef6bb3a61bbb1a6c4a3e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/545ce9136690cea74f98f86fbb9c92dd9ab1a756",
- "reference": "545ce9136690cea74f98f86fbb9c92dd9ab1a756",
+ "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/81fdccfaf8bdc5d5d7a1ef6bb3a61bbb1a6c4a3e",
+ "reference": "81fdccfaf8bdc5d5d7a1ef6bb3a61bbb1a6c4a3e",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"require-dev": {
- "mockery/mockery": "~0.9.1"
+ "mockery/mockery": "~0.9.1",
+ "symfony/phpunit-bridge": "~3.2"
},
"type": "library",
"extra": {
@@ -2230,24 +2367,25 @@
"mail",
"mailer"
],
- "time": "2016-11-24 01:01:23"
+ "time": "2017-02-13T07:52:53+00:00"
},
{
"name": "symfony/console",
- "version": "v3.0.9",
+ "version": "v3.1.10",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
- "reference": "926061e74229e935d3c5b4e9ba87237316c6693f"
+ "reference": "047f16485d68c083bd5d9b73ff16f9cb9c1a9f52"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/926061e74229e935d3c5b4e9ba87237316c6693f",
- "reference": "926061e74229e935d3c5b4e9ba87237316c6693f",
+ "url": "https://api.github.com/repos/symfony/console/zipball/047f16485d68c083bd5d9b73ff16f9cb9c1a9f52",
+ "reference": "047f16485d68c083bd5d9b73ff16f9cb9c1a9f52",
"shasum": ""
},
"require": {
"php": ">=5.5.9",
+ "symfony/debug": "~2.8|~3.0",
"symfony/polyfill-mbstring": "~1.0"
},
"require-dev": {
@@ -2263,7 +2401,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.0-dev"
+ "dev-master": "3.1-dev"
}
},
"autoload": {
@@ -2290,20 +2428,20 @@
],
"description": "Symfony Console Component",
"homepage": "https://symfony.com",
- "time": "2016-07-30 07:22:48"
+ "time": "2017-01-08T20:43:43+00:00"
},
{
"name": "symfony/debug",
- "version": "v3.0.9",
+ "version": "v3.1.10",
"source": {
"type": "git",
"url": "https://github.com/symfony/debug.git",
- "reference": "697c527acd9ea1b2d3efac34d9806bf255278b0a"
+ "reference": "c6661361626b3cf5cf2089df98b3b5006a197e85"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/debug/zipball/697c527acd9ea1b2d3efac34d9806bf255278b0a",
- "reference": "697c527acd9ea1b2d3efac34d9806bf255278b0a",
+ "url": "https://api.github.com/repos/symfony/debug/zipball/c6661361626b3cf5cf2089df98b3b5006a197e85",
+ "reference": "c6661361626b3cf5cf2089df98b3b5006a197e85",
"shasum": ""
},
"require": {
@@ -2320,7 +2458,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.0-dev"
+ "dev-master": "3.1-dev"
}
},
"autoload": {
@@ -2347,20 +2485,20 @@
],
"description": "Symfony Debug Component",
"homepage": "https://symfony.com",
- "time": "2016-07-30 07:22:48"
+ "time": "2017-01-28T00:04:57+00:00"
},
{
"name": "symfony/event-dispatcher",
- "version": "v3.1.7",
+ "version": "v3.2.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher.git",
- "reference": "28b0832b2553ffb80cabef6a7a812ff1e670c0bc"
+ "reference": "9137eb3a3328e413212826d63eeeb0217836e2b6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/28b0832b2553ffb80cabef6a7a812ff1e670c0bc",
- "reference": "28b0832b2553ffb80cabef6a7a812ff1e670c0bc",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/9137eb3a3328e413212826d63eeeb0217836e2b6",
+ "reference": "9137eb3a3328e413212826d63eeeb0217836e2b6",
"shasum": ""
},
"require": {
@@ -2380,7 +2518,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.1-dev"
+ "dev-master": "3.2-dev"
}
},
"autoload": {
@@ -2407,20 +2545,20 @@
],
"description": "Symfony EventDispatcher Component",
"homepage": "https://symfony.com",
- "time": "2016-10-13 06:28:43"
+ "time": "2017-01-02T20:32:22+00:00"
},
{
"name": "symfony/finder",
- "version": "v3.0.9",
+ "version": "v3.1.10",
"source": {
"type": "git",
"url": "https://github.com/symfony/finder.git",
- "reference": "3eb4e64c6145ef8b92adefb618a74ebdde9e3fe9"
+ "reference": "59687a255d1562f2c17b012418273862083d85f7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/finder/zipball/3eb4e64c6145ef8b92adefb618a74ebdde9e3fe9",
- "reference": "3eb4e64c6145ef8b92adefb618a74ebdde9e3fe9",
+ "url": "https://api.github.com/repos/symfony/finder/zipball/59687a255d1562f2c17b012418273862083d85f7",
+ "reference": "59687a255d1562f2c17b012418273862083d85f7",
"shasum": ""
},
"require": {
@@ -2429,7 +2567,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.0-dev"
+ "dev-master": "3.1-dev"
}
},
"autoload": {
@@ -2456,20 +2594,20 @@
],
"description": "Symfony Finder Component",
"homepage": "https://symfony.com",
- "time": "2016-06-29 05:40:00"
+ "time": "2017-01-02T20:31:54+00:00"
},
{
"name": "symfony/http-foundation",
- "version": "v3.0.9",
+ "version": "v3.1.10",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-foundation.git",
- "reference": "49ba00f8ede742169cb6b70abe33243f4d673f82"
+ "reference": "cef0ad49a2e90455cfc649522025b5a2929648c0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-foundation/zipball/49ba00f8ede742169cb6b70abe33243f4d673f82",
- "reference": "49ba00f8ede742169cb6b70abe33243f4d673f82",
+ "url": "https://api.github.com/repos/symfony/http-foundation/zipball/cef0ad49a2e90455cfc649522025b5a2929648c0",
+ "reference": "cef0ad49a2e90455cfc649522025b5a2929648c0",
"shasum": ""
},
"require": {
@@ -2482,7 +2620,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.0-dev"
+ "dev-master": "3.1-dev"
}
},
"autoload": {
@@ -2509,20 +2647,20 @@
],
"description": "Symfony HttpFoundation Component",
"homepage": "https://symfony.com",
- "time": "2016-07-17 13:54:30"
+ "time": "2017-01-08T20:43:43+00:00"
},
{
"name": "symfony/http-kernel",
- "version": "v3.0.9",
+ "version": "v3.1.10",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-kernel.git",
- "reference": "d97ba4425e36e79c794e7d14ff36f00f081b37b3"
+ "reference": "c830387dec1b48c100473d10a6a356c3c3ae2a13"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-kernel/zipball/d97ba4425e36e79c794e7d14ff36f00f081b37b3",
- "reference": "d97ba4425e36e79c794e7d14ff36f00f081b37b3",
+ "url": "https://api.github.com/repos/symfony/http-kernel/zipball/c830387dec1b48c100473d10a6a356c3c3ae2a13",
+ "reference": "c830387dec1b48c100473d10a6a356c3c3ae2a13",
"shasum": ""
},
"require": {
@@ -2530,7 +2668,7 @@
"psr/log": "~1.0",
"symfony/debug": "~2.8|~3.0",
"symfony/event-dispatcher": "~2.8|~3.0",
- "symfony/http-foundation": "~2.8.8|~3.0.8|~3.1.2|~3.2"
+ "symfony/http-foundation": "~2.8.13|~3.1.6|~3.2"
},
"conflict": {
"symfony/config": "<2.8"
@@ -2564,7 +2702,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.0-dev"
+ "dev-master": "3.1-dev"
}
},
"autoload": {
@@ -2591,7 +2729,7 @@
],
"description": "Symfony HttpKernel Component",
"homepage": "https://symfony.com",
- "time": "2016-07-30 09:10:37"
+ "time": "2017-01-28T02:53:17+00:00"
},
{
"name": "symfony/polyfill-mbstring",
@@ -2650,7 +2788,7 @@
"portable",
"shim"
],
- "time": "2016-11-14 01:06:16"
+ "time": "2016-11-14T01:06:16+00:00"
},
{
"name": "symfony/polyfill-php56",
@@ -2706,7 +2844,7 @@
"portable",
"shim"
],
- "time": "2016-11-14 01:06:16"
+ "time": "2016-11-14T01:06:16+00:00"
},
{
"name": "symfony/polyfill-util",
@@ -2758,20 +2896,20 @@
"polyfill",
"shim"
],
- "time": "2016-11-14 01:06:16"
+ "time": "2016-11-14T01:06:16+00:00"
},
{
"name": "symfony/process",
- "version": "v3.0.9",
+ "version": "v3.1.10",
"source": {
"type": "git",
"url": "https://github.com/symfony/process.git",
- "reference": "768debc5996f599c4372b322d9061dba2a4bf505"
+ "reference": "2605753c5f8c531623d24d002825ebb1d6a22248"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/process/zipball/768debc5996f599c4372b322d9061dba2a4bf505",
- "reference": "768debc5996f599c4372b322d9061dba2a4bf505",
+ "url": "https://api.github.com/repos/symfony/process/zipball/2605753c5f8c531623d24d002825ebb1d6a22248",
+ "reference": "2605753c5f8c531623d24d002825ebb1d6a22248",
"shasum": ""
},
"require": {
@@ -2780,7 +2918,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.0-dev"
+ "dev-master": "3.1-dev"
}
},
"autoload": {
@@ -2807,20 +2945,20 @@
],
"description": "Symfony Process Component",
"homepage": "https://symfony.com",
- "time": "2016-07-28 11:13:34"
+ "time": "2017-01-21T17:13:55+00:00"
},
{
"name": "symfony/routing",
- "version": "v3.0.9",
+ "version": "v3.1.10",
"source": {
"type": "git",
"url": "https://github.com/symfony/routing.git",
- "reference": "9038984bd9c05ab07280121e9e10f61a7231457b"
+ "reference": "f25581d4eb0a82962c291917f826166f0dcd8a9a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/routing/zipball/9038984bd9c05ab07280121e9e10f61a7231457b",
- "reference": "9038984bd9c05ab07280121e9e10f61a7231457b",
+ "url": "https://api.github.com/repos/symfony/routing/zipball/f25581d4eb0a82962c291917f826166f0dcd8a9a",
+ "reference": "f25581d4eb0a82962c291917f826166f0dcd8a9a",
"shasum": ""
},
"require": {
@@ -2849,7 +2987,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.0-dev"
+ "dev-master": "3.1-dev"
}
},
"autoload": {
@@ -2882,20 +3020,20 @@
"uri",
"url"
],
- "time": "2016-06-29 05:40:00"
+ "time": "2017-01-28T00:04:57+00:00"
},
{
"name": "symfony/translation",
- "version": "v3.0.9",
+ "version": "v3.1.10",
"source": {
"type": "git",
"url": "https://github.com/symfony/translation.git",
- "reference": "eee6c664853fd0576f21ae25725cfffeafe83f26"
+ "reference": "d5a20fab5f63f44c233c69b3041c3cb1d4945e45"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/translation/zipball/eee6c664853fd0576f21ae25725cfffeafe83f26",
- "reference": "eee6c664853fd0576f21ae25725cfffeafe83f26",
+ "url": "https://api.github.com/repos/symfony/translation/zipball/d5a20fab5f63f44c233c69b3041c3cb1d4945e45",
+ "reference": "d5a20fab5f63f44c233c69b3041c3cb1d4945e45",
"shasum": ""
},
"require": {
@@ -2919,7 +3057,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.0-dev"
+ "dev-master": "3.1-dev"
}
},
"autoload": {
@@ -2946,20 +3084,20 @@
],
"description": "Symfony Translation Component",
"homepage": "https://symfony.com",
- "time": "2016-07-30 07:22:48"
+ "time": "2017-01-21T17:01:39+00:00"
},
{
"name": "symfony/var-dumper",
- "version": "v3.0.9",
+ "version": "v3.1.10",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-dumper.git",
- "reference": "1f7e071aafc6676fcb6e3f0497f87c2397247377"
+ "reference": "16df11647e5b992d687cb4eeeb9a882d5f5c26b9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/var-dumper/zipball/1f7e071aafc6676fcb6e3f0497f87c2397247377",
- "reference": "1f7e071aafc6676fcb6e3f0497f87c2397247377",
+ "url": "https://api.github.com/repos/symfony/var-dumper/zipball/16df11647e5b992d687cb4eeeb9a882d5f5c26b9",
+ "reference": "16df11647e5b992d687cb4eeeb9a882d5f5c26b9",
"shasum": ""
},
"require": {
@@ -2975,7 +3113,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.0-dev"
+ "dev-master": "3.1-dev"
}
},
"autoload": {
@@ -3009,7 +3147,7 @@
"debug",
"dump"
],
- "time": "2016-07-26 08:03:56"
+ "time": "2017-01-24T13:02:38+00:00"
},
{
"name": "vlucas/phpdotenv",
@@ -3059,7 +3197,7 @@
"env",
"environment"
],
- "time": "2016-09-01 10:05:43"
+ "time": "2016-09-01T10:05:43+00:00"
},
{
"name": "xinax/laravel-gettext",
@@ -3113,7 +3251,7 @@
"poEdit",
"translation"
],
- "time": "2016-03-10 13:02:54"
+ "time": "2016-03-10T13:02:54+00:00"
}
],
"packages-dev": [
@@ -3169,7 +3307,7 @@
"constructor",
"instantiate"
],
- "time": "2015-06-14 21:17:01"
+ "time": "2015-06-14T21:17:01+00:00"
},
{
"name": "fzaninotto/faker",
@@ -3217,7 +3355,7 @@
"faker",
"fixtures"
],
- "time": "2016-04-29 12:21:54"
+ "time": "2016-04-29T12:21:54+00:00"
},
{
"name": "hamcrest/hamcrest-php",
@@ -3262,20 +3400,20 @@
"keywords": [
"test"
],
- "time": "2015-05-11 14:41:42"
+ "time": "2015-05-11T14:41:42+00:00"
},
{
"name": "mockery/mockery",
- "version": "0.9.6",
+ "version": "0.9.8",
"source": {
"type": "git",
"url": "https://github.com/padraic/mockery.git",
- "reference": "65d4ca18e15cb02eeb1e5336f884e46b9b905be0"
+ "reference": "1e5e2ffdc4d71d7358ed58a6fdd30a4a0c506855"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/padraic/mockery/zipball/65d4ca18e15cb02eeb1e5336f884e46b9b905be0",
- "reference": "65d4ca18e15cb02eeb1e5336f884e46b9b905be0",
+ "url": "https://api.github.com/repos/padraic/mockery/zipball/1e5e2ffdc4d71d7358ed58a6fdd30a4a0c506855",
+ "reference": "1e5e2ffdc4d71d7358ed58a6fdd30a4a0c506855",
"shasum": ""
},
"require": {
@@ -3327,7 +3465,7 @@
"test double",
"testing"
],
- "time": "2016-09-30 12:09:40"
+ "time": "2017-02-09T13:29:38+00:00"
},
{
"name": "phpdocumentor/reflection-common",
@@ -3381,7 +3519,7 @@
"reflection",
"static analysis"
],
- "time": "2015-12-27 11:43:31"
+ "time": "2015-12-27T11:43:31+00:00"
},
{
"name": "phpdocumentor/reflection-docblock",
@@ -3426,20 +3564,20 @@
}
],
"description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
- "time": "2016-09-30 07:12:33"
+ "time": "2016-09-30T07:12:33+00:00"
},
{
"name": "phpdocumentor/type-resolver",
- "version": "0.2",
+ "version": "0.2.1",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/TypeResolver.git",
- "reference": "b39c7a5b194f9ed7bd0dd345c751007a41862443"
+ "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/b39c7a5b194f9ed7bd0dd345c751007a41862443",
- "reference": "b39c7a5b194f9ed7bd0dd345c751007a41862443",
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb",
+ "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb",
"shasum": ""
},
"require": {
@@ -3473,7 +3611,7 @@
"email": "me@mikevanriel.com"
}
],
- "time": "2016-06-10 07:14:17"
+ "time": "2016-11-25T06:54:22+00:00"
},
{
"name": "phpspec/prophecy",
@@ -3536,7 +3674,7 @@
"spy",
"stub"
],
- "time": "2016-11-21 14:58:47"
+ "time": "2016-11-21T14:58:47+00:00"
},
{
"name": "phpunit/php-code-coverage",
@@ -3598,20 +3736,20 @@
"testing",
"xunit"
],
- "time": "2015-10-06 15:47:00"
+ "time": "2015-10-06T15:47:00+00:00"
},
{
"name": "phpunit/php-file-iterator",
- "version": "1.4.1",
+ "version": "1.4.2",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-file-iterator.git",
- "reference": "6150bf2c35d3fc379e50c7602b75caceaa39dbf0"
+ "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/6150bf2c35d3fc379e50c7602b75caceaa39dbf0",
- "reference": "6150bf2c35d3fc379e50c7602b75caceaa39dbf0",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/3cc8f69b3028d0f96a9078e6295d86e9bf019be5",
+ "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5",
"shasum": ""
},
"require": {
@@ -3645,7 +3783,7 @@
"filesystem",
"iterator"
],
- "time": "2015-06-21 13:08:43"
+ "time": "2016-10-03T07:40:28+00:00"
},
{
"name": "phpunit/php-text-template",
@@ -3686,7 +3824,7 @@
"keywords": [
"template"
],
- "time": "2015-06-21 13:50:34"
+ "time": "2015-06-21T13:50:34+00:00"
},
{
"name": "phpunit/php-timer",
@@ -3730,7 +3868,7 @@
"keywords": [
"timer"
],
- "time": "2016-05-12 18:03:57"
+ "time": "2016-05-12T18:03:57+00:00"
},
{
"name": "phpunit/php-token-stream",
@@ -3779,20 +3917,20 @@
"keywords": [
"tokenizer"
],
- "time": "2016-11-15 14:06:22"
+ "time": "2016-11-15T14:06:22+00:00"
},
{
"name": "phpunit/phpunit",
- "version": "4.8.29",
+ "version": "4.8.35",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "f19d481b468b76a7fb55eb2b772ed487e484891e"
+ "reference": "791b1a67c25af50e230f841ee7a9c6eba507dc87"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/f19d481b468b76a7fb55eb2b772ed487e484891e",
- "reference": "f19d481b468b76a7fb55eb2b772ed487e484891e",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/791b1a67c25af50e230f841ee7a9c6eba507dc87",
+ "reference": "791b1a67c25af50e230f841ee7a9c6eba507dc87",
"shasum": ""
},
"require": {
@@ -3851,7 +3989,7 @@
"testing",
"xunit"
],
- "time": "2016-11-20 10:35:28"
+ "time": "2017-02-06T05:18:07+00:00"
},
{
"name": "phpunit/phpunit-mock-objects",
@@ -3907,20 +4045,20 @@
"mock",
"xunit"
],
- "time": "2015-10-02 06:51:40"
+ "time": "2015-10-02T06:51:40+00:00"
},
{
"name": "sebastian/comparator",
- "version": "1.2.2",
+ "version": "1.2.4",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/comparator.git",
- "reference": "6a1ed12e8b2409076ab22e3897126211ff8b1f7f"
+ "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/6a1ed12e8b2409076ab22e3897126211ff8b1f7f",
- "reference": "6a1ed12e8b2409076ab22e3897126211ff8b1f7f",
+ "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be",
+ "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be",
"shasum": ""
},
"require": {
@@ -3971,7 +4109,7 @@
"compare",
"equality"
],
- "time": "2016-11-19 09:18:40"
+ "time": "2017-01-29T09:50:25+00:00"
},
{
"name": "sebastian/diff",
@@ -4023,7 +4161,7 @@
"keywords": [
"diff"
],
- "time": "2015-12-08 07:14:41"
+ "time": "2015-12-08T07:14:41+00:00"
},
{
"name": "sebastian/environment",
@@ -4073,7 +4211,7 @@
"environment",
"hhvm"
],
- "time": "2016-08-18 05:49:44"
+ "time": "2016-08-18T05:49:44+00:00"
},
{
"name": "sebastian/exporter",
@@ -4140,7 +4278,7 @@
"export",
"exporter"
],
- "time": "2016-06-17 09:04:28"
+ "time": "2016-06-17T09:04:28+00:00"
},
{
"name": "sebastian/global-state",
@@ -4191,7 +4329,7 @@
"keywords": [
"global state"
],
- "time": "2015-10-12 03:26:01"
+ "time": "2015-10-12T03:26:01+00:00"
},
{
"name": "sebastian/recursion-context",
@@ -4244,7 +4382,7 @@
],
"description": "Provides functionality to recursively process PHP variables",
"homepage": "http://www.github.com/sebastianbergmann/recursion-context",
- "time": "2015-11-11 19:50:13"
+ "time": "2015-11-11T19:50:13+00:00"
},
{
"name": "sebastian/version",
@@ -4279,20 +4417,20 @@
],
"description": "Library that helps with managing the version number of Git-hosted PHP projects",
"homepage": "https://github.com/sebastianbergmann/version",
- "time": "2015-06-21 13:59:46"
+ "time": "2015-06-21T13:59:46+00:00"
},
{
"name": "symfony/css-selector",
- "version": "v3.0.9",
+ "version": "v3.1.10",
"source": {
"type": "git",
"url": "https://github.com/symfony/css-selector.git",
- "reference": "b8999c1f33c224b2b66b38253f5e3a838d0d0115"
+ "reference": "722a87478a72d95dc2a3bcf41dc9c2d13fd4cb2d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/css-selector/zipball/b8999c1f33c224b2b66b38253f5e3a838d0d0115",
- "reference": "b8999c1f33c224b2b66b38253f5e3a838d0d0115",
+ "url": "https://api.github.com/repos/symfony/css-selector/zipball/722a87478a72d95dc2a3bcf41dc9c2d13fd4cb2d",
+ "reference": "722a87478a72d95dc2a3bcf41dc9c2d13fd4cb2d",
"shasum": ""
},
"require": {
@@ -4301,7 +4439,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.0-dev"
+ "dev-master": "3.1-dev"
}
},
"autoload": {
@@ -4332,20 +4470,20 @@
],
"description": "Symfony CssSelector Component",
"homepage": "https://symfony.com",
- "time": "2016-06-29 05:40:00"
+ "time": "2017-01-02T20:31:54+00:00"
},
{
"name": "symfony/dom-crawler",
- "version": "v3.0.9",
+ "version": "v3.1.10",
"source": {
"type": "git",
"url": "https://github.com/symfony/dom-crawler.git",
- "reference": "dff8fecf1f56990d88058e3a1885c2a5f1b8e970"
+ "reference": "7eede2a901a19928494194f7d1815a77b9a473a0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/dff8fecf1f56990d88058e3a1885c2a5f1b8e970",
- "reference": "dff8fecf1f56990d88058e3a1885c2a5f1b8e970",
+ "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/7eede2a901a19928494194f7d1815a77b9a473a0",
+ "reference": "7eede2a901a19928494194f7d1815a77b9a473a0",
"shasum": ""
},
"require": {
@@ -4361,7 +4499,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.0-dev"
+ "dev-master": "3.1-dev"
}
},
"autoload": {
@@ -4388,29 +4526,35 @@
],
"description": "Symfony DomCrawler Component",
"homepage": "https://symfony.com",
- "time": "2016-07-30 07:22:48"
+ "time": "2017-01-21T17:13:55+00:00"
},
{
"name": "symfony/yaml",
- "version": "v3.1.7",
+ "version": "v3.2.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/yaml.git",
- "reference": "9da375317228e54f4ea1b013b30fa47417e84943"
+ "reference": "e1718c6bf57e1efbb8793ada951584b2ab27775b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/yaml/zipball/9da375317228e54f4ea1b013b30fa47417e84943",
- "reference": "9da375317228e54f4ea1b013b30fa47417e84943",
+ "url": "https://api.github.com/repos/symfony/yaml/zipball/e1718c6bf57e1efbb8793ada951584b2ab27775b",
+ "reference": "e1718c6bf57e1efbb8793ada951584b2ab27775b",
"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": {
@@ -4437,7 +4581,7 @@
],
"description": "Symfony Yaml Component",
"homepage": "https://symfony.com",
- "time": "2016-11-18 21:05:29"
+ "time": "2017-01-21T17:06:35+00:00"
},
{
"name": "webmozart/assert",
@@ -4487,7 +4631,7 @@
"check",
"validate"
],
- "time": "2016-11-23 20:04:58"
+ "time": "2016-11-23T20:04:58+00:00"
}
],
"aliases": [],
diff --git a/config/app.php b/config/app.php
index 9a1245d..1103295 100644
--- a/config/app.php
+++ b/config/app.php
@@ -2,6 +2,18 @@
return [
+ /*
+ |--------------------------------------------------------------------------
+ | Application Name
+ |--------------------------------------------------------------------------
+ |
+ | This value is the name of your application. This value is used when the
+ | framework needs to place the application's name in a notification or
+ | any other location as required by the application or its packages.
+ */
+
+ 'name' => 'Beacon Bacon',
+
/*
|--------------------------------------------------------------------------
| Application Environment
@@ -149,6 +161,8 @@
Illuminate\Translation\TranslationServiceProvider::class,
Illuminate\Validation\ValidationServiceProvider::class,
Illuminate\View\ViewServiceProvider::class,
+ Illuminate\Notifications\NotificationServiceProvider::class,
+
/*
* Application Service Providers...
@@ -197,6 +211,7 @@
'Lang' => Illuminate\Support\Facades\Lang::class,
'Log' => Illuminate\Support\Facades\Log::class,
'Mail' => Illuminate\Support\Facades\Mail::class,
+ 'Notification' => Illuminate\Support\Facades\Notification::class,
'Password' => Illuminate\Support\Facades\Password::class,
'Queue' => Illuminate\Support\Facades\Queue::class,
'Redirect' => Illuminate\Support\Facades\Redirect::class,
diff --git a/config/queue.php b/config/queue.php
index b4ae796..1bbc7ca 100644
--- a/config/queue.php
+++ b/config/queue.php
@@ -15,7 +15,7 @@
|
*/
- 'default' => env('QUEUE_DRIVER', 'sync'),
+ 'default' => env('QUEUE_DRIVER', 'database'),
/*
|--------------------------------------------------------------------------
diff --git a/config/services.php b/config/services.php
index fcefa60..f3d8e2e 100644
--- a/config/services.php
+++ b/config/services.php
@@ -40,7 +40,8 @@
],
'kontakt' => [
- 'key' => env('KONTAKT_KEY')
+ 'key' => env('KONTAKT_KEY'),
+ 'version' => env('KONTAKT_VERSION')
],
'ims' => [
diff --git a/database/migrations/2017_02_07_144323_add_column_findable_custom.php b/database/migrations/2017_02_07_144323_add_column_findable_custom.php
new file mode 100644
index 0000000..20142d6
--- /dev/null
+++ b/database/migrations/2017_02_07_144323_add_column_findable_custom.php
@@ -0,0 +1,32 @@
+string('custom_file');
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::table('findables', function (Blueprint $table) {
+ $table->dropColumn('custom_file');
+ });
+ }
+}
diff --git a/database/migrations/2017_02_08_132037_make_findable_identifier_unique.php b/database/migrations/2017_02_08_132037_make_findable_identifier_unique.php
new file mode 100644
index 0000000..c5780df
--- /dev/null
+++ b/database/migrations/2017_02_08_132037_make_findable_identifier_unique.php
@@ -0,0 +1,32 @@
+string('identifier')->unique()->change();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::table('findables', function (Blueprint $table) {
+ $table->string('identifier')->change();
+ });
+ }
+}
diff --git a/database/migrations/2017_02_09_143300_Add_identifiers_place.php b/database/migrations/2017_02_09_143300_Add_identifiers_place.php
new file mode 100644
index 0000000..e4d61aa
--- /dev/null
+++ b/database/migrations/2017_02_09_143300_Add_identifiers_place.php
@@ -0,0 +1,40 @@
+renameColumn('identifier', 'identifier1');
+ $table->string('identifier5')->after('identifier');
+ $table->string('identifier4')->after('identifier');
+ $table->string('identifier3')->after('identifier');
+ $table->string('identifier2')->after('identifier');
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::table('places', function (Blueprint $table) {
+ $table->renameColumn('identifier1', 'identifier');
+ $table->dropColumn('identifier2');
+ $table->dropColumn('identifier3');
+ $table->dropColumn('identifier4');
+ $table->dropColumn('identifier5');
+ });
+ }
+}
diff --git a/database/migrations/2017_02_18_131725_add_draw_type_location.php b/database/migrations/2017_02_18_131725_add_draw_type_location.php
new file mode 100644
index 0000000..4176d94
--- /dev/null
+++ b/database/migrations/2017_02_18_131725_add_draw_type_location.php
@@ -0,0 +1,32 @@
+string('draw_type')->after('parameter_five');
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::table('locations', function (Blueprint $table) {
+ $table->dropColumn('draw_type');
+ });
+ }
+}
diff --git a/database/migrations/2017_02_19_093718_change_column_names_place.php b/database/migrations/2017_02_19_093718_change_column_names_place.php
new file mode 100644
index 0000000..0dce562
--- /dev/null
+++ b/database/migrations/2017_02_19_093718_change_column_names_place.php
@@ -0,0 +1,40 @@
+renameColumn('identifier1', 'identifier_one');
+ $table->renameColumn('identifier2', 'identifier_two');
+ $table->renameColumn('identifier3', 'identifier_three');
+ $table->renameColumn('identifier4', 'identifier_four');
+ $table->renameColumn('identifier5', 'identifier_five');
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::table('places', function (Blueprint $table) {
+ $table->renameColumn('identifier_one', 'identifier1');
+ $table->renameColumn('identifier_two', 'identifier2');
+ $table->renameColumn('identifier_three', 'identifier3');
+ $table->renameColumn('identifier_four', 'identifier4');
+ $table->renameColumn('identifier_five', 'identifier5');
+ });
+ }
+}
diff --git a/database/seeds/DatabaseSeeder.php b/database/seeds/DatabaseSeeder.php
index e119db6..37daab7 100644
--- a/database/seeds/DatabaseSeeder.php
+++ b/database/seeds/DatabaseSeeder.php
@@ -11,6 +11,7 @@ class DatabaseSeeder extends Seeder
*/
public function run()
{
+
// $this->call(UsersTableSeeder::class);
}
}
diff --git a/public/foo.jpg b/public/foo.jpg
new file mode 100644
index 0000000..f5e7443
Binary files /dev/null and b/public/foo.jpg differ
diff --git a/resources/views/auth/full.blade.php b/resources/views/auth/full.blade.php
new file mode 100644
index 0000000..4a5a962
--- /dev/null
+++ b/resources/views/auth/full.blade.php
@@ -0,0 +1,24 @@
+@extends('layouts.auth')
+
+@section('htmlheader_title')
+ Team Capacity Reached
+@endsection
+
+@section('content')
+
+
+
+
+
+
Team capacity reached
+
You will need an invitation in order to register
+
If you are the system administrator, you can also raise the team limit
+
If you already have a profile, click the link below
+
Log in
+
+
+
+
+@endsection
diff --git a/resources/views/auth/login.blade.php b/resources/views/auth/login.blade.php
index a3fdb6b..187c6db 100644
--- a/resources/views/auth/login.blade.php
+++ b/resources/views/auth/login.blade.php
@@ -3,63 +3,61 @@
@section('htmlheader_title')
Log in
@endsection
-
@section('content')
-
+
+ @if (count($errors) > 0)
+
+
Whoops! There were some problems with your input.
+
+ @foreach ($errors->all() as $error)
+ - {{ $error }}
+ @endforeach
+
+
+ @endif
- @if (count($errors) > 0)
-
-
Whoops! There were some problems with your input.
-
- @foreach ($errors->all() as $error)
- - {{ $error }}
- @endforeach
-
-
- @endif
-
-
- @if(session()->has('invite_token'))
-
Sign in to accept the invitation
- @else
-
Sign in to start your session
- @endif
-
+
@include('layouts.partials.scripts_auth')
@@ -72,6 +70,6 @@
});
});
-
+
@endsection
diff --git a/resources/views/blocks/edit.blade.php b/resources/views/blocks/edit.blade.php
index ef95391..8423fc0 100644
--- a/resources/views/blocks/edit.blade.php
+++ b/resources/views/blocks/edit.blade.php
@@ -34,7 +34,7 @@
@if($block->image)
-
+
@endif
{!! Form::file('image', null, ['class' => 'form-control']) !!}
diff --git a/resources/views/blocks/show.blade.php b/resources/views/blocks/show.blade.php
index bc2d8f4..af43090 100644
--- a/resources/views/blocks/show.blade.php
+++ b/resources/views/blocks/show.blade.php
@@ -40,7 +40,7 @@
@if($poi->icon)
-
+
@endif
diff --git a/resources/views/findable/create.blade.php b/resources/views/findable/create.blade.php
index 13f4604..648f749 100644
--- a/resources/views/findable/create.blade.php
+++ b/resources/views/findable/create.blade.php
@@ -3,108 +3,114 @@
@section('contentheader_title', 'Create Findable')
@section('breadcrumbs')
-
- - Home
- - Findables
- - Creating
-
+
+ - Home
+ - Findables
+ - Creating
+
@endsection
@section('content')
-
-
-
-
- {!! Form::open(['route' => 'findables.store', 'method' => 'POST', 'class' => 'form-horizontal']) !!}
-
+
@endsection
@section('footer')
-
+
@endsection
\ No newline at end of file
diff --git a/resources/views/findable/edit.blade.php b/resources/views/findable/edit.blade.php
index 6e503bc..bb30ee8 100644
--- a/resources/views/findable/edit.blade.php
+++ b/resources/views/findable/edit.blade.php
@@ -3,87 +3,93 @@
@section('contentheader_title', 'Edit Findable')
@section('breadcrumbs')
-
- - Home
- - Findables
- - Editing
-
+
+ - Home
+ - Findables
+ - Editing
+
@endsection
@section('content')
-
-
-
-
- {!! Form::open(['route' => ['findables.update', $findable->id], 'method' => 'PUT', 'class' => 'form-horizontal']) !!}
-
+
+
+
+
+ {!! Form::open(['route' => ['findables.update', $findable->id], 'method' => 'PUT', 'class' => 'form-horizontal','files' => true]) !!}
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+ {!! Form::close() !!}
+
-
- {!! Form::close() !!}
-
-
-
+
@endsection
\ No newline at end of file
diff --git a/resources/views/floors/edit.blade.php b/resources/views/floors/edit.blade.php
index ccbb94d..03ac1f4 100644
--- a/resources/views/floors/edit.blade.php
+++ b/resources/views/floors/edit.blade.php
@@ -48,7 +48,7 @@
@if($floor->image)
-
+
@endif
{!! Form::file('image', null, ['class' => 'form-control']) !!}
diff --git a/resources/views/floors/show.blade.php b/resources/views/floors/show.blade.php
index 2f11302..9a9a8be 100644
--- a/resources/views/floors/show.blade.php
+++ b/resources/views/floors/show.blade.php
@@ -66,7 +66,7 @@
{{ $floor->map_height_in_centimeters }}cm
-
+
{{ $floor->map_pixel_to_centimeter_ratio }} ratio
|
@@ -177,22 +177,23 @@
@if($floor->image)
-
+
@foreach($floor->locations as $index => $location)
@if($location->poi && $location->poi->type == 'icon' )
-
-
+
+
@elseif($location->poi && $location->poi->type == 'area' )
@elseif($location->type == 'beacon')
- @elseif($location->type == 'findable')
+ @elseif($location->type == 'findable' && ($location->draw_type == 'point' || empty($location->draw_type)))
- @endif
-
+ @elseif($location->type == 'findable' && $location->draw_type == 'area' )
+
+ @endif
@endforeach
@endif
diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php
index fe2e835..b38ac75 100644
--- a/resources/views/layouts/app.blade.php
+++ b/resources/views/layouts/app.blade.php
@@ -44,7 +44,7 @@
- @if(count($errors))
+ @if(isset($errors) && count($errors))
Whoops! There were some problems with your input.
diff --git a/resources/views/locations/create/findable.blade.php b/resources/views/locations/create/findable.blade.php
index 8cba93b..767e4dc 100644
--- a/resources/views/locations/create/findable.blade.php
+++ b/resources/views/locations/create/findable.blade.php
@@ -42,6 +42,14 @@
+
+