Comments (4)
going to keep this open until we do so ;)
from stream-laravel.
enriched activities don't have a method to serialise to json. If you are using eloquent, you should be able to get it done using the toJson
method on the model instances. (http://laravel.com/docs/5.0/eloquent#converting-to-arrays-or-json).
from stream-laravel.
For anyone interested, I was able to achieve this by replicating some of the existing functions.
This is for aggregated activities.
use GetStream\StreamLaravel\Enrich;
function collectReferences($activities)
{
$model_references = array();
$loadObjectsArray = ['actor', 'object', 'project'];
foreach ($activities as $key => $activity) {
foreach ($activity as $field=>$value) {
if ($value === null) {
continue;
}
if (in_array($field, $loadObjectsArray)) {
$reference = explode(':', $value);
$model_references[$reference[0]][$reference[1]] = 1;
}
}
}
return $model_references;
}
$loadObjectsArray = ['actor', 'object'];
// $user_id = '00000000-0000-6463-7952-633635765552';
$enricher = new Enrich();
$feed = FeedManager::getNotificationFeed($user_id);
$activities = $feed->getActivities(0,25)['results'];
$unseen = 0;
$unread = 0;
// get references
$references = [];
foreach ($activities as $aggregated) {
$references = array_replace_recursive($references, collectReferences($aggregated['activities']));
}
// get objects
$objects = array();
foreach ($references as $content_type => $content_ids) {
$content_type_model = new $content_type;
$with = array();
if (property_exists($content_type_model, 'activityLazyLoading')) {
$with = $content_type_model->activityLazyLoading;
}
$fetched = $enricher->fromDb($content_type_model, array_keys($content_ids), $with);
$objects[$content_type] = $fetched;
}
// inject objects
foreach ($activities as $key => $aggregated) {
// $activities[$key]['updated_at'] = new \Carbon\Carbon($activities[$key]['updated_at']);
foreach ($activities[$key]['activities'] as $keyA => $activity) {
$notEnrichedData = [];
foreach ($loadObjectsArray as $field) {
if (!isset($activity[$field]))
continue;
$value = $activity[$field];
$reference = explode(':', $value);
if (!array_key_exists($reference[0], $objects)) {
$notEnrichedData[$reference[0]] = $reference[1];
continue;
}
if (!array_key_exists($reference[1], $objects[$reference[0]])) {
$notEnrichedData[$reference[0]] = $reference[1];
continue;
}
$activities[$key]['activities'][$keyA][$field] = $objects[$reference[0]][$reference[1]];
// dd($activities[$key]['activities']);
}
}
if(!$aggregated['is_read']) {
$unread++;
}
if(!$aggregated['is_seen']) {
$unseen++;
}
}
return response()->json(compact('activities', 'unread', 'unseen'));
from stream-laravel.
this is awesome! it would be great to integrate this somehow in the main lib or at least add it to an example/ folder or similar
from stream-laravel.
Related Issues (20)
- ActivityTrait doesn't boot HOT 1
- Is it possible to get this package to work with Laravel 5.6 HOT 9
- SSL Error HOT 1
- Enrichment Object Empty HOT 2
- Any way to conditionally add models to feeds HOT 1
- Update main documentation
- Support for latest Stream SDK 2.9.0
- Where is the documation all the methods? HOT 1
- adding to diffrent feeds HOT 3
- The blade template in this repository causes logs to be shown to user HOT 5
- User reference HOT 4
- Call to undefined method GetStream\Stream\Feed::followFeed() HOT 2
- Namespaced configuration not working half of the time HOT 2
- Can we update to stream-php 4.0? HOT 2
- Always uses User Feed when using Model Binding
- On update observer HOT 2
- Package broken? HOT 4
- Show users own activity in timeline.
- Is this package maintained anymore? HOT 6
- Too many updates? HOT 6
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from stream-laravel.