FEATURE #1372: add feature for editing static pages.

User can edit static pages. The edit itself also stores history of changed columns.
This commit is contained in:
Michal Kváček
2016-01-28 15:51:41 +01:00
parent 1b2d7db8f3
commit 73ff4e9331
8 changed files with 341 additions and 5 deletions
+55
View File
@@ -2,6 +2,7 @@
namespace App\Models;
use App\Http\Requests\Request;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\DB;
@@ -55,6 +56,60 @@ class Content extends Model
return $query;
}
/**
* Updates current model with information about changed columns
*
* @param array $fields
* @param Request $request
*
* @return int number of changed columns
*/
public function updateWithHistory(array $fields, Request $request)
{
$editBatch = uniqid();
$changed = 0;
foreach ($fields as $fieldDB => $fieldRequest) {
// remove any whitespaces around real content
$request->$fieldRequest = trim($request->$fieldRequest);
if ($this->$fieldDB != $request->$fieldRequest) {
// setup history object
$history = [
'user_id' => \Auth::user()->id,
'content_id' => $this->id,
'edit_batch' => $editBatch,
'column' => $fieldRequest,
'old_value' => $this->$fieldDB,
'new_value' => $request->$fieldRequest
];
// save history
ContentHistory::create($history);
// save change into database
$this->$fieldDB = $request->$fieldRequest;
$changed++;
}
}
$this->save();
return $changed;
}
/**
* Mark relationship with its historical records
*
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/
public function history()
{
return $this->hasMany('App\Models\ContentHistory');
}
/**
* Mark relationship with users table
*