Dan Brown

Added activity history to to all entities. Fixes #12

......@@ -10,3 +10,4 @@ Homestead.yaml
/public/uploads
/public/bower
/storage/images
_ide_helper.php
\ No newline at end of file
......
<?php
namespace Oxbow;
use Illuminate\Database\Eloquent\Model;
/**
* @property string key
* @property \User user
* @property \Entity entity
* @property string extra
*/
class Activity extends Model
{
public function entity()
{
if($this->entity_id) {
return $this->morphTo('entity')->first();
} else {
return false;
}
}
public function user()
{
return $this->belongsTo('Oxbow\User');
}
/**
* Returns text from the language files, Looks up by using the
* activity key.
*/
public function getText()
{
return trans('activities.' . $this->key);
}
}
......@@ -37,4 +37,15 @@ class Book extends Entity
return $pages->sortBy('priority');
}
/**
* Gets only the most recent activity for this book
* @param int $limit
* @param int $page
* @return mixed
*/
public function recentActivity($limit = 20, $page=0)
{
return $this->hasMany('Oxbow\Activity')->orderBy('created_at', 'desc')->skip($limit*$page)->take($limit)->get();
}
}
......
......@@ -34,4 +34,25 @@ class Entity extends Model
{
return [get_class($this), $this->id] === [get_class($entity), $entity->id];
}
/**
* Gets the activity for this entity.
* @return \Illuminate\Database\Eloquent\Relations\MorphMany
*/
public function activity()
{
return $this->morphMany('Oxbow\Activity', 'entity')->orderBy('created_at', 'desc');
}
/**
* Gets only the most recent activity
* @param int $limit
* @param int $page
* @return mixed
*/
public function recentActivity($limit = 20, $page=0)
{
return $this->activity()->skip($limit*$page)->take($limit)->get();
}
}
......
......@@ -2,6 +2,7 @@
namespace Oxbow\Http\Controllers;
use Activity;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
......@@ -65,6 +66,7 @@ class BookController extends Controller
$book->created_by = Auth::user()->id;
$book->updated_by = Auth::user()->id;
$book->save();
Activity::add($book, 'book_create', $book->id);
return redirect('/books');
}
......@@ -110,6 +112,7 @@ class BookController extends Controller
$book->slug = $this->bookRepo->findSuitableSlug($book->name, $book->id);
$book->updated_by = Auth::user()->id;
$book->save();
Activity::add($book, 'book_update', $book->id);
return redirect($book->getUrl());
}
......@@ -132,7 +135,9 @@ class BookController extends Controller
*/
public function destroy($bookSlug)
{
$bookName = $this->bookRepo->getBySlug($bookSlug)->name;
$this->bookRepo->destroyBySlug($bookSlug);
Activity::addMessage('book_delete', 0, $bookName);
return redirect('/books');
}
}
......
......@@ -2,6 +2,7 @@
namespace Oxbow\Http\Controllers;
use Activity;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
......@@ -60,6 +61,7 @@ class ChapterController extends Controller
$chapter->created_by = Auth::user()->id;
$chapter->updated_by = Auth::user()->id;
$book->chapters()->save($chapter);
Activity::add($chapter, 'chapter_create', $book->id);
return redirect($book->getUrl());
}
......@@ -107,6 +109,7 @@ class ChapterController extends Controller
$chapter->slug = $this->chapterRepo->findSuitableSlug($chapter->name, $book->id, $chapter->id);
$chapter->updated_by = Auth::user()->id;
$chapter->save();
Activity::add($chapter, 'chapter_update', $book->id);
return redirect($chapter->getUrl());
}
......@@ -134,6 +137,7 @@ class ChapterController extends Controller
{
$book = $this->bookRepo->getBySlug($bookSlug);
$chapter = $this->chapterRepo->getBySlug($chapterSlug, $book->id);
$chapterName = $chapter->name;
if(count($chapter->pages) > 0) {
foreach($chapter->pages as $page) {
$page->chapter_id = 0;
......@@ -141,6 +145,7 @@ class ChapterController extends Controller
}
}
$chapter->delete();
Activity::addMessage('chapter_delete', $book->id, $chapterName);
return redirect($book->getUrl());
}
}
......
......@@ -2,10 +2,10 @@
namespace Oxbow\Http\Controllers;
use Activity;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Str;
use Oxbow\Http\Requests;
use Oxbow\Repos\BookRepo;
use Oxbow\Repos\ChapterRepo;
......@@ -76,6 +76,7 @@ class PageController extends Controller
$page->updated_by = Auth::user()->id;
$page->save();
$this->pageRepo->saveRevision($page);
Activity::add($page, 'page_create', $book->id);
return redirect($page->getUrl());
}
......@@ -120,6 +121,7 @@ class PageController extends Controller
$book = $this->bookRepo->getBySlug($bookSlug);
$page = $this->pageRepo->getBySlug($pageSlug, $book->id);
$this->pageRepo->updatePage($page, $book->id, $request->all());
Activity::add($page, 'page_update', $book->id);
return redirect($page->getUrl());
}
......@@ -187,6 +189,7 @@ class PageController extends Controller
}
$model->save();
}
Activity::add($book, 'book_sort', $book->id);
return redirect($book->getUrl());
}
......@@ -215,6 +218,7 @@ class PageController extends Controller
{
$book = $this->bookRepo->getBySlug($bookSlug);
$page = $this->pageRepo->getBySlug($pageSlug, $book->id);
Activity::addMessage('page_delete', $book->id, $page->name);
$page->delete();
return redirect($book->getUrl());
}
......@@ -254,6 +258,7 @@ class PageController extends Controller
$page = $this->pageRepo->getBySlug($pageSlug, $book->id);
$revision = $this->pageRepo->getRevisionById($revisionId);
$page = $this->pageRepo->updatePage($page, $book->id, $revision->toArray());
Activity::add($page, 'page_restore', $book->id);
return redirect($page->getUrl());
}
}
......
<?php
namespace Oxbow\Providers;
use Illuminate\Support\ServiceProvider;
use Oxbow\Services\ActivityService;
class CustomFacadeProvider extends ServiceProvider
{
/**
* Bootstrap the application services.
*
* @return void
*/
public function boot()
{
//
}
/**
* Register the application services.
*
* @return void
*/
public function register()
{
$this->app->bind('activity', function() {
return new ActivityService($this->app->make('Oxbow\Activity'));
});
}
}
<?php namespace Oxbow\Services;
use Illuminate\Support\Facades\Auth;
use Oxbow\Activity;
use Oxbow\Entity;
class ActivityService
{
protected $activity;
protected $user;
/**
* ActivityService constructor.
* @param $activity
*/
public function __construct(Activity $activity)
{
$this->activity = $activity;
$this->user = Auth::user();
}
/**
* Add activity data to database.
* @para Entity $entity
* @param $activityKey
* @param int $bookId
*/
public function add(Entity $entity, $activityKey, $bookId = 0, $extra = false)
{
$this->activity->user_id = $this->user->id;
$this->activity->book_id = $bookId;
$this->activity->key = strtolower($activityKey);
if($extra !== false) {
$this->activity->extra = $extra;
}
$entity->activity()->save($this->activity);
}
/**
* Adds a activity history with a message & without binding to a entitiy.
* @param $activityKey
* @param int $bookId
* @param bool|false $extra
*/
public function addMessage($activityKey, $bookId = 0, $extra = false)
{
$this->activity->user_id = $this->user->id;
$this->activity->book_id = $bookId;
$this->activity->key = strtolower($activityKey);
if($extra !== false) {
$this->activity->extra = $extra;
}
$this->activity->save();
}
}
\ No newline at end of file
<?php namespace Oxbow\Services\Facades;
use Illuminate\Support\Facades\Facade;
class Activity extends Facade
{
/**
* Get the registered name of the component.
*
* @return string
*/
protected static function getFacadeAccessor() { return 'activity'; }
}
\ No newline at end of file
......@@ -7,7 +7,8 @@
"require": {
"php": ">=5.5.9",
"laravel/framework": "5.1.*",
"intervention/image": "^2.3"
"intervention/image": "^2.3",
"barryvdh/laravel-ide-helper": "^2.1"
},
"require-dev": {
"fzaninotto/faker": "~1.4",
......
......@@ -4,9 +4,72 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
"hash": "f1c04613ce972bfab5c142cb0b588385",
"hash": "16de3a44150d9425a501c9873cb28eaf",
"packages": [
{
"name": "barryvdh/laravel-ide-helper",
"version": "v2.1.0",
"source": {
"type": "git",
"url": "https://github.com/barryvdh/laravel-ide-helper.git",
"reference": "83999f8467374adcb8893f566c9171c9d9691f50"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/barryvdh/laravel-ide-helper/zipball/83999f8467374adcb8893f566c9171c9d9691f50",
"reference": "83999f8467374adcb8893f566c9171c9d9691f50",
"shasum": ""
},
"require": {
"illuminate/console": "5.0.x|5.1.x",
"illuminate/filesystem": "5.0.x|5.1.x",
"illuminate/support": "5.0.x|5.1.x",
"php": ">=5.4.0",
"phpdocumentor/reflection-docblock": "2.0.4",
"symfony/class-loader": "~2.3"
},
"require-dev": {
"doctrine/dbal": "~2.3"
},
"suggest": {
"doctrine/dbal": "Load information from the database about models for phpdocs (~2.3)"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.1-dev"
}
},
"autoload": {
"psr-4": {
"Barryvdh\\LaravelIdeHelper\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Barry vd. Heuvel",
"email": "barryvdh@gmail.com"
}
],
"description": "Laravel IDE Helper, generates correct PHPDocs for all Facade classes, to improve auto-completion.",
"keywords": [
"autocomplete",
"codeintel",
"helper",
"ide",
"laravel",
"netbeans",
"phpdoc",
"phpstorm",
"sublime"
],
"time": "2015-08-13 11:40:00"
},
{
"name": "classpreloader/classpreloader",
"version": "2.0.0",
"source": {
......@@ -62,16 +125,16 @@
},
{
"name": "danielstjules/stringy",
"version": "1.9.0",
"version": "1.10.0",
"source": {
"type": "git",
"url": "https://github.com/danielstjules/Stringy.git",
"reference": "3cf18e9e424a6dedc38b7eb7ef580edb0929461b"
"reference": "4749c205db47ee5b32e8d1adf6d9aff8db6caf3b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/danielstjules/Stringy/zipball/3cf18e9e424a6dedc38b7eb7ef580edb0929461b",
"reference": "3cf18e9e424a6dedc38b7eb7ef580edb0929461b",
"url": "https://api.github.com/repos/danielstjules/Stringy/zipball/4749c205db47ee5b32e8d1adf6d9aff8db6caf3b",
"reference": "4749c205db47ee5b32e8d1adf6d9aff8db6caf3b",
"shasum": ""
},
"require": {
......@@ -114,7 +177,7 @@
"utility",
"utils"
],
"time": "2015-02-10 06:19:18"
"time": "2015-07-23 00:54:12"
},
{
"name": "dnoegel/php-xdg-base-dir",
......@@ -218,16 +281,16 @@
},
{
"name": "guzzlehttp/psr7",
"version": "1.1.0",
"version": "1.2.0",
"source": {
"type": "git",
"url": "https://github.com/guzzle/psr7.git",
"reference": "af0e1758de355eb113917ad79c3c0e3604bce4bd"
"reference": "4ef919b0cf3b1989523138b60163bbcb7ba1ff7e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/psr7/zipball/af0e1758de355eb113917ad79c3c0e3604bce4bd",
"reference": "af0e1758de355eb113917ad79c3c0e3604bce4bd",
"url": "https://api.github.com/repos/guzzle/psr7/zipball/4ef919b0cf3b1989523138b60163bbcb7ba1ff7e",
"reference": "4ef919b0cf3b1989523138b60163bbcb7ba1ff7e",
"shasum": ""
},
"require": {
......@@ -251,7 +314,7 @@
"GuzzleHttp\\Psr7\\": "src/"
},
"files": [
"src/functions.php"
"src/functions_include.php"
]
},
"notification-url": "https://packagist.org/downloads/",
......@@ -272,7 +335,7 @@
"stream",
"uri"
],
"time": "2015-06-24 19:55:15"
"time": "2015-08-15 19:32:36"
},
{
"name": "intervention/image",
......@@ -483,16 +546,16 @@
},
{
"name": "laravel/framework",
"version": "v5.1.7",
"version": "v5.1.10",
"source": {
"type": "git",
"url": "https://github.com/laravel/framework.git",
"reference": "5e942882319845f71c681ce6e85831129bf66426"
"reference": "d47ccc8de10ccb6f328cc90f901ca5e47e077c93"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laravel/framework/zipball/5e942882319845f71c681ce6e85831129bf66426",
"reference": "5e942882319845f71c681ce6e85831129bf66426",
"url": "https://api.github.com/repos/laravel/framework/zipball/d47ccc8de10ccb6f328cc90f901ca5e47e077c93",
"reference": "d47ccc8de10ccb6f328cc90f901ca5e47e077c93",
"shasum": ""
},
"require": {
......@@ -607,20 +670,20 @@
"framework",
"laravel"
],
"time": "2015-07-12 02:27:36"
"time": "2015-08-12 18:16:08"
},
{
"name": "league/flysystem",
"version": "1.0.7",
"version": "1.0.11",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/flysystem.git",
"reference": "b58431785768abbb4f00c10e66a065095a0693ef"
"reference": "c16222fdc02467eaa12cb6d6d0e65527741f6040"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/thephpleague/flysystem/zipball/b58431785768abbb4f00c10e66a065095a0693ef",
"reference": "b58431785768abbb4f00c10e66a065095a0693ef",
"url": "https://api.github.com/repos/thephpleague/flysystem/zipball/c16222fdc02467eaa12cb6d6d0e65527741f6040",
"reference": "c16222fdc02467eaa12cb6d6d0e65527741f6040",
"shasum": ""
},
"require": {
......@@ -688,20 +751,20 @@
"sftp",
"storage"
],
"time": "2015-07-11 14:58:06"
"time": "2015-07-28 20:41:58"
},
{
"name": "monolog/monolog",
"version": "1.14.0",
"version": "1.16.0",
"source": {
"type": "git",
"url": "https://github.com/Seldaek/monolog.git",
"reference": "b287fbbe1ca27847064beff2bad7fb6920bf08cc"
"reference": "c0c0b4bee3aabce7182876b0d912ef2595563db7"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Seldaek/monolog/zipball/b287fbbe1ca27847064beff2bad7fb6920bf08cc",
"reference": "b287fbbe1ca27847064beff2bad7fb6920bf08cc",
"url": "https://api.github.com/repos/Seldaek/monolog/zipball/c0c0b4bee3aabce7182876b0d912ef2595563db7",
"reference": "c0c0b4bee3aabce7182876b0d912ef2595563db7",
"shasum": ""
},
"require": {
......@@ -738,7 +801,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.14.x-dev"
"dev-master": "1.16.x-dev"
}
},
"autoload": {
......@@ -764,7 +827,7 @@
"logging",
"psr-3"
],
"time": "2015-06-19 13:29:54"
"time": "2015-08-09 17:44:44"
},
{
"name": "mtdowling/cron-expression",
......@@ -859,16 +922,16 @@
},
{
"name": "nikic/php-parser",
"version": "v1.3.0",
"version": "v1.4.0",
"source": {
"type": "git",
"url": "https://github.com/nikic/PHP-Parser.git",
"reference": "dff239267fd1befa1cd40430c9ed12591aa720ca"
"reference": "196f177cfefa0f1f7166c0a05d8255889be12418"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/dff239267fd1befa1cd40430c9ed12591aa720ca",
"reference": "dff239267fd1befa1cd40430c9ed12591aa720ca",
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/196f177cfefa0f1f7166c0a05d8255889be12418",
"reference": "196f177cfefa0f1f7166c0a05d8255889be12418",
"shasum": ""
},
"require": {
......@@ -878,7 +941,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.3-dev"
"dev-master": "1.4-dev"
}
},
"autoload": {
......@@ -900,7 +963,56 @@
"parser",
"php"
],
"time": "2015-05-02 15:40:40"
"time": "2015-07-14 17:31:05"
},
{
"name": "phpdocumentor/reflection-docblock",
"version": "2.0.4",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
"reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/d68dbdc53dc358a816f00b300704702b2eaff7b8",
"reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"require-dev": {
"phpunit/phpunit": "~4.0"
},
"suggest": {
"dflydev/markdown": "~1.0",
"erusev/parsedown": "~1.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.0.x-dev"
}
},
"autoload": {
"psr-0": {
"phpDocumentor": [
"src/"
]
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Mike van Riel",
"email": "mike.vanriel@naenius.com"
}
],
"time": "2015-02-03 12:10:50"
},
{
"name": "psr/http-message",
......@@ -991,16 +1103,16 @@
},
{
"name": "psy/psysh",
"version": "v0.5.1",
"version": "v0.5.2",
"source": {
"type": "git",
"url": "https://github.com/bobthecow/psysh.git",
"reference": "e5a46a767928e85f1f47dda654beda8c680ddd94"
"reference": "aaf8772ade08b5f0f6830774a5d5c2f800415975"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/bobthecow/psysh/zipball/e5a46a767928e85f1f47dda654beda8c680ddd94",
"reference": "e5a46a767928e85f1f47dda654beda8c680ddd94",
"url": "https://api.github.com/repos/bobthecow/psysh/zipball/aaf8772ade08b5f0f6830774a5d5c2f800415975",
"reference": "aaf8772ade08b5f0f6830774a5d5c2f800415975",
"shasum": ""
},
"require": {
......@@ -1059,7 +1171,7 @@
"interactive",
"shell"
],
"time": "2015-07-03 16:48:00"
"time": "2015-07-16 15:26:57"
},
{
"name": "swiftmailer/swiftmailer",
......@@ -1115,17 +1227,67 @@
"time": "2015-06-06 14:19:39"
},
{
"name": "symfony/class-loader",
"version": "v2.7.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/ClassLoader.git",
"reference": "2fccbc544997340808801a7410cdcb96dd12edc4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/ClassLoader/zipball/2fccbc544997340808801a7410cdcb96dd12edc4",
"reference": "2fccbc544997340808801a7410cdcb96dd12edc4",
"shasum": ""
},
"require": {
"php": ">=5.3.9"
},
"require-dev": {
"symfony/finder": "~2.0,>=2.0.5",
"symfony/phpunit-bridge": "~2.7"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.7-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Component\\ClassLoader\\": ""
}
},
"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 ClassLoader Component",
"homepage": "https://symfony.com",
"time": "2015-06-25 12:52:11"
},
{
"name": "symfony/console",
"version": "v2.7.1",
"version": "v2.7.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/Console.git",
"reference": "564398bc1f33faf92fc2ec86859983d30eb81806"
"reference": "d6cf02fe73634c96677e428f840704bfbcaec29e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/Console/zipball/564398bc1f33faf92fc2ec86859983d30eb81806",
"reference": "564398bc1f33faf92fc2ec86859983d30eb81806",
"url": "https://api.github.com/repos/symfony/Console/zipball/d6cf02fe73634c96677e428f840704bfbcaec29e",
"reference": "d6cf02fe73634c96677e428f840704bfbcaec29e",
"shasum": ""
},
"require": {
......@@ -1169,11 +1331,11 @@
],
"description": "Symfony Console Component",
"homepage": "https://symfony.com",
"time": "2015-06-10 15:30:22"
"time": "2015-07-28 15:18:12"
},
{
"name": "symfony/css-selector",
"version": "v2.7.1",
"version": "v2.7.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/CssSelector.git",
......@@ -1226,16 +1388,16 @@
},
{
"name": "symfony/debug",
"version": "v2.7.1",
"version": "v2.7.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/Debug.git",
"reference": "075070230c5bbc65abde8241191655bbce0716e2"
"reference": "9daa1bf9f7e615fa2fba30357e479a90141222e3"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/Debug/zipball/075070230c5bbc65abde8241191655bbce0716e2",
"reference": "075070230c5bbc65abde8241191655bbce0716e2",
"url": "https://api.github.com/repos/symfony/Debug/zipball/9daa1bf9f7e615fa2fba30357e479a90141222e3",
"reference": "9daa1bf9f7e615fa2fba30357e479a90141222e3",
"shasum": ""
},
"require": {
......@@ -1282,20 +1444,20 @@
],
"description": "Symfony Debug Component",
"homepage": "https://symfony.com",
"time": "2015-06-08 09:37:21"
"time": "2015-07-09 16:07:40"
},
{
"name": "symfony/dom-crawler",
"version": "v2.7.1",
"version": "v2.7.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/DomCrawler.git",
"reference": "11d8eb8ccc1533f4c2d89a025f674894fda520b3"
"reference": "9dabece63182e95c42b06967a0d929a5df78bc35"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/DomCrawler/zipball/11d8eb8ccc1533f4c2d89a025f674894fda520b3",
"reference": "11d8eb8ccc1533f4c2d89a025f674894fda520b3",
"url": "https://api.github.com/repos/symfony/DomCrawler/zipball/9dabece63182e95c42b06967a0d929a5df78bc35",
"reference": "9dabece63182e95c42b06967a0d929a5df78bc35",
"shasum": ""
},
"require": {
......@@ -1335,20 +1497,20 @@
],
"description": "Symfony DomCrawler Component",
"homepage": "https://symfony.com",
"time": "2015-05-22 14:54:25"
"time": "2015-07-09 16:07:40"
},
{
"name": "symfony/event-dispatcher",
"version": "v2.7.1",
"version": "v2.7.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/EventDispatcher.git",
"reference": "be3c5ff8d503c46768aeb78ce6333051aa6f26d9"
"reference": "9310b5f9a87ec2ea75d20fec0b0017c77c66dac3"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/be3c5ff8d503c46768aeb78ce6333051aa6f26d9",
"reference": "be3c5ff8d503c46768aeb78ce6333051aa6f26d9",
"url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/9310b5f9a87ec2ea75d20fec0b0017c77c66dac3",
"reference": "9310b5f9a87ec2ea75d20fec0b0017c77c66dac3",
"shasum": ""
},
"require": {
......@@ -1393,20 +1555,20 @@
],
"description": "Symfony EventDispatcher Component",
"homepage": "https://symfony.com",
"time": "2015-06-08 09:37:21"
"time": "2015-06-18 19:21:56"
},
{
"name": "symfony/finder",
"version": "v2.7.1",
"version": "v2.7.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/Finder.git",
"reference": "c13a40d638aeede1e8400f8c956c7f9246c05f75"
"reference": "ae0f363277485094edc04c9f3cbe595b183b78e4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/Finder/zipball/c13a40d638aeede1e8400f8c956c7f9246c05f75",
"reference": "c13a40d638aeede1e8400f8c956c7f9246c05f75",
"url": "https://api.github.com/repos/symfony/Finder/zipball/ae0f363277485094edc04c9f3cbe595b183b78e4",
"reference": "ae0f363277485094edc04c9f3cbe595b183b78e4",
"shasum": ""
},
"require": {
......@@ -1442,20 +1604,20 @@
],
"description": "Symfony Finder Component",
"homepage": "https://symfony.com",
"time": "2015-06-04 20:11:48"
"time": "2015-07-09 16:07:40"
},
{
"name": "symfony/http-foundation",
"version": "v2.7.1",
"version": "v2.7.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/HttpFoundation.git",
"reference": "4f363c426b0ced57e3d14460022feb63937980ff"
"reference": "863af6898081b34c65d42100c370b9f3c51b70ca"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/HttpFoundation/zipball/4f363c426b0ced57e3d14460022feb63937980ff",
"reference": "4f363c426b0ced57e3d14460022feb63937980ff",
"url": "https://api.github.com/repos/symfony/HttpFoundation/zipball/863af6898081b34c65d42100c370b9f3c51b70ca",
"reference": "863af6898081b34c65d42100c370b9f3c51b70ca",
"shasum": ""
},
"require": {
......@@ -1495,27 +1657,27 @@
],
"description": "Symfony HttpFoundation Component",
"homepage": "https://symfony.com",
"time": "2015-06-10 15:30:22"
"time": "2015-07-22 10:11:00"
},
{
"name": "symfony/http-kernel",
"version": "v2.7.1",
"version": "v2.7.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/HttpKernel.git",
"reference": "208101c7a11e31933183bd2a380486e528c74302"
"reference": "405d3e7a59ff7a28ec469441326a0ac79065ea98"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/HttpKernel/zipball/208101c7a11e31933183bd2a380486e528c74302",
"reference": "208101c7a11e31933183bd2a380486e528c74302",
"url": "https://api.github.com/repos/symfony/HttpKernel/zipball/405d3e7a59ff7a28ec469441326a0ac79065ea98",
"reference": "405d3e7a59ff7a28ec469441326a0ac79065ea98",
"shasum": ""
},
"require": {
"php": ">=5.3.9",
"psr/log": "~1.0",
"symfony/debug": "~2.6,>=2.6.2",
"symfony/event-dispatcher": "~2.5.9|~2.6,>=2.6.2",
"symfony/event-dispatcher": "~2.6,>=2.6.7",
"symfony/http-foundation": "~2.5,>=2.5.4"
},
"conflict": {
......@@ -1575,20 +1737,20 @@
],
"description": "Symfony HttpKernel Component",
"homepage": "https://symfony.com",
"time": "2015-06-11 21:15:28"
"time": "2015-07-31 13:24:45"
},
{
"name": "symfony/process",
"version": "v2.7.1",
"version": "v2.7.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/Process.git",
"reference": "552d8efdc80980cbcca50b28d626ac8e36e3cdd1"
"reference": "48aeb0e48600321c272955132d7606ab0a49adb3"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/Process/zipball/552d8efdc80980cbcca50b28d626ac8e36e3cdd1",
"reference": "552d8efdc80980cbcca50b28d626ac8e36e3cdd1",
"url": "https://api.github.com/repos/symfony/Process/zipball/48aeb0e48600321c272955132d7606ab0a49adb3",
"reference": "48aeb0e48600321c272955132d7606ab0a49adb3",
"shasum": ""
},
"require": {
......@@ -1624,20 +1786,20 @@
],
"description": "Symfony Process Component",
"homepage": "https://symfony.com",
"time": "2015-06-08 09:37:21"
"time": "2015-07-01 11:25:50"
},
{
"name": "symfony/routing",
"version": "v2.7.1",
"version": "v2.7.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/Routing.git",
"reference": "5581be29185b8fb802398904555f70da62f6d50d"
"reference": "ea9134f277162b02e5f80ac058b75a77637b0d26"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/Routing/zipball/5581be29185b8fb802398904555f70da62f6d50d",
"reference": "5581be29185b8fb802398904555f70da62f6d50d",
"url": "https://api.github.com/repos/symfony/Routing/zipball/ea9134f277162b02e5f80ac058b75a77637b0d26",
"reference": "ea9134f277162b02e5f80ac058b75a77637b0d26",
"shasum": ""
},
"require": {
......@@ -1695,20 +1857,20 @@
"uri",
"url"
],
"time": "2015-06-11 17:20:40"
"time": "2015-07-09 16:07:40"
},
{
"name": "symfony/translation",
"version": "v2.7.1",
"version": "v2.7.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/Translation.git",
"reference": "8349a2b0d11bd0311df9e8914408080912983a0b"
"reference": "c8dc34cc936152c609cdd722af317e4239d10dd6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/Translation/zipball/8349a2b0d11bd0311df9e8914408080912983a0b",
"reference": "8349a2b0d11bd0311df9e8914408080912983a0b",
"url": "https://api.github.com/repos/symfony/Translation/zipball/c8dc34cc936152c609cdd722af317e4239d10dd6",
"reference": "c8dc34cc936152c609cdd722af317e4239d10dd6",
"shasum": ""
},
"require": {
......@@ -1756,20 +1918,20 @@
],
"description": "Symfony Translation Component",
"homepage": "https://symfony.com",
"time": "2015-06-11 17:26:34"
"time": "2015-07-09 16:07:40"
},
{
"name": "symfony/var-dumper",
"version": "v2.7.1",
"version": "v2.7.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-dumper.git",
"reference": "c509921f260353bf07b257f84017777c8b0aa4bc"
"reference": "e8903ebba5eb019f5886ffce739ea9e3b7519579"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/var-dumper/zipball/c509921f260353bf07b257f84017777c8b0aa4bc",
"reference": "c509921f260353bf07b257f84017777c8b0aa4bc",
"url": "https://api.github.com/repos/symfony/var-dumper/zipball/e8903ebba5eb019f5886ffce739ea9e3b7519579",
"reference": "e8903ebba5eb019f5886ffce739ea9e3b7519579",
"shasum": ""
},
"require": {
......@@ -1815,7 +1977,7 @@
"debug",
"dump"
],
"time": "2015-06-08 09:37:21"
"time": "2015-07-28 15:18:12"
},
{
"name": "vlucas/phpdotenv",
......@@ -2082,55 +2244,6 @@
"time": "2015-04-02 19:54:00"
},
{
"name": "phpdocumentor/reflection-docblock",
"version": "2.0.4",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
"reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/d68dbdc53dc358a816f00b300704702b2eaff7b8",
"reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"require-dev": {
"phpunit/phpunit": "~4.0"
},
"suggest": {
"dflydev/markdown": "~1.0",
"erusev/parsedown": "~1.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.0.x-dev"
}
},
"autoload": {
"psr-0": {
"phpDocumentor": [
"src/"
]
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Mike van Riel",
"email": "mike.vanriel@naenius.com"
}
],
"time": "2015-02-03 12:10:50"
},
{
"name": "phpspec/php-diff",
"version": "v1.0.2",
"source": {
......@@ -2244,16 +2357,16 @@
},
{
"name": "phpspec/prophecy",
"version": "v1.4.1",
"version": "v1.5.0",
"source": {
"type": "git",
"url": "https://github.com/phpspec/prophecy.git",
"reference": "3132b1f44c7bf2ec4c7eb2d3cb78fdeca760d373"
"reference": "4745ded9307786b730d7a60df5cb5a6c43cf95f7"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpspec/prophecy/zipball/3132b1f44c7bf2ec4c7eb2d3cb78fdeca760d373",
"reference": "3132b1f44c7bf2ec4c7eb2d3cb78fdeca760d373",
"url": "https://api.github.com/repos/phpspec/prophecy/zipball/4745ded9307786b730d7a60df5cb5a6c43cf95f7",
"reference": "4745ded9307786b730d7a60df5cb5a6c43cf95f7",
"shasum": ""
},
"require": {
......@@ -2300,20 +2413,20 @@
"spy",
"stub"
],
"time": "2015-04-27 22:15:08"
"time": "2015-08-13 10:07:40"
},
{
"name": "phpunit/php-code-coverage",
"version": "2.1.7",
"version": "2.2.2",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
"reference": "07e27765596d72c378a6103e80da5d84e802f1e4"
"reference": "2d7c03c0e4e080901b8f33b2897b0577be18a13c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/07e27765596d72c378a6103e80da5d84e802f1e4",
"reference": "07e27765596d72c378a6103e80da5d84e802f1e4",
"url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2d7c03c0e4e080901b8f33b2897b0577be18a13c",
"reference": "2d7c03c0e4e080901b8f33b2897b0577be18a13c",
"shasum": ""
},
"require": {
......@@ -2321,7 +2434,7 @@
"phpunit/php-file-iterator": "~1.3",
"phpunit/php-text-template": "~1.2",
"phpunit/php-token-stream": "~1.3",
"sebastian/environment": "~1.0",
"sebastian/environment": "^1.3.2",
"sebastian/version": "~1.0"
},
"require-dev": {
......@@ -2336,7 +2449,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.1.x-dev"
"dev-master": "2.2.x-dev"
}
},
"autoload": {
......@@ -2362,20 +2475,20 @@
"testing",
"xunit"
],
"time": "2015-06-30 06:52:35"
"time": "2015-08-04 03:42:39"
},
{
"name": "phpunit/php-file-iterator",
"version": "1.4.0",
"version": "1.4.1",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-file-iterator.git",
"reference": "a923bb15680d0089e2316f7a4af8f437046e96bb"
"reference": "6150bf2c35d3fc379e50c7602b75caceaa39dbf0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a923bb15680d0089e2316f7a4af8f437046e96bb",
"reference": "a923bb15680d0089e2316f7a4af8f437046e96bb",
"url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/6150bf2c35d3fc379e50c7602b75caceaa39dbf0",
"reference": "6150bf2c35d3fc379e50c7602b75caceaa39dbf0",
"shasum": ""
},
"require": {
......@@ -2409,7 +2522,7 @@
"filesystem",
"iterator"
],
"time": "2015-04-02 05:19:05"
"time": "2015-06-21 13:08:43"
},
{
"name": "phpunit/php-text-template",
......@@ -2454,16 +2567,16 @@
},
{
"name": "phpunit/php-timer",
"version": "1.0.6",
"version": "1.0.7",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-timer.git",
"reference": "83fe1bdc5d47658b727595c14da140da92b3d66d"
"reference": "3e82f4e9fc92665fafd9157568e4dcb01d014e5b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/83fe1bdc5d47658b727595c14da140da92b3d66d",
"reference": "83fe1bdc5d47658b727595c14da140da92b3d66d",
"url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3e82f4e9fc92665fafd9157568e4dcb01d014e5b",
"reference": "3e82f4e9fc92665fafd9157568e4dcb01d014e5b",
"shasum": ""
},
"require": {
......@@ -2491,20 +2604,20 @@
"keywords": [
"timer"
],
"time": "2015-06-13 07:35:30"
"time": "2015-06-21 08:01:12"
},
{
"name": "phpunit/php-token-stream",
"version": "1.4.3",
"version": "1.4.6",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-token-stream.git",
"reference": "7a9b0969488c3c54fd62b4d504b3ec758fd005d9"
"reference": "3ab72c62e550370a6cd5dc873e1a04ab57562f5b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/7a9b0969488c3c54fd62b4d504b3ec758fd005d9",
"reference": "7a9b0969488c3c54fd62b4d504b3ec758fd005d9",
"url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/3ab72c62e550370a6cd5dc873e1a04ab57562f5b",
"reference": "3ab72c62e550370a6cd5dc873e1a04ab57562f5b",
"shasum": ""
},
"require": {
......@@ -2540,20 +2653,20 @@
"keywords": [
"tokenizer"
],
"time": "2015-06-19 03:43:16"
"time": "2015-08-16 08:51:00"
},
{
"name": "phpunit/phpunit",
"version": "4.7.6",
"version": "4.8.4",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
"reference": "0ebabb4cda7d066be8391dfdbaf57fe70ac9a99b"
"reference": "55bf1d6092b0e13a1f26bd5eaffeef3d8ad85ea7"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/0ebabb4cda7d066be8391dfdbaf57fe70ac9a99b",
"reference": "0ebabb4cda7d066be8391dfdbaf57fe70ac9a99b",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/55bf1d6092b0e13a1f26bd5eaffeef3d8ad85ea7",
"reference": "55bf1d6092b0e13a1f26bd5eaffeef3d8ad85ea7",
"shasum": ""
},
"require": {
......@@ -2563,7 +2676,7 @@
"ext-reflection": "*",
"ext-spl": "*",
"php": ">=5.3.3",
"phpspec/prophecy": "~1.3,>=1.3.1",
"phpspec/prophecy": "^1.3.1",
"phpunit/php-code-coverage": "~2.1",
"phpunit/php-file-iterator": "~1.4",
"phpunit/php-text-template": "~1.2",
......@@ -2571,7 +2684,7 @@
"phpunit/phpunit-mock-objects": "~2.3",
"sebastian/comparator": "~1.1",
"sebastian/diff": "~1.2",
"sebastian/environment": "~1.2",
"sebastian/environment": "~1.3",
"sebastian/exporter": "~1.2",
"sebastian/global-state": "~1.0",
"sebastian/version": "~1.0",
......@@ -2586,7 +2699,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "4.7.x-dev"
"dev-master": "4.8.x-dev"
}
},
"autoload": {
......@@ -2612,26 +2725,27 @@
"testing",
"xunit"
],
"time": "2015-06-30 06:53:57"
"time": "2015-08-15 04:21:23"
},
{
"name": "phpunit/phpunit-mock-objects",
"version": "2.3.5",
"version": "2.3.6",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
"reference": "1c330b1b6e1ea8fd15f2fbea46770576e366855c"
"reference": "18dfbcb81d05e2296c0bcddd4db96cade75e6f42"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/1c330b1b6e1ea8fd15f2fbea46770576e366855c",
"reference": "1c330b1b6e1ea8fd15f2fbea46770576e366855c",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/18dfbcb81d05e2296c0bcddd4db96cade75e6f42",
"reference": "18dfbcb81d05e2296c0bcddd4db96cade75e6f42",
"shasum": ""
},
"require": {
"doctrine/instantiator": "~1.0,>=1.0.2",
"php": ">=5.3.3",
"phpunit/php-text-template": "~1.2"
"phpunit/php-text-template": "~1.2",
"sebastian/exporter": "~1.2"
},
"require-dev": {
"phpunit/phpunit": "~4.4"
......@@ -2667,20 +2781,20 @@
"mock",
"xunit"
],
"time": "2015-07-04 05:41:32"
"time": "2015-07-10 06:54:24"
},
{
"name": "sebastian/comparator",
"version": "1.1.1",
"version": "1.2.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/comparator.git",
"reference": "1dd8869519a225f7f2b9eb663e225298fade819e"
"reference": "937efb279bd37a375bcadf584dec0726f84dbf22"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/1dd8869519a225f7f2b9eb663e225298fade819e",
"reference": "1dd8869519a225f7f2b9eb663e225298fade819e",
"url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/937efb279bd37a375bcadf584dec0726f84dbf22",
"reference": "937efb279bd37a375bcadf584dec0726f84dbf22",
"shasum": ""
},
"require": {
......@@ -2694,7 +2808,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.1.x-dev"
"dev-master": "1.2.x-dev"
}
},
"autoload": {
......@@ -2731,7 +2845,7 @@
"compare",
"equality"
],
"time": "2015-01-29 16:28:08"
"time": "2015-07-26 15:48:44"
},
{
"name": "sebastian/diff",
......@@ -2787,16 +2901,16 @@
},
{
"name": "sebastian/environment",
"version": "1.2.2",
"version": "1.3.2",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/environment.git",
"reference": "5a8c7d31914337b69923db26c4221b81ff5a196e"
"reference": "6324c907ce7a52478eeeaede764f48733ef5ae44"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5a8c7d31914337b69923db26c4221b81ff5a196e",
"reference": "5a8c7d31914337b69923db26c4221b81ff5a196e",
"url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/6324c907ce7a52478eeeaede764f48733ef5ae44",
"reference": "6324c907ce7a52478eeeaede764f48733ef5ae44",
"shasum": ""
},
"require": {
......@@ -2833,20 +2947,20 @@
"environment",
"hhvm"
],
"time": "2015-01-01 10:01:08"
"time": "2015-08-03 06:14:51"
},
{
"name": "sebastian/exporter",
"version": "1.2.0",
"version": "1.2.1",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/exporter.git",
"reference": "84839970d05254c73cde183a721c7af13aede943"
"reference": "7ae5513327cb536431847bcc0c10edba2701064e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/84839970d05254c73cde183a721c7af13aede943",
"reference": "84839970d05254c73cde183a721c7af13aede943",
"url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/7ae5513327cb536431847bcc0c10edba2701064e",
"reference": "7ae5513327cb536431847bcc0c10edba2701064e",
"shasum": ""
},
"require": {
......@@ -2899,7 +3013,7 @@
"export",
"exporter"
],
"time": "2015-01-27 07:23:06"
"time": "2015-06-21 07:55:53"
},
{
"name": "sebastian/global-state",
......@@ -2954,16 +3068,16 @@
},
{
"name": "sebastian/recursion-context",
"version": "1.0.0",
"version": "1.0.1",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/recursion-context.git",
"reference": "3989662bbb30a29d20d9faa04a846af79b276252"
"reference": "994d4a811bafe801fb06dccbee797863ba2792ba"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/3989662bbb30a29d20d9faa04a846af79b276252",
"reference": "3989662bbb30a29d20d9faa04a846af79b276252",
"url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/994d4a811bafe801fb06dccbee797863ba2792ba",
"reference": "994d4a811bafe801fb06dccbee797863ba2792ba",
"shasum": ""
},
"require": {
......@@ -3003,7 +3117,7 @@
],
"description": "Provides functionality to recursively process PHP variables",
"homepage": "http://www.github.com/sebastianbergmann/recursion-context",
"time": "2015-01-24 09:48:32"
"time": "2015-06-21 08:04:50"
},
{
"name": "sebastian/version",
......@@ -3042,16 +3156,16 @@
},
{
"name": "symfony/yaml",
"version": "v2.7.1",
"version": "v2.7.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/Yaml.git",
"reference": "9808e75c609a14f6db02f70fccf4ca4aab53c160"
"reference": "71340e996171474a53f3d29111d046be4ad8a0ff"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/Yaml/zipball/9808e75c609a14f6db02f70fccf4ca4aab53c160",
"reference": "9808e75c609a14f6db02f70fccf4ca4aab53c160",
"url": "https://api.github.com/repos/symfony/Yaml/zipball/71340e996171474a53f3d29111d046be4ad8a0ff",
"reference": "71340e996171474a53f3d29111d046be4ad8a0ff",
"shasum": ""
},
"require": {
......@@ -3087,7 +3201,7 @@
],
"description": "Symfony Yaml Component",
"homepage": "https://symfony.com",
"time": "2015-06-10 15:30:22"
"time": "2015-07-28 14:07:07"
}
],
"aliases": [],
......
......@@ -141,6 +141,8 @@ return [
* Third Party
*/
Intervention\Image\ImageServiceProvider::class,
Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class,
/*
* Application Service Providers...
......@@ -148,6 +150,7 @@ return [
Oxbow\Providers\AppServiceProvider::class,
Oxbow\Providers\EventServiceProvider::class,
Oxbow\Providers\RouteServiceProvider::class,
Oxbow\Providers\CustomFacadeProvider::class,
],
......@@ -203,6 +206,12 @@ return [
'ImageTool' => Intervention\Image\Facades\Image::class,
/**
* Custom
*/
'Activity' => Oxbow\Services\Facades\Activity::class,
],
];
......
<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateActivitiesTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('activities', function (Blueprint $table) {
$table->increments('id');
$table->string('key');
$table->text('extra');
$table->integer('book_id')->indexed();
$table->integer('user_id');
$table->integer('entity_id');
$table->string('entity_type');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('activities');
}
}
......@@ -424,3 +424,9 @@ body.dragging, body.dragging * {
color: #EEE;
}
}
.activity-list-item {
padding: $-s 0;
color: #888;
border-bottom: 1px solid #EEE;
}
\ No newline at end of file
......
<?php
return [
/**
* Activity text strings.
* Is used for all the text within activity logs.
*/
// Pages
'page_create' => 'created page',
'page_update' => 'updated page',
'page_delete' => 'deleted page',
'page_restore' => 'restored page',
// Chapters
'chapter_create' => 'created chapter',
'chapter_update' => 'updated chapter',
'chapter_delete' => 'deleted chapter',
// Books
'book_create' => 'created book',
'book_update' => 'updated book',
'book_delete' => 'deleted book',
];
\ No newline at end of file
......@@ -15,6 +15,9 @@
</div>
</div>
<div class="row">
<div class="col-md-6 col-md-offset-1">
<div class="page-content">
<h1>{{$book->name}}</h1>
<p class="text-muted">{{$book->description}}</p>
......@@ -57,6 +60,17 @@
</div>
</div>
<div class="col-md-3 col-md-offset-1">
<div class="margin-top large"><br></div>
<h3>Recent Activity</h3>
@include('partials/activity-list', ['entity' => $book])
</div>
</div>
<script>
$(function() {
......
{{--Requires an Activity item with the name $activity passed in--}}
@if($activity->user) {{$activity->user->name}} @endif
{{ $activity->getText() }}
@if($activity->entity())
<a href="{{ $activity->entity()->getUrl() }}">{{ $activity->entity()->name }}</a>
@endif
@if($activity->extra) "{{$activity->extra}}" @endif
<br>
<span class="text-muted"><small><i class="zmdi zmdi-time"></i>{{ $activity->created_at->diffForHumans() }}</small></span>
\ No newline at end of file
{{--Requires an entity to be passed with the name $entity--}}
@if(count($entity->recentActivity()) > 0)
<div class="activity-list">
@foreach($entity->recentActivity() as $activity)
<div class="activity-list-item">
@include('partials/activity-item')
</div>
@endforeach
</div>
@endif
\ No newline at end of file