michaelbelgium / flarum-profile-views Goto Github PK
View Code? Open in Web Editor NEWAn extension for the Flarum forum software which tracks and displays profile views.
License: MIT License
An extension for the Flarum forum software which tracks and displays profile views.
License: MIT License
Hello, I've just tried to configure this in Flarum 1.8.3
however it doesn't seem to be compatible with the current version.
# composer update michaelbelgium/flarum-profile-views
Loading composer repositories with package information
Package "michaelbelgium/flarum-profile-views" listed for update is not locked.
Updating dependencies
Nothing to modify in lock file
Installing dependencies from lock file (including require-dev)
Nothing to install, update or remove
Package laminas/laminas-zendframework-bridge is abandoned, you should avoid using it. No replacement was suggested.
Package swiftmailer/swiftmailer is abandoned, you should avoid using it. Use symfony/mailer instead.
no locale AddAssets.php
/**
@param ConfigureLocales $event
/
public function configLocales(ConfigureLocales $event)
{
$event->locales->addTranslations('en', DIR.'/../../locale/en.yml');
}
}
Enabling both profile-views and discussion-views extensions at the same time leads to errors.
The issue is that both extend.php
files (https://github.com/MichaelBelgium/flarum-profile-views/blob/master/extend.php and https://github.com/MichaelBelgium/flarum-discussion-views/blob/master/extend.php) register the same global const
variables RELATIONSHIP
and RELATIONSHIP_LATEST
in the same namespace.
I have not tried myself, but the problem was reported here https://discuss.flarum.org/d/7596-profile-views/50 and looking at the code it seems to be the logical explanation why a variable defined in profile-views ends up being used by discussion-views.
Relevant logs copied from the forum:
Both profile-views and discussion-views are installed at the latest version.
Illuminate\Database\Eloquent\RelationNotFoundException thrown with message "Call to undefined relationship [latestProfileViews] on model [Flarum\Discussion\Discussion]."
Stacktrace:
#61 Illuminate\Database\Eloquent\RelationNotFoundException in /var/www/flarum/vendor/illuminate/database/Eloquent/RelationNotFoundException.php:34
#60 Illuminate\Database\Eloquent\RelationNotFoundException:make in /var/www/flarum/vendor/illuminate/database/Eloquent/Builder.php:655
#59 Illuminate\Database\Eloquent\Builder:Illuminate\Database\Eloquent\{closure} in /var/www/flarum/vendor/illuminate/database/Eloquent/Relations/Relation.php:99
#58 Illuminate\Database\Eloquent\Relations\Relation:noConstraints in /var/www/flarum/vendor/illuminate/database/Eloquent/Builder.php:657
#57 Illuminate\Database\Eloquent\Builder:getRelation in /var/www/flarum/vendor/illuminate/database/Eloquent/Builder.php:625
#56 Illuminate\Database\Eloquent\Builder:eagerLoadRelation in /var/www/flarum/vendor/illuminate/database/Eloquent/Builder.php:605
#55 Illuminate\Database\Eloquent\Builder:eagerLoadRelations in /var/www/flarum/vendor/illuminate/database/Eloquent/Model.php:506
#54 Illuminate\Database\Eloquent\Model:load in /var/www/flarum/vendor/flarum/core/src/Api/Controller/ShowDiscussionController.php:102
#53 Flarum\Api\Controller\ShowDiscussionController:data in /var/www/flarum/vendor/flarum/core/src/Api/Controller/AbstractSerializeController.php:102
#52 Flarum\Api\Controller\AbstractSerializeController:handle in /var/www/flarum/vendor/flarum/core/src/Api/Client.php:72
#51 Flarum\Api\Client:send in /var/www/flarum/vendor/flarum/core/src/Forum/Content/Discussion.php:108
#50 Flarum\Forum\Content\Discussion:getApiDocument in /var/www/flarum/vendor/flarum/core/src/Forum/Content/Discussion.php:64
#49 Flarum\Forum\Content\Discussion:__invoke in /var/www/flarum/vendor/flarum/core/src/Frontend/Frontend.php:63
#48 Flarum\Frontend\Frontend:populate in /var/www/flarum/vendor/flarum/core/src/Frontend/Frontend.php:55
#47 Flarum\Frontend\Frontend:document in /var/www/flarum/vendor/flarum/core/src/Frontend/Controller.php:32
#46 Flarum\Frontend\Controller:handle in /var/www/flarum/vendor/flarum/core/src/Http/RouteHandlerFactory.php:38
#45 Flarum\Http\RouteHandlerFactory:Flarum\Http\{closure} in /var/www/flarum/vendor/flarum/core/src/Http/Middleware/ExecuteRoute.php:27
#44 Flarum\Http\Middleware\ExecuteRoute:process in /var/www/flarum/vendor/laminas/laminas-stratigility/src/Next.php:61
#43 Laminas\Stratigility\Next:handle in /var/www/flarum/vendor/fof/pwned-passwords/src/Middleware/CheckPasswordReset.php:64
#42 FoF\PwnedPasswords\Middleware\CheckPasswordReset:process in /var/www/flarum/vendor/laminas/laminas-stratigility/src/Next.php:61
#41 Laminas\Stratigility\Next:handle in /var/www/flarum/vendor/fof/pwned-passwords/src/Middleware/CheckLoginPassword.php:53
#40 FoF\PwnedPasswords\Middleware\CheckLoginPassword:process in /var/www/flarum/vendor/laminas/laminas-stratigility/src/Next.php:61
#39 Laminas\Stratigility\Next:handle in /var/www/flarum/vendor/fof/pwned-passwords/src/Middleware/PreventPwnedPassword.php:71
#38 FoF\PwnedPasswords\Middleware\PreventPwnedPassword:process in /var/www/flarum/vendor/laminas/laminas-stratigility/src/Next.php:61
#37 Laminas\Stratigility\Next:handle in /var/www/flarum/vendor/flarum/core/src/Http/Middleware/FlarumPromotionHeader.php:29
#36 Flarum\Http\Middleware\FlarumPromotionHeader:process in /var/www/flarum/vendor/laminas/laminas-stratigility/src/Next.php:61
#35 Laminas\Stratigility\Next:handle in /var/www/flarum/vendor/flarum/core/src/Http/Middleware/ShareErrorsFromSession.php:57
#34 Flarum\Http\Middleware\ShareErrorsFromSession:process in /var/www/flarum/vendor/laminas/laminas-stratigility/src/Next.php:61
#33 Laminas\Stratigility\Next:handle in /var/www/flarum/vendor/flarum/core/src/Http/Middleware/CheckCsrfToken.php:36
#32 Flarum\Http\Middleware\CheckCsrfToken:process in /var/www/flarum/vendor/laminas/laminas-stratigility/src/Next.php:61
#31 Laminas\Stratigility\Next:handle in /var/www/flarum/vendor/flarum/core/src/Http/Middleware/ResolveRoute.php:67
#30 Flarum\Http\Middleware\ResolveRoute:process in /var/www/flarum/vendor/laminas/laminas-stratigility/src/Next.php:61
#29 Laminas\Stratigility\Next:handle in /var/www/flarum/vendor/flarum/core/src/Http/Middleware/SetLocale.php:50
#28 Flarum\Http\Middleware\SetLocale:process in /var/www/flarum/vendor/laminas/laminas-stratigility/src/Next.php:61
#27 Laminas\Stratigility\Next:handle in /var/www/flarum/vendor/flarum/core/src/Http/Middleware/AuthenticateWithSession.php:32
#26 Flarum\Http\Middleware\AuthenticateWithSession:process in /var/www/flarum/vendor/laminas/laminas-stratigility/src/Next.php:61
#25 Laminas\Stratigility\Next:handle in /var/www/flarum/vendor/flarum/core/src/Http/Middleware/RememberFromCookie.php:52
#24 Flarum\Http\Middleware\RememberFromCookie:process in /var/www/flarum/vendor/laminas/laminas-stratigility/src/Next.php:61
#23 Laminas\Stratigility\Next:handle in /var/www/flarum/vendor/flarum/core/src/Http/Middleware/StartSession.php:61
#22 Flarum\Http\Middleware\StartSession:process in /var/www/flarum/vendor/laminas/laminas-stratigility/src/Next.php:61
#21 Laminas\Stratigility\Next:handle in /var/www/flarum/vendor/flarum/core/src/Http/Middleware/CollectGarbage.php:46
#20 Flarum\Http\Middleware\CollectGarbage:process in /var/www/flarum/vendor/laminas/laminas-stratigility/src/Next.php:61
#19 Laminas\Stratigility\Next:handle in /var/www/flarum/vendor/flarum/core/src/Http/Middleware/ParseJsonBody.php:28
#18 Flarum\Http\Middleware\ParseJsonBody:process in /var/www/flarum/vendor/laminas/laminas-stratigility/src/Next.php:61
#17 Laminas\Stratigility\Next:handle in /var/www/flarum/vendor/flarum/core/src/Http/Middleware/HandleErrors.php:57
#16 Flarum\Http\Middleware\HandleErrors:process in /var/www/flarum/vendor/laminas/laminas-stratigility/src/Next.php:61
#15 Laminas\Stratigility\Next:handle in /var/www/flarum/vendor/laminas/laminas-stratigility/src/MiddlewarePipe.php:84
#14 Laminas\Stratigility\MiddlewarePipe:process in /var/www/flarum/vendor/middlewares/request-handler/src/RequestHandler.php:84
#13 Middlewares\RequestHandler:process in /var/www/flarum/vendor/laminas/laminas-stratigility/src/Next.php:61
#12 Laminas\Stratigility\Next:handle in /var/www/flarum/vendor/middlewares/base-path-router/src/BasePathRouter.php:101
#11 Middlewares\BasePathRouter:process in /var/www/flarum/vendor/laminas/laminas-stratigility/src/Next.php:61
#10 Laminas\Stratigility\Next:handle in /var/www/flarum/vendor/laminas/laminas-stratigility/src/Middleware/OriginalMessages.php:42
#9 Laminas\Stratigility\Middleware\OriginalMessages:process in /var/www/flarum/vendor/laminas/laminas-stratigility/src/Next.php:61
#8 Laminas\Stratigility\Next:handle in /var/www/flarum/vendor/middlewares/base-path/src/BasePath.php:73
#7 Middlewares\BasePath:process in /var/www/flarum/vendor/laminas/laminas-stratigility/src/Next.php:61
#6 Laminas\Stratigility\Next:handle in /var/www/flarum/vendor/flarum/core/src/Http/Middleware/ProcessIp.php:24
#5 Flarum\Http\Middleware\ProcessIp:process in /var/www/flarum/vendor/laminas/laminas-stratigility/src/Next.php:61
#4 Laminas\Stratigility\Next:handle in /var/www/flarum/vendor/laminas/laminas-stratigility/src/MiddlewarePipe.php:84
#3 Laminas\Stratigility\MiddlewarePipe:process in /var/www/flarum/vendor/laminas/laminas-stratigility/src/MiddlewarePipe.php:73
#2 Laminas\Stratigility\MiddlewarePipe:handle in /var/www/flarum/vendor/laminas/laminas-httphandlerrunner/src/RequestHandlerRunner.php:96
#1 Laminas\HttpHandlerRunner\RequestHandlerRunner:run in /var/www/flarum/vendor/flarum/core/src/Http/Server.php:44
#0 Flarum\Http\Server:listen in /var/www/flarum/public/index.php:26
The error message is likely different depending on which of the two extensions is enabled first.
Possible solutions include declaring a namespace (I think the const
variables would be scoped to the namespace instead of the global namespace) or using unique names for the const
variables.
Add in the profile sidebar a section with last x users who viewed the profile.
Hi MichaelBelgium,
When I visit an user's profile, I get an error and no views are displayed.
Flarum core 0.1.0-beta.8.1
PHP version: 7.3.5-1+0~20190503093827.38+stretch~1.gbp60a41b
Loaded extensions: Core, date, libxml, openssl, pcre, zlib, filter, hash, pcntl, Reflection, SPL, sodium, session, standard, mysqlnd, PDO, xml, calendar, ctype, curl, dom, mbstring, fileinfo, ftp, gd, gettext, iconv, imagick, json, exif, mysqli, newrelic, pdo_mysql, pdo_sqlite, Phar, posix, readline, recode, shmop, SimpleXML, sockets, sqlite3, sysvmsg, sysvsem, sysvshm, tidy, tokenizer, wddx, xmlreader, xmlrpc, xmlwriter, xsl, zip, Zend OPcache
+---------------------------------+-----------------+--------+
| Flarum Extensions | | |
+---------------------------------+-----------------+--------+
| ID | Version | Commit |
+---------------------------------+-----------------+--------+
| flarum-statistics | v0.1.0-beta.8 | |
| flarum-sticky | v0.1.0-beta.8 | |
| flarum-subscriptions | v0.1.0-beta.8 | |
| flarum-suspend | v0.1.0-beta.8 | |
| flarum-tags | v0.1.0-beta.8.2 | |
| flarum-flags | v0.1.0-beta.8.1 | |
| flarum-emoji | v0.1.0-beta.8 | |
| flarum-bbcode | v0.1.0-beta.8 | |
| flarum-approval | v0.1.0-beta.8 | |
| flarum-mentions | v0.1.0-beta.8.1 | |
| flarum-markdown | v0.1.0-beta.8 | |
| flarum-lock | v0.1.0-beta.8 | |
| flarum-likes | v0.1.0-beta.8.1 | |
| flarum-pusher | v0.1.0-beta.8.1 | |
| milescellar-lang-french | v1.2.1 | |
| noriods-auto-more | 0.3.0 | |
| flagrow-direct-links | 0.2.0 | |
| flagrow-terms | 0.3.1 | |
| flagrow-users-list | 0.1.2 | |
| reflar-polls | 1.3.2 | |
| flagrow-upload | 0.7.1 | |
| flagrow-byobu | 0.2.2 | |
| fof-socialprofile | 0.1.1 | |
| fof-pages | 0.2.2 | |
| fof-formatting | 0.1.2 | |
| kvothe-pipetables | 1.0.9 | |
| fof-links | 0.1.1 | |
| kvothe-keyboard-shortcuts | v0.1.0 | |
| fof-default-group | 0.1.0 | |
| flagrow-analytics | 0.8.0 | |
| jordanjay29-summaries | 0.3.1 | |
| flagrow-user-directory | 0.2.1 | |
| amaurycarrade-syndication | v0.2.0 | |
| fof-merge-discussions | 0.2.1 | |
| flagrow-split | 0.3.2 | |
| reflar-reactions | 1.0.0-beta.5.2 | |
| fof-prevent-necrobumping | 0.1.3 | |
| michaelbelgium-discussion-views | v0.1.0-beta.8.2 | |
| rooaaar-lang-french-extended | v1.0.5 | |
| flagrow-mason | 0.3.1 | |
| fajuu-contactbutton | v2.0 | |
| fof-sentry | 0.1.1 | |
| michaelbelgium-profile-views | v0.1.0-beta-8-3 | |
| fof-recaptcha | 0.1.0 | |
| reflar-cookie-consent | 0.2.0 | |
| fof-secure-https | v0.1.0 | |
| fof-spamblock | 0.2.1 | |
| reflar-pwned-passwords | 0.2.0 | |
| flagrow-bazaar | 0.3.10 | |
| fof-transliterator | 0.1.1 | |
| reflar-stopforumspam | 0.1.5 | |
| flagrow-sitemap | 0.2.0 | |
+---------------------------------+-----------------+--------+
Logs from sentry.io
Class Michaelbelgium\Profileviews\Controllers\CreateUserProfileViewController does not exist
Exception(most recent call first)
ReflectionException: Class Michaelbelgium\Profileviews\Controllers\CreateUserProfileViewController does not exist
#46 vendor/illuminate/container/Container.php(752): __construct
#45 vendor/illuminate/container/Container.php(752): build
#44 vendor/illuminate/container/Container.php(631): resolve
#43 vendor/illuminate/container/Container.php(586): make
#42 vendor/flarum/core/src/Foundation/Application.php(491): make
#41 vendor/flarum/core/src/Http/RouteHandlerFactory.php(76): resolveController
#40 vendor/flarum/core/src/Http/RouteHandlerFactory.php(36): Flarum\Http\{closure}
#39 vendor/flarum/core/src/Http/Middleware/DispatchRoute.php(67): process
#38 vendor/zendframework/zend-stratigility/src/Next.php(52): handle
#37 vendor/reflar/stopforumspam/src/Middleware/RegisterMiddleware.php(75): process
#36 vendor/zendframework/zend-stratigility/src/Next.php(52): handle
#35 vendor/reflar/pwned-passwords/src/Middleware/CheckPassword.php(66): process
#34 vendor/zendframework/zend-stratigility/src/Next.php(52): handle
#33 vendor/fof/secure-https/src/Middlewares/ContentSecurityPolicyMiddleware.php(21): process
#32 vendor/zendframework/zend-stratigility/src/Next.php(52): handle
#31 vendor/fof/sentry/src/Middleware/HandleErrorsWithSentry.php(19): process
#30 vendor/zendframework/zend-stratigility/src/Next.php(52): handle
#29 vendor/flagrow/terms/src/Middlewares/RegisterMiddleware.php(59): process
#28 vendor/zendframework/zend-stratigility/src/Next.php(52): handle
#27 vendor/flarum/core/src/Http/Middleware/SetLocale.php(51): process
#26 vendor/zendframework/zend-stratigility/src/Next.php(52): handle
#25 vendor/flarum/core/src/Http/Middleware/AuthenticateWithHeader.php(55): process
#24 vendor/zendframework/zend-stratigility/src/Next.php(52): handle
#23 vendor/flarum/core/src/Http/Middleware/AuthenticateWithSession.php(34): process
#22 vendor/zendframework/zend-stratigility/src/Next.php(52): handle
#21 vendor/flarum/core/src/Http/Middleware/RememberFromCookie.php(52): process
#20 vendor/zendframework/zend-stratigility/src/Next.php(52): handle
#19 vendor/flarum/core/src/Http/Middleware/StartSession.php(62): process
#18 vendor/zendframework/zend-stratigility/src/Next.php(52): handle
#17 vendor/flarum/core/src/Api/Middleware/FakeHttpMethods.php(31): process
#16 vendor/zendframework/zend-stratigility/src/Next.php(52): handle
#15 vendor/flarum/core/src/Http/Middleware/ParseJsonBody.php(29): process
#14 vendor/zendframework/zend-stratigility/src/Next.php(52): handle
#13 vendor/flarum/core/src/Api/Middleware/HandleErrors.php(42): process
#12 vendor/zendframework/zend-stratigility/src/Next.php(52): handle
#11 vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(83): process
#10 vendor/middlewares/request-handler/src/RequestHandler.php(84): process
#9 vendor/zendframework/zend-stratigility/src/Next.php(52): handle
#8 vendor/middlewares/base-path-router/src/BasePathRouter.php(97): process
#7 vendor/zendframework/zend-stratigility/src/Next.php(52): handle
#6 vendor/middlewares/base-path/src/BasePath.php(53): process
#5 vendor/zendframework/zend-stratigility/src/Next.php(52): handle
#4 vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(83): process
#3 vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(72): handle
#2 vendor/zendframework/zend-httphandlerrunner/src/RequestHandlerRunner.php(95): run
#1 vendor/flarum/core/src/Http/Server.php(46): listen
#0 public/index.php(22): null
After the list shows five people, if there are new visitors, it will not show the new visit record.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.