From 2101f7e75cabc449176bb046784564d29b0078a1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 30 Oct 2021 17:00:44 +0300 Subject: [PATCH 01/12] Bump jquery-ui from 1.12.1 to 1.13.0 in /Web/static/js (#256) Bumps [jquery-ui](https://github.com/jquery/jquery-ui) from 1.12.1 to 1.13.0. - [Release notes](https://github.com/jquery/jquery-ui/releases) - [Commits](https://github.com/jquery/jquery-ui/compare/1.12.1...1.13.0) --- updated-dependencies: - dependency-name: jquery-ui dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Web/static/js/yarn.lock | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/Web/static/js/yarn.lock b/Web/static/js/yarn.lock index 6d9ba842..7c7ef091 100644 --- a/Web/static/js/yarn.lock +++ b/Web/static/js/yarn.lock @@ -125,9 +125,16 @@ isomorphic-fetch@^2.1.1: whatwg-fetch ">=0.10.0" jquery-ui@^1.12.1: - version "1.12.1" - resolved "https://registry.yarnpkg.com/jquery-ui/-/jquery-ui-1.12.1.tgz#bcb4045c8dd0539c134bc1488cdd3e768a7a9e51" - integrity sha1-vLQEXI3QU5wTS8FIjN0+dop6nlE= + version "1.13.0" + resolved "https://registry.yarnpkg.com/jquery-ui/-/jquery-ui-1.13.0.tgz#ab5ac65f37ca093c51b3478c4097f55bbc008f36" + integrity sha512-Osf7ECXNTYHtKBkn9xzbIf9kifNrBhfywFEKxOeB/OVctVmLlouV9mfc2qXCp6uyO4Pn72PXKOnj09qXetopCw== + dependencies: + jquery ">=1.8.0 <4.0.0" + +"jquery@>=1.8.0 <4.0.0": + version "3.6.0" + resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.6.0.tgz#c72a09f15c1bdce142f49dbf1170bdf8adac2470" + integrity sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw== jquery@^2.1.0: version "2.2.4" From 03791f43666a77e4d09493d71761723248feea4b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 30 Oct 2021 14:16:19 +0000 Subject: [PATCH 02/12] Bump underscore from 1.10.2 to 1.13.1 in /Web/static/js (#258) --- Web/static/js/yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Web/static/js/yarn.lock b/Web/static/js/yarn.lock index 7c7ef091..78235893 100644 --- a/Web/static/js/yarn.lock +++ b/Web/static/js/yarn.lock @@ -287,9 +287,9 @@ umbrellajs@^3.1.0: integrity sha512-3qichMg1Q6EetLweBAT0L55O2W6CJe9qyiSt1RBnf+bcOqwJ4R7e2PDcoIUrCsg+uRo3DXOvurWdklBu0ia7fg== underscore@>=1.8.3, underscore@^1.9.1: - version "1.10.2" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.10.2.tgz#73d6aa3668f3188e4adb0f1943bd12cfd7efaaaf" - integrity sha512-N4P+Q/BuyuEKFJ43B9gYuOj4TQUHXX+j2FqguVOpjkssLUUrnJofCcBccJSCoeturDoZU6GorDTHSvUDlSQbTg== + version "1.13.1" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.1.tgz#0c1c6bd2df54b6b69f2314066d65b6cde6fcf9d1" + integrity sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g== whatwg-fetch@>=0.10.0: version "3.6.2" From ecc1fba94d50254005db13cdbae20e41ec9919fe Mon Sep 17 00:00:00 2001 From: Ilya Prokopenko Date: Sun, 31 Oct 2021 18:29:52 +0700 Subject: [PATCH 03/12] Global: Get rid of OpenVK 2 branding (#105) Closes #105 --- Web/Presenters/templates/@layout.xml | 2 +- install/automated/freebsd-12/install | 2 +- manifest.yml | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Web/Presenters/templates/@layout.xml b/Web/Presenters/templates/@layout.xml index c9faf2ab..7b6cdc61 100644 --- a/Web/Presenters/templates/@layout.xml +++ b/Web/Presenters/templates/@layout.xml @@ -251,7 +251,7 @@ {_footer_choose_language} {_footer_privacy} -

OpenVK {php echo OPENVK_VERSION} | PHP: {phpversion()} | DB: {$dbVersion}

+

OpenVK {php echo OPENVK_VERSION} | PHP: {phpversion()} | DB: {$dbVersion}

{php echo OPENVK_ROOT_CONF["openvk"]["appearance"]["motd"]}

diff --git a/install/automated/freebsd-12/install b/install/automated/freebsd-12/install index cf10e2c5..fbbcb0fa 100644 --- a/install/automated/freebsd-12/install +++ b/install/automated/freebsd-12/install @@ -4,7 +4,7 @@ # OpenVK AutoInstallation Script for FreeBSD 12 # /( )` # # ------------------------------------------------------------- # \ \___ / | # # # /- _ `-/ ' # -# This script installs OpenVK 2 on an empty FreeBSD 12 box. # (/\/ \ \ /\ # +# This script installs OpenVK on an empty FreeBSD 12 box. # (/\/ \ \ /\ # # Copyright (c) 2020 OpenVK contributors # / / | ` \ # # ------------------------------------------------------------- # O O ) / | # # # `-^--'`< ' # diff --git a/manifest.yml b/manifest.yml index 001d638c..dab36db3 100644 --- a/manifest.yml +++ b/manifest.yml @@ -1,6 +1,6 @@ -name: "OpenVK 2 Electric Boogalo" -description: "Yet another OpenVK social network" -author: "OpenVK contributors" -version: "2.0" +name: "OpenVK" +description: "Not-yet-federated open source social network inspired by VK" +author: "OpenVK Team" +version: "0.1.0-tp3" init: "bootstrap.php" \ No newline at end of file From 8e95a53e04a88eb4154d723f3867731863892569 Mon Sep 17 00:00:00 2001 From: Ilya Prokopenko Date: Sun, 31 Oct 2021 20:55:55 +0700 Subject: [PATCH 04/12] Global: New version of the full logo --- Web/Presenters/templates/About/Version.xml | 2 +- Web/static/img/logo_full.png | Bin 0 -> 53204 bytes Web/static/img/logo_full.svg | 52 +++++++++++++++++++++ Web/static/img/logo_watermark.gif | Bin 5186 -> 10490 bytes 4 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 Web/static/img/logo_full.png create mode 100644 Web/static/img/logo_full.svg diff --git a/Web/Presenters/templates/About/Version.xml b/Web/Presenters/templates/About/Version.xml index 44102ae4..f6c8edc5 100644 --- a/Web/Presenters/templates/About/Version.xml +++ b/Web/Presenters/templates/About/Version.xml @@ -97,7 +97,7 @@

OpenVK {=OPENVK_VERSION}

- + diff --git a/Web/static/img/logo_full.png b/Web/static/img/logo_full.png new file mode 100644 index 0000000000000000000000000000000000000000..8c73ed26fa37982a61df9576b49b82881bd7ffd7 GIT binary patch literal 53204 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 + + + + + + + + + diff --git a/Web/static/img/logo_watermark.gif b/Web/static/img/logo_watermark.gif index f2a93f92c875d255d25e478240d12f0b2e2beebb..9fc7f35a08984b4a795013d157d4730fa7f8dc46 100644 GIT binary patch literal 10490 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 Date: Mon, 1 Nov 2021 21:10:31 +0700 Subject: [PATCH 05/12] About: #ovkLogo - width -> height --- Web/Presenters/templates/About/Version.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Web/Presenters/templates/About/Version.xml b/Web/Presenters/templates/About/Version.xml index f6c8edc5..bd1e8f71 100644 --- a/Web/Presenters/templates/About/Version.xml +++ b/Web/Presenters/templates/About/Version.xml @@ -79,7 +79,7 @@ #ovkLogo { float: right; border: 0; - width: 30px; + height: 30px; padding-top: 6px; position: relative; } From 5b9c61b1c8f06c0c4bea43af427a530fabf0804f Mon Sep 17 00:00:00 2001 From: Dmitry <72506029+HSDChannel@users.noreply.github.com> Date: Mon, 1 Nov 2021 21:42:17 +0700 Subject: [PATCH 06/12] Adding a button "GET IT ON Codeberg" --- README.textile | 139 +++++++++++++++++++++++++------------------------ 1 file changed, 72 insertions(+), 67 deletions(-) diff --git a/README.textile b/README.textile index 8094d17f..40349daf 100644 --- a/README.textile +++ b/README.textile @@ -1,67 +1,72 @@ -h1. openvkOpenVK - -*OpenVK* is an attempt to create a simple CMS that -cosplays- imitates old VK. Code provided here is not stable yet. -VKontakte belongs to Pavel Durov and VK Group. -To be honest, we don't even know whether it even works. However, this version is maintained and we will be happy to accept your bugreports "in our bug-tracker":https://github.com/openvk/openvk/projects/1. You should also be able to submit them using "ticketing system":https://openvk.su/support?act=new (you will need an OVK account for this). - -h2. When's the release? - -Please use the master branch, as it has the most changes. - -Updating the source code is done with this command: @git pull --recurse-submodules@ - -h2. Instances - -* *"openvk.su":https://openvk.su/* -* "openvk.zavsc.pw":http://openvk.zavsc.pw/ - -h2. Can I create my own OpenVK instance? - -Yes! And you're very welcome to. -However, OVK makes use of Chandler Application Server. This software requires extensions, that may not be provided by your hosting provider (namely, sodium and yaml. this extensions are available on most of ISPManager hostings). -Simply put, we would recommend you to use latest CentOS (running on your own VDS/Dedicated) with latest PHP from EPEL. We used to have this configuration on our "main instance":https://openvk.su/ and thus will be able to provide quicker support for OVK running in this environment. -If you want, you can add your instance to the list above so that people can register there. - -h3. Installation procedure - -"samukhin":https://github.com/samukhin is working on a Docker container that contains a microblog version of OpenVK, see "#76":https://github.com/openvk/openvk/pull/76 for details. (Experimental) - -# Install PHP 7, web-server, Composer, Node.js, Yarn and "Chandler":https://github.com/openvk/chandler -PHP 8 has *not* yet been tested, so you should not expect it to work. -# Install "commitcaptcha":https://github.com/openvk/commitcaptcha and OpenVK as Chandler extensions like this: -@git clone --recursive https://github.com/openvk/openvk /path/to/chandler/extensions/available/openvk@ -@git clone https://github.com/openvk/commitcaptcha /path/to/chandler/extensions/available/commitcaptcha@ -# And enable them: -@ln -s /path/to/chandler/extensions/available/commitcaptcha /path/to/chandler/extensions/enabled/@ -@ln -s /path/to/chandler/extensions/available/openvk /path/to/chandler/extensions/enabled/@ -# Import @install/init-static-db.sql@ to *same database* you installed Chandler to -# Import @install/init-event-db.sql@ to *separate database* -# Copy @openvk-example.yml@ to @openvk.yml@ and change options -# Run @composer install@ in OpenVK directory -# Move to @Web/static/js@ and execute @yarn install@ -# Set @openvk@ as your root app in @chandler.yml@ - -*Note*: If OVK submodules were not downloaded beforehand (i.e. @--recursive@ was not used during cloning), this command *must be* executed in the @openvk@ folder: @git submodule update --init@ - -Once you are done, you can login as a system administrator on the network itself (no registration required): -* *Login*: admin@localhost.localdomain6 -* *Password*: admin -It is recommended to change the password before using the built-in account. - -h3. If my website uses OpenVK, should I publish it's sources? - -You are encouraged to do so. We don't enforce this though. You can keep your sources to yourself (unless you distribute your OpenVK distro to other people). -You also not required to publish source texts of your themepacks and plugins. - -h2. Where can I get assistance? - -You may reach out to us via: -* "Bug-tracker":https://github.com/openvk/openvk/projects/1 -* "Ticketing system":https://openvk.su/support?act=new -* Telegram chat: Go to "our channel":https://t.me/openvkch and open discussion in our channel menu. -* "Reddit":https://www.reddit.com/r/openvk/ -* "Discussions":https://github.com/openvk/openvk/discussions - -*Attention*: bug tracker and telegram chat are public places. And ticketing system is being served by volunteers. If you need to report something, that shouldn't be immediately disclosed to general public (for instance, vulnerability report), *please use contact us directly*: -* *Head of OpenVK Security Commitee*: stingray@jill.pl or "@id155":https://t.me/id155 -* *Backend developer*: "@saddyteirusu":https://t.me/saddyteirusu +h1. openvkOpenVK + +*OpenVK* is an attempt to create a simple CMS that -cosplays- imitates old VK. Code provided here is not stable yet. +VKontakte belongs to Pavel Durov and VK Group. +To be honest, we don't even know whether it even works. However, this version is maintained and we will be happy to accept your bugreports "in our bug-tracker":https://github.com/openvk/openvk/projects/1. You should also be able to submit them using "ticketing system":https://openvk.su/support?act=new (you will need an OVK account for this). + +h2. When's the release? + +Please use the master branch, as it has the most changes. + +Updating the source code is done with this command: @git pull --recurse-submodules@ + +h2. Instances + +* *"openvk.su":https://openvk.su/* +* "openvk.zavsc.pw":http://openvk.zavsc.pw/ + +h2. Can I create my own OpenVK instance? + +Yes! And you're very welcome to. +However, OVK makes use of Chandler Application Server. This software requires extensions, that may not be provided by your hosting provider (namely, sodium and yaml. this extensions are available on most of ISPManager hostings). +Simply put, we would recommend you to use latest CentOS (running on your own VDS/Dedicated) with latest PHP from EPEL. We used to have this configuration on our "main instance":https://openvk.su/ and thus will be able to provide quicker support for OVK running in this environment. +If you want, you can add your instance to the list above so that people can register there. + +h3. Installation procedure + +"samukhin":https://github.com/samukhin is working on a Docker container that contains a microblog version of OpenVK, see "#76":https://github.com/openvk/openvk/pull/76 for details. (Experimental) + +# Install PHP 7, web-server, Composer, Node.js, Yarn and "Chandler":https://github.com/openvk/chandler +PHP 8 has *not* yet been tested, so you should not expect it to work. +# Install "commitcaptcha":https://github.com/openvk/commitcaptcha and OpenVK as Chandler extensions like this: +@git clone --recursive https://github.com/openvk/openvk /path/to/chandler/extensions/available/openvk@ +@git clone https://github.com/openvk/commitcaptcha /path/to/chandler/extensions/available/commitcaptcha@ +# And enable them: +@ln -s /path/to/chandler/extensions/available/commitcaptcha /path/to/chandler/extensions/enabled/@ +@ln -s /path/to/chandler/extensions/available/openvk /path/to/chandler/extensions/enabled/@ +# Import @install/init-static-db.sql@ to *same database* you installed Chandler to +# Import @install/init-event-db.sql@ to *separate database* +# Copy @openvk-example.yml@ to @openvk.yml@ and change options +# Run @composer install@ in OpenVK directory +# Move to @Web/static/js@ and execute @yarn install@ +# Set @openvk@ as your root app in @chandler.yml@ + +*Note*: If OVK submodules were not downloaded beforehand (i.e. @--recursive@ was not used during cloning), this command *must be* executed in the @openvk@ folder: @git submodule update --init@ + +Once you are done, you can login as a system administrator on the network itself (no registration required): +* *Login*: admin@localhost.localdomain6 +* *Password*: admin +It is recommended to change the password before using the built-in account. + +h3. If my website uses OpenVK, should I publish it's sources? + +You are encouraged to do so. We don't enforce this though. You can keep your sources to yourself (unless you distribute your OpenVK distro to other people). +You also not required to publish source texts of your themepacks and plugins. + +h2. Where can I get assistance? + +You may reach out to us via: +* "Bug-tracker":https://github.com/openvk/openvk/projects/1 +* "Ticketing system":https://openvk.su/support?act=new +* Telegram chat: Go to "our channel":https://t.me/openvkch and open discussion in our channel menu. +* "Reddit":https://www.reddit.com/r/openvk/ +* "Discussions":https://github.com/openvk/openvk/discussions + +*Attention*: bug tracker and telegram chat are public places. And ticketing system is being served by volunteers. If you need to report something, that shouldn't be immediately disclosed to general public (for instance, vulnerability report), *please use contact us directly*: +* *Head of OpenVK Security Commitee*: stingray@jill.pl or "@id155":https://t.me/id155 +* *Backend developer*: "@saddyteirusu":https://t.me/saddyteirusu + +Codeberg repository clone: + + Get it on Codeberg + \ No newline at end of file From 9e86389b6277884d180a9e881aa0c1b4d5d9d731 Mon Sep 17 00:00:00 2001 From: Celestora Date: Tue, 2 Nov 2021 23:07:26 +0200 Subject: [PATCH 07/12] Add admin-placeable alerts --- Web/Models/Entities/User.php | 5 +++++ Web/Presenters/templates/User/View.xml | 2 +- Web/static/css/style.css | 10 ++++++++++ install/sqls/00003-user-alerts.sql | 1 + 4 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 install/sqls/00003-user-alerts.sql diff --git a/Web/Models/Entities/User.php b/Web/Models/Entities/User.php index 6913855d..9af9b93c 100644 --- a/Web/Models/Entities/User.php +++ b/Web/Models/Entities/User.php @@ -204,6 +204,11 @@ class User extends RowModel return $this->getRecord()->shortcode; } + function getAlert(): ?string + { + return $this->getRecord()->alert; + } + function getBanReason(): ?string { return $this->getRecord()->block_reason; diff --git a/Web/Presenters/templates/User/View.xml b/Web/Presenters/templates/User/View.xml index c2576ac6..ff54e49e 100644 --- a/Web/Presenters/templates/User/View.xml +++ b/Web/Presenters/templates/User/View.xml @@ -349,7 +349,7 @@
- +
{$alert}

{$user->getFullName()}

diff --git a/Web/static/css/style.css b/Web/static/css/style.css index c769cb28..affab2fc 100644 --- a/Web/static/css/style.css +++ b/Web/static/css/style.css @@ -1432,4 +1432,14 @@ body.scrolled .toTop:hover { #ovkDraw .literally .lc-picker .toolbar-button:hover:not(.disabled), #ovkDraw .literally .horz-toolbar .square-toolbar-button:hover:not(.disabled) { border-color: #cdcdcd; +} + +.user-alert { + margin-left: 9px; + margin-bottom: 8px; + padding: 4px; + border: 1px solid #c3a476; + font-weight: 900; + background-color: #f3ddbd; + color: #58462a; } \ No newline at end of file diff --git a/install/sqls/00003-user-alerts.sql b/install/sqls/00003-user-alerts.sql new file mode 100644 index 00000000..69244523 --- /dev/null +++ b/install/sqls/00003-user-alerts.sql @@ -0,0 +1 @@ +ALTER TABLE `profiles` ADD `alert` TEXT NULL DEFAULT NULL AFTER `since`; \ No newline at end of file From fd09cc61f8e906c192d7801b5a7ad6ba9b95df57 Mon Sep 17 00:00:00 2001 From: Ilya Prokopenko Date: Wed, 3 Nov 2021 19:02:59 +0700 Subject: [PATCH 08/12] User: Manage user (for admins) (#263) Closes #263 --- Web/Presenters/templates/User/View.xml | 3 +++ locales | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/Web/Presenters/templates/User/View.xml b/Web/Presenters/templates/User/View.xml index ff54e49e..cd355dbc 100644 --- a/Web/Presenters/templates/User/View.xml +++ b/Web/Presenters/templates/User/View.xml @@ -76,6 +76,9 @@ {/if} {if $thisUser->getChandlerUser()->can("access")->model("admin")->whichBelongsTo(NULL)} + + {_manage_user_action} + {_ban_user_action} diff --git a/locales b/locales index 0c50ecdd..12998df6 160000 --- a/locales +++ b/locales @@ -1 +1 @@ -Subproject commit 0c50ecdd77ac6643c7e5a29dcfff8ad84706ec3f +Subproject commit 12998df6df2a28489ba2e65a9f255af115eb83de From e5ea1cd3512670959311ea8c3f175b5894f5f6f8 Mon Sep 17 00:00:00 2001 From: Celestora Date: Wed, 3 Nov 2021 19:19:15 +0200 Subject: [PATCH 09/12] Make kromer storage type "real" to allow buying cents/pennies --- Web/Models/Entities/User.php | 4 ++-- install/sqls/00004-kromer-typechange.sql | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) create mode 100644 install/sqls/00004-kromer-typechange.sql diff --git a/Web/Models/Entities/User.php b/Web/Models/Entities/User.php index 9af9b93c..217a95ce 100644 --- a/Web/Models/Entities/User.php +++ b/Web/Models/Entities/User.php @@ -219,10 +219,10 @@ class User extends RowModel return $this->getRecord()->type; } - function getCoins(): int + function getCoins(): float { if(!OPENVK_ROOT_CONF["openvk"]["preferences"]["commerce"]) - return 0; + return 0.0; return $this->getRecord()->coins; } diff --git a/install/sqls/00004-kromer-typechange.sql b/install/sqls/00004-kromer-typechange.sql new file mode 100644 index 00000000..15449bc6 --- /dev/null +++ b/install/sqls/00004-kromer-typechange.sql @@ -0,0 +1 @@ +ALTER TABLE `profiles` CHANGE `coins` `coins` REAL(20) UNSIGNED NOT NULL DEFAULT '0'; \ No newline at end of file From c0c35c387202a00b3a1b85f77a6834da792cc218 Mon Sep 17 00:00:00 2001 From: Celestora Date: Thu, 4 Nov 2021 13:45:30 +0200 Subject: [PATCH 10/12] Fix #161: online status bug --- Web/Models/Entities/User.php | 5 +++++ Web/Presenters/UserPresenter.php | 6 +----- Web/Presenters/templates/User/View.xml | 6 +++--- .../templates/components/post/microblogpost.xml | 10 ++++------ Web/Presenters/templates/components/post/oldpost.xml | 10 ++++------ 5 files changed, 17 insertions(+), 20 deletions(-) diff --git a/Web/Models/Entities/User.php b/Web/Models/Entities/User.php index 217a95ce..68585168 100644 --- a/Web/Models/Entities/User.php +++ b/Web/Models/Entities/User.php @@ -568,6 +568,11 @@ class User extends RowModel return !is_null($this->getBanReason()); } + function isOnline(): bool + { + return time() - $this->getRecord()->online <= 300; + } + function prefersNotToSeeRating(): bool { return !((bool) $this->getRecord()->show_rating); diff --git a/Web/Presenters/UserPresenter.php b/Web/Presenters/UserPresenter.php index 01a2431d..8bbc3945 100644 --- a/Web/Presenters/UserPresenter.php +++ b/Web/Presenters/UserPresenter.php @@ -30,18 +30,14 @@ final class UserPresenter extends OpenVKPresenter if(parse_url($_SERVER["REQUEST_URI"], PHP_URL_PATH) !== "/" . $user->getShortCode()) $this->redirect("/" . $user->getShortCode(), static::REDIRECT_TEMPORARY_PRESISTENT); - $then = date_create("@" . $user->getOnline()->timestamp()); - $now = date_create(); - $diff = date_diff($now, $then); - $this->template->albums = (new Albums)->getUserAlbums($user); $this->template->albumsCount = (new Albums)->getUserAlbumsCount($user); $this->template->videos = (new Videos)->getByUser($user, 1, 2); $this->template->videosCount = (new Videos)->getUserVideosCount($user); $this->template->notes = (new Notes)->getUserNotes($user, 1, 4); $this->template->notesCount = (new Notes)->getUserNotesCount($user); + $this->template->user = $user; - $this->template->diff = $diff; } } diff --git a/Web/Presenters/templates/User/View.xml b/Web/Presenters/templates/User/View.xml index cd355dbc..0d18f59b 100644 --- a/Web/Presenters/templates/User/View.xml +++ b/Web/Presenters/templates/User/View.xml @@ -34,10 +34,10 @@
- {if $diff->i <= 5} - {_online} + {if $user->isOnline()} + {_online} {else} - {_was_online} {$user->getOnline()} + {_was_online} {$user->getOnline()} {/if}
diff --git a/Web/Presenters/templates/components/post/microblogpost.xml b/Web/Presenters/templates/components/post/microblogpost.xml index fa0284d8..1c893512 100644 --- a/Web/Presenters/templates/components/post/microblogpost.xml +++ b/Web/Presenters/templates/components/post/microblogpost.xml @@ -7,12 +7,10 @@ - {if !$post->isPostedOnBehalfOfGroup() && !$compact} - - {if $diff->i <= 5} - {_online} - {/if} - + {if !$post->isPostedOnBehalfOfGroup() && !$compact} + + {_online} + {/if} diff --git a/Web/Presenters/templates/components/post/oldpost.xml b/Web/Presenters/templates/components/post/oldpost.xml index 4af95710..36f01936 100644 --- a/Web/Presenters/templates/components/post/oldpost.xml +++ b/Web/Presenters/templates/components/post/oldpost.xml @@ -7,13 +7,11 @@ - {if !$post->isPostedOnBehalfOfGroup() && !$compact} - - {if $diff->i <= 5} - {_online} + {if !$post->isPostedOnBehalfOfGroup() && !$compact} + + {_online} + {/if} - - {/if}