diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..fadc7c1
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+/vendor
+.env
diff --git a/app/Console/Commands/.gitkeep b/app/Console/Commands/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php
new file mode 100644
index 0000000..ad6e311
--- /dev/null
+++ b/app/Console/Kernel.php
@@ -0,0 +1,29 @@
+wantsJson() && !($e instanceof ValidationException)) {
+ if(is_object($e)) {
+ $e = substr(strrchr(get_class($e), "\\"), 1);
+ }
+
+ return response()->json([
+ 'code' => method_exists($e, 'getStatusCode') ? $e->getStatusCode() : 500,
+ 'message' => empty($e) ? 'Server error' : $e
+ ]);
+ }
+
+ return parent::render($request, $e);
+ }
+}
diff --git a/app/Http/Controllers/ConstantsController.php b/app/Http/Controllers/ConstantsController.php
new file mode 100644
index 0000000..35c4cca
--- /dev/null
+++ b/app/Http/Controllers/ConstantsController.php
@@ -0,0 +1,55 @@
+json(School::with('level')->get());
+ }
+
+ public function addSchool(Request $request) {
+ $this->validate($request, [
+ 'name' => 'required',
+ 'city' => 'required',
+ 'level' => 'required'
+ ]);
+
+ if(School::where('name', $request['name'])
+ ->where('city', $request['city'])
+ ->where('level', $request['level'])
+ ->first()) {
+ return MyResponse::show('School already exists', 400);
+ }
+
+ return response()->json(School::create($request->all()));
+ }
+
+ public function subjects() {
+ return response()->json(Subject::all());
+ }
+
+ public function addSubject(Request $request) {
+ $this->validate($request, [
+ 'name' => 'required'
+ ]);
+
+ if(Subject::where('name', $request['name'])
+ ->first()) {
+ return MyResponse::show('Subject already exists', 400);
+ }
+
+ return response()->json(Subject::create($request->all()));
+ }
+
+ public function levels() {
+ return response()->json(Level::all());
+ }
+}
+?>
diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php
new file mode 100644
index 0000000..0ccb918
--- /dev/null
+++ b/app/Http/Controllers/Controller.php
@@ -0,0 +1,10 @@
+json(Login::all());
+ }
+}
+?>
diff --git a/app/Http/Controllers/MyResponse.php b/app/Http/Controllers/MyResponse.php
new file mode 100644
index 0000000..e62ae80
--- /dev/null
+++ b/app/Http/Controllers/MyResponse.php
@@ -0,0 +1,22 @@
+toArray();
+ }
+
+ $data = [
+ 'code' => $code,
+ 'message' => $message
+ ];
+
+ return new JsonResponse($data, 200, [], 0);
+ }
+}
+?>
diff --git a/app/Http/Controllers/SessionsController.php b/app/Http/Controllers/SessionsController.php
new file mode 100644
index 0000000..3987fee
--- /dev/null
+++ b/app/Http/Controllers/SessionsController.php
@@ -0,0 +1,418 @@
+type != 'student') {
+ return MyResponse::show('Only student can create session', 400);
+ }
+
+ $fields = [
+ 'lecture' => 'required',
+ 'date' => 'required',
+ 'time' => 'required',
+ 'location' => 'required',
+ 'mentor' => 'required',
+ 'subject' => 'required'
+ ];
+
+ $this->validate($request, $fields);
+
+ foreach($fields as $key => $value) {
+ $fields[$key] = $request[$key];
+ }
+
+ $fields['student'] = $student->id;
+
+ $school = Junction::where('user', $fields['student'])->first()->school;
+ $fields['level'] = School::findOrFail($school)->level;
+
+ if(strtotime($fields['date']) <= strtotime('now')) {
+ return MyResponse::show('Date must be in future', 400);
+ }
+
+ $day = strtolower(date('D', strtotime($fields['date'])));
+
+ $mentor = User::where('type', 'mentor')->findOrFail($fields['mentor']);
+
+ $interval = Interval::findOrFail($mentor->interval)[$day];
+
+ $intervalBegin = strtotime(substr($interval, 0, strpos($interval, ',')));
+ $intervalEnd = strtotime(substr($interval, strpos($interval, ',') + 1));
+
+ $time = $fields['time'];
+ unset($fields['time']);
+
+ $sTimeBegin = substr($time, 0, strpos($time, ','));
+ $sTimeEnd = substr($time, strpos($time, ',') + 1);
+
+ if(!preg_match('/(2[0-3]|[01][0-9]):([0-5][0-9])/', $sTimeBegin)
+ || !preg_match('/(2[0-3]|[01][0-9]):([0-5][0-9])/', $sTimeEnd)) {
+ return myresponse::show('Invalid time format', 400);
+ }
+
+ $fields['timeBegin'] = $sTimeBegin;
+ $fields['timeEnd'] = $sTimeEnd;
+
+ $timeBegin = strtotime($sTimeBegin);
+ $timeEnd = strtotime($sTimeEnd);
+
+ if($timeBegin > $timeEnd) {
+ return MyResponse::show('Starting time must be before ending time', 400);
+ }
+
+ $duration = ceil(abs($timeEnd - $timeBegin) / 3600);
+
+ if($duration < 1) {
+ return MyResponse::show('Session duration minimum is one hour', 400);
+ }
+
+ if($timeBegin < $intervalBegin
+ || $timeBegin > $intervalEnd
+ || $timeEnd > $intervalEnd) {
+ return MyResponse::show('Mentor is not available in specified time', 400);
+ }
+
+ $fields['price'] = $mentor->price * $duration;
+
+ if(Session::where('lecture', $fields['lecture'])
+ ->where('timeBegin', $fields['timeBegin'])
+ ->where('timeEnd', $fields['timeEnd'])
+ ->where('date', $fields['date'])
+ ->where('location', $fields['location'])
+ ->where('mentor', $fields['mentor'])
+ ->where('subject', $fields['subject'])
+ ->first()) {
+ return MyResponse::show('Session already exists', 400);
+ }
+
+ $name = $student->firstName . ' ' . $student->lastName;
+
+ $session = Session::create($fields);
+
+ $this->notify('New session', $name . ' has created a session.', ['session' => $session->id], $mentor->fcmToken);
+
+ return response()->json($session);
+ }
+
+ public function update(Request $request, $id) {
+ $session = Session::findOrFail($id);
+
+ if($session->status != 'accepted') {
+ return MyResponse::show('Session must be accepted', 400);
+ }
+
+ if(!is_null($session->dateEdit)
+ || !is_null($session->timeBeginEdit)
+ || !is_null($session->timeEndEdit)
+ || !is_null($session->locationEdit)) {
+ return MyResponse::show('Previous update is not reviewed', 400);
+ }
+
+ $time = $request['time'];
+
+ $timeBegin = substr($time, 0, strpos($time, ','));
+ $timeEnd = substr($time, strpos($time, ',') + 1);
+
+ if(isset($request['time']) && (!preg_match('/(2[0-3]|[01][0-9]):([0-5][0-9])/', $timeBegin)
+ || !preg_match('/(2[0-3]|[01][0-9]):([0-5][0-9])/', $timeEnd))) {
+ return myresponse::show('Invalid time format', 400);
+ }
+
+ unset($request['time']);
+
+ $request['timeBegin'] = $timeBegin . ':00';
+ $request['timeEnd'] = $timeEnd . ':00';
+
+ $fields = [
+ 'date',
+ 'timeBegin',
+ 'timeEnd',
+ 'location'
+ ];
+
+ $old = [
+ $session->date,
+ $session->timeBegin,
+ $session->timeEnd,
+ $session->location
+ ];
+
+ $edit = [];
+
+ for($i = 0; $i < sizeof($fields); $i++) {
+ $new = $request[$fields[$i]];
+
+ if(!empty($new)) {
+ $edit[$fields[$i] . 'Edit'] = $new;
+ }else {
+ $edit[$fields[$i] . 'Edit'] = $old;
+ }
+ }
+
+ $currentUser = UsersController::currentUser();
+
+ if($currentUser->type != 'mentor') {
+ return MyResponse::show('Only mentor can update session', 400);
+ }
+
+ if($currentUser->id != $session->mentor) {
+ return MyResponse::show('Mentor not authorized', 400);
+ }
+
+ $user = User::findOrFail($session->student);
+
+ $name = $currentUser->firstName . ' ' . $currentUser->lastName;
+
+ Session::where('id', $id)->update($edit);
+
+ $this->notify('Updated session', $name . ' has changed session details.', ['session' => $id], $user->fcmToken);
+
+ return response()->json(Session::find($id));
+ }
+
+ public function decideEdit($id, $status) {
+ if($status != 'accept' && $status != 'decline') {
+ return MyResponse::show('Invalid action', 400);
+ }
+
+ $session = Session::findOrFail($id);
+
+ if($session->status != 'accepted') {
+ return MyResponse::show('Session must be accepted', 400);
+ }
+
+ if(is_null($session->dateEdit)
+ && is_null($session->timeBeginEdit)
+ && is_null($session->timeEndEdit)
+ && is_null($session->locationEdit)) {
+ return MyResponse::show('Session is not updated', 400);
+ }
+
+ $currentUser = UsersController::currentUser();
+
+ if($currentUser->type != 'student') {
+ return MyResponse::show('Only student can review session update', 400);
+ }
+
+ if($currentUser->id != $session->student) {
+ return MyResponse::show('Student not authorized', 400);
+ }
+
+ $user = User::findOrFail($session->mentor);
+
+ $name = $currentUser->firstName . ' ' . $currentUser->lastName;
+
+ if($status == 'accept') {
+ Session::where('id', $id)->update([
+ 'date' => $session->dateEdit,
+ 'timeBegin' => $session->timeBeginEdit,
+ 'timeEnd' => $session->timeEndEdit,
+ 'location' => $session->locationEdit,
+ ]);
+
+ $this->notify('Accepted changes', $name . ' has accepted session changes.', ['session' => $id], $user->fcmToken);
+ }else {
+ $this->notify('Declined changes', $name . ' has declined session changes.', ['session' => $id], $user->fcmToken);
+ }
+
+ Session::where('id', $id)->update([
+ 'dateEdit' => null,
+ 'timeBeginEdit' => null,
+ 'timeEndEdit' => null,
+ 'locationEdit' => null
+ ]);
+
+ return MyResponse::show('Success', 200);
+ }
+
+ public function decide($id, $status) {
+ if($status != 'accept' && $status != 'decline') {
+ return MyResponse::show('Invalid action', 400);
+ }
+
+ $session = Session::findOrFail($id);
+
+ if($status == 'accept') {
+ if($session->status == 'declined') {
+ return MyResponse::show('Session cannot be declined', 400);
+ }else if($session->status == 'accepted') {
+ return MyResponse::show('Session is already accepted', 400);
+ }
+ }else {
+ if($session->status == 'accepted') {
+ return MyResponse::show('Session cannot be accepted', 400);
+ }else if($session-status == 'declined') {
+ return MyResponse::show('Session is already declined', 400);
+ }
+ }
+
+ $currentUser = UsersController::currentUser();
+
+ if($currentUser->type != 'mentor') {
+ return MyResponse::show('Only mentor can ' . $status . ' session', 400);
+ }
+
+ if($currentUser->id != $session->mentor) {
+ return MyResponse::show('Mentor not authorized', 400);
+ }
+
+ $name = $currentUser->firstName . ' ' . $currentUser->lastName;
+
+ $user = User::findOrFail($session->student);
+
+ if($status == 'accept') {
+ Session::where('id', $id)->update(['status' => 'accepted']);
+
+ $this->notify('Accepted session', $name . ' has accepted a session.', ['session' => $id], $user->fcmToken);
+ }else {
+ Session::where('id', $id)->update(['status' => 'declined']);
+
+ $this->notify('Declined session', $name . ' has declined a session.', ['session' => $id], $user->fcmToken);
+ }
+
+ return MyResponse::show('Success', 200);
+ }
+
+ public function cancel($id) {
+ $session = Session::findOrFail($id);
+
+ if($session->status != 'accepted') {
+ return MyResponse::show('Session must be accepted', 400);
+ }
+
+ if($session->canceled == 1) {
+ return MyResponse::show('Session is already canceled', 400);
+ }
+
+ $currentUser = UsersController::currentUser();
+
+ $user = User::findOrFail($session->student);
+
+ if($currentUser->type == 'student') {
+ $user = User::findOrFail($session->mentor);
+ }
+
+ if($currentUser->id != $session->student
+ && $currentUser->id != $session->mentor) {
+ return MyResponse::show('User not authorized', 400);
+ }
+
+ $name = $currentUser->firstName . ' ' . $currentUser->lastName;
+
+ Session::where('id', $id)->update(['canceled' => 1]);
+
+ $this->notify('Canceled session', $name . ' has canceled a session.', ['session' => $id], $user->fcmToken);
+
+ return MyResponse::show('Success', 200);
+ }
+
+ public function review(Request $request, $id) {
+ $this->validate($request, [
+ 'rating' => 'required',
+ 'description' => 'required'
+ ]);
+
+ $session = Session::findOrFail($id);
+
+ $currentUser = UsersController::currentUser();
+
+ if($currentUser->type != 'student') {
+ return MyResponse::show('Only student can review session', 400);
+ }
+
+ if($currentUser->id != $session->student) {
+ return MyResponse::show('Student not authorized', 400);
+ }
+
+ if($session->status != 'accepted') {
+ return MyResponse::show('Session must be accepted', 400);
+ }
+
+ if($session->canceled == 1) {
+ return MyResponse::show('Session must not be canceled', 400);
+ }
+
+ if(isset($session->review)) {
+ return MyResponse::show('Session already has a review', 400);
+ }
+
+ if($request['rating'] < 1 || $request['rating'] > 5) {
+ return MyResponse::show('Rating is out of bounds', 400);
+ }
+
+ $review = Review::create($request->all());
+
+ Session::where('id', $id)->update(['review' => $review->id]);
+
+ return response()->json($review);
+ }
+
+ public function get($id) {
+ $session = $this->getSession($id);
+ $user = UsersController::currentUser();
+
+ if($session->student != $user->id && $session->mentor != $user->id) {
+ return MyResponse::show('User not authorized', 400);
+ }
+
+ return response()->json($session);
+ }
+
+ public function all() {
+ $user = UsersController::currentUser();
+
+ return response()->json(Session::where($user->type, $user->id)->get());
+ }
+
+ private function getSession($id) {
+ return Session::with('student', 'mentor', 'review', 'level', 'subject')->findOrFail($id);
+ }
+
+ private function notify($title, $body, $data, $token) {
+ //todo uncomment before release
+ return;
+
+ $optionBuilder = new OptionsBuilder();
+ $optionBuilder->setTimeToLive(60*20);
+
+ $notificationBuilder = new PayloadNotificationBuilder($title);
+ $notificationBuilder->setBody($body)
+ ->setSound('default');
+
+ $dataBuilder = new PayloadDataBuilder();
+ $dataBuilder->addData($data);
+
+ $option = $optionBuilder->build();
+ $notification = $notificationBuilder->build();
+ $data = $dataBuilder->build();
+
+ $downstreamResponse = FCM::sendTo($token, $option, $notification, $data);
+
+ $downstreamResponse->numberSuccess();
+ $downstreamResponse->numberFailure();
+ $downstreamResponse->numberModification();
+
+ $downstreamResponse->tokensToDelete();
+ $downstreamResponse->tokensToModify();
+ $downstreamResponse->tokensToRetry();
+ }
+}
+?>
diff --git a/app/Http/Controllers/UsersController.php b/app/Http/Controllers/UsersController.php
new file mode 100644
index 0000000..9b7e011
--- /dev/null
+++ b/app/Http/Controllers/UsersController.php
@@ -0,0 +1,477 @@
+ 'required',
+ 'password' => 'required',
+ 'firstName' => 'required',
+ 'lastName' => 'required',
+ 'type' => 'required'
+ ];
+
+ $this->validate($request, $fields);
+
+ if(User::where('email', $request['email'])->first()) {
+ return MyResponse::show('Email is already in use', 400);
+ }
+
+ if($request['type'] == 'mentor') {
+ $fields = array_merge($fields, [
+ 'interval' => 'required',
+ 'price' => 'required',
+ 'location' => 'required',
+ 'promoted' => 'required',
+ 'schools' => 'required',
+ 'subjects' => 'required',
+ 'levels' => 'required'
+ ]);
+ }else if($request['type'] == 'mentor') {
+ $fields = array_merge($fields, [
+ 'school' => 'required',
+ 'grade' => 'required'
+ ]);
+ }else {
+ return MyResponse::show('Invalid type', 400);
+ }
+
+ $this->validate($request, $fields);
+
+ $temp = [];
+
+ if($request['type'] == 'mentor') {
+ if(sizeof($request['interval']) != 7) {
+ return MyResponse::show('Interval must contain whole week', 400);
+ }
+
+ $model = new Interval();
+
+ $days = $model->getColumns();
+
+ $count = 0;
+
+ foreach($request['interval'] as $day => $i) {
+ $count++;
+
+ if($day != $days[$count]) {
+ return MyResponse::show('Invalid day specified in interval', 400);
+ }
+
+ $timeBegin = substr($i, 0, strpos($i, ','));
+ $timeEnd = substr($i, strpos($i, ',') + 1);
+
+ if(!preg_match('/(2[0-3]|[01][0-9]):([0-5][0-9])/', $timeBegin)
+ || !preg_match('/(2[0-3]|[01][0-9]):([0-5][0-9])/', $timeEnd)) {
+ return myresponse::show('Invalid time format', 400);
+ }
+
+ $timeBegin = strtotime($timeBegin);
+ $timeEnd = strtotime($timeEnd);
+
+ if($timeBegin > $timeEnd) {
+ return MyResponse::show('Starting time must be before ending time', 400);
+ }
+ }
+
+ $interval = Interval::create($request['interval']);
+ $request['interval'] = $interval->id;
+
+ $columns = [
+ 'school',
+ 'subject',
+ 'level'
+ ];
+
+ foreach($columns as $column) {
+ $temp[$column] = explode(',', $request[$column . 's']);
+ unset($request[$column . 's']);
+ }
+ }else {
+ $temp['school'] = $request['school'];
+ unset($request['school']);
+ }
+
+ $create = [];
+
+ foreach($fields as $key => $value) {
+ $create[$key] = $request[$key];
+ }
+
+ $create['password'] = $this->hashPassword($request['password']);
+ $create['accessToken'] = $this->createToken();
+
+ $user = User::create($create);
+
+ if($request['type'] == 'mentor') {
+ foreach($temp as $key => $value) {
+ switch($key) {
+ case 'school':
+ $model = new School();
+ break;
+ case 'subject':
+ $model = new Subject();
+ break;
+ case 'level';
+ $model = new Level();
+ break;
+ }
+
+ foreach($value as $entry) {
+ if(Junction::where('user', $user->id)
+ ->where($key, $entry)
+ ->first()) {
+ continue;
+ }
+
+ if(!$model->where('id', $entry)->first()) {
+ return MyResponse::show('Invalid ' . $key, 400);
+ }
+
+ Junction::create([
+ 'user' => $user->id,
+ $key => $entry
+ ]);
+ }
+ }
+ }else {
+ if(isset($request['school'])
+ && !Junction::where('user', $user->id)
+ ->where('school', $request['school'])
+ ->first()) {
+
+ if(School::where('id', $request['school'])->first()) {
+ return MyResponse::show('Invalid school', 400);
+ }
+
+ Junction::create([
+ 'user' => $user->id,
+ 'school' => $temp['school']
+ ]);
+ }
+ }
+
+ return response()->json(User::find($user->id));
+ }
+
+ public function login(Request $request) {
+ $this->validate($request, [
+ 'email' => 'required',
+ 'password' => 'required',
+ 'token' => 'required'
+ ]);
+
+ $user = User::where('email', $request['email'])
+ ->firstOrFail();
+
+ if(!app('hash')->check($request['password'], $user->password)) {
+ return MyResponse::show('Incorrect password', 400);
+ }
+
+ if($user->active == 1) {
+ return MyResponse::show('User is already active', 400);
+ }
+
+ $accessToken = $this->createToken();
+
+ User::where('id', $user->id)
+ ->update([
+ 'accessToken' => $accessToken,
+ 'fcmToken' => $request['token'],
+ 'active' => 1
+ ]);
+
+ $login = Login::create([
+ 'user' => $user->id,
+ 'ip' => $request->ip()
+ ]);
+
+ return response()->json([
+ 'accessToken' => $accessToken,
+ 'login' => $login
+ ]);
+ }
+
+ public function logout() {
+ $user = UsersController::currentUser();
+
+ if($user->active == 0) {
+ return MyResponse::show('User must be active', 400);
+ }
+
+ $user->active = 0;
+
+ return MyResponse::show('Success', 200);
+ }
+
+ public function update(Request $request) {
+ $user = UsersController::currentUser();
+
+ $fields = [
+ 'firstName',
+ 'lastName'
+ ];
+
+ if($user->type == 'mentor') {
+ $fields = array_merge($fields, [
+ 'interval',
+ 'price',
+ 'location',
+ 'promoted'
+ ]);
+
+ $columns = [
+ 'school',
+ 'subject',
+ 'level'
+ ];
+
+ foreach($columns as $column) {
+ $key = $column . 's';
+
+ if(isset($request[$key])) {
+ if(empty($request[$key])) {
+ return MyResponse::show($key . ' are required', 400);
+ }
+
+ $temp[$column] = explode(',', $request[$key]);
+
+ Junction::where('user', $user->id)
+ ->whereNotNull($column)
+ ->delete();
+ }
+ }
+
+ foreach($temp as $key => $value) {
+ $model = null;
+
+ switch($key) {
+ case 'school':
+ $model = new School();
+ break;
+ case 'subject':
+ $model = new Subject();
+ break;
+ case 'level';
+ $model = new Level();
+ break;
+ }
+
+ foreach($value as $entry) {
+ if(!$model->where('id', $entry)->first()) {
+ return MyResponse::show('Invalid ' . $key, 400);
+ }
+
+ Junction::create([
+ 'user' => $user->id,
+ $key => $entry
+ ]);
+ }
+ }
+ }else {
+ if(isset($request['school'])) {
+ if(empty($request['school'])) {
+ return MyResponse::show('School is required', 400);
+ }
+
+ Junction::where('user', $user->id)
+ ->whereNotNull('school')
+ ->delete();
+
+ if(!School::where('id', $request['school'])->first()) {
+ return MyResponse::show('Invalid school', 400);
+ }
+
+ Junction::create([
+ 'user' => $user->id,
+ 'school' => $request['school']
+ ]);
+ }
+
+ $fields = array_merge($fields, [
+ 'grade'
+ ]);
+ }
+
+ $edit = [];
+
+ foreach($fields as $field) {
+ $new = $request[$field];
+
+ if(empty($new)) {
+ continue;
+ }
+
+ $edit[$field] = $new;
+ }
+
+ $user->update($edit);
+
+ return response()->json($user);
+ }
+
+ public function setImage(Request $request) {
+ $user = UsersController::currentUser();
+
+ $this->validate($request, ['file' => 'required']);
+
+ $file = $request->file('file');
+
+ $name = $user->id . '.' . $file->getClientOriginalExtension();
+
+ $path = 'images/profile';
+
+ if(!File::exists($path)) {
+ File::makeDirectory($path);
+ }
+
+ $file->move($path, $name);
+
+ $user->image = $name;
+
+ return response()->json($user);
+ }
+
+ public function getImage($id) {
+ return response()->file(User::findOrFail($id)->image);
+ }
+
+ public function delete() {
+ $user = UsersController::currentUser();
+
+ $user->active = 0;
+ $user->delete();
+
+ return MyResponse::show('Success', 200);
+ }
+
+ public function get($id) {
+ $view = true;
+
+ $user = User::findOrfail($id);
+
+ if($user->id == UsersController::currentUser()->id) {
+ $view = false;
+ }
+
+ foreach($user as $key => $value) {
+ if(!isset($value) || empty($value)) {
+ unset($user[$key]);
+ }
+ }
+
+ if($user->type == 'mentor') {
+ $user['schools'] = Junction::with('school')
+ ->where('user', $id)
+ ->whereNotNull('school')
+ ->get();
+
+ $user['subjects'] = Junction::with('subject')
+ ->where('user', $id)
+ ->whereNotNull('subject')
+ ->get();
+
+ $user['levels'] = Junction::with('level')
+ ->where('user', $id)
+ ->whereNotNull('level')
+ ->get();
+
+ $user['sessions'] = Session::where('mentor', $user->id)->count();
+
+ $user['students'] = sizeof(Session::where('mentor', $user->id)->groupBy('student')->get());
+
+ $user['reviews'] = Session::where('mentor', $user->id)
+ ->whereNotNull('review')
+ ->count();
+
+ $user['rating'] = $this->reviews($user->id, true);
+
+ if($view) {
+ $user->increment('views');
+ }
+ }else {
+ $user['school'] = Junction::with('school')
+ ->where('user', $id)
+ ->whereNotNull('school')
+ ->first();
+ }
+
+ return response()->json($user);
+ }
+
+ public function all() {
+ return response()->json(User::all());
+ }
+
+ public function reviews($id, $calculate = false) {
+ $user = User::findOrFail($id);
+
+ if($user->type != 'mentor') {
+ return MyResponse::show('Only mentors have reviews', 400);
+ }
+
+ $sessions = Session::where($user->type, $id)->get();
+
+ $reviews = [];
+
+ $sum = 0;
+ $cnt = 0;
+
+ for($i = 0; $i < sizeof($sessions); $i++) {
+ $r = Review::find($sessions[$i]->review);
+
+ if($r != null) {
+ $reviews[$i] = $r;
+ $sum += $reviews[$i]->rating;
+ $cnt++;
+ }
+ }
+
+ if($calculate) {
+ $avg = 0;
+
+ if($cnt > 0) {
+ $avg = $sum / $cnt;
+ }
+
+ return $avg;
+ }
+
+ return response()->json($reviews);
+ }
+
+ private function hashPassword($password) {
+ return app('hash')->make($password);
+ }
+
+ private function createToken() {
+ do {
+ $token = str_random(64);
+ }while(User::where("accessToken", $token)->first() instanceof User);
+
+ return $token;
+ }
+
+ public static function currentUser() {
+ $user = User::findOrFail(Auth::user()->id);
+
+ return $user;
+ }
+}
+?>
diff --git a/app/Http/Middleware/Authenticate.php b/app/Http/Middleware/Authenticate.php
new file mode 100644
index 0000000..325f967
--- /dev/null
+++ b/app/Http/Middleware/Authenticate.php
@@ -0,0 +1,45 @@
+auth = $auth;
+ }
+
+ /**
+ * Handle an incoming request.
+ *
+ * @param \Illuminate\Http\Request $request
+ * @param \Closure $next
+ * @param string|null $guard
+ * @return mixed
+ */
+ public function handle($request, Closure $next, $guard = null)
+ {
+ if ($this->auth->guard($guard)->guest()) {
+ return response('Unauthorized', 401);
+ }
+
+ return $next($request);
+ }
+}
diff --git a/app/Http/Middleware/ExampleMiddleware.php b/app/Http/Middleware/ExampleMiddleware.php
new file mode 100644
index 0000000..166581c
--- /dev/null
+++ b/app/Http/Middleware/ExampleMiddleware.php
@@ -0,0 +1,20 @@
+get('/', function() use ($app) {
+ return view('home', [
+ 'version' => '1.0',
+ 'year' => date('Y')
+ ]);
+});
+
+$app->group(['prefix' => 'api/v1'], function($app) {
+ $app->get('schools', 'ConstantsController@schools');
+ $app->get('subjects', 'ConstantsController@subjects');
+ $app->get('levels', 'ConstantsController@levels');
+
+ $app->post('schools', 'ConstantsController@addSchool');
+ $app->post('subjects', 'ConstantsController@addSubject');
+
+ $app->get('logins', 'LoginsController@all');
+
+ $app->post('register', 'UsersController@register');
+ $app->post('login', 'UsersController@login');
+
+ $app->group(['middleware' => 'auth'], function($app) {
+ $app->put('account/image', 'UsersController@setImage');
+ $app->put('account', 'UsersController@update');
+ $app->delete('account', 'UsersController@delete');
+ $app->post('logout', 'UsersController@logout');
+ });
+
+ $app->group(['prefix' => 'users', 'middleware' => 'auth'], function($app) {
+ $app->get('all', 'UsersController@all');
+ $app->get('{id}', 'UsersController@get');
+ $app->get('{id}/reviews', 'UsersController@reviews');
+ $app->get('{id}/image', 'UsersController@getImage');
+ });
+
+ $app->group(['prefix' => 'sessions', 'middleware' => 'auth'], function($app) {
+ $app->get('all', 'SessionsController@all');
+ $app->post('create', 'SessionsController@create');
+ $app->put('{id}', 'SessionsController@update');
+ $app->get('{id}', 'SessionsController@get');
+ $app->post('{id}/cancel', 'SessionsController@cancel');
+ $app->post('{id}/review', 'SessionsController@review');
+ $app->post('{id}/{status}', 'SessionsController@decide');
+ $app->post('{id}/edit/{status}', 'SessionsController@decideEdit');
+ });
+});
+?>
diff --git a/app/Interval.php b/app/Interval.php
new file mode 100644
index 0000000..bb45163
--- /dev/null
+++ b/app/Interval.php
@@ -0,0 +1,25 @@
+getConnection()
+ ->getSchemaBuilder()
+ ->getColumnListing($this->getTable());
+ }
+}
+?>
diff --git a/app/Jobs/ExampleJob.php b/app/Jobs/ExampleJob.php
new file mode 100644
index 0000000..7b65bb4
--- /dev/null
+++ b/app/Jobs/ExampleJob.php
@@ -0,0 +1,26 @@
+belongsTo('App\User', 'user');
+ }
+
+ public function school() {
+ return $this->belongsTo('App\School', 'school');
+ }
+
+ public function subject() {
+ return $this->belongsTo('App\Subject', 'subject');
+ }
+
+ public function level() {
+ return $this->belongsTo('App\Level', 'level');
+ }
+}
+?>
diff --git a/app/Level.php b/app/Level.php
new file mode 100644
index 0000000..f513630
--- /dev/null
+++ b/app/Level.php
@@ -0,0 +1,13 @@
+
diff --git a/app/Listeners/ExampleListener.php b/app/Listeners/ExampleListener.php
new file mode 100644
index 0000000..77fc6a8
--- /dev/null
+++ b/app/Listeners/ExampleListener.php
@@ -0,0 +1,31 @@
+belongsTo('App\User', 'user');
+ }
+}
+?>
diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php
new file mode 100644
index 0000000..ddec046
--- /dev/null
+++ b/app/Providers/AppServiceProvider.php
@@ -0,0 +1,18 @@
+header('accessToken')) {
+ return User::where('accessToken', $request->header('accessToken'))
+ ->where('active', 1)
+ ->first();
+ }
+ });
+ }
+}
diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php
new file mode 100644
index 0000000..0b8f393
--- /dev/null
+++ b/app/Providers/EventServiceProvider.php
@@ -0,0 +1,19 @@
+ [
+ 'App\Listeners\EventListener',
+ ],
+ ];
+}
diff --git a/app/Review.php b/app/Review.php
new file mode 100644
index 0000000..58ed23d
--- /dev/null
+++ b/app/Review.php
@@ -0,0 +1,12 @@
+
diff --git a/app/School.php b/app/School.php
new file mode 100644
index 0000000..7ae1a50
--- /dev/null
+++ b/app/School.php
@@ -0,0 +1,19 @@
+belongsTo('App\Level', 'level');
+ }
+}
+?>
diff --git a/app/Session.php b/app/Session.php
new file mode 100644
index 0000000..f454705
--- /dev/null
+++ b/app/Session.php
@@ -0,0 +1,43 @@
+belongsTo('App\Review', 'review');
+ }
+
+ public function mentor() {
+ return $this->belongsTo('App\User', 'mentor');
+ }
+
+ public function student() {
+ return $this->belongsTo('App\User', 'student');
+ }
+
+ public function level() {
+ return $this->belongsTo('App\Level', 'level');
+ }
+
+ public function subject() {
+ return $this->belongsTo('App\Subject', 'subject');
+ }
+}
+?>
diff --git a/app/Subject.php b/app/Subject.php
new file mode 100644
index 0000000..0a64694
--- /dev/null
+++ b/app/Subject.php
@@ -0,0 +1,13 @@
+
diff --git a/app/User.php b/app/User.php
new file mode 100644
index 0000000..4d03e52
--- /dev/null
+++ b/app/User.php
@@ -0,0 +1,53 @@
+belongsTo('App\Interval', 'interval');
+ }
+}
diff --git a/artisan b/artisan
new file mode 100644
index 0000000..6a9d095
--- /dev/null
+++ b/artisan
@@ -0,0 +1,35 @@
+#!/usr/bin/env php
+make(
+ 'Illuminate\Contracts\Console\Kernel'
+);
+
+exit($kernel->handle(new ArgvInput, new ConsoleOutput));
diff --git a/bootstrap/app.php b/bootstrap/app.php
new file mode 100644
index 0000000..b32139f
--- /dev/null
+++ b/bootstrap/app.php
@@ -0,0 +1,103 @@
+load();
+} catch (Dotenv\Exception\InvalidPathException $e) {
+ //
+}
+
+/*
+|--------------------------------------------------------------------------
+| Create The Application
+|--------------------------------------------------------------------------
+|
+| Here we will load the environment and create the application instance
+| that serves as the central piece of this framework. We'll use this
+| application as an "IoC" container and router for this framework.
+|
+*/
+
+$app = new Fremail\NestedRouteGroups\Application(
+ realpath(__DIR__.'/../')
+);
+
+$app->withFacades();
+class_alias(\LaravelFCM\Facades\FCM::class, 'FCM');
+class_alias(\LaravelFCM\Facades\FCMGroup::class, 'FCMGroup');
+
+$app->withEloquent();
+
+/*
+|--------------------------------------------------------------------------
+| Register Container Bindings
+|--------------------------------------------------------------------------
+|
+| Now we will register a few bindings in the service container. We will
+| register the exception handler and the console kernel. You may add
+| your own bindings here if you like or you can make another file.
+|
+*/
+
+$app->singleton(
+ Illuminate\Contracts\Debug\ExceptionHandler::class,
+ App\Exceptions\Handler::class
+);
+
+$app->singleton(
+ Illuminate\Contracts\Console\Kernel::class,
+ App\Console\Kernel::class
+);
+
+/*
+|--------------------------------------------------------------------------
+| Register Middleware
+|--------------------------------------------------------------------------
+|
+| Next, we will register the middleware with the application. These can
+| be global middleware that run before and after each request into a
+| route or middleware that'll be assigned to some specific routes.
+|
+*/
+
+// $app->middleware([
+// App\Http\Middleware\ExampleMiddleware::class
+// ]);
+
+$app->routeMiddleware([
+ 'auth' => App\Http\Middleware\Authenticate::class,
+]);
+
+/*
+|--------------------------------------------------------------------------
+| Register Service Providers
+|--------------------------------------------------------------------------
+|
+| Here we will register all of the application's service providers which
+| are used to bind services into the container. Service providers are
+| totally optional, so you are not required to uncomment this line.
+|
+*/
+
+//$app->register(App\Providers\AppServiceProvider::class);
+$app->register(App\Providers\AuthServiceProvider::class);
+// $app->register(App\Providers\EventServiceProvider::class);
+$app->register(LaravelFCM\FCMServiceProvider::class);
+
+/*
+|--------------------------------------------------------------------------
+| Load The Application Routes
+|--------------------------------------------------------------------------
+|
+| Next we will include the routes file so that they can all be added to
+| the application. This will provide all of the URLs the application
+| can respond to, as well as the controllers that may handle them.
+|
+*/
+
+$app->group(['namespace' => 'App\Http\Controllers'], function ($app) {
+ require __DIR__.'/../app/Http/routes.php';
+});
+
+return $app;
diff --git a/composer.json b/composer.json
new file mode 100644
index 0000000..87b2c0a
--- /dev/null
+++ b/composer.json
@@ -0,0 +1,32 @@
+{
+ "name": "laravel/lumen",
+ "description": "The Laravel Lumen Framework.",
+ "keywords": ["framework", "laravel", "lumen"],
+ "license": "MIT",
+ "type": "project",
+ "require": {
+ "php": ">=5.5.9",
+ "laravel/lumen-framework": "5.2.*",
+ "vlucas/phpdotenv": "~2.2",
+ "fremail/lumen-nested-route-groups": "~1.1",
+ "brozot/laravel-fcm": "^1.2"
+ },
+ "require-dev": {
+ "fzaninotto/faker": "~1.4",
+ "phpunit/phpunit": "~4.0"
+ },
+ "autoload": {
+ "classmap": [
+ "database/"
+ ],
+ "psr-4": {
+ "App\\": "app/"
+ }
+ },
+ "autoload-dev": {
+ "classmap": [
+ "tests/",
+ "database/"
+ ]
+ }
+}
diff --git a/composer.lock b/composer.lock
new file mode 100644
index 0000000..a0d93c9
--- /dev/null
+++ b/composer.lock
@@ -0,0 +1,3737 @@
+{
+ "_readme": [
+ "This file locks the dependencies of your project to a known state",
+ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
+ "This file is @generated automatically"
+ ],
+ "hash": "4c338725743227cf619c92ade38c0172",
+ "content-hash": "0292a88e8dcc55d7e9d83c88f195b6b1",
+ "packages": [
+ {
+ "name": "brozot/laravel-fcm",
+ "version": "v1.2.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/brozot/Laravel-FCM.git",
+ "reference": "2122ba0fda51fbec87a14a1a9dc7e292f10b26df"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/brozot/Laravel-FCM/zipball/2122ba0fda51fbec87a14a1a9dc7e292f10b26df",
+ "reference": "2122ba0fda51fbec87a14a1a9dc7e292f10b26df",
+ "shasum": ""
+ },
+ "require": {
+ "guzzlehttp/guzzle": "~6.0",
+ "illuminate/support": "5.*",
+ "monolog/monolog": "^1.19",
+ "php": ">=5.5.9"
+ },
+ "require-dev": {
+ "laravel/laravel": "5.2.*",
+ "mockery/mockery": "0.9.*",
+ "phpunit/phpunit": "4.7.*",
+ "satooshi/php-coveralls": "dev-master"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "LaravelFCM\\": "src/",
+ "LaravelFCM\\Mocks\\": "tests/mocks"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Brosy",
+ "email": "nicolas.brosy@gmail.com"
+ }
+ ],
+ "description": "Laravel / Lumen package for Firebase Cloud Messaging ",
+ "keywords": [
+ "FCM",
+ "Firebase Cloud Messaging",
+ "firebase",
+ "laravel",
+ "lumen",
+ "notification",
+ "push"
+ ],
+ "time": "2017-04-20 06:27:21"
+ },
+ {
+ "name": "doctrine/inflector",
+ "version": "v1.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/inflector.git",
+ "reference": "90b2128806bfde671b6952ab8bea493942c1fdae"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/inflector/zipball/90b2128806bfde671b6952ab8bea493942c1fdae",
+ "reference": "90b2128806bfde671b6952ab8bea493942c1fdae",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "4.*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Doctrine\\Common\\Inflector\\": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "Common String Manipulations with regard to casing and singular/plural rules.",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "inflection",
+ "pluralize",
+ "singularize",
+ "string"
+ ],
+ "time": "2015-11-06 14:35:42"
+ },
+ {
+ "name": "fremail/lumen-nested-route-groups",
+ "version": "1.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/fremail/lumen-nested-route-groups.git",
+ "reference": "bb0bef1a451d57d59037a608167757860d204105"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/fremail/lumen-nested-route-groups/zipball/bb0bef1a451d57d59037a608167757860d204105",
+ "reference": "bb0bef1a451d57d59037a608167757860d204105",
+ "shasum": ""
+ },
+ "require": {
+ "laravel/lumen-framework": "5.*",
+ "php": ">=5.5.9"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Fremail\\NestedRouteGroups\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Anton Demushkin",
+ "email": "fremail@yandex.com"
+ }
+ ],
+ "description": "Extends a lumen application for using nested route groups. In addition to the groups it's possible to use any() and match() methods.",
+ "keywords": [
+ "Match",
+ "any",
+ "group",
+ "lumen",
+ "route"
+ ],
+ "time": "2016-11-12 21:21:42"
+ },
+ {
+ "name": "guzzlehttp/guzzle",
+ "version": "6.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/guzzle/guzzle.git",
+ "reference": "f4db5a78a5ea468d4831de7f0bf9d9415e348699"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/guzzle/guzzle/zipball/f4db5a78a5ea468d4831de7f0bf9d9415e348699",
+ "reference": "f4db5a78a5ea468d4831de7f0bf9d9415e348699",
+ "shasum": ""
+ },
+ "require": {
+ "guzzlehttp/promises": "^1.0",
+ "guzzlehttp/psr7": "^1.4",
+ "php": ">=5.5"
+ },
+ "require-dev": {
+ "ext-curl": "*",
+ "phpunit/phpunit": "^4.0 || ^5.0",
+ "psr/log": "^1.0"
+ },
+ "suggest": {
+ "psr/log": "Required for using the Log middleware"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "6.2-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "src/functions_include.php"
+ ],
+ "psr-4": {
+ "GuzzleHttp\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Michael Dowling",
+ "email": "mtdowling@gmail.com",
+ "homepage": "https://github.com/mtdowling"
+ }
+ ],
+ "description": "Guzzle is a PHP HTTP client library",
+ "homepage": "http://guzzlephp.org/",
+ "keywords": [
+ "client",
+ "curl",
+ "framework",
+ "http",
+ "http client",
+ "rest",
+ "web service"
+ ],
+ "time": "2017-06-22 18:50:49"
+ },
+ {
+ "name": "guzzlehttp/promises",
+ "version": "v1.3.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/guzzle/promises.git",
+ "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646",
+ "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.5.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "GuzzleHttp\\Promise\\": "src/"
+ },
+ "files": [
+ "src/functions_include.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Michael Dowling",
+ "email": "mtdowling@gmail.com",
+ "homepage": "https://github.com/mtdowling"
+ }
+ ],
+ "description": "Guzzle promises library",
+ "keywords": [
+ "promise"
+ ],
+ "time": "2016-12-20 10:07:11"
+ },
+ {
+ "name": "guzzlehttp/psr7",
+ "version": "1.4.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/guzzle/psr7.git",
+ "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/guzzle/psr7/zipball/f5b8a8512e2b58b0071a7280e39f14f72e05d87c",
+ "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.4.0",
+ "psr/http-message": "~1.0"
+ },
+ "provide": {
+ "psr/http-message-implementation": "1.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "GuzzleHttp\\Psr7\\": "src/"
+ },
+ "files": [
+ "src/functions_include.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Michael Dowling",
+ "email": "mtdowling@gmail.com",
+ "homepage": "https://github.com/mtdowling"
+ },
+ {
+ "name": "Tobias Schultze",
+ "homepage": "https://github.com/Tobion"
+ }
+ ],
+ "description": "PSR-7 message implementation that also provides common utility methods",
+ "keywords": [
+ "http",
+ "message",
+ "request",
+ "response",
+ "stream",
+ "uri",
+ "url"
+ ],
+ "time": "2017-03-20 17:10:46"
+ },
+ {
+ "name": "illuminate/auth",
+ "version": "v5.2.45",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/illuminate/auth.git",
+ "reference": "4098195b10a2c7a83f66bcd19663b4c60cd2106c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/illuminate/auth/zipball/4098195b10a2c7a83f66bcd19663b4c60cd2106c",
+ "reference": "4098195b10a2c7a83f66bcd19663b4c60cd2106c",
+ "shasum": ""
+ },
+ "require": {
+ "illuminate/contracts": "5.2.*",
+ "illuminate/http": "5.2.*",
+ "illuminate/support": "5.2.*",
+ "nesbot/carbon": "~1.20",
+ "php": ">=5.5.9"
+ },
+ "suggest": {
+ "illuminate/console": "Required to use the auth:clear-resets command (5.2.*).",
+ "illuminate/queue": "Required to fire login / logout events (5.2.*).",
+ "illuminate/session": "Required to use the session based guard (5.2.*)."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.2-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Illuminate\\Auth\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "The Illuminate Auth package.",
+ "homepage": "http://laravel.com",
+ "time": "2016-08-01 13:49:14"
+ },
+ {
+ "name": "illuminate/broadcasting",
+ "version": "v5.2.45",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/illuminate/broadcasting.git",
+ "reference": "7137f24d2520697203d95bcac2d0831549b1ca0b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/illuminate/broadcasting/zipball/7137f24d2520697203d95bcac2d0831549b1ca0b",
+ "reference": "7137f24d2520697203d95bcac2d0831549b1ca0b",
+ "shasum": ""
+ },
+ "require": {
+ "illuminate/contracts": "5.2.*",
+ "illuminate/support": "5.2.*",
+ "php": ">=5.5.9"
+ },
+ "suggest": {
+ "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (~2.0)."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.2-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Illuminate\\Broadcasting\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "The Illuminate Broadcasting package.",
+ "homepage": "http://laravel.com",
+ "time": "2016-08-01 13:49:14"
+ },
+ {
+ "name": "illuminate/bus",
+ "version": "v5.2.45",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/illuminate/bus.git",
+ "reference": "1213ce87493bd2c0530051f86a2580bc1f60a7db"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/illuminate/bus/zipball/1213ce87493bd2c0530051f86a2580bc1f60a7db",
+ "reference": "1213ce87493bd2c0530051f86a2580bc1f60a7db",
+ "shasum": ""
+ },
+ "require": {
+ "illuminate/contracts": "5.2.*",
+ "illuminate/pipeline": "5.2.*",
+ "illuminate/support": "5.2.*",
+ "php": ">=5.5.9"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.2-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Illuminate\\Bus\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "The Illuminate Bus package.",
+ "homepage": "http://laravel.com",
+ "time": "2016-08-02 12:44:26"
+ },
+ {
+ "name": "illuminate/cache",
+ "version": "v5.2.45",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/illuminate/cache.git",
+ "reference": "09bcee8982c40570947b799d65987aa030d7706b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/illuminate/cache/zipball/09bcee8982c40570947b799d65987aa030d7706b",
+ "reference": "09bcee8982c40570947b799d65987aa030d7706b",
+ "shasum": ""
+ },
+ "require": {
+ "illuminate/contracts": "5.2.*",
+ "illuminate/support": "5.2.*",
+ "nesbot/carbon": "~1.20",
+ "php": ">=5.5.9"
+ },
+ "suggest": {
+ "illuminate/database": "Required to use the database cache driver (5.2.*).",
+ "illuminate/filesystem": "Required to use the file cache driver (5.2.*).",
+ "illuminate/redis": "Required to use the redis cache driver (5.2.*)."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.2-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Illuminate\\Cache\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "The Illuminate Cache package.",
+ "homepage": "http://laravel.com",
+ "time": "2016-08-18 14:17:46"
+ },
+ {
+ "name": "illuminate/config",
+ "version": "v5.2.45",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/illuminate/config.git",
+ "reference": "2db869c5b5a675cece410a0d0bc634dba0f69998"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/illuminate/config/zipball/2db869c5b5a675cece410a0d0bc634dba0f69998",
+ "reference": "2db869c5b5a675cece410a0d0bc634dba0f69998",
+ "shasum": ""
+ },
+ "require": {
+ "illuminate/contracts": "5.2.*",
+ "illuminate/filesystem": "5.2.*",
+ "illuminate/support": "5.2.*",
+ "php": ">=5.5.9"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.2-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Illuminate\\Config\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "The Illuminate Config package.",
+ "homepage": "http://laravel.com",
+ "time": "2016-08-01 13:49:14"
+ },
+ {
+ "name": "illuminate/console",
+ "version": "v5.2.45",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/illuminate/console.git",
+ "reference": "c6d838c6f9ac3f1aec28cde93bf613283153785e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/illuminate/console/zipball/c6d838c6f9ac3f1aec28cde93bf613283153785e",
+ "reference": "c6d838c6f9ac3f1aec28cde93bf613283153785e",
+ "shasum": ""
+ },
+ "require": {
+ "illuminate/contracts": "5.2.*",
+ "illuminate/support": "5.2.*",
+ "nesbot/carbon": "~1.20",
+ "php": ">=5.5.9",
+ "symfony/console": "2.8.*|3.0.*"
+ },
+ "suggest": {
+ "guzzlehttp/guzzle": "Required to use the ping methods on schedules (~5.3|~6.0).",
+ "mtdowling/cron-expression": "Required to use scheduling component (~1.0).",
+ "symfony/process": "Required to use scheduling component (2.8.*|3.0.*)."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.2-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Illuminate\\Console\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "The Illuminate Console package.",
+ "homepage": "http://laravel.com",
+ "time": "2016-08-01 13:49:14"
+ },
+ {
+ "name": "illuminate/container",
+ "version": "v5.2.45",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/illuminate/container.git",
+ "reference": "5139cebc8293b6820b91aef6f4b4e18bde33c9b2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/illuminate/container/zipball/5139cebc8293b6820b91aef6f4b4e18bde33c9b2",
+ "reference": "5139cebc8293b6820b91aef6f4b4e18bde33c9b2",
+ "shasum": ""
+ },
+ "require": {
+ "illuminate/contracts": "5.2.*",
+ "php": ">=5.5.9"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.2-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Illuminate\\Container\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "The Illuminate Container package.",
+ "homepage": "http://laravel.com",
+ "time": "2016-08-01 13:49:14"
+ },
+ {
+ "name": "illuminate/contracts",
+ "version": "v5.2.45",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/illuminate/contracts.git",
+ "reference": "22bde7b048a33c702d9737fc1446234fff9b1363"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/illuminate/contracts/zipball/22bde7b048a33c702d9737fc1446234fff9b1363",
+ "reference": "22bde7b048a33c702d9737fc1446234fff9b1363",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.5.9"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.2-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Illuminate\\Contracts\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "The Illuminate Contracts package.",
+ "homepage": "http://laravel.com",
+ "time": "2016-08-08 11:46:08"
+ },
+ {
+ "name": "illuminate/database",
+ "version": "v5.2.45",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/illuminate/database.git",
+ "reference": "4a70c0598ed41d18a99f23c12be4e22b5006d30a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/illuminate/database/zipball/4a70c0598ed41d18a99f23c12be4e22b5006d30a",
+ "reference": "4a70c0598ed41d18a99f23c12be4e22b5006d30a",
+ "shasum": ""
+ },
+ "require": {
+ "illuminate/container": "5.2.*",
+ "illuminate/contracts": "5.2.*",
+ "illuminate/support": "5.2.*",
+ "nesbot/carbon": "~1.20",
+ "php": ">=5.5.9"
+ },
+ "suggest": {
+ "doctrine/dbal": "Required to rename columns and drop SQLite columns (~2.4).",
+ "fzaninotto/faker": "Required to use the eloquent factory builder (~1.4).",
+ "illuminate/console": "Required to use the database commands (5.2.*).",
+ "illuminate/events": "Required to use the observers with Eloquent (5.2.*).",
+ "illuminate/filesystem": "Required to use the migrations (5.2.*).",
+ "illuminate/pagination": "Required to paginate the result set (5.2.*)."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.2-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Illuminate\\Database\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "The Illuminate Database package.",
+ "homepage": "http://laravel.com",
+ "keywords": [
+ "database",
+ "laravel",
+ "orm",
+ "sql"
+ ],
+ "time": "2016-08-25 07:01:20"
+ },
+ {
+ "name": "illuminate/encryption",
+ "version": "v5.2.45",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/illuminate/encryption.git",
+ "reference": "9e930c111c35850d5c133316c8b0c61dcccaa942"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/illuminate/encryption/zipball/9e930c111c35850d5c133316c8b0c61dcccaa942",
+ "reference": "9e930c111c35850d5c133316c8b0c61dcccaa942",
+ "shasum": ""
+ },
+ "require": {
+ "ext-mbstring": "*",
+ "ext-openssl": "*",
+ "illuminate/contracts": "5.2.*",
+ "illuminate/support": "5.2.*",
+ "paragonie/random_compat": "~1.4",
+ "php": ">=5.5.9"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.2-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Illuminate\\Encryption\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "The Illuminate Encryption package.",
+ "homepage": "http://laravel.com",
+ "time": "2016-08-01 13:49:14"
+ },
+ {
+ "name": "illuminate/events",
+ "version": "v5.2.45",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/illuminate/events.git",
+ "reference": "9c16e022d9c4b9f875bf447f4384bd1b952c69b9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/illuminate/events/zipball/9c16e022d9c4b9f875bf447f4384bd1b952c69b9",
+ "reference": "9c16e022d9c4b9f875bf447f4384bd1b952c69b9",
+ "shasum": ""
+ },
+ "require": {
+ "illuminate/container": "5.2.*",
+ "illuminate/contracts": "5.2.*",
+ "illuminate/support": "5.2.*",
+ "php": ">=5.5.9"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.2-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Illuminate\\Events\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "The Illuminate Events package.",
+ "homepage": "http://laravel.com",
+ "time": "2016-08-01 13:49:14"
+ },
+ {
+ "name": "illuminate/filesystem",
+ "version": "v5.2.45",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/illuminate/filesystem.git",
+ "reference": "39668a50e0cf1d673e58e7dbb437475708cfb508"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/illuminate/filesystem/zipball/39668a50e0cf1d673e58e7dbb437475708cfb508",
+ "reference": "39668a50e0cf1d673e58e7dbb437475708cfb508",
+ "shasum": ""
+ },
+ "require": {
+ "illuminate/contracts": "5.2.*",
+ "illuminate/support": "5.2.*",
+ "php": ">=5.5.9",
+ "symfony/finder": "2.8.*|3.0.*"
+ },
+ "suggest": {
+ "league/flysystem": "Required to use the Flysystem local and FTP drivers (~1.0).",
+ "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (~1.0).",
+ "league/flysystem-rackspace": "Required to use the Flysystem Rackspace driver (~1.0)."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.2-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Illuminate\\Filesystem\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "The Illuminate Filesystem package.",
+ "homepage": "http://laravel.com",
+ "time": "2016-08-17 17:21:29"
+ },
+ {
+ "name": "illuminate/hashing",
+ "version": "v5.2.45",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/illuminate/hashing.git",
+ "reference": "a38de58f53a085888feb432acce8a6ea7c1a5b71"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/illuminate/hashing/zipball/a38de58f53a085888feb432acce8a6ea7c1a5b71",
+ "reference": "a38de58f53a085888feb432acce8a6ea7c1a5b71",
+ "shasum": ""
+ },
+ "require": {
+ "illuminate/contracts": "5.2.*",
+ "illuminate/support": "5.2.*",
+ "php": ">=5.5.9"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.2-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Illuminate\\Hashing\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "The Illuminate Hashing package.",
+ "homepage": "http://laravel.com",
+ "time": "2016-08-01 13:49:14"
+ },
+ {
+ "name": "illuminate/http",
+ "version": "v5.2.45",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/illuminate/http.git",
+ "reference": "019d947e218f8dce421010a22d899d6f4b4ced45"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/illuminate/http/zipball/019d947e218f8dce421010a22d899d6f4b4ced45",
+ "reference": "019d947e218f8dce421010a22d899d6f4b4ced45",
+ "shasum": ""
+ },
+ "require": {
+ "illuminate/session": "5.2.*",
+ "illuminate/support": "5.2.*",
+ "php": ">=5.5.9",
+ "symfony/http-foundation": "2.8.*|3.0.*",
+ "symfony/http-kernel": "2.8.*|3.0.*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.2-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Illuminate\\Http\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "The Illuminate Http package.",
+ "homepage": "http://laravel.com",
+ "time": "2016-08-10 17:33:08"
+ },
+ {
+ "name": "illuminate/pagination",
+ "version": "v5.2.45",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/illuminate/pagination.git",
+ "reference": "a4450887251f443a1243ef537d98ce5bbea6b193"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/illuminate/pagination/zipball/a4450887251f443a1243ef537d98ce5bbea6b193",
+ "reference": "a4450887251f443a1243ef537d98ce5bbea6b193",
+ "shasum": ""
+ },
+ "require": {
+ "illuminate/contracts": "5.2.*",
+ "illuminate/support": "5.2.*",
+ "php": ">=5.5.9"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.2-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Illuminate\\Pagination\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "The Illuminate Pagination package.",
+ "homepage": "http://laravel.com",
+ "time": "2016-08-01 13:49:14"
+ },
+ {
+ "name": "illuminate/pipeline",
+ "version": "v5.2.45",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/illuminate/pipeline.git",
+ "reference": "592d84b101437de3432851e4fa60a33f849164e5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/illuminate/pipeline/zipball/592d84b101437de3432851e4fa60a33f849164e5",
+ "reference": "592d84b101437de3432851e4fa60a33f849164e5",
+ "shasum": ""
+ },
+ "require": {
+ "illuminate/contracts": "5.2.*",
+ "illuminate/support": "5.2.*",
+ "php": ">=5.5.9"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.2-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Illuminate\\Pipeline\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "The Illuminate Pipeline package.",
+ "homepage": "http://laravel.com",
+ "time": "2016-08-01 13:49:14"
+ },
+ {
+ "name": "illuminate/queue",
+ "version": "v5.2.45",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/illuminate/queue.git",
+ "reference": "363b6752051327b7e4e500e6d2fa5ae132ccef47"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/illuminate/queue/zipball/363b6752051327b7e4e500e6d2fa5ae132ccef47",
+ "reference": "363b6752051327b7e4e500e6d2fa5ae132ccef47",
+ "shasum": ""
+ },
+ "require": {
+ "illuminate/console": "5.2.*",
+ "illuminate/container": "5.2.*",
+ "illuminate/contracts": "5.2.*",
+ "illuminate/support": "5.2.*",
+ "nesbot/carbon": "~1.20",
+ "php": ">=5.5.9",
+ "symfony/debug": "2.8.*|3.0.*",
+ "symfony/process": "2.8.*|3.0.*"
+ },
+ "suggest": {
+ "aws/aws-sdk-php": "Required to use the SQS queue driver (~3.0).",
+ "illuminate/redis": "Required to use the Redis queue driver (5.2.*).",
+ "pda/pheanstalk": "Required to use the Beanstalk queue driver (~3.0)."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.2-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Illuminate\\Queue\\": ""
+ },
+ "classmap": [
+ "IlluminateQueueClosure.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "The Illuminate Queue package.",
+ "homepage": "http://laravel.com",
+ "time": "2016-08-01 13:49:14"
+ },
+ {
+ "name": "illuminate/session",
+ "version": "v5.2.45",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/illuminate/session.git",
+ "reference": "259ae8eaee714b4633b3ee4e51e98648840a976c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/illuminate/session/zipball/259ae8eaee714b4633b3ee4e51e98648840a976c",
+ "reference": "259ae8eaee714b4633b3ee4e51e98648840a976c",
+ "shasum": ""
+ },
+ "require": {
+ "illuminate/contracts": "5.2.*",
+ "illuminate/support": "5.2.*",
+ "nesbot/carbon": "~1.20",
+ "php": ">=5.5.9",
+ "symfony/finder": "2.8.*|3.0.*",
+ "symfony/http-foundation": "2.8.*|3.0.*"
+ },
+ "suggest": {
+ "illuminate/console": "Required to use the session:table command (5.2.*)."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.2-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Illuminate\\Session\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "The Illuminate Session package.",
+ "homepage": "http://laravel.com",
+ "time": "2016-08-01 13:49:14"
+ },
+ {
+ "name": "illuminate/support",
+ "version": "v5.2.45",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/illuminate/support.git",
+ "reference": "510230ab62a7d85dc70203f4fdca6fb71a19e08a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/illuminate/support/zipball/510230ab62a7d85dc70203f4fdca6fb71a19e08a",
+ "reference": "510230ab62a7d85dc70203f4fdca6fb71a19e08a",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/inflector": "~1.0",
+ "ext-mbstring": "*",
+ "illuminate/contracts": "5.2.*",
+ "paragonie/random_compat": "~1.4",
+ "php": ">=5.5.9"
+ },
+ "replace": {
+ "tightenco/collect": "self.version"
+ },
+ "suggest": {
+ "illuminate/filesystem": "Required to use the composer class (5.2.*).",
+ "jeremeamia/superclosure": "Required to be able to serialize closures (~2.2).",
+ "symfony/polyfill-php56": "Required to use the hash_equals function on PHP 5.5 (~1.0).",
+ "symfony/process": "Required to use the composer class (2.8.*|3.0.*).",
+ "symfony/var-dumper": "Improves the dd function (2.8.*|3.0.*)."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.2-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Illuminate\\Support\\": ""
+ },
+ "files": [
+ "helpers.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "The Illuminate Support package.",
+ "homepage": "http://laravel.com",
+ "time": "2016-08-05 14:49:58"
+ },
+ {
+ "name": "illuminate/translation",
+ "version": "v5.2.45",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/illuminate/translation.git",
+ "reference": "19247e4194e110d2d37713709e0e4b8bd0cae620"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/illuminate/translation/zipball/19247e4194e110d2d37713709e0e4b8bd0cae620",
+ "reference": "19247e4194e110d2d37713709e0e4b8bd0cae620",
+ "shasum": ""
+ },
+ "require": {
+ "illuminate/filesystem": "5.2.*",
+ "illuminate/support": "5.2.*",
+ "php": ">=5.5.9",
+ "symfony/translation": "2.8.*|3.0.*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.2-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Illuminate\\Translation\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "The Illuminate Translation package.",
+ "homepage": "http://laravel.com",
+ "time": "2016-08-01 13:49:14"
+ },
+ {
+ "name": "illuminate/validation",
+ "version": "v5.2.45",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/illuminate/validation.git",
+ "reference": "24909f0ee0866256eca0a0b72977753886a8a479"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/illuminate/validation/zipball/24909f0ee0866256eca0a0b72977753886a8a479",
+ "reference": "24909f0ee0866256eca0a0b72977753886a8a479",
+ "shasum": ""
+ },
+ "require": {
+ "illuminate/container": "5.2.*",
+ "illuminate/contracts": "5.2.*",
+ "illuminate/support": "5.2.*",
+ "php": ">=5.5.9",
+ "symfony/http-foundation": "2.8.*|3.0.*",
+ "symfony/translation": "2.8.*|3.0.*"
+ },
+ "suggest": {
+ "illuminate/database": "Required to use the database presence verifier (5.2.*)."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.2-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Illuminate\\Validation\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "The Illuminate Validation package.",
+ "homepage": "http://laravel.com",
+ "time": "2016-08-18 13:15:33"
+ },
+ {
+ "name": "illuminate/view",
+ "version": "v5.2.45",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/illuminate/view.git",
+ "reference": "a3f9252c7d0dce3c2a9e70e40e9397f62850aa23"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/illuminate/view/zipball/a3f9252c7d0dce3c2a9e70e40e9397f62850aa23",
+ "reference": "a3f9252c7d0dce3c2a9e70e40e9397f62850aa23",
+ "shasum": ""
+ },
+ "require": {
+ "illuminate/container": "5.2.*",
+ "illuminate/contracts": "5.2.*",
+ "illuminate/events": "5.2.*",
+ "illuminate/filesystem": "5.2.*",
+ "illuminate/support": "5.2.*",
+ "php": ">=5.5.9",
+ "symfony/debug": "2.8.*|3.0.*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.2-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Illuminate\\View\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "The Illuminate View package.",
+ "homepage": "http://laravel.com",
+ "time": "2016-08-01 13:49:14"
+ },
+ {
+ "name": "laravel/lumen-framework",
+ "version": "v5.2.9",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/laravel/lumen-framework.git",
+ "reference": "dafb4d4aad71d7ab8914db7769c4bbfcff4073f1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/laravel/lumen-framework/zipball/dafb4d4aad71d7ab8914db7769c4bbfcff4073f1",
+ "reference": "dafb4d4aad71d7ab8914db7769c4bbfcff4073f1",
+ "shasum": ""
+ },
+ "require": {
+ "illuminate/auth": "5.2.*",
+ "illuminate/broadcasting": "5.2.*",
+ "illuminate/bus": "5.2.*",
+ "illuminate/cache": "5.2.*",
+ "illuminate/config": "5.2.*",
+ "illuminate/container": "5.2.*",
+ "illuminate/contracts": "5.2.*",
+ "illuminate/database": "5.2.*",
+ "illuminate/encryption": "5.2.*",
+ "illuminate/events": "5.2.*",
+ "illuminate/filesystem": "5.2.*",
+ "illuminate/hashing": "5.2.*",
+ "illuminate/http": "5.2.*",
+ "illuminate/pagination": "5.2.*",
+ "illuminate/pipeline": "5.2.*",
+ "illuminate/queue": "5.2.*",
+ "illuminate/support": "5.2.*",
+ "illuminate/translation": "5.2.*",
+ "illuminate/validation": "~5.2.7",
+ "illuminate/view": "5.2.*",
+ "monolog/monolog": "~1.11",
+ "mtdowling/cron-expression": "~1.0",
+ "nikic/fast-route": "0.7.*",
+ "paragonie/random_compat": "~1.1",
+ "php": ">=5.5.9",
+ "symfony/http-foundation": "2.8.*|3.0.*",
+ "symfony/http-kernel": "2.8.*|3.0.*",
+ "symfony/polyfill-php56": "~1.0"
+ },
+ "require-dev": {
+ "mockery/mockery": "~0.9",
+ "phpunit/phpunit": "~4.0"
+ },
+ "suggest": {
+ "vlucas/phpdotenv": "Required to use .env files (~2.2)."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.2-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Laravel\\Lumen\\": "src/"
+ },
+ "files": [
+ "src/helpers.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylorotwell@gmail.com"
+ }
+ ],
+ "description": "The Laravel Lumen Framework.",
+ "homepage": "http://laravel.com",
+ "keywords": [
+ "framework",
+ "laravel",
+ "lumen"
+ ],
+ "time": "2016-09-07 18:38:25"
+ },
+ {
+ "name": "monolog/monolog",
+ "version": "1.23.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Seldaek/monolog.git",
+ "reference": "fd8c787753b3a2ad11bc60c063cff1358a32a3b4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd8c787753b3a2ad11bc60c063cff1358a32a3b4",
+ "reference": "fd8c787753b3a2ad11bc60c063cff1358a32a3b4",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0",
+ "psr/log": "~1.0"
+ },
+ "provide": {
+ "psr/log-implementation": "1.0.0"
+ },
+ "require-dev": {
+ "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",
+ "php-amqplib/php-amqplib": "~2.4",
+ "php-console/php-console": "^3.1.3",
+ "phpunit/phpunit": "~4.5",
+ "phpunit/phpunit-mock-objects": "2.3.0",
+ "ruflin/elastica": ">=0.90 <3.0",
+ "sentry/sentry": "^0.13",
+ "swiftmailer/swiftmailer": "^5.3|^6.0"
+ },
+ "suggest": {
+ "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB",
+ "doctrine/couchdb": "Allow sending log messages to a CouchDB server",
+ "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)",
+ "ext-mongo": "Allow sending log messages to a MongoDB server",
+ "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server",
+ "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver",
+ "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib",
+ "php-console/php-console": "Allow sending log messages to Google Chrome",
+ "rollbar/rollbar": "Allow sending log messages to Rollbar",
+ "ruflin/elastica": "Allow sending log messages to an Elastic Search server",
+ "sentry/sentry": "Allow sending log messages to a Sentry server"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Monolog\\": "src/Monolog"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "http://seld.be"
+ }
+ ],
+ "description": "Sends your logs to files, sockets, inboxes, databases and various web services",
+ "homepage": "http://github.com/Seldaek/monolog",
+ "keywords": [
+ "log",
+ "logging",
+ "psr-3"
+ ],
+ "time": "2017-06-19 01:22:40"
+ },
+ {
+ "name": "mtdowling/cron-expression",
+ "version": "v1.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/mtdowling/cron-expression.git",
+ "reference": "9504fa9ea681b586028adaaa0877db4aecf32bad"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/mtdowling/cron-expression/zipball/9504fa9ea681b586028adaaa0877db4aecf32bad",
+ "reference": "9504fa9ea681b586028adaaa0877db4aecf32bad",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.0|~5.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Cron\\": "src/Cron/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Michael Dowling",
+ "email": "mtdowling@gmail.com",
+ "homepage": "https://github.com/mtdowling"
+ }
+ ],
+ "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due",
+ "keywords": [
+ "cron",
+ "schedule"
+ ],
+ "time": "2017-01-23 04:29:33"
+ },
+ {
+ "name": "nesbot/carbon",
+ "version": "1.22.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/briannesbitt/Carbon.git",
+ "reference": "7cdf42c0b1cc763ab7e4c33c47a24e27c66bfccc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/7cdf42c0b1cc763ab7e4c33c47a24e27c66bfccc",
+ "reference": "7cdf42c0b1cc763ab7e4c33c47a24e27c66bfccc",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0",
+ "symfony/translation": "~2.6 || ~3.0"
+ },
+ "require-dev": {
+ "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/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Brian Nesbitt",
+ "email": "brian@nesbot.com",
+ "homepage": "http://nesbot.com"
+ }
+ ],
+ "description": "A simple API extension for DateTime.",
+ "homepage": "http://carbon.nesbot.com",
+ "keywords": [
+ "date",
+ "datetime",
+ "time"
+ ],
+ "time": "2017-01-16 07:55:07"
+ },
+ {
+ "name": "nikic/fast-route",
+ "version": "v0.7.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/nikic/FastRoute.git",
+ "reference": "8164b4a0d8afde4eae5f1bfc39084972ba23ad36"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/nikic/FastRoute/zipball/8164b4a0d8afde4eae5f1bfc39084972ba23ad36",
+ "reference": "8164b4a0d8afde4eae5f1bfc39084972ba23ad36",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.4.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "FastRoute\\": "src/"
+ },
+ "files": [
+ "src/functions.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Nikita Popov",
+ "email": "nikic@php.net"
+ }
+ ],
+ "description": "Fast request router for PHP",
+ "keywords": [
+ "router",
+ "routing"
+ ],
+ "time": "2015-12-20 19:50:12"
+ },
+ {
+ "name": "paragonie/random_compat",
+ "version": "v1.4.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/paragonie/random_compat.git",
+ "reference": "965cdeb01fdcab7653253aa81d40441d261f1e66"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/paragonie/random_compat/zipball/965cdeb01fdcab7653253aa81d40441d261f1e66",
+ "reference": "965cdeb01fdcab7653253aa81d40441d261f1e66",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.2.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "4.*|5.*"
+ },
+ "suggest": {
+ "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "lib/random.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Paragon Initiative Enterprises",
+ "email": "security@paragonie.com",
+ "homepage": "https://paragonie.com"
+ }
+ ],
+ "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
+ "keywords": [
+ "csprng",
+ "pseudorandom",
+ "random"
+ ],
+ "time": "2017-03-13 16:22:52"
+ },
+ {
+ "name": "psr/http-message",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/http-message.git",
+ "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
+ "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Http\\Message\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for HTTP messages",
+ "homepage": "https://github.com/php-fig/http-message",
+ "keywords": [
+ "http",
+ "http-message",
+ "psr",
+ "psr-7",
+ "request",
+ "response"
+ ],
+ "time": "2016-08-06 14:39:51"
+ },
+ {
+ "name": "psr/log",
+ "version": "1.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/log.git",
+ "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
+ "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Log\\": "Psr/Log/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for logging libraries",
+ "homepage": "https://github.com/php-fig/log",
+ "keywords": [
+ "log",
+ "psr",
+ "psr-3"
+ ],
+ "time": "2016-10-10 12:19:37"
+ },
+ {
+ "name": "symfony/console",
+ "version": "v3.0.9",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/console.git",
+ "reference": "926061e74229e935d3c5b4e9ba87237316c6693f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/console/zipball/926061e74229e935d3c5b4e9ba87237316c6693f",
+ "reference": "926061e74229e935d3c5b4e9ba87237316c6693f",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.5.9",
+ "symfony/polyfill-mbstring": "~1.0"
+ },
+ "require-dev": {
+ "psr/log": "~1.0",
+ "symfony/event-dispatcher": "~2.8|~3.0",
+ "symfony/process": "~2.8|~3.0"
+ },
+ "suggest": {
+ "psr/log": "For using the console logger",
+ "symfony/event-dispatcher": "",
+ "symfony/process": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Console\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Console Component",
+ "homepage": "https://symfony.com",
+ "time": "2016-07-30 07:22:48"
+ },
+ {
+ "name": "symfony/debug",
+ "version": "v3.0.9",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/debug.git",
+ "reference": "697c527acd9ea1b2d3efac34d9806bf255278b0a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/debug/zipball/697c527acd9ea1b2d3efac34d9806bf255278b0a",
+ "reference": "697c527acd9ea1b2d3efac34d9806bf255278b0a",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.5.9",
+ "psr/log": "~1.0"
+ },
+ "conflict": {
+ "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2"
+ },
+ "require-dev": {
+ "symfony/class-loader": "~2.8|~3.0",
+ "symfony/http-kernel": "~2.8|~3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Debug\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Debug Component",
+ "homepage": "https://symfony.com",
+ "time": "2016-07-30 07:22:48"
+ },
+ {
+ "name": "symfony/event-dispatcher",
+ "version": "v3.3.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/event-dispatcher.git",
+ "reference": "67535f1e3fd662bdc68d7ba317c93eecd973617e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/67535f1e3fd662bdc68d7ba317c93eecd973617e",
+ "reference": "67535f1e3fd662bdc68d7ba317c93eecd973617e",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.5.9"
+ },
+ "conflict": {
+ "symfony/dependency-injection": "<3.3"
+ },
+ "require-dev": {
+ "psr/log": "~1.0",
+ "symfony/config": "~2.8|~3.0",
+ "symfony/dependency-injection": "~3.3",
+ "symfony/expression-language": "~2.8|~3.0",
+ "symfony/stopwatch": "~2.8|~3.0"
+ },
+ "suggest": {
+ "symfony/dependency-injection": "",
+ "symfony/http-kernel": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.3-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\EventDispatcher\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony EventDispatcher Component",
+ "homepage": "https://symfony.com",
+ "time": "2017-06-09 14:53:08"
+ },
+ {
+ "name": "symfony/finder",
+ "version": "v3.0.9",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/finder.git",
+ "reference": "3eb4e64c6145ef8b92adefb618a74ebdde9e3fe9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/finder/zipball/3eb4e64c6145ef8b92adefb618a74ebdde9e3fe9",
+ "reference": "3eb4e64c6145ef8b92adefb618a74ebdde9e3fe9",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.5.9"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Finder\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Finder Component",
+ "homepage": "https://symfony.com",
+ "time": "2016-06-29 05:40:00"
+ },
+ {
+ "name": "symfony/http-foundation",
+ "version": "v3.0.9",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/http-foundation.git",
+ "reference": "49ba00f8ede742169cb6b70abe33243f4d673f82"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/http-foundation/zipball/49ba00f8ede742169cb6b70abe33243f4d673f82",
+ "reference": "49ba00f8ede742169cb6b70abe33243f4d673f82",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.5.9",
+ "symfony/polyfill-mbstring": "~1.1"
+ },
+ "require-dev": {
+ "symfony/expression-language": "~2.8|~3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\HttpFoundation\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony HttpFoundation Component",
+ "homepage": "https://symfony.com",
+ "time": "2016-07-17 13:54:30"
+ },
+ {
+ "name": "symfony/http-kernel",
+ "version": "v3.0.9",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/http-kernel.git",
+ "reference": "d97ba4425e36e79c794e7d14ff36f00f081b37b3"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/http-kernel/zipball/d97ba4425e36e79c794e7d14ff36f00f081b37b3",
+ "reference": "d97ba4425e36e79c794e7d14ff36f00f081b37b3",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.5.9",
+ "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"
+ },
+ "conflict": {
+ "symfony/config": "<2.8"
+ },
+ "require-dev": {
+ "symfony/browser-kit": "~2.8|~3.0",
+ "symfony/class-loader": "~2.8|~3.0",
+ "symfony/config": "~2.8|~3.0",
+ "symfony/console": "~2.8|~3.0",
+ "symfony/css-selector": "~2.8|~3.0",
+ "symfony/dependency-injection": "~2.8|~3.0",
+ "symfony/dom-crawler": "~2.8|~3.0",
+ "symfony/expression-language": "~2.8|~3.0",
+ "symfony/finder": "~2.8|~3.0",
+ "symfony/process": "~2.8|~3.0",
+ "symfony/routing": "~2.8|~3.0",
+ "symfony/stopwatch": "~2.8|~3.0",
+ "symfony/templating": "~2.8|~3.0",
+ "symfony/translation": "~2.8|~3.0",
+ "symfony/var-dumper": "~2.8|~3.0"
+ },
+ "suggest": {
+ "symfony/browser-kit": "",
+ "symfony/class-loader": "",
+ "symfony/config": "",
+ "symfony/console": "",
+ "symfony/dependency-injection": "",
+ "symfony/finder": "",
+ "symfony/var-dumper": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\HttpKernel\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony HttpKernel Component",
+ "homepage": "https://symfony.com",
+ "time": "2016-07-30 09:10:37"
+ },
+ {
+ "name": "symfony/polyfill-mbstring",
+ "version": "v1.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-mbstring.git",
+ "reference": "f29dca382a6485c3cbe6379f0c61230167681937"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/f29dca382a6485c3cbe6379f0c61230167681937",
+ "reference": "f29dca382a6485c3cbe6379f0c61230167681937",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "suggest": {
+ "ext-mbstring": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Mbstring\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for the Mbstring extension",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "mbstring",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "time": "2017-06-09 14:24:12"
+ },
+ {
+ "name": "symfony/polyfill-php56",
+ "version": "v1.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php56.git",
+ "reference": "bc0b7d6cb36b10cfabb170a3e359944a95174929"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/bc0b7d6cb36b10cfabb170a3e359944a95174929",
+ "reference": "bc0b7d6cb36b10cfabb170a3e359944a95174929",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3",
+ "symfony/polyfill-util": "~1.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Php56\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 5.6+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "time": "2017-06-09 08:25:21"
+ },
+ {
+ "name": "symfony/polyfill-util",
+ "version": "v1.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-util.git",
+ "reference": "ebccbde4aad410f6438d86d7d261c6b4d2b9a51d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-util/zipball/ebccbde4aad410f6438d86d7d261c6b4d2b9a51d",
+ "reference": "ebccbde4aad410f6438d86d7d261c6b4d2b9a51d",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Util\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony utilities for portability of PHP codes",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compat",
+ "compatibility",
+ "polyfill",
+ "shim"
+ ],
+ "time": "2017-06-09 08:25:21"
+ },
+ {
+ "name": "symfony/process",
+ "version": "v3.0.9",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/process.git",
+ "reference": "768debc5996f599c4372b322d9061dba2a4bf505"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/process/zipball/768debc5996f599c4372b322d9061dba2a4bf505",
+ "reference": "768debc5996f599c4372b322d9061dba2a4bf505",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.5.9"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Process\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Process Component",
+ "homepage": "https://symfony.com",
+ "time": "2016-07-28 11:13:34"
+ },
+ {
+ "name": "symfony/translation",
+ "version": "v3.0.9",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/translation.git",
+ "reference": "eee6c664853fd0576f21ae25725cfffeafe83f26"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/translation/zipball/eee6c664853fd0576f21ae25725cfffeafe83f26",
+ "reference": "eee6c664853fd0576f21ae25725cfffeafe83f26",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.5.9",
+ "symfony/polyfill-mbstring": "~1.0"
+ },
+ "conflict": {
+ "symfony/config": "<2.8"
+ },
+ "require-dev": {
+ "psr/log": "~1.0",
+ "symfony/config": "~2.8|~3.0",
+ "symfony/intl": "~2.8|~3.0",
+ "symfony/yaml": "~2.8|~3.0"
+ },
+ "suggest": {
+ "psr/log": "To use logging capability in translator",
+ "symfony/config": "",
+ "symfony/yaml": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Translation\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Translation Component",
+ "homepage": "https://symfony.com",
+ "time": "2016-07-30 07:22:48"
+ },
+ {
+ "name": "vlucas/phpdotenv",
+ "version": "v2.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/vlucas/phpdotenv.git",
+ "reference": "3cc116adbe4b11be5ec557bf1d24dc5e3a21d18c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/3cc116adbe4b11be5ec557bf1d24dc5e3a21d18c",
+ "reference": "3cc116adbe4b11be5ec557bf1d24dc5e3a21d18c",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.9"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.8 || ^5.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Dotenv\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause-Attribution"
+ ],
+ "authors": [
+ {
+ "name": "Vance Lucas",
+ "email": "vance@vancelucas.com",
+ "homepage": "http://www.vancelucas.com"
+ }
+ ],
+ "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.",
+ "keywords": [
+ "dotenv",
+ "env",
+ "environment"
+ ],
+ "time": "2016-09-01 10:05:43"
+ }
+ ],
+ "packages-dev": [
+ {
+ "name": "doctrine/instantiator",
+ "version": "1.0.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/instantiator.git",
+ "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d",
+ "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3,<8.0-DEV"
+ },
+ "require-dev": {
+ "athletic/athletic": "~0.1.8",
+ "ext-pdo": "*",
+ "ext-phar": "*",
+ "phpunit/phpunit": "~4.0",
+ "squizlabs/php_codesniffer": "~2.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Marco Pivetta",
+ "email": "ocramius@gmail.com",
+ "homepage": "http://ocramius.github.com/"
+ }
+ ],
+ "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
+ "homepage": "https://github.com/doctrine/instantiator",
+ "keywords": [
+ "constructor",
+ "instantiate"
+ ],
+ "time": "2015-06-14 21:17:01"
+ },
+ {
+ "name": "fzaninotto/faker",
+ "version": "v1.6.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/fzaninotto/Faker.git",
+ "reference": "44f9a286a04b80c76a4e5fb7aad8bb539b920123"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/fzaninotto/Faker/zipball/44f9a286a04b80c76a4e5fb7aad8bb539b920123",
+ "reference": "44f9a286a04b80c76a4e5fb7aad8bb539b920123",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.3|^7.0"
+ },
+ "require-dev": {
+ "ext-intl": "*",
+ "phpunit/phpunit": "~4.0",
+ "squizlabs/php_codesniffer": "~1.5"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": []
+ },
+ "autoload": {
+ "psr-4": {
+ "Faker\\": "src/Faker/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "François Zaninotto"
+ }
+ ],
+ "description": "Faker is a PHP library that generates fake data for you.",
+ "keywords": [
+ "data",
+ "faker",
+ "fixtures"
+ ],
+ "time": "2016-04-29 12:21:54"
+ },
+ {
+ "name": "phpdocumentor/reflection-common",
+ "version": "1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
+ "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/144c307535e82c8fdcaacbcfc1d6d8eeb896687c",
+ "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.5"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.6"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": [
+ "src"
+ ]
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jaap van Otterdijk",
+ "email": "opensource@ijaap.nl"
+ }
+ ],
+ "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
+ "homepage": "http://www.phpdoc.org",
+ "keywords": [
+ "FQSEN",
+ "phpDocumentor",
+ "phpdoc",
+ "reflection",
+ "static analysis"
+ ],
+ "time": "2015-12-27 11:43:31"
+ },
+ {
+ "name": "phpdocumentor/reflection-docblock",
+ "version": "3.2.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
+ "reference": "4aada1f93c72c35e22fb1383b47fee43b8f1d157"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/4aada1f93c72c35e22fb1383b47fee43b8f1d157",
+ "reference": "4aada1f93c72c35e22fb1383b47fee43b8f1d157",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.5",
+ "phpdocumentor/reflection-common": "^1.0@dev",
+ "phpdocumentor/type-resolver": "^0.3.0",
+ "webmozart/assert": "^1.0"
+ },
+ "require-dev": {
+ "mockery/mockery": "^0.9.4",
+ "phpunit/phpunit": "^4.4"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": [
+ "src/"
+ ]
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "me@mikevanriel.com"
+ }
+ ],
+ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
+ "time": "2017-08-08 06:39:58"
+ },
+ {
+ "name": "phpdocumentor/type-resolver",
+ "version": "0.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/TypeResolver.git",
+ "reference": "fb3933512008d8162b3cdf9e18dba9309b7c3773"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/fb3933512008d8162b3cdf9e18dba9309b7c3773",
+ "reference": "fb3933512008d8162b3cdf9e18dba9309b7c3773",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5 || ^7.0",
+ "phpdocumentor/reflection-common": "^1.0"
+ },
+ "require-dev": {
+ "mockery/mockery": "^0.9.4",
+ "phpunit/phpunit": "^5.2||^4.8.24"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": [
+ "src/"
+ ]
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "me@mikevanriel.com"
+ }
+ ],
+ "time": "2017-06-03 08:32:36"
+ },
+ {
+ "name": "phpspec/prophecy",
+ "version": "v1.7.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpspec/prophecy.git",
+ "reference": "93d39f1f7f9326d746203c7c056f300f7f126073"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpspec/prophecy/zipball/93d39f1f7f9326d746203c7c056f300f7f126073",
+ "reference": "93d39f1f7f9326d746203c7c056f300f7f126073",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/instantiator": "^1.0.2",
+ "php": "^5.3|^7.0",
+ "phpdocumentor/reflection-docblock": "^2.0|^3.0.2",
+ "sebastian/comparator": "^1.1|^2.0",
+ "sebastian/recursion-context": "^1.0|^2.0|^3.0"
+ },
+ "require-dev": {
+ "phpspec/phpspec": "^2.5|^3.2",
+ "phpunit/phpunit": "^4.8 || ^5.6.5"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.6.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Prophecy\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Konstantin Kudryashov",
+ "email": "ever.zet@gmail.com",
+ "homepage": "http://everzet.com"
+ },
+ {
+ "name": "Marcello Duarte",
+ "email": "marcello.duarte@gmail.com"
+ }
+ ],
+ "description": "Highly opinionated mocking framework for PHP 5.3+",
+ "homepage": "https://github.com/phpspec/prophecy",
+ "keywords": [
+ "Double",
+ "Dummy",
+ "fake",
+ "mock",
+ "spy",
+ "stub"
+ ],
+ "time": "2017-03-02 20:05:34"
+ },
+ {
+ "name": "phpunit/php-code-coverage",
+ "version": "2.2.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
+ "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/eabf68b476ac7d0f73793aada060f1c1a9bf8979",
+ "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3",
+ "phpunit/php-file-iterator": "~1.3",
+ "phpunit/php-text-template": "~1.2",
+ "phpunit/php-token-stream": "~1.3",
+ "sebastian/environment": "^1.3.2",
+ "sebastian/version": "~1.0"
+ },
+ "require-dev": {
+ "ext-xdebug": ">=2.1.4",
+ "phpunit/phpunit": "~4"
+ },
+ "suggest": {
+ "ext-dom": "*",
+ "ext-xdebug": ">=2.2.1",
+ "ext-xmlwriter": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.2.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sb@sebastian-bergmann.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
+ "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
+ "keywords": [
+ "coverage",
+ "testing",
+ "xunit"
+ ],
+ "time": "2015-10-06 15:47:00"
+ },
+ {
+ "name": "phpunit/php-file-iterator",
+ "version": "1.4.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
+ "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/3cc8f69b3028d0f96a9078e6295d86e9bf019be5",
+ "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.4.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sb@sebastian-bergmann.de",
+ "role": "lead"
+ }
+ ],
+ "description": "FilterIterator implementation that filters files based on a list of suffixes.",
+ "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
+ "keywords": [
+ "filesystem",
+ "iterator"
+ ],
+ "time": "2016-10-03 07:40:28"
+ },
+ {
+ "name": "phpunit/php-text-template",
+ "version": "1.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-text-template.git",
+ "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
+ "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Simple template engine.",
+ "homepage": "https://github.com/sebastianbergmann/php-text-template/",
+ "keywords": [
+ "template"
+ ],
+ "time": "2015-06-21 13:50:34"
+ },
+ {
+ "name": "phpunit/php-timer",
+ "version": "1.0.9",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-timer.git",
+ "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
+ "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.3 || ^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sb@sebastian-bergmann.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Utility class for timing",
+ "homepage": "https://github.com/sebastianbergmann/php-timer/",
+ "keywords": [
+ "timer"
+ ],
+ "time": "2017-02-26 11:10:40"
+ },
+ {
+ "name": "phpunit/php-token-stream",
+ "version": "1.4.11",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-token-stream.git",
+ "reference": "e03f8f67534427a787e21a385a67ec3ca6978ea7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/e03f8f67534427a787e21a385a67ec3ca6978ea7",
+ "reference": "e03f8f67534427a787e21a385a67ec3ca6978ea7",
+ "shasum": ""
+ },
+ "require": {
+ "ext-tokenizer": "*",
+ "php": ">=5.3.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.4-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Wrapper around PHP's tokenizer extension.",
+ "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
+ "keywords": [
+ "tokenizer"
+ ],
+ "time": "2017-02-27 10:12:30"
+ },
+ {
+ "name": "phpunit/phpunit",
+ "version": "4.8.36",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/phpunit.git",
+ "reference": "46023de9a91eec7dfb06cc56cb4e260017298517"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/46023de9a91eec7dfb06cc56cb4e260017298517",
+ "reference": "46023de9a91eec7dfb06cc56cb4e260017298517",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-json": "*",
+ "ext-pcre": "*",
+ "ext-reflection": "*",
+ "ext-spl": "*",
+ "php": ">=5.3.3",
+ "phpspec/prophecy": "^1.3.1",
+ "phpunit/php-code-coverage": "~2.1",
+ "phpunit/php-file-iterator": "~1.4",
+ "phpunit/php-text-template": "~1.2",
+ "phpunit/php-timer": "^1.0.6",
+ "phpunit/phpunit-mock-objects": "~2.3",
+ "sebastian/comparator": "~1.2.2",
+ "sebastian/diff": "~1.2",
+ "sebastian/environment": "~1.3",
+ "sebastian/exporter": "~1.2",
+ "sebastian/global-state": "~1.0",
+ "sebastian/version": "~1.0",
+ "symfony/yaml": "~2.1|~3.0"
+ },
+ "suggest": {
+ "phpunit/php-invoker": "~1.1"
+ },
+ "bin": [
+ "phpunit"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.8.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "The PHP Unit Testing framework.",
+ "homepage": "https://phpunit.de/",
+ "keywords": [
+ "phpunit",
+ "testing",
+ "xunit"
+ ],
+ "time": "2017-06-21 08:07:12"
+ },
+ {
+ "name": "phpunit/phpunit-mock-objects",
+ "version": "2.3.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
+ "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/ac8e7a3db35738d56ee9a76e78a4e03d97628983",
+ "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/instantiator": "^1.0.2",
+ "php": ">=5.3.3",
+ "phpunit/php-text-template": "~1.2",
+ "sebastian/exporter": "~1.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.4"
+ },
+ "suggest": {
+ "ext-soap": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.3.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sb@sebastian-bergmann.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Mock Object library for PHPUnit",
+ "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/",
+ "keywords": [
+ "mock",
+ "xunit"
+ ],
+ "time": "2015-10-02 06:51:40"
+ },
+ {
+ "name": "sebastian/comparator",
+ "version": "1.2.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/comparator.git",
+ "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be",
+ "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3",
+ "sebastian/diff": "~1.2",
+ "sebastian/exporter": "~1.2 || ~2.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.4"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.2.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Volker Dusch",
+ "email": "github@wallbash.com"
+ },
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@2bepublished.at"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Provides the functionality to compare PHP values for equality",
+ "homepage": "http://www.github.com/sebastianbergmann/comparator",
+ "keywords": [
+ "comparator",
+ "compare",
+ "equality"
+ ],
+ "time": "2017-01-29 09:50:25"
+ },
+ {
+ "name": "sebastian/diff",
+ "version": "1.4.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/diff.git",
+ "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7f066a26a962dbe58ddea9f72a4e82874a3975a4",
+ "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.3 || ^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.4-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Kore Nordmann",
+ "email": "mail@kore-nordmann.de"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Diff implementation",
+ "homepage": "https://github.com/sebastianbergmann/diff",
+ "keywords": [
+ "diff"
+ ],
+ "time": "2017-05-22 07:24:03"
+ },
+ {
+ "name": "sebastian/environment",
+ "version": "1.3.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/environment.git",
+ "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/be2c607e43ce4c89ecd60e75c6a85c126e754aea",
+ "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.3 || ^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.8 || ^5.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.3.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Provides functionality to handle HHVM/PHP environments",
+ "homepage": "http://www.github.com/sebastianbergmann/environment",
+ "keywords": [
+ "Xdebug",
+ "environment",
+ "hhvm"
+ ],
+ "time": "2016-08-18 05:49:44"
+ },
+ {
+ "name": "sebastian/exporter",
+ "version": "1.2.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/exporter.git",
+ "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/42c4c2eec485ee3e159ec9884f95b431287edde4",
+ "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3",
+ "sebastian/recursion-context": "~1.0"
+ },
+ "require-dev": {
+ "ext-mbstring": "*",
+ "phpunit/phpunit": "~4.4"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.3.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Volker Dusch",
+ "email": "github@wallbash.com"
+ },
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@2bepublished.at"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Adam Harvey",
+ "email": "aharvey@php.net"
+ }
+ ],
+ "description": "Provides the functionality to export PHP variables for visualization",
+ "homepage": "http://www.github.com/sebastianbergmann/exporter",
+ "keywords": [
+ "export",
+ "exporter"
+ ],
+ "time": "2016-06-17 09:04:28"
+ },
+ {
+ "name": "sebastian/global-state",
+ "version": "1.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/global-state.git",
+ "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4",
+ "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.2"
+ },
+ "suggest": {
+ "ext-uopz": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Snapshotting of global state",
+ "homepage": "http://www.github.com/sebastianbergmann/global-state",
+ "keywords": [
+ "global state"
+ ],
+ "time": "2015-10-12 03:26:01"
+ },
+ {
+ "name": "sebastian/recursion-context",
+ "version": "1.0.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/recursion-context.git",
+ "reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/b19cc3298482a335a95f3016d2f8a6950f0fbcd7",
+ "reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.4"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Adam Harvey",
+ "email": "aharvey@php.net"
+ }
+ ],
+ "description": "Provides functionality to recursively process PHP variables",
+ "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
+ "time": "2016-10-03 07:41:43"
+ },
+ {
+ "name": "sebastian/version",
+ "version": "1.0.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/version.git",
+ "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/58b3a85e7999757d6ad81c787a1fbf5ff6c628c6",
+ "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6",
+ "shasum": ""
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "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"
+ },
+ {
+ "name": "symfony/yaml",
+ "version": "v3.3.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/yaml.git",
+ "reference": "ddc23324e6cfe066f3dd34a37ff494fa80b617ed"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/yaml/zipball/ddc23324e6cfe066f3dd34a37ff494fa80b617ed",
+ "reference": "ddc23324e6cfe066f3dd34a37ff494fa80b617ed",
+ "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.3-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Yaml\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Yaml Component",
+ "homepage": "https://symfony.com",
+ "time": "2017-07-23 12:43:26"
+ },
+ {
+ "name": "webmozart/assert",
+ "version": "1.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/webmozart/assert.git",
+ "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/webmozart/assert/zipball/2db61e59ff05fe5126d152bd0655c9ea113e550f",
+ "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.3 || ^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.6",
+ "sebastian/version": "^1.0.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.3-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Webmozart\\Assert\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@gmail.com"
+ }
+ ],
+ "description": "Assertions to validate method input/output with nice error messages.",
+ "keywords": [
+ "assert",
+ "check",
+ "validate"
+ ],
+ "time": "2016-11-23 20:04:58"
+ }
+ ],
+ "aliases": [],
+ "minimum-stability": "stable",
+ "stability-flags": [],
+ "prefer-stable": false,
+ "prefer-lowest": false,
+ "platform": {
+ "php": ">=5.5.9"
+ },
+ "platform-dev": []
+}
diff --git a/config/fcm.php b/config/fcm.php
new file mode 100755
index 0000000..887cbf9
--- /dev/null
+++ b/config/fcm.php
@@ -0,0 +1,12 @@
+ env('FCM_PROTOCOL', 'http'),
+ 'log_enabled' => true,
+ 'http' => [
+ 'server_key' => env('FCM_SERVER_KEY', 'Your FCM server key'),
+ 'sender_id' => env('FCM_SENDER_ID', 'Your sender id'),
+ 'server_send_url' => 'https://fcm.googleapis.com/fcm/send',
+ 'server_group_url' => 'https://android.googleapis.com/gcm/notification',
+ 'timeout' => 30.0
+ ]
+];
diff --git a/database/factories/ModelFactory.php b/database/factories/ModelFactory.php
new file mode 100644
index 0000000..b795b09
--- /dev/null
+++ b/database/factories/ModelFactory.php
@@ -0,0 +1,19 @@
+define(App\User::class, function ($faker) {
+ return [
+ 'name' => $faker->name,
+ 'email' => $faker->email,
+ ];
+});
diff --git a/database/migrations/.gitkeep b/database/migrations/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/database/migrations/1_0_0_0_create_table_intervals.php b/database/migrations/1_0_0_0_create_table_intervals.php
new file mode 100644
index 0000000..3461bcf
--- /dev/null
+++ b/database/migrations/1_0_0_0_create_table_intervals.php
@@ -0,0 +1,36 @@
+increments('id');
+ $table->string('mon', 11)->default('00:00,23:59');
+ $table->string('tue', 11)->default('00:00,23:59');
+ $table->string('wed', 11)->default('00:00,23:59');
+ $table->string('thu', 11)->default('00:00,23:59');
+ $table->string('fri', 11)->default('00:00,23:59');
+ $table->string('sat', 11)->default('00:00,23:59');
+ $table->string('sun', 11)->default('00:00,23:59');
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::drop('intervals');
+ }
+}
diff --git a/database/migrations/1_0_0_0_create_table_levels.php b/database/migrations/1_0_0_0_create_table_levels.php
new file mode 100644
index 0000000..8d0bb2e
--- /dev/null
+++ b/database/migrations/1_0_0_0_create_table_levels.php
@@ -0,0 +1,30 @@
+increments('id');
+ $table->string('name', 50)->unique();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::drop('levels');
+ }
+}
diff --git a/database/migrations/1_0_0_0_create_table_reviews.php b/database/migrations/1_0_0_0_create_table_reviews.php
new file mode 100644
index 0000000..10994c4
--- /dev/null
+++ b/database/migrations/1_0_0_0_create_table_reviews.php
@@ -0,0 +1,32 @@
+increments('id');
+ $table->tinyInteger('rating');
+ $table->string('description', 500)->nullable();
+ $table->timestamps();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::drop('reviews');
+ }
+}
diff --git a/database/migrations/1_0_0_0_create_table_subjects.php b/database/migrations/1_0_0_0_create_table_subjects.php
new file mode 100644
index 0000000..c9edb53
--- /dev/null
+++ b/database/migrations/1_0_0_0_create_table_subjects.php
@@ -0,0 +1,30 @@
+increments('id');
+ $table->string('name', 50)->unique();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::drop('subjects');
+ }
+}
diff --git a/database/migrations/1_1_0_0_create_table_users.php b/database/migrations/1_1_0_0_create_table_users.php
new file mode 100644
index 0000000..8cb0a80
--- /dev/null
+++ b/database/migrations/1_1_0_0_create_table_users.php
@@ -0,0 +1,50 @@
+increments('id');
+ $table->enum('type', ['student', 'mentor']);
+ $table->string('firstName', 50);
+ $table->string('lastName', 50);
+ $table->string('email')->unique();
+ $table->string('password', 60);
+ $table->string('accessToken', 64)->unique();
+ $table->text('image')->nullable();
+ $table->string('fcmToken')->nullable();
+ $table->boolean('active')->default(0);
+ $table->integer('views')->default(0);
+
+ $table->integer('interval')->unsigned()->nullable();
+ $table->foreign('interval')->references('id')->on('intervals');
+ $table->string('location')->nullable();
+ $table->smallInteger('price')->nullable();
+ $table->boolean('promoted')->default(0);
+
+ $table->smallInteger('grade')->nullable();
+
+ $table->softDeletes();
+ $table->timestamps();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::drop('users');
+ }
+}
diff --git a/database/migrations/2_0_0_0_create_table_logins.php b/database/migrations/2_0_0_0_create_table_logins.php
new file mode 100644
index 0000000..6a9a080
--- /dev/null
+++ b/database/migrations/2_0_0_0_create_table_logins.php
@@ -0,0 +1,33 @@
+increments('id');
+ $table->string('ip', 15);
+ $table->integer('user')->unsigned();
+ $table->foreign('user')->references('id')->on('users');
+ $table->timestamps();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::drop('logins');
+ }
+}
diff --git a/database/migrations/2_0_0_0_create_table_schools.php b/database/migrations/2_0_0_0_create_table_schools.php
new file mode 100644
index 0000000..0d67b00
--- /dev/null
+++ b/database/migrations/2_0_0_0_create_table_schools.php
@@ -0,0 +1,33 @@
+increments('id');
+ $table->string('name', 50);
+ $table->string('city', 50);
+ $table->integer('level')->unsigned()->nullable();
+ $table->foreign('level')->references('id')->on('levels');
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::drop('schools');
+ }
+}
diff --git a/database/migrations/2_0_0_0_create_table_sessions.php b/database/migrations/2_0_0_0_create_table_sessions.php
new file mode 100644
index 0000000..d9921ee
--- /dev/null
+++ b/database/migrations/2_0_0_0_create_table_sessions.php
@@ -0,0 +1,52 @@
+increments('id');
+ $table->string('lecture', 50);
+ $table->smallInteger('price')->default(0);;
+ $table->string('location');
+ $table->string('locationEdit')->nullable();
+ $table->time('timeBegin', 11);
+ $table->time('timeEnd', 11);
+ $table->time('timeBeginEdit')->nullable();
+ $table->time('timeEndEdit')->nullable();
+ $table->date('date');
+ $table->date('dateEdit')->nullable();
+ $table->enum('status', ['accepted', 'declined'])->nullable();
+ $table->boolean('canceled')->default(0);
+ $table->integer('mentor')->unsigned();
+ $table->foreign('mentor')->references('id')->on('users');
+ $table->integer('student')->unsigned();
+ $table->foreign('student')->references('id')->on('users');
+ $table->integer('subject')->unsigned()->nullable();
+ $table->foreign('subject')->references('id')->on('subjects');
+ $table->integer('level')->unsigned()->nullable();
+ $table->foreign('level')->references('id')->on('levels');
+ $table->integer('review')->unsigned()->nullable();
+ $table->foreign('review')->references('id')->on('reviews');
+ $table->timestamps();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::drop('sessions');
+ }
+}
diff --git a/database/migrations/3_0_0_0_create_table_junctions.php b/database/migrations/3_0_0_0_create_table_junctions.php
new file mode 100644
index 0000000..288f927
--- /dev/null
+++ b/database/migrations/3_0_0_0_create_table_junctions.php
@@ -0,0 +1,37 @@
+increments('id');
+ $table->integer('user')->unsigned();
+ $table->foreign('user')->references('id')->on('users');
+ $table->integer('school')->unsigned()->nullable();
+ $table->foreign('school')->references('id')->on('schools');
+ $table->integer('subject')->unsigned()->nullable();
+ $table->foreign('subject')->references('id')->on('subjects');
+ $table->integer('level')->unsigned()->nullable();
+ $table->foreign('level')->references('id')->on('levels');
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::drop('junctions');
+ }
+}
diff --git a/database/seeds/DatabaseSeeder.php b/database/seeds/DatabaseSeeder.php
new file mode 100644
index 0000000..8673de3
--- /dev/null
+++ b/database/seeds/DatabaseSeeder.php
@@ -0,0 +1,13 @@
+call('LevelTableSeeder');
+ $this->call('SubjectTableSeeder');
+ $this->call('IntervalTableSeeder');
+ $this->call('SchoolTableSeeder');
+ }
+}
diff --git a/database/seeds/LevelTableSeeder.php b/database/seeds/LevelTableSeeder.php
new file mode 100644
index 0000000..ba185d1
--- /dev/null
+++ b/database/seeds/LevelTableSeeder.php
@@ -0,0 +1,18 @@
+delete();
+
+ DB::table('levels')->insert([
+ ['name' => 'Osnovna skola'],
+ ['name' => 'Srednja skola'],
+ ['name' => 'Visa skola'],
+ ['name' => 'Fakultet']
+ ]);
+ }
+}
+?>
diff --git a/database/seeds/SchoolTableSeeder.php b/database/seeds/SchoolTableSeeder.php
new file mode 100644
index 0000000..2d3d351
--- /dev/null
+++ b/database/seeds/SchoolTableSeeder.php
@@ -0,0 +1,22 @@
+delete();
+
+ DB::table('schools')->insert([
+ ['name' => 'Visoka poslovna skola', 'city' => 'Beograd', 'level' => 3],
+ ['name' => 'Gimnazija', 'city' => 'Krusevac', 'level' => 2],
+ ['name' => 'Tehnicka skola', 'city' => 'Novi Sad', 'level' => 2],
+ ['name' => 'Ekonomska skola', 'city' => 'Nis', 'level' => 2],
+ ['name' => 'OS Vuk Karadzic', 'city' => 'Kragujevac', 'level' => 1],
+ ['name' => 'Ekonomska skola', 'city' => 'Beograd', 'level' => 2],
+ ['name' => 'Gradjevinska skola', 'city' => 'Beograd', 'level' => 2],
+ ['name' => 'Pravni fakultet', 'city' => 'Kraljevo', 'level' => 4]
+ ]);
+ }
+}
+?>
diff --git a/database/seeds/SubjectTableSeeder.php b/database/seeds/SubjectTableSeeder.php
new file mode 100644
index 0000000..98ada75
--- /dev/null
+++ b/database/seeds/SubjectTableSeeder.php
@@ -0,0 +1,22 @@
+delete();
+
+ DB::table('subjects')->insert([
+ ['name' => 'Matematika'],
+ ['name' => 'Fizika'],
+ ['name' => 'Srpski jezik'],
+ ['name' => 'Knjizevnost'],
+ ['name' => 'Osnove racunarskih sistema'],
+ ['name' => 'Svet oko nas'],
+ ['name' => 'Programiranje 1'],
+ ['name' => 'Hemija']
+ ]);
+ }
+}
+?>
diff --git a/doc/brief.pdf b/doc/brief.pdf
new file mode 100644
index 0000000..4fb3f1f
Binary files /dev/null and b/doc/brief.pdf differ
diff --git a/doc/spec.pages b/doc/spec.pages
new file mode 100644
index 0000000..9e6c579
Binary files /dev/null and b/doc/spec.pages differ
diff --git a/doc/spec.pdf b/doc/spec.pdf
new file mode 100644
index 0000000..36daf1d
Binary files /dev/null and b/doc/spec.pdf differ
diff --git a/phpunit.xml b/phpunit.xml
new file mode 100644
index 0000000..77c29fe
--- /dev/null
+++ b/phpunit.xml
@@ -0,0 +1,26 @@
+
+
Developed by Ecloga Apps © {{$year}}
+ + diff --git a/storage/app/.gitignore b/storage/app/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/storage/app/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/storage/framework/views/.gitignore b/storage/framework/views/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/storage/framework/views/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/storage/logs/.gitignore b/storage/logs/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/storage/logs/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/tests/ExampleTest.php b/tests/ExampleTest.php new file mode 100644 index 0000000..2b206c6 --- /dev/null +++ b/tests/ExampleTest.php @@ -0,0 +1,20 @@ +get('/'); + + $this->assertEquals( + $this->response->getContent(), $this->app->version() + ); + } +} diff --git a/tests/TestCase.php b/tests/TestCase.php new file mode 100644 index 0000000..651d9cb --- /dev/null +++ b/tests/TestCase.php @@ -0,0 +1,14 @@ +