This repository was archived by the owner on Jan 10, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 100
Expand file tree
/
Copy pathTranslationRepository.php
More file actions
101 lines (84 loc) · 2.25 KB
/
TranslationRepository.php
File metadata and controls
101 lines (84 loc) · 2.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
<?php
namespace Grafite\Cms\Repositories;
use Carbon\Carbon;
use Grafite\Cms\Models\Translation;
class TranslationRepository
{
public $model;
public function __construct(Translation $translation)
{
$this->model = $translation;
}
/**
* Create or Update an entry
*
* @param integer $entityId
* @param string $entityType
* @param string $lang
* @param array $payload
*
* @return boolean
*/
public function createOrUpdate($entityId, $entityType, $lang, $payload)
{
$translation = $this->model->firstOrCreate([
'entity_id' => $entityId,
'entity_type' => $entityType,
'language' => $lang,
]);
unset($payload['_method']);
unset($payload['_token']);
$translation->entity_data = json_encode($payload);
return $translation->save();
}
/**
* Find by URL
*
* @param string $url
* @param string $type
*
* @return Object|null
*/
public function findByUrl($url, $type)
{
$item = $this->model->where('entity_type', $type)->where('entity_data', 'LIKE', '%"url":"'.$url.'"%')->first();
if ($item) {
return $item->data;
}
return null;
}
/**
* Find an entity by its Id
*
* @param integer $entityId
* @param string $entityType
*
* @return Object|null
*/
public function findByEntityId($entityId, $entityType)
{
$item = $this->model->where('entity_type', $entityType)->where('entity_id', $entityId)->first();
if ($item) {
return $item->data;
}
return null;
}
/**
* Get entities by type and language
*
* @param string $lang
* @param string $type
*
* @return Illuminate\Support\Collection
*/
public function getEntitiesByTypeAndLang($lang, $type)
{
$entities = collect();
$collection = $this->model->where('entity_type', $type)->where('entity_data', 'LIKE', '%"lang":"'.$lang.'"%')->get();
foreach ($collection as $item) {
$instance = app($item->type)->attributes = $item->data;
$entities->push($instance);
}
return $entities;
}
}