Compare commits

...

165 Commits

Author SHA1 Message Date
Fatih Alp
3658be4a44
Update README.md 2025-06-30 14:59:21 +03:00
Fatih Alp
7c206dd392
Merge pull request #1370 from openclassify/fatihalp3
Fatihalp3
2024-06-29 23:12:48 +03:00
Fatih Alp
18193f00d7
Delete webpack.mix.js 2024-04-14 01:04:43 +03:00
Vedat AKDOĞAN
85339d41b0
Create .env.example 2023-12-01 16:01:20 +03:00
Muammer Topçu
38c3438e52
Merge pull request #1366 from openclassify/queued-reset-password-email-link-issue 2023-10-30 09:48:45 +03:00
MostafaMoradii
156e18b600
reset password email link issue.
when we are using a queue system to send Emails. we encountered a problem with the reset link in the email. To solve it, I changed the sending of this email from queue mode to instant mode.
2023-10-27 18:25:21 +03:00
Erhan
5eec7c127b
Merge pull request #1365 from openclassify/serdarekremcakir-patch-1
deleted private theme settings
2023-10-19 14:53:43 +03:00
Serdar Cakir
8130534405
deleted private theme settings 2023-10-19 14:48:22 +03:00
Fatih Alp
938855b302
Merge pull request #1361 from openclassify/erhanask-patch-1
Update CONTRIBUTING.md
2023-08-22 19:12:15 +03:00
Fatih Alp
ed42318732
Merge pull request #1363 from openclassify/emrullahardc-patch-1
Create LICENSE.md
2023-08-22 19:05:53 +03:00
emrullahardc
a3c98b1e34
Create LICENSE.md 2023-08-22 18:52:35 +03:00
Muammer Topçu
46cf908c19
Merge pull request #1362 from openclassify/email-fix
Update ResetYourPassword.php email link debugged
2023-08-21 12:13:26 +03:00
MostafaMoradii
5c89df907e
Update ResetYourPassword.php email link debugged 2023-08-17 17:47:09 +03:00
Erhan
0c23163a57
Update CONTRIBUTING.md 2023-08-10 10:18:08 +03:00
Fatih Alp
bac028312a Change end of lines 2023-08-05 16:33:38 +03:00
Fatih Alp
e8863e32cd
Merge pull request #1360 from openclassify/fatihalp-patch-3
Update CONTRIBUTING.md
2023-08-04 14:17:52 +03:00
Fatih Alp
361815107f
Update CONTRIBUTING.md 2023-08-04 14:17:33 +03:00
Fatih Alp
f8f932893c
Merge pull request #1359 from openclassify/fatihalp-patch-2
Update README.md
2023-08-02 13:06:24 +03:00
Fatih Alp
63c0387e15
Update README.md 2023-08-02 13:03:54 +03:00
Fatih Alp
050bca13e5 Introduce end-of-line normalization 2023-08-01 20:50:53 +03:00
Fatih Alp
8bf337bba1
Merge pull request #1358 from openclassify/fatihalp2
End of line GIT Settings for Docker to LF
2023-08-01 20:39:06 +03:00
fatihalp
dfc5f9c894 End of line - LF 2023-07-30 23:47:29 +03:00
fatihalp
77426dfbe8 Docker End of Line Fix 2023-07-30 23:04:36 +03:00
fatihalp
de2cd7ec5c Docker End of Line Fix 2023-07-30 23:02:01 +03:00
Fatih Alp
4e98de314a
Merge pull request #1357 from openclassify/fatihalp-patch-1
Update cli-commands.md
2023-07-25 16:13:14 +03:00
Fatih Alp
f6899a205a
Update cli-commands.md 2023-07-25 16:13:00 +03:00
Fatih Alp
965c588475
Merge pull request #1356 from essracetiin/patch-1
Update cli-commands.md
2023-07-25 15:44:42 +03:00
Esra Çetin
eefc91d9e5
Update cli-commands.md 2023-07-25 15:35:43 +03:00
Fatih Alp
254e2aaeed
Update cli-commands.md 2023-07-25 14:16:43 +03:00
Fatih Alp
56df6c3fb2
Update cli-commands.md 2023-07-25 14:15:31 +03:00
Fatih Alp
4216f0d9ad
Update cli-commands.md 2023-07-25 14:14:05 +03:00
emrullahardc
4272bfd569
Merge pull request #1350 from openclassify/fatihalp
New Docker Compose for Openclassify with PHP 8.2
2023-07-23 23:06:42 +03:00
fatihalp
54e841cbae Phpmyadmin update 2023-07-23 22:58:58 +03:00
fatihalp
b48a163a89 Phpmyadmin update 2023-07-23 22:50:40 +03:00
Fatih Alp
b6a1b17043
Merge pull request #1354 from emrullahardc/patch-1
Update docker-compose.yml
2023-07-23 22:16:36 +03:00
emrullahardc
dbc62a329e
Update docker-compose.yml 2023-07-23 22:15:30 +03:00
fatihalp
bfe604a880 Readme update 2023-07-23 22:15:25 +03:00
fatihalp
4d10ed80f0 Merge remote-tracking branch 'origin/fatihalp' into fatihalp 2023-07-23 21:55:30 +03:00
fatihalp
12aa5d84ab Readme update 2023-07-23 21:55:23 +03:00
Fatih Alp
844613772c
Merge branch 'master' into fatihalp 2023-07-23 21:35:34 +03:00
fatihalp
ca916e4455 Readme update 2023-07-23 21:33:38 +03:00
fatihalp
4390603cdd Fix for windows Docker 2023-07-23 16:52:33 +03:00
Fatih Alp
601311beef
Update install.sh 2023-07-08 23:09:02 +03:00
Fatih Alp
229350ad1d Make it work with github link 2023-07-05 22:00:48 +00:00
Fatih Alp
fb8c14f643
Update .env-sail 2023-07-05 15:30:03 +03:00
Fatih Alp
386e511a06
Merge pull request #1349 from emrullahardc/fatihalp
Update .env-sail
2023-07-05 12:54:00 +03:00
emrullahardc
121af05159
Update .env-sail
app_url added
2023-07-04 23:27:58 +03:00
Fatih Alp
a45f83ef23 localhost URL 2023-06-29 13:35:29 +00:00
Fatih Alp
8ae88e954a
Update devcontainer.json 2023-06-27 13:59:13 +03:00
Fatih Alp
201d39d645 Rename 2023-06-27 10:56:55 +00:00
Fatih Alp
8f735c046b
Update devcontainer.json 2023-06-27 13:40:14 +03:00
Fatih Alp
7eb4ef2932
Update devcontainer.json 2023-06-27 13:31:36 +03:00
Fatih Alp
2fc9d623f6 Dev container name 2023-06-27 10:27:40 +00:00
Fatih Alp
58a9093464 dev container 2023-06-27 09:20:54 +00:00
Fatih Alp
5d507e7be7 docker app url 2023-06-27 08:29:37 +00:00
Fatih Alp
124d138edf GD Fix 2023-06-27 08:24:37 +00:00
Fatih Alp
7e920366e4 Add GD 2023-06-26 17:25:00 +00:00
Fatih Alp
a6f6810dd1 Docker Isolated new 2023-06-26 19:10:01 +03:00
Fatih Alp
84dce14077
Merge pull request #1346 from emrullahardc/fatihalp
Fatihalp
2023-06-23 10:35:24 +03:00
Fatih Alp
b16e846d05
Merge pull request #1347 from openclassify/erhanask-patch-1
Update README.md
2023-06-23 10:34:49 +03:00
Erhan
2526947af3
Update README.md 2023-06-13 12:29:53 +03:00
emrullahardc
1f64785719
Update entrypoint.sh 2023-06-13 01:21:28 +03:00
emrullahardc
d95bd3bf4d
Update install.sh 2023-06-13 01:21:01 +03:00
emrullahardc
dcc6126e5a
Update docker-compose.yml 2023-06-13 01:20:33 +03:00
Fatih Alp
4f90ae94f2 docker 2023-05-24 10:14:43 +00:00
Fatih Alp
c6c9fa51a5 docker 2023-05-23 19:43:23 +00:00
Fatih Alp
714c444d8f Codespace Draft 2023-05-23 19:37:56 +00:00
fatihalp
6adf68474b Changes for Docker 2023-05-23 21:00:19 +03:00
Fatih Alp
4973bd08e8 Cleaned & removed files from root directory 2023-05-21 17:17:46 +03:00
Fatih Alp
5561be3ebf Cleaned & removed files from root directory 2023-05-21 17:10:04 +03:00
Fatih Alp
f0279bb883 Bash script install and uninstall for Docker 2023-05-21 17:05:59 +03:00
Fatih Alp
15aca28ce2 Pusher error fixed 2023-05-21 16:52:24 +03:00
Fatih Alp
bad7d2130a Docker - Smooth installation conditions 2023-05-07 19:26:00 +03:00
Fatih Alp
1d1d08ea07 Docker - Smooth installation conditions 2023-05-07 19:21:55 +03:00
fatihalp
bbf3877959 Docker with Nginx and OPCache (Draft) 2023-04-30 20:40:35 +03:00
Muammer Topçu
8c80ab3134
Merge pull request #1345 from serdarekremcakir/srdr-route
advs module added to deferred for dynamic route
2023-04-28 11:43:34 +03:00
Serdar Cakir
8ca36c7e41 advs module added to deferred for dynamic route 2023-04-28 09:42:15 +03:00
Ozcan Durak
0d88dea4b7
Merge pull request #1342 from openclassify/revert-1341-srdr-curr
Revert "added translator for currency"
2023-04-20 13:24:03 +03:00
Ozcan Durak
d953c36486
Revert "added translator for currency" 2023-04-20 13:23:37 +03:00
Vedat AKDOĞAN
2cb95e19ab
Merge pull request #1341 from serdarekremcakir/srdr-curr
added translator for currency
2023-04-20 12:48:38 +03:00
Serdar Cakir
19cdf2620e comment line 2023-04-18 15:22:21 +03:00
Serdar Cakir
a81b488361 added translator for currency 2023-04-18 15:21:21 +03:00
Fatih Alp
e3180e799e
Merge pull request #1337 from natehouk/master
Docker image doesn't build under Ubuntu 21.10
2023-01-21 20:05:33 +03:00
Nate Houk
d6a3ee73f5
Create .env 2022-12-31 17:21:31 +01:00
Nate Houk
4a4783ab53
Update Dockerfile
Docker image doesn't build with Ubuntu 21.10. Downgrading to Ubuntu 20.04 fixes the issue.
2022-12-31 17:14:41 +01:00
Muammer Top
4f0fed8541
Merge pull request #1336 from openclassify/spektra2147-ffixe-1
added data
2022-12-14 14:47:11 +03:00
Vedat AKDOĞAN
d1fca33821
added data 2022-12-14 14:43:51 +03:00
Muammer Top
477708a8e2
Merge pull request #1335 from openclassify/vedatakd
fix notifications
2022-11-30 16:19:36 +03:00
spektra2147
e38aa039d5 fix notifications 2022-11-30 16:15:06 +03:00
Muammer Top
a22a3750a6
Merge pull request #1334 from openclassify/vedatakdogan-2
Update README.md
2022-11-29 12:26:00 +03:00
Vedat AKDOĞAN
4a7d2f64e0
Update README.md 2022-11-29 12:24:47 +03:00
Erhan
7ee8924714
Merge pull request #1333 from openclassify/vedatakdogan-1
Update README.md
2022-11-29 12:14:14 +03:00
Vedat AKDOĞAN
16304e8fb4
Update README.md 2022-11-29 12:10:38 +03:00
profstyle1
642238f550
Merge pull request #1332 from openclassify/vedatakd
update logo
2022-11-29 12:03:48 +03:00
spektra2147
9adeda9a44 update logo 2022-11-29 12:02:10 +03:00
Muammer Top
0a92e82d5b
Merge pull request #1331 from openclassify/fatihalp-patch-1
Update README.md
2022-11-22 11:23:05 +03:00
Fatih Alp
0b6152ad95
Update README.md 2022-10-28 12:28:05 +03:00
Fatih Alp
6e227536c0
Merge pull request #1330 from openclassify/spektra2147-readme-1
Update Readme
2022-10-06 15:07:12 +03:00
Vedat AKDOĞAN
eadb71c99d
Update Readme 2022-10-06 14:51:58 +03:00
Muammer Top
6c499c4cad
Merge pull request #1327 from openclassify/vedatakdogan
added cli commands for Readme
2022-09-28 09:27:09 +03:00
spektra2147
67be2ee781 update queue 2022-09-27 18:16:05 +03:00
spektra2147
6223429b01 fix line 2022-09-27 16:55:56 +03:00
spektra2147
f29cf64277 added cli commands 2022-09-27 16:53:37 +03:00
Muammer Top
1d74f08e4c
Merge pull request #1325 from openclassify/sezer
updated composer
2022-09-07 11:41:31 +03:00
Sezer Bozbıyık
7e32b4f374 updated composer 2022-09-07 11:32:31 +03:00
Fatih Alp
07e1f6a4fe
Merge pull request #1324 from openclassify/vedatakdgn
broadcasting update
2022-08-29 18:49:01 +03:00
spektra2147
78a056853f broadcasting update 2022-08-29 18:39:03 +03:00
Vedat AKDOĞAN
b3acca94e3
Merge pull request #1323 from openclassify/erhanask
Made DB_COLLATION value changable from .env file .
2022-08-29 11:46:23 +03:00
erhanask
b9c175c464 Made DB_COLLATION value changable from .env file . 2022-08-29 11:28:36 +03:00
Fatih Alp
34e41c7334
Merge pull request #1321 from openclassify/vedatakd
update merge plugin
2022-08-17 10:04:19 +03:00
spektra2147
950d92e40a update merge plugin 2022-07-25 11:43:38 +03:00
Fatih Alp
721da8e1be
Merge pull request #1320 from openclassify/vedatakdogan
add cors plugin
2022-06-25 23:29:13 +03:00
vedatakd
6ae6e9f958 add cors plugin 2022-06-24 17:30:28 +03:00
Vedat AKDOĞAN
03f10d384f
Merge pull request #1316 from openclassify/docker
Docker Compose with php7.4
2022-06-21 18:07:42 +03:00
Erhan
5ce8275bf5
Merge pull request #1318 from openclassify/5881
#5881 asfaltdünyası currency icon change
2022-06-20 15:11:47 +03:00
muammertop
c401f2a5c5 #5881 asfaltdünyası currency icon change 2022-06-17 10:45:26 +03:00
Erhan
6494508e35
Merge pull request #1317 from openclassify/muammer
Revert "fix cors"
2022-06-16 16:30:55 +03:00
muammertop
42fede30db Revert "fix cors"
This reverts commit 64e3ab9ddd.
2022-06-16 16:24:21 +03:00
Mostafa Moradi
8689f3de98 docker 2022-06-15 11:04:25 +03:00
Mostafa Moradi
fe14276d79 docker 2022-06-15 10:57:54 +03:00
Mostafa Moradi
416eb290f5 docker 2022-06-15 10:57:22 +03:00
Mostafa Moradi
c806568ef7 docker 2022-06-09 18:32:00 +03:00
Mostafa Moradi
ea81195a6e docker 2022-06-09 18:30:03 +03:00
Mostafa Moradi
1b84c227c3 docker 2022-06-09 16:03:40 +03:00
MostafaMoradii
2cf4f7c7b0
Merge branch 'master' into docker 2022-06-09 17:02:24 +04:30
Mostafa Moradi
2ba784cbd5 docker 2022-06-09 15:25:27 +03:00
Mostafa Moradi
211c70d654 docker 2022-06-09 15:24:20 +03:00
Moradii
962c57ec2c docker 2022-06-09 13:03:29 +03:00
Muammer Top
7153c548b2
Merge pull request #1315 from openclassify/vedatakdgn
fix cors
2022-06-09 09:46:54 +03:00
Moradii
ecae9feecc docker php 7.4 2022-06-09 09:42:53 +03:00
Moradii
1c0d0ed824 docker php 7.4 2022-06-09 09:42:00 +03:00
Moradii
c41545c72b docker php 7.4 2022-06-09 09:40:58 +03:00
Moradii
e46fd7d972 docker php 7.4 2022-06-09 09:39:59 +03:00
spektra2147
64e3ab9ddd fix cors 2022-06-08 18:44:14 +03:00
Fatih Alp
1636208f45
Merge pull request #1314 from openclassify/docker
Docker
2022-06-08 10:38:41 +03:00
Moradii
ac732c261c Merge branch 'master' of github.com:openclassify/openclassify 2022-06-08 09:28:51 +03:00
Moradii
197b04e373 openclassify docker 2022-06-08 09:28:04 +03:00
Fatih Alp
d9d45edb35
Merge pull request #1313 from openclassify/docker
openclassify docker
2022-06-07 19:29:07 +03:00
Moradii
e15a93e556 openclassify docker 2022-06-07 18:54:41 +03:00
Moradii
dd9f26697f openclassify docker 2022-06-07 18:48:56 +03:00
Moradii
64a12c49cd openclassify docker 2022-06-07 16:17:55 +03:00
profstyle1
916e749156
Merge pull request #1312 from openclassify/vedatakdogan
move middleware
2022-06-03 10:14:31 +03:00
spektra2147
2a88942390 move middleware 2022-06-03 09:42:37 +03:00
Fatih Alp
4f6977f397
Merge pull request #1310 from openclassify/spektra2147-update-1-1
Move Provider
2022-06-02 16:26:24 +03:00
Fatih Alp
cedbe5594e
Merge pull request #1311 from openclassify/spektra2147-update-2
Update DatabaseSeeder.php
2022-06-02 16:19:14 +03:00
Vedat AKDOĞAN
e535d9bc3a
Update DatabaseSeeder.php 2022-06-02 15:24:42 +03:00
Vedat AKDOĞAN
bf7ac475e8
Move Provider 2022-06-02 15:18:07 +03:00
Muammer Top
f207b352e8
Merge pull request #1309 from openclassify/mtc
vue files versioned
2022-06-02 12:40:55 +03:00
metehancelik
ea5af5b6f8 vue files versioned 2022-06-02 12:36:03 +03:00
Fatih Alp
ce080263a5
Merge pull request #1308 from openclassify/widget_seeder
rollback to xml feeder default seeder
2022-06-01 16:14:08 +03:00
Mostafa Moradi
619eb23016 rollback to xml seeder default seeder 2022-05-26 15:59:42 +03:00
Ozcan Durak
6860fdfe06
Merge pull request #1307 from openclassify/vedatakdgn
update merge plugin
2022-05-25 17:39:37 +03:00
spektra2147
2797fd9355 update merge plugin 2022-05-25 16:32:29 +03:00
Vedat AKDOĞAN
31e55e0ff9
Merge pull request #1306 from openclassify/metehancelik
multilingual added to xml_feeder-extension seeder
2022-05-25 09:36:15 +03:00
metehancelik
f5655fbd4a multilingual added to xml_feeder-extension seeder 2022-05-24 16:37:22 +03:00
Fatih Alp
e17027a1aa
Merge pull request #1305 from openclassify/spektra2147-update-1
update contact plugin
2022-05-17 10:32:56 +03:00
Vedat AKDOĞAN
2c1e380022
update contact plugin 2022-05-16 16:43:23 +03:00
Fatih Alp
d3ff814222
Merge pull request #1304 from openclassify/vue-compile
vue file compile in addons folder
2022-04-15 16:03:50 +03:00
Muammer Top
11cb190230 vue file compile in addons folder 2022-04-15 16:01:26 +03:00
Fatih Alp
58b8736008
Merge pull request #1303 from openclassify/mostafamoradi
Database seeder
2022-04-08 16:13:30 +03:00
Mostafa Moradi
d6ca910ef8 Database seeder 2022-04-08 16:10:55 +03:00
Mostafa Moradi
eb787a6bbf Database seeder 2022-04-08 15:38:48 +03:00
Mostafa Moradi
a1809f61c3 Database seeder 2022-04-08 15:29:11 +03:00
Fatih Alp
8a593834ec
Merge pull request #1300 from openclassify/fatih
Stop ignoring the addons folder
2022-04-07 09:54:29 +03:00
fatihalp
94cd57193c Stop ignoring the addons folder 2022-04-03 17:18:05 +03:00
53 changed files with 1511 additions and 595 deletions

View File

@ -0,0 +1,6 @@
{
"name": "Openclassify",
// Script to run to bootstrap the app when the space is created
"postCreateCommand": "bash install.sh",
"outputCapture": "std"
}

23
.env-sail Normal file
View File

@ -0,0 +1,23 @@
APP_NAME=oc
APP_ENV=production
INSTALLED="false"
APP_URL_TYPE="HTTP_X_FORWARDED_HOST"
APP_KEY=DYKEBxfEHK1PP4mUbP3gWPtsPZgXh0qX
APP_DEBUG=true
DEBUG_BAR=true
DB_CONNECTION=mysql
#DB_HOST=mysql
DB_HOST=host.docker.internal
DB_DATABASE=oc
DB_USERNAME=oc
DB_PASSWORD=oc
APPLICATION_NAME=Default
APPLICATION_REFERENCE=default
ADMIN_USERNAME=admin
ADMIN_EMAIL=admin@example.com
ADMIN_PASSWORD=admin
APP_LOCALE=en
APP_TIMEZONE=UTC
REDIS_CLIENT=phpredis
REDIS_HOST=redis
REDIS_PORT=6379

16
.env.example Normal file
View File

@ -0,0 +1,16 @@
APP_ENV=local
INSTALLED=false
APP_KEY=spNWIbUUSkRICcUwBGOaDzgwWsLjqUVq
DB_CONNECTION=mysql
DB_HOST=localhost
DB_DATABASE=forge
DB_USERNAME=forge
DB_PASSWORD=forge
APPLICATION_NAME=Default
APPLICATION_REFERENCE=default
ADMIN_USERNAME=$adminUserName
ADMIN_EMAIL=admin@example.com
ADMIN_PASSWORD=admin123
LOCALE=en
AUTO_TOKEN=spNWITUUSkRICcUwBGOaDzGwWsLqUVqX
APP_TIMEZONE=UTC

33
.gitignore vendored
View File

@ -1 +1,32 @@
.idea
.idea
.env
.coverage
/bin
/core
/build
/vendor
/coverage
/node_modules
/bower_components
composer.lock
package-lock.json
* text=auto
*.txt text eol=lf
*.xml text eol=lf
*.json text eol=lf
*.properties text eol=lf
*.conf text eol=lf
*.sh text eol=lf
Dockerfile text eol=lf
*.awk text eol=lf
*.sed text eol=lf
*.sh text eol=lf
*.png binary
*.jpg binary
*.p12 binary

View File

@ -1,38 +0,0 @@
# Contribution Guide
Thank you for considering contributing! Please review the entire guide before sending a pull request.
## Bug Reports
Wes strongly encourages pull requests, not just bug reports.
"Bug Report" should contain a title and a clear detailed description of the issue. You should also include as much relevant information as possible and a code sample that demonstrates the issue. The goal of a bug report is to make it easy for yourself - and others - to replicate the bug and develop a fix.
Remember, bug reports are created in the hope that others with the same problem will be able to collaborate with you on solving it. Do not expect that the bug report will automatically see any activity or that others will jump to fix it. Creating a bug report serves to help yourself and others start on the path of fixing the problem.
## Which Repository?
Please send all issues to the base `openclassify/openclassify` repository in order to keep them consolidated.
Send all pull requests to the respective repository in which they apply to and the branch as described below.
## Which Branch?
All bug fixes should be sent to the latest stable branch. Bug fixes should never be sent to the master branch unless they fix features that exist only in the upcoming release.
Minor features that are fully backwards compatible with the current release may be sent to the latest stable branch.
Major new features should always be sent to the master branch, which contains the upcoming release.
## Security Vulnerabilities
If you discover a security vulnerability, please send an e-mail to info@openclassify.com. All security vulnerabilities will be promptly addressed.
## Coding Style
Project follows the PSR-4, PSR-2 and PSR-1 coding standards. In addition to these standards, the following coding standards should be followed:
The class namespace declaration must be on the same line as <?php.

View File

@ -1,62 +0,0 @@
@servers(['web' => 'yoursite@50.59.80.150 -p 22400'])
@task('update', ['on' => 'web'])
cd /home/yoursite
php /usr/bin/composer update -o --no-dev
php artisan migrate --all-addons --force
php artisan migrate --force
@endtask
@task('pull', ['on' => 'web'])
cd /home/yoursite
git pull
@endtask
@task('migrate', ['on' => 'web'])
cd /home/yoursite
php artisan migrate --all-addons --force
php artisan migrate --force
@endtask
@task('compile', ['on' => 'web'])
cd /home/yoursite
php artisan streams:compile
@endtask
@task('clear', ['on' => 'web'])
cd /home/yoursite
php artisan httpcache:clear
php artisan assets:clear
php artisan cache:clear
php artisan route:clear
php artisan view:clear
php artisan twig:clear
@endtask
@task('install', ['on' => 'web'])
cd /home/yoursite
php artisan addon:install {{$addon}}
@endtask
@task('uninstall', ['on' => 'web'])
cd /home/yoursite
php artisan addon:uninstall {{$addon}}
@endtask
@task('reinstall', ['on' => 'web'])
cd /home/yoursite
php artisan addon:reinstall {{$addon}}
@endtask
@macro('push')
pull
clear
migrate
@endmacro
@macro('deploy')
push
update
compile
clear
@endmacro

View File

@ -1,69 +0,0 @@
# Installation
## Server Requirements
- PHP >= 7.2
- XML PHP Extension
- PDO PHP Extension
- cURL PHP Extension
- JSON PHP Extension
- Ctype PHP Extension
- BCMath PHP Extension
- SQLite PHP Extension
- OpenSSL PHP Extension
- Mbstring PHP Extension
- Fileinfo PHP Extension
- Tokenizer PHP Extension
- GD Library (>=2.0) **OR** Imagick PHP extension (>=6.5.7)
### Via Composer
> Do not create an `.env` file just yet - Installer will generate one for you.{.important}
```bash
composer create-project openclassify/openclassify
```
### Host Configuration
When you setup your web host be sure to point the web root to `public` directory. Just as you would a normal Laravel installation.
#### Alternate Directories for cPanel or Virtualmin
In some environments like cPanel or Virtualmin it may be difficult to use the `public` directory as the web root. In these cases we suggest symlinking the `public` directory to `public_html`:
```bash
ln -s public public_html
```
You may also simply rename the `public` directory to `public_html`. Path hints will automatically use the correct path.
### Directory Permissions
After installing, you may need to configure some permissions in order to proceed. Directories within the `storage`, `public/app`, and the `bootstrap/cache` directories should be writable by your web server. If you are using the [Homestead](http://laravel.com/docs/homestead) virtual machine, these permissions should already be set.
## Installing
### Running the Installation Wizard
After downloading and it's dependencies with:
```bash
composer install
```
you will need to install the software in order to get started.
By this time you should be able to visit your site's URL which will
redirect you to the installer: `http://yoursite.com/installer`
### Using the CLI Installer
```bash
php artisan install
```
You will be prompted for details in order to proceed with the installation process.

View File

@ -1 +0,0 @@
web: INSTALLED=false php artisan streams:compile && INSTALLED=true bin/heroku-php-apache2 public/

161
README.md
View File

@ -1,33 +1,64 @@
# OpenClassify - Laravel 8 Classified Script Platform - Weekly Updates
<br>
<p align="center">
<a href="https://openclassify.com"><img src="https://raw.githubusercontent.com/openclassify/openclassify/master/public/openclassify-logo.png" width="250" alt="Openclassify Logo"></a>
OpenClassify is modular and most advanced open source classified platform build with Laravel 8 & PHP 7.3+ Supported. Included Pyrocms 3.9
OpenClassify is modular and most advanced open source classified platform build with Laravel included Pyrocms.
</p>
<br>
<p align="center">
<a href="https://packagist.org/packages/openclassify/openclassify" target="_blank">
<img class="badge" src="http://poser.pugx.org/openclassify/openclassify/v">
</a>
<a href="https://packagist.org/packages/openclassify/openclassify" target="_blank"><img class="badge" src="http://poser.pugx.org/openclassify/openclassify/downloads"></a>
<a href="https://packagist.org/packages/openclassify/openclassify" target="_blank"><img class="badge" src="http://poser.pugx.org/openclassify/openclassify/license"></a>
[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/openclassify/openclassify/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/openclassify/openclassify/?branch=master)
[![Build Status](https://scrutinizer-ci.com/g/openclassify/openclassify/badges/build.png?b=master)](https://scrutinizer-ci.com/g/openclassify/openclassify/build-status/master)
[![Code Intelligence Status](https://scrutinizer-ci.com/g/openclassify/openclassify/badges/code-intelligence.svg?b=master)](https://scrutinizer-ci.com/code-intelligence)
<div align="center">
<a href="https://openclassify.com">
<img src="https://repository-images.githubusercontent.com/193061961/48452600-72c0-11ea-88f5-77566c3527eb">
</a>
</div>
</p>
[!['Preview Homapage Classified Script'](https://openclassify.com/files/images/open.jpg)](https://openclassify.com/)
### Install with Docker
## Translation
We suggest to use Docker. Nginx, Mysql and PHP 8.2 pre-installed. MacOS, Windows and Ubuntu is supported.
Install Docker and run it. Install by watching 2 min video on [Youtube](https://www.youtube.com/watch?v=vVpVmsxq-Z0&t=27s&pp=ygUTb3BlbmNsYXNzaWZ5IGRvY2tlcg%3D%3D)
1- Clone project
```bash
git clone https://github.com/openclassify/openclassify.git
```
2- Run install.sh
```bash
bash install.sh
```
3- That's it!
Open project at [localhost](http://localhost)
### Documentation
You can visit this link for detailed documentation.
https://visiosoft.gitbook.io/v2/
### CLI Commands
If you couldn't find a solution for any problem, please review our CLI Command document.
[View CLI Command Document](https://github.com/openclassify/openclassify/blob/master/docs/cli-commands.md)
### Other Installation Methods
Check [here](https://github.com/openclassify/openclassify/blob/master/docs/other-install-methods.md) for more.
### Translation
Openclassify support 22+ languages. If you'd like to contribute translations, please check out our [Crowdin](https://crowdin.com/project/openclassify) project.
# Installation
### Server Requirements
## Server Requirements
- PHP > 7.3+
- Only PHP > 8.2 Officially Supported!
- XML PHP Extension
- PDO PHP Extension
- cURL PHP Extension
@ -40,98 +71,14 @@ Openclassify support 22+ languages. If you'd like to contribute translations, pl
- Fileinfo PHP Extension
- Tokenizer PHP Extension
- GD Library (>=2.0) **OR** Imagick PHP extension (>=6.5.7)
### Via Composer
> Do not create an `.env` file just yet - Installer will generate one for you.{.important}
```bash
composer create-project openclassify/openclassify
```
### Host Configuration
When you setup your web host be sure to point the web root to `public` directory. Just as you would a normal Laravel installation.
#### Alternate Directories for cPanel or Virtualmin
In some environments like cPanel or Virtualmin it may be difficult to use the `public` directory as the web root. In these cases we suggest symlinking the `public` directory to `public_html`:
```bash
ln -s public public_html
```
You may also simply rename the `public` directory to `public_html`. Path hints will automatically use the correct path.
### Directory Permissions
After installing, you may need to configure some permissions in order to proceed. Directories within the `storage`, `public/app`, and the `bootstrap/cache` directories should be writable by your web server. If you are using the [Homestead](http://laravel.com/docs/homestead) virtual machine, these permissions should already be set.
## Installing
### Running the Installation Wizard
After downloading and it's dependencies with:
```bash
composer install
```
you will need to install the software in order to get started.
By this time you should be able to visit your site's URL which will
redirect you to the installer: `http://yoursite.com/installer`
### Using the CLI Installer
```bash
php artisan install
```
You will be prompted for details in order to proceed with the installation process.
> You may need to run `ulimit -n 1024` before installing via CLI to temporarily increase your max open files limit.
#### Automating the CLI Installer
You can automate the installer by creating your own .env file with something like this:
```bash
APP_ENV=local
APP_DEBUG=true
APP_KEY=zfesbnTkXvooWVcsKMw2r4SmPVNGbFoS
DB_CONNECTION=mysql
DB_HOST=localhost
DB_DATABASE=workbench
DB_USERNAME=root
DB_PASSWORD=root
APPLICATION_NAME=Default
APPLICATION_REFERENCE=default
APPLICATION_DOMAIN=localhost
ADMIN_EMAIL=info@openclassify.com
ADMIN_USERNAME=admin
ADMIN_PASSWORD=password
LOCALE=en
TIMEZONE=Turkey/Istanbul
```
> The APP_KEY must be exactly 32 characters in length.
Then run the installer and indicate that the system is ready to install:
```bash
php artisan install --ready
```
## Code Contributors
### Code Contributors
This project exists thanks to all the people who [contribute](https://github.com/openclassify/openclassify/graphs/contributors) and more.
<p align="center">
<a href = "https://github.com/openclassify/openclassify/graphs/contributors">
<img src = "https://contrib.rocks/image?repo=openclassify/openclassify"/>
</a>
Thanks to Ryan and his stream platform PyroCMS which makes OpenClassify more powerful.
</p>

View File

@ -1,15 +0,0 @@
# Security Policy
## Supported Versions
| Version | Supported |
| ------- | ------------------ |
| 2.x | :x: |
| 1.x | :white_check_mark: |
## Reporting a Vulnerability
If you discover any security related issues, please email info@openclassify.com instead of using the issue tracker.

View File

@ -1 +0,0 @@
theme: jekyll-theme-cayman

0
addons/.gitkeep Normal file
View File

View File

@ -1,20 +0,0 @@
{
"name": "PyroCMS",
"description": "A barebones Pyro install.",
"repository": "https://github.com/pyrocms/pyrocms",
"logo": "https://pyrocms.com/files/vendors/logo-inverted_512@2x.jpg",
"keywords": [
"pyrocms",
"laravel",
"cms",
"php"
],
"addons": [
{
"plan": "heroku-postgresql",
}
],
"scripts": {
"postdeploy": "composer install"
}
}

View File

@ -0,0 +1,64 @@
<?php namespace App\Notification;
use Anomaly\Streams\Platform\Notification\Message\MailMessage;
use Anomaly\UsersModule\User\Contract\UserInterface;
use Illuminate\Notifications\Notification;
/**
* Class ActivateYourAccount
*
* @link http://pyrocms.com/
* @author PyroCMS, Inc. <support@pyrocms.com>
* @author Ryan Thompson <ryan@pyrocms.com>
*/
class ActivateYourAccount extends Notification
{
/**
* Redirect here after activating.
*
* @var string
*/
public $redirect;
/**
* Create a new UserHasRegistered instance.
*
* @param $redirect
*/
public function __construct($redirect = '/')
{
$this->redirect = $redirect;
}
/**
* Get the notification's delivery channels.
*
* @param UserInterface $notifiable
* @return array
*/
public function via(UserInterface $notifiable)
{
return ['mail'];
}
/**
* Return the mail message.
*
* @param UserInterface $notifiable
* @return MailMessage
*/
public function toMail(UserInterface $notifiable)
{
$data = $notifiable->attributesToArray();
return (new MailMessage())
->view('anomaly.module.users::notifications.activate_your_account',$data)
->subject(trans('anomaly.module.users::notification.activate_your_account.subject', $data))
->greeting(trans('anomaly.module.users::notification.activate_your_account.greeting', $data))
->line(trans('anomaly.module.users::notification.activate_your_account.instructions', $data))
->action(
trans('anomaly.module.users::notification.activate_your_account.button', $data),
$notifiable->route('activate', ['redirect' => $this->redirect])
);
}
}

View File

@ -0,0 +1,72 @@
<?php namespace App\Notification;
use Anomaly\Streams\Platform\Notification\Message\MailMessage;
use Anomaly\UsersModule\User\Contract\UserInterface;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Notifications\Notification;
/**
* Class PasswordInvalidated
*
* @link http://pyrocms.com/
* @author PyroCMS, Inc. <support@pyrocms.com>
* @author Ryan Thompson <ryan@pyrocms.com>
*/
class PasswordInvalidated extends Notification implements ShouldQueue
{
use Queueable;
/**
* Redirect here after activating.
*
* @var string
*/
public $redirect;
/**
* Create a new UserHasRegistered instance.
*
* @param $redirect
*/
public function __construct($redirect = '/')
{
$this->redirect = $redirect;
}
/**
* Get the notification's delivery channels.
*
* @param UserInterface $notifiable
* @return array
*/
public function via(UserInterface $notifiable)
{
return ['mail'];
}
/**
* Return the mail message.
*
* @param UserInterface $notifiable
* @return MailMessage
*/
public function toMail(UserInterface $notifiable)
{
$data = $notifiable->attributesToArray();
return (new MailMessage())
->error()
->view('anomaly.module.users::notifications.password_invalidated')
->subject(trans('anomaly.module.users::notification.password_invalidated.subject', $data))
->greeting(trans('anomaly.module.users::notification.password_invalidated.greeting', $data))
->line(trans('anomaly.module.users::notification.password_invalidated.notice', $data))
->line(trans('anomaly.module.users::notification.password_invalidated.warning', $data))
->line(trans('anomaly.module.users::notification.password_invalidated.instructions', $data))
->action(
trans('anomaly.module.users::notification.password_invalidated.button', $data),
$notifiable->route('reset', ['redirect' => $this->redirect])
);
}
}

View File

@ -0,0 +1,69 @@
<?php namespace App\Notification;
use Anomaly\Streams\Platform\Notification\Message\MailMessage;
use Anomaly\UsersModule\User\Contract\UserInterface;
use Illuminate\Bus\Queueable;
use Illuminate\Notifications\Notification;
/**
* Class ResetYourPassword
*
* @link http://pyrocms.com/
* @author PyroCMS, Inc. <support@pyrocms.com>
* @author Ryan Thompson <ryan@pyrocms.com>
*/
class ResetYourPassword extends Notification
{
/**
* Redirect here after activating.
*
* @var string
*/
public $redirect;
/**
* Create a new UserHasRegistered instance.
*
* @param $redirect
*/
public function __construct($redirect = '/')
{
$this->redirect = $redirect;
}
/**
* Get the notification's delivery channels.
*
* @param UserInterface $notifiable
* @return array
*/
public function via(UserInterface $notifiable)
{
return ['mail'];
}
/**
* Return the mail message.
*
* @param UserInterface $notifiable
* @return MailMessage
*/
public function toMail(UserInterface $notifiable)
{
$data = $notifiable->attributesToArray();
return (new MailMessage())
->error()
->view('anomaly.module.users::notifications.reset_your_password')
->subject(trans('anomaly.module.users::notification.reset_your_password.subject', $data))
->greeting(trans('anomaly.module.users::notification.reset_your_password.greeting', $data))
->line(trans('anomaly.module.users::notification.reset_your_password.notice', $data))
->line(trans('anomaly.module.users::notification.reset_your_password.warning', $data))
->line(trans('anomaly.module.users::notification.reset_your_password.instructions', $data))
->action(
trans('anomaly.module.users::notification.reset_your_password.button', $data),
$notifiable->route('reset', ['redirect' => $this->redirect])
);
}
}

View File

@ -0,0 +1,52 @@
<?php namespace App\Notification;
use Anomaly\Streams\Platform\Notification\Message\MailMessage;
use Anomaly\UsersModule\User\Contract\UserInterface;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Notifications\Notification;
/**
* Class UserHasBeenActivated
*
* @link http://pyrocms.com/
* @author PyroCMS, Inc. <support@pyrocms.com>
* @author Ryan Thompson <ryan@pyrocms.com>
*/
class UserHasBeenActivated extends Notification implements ShouldQueue
{
use Queueable;
/**
* Get the notification's delivery channels.
*
* @param UserInterface $notifiable
* @return array
*/
public function via(UserInterface $notifiable)
{
return ['mail'];
}
/**
* Return the mail message.
*
* @param UserInterface $notifiable
* @return MailMessage
*/
public function toMail(UserInterface $notifiable)
{
$data = $notifiable->attributesToArray();
return (new MailMessage())
->view('anomaly.module.users::notifications.user_has_been_activated')
->subject(trans('anomaly.module.users::notification.user_has_been_activated.subject', $data))
->greeting(trans('anomaly.module.users::notification.user_has_been_activated.greeting', $data))
->line(trans('anomaly.module.users::notification.user_has_been_activated.instructions', $data))
->action(
trans('anomaly.module.users::notification.user_has_been_activated.button', $data),
route('anomaly.module.users::login')
);
}
}

View File

@ -0,0 +1,110 @@
<?php namespace App\Notification;
use Anomaly\Streams\Platform\Notification\Message\MailMessage;
use Anomaly\UsersModule\User\Contract\UserInterface;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Notifications\AnonymousNotifiable;
use Illuminate\Notifications\Messages\SlackMessage;
use Illuminate\Notifications\Notifiable;
use Illuminate\Notifications\Notification;
/**
* Class UserHasRegistered
*
* @link http://pyrocms.com/
* @author PyroCMS, Inc. <support@pyrocms.com>
* @author Ryan Thompson <ryan@pyrocms.com>
*/
class UserHasRegistered extends Notification implements ShouldQueue
{
use Queueable;
/**
* The user who registered.
*
* @var UserInterface
*/
public $user;
/**
* Create a new UserHasRegistered instance.
*
* @param UserInterface $user
*/
public function __construct(UserInterface $user)
{
$this->user = $user;
}
/**
* Get the notification's delivery channels.
*
* @return array
*/
public function via()
{
return ['mail', 'slack'];
}
/**
* Return the mail message.
*
* @param AnonymousNotifiable $notifiable
* @return MailMessage
*/
public function toMail(AnonymousNotifiable $notifiable)
{
$data = $this->user->attributesToArray();
return (new MailMessage())
->view('anomaly.module.users::notifications.user_has_registered')
->subject(trans('anomaly.module.users::notification.user_has_registered.subject', $data))
->line(trans('anomaly.module.users::notification.user_has_registered.instructions', $data))
->action(
trans('anomaly.module.users::notification.user_has_registered.button', $data),
$this->user->route('view')
);
}
/**
* Return the slack message.
*
* @param UserInterface $notifiable
*
* @return SlackMessage
*/
public function toSlack(UserInterface $notifiable)
{
return (new SlackMessage())
->success()
->content('Hmm.. What\'s Ryan up to?')
->attachment(
function ($attachment) {
$attachment
->title('Testing out teh goodies!', 'http://pyrocms.com/')
->fields(
[
'Username' => $this->user->getUsername(),
'Eamil' => $this->user->getEmail(),
]
);
}
);
}
/**
* Return the array storage data.
*
* @param Notifiable $notifiable
*
* @return array
*/
public function toDatabase(UserInterface $notifiable)
{
return [
'user' => $this->user,
];
}
}

View File

@ -0,0 +1,68 @@
<?php namespace App\Notification;
use Anomaly\Streams\Platform\Notification\Message\MailMessage;
use Anomaly\UsersModule\User\Contract\UserInterface;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Notifications\AnonymousNotifiable;
use Illuminate\Notifications\Notification;
/**
* Class UserPendingActivation
*
* @link http://pyrocms.com/
* @author PyroCMS, Inc. <support@pyrocms.com>
* @author Ryan Thompson <ryan@pyrocms.com>
*/
class UserPendingActivation extends Notification implements ShouldQueue
{
use Queueable;
/**
* The user pending activation.
*
* @var UserInterface
*/
public $user;
/**
* Create a new UserPendingActivation instance.
*
* @param UserInterface $user
*/
public function __construct(UserInterface $user)
{
$this->user = $user;
}
/**
* Get the notification's delivery channels.
*
* @return array
*/
public function via()
{
return ['mail'];
}
/**
* Return the mail message.
*
* @param AnonymousNotifiable $notifiable
* @return MailMessage
*/
public function toMail(AnonymousNotifiable $notifiable)
{
$data = $this->user->attributesToArray();
return (new MailMessage())
->view('anomaly.module.users::notifications.user_pending_activation')
->subject(trans('anomaly.module.users::notification.user_pending_activation.subject', $data))
->line(trans('anomaly.module.users::notification.user_pending_activation.instructions', $data))
->action(
trans('anomaly.module.users::notification.user_pending_activation.button', $data),
url('admin/users?view=pending')
);
}
}

View File

@ -1,46 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project name="Streams" default="dist">
<!-- ============================================ -->
<!-- Target: prepare -->
<!-- ============================================ -->
<target name="prepare">
<echo msg="Deleting directory ./build"/>
<delete dir="build"/>
<echo msg="Making directory ./build"/>
<mkdir dir="./build"/>
</target>
<!-- ============================================ -->
<!-- Target: build -->
<!-- ============================================ -->
<target name="build" depends="prepare">
<echo msg="Copying files to build directory..."/>
<echo msg="Copying ./ to ./build directory..."/>
<copy todir="./build">
<fileset dir="./">
<include name="**"/>
<exclude name=".git/"/>
</fileset>
</copy>
</target>
<!-- ============================================ -->
<!-- (DEFAULT) Target: dist -->
<!-- ============================================ -->
<target name="dist" depends="build">
<echo msg="Creating archive..."/>
<tar destfile="./build/build.tar.gz" compression="gzip">
<fileset dir="./build">
<include name="*"/>
</fileset>
</tar>
<echo msg="Files copied and compressed in build directory OK!"/>
</target>
</project>

View File

@ -57,15 +57,13 @@
"anomaly/navigation-module": "~2.4.0",
"anomaly/dashboard-module": "~2.2.0",
"anomaly/redirects-module": "~2.3.0",
"anomaly/variables-module": "~2.4.0",
"anomaly/settings-module": "~2.4.0",
"anomaly/blocks-module": "~1.3.0",
"anomaly/search-module": "~3.0.0",
"anomaly/users-module": "~2.5.0",
"anomaly/pages-module": "~2.6.0",
"anomaly/posts-module": "~2.6.0",
"anomaly/files-module": "~2.6.0",
"anomaly/contact-plugin": "~1.2.0",
"visiosoft/contact-plugin": "*",
"anomaly/helper-plugin": "~2.1.0",
"anomaly/robots-extension": "~2.1.0",
"anomaly/html_block-extension": "~1.0.0",
@ -74,13 +72,10 @@
"visiosoft/integer-field_type": "~2.1.0",
"visiosoft/list-field_type": "*",
"visiosoft/addblock-extension": "^1.1",
"maatwebsite/excel": "*",
"google/recaptcha": "1.2.*",
"sentry/sentry-laravel": "2.3.1",
"composer/composer": "2.*",
"wikimedia/composer-merge-plugin": "2.*",
"pusher/pusher-php-server": "^5.0",
"simplepie/simplepie": "^1.5.0",
"visiosoft/composer-merge-plugin": "2.*",
"guzzlehttp/guzzle": "^7.3",
"visiosoft/connect-module": "^1.0",
"visiosoft/singlefile-field_type": "^1.0",
@ -94,7 +89,8 @@
"visiosoft/base-theme": "^1.0",
"visiosoft/advs-module": "^1.0",
"visiosoft/json-field_type": "^1.0",
"visiosoft/language_switcher-plugin": "^1.0"
"visiosoft/language_switcher-plugin": "^1.0",
"visiosoft/global_helper-extension": "*"
},
"replace": {
"anomaly/streams-platform": "*"
@ -103,8 +99,7 @@
"filp/whoops": "~2.0",
"fzaninotto/faker": "~1.4",
"symfony/css-selector": "3.1.*",
"symfony/dom-crawler": "3.1.*",
"anomaly/installer-module": "~2.4.0"
"symfony/dom-crawler": "3.1.*"
},
"repositories": [
{
@ -149,6 +144,9 @@
"config": {
"bin-dir": "bin",
"preferred-install": "dist",
"optimize-autoloader": true
"optimize-autoloader": true,
"allow-plugins": {
"visiosoft/composer-merge-plugin": true
}
}
}

View File

@ -78,7 +78,7 @@ return [
|
*/
'url' => env('APP_URL', 'http://localhost'),
'url' => env('APP_URL', '/'),
/*
|--------------------------------------------------------------------------
@ -210,7 +210,6 @@ return [
Anomaly\Streams\Platform\StreamsServiceProvider::class,
Sentry\Laravel\ServiceProvider::class,
\Fruitcake\Cors\CorsServiceProvider::class
],
/*
@ -264,5 +263,18 @@ return [
'Sentry' => Sentry\Laravel\Facade::class,
/**
* Todo
* 30.11.2022
* It has been added for the use of 'with' in the PyroCMS Users Model file.
* Translate(trans) function does not accept nested arrays.
*/
'Anomaly\UsersModule\User\Notification\ActivateYourAccount' => \App\Notification\ActivateYourAccount::class,
'Anomaly\UsersModule\User\Notification\PasswordInvalidated' => \App\Notification\PasswordInvalidated::class,
'Anomaly\UsersModule\User\Notification\ResetYourPassword' => \App\Notification\ResetYourPassword::class,
'Anomaly\UsersModule\User\Notification\UserHasBeenActivated' => \App\Notification\UserHasBeenActivated::class,
'Anomaly\UsersModule\User\Notification\UserHasRegistered' => \App\Notification\UserHasRegistered::class,
'Anomaly\UsersModule\User\Notification\UserPendingActivation' => \App\Notification\UserPendingActivation::class,
],
];

View File

@ -15,7 +15,7 @@ return [
|
*/
'default' => env('BROADCAST_DRIVER', 'pusher'),
'default' => env('BROADCAST_DRIVER', 'null'),
/*
|--------------------------------------------------------------------------
@ -37,17 +37,9 @@ return [
'app_id' => env('PUSHER_APP_ID'),
'options' => [
'cluster' => env('PUSHER_APP_CLUSTER'),
'encrypted' => true,
'host' => '127.0.0.1',
'port' => 6001,
'scheme' => 'https',
'curl_options' => [
CURLOPT_SSL_VERIFYHOST => 0,
CURLOPT_SSL_VERIFYPEER => 0,
]
'useTLS' => env('PUSHER_TLS', true)
],
],
'redis' => [
'driver' => 'redis',
'connection' => 'default',

View File

@ -60,7 +60,7 @@ return [
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'collation' => env('DB_COLLATION', 'utf8_unicode_ci'),
'prefix' => env('DB_PREFIX', ''),
'strict' => false,
'engine' => env('DB_ENGINE'),
@ -108,14 +108,21 @@ return [
'redis' => [
'cluster' => false,
'client' => env('REDIS_CLIENT', 'phpredis'),
'default' => [
'host' => env('REDIS_HOST', 'localhost'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', 6379),
'database' => 0,
'host' => env('REDIS_HOST', 'redis'),
'password' => env('REDIS_PASSWORD'),
'port' => env('REDIS_PORT', 6379),
'database' => env('REDIS_DB', 0),
],
'cache' => [
'host' => env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD'),
'port' => env('REDIS_PORT', 6379),
'database' => env('REDIS_CACHE_DB', 1),
],
],
];

View File

@ -85,7 +85,7 @@ return [
*/
'failed' => [
'driver' => env('QUEUE_FAILED_DRIVER', 'database-uuids'),
'driver' => env('QUEUE_FAILED_DRIVER', 'database'),
'database' => env('DB_CONNECTION', 'mysql'),
'table' => 'failed_jobs',
],

View File

@ -4,18 +4,14 @@ namespace Database\Seeders;
use Anomaly\FilesModule\Disk\Contract\DiskRepositoryInterface;
use Anomaly\FilesModule\Folder\Contract\FolderRepositoryInterface;
use Anomaly\NavigationModule\Link\LinkModel;
use Anomaly\NavigationModule\Menu\Contract\MenuRepositoryInterface;
use Anomaly\Streams\Platform\Entry\EntryRepository;
use Anomaly\UrlLinkTypeExtension\UrlLinkTypeModel;
use Anomaly\UsersModule\Role\Contract\RoleRepositoryInterface;
use Anomaly\UsersModule\User\Contract\UserRepositoryInterface;
use Anomaly\UsersModule\User\UserActivator;
use Illuminate\Console\Command;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Seeder;
use Anomaly\DashboardModule\Widget\Contract\WidgetRepositoryInterface;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Artisan;
use Illuminate\Support\Facades\DB;
use Symfony\Component\Console\Input\ArgvInput;
use Visiosoft\AdvsModule\Adv\Command\DeleteInstaller;
@ -57,7 +53,6 @@ class DatabaseSeeder extends Seeder
public function run()
{
$admin = $this->roles->findBySlug('admin');
$this->users->unguard();
@ -90,85 +85,18 @@ class DatabaseSeeder extends Seeder
'slug' => 'category_icon',
'disk' => $disk,
]);
};
//Footer Link
LinkModel::query()->forceDelete();
$repository = new EntryRepository();
$repository->setModel(new UrlLinkTypeModel());
$menu = $this->menus->findBySlug('footer');
$openclassify = $repository->create(
[
'en' => [
'title' => 'OpenClassify.com',
],
'url' => 'https://openclassify.com/',
]
);
$visiosoft = $repository->create(
[
'en' => [
'title' => 'Visiosoft Inc.',
],
'url' => 'https://visiosoft.com.tr/',
]
);
LinkModel::query()->create(
[
'menu' => $menu,
'target' => '_blank',
'entry' => $openclassify,
'type' => 'anomaly.extension.url_link_type',
]
);
LinkModel::query()->create(
[
'menu' => $menu,
'target' => '_blank',
'entry' => $visiosoft,
'type' => 'anomaly.extension.url_link_type',
]
);
$repository = "https://raw.githubusercontent.com/openclassify/Openclassify-Demo-Data/master/";
file_put_contents(storage_path('advs.sql'), fopen($repository . "advs.sql", 'r'));
file_put_contents(storage_path('settings.sql'), fopen($repository . "settings.sql", 'r'));
file_put_contents(storage_path('categories.sql'), fopen($repository . "categories.sql", 'r'));
file_put_contents(storage_path('images.zip'), fopen($repository . "images.zip", "r"));
file_put_contents(storage_path('cats.zip'), fopen($repository . "cats.zip", "r"));
}
$application_reference = (new ArgvInput())->getParameterOption('--app', env('APPLICATION_REFERENCE', 'default'));
$categories = str_replace('{application_reference}', $application_reference, file_get_contents(storage_path('categories.sql')));
$advs = str_replace('{application_reference}', $application_reference, file_get_contents(storage_path('advs.sql')));
$settings = str_replace('{application_reference}', $application_reference, file_get_contents(storage_path('settings.sql')));
$settings = str_replace('{application_reference}', $application_reference,
file_get_contents(realpath(dirname(__DIR__)) . '/seeders/settings.sql'));
Model::unguard();
DB::unprepared($advs);
DB::unprepared($categories);
DB::unprepared($settings);
Model::reguard();
$zip = new \ZipArchive();
$zip->open(storage_path('images.zip'), ZipArchive::CREATE);
$zip->extractTo(storage_path('streams/' . $application_reference . '/files-module/local/images/'));
$zip->open(storage_path('cats.zip'), ZipArchive::CREATE);
$zip->extractTo(storage_path('streams/' . $application_reference . '/files-module/local/category_icon/'));
$zip->close();
//Sync Files
$this->command->call('files:sync');
$this->call(WidgetSeeder::class);
//Delete Installer
dispatch_now(new DeleteInstaller());
if (is_null($this->folders->findBy('slug', 'ads_excel'))) {
$disk = $this->disks->findBySlug('local');
@ -180,7 +108,7 @@ class DatabaseSeeder extends Seeder
'slug' => 'ads_excel',
'disk' => $disk,
]);
};
}
if ($images_folder = $this->folders->findBySlug('images')) {
@ -207,7 +135,7 @@ class DatabaseSeeder extends Seeder
'ico', 'png',
],
]);
};
}
//Banner Image Folder
if (is_null($this->folders->findBy('slug', 'banner_images'))) {
@ -242,13 +170,6 @@ class DatabaseSeeder extends Seeder
'pdf', 'doc', 'docx', 'xls', 'xlsx',
],
]);
};
//Demodata Seeder
if (is_module_installed('visiosoft.module.demodata')) {
$this->call(\Visiosoft\DemodataModule\Demodata\DemodataSeeder::class);
}
Artisan::call('assets:clear');
}
}

View File

@ -1,28 +0,0 @@
<?php
use Anomaly\Streams\Platform\Model\Advs\AdvsCategoriesEntryModel;
use Anomaly\Streams\Platform\Model\Options\OptionsAdvertisementEntryModel;
use Anomaly\Streams\Platform\Model\Options\OptionsContactSettingsEntryModel;
use Anomaly\Streams\Platform\Model\Options\OptionsGeneralSettingsEntryModel;
use Anomaly\Streams\Platform\Model\Options\OptionsThemeSettingsEntryModel;
use Anomaly\Streams\Platform\Model\Search\SearchCategoriesEntryModel;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
use Visiosoft\AdvsModule\City\CitySeeder;
use Visiosoft\AdvsModule\Country\CountrySeeder;
use Visiosoft\AdvsModule\District\DistrictSeeder;
use Visiosoft\AdvsModule\Neighborhood\NeighborhoodSeeder;
use Visiosoft\AdvsModule\Village\VillageSeeder;
class GridSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
//run
}
}

View File

@ -1,22 +1,24 @@
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET AUTOCOMMIT = 0;
START TRANSACTION;
SET time_zone = "+00:00";
SET NAMES utf8;
SET time_zone = '+00:00';
SET foreign_key_checks = 0;
SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
INSERT INTO `{application_reference}_settings_settings` (`created_at`, `created_by_id`, `updated_at`, `updated_by_id`, `key`, `value`) VALUES
('2019-07-15 06:48:46', 1, '2019-07-15 06:53:05', 1, 'streams::date_format', 'j F, Y'),
('2019-07-15 06:48:46', 1, '2019-07-15 06:53:05', 1, 'streams::time_format', 'H:i'),
('2019-07-15 06:48:46', 1, '2019-07-15 06:53:05', 1, 'streams::standard_theme', 'visiosoft.theme.base'),
('2019-07-15 06:48:46', 1, '2019-07-15 06:53:05', 1, 'streams::admin_theme', 'visiosoft.theme.defaultadmin'),
('2019-07-15 06:48:46', 1, '2019-07-15 06:53:05', 1, 'streams::enabled_locales', 'a:11:{i:0;s:2:\"en\";i:1;s:2:\"fa\";i:2;s:2:\"ar\";i:3;s:2:\"el\";i:4;s:2:\"es\";i:5;s:2:\"fr\";i:6;s:2:\"it\";i:7;s:2:\"nl\";i:8;s:2:\"pt\";i:9;s:2:\"ru\";i:10;s:2:\"tr\";}'),
('2020-09-25 11:10:13', 1, '2020-09-25 11:10:13', 1, 'visiosoft.module.advs::latest-limit', '24'),
('2020-09-25 11:10:14', 1, '2020-09-25 11:10:14', 1, 'visiosoft.module.advs::popular_ads_limit', '15'),
('2020-11-12 06:58:45', 1, '2020-11-16 14:25:22', 1, 'streams::mail_driver', 'log')
ON DUPLICATE KEY UPDATE `id` = VALUES(`id`), `sort_order` = VALUES(`sort_order`), `created_at` = VALUES(`created_at`), `created_by_id` = VALUES(`created_by_id`), `updated_at` = VALUES(`updated_at`), `updated_by_id` = VALUES(`updated_by_id`), `key` = VALUES(`key`), `value` = VALUES(`value`);
INSERT INTO `default_settings_settings` (`created_at`,`key`, `value`) VALUES
('2019-07-15 06:48:46', 'streams::date_format', 'j F, Y'),
('2019-07-15 06:48:46', 'streams::time_format', 'H:i'),
('2019-07-15 06:48:46', 'streams::name', 'PHP Classifieds software'),
('2019-07-15 06:48:46', 'streams::description', 'OpenClassify is modular and most advanced open source classified platform build with Laravel.Use it in real estate classifieds, auto, e-commerce and other ...'),
('2019-07-15 06:48:46', 'streams::standard_theme', 'visiosoft.theme.base'),
('2019-07-15 06:48:46', 'streams::admin_theme', 'visiosoft.theme.defaultadmin'),
('2019-07-15 06:48:46', 'streams::enabled_locales', 'a:11:{i:0;s:2:\"en\";i:1;s:2:\"fa\";i:2;s:2:\"ar\";i:3;s:2:\"el\";i:4;s:2:\"es\";i:5;s:2:\"fr\";i:6;s:2:\"it\";i:7;s:2:\"nl\";i:8;s:2:\"pt\";i:9;s:2:\"ru\";i:10;s:2:\"tr\";}');
COMMIT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;

View File

@ -1,54 +1,88 @@
version: '3'
services:
web:
image: nginx:alpine
volumes:
- "./etc/nginx/default.conf:/etc/nginx/conf.d/default.conf"
- "./etc/ssl:/etc/ssl"
- "./:/var/www/html"
- "./etc/nginx/default.template.conf:/etc/nginx/conf.d/default.template"
ports:
- "8000:80"
- "3000:443"
environment:
- NGINX_HOST=${NGINX_HOST}
command: /bin/sh -c "envsubst '$$NGINX_HOST' < /etc/nginx/conf.d/default.template > /etc/nginx/conf.d/default.conf && nginx -g 'daemon off;'"
restart: always
depends_on:
- php
- mysqldb
php:
image: nanoninja/php-fpm:${PHP_VERSION}
restart: always
volumes:
- "./etc/php/php.ini:/usr/local/etc/php/conf.d/php.ini"
- "./:/var/www/html"
composer:
image: "composer"
command: install
myadmin:
image: phpmyadmin/phpmyadmin
container_name: phpmyadmin
ports:
- "8080:80"
environment:
- PMA_ARBITRARY=1
- PMA_HOST=${MYSQL_HOST}
restart: always
depends_on:
- mysqldb
mysqldb:
image: mysql:${MYSQL_VERSION}
container_name: ${MYSQL_HOST}
restart: always
env_file:
- ".env"
environment:
- MYSQL_DATABASE=${MYSQL_DATABASE}
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
- MYSQL_USER=${MYSQL_USER}
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
ports:
- "8989:3306"
volumes:
- "./data/db/mysql:/var/lib/mysql"
volumes:
db-store:
psysh-store:
configs:
db-config:
file: ./docker/mysql/my.cnf
services:
php:
build:
context: .
dockerfile: ./docker/php/Dockerfile
target: ${APP_BUILD_TARGET:-development}
container_name: oc_php
volumes:
- type: bind
source: ./
target: /workspace
- type: volume
source: psysh-store
target: /root/.config/psysh
volume:
nocopy: true
depends_on:
database:
condition: service_healthy
extra_hosts:
- "host.docker.internal:host-gateway"
nginx:
build:
context: .
dockerfile: ./docker/nginx/Dockerfile
container_name: ${APP_NAME}_nginx
ports:
- target: 80
published: ${WEB_PUBLISHED_PORT:-80}
protocol: tcp
mode: host
volumes:
- type: bind
source: ./
target: /workspace
depends_on:
- php
- database
database:
build:
context: .
dockerfile: ./docker/mysql/Dockerfile
command: --max_allowed_packet=32505856 # Set max_allowed_packet to 256M (or any other value)
ports:
- target: 3306
published: ${DB_PUBLISHED_PORT:-3306}
protocol: tcp
mode: host
configs:
- source: db-config
target: /etc/my.cnf
volumes:
- type: volume
source: db-store
target: /var/lib/mysql
volume:
nocopy: true
environment:
- MYSQL_DATABASE=${DB_DATABASE:-laravel}
- MYSQL_USER=${DB_USERNAME:-phper}
- MYSQL_PASSWORD=${DB_PASSWORD:-secret}
- MYSQL_ROOT_PASSWORD=${DB_PASSWORD:-secret}
healthcheck:
test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost"]
timeout: 5s
retries: 10
phpmyadmin:
image: phpmyadmin/phpmyadmin:latest
ports:
- "8081:80"
depends_on:
- database
environment:
PMA_USER: oc
PMA_PASSWORD: oc
PMA_HOSTS: database,localhost
UPLOAD_LIMIT: 10G

7
docker/mysql/Dockerfile Normal file
View File

@ -0,0 +1,7 @@
FROM mysql/mysql-server:8.0
ENV TZ=UTC
RUN mkdir /var/log/mysql \
&& chown mysql:mysql $_ \
&& chmod 777 $_

37
docker/mysql/my.cnf Normal file
View File

@ -0,0 +1,37 @@
[mysqld]
# default
skip-host-cache
skip-name-resolve
datadir = /var/lib/mysql
socket = /var/lib/mysql/mysql.sock
secure-file-priv = /var/lib/mysql-files
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
# character set / collation
character_set_server = utf8mb4
collation_server = utf8mb4_0900_ai_ci
# timezone
default-time-zone = SYSTEM
log_timestamps = SYSTEM
# Error Log
log-error = /var/log/mysql/mysql-error.log
# Slow Query Log
slow_query_log = 1
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 1.0
log_queries_not_using_indexes = 0
# General Log
general_log = 1
general_log_file = /var/log/mysql/mysql-general.log
[mysql]
default-character-set = utf8mb4
[client]
default-character-set = utf8mb4

9
docker/nginx/Dockerfile Normal file
View File

@ -0,0 +1,9 @@
FROM nginx:1.25
WORKDIR /workspace
ENV TZ=UTC
COPY ./docker/nginx/*.conf /etc/nginx/conf.d/

35
docker/nginx/default.conf Normal file
View File

@ -0,0 +1,35 @@
access_log /dev/stdout main;
error_log /dev/stderr warn;
server {
listen 80;
listen [::]:80;
root /workspace/public;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
index index.php;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
error_page 404 /index.php;
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.(?!well-known).* {
deny all;
}
}

69
docker/php/Dockerfile Normal file
View File

@ -0,0 +1,69 @@
FROM php:8.2-fpm-bullseye AS base
WORKDIR /workspace
# timezone environment
ENV TZ=UTC \
# locale
LANG=en_US.UTF-8 \
LANGUAGE=en_US:en \
LC_ALL=en_US.UTF-8 \
# composer environment
COMPOSER_ALLOW_SUPERUSER=1 \
COMPOSER_HOME=/composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
RUN apt-get update \
&& apt-get -y install --no-install-recommends \
locales \
git \
unzip \
libzip-dev \
libicu-dev \
libonig-dev \
libpq-dev \
libcurl4-gnutls-dev \
libfreetype6-dev \
libjpeg62-turbo-dev \
libpng-dev \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* \
&& locale-gen en_US.UTF-8 \
&& localedef -f UTF-8 -i en_US en_US.UTF-8 \
&& docker-php-ext-install \
intl \
pdo_mysql \
zip \
bcmath \
&& composer config -g process-timeout 3600 \
&& composer config -g repos.packagist composer https://packagist.org
RUN docker-php-ext-configure gd --with-freetype=/usr/include/ --with-jpeg=/usr/include/
RUN docker-php-ext-install gd
COPY . .
#RUN ["chmod", "+x", "./docker/php/entrypoint.sh"]
CMD ["docker/php/entrypoint.sh"]
FROM base AS development
COPY ./docker/php/php.development.ini /usr/local/etc/php/php.ini
FROM development AS development-xdebug
RUN pecl install xdebug && \
docker-php-ext-enable xdebug
COPY ./docker/php/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini
FROM base AS deploy
COPY ./docker/php/php.deploy.ini /usr/local/etc/php/php.ini
COPY ./ /workspace
RUN composer install -q -n --no-ansi --no-dev --no-scripts --no-progress --prefer-dist \
&& chmod -R 777 storage bootstrap/cache \
&& php artisan optimize:clear \
&& php artisan optimize

29
docker/php/entrypoint.sh Executable file
View File

@ -0,0 +1,29 @@
#!/bin/bash
if [ ! -f "vendor/autoload.php" ]; then
composer install --no-progress --no-interaction
else
echo "composer. nothing to do."
fi
if [ ! -f ".env" ]; then
echo "Creating env file for env from env-sail"
cp .env-sail .env
else
echo "env file exists. nothing to do."
fi
while IFS= read -r line || [[ -n "$line" ]]; do
if [[ "$line" == "INSTALLED="* ]]; then
installed="${line#*=}"
installed=$(echo "$installed" | tr -d '[:space:]' | tr -d '[:punct:]') # Boşlukları ve özel karakterleri sil
break
fi
done < .env
if [ "$installed" = "false" ]; then
echo ".env installed is false starting installing"
php artisan install --ready
fi
php-fpm -R

11
docker/php/opcache.ini Normal file
View File

@ -0,0 +1,11 @@
[opcache]
opcache.enable=1
; 0 means it will check on every request
; 0 is irrelevant if opcache.validate_timestamps=0 which is desirable in production
opcache.revalidate_freq=0
opcache.validate_timestamps=1
opcache.max_accelerated_files=10000
opcache.memory_consumption=192
opcache.max_wasted_percentage=10
opcache.interned_strings_buffer=16
opcache.fast_shutdown=1

25
docker/php/php.deploy.ini Normal file
View File

@ -0,0 +1,25 @@
zend.exception_ignore_args = off
expose_php = off
max_execution_time = 30
max_input_vars = 1000
upload_max_filesize = 64M
post_max_size = 128M
memory_limit = 256M
error_reporting = E_ALL
display_errors = off
display_startup_errors = off
log_errors = on
error_log = /dev/stderr
default_charset = UTF-8
[Date]
date.timezone = ${TZ}
[mysqlnd]
mysqlnd.collect_memory_statistics = off
[Assertion]
zend.assertions = -1
[mbstring]
mbstring.language = Neutral

View File

@ -0,0 +1,25 @@
zend.exception_ignore_args = off
expose_php = on
max_execution_time = 30
max_input_vars = 1000
upload_max_filesize = 64M
post_max_size = 128M
memory_limit = 256M
error_reporting = E_ALL
display_errors = on
display_startup_errors = on
log_errors = on
error_log = /dev/stderr
default_charset = UTF-8
[Date]
date.timezone = ${TZ}
[mysqlnd]
mysqlnd.collect_memory_statistics = on
[Assertion]
zend.assertions = 1
[mbstring]
mbstring.language = Neutral

7
docker/php/xdebug.ini Normal file
View File

@ -0,0 +1,7 @@
[xdebug]
xdebug.mode = debug
xdebug.start_with_request = yes
xdebug.client_host = host.docker.internal
xdebug.client_port = 9003
xdebug.log = /tmp/xdebug.log
xdebug.idekey = "PHPSTORM"

128
docs/CONTRIBUTING.md Normal file
View File

@ -0,0 +1,128 @@
# Contribution Guide
It's been often said that programming is part art, part science - that because lots of times there's no single, simple solution to a problem; or if there is, we might not know about it. There's also an infamous joke that if there are *n* developers in the room, then there are *n+1* opinions on how things should be done.
### The most important thing
**The code has to work.** Unless you open a PR as a work in progress, the code should be built and tested on a device or emulator. Having people review your code is one thing, but you should not expect them to also *test* the code for you.
### Context
Some of those might be more urgent than the others, and sometimes you might be under pressure to ship as soon as possible so the code might not be perfect or there won't be any tests or code might not be extendable. **That's ok.**
## Everyone
* There is no perfect code: good enough is usually good enough. That being said, try to keep the number of WTFs per minute to a minimum.
![](https://i2.wp.com/commadot.com/wp-content/uploads/2009/02/wtf.png?w=550)
* Accept that many programming decisions are opinions. Discuss tradeoffs, which you prefer, and reach a resolution quickly.
* Ask for clarification. ("I didn't understand. Can you clarify?")
* Offer clarification, explain the decisions you made to reach a solution in question.
* Avoid using terms that could be seen as referring to personal traits. ("dumb", "stupid"). Assume everyone is intelligent and well-meaning.
* Be humble. ("I'm not sure - let's look it up.")
* Don't use hyperbole. ("always", "never", "endlessly", "nothing") Don't use sarcasm.
* Remember that you're both on the same side - the goal is to make the code better. Understand that sometimes your ideas will be overruled. Even if you do turn out to be right, don't take revenge or say, "I told you so".
* Talk synchronously (e.g. chat, screensharing, in person) if there are too many "I didn't understand" or "Alternative solution:" comments. Pull requests should not be the place for long discussions, architectural or otherwise.
* Put notes on what's missing or could be improved in the PR description or comments. You can also create an issue with discussion points and possible problems or things to do and discuss it offline.
## As a code submitter
* PRs should be about one thing. If you do multiple things in one PR, it's hard to review. If you're fixing stuff as you go, you might want to make atomic commits and then cherry-pick those commits into separate branches, leaving the PR clean.
* Try to keep the PRs small. There has been some research to indicate that beyond 400 LOC the ability to detect defects diminishes. (We're talking about LOC proper, unit tests and layouts don't count)
* Having a PR description is useful. Additionally, you can also link to the card on Trello.
* Ideally, the PR should be finished when submitted. If the PR is work in progress, add (WIP) or [WIP] to the title.
* You should have tests that at least cover the logic, and ideally also cover the input/output parameters and methods. (depends on context)
## As a reviewer
* Reviewing code is part of a normal workday. You should check for open/updated PRs at least once a day.
* Ask, dont tell. (“What do you think about trying…?” rather than “Dont do…”)
* Offer ways to simplify or improve code.
* Code beautification and refactoring ought to be tasks in the next sprint, except for obvious and easy-to-fix things.
* Communicate which ideas you feel strongly about and those you don't. Explain your reasons why code should be changed. (Not in line with the style guide? A personal preference?)
* If you disagree strongly, consider giving it a few minutes before responding; think before you react.
* Offer alternative implementations, but assume the author already considered them. ("What do you think about using a custom validator here?")
* If discussions turn too theoretical or touch big architectural questions, move the discussion offline. In the meantime, let the author make the final decision on alternative implementations.
* Don't keep the code hostage. Keep in mind the context and the most important thing - does it work?
## Readability and Cleanliness
The first step is to make sure that your PHP code is clean and readable so that both you and other developers can easily understand it.
Make sure to consider the following issues:
* Is the code formatting written in the same style as the rest of the project?
* Is the code well-described with comments or other documentation?
* Is it easy to discern the purpose of a given PHP function or class?
* Does the code throw exceptions or display appropriate error messages when something goes wrong?
* Are any variable, function, or file names unclear or inconsistent?
* Are there still large blocks of code commented out that should be deleted?
* Are there duplicate sections of code that can be removed or condensed?
* Can large files be refactored or broken down into smaller components that are easier to comprehend?
# Task list to Check
## General
- [ ] The code works
- [ ] The code is easy to understand
- [ ] Follows coding conventions
- [ ] Names are simple and if possible short
- [ ] Names are spelt correctly
- [ ] Names contain units where applicable
- [ ] There are no usages of [magic numbers](http://c2.com/cgi/wiki?MagicNumber)
- [ ] No hard coded constants that could possibly change in the future
- [ ] All variables are in the smallest scope possible
- [ ] There is no commented out code
- [ ] There is no dead code (inaccessible at Runtime)
- [ ] No code that can be replaced with library functions
- [ ] Variables are not accidentally used with null values
- [ ] Variables are immutable where possible
- [ ] Code is not repeated or duplicated
- [ ] No complex/long boolean expressions
- [ ] No negatively named boolean variables
- [ ] No empty blocks of code
- [ ] Ideal data structures are used
- [ ] Constructors do not accept null/none values
- [ ] Catch clauses are fine grained and catch specific exceptions
- [ ] Exceptions are not eaten if caught, unless explicitly documented otherwise
- [ ] Files/Sockets and other resources are properly closed even when an exception occurs in using them
- [ ] == operator and === (and its inverse !==) are not mixed up
- [ ] Floating point numbers are not compared for equality
- [ ] Loops have a set length and correct termination conditions
- [ ] Blocks of code inside loops are as small as possible
- [ ] No methods with boolean parameters
- [ ] No object exists longer than necessary
- [ ] No memory leaks
- [ ] Code is unit testable
- [ ] Test cases are written wherever possible
- [ ] Methods return early without compromising code readability
- [ ] Performance is considered
- [ ] Loop iteration and off by one are taken care of
## Architecture
- [ ] [Law of Demeter](https://en.wikipedia.org/wiki/Law_of_Demeter) is not violated
- [ ] A class should have only a single responsibility (i.e. only one potential change in the software's specification should be able to affect the specification of the class)
- [ ] Classes, modules, functions, etc. should be open for extension, but closed for modification
- [ ] Objects in a program should be replaceable with instances of their subtypes without altering the correctness of that program
- [ ] Many client-specific interfaces are better than one general-purpose interface.
- [ ] Depend upon Abstractions. Do not depend upon concretions.
## Security
- [ ] All data inputs are checked (for the correct type, length/size, format, and range)
- [ ] Invalid parameter values handled such that exceptions are not thrown
- [ ] No sensitive information is logged or visible in a stacktrace
## Security Vulnerabilities
If you discover a security vulnerability, please send an e-mail to info@openclassify.com. All security vulnerabilities will be promptly addressed.
## Coding Style
Project follows the PSR-4, PSR-2 and PSR-1 coding standards. In addition to these standards, the following coding standards should be followed:
The class namespace declaration must be on the same line as <?php.

20
docs/LICENSE.md Normal file
View File

@ -0,0 +1,20 @@
# The MIT License (MIT)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

273
docs/cli-commands.md Normal file
View File

@ -0,0 +1,273 @@
# CLI Commands
## Basics
### Addon & Module install
Install an addon.
The required `addon` argument must be an addon identifier like `anomaly.module.store`.
The `--seed` flag causes the addon to be seeded as well.
> Only **modules** and **extensions** are installable.
```bash
php artisan addon:install anomaly.module.store --seed
```
### Install All modules and migrate
Clone modules & themes and run this command:
```bash
php artisan migrate --all-addons
```
### Seed for Themes
Like : php artisan db:seed --addon=visiosoft.theme.oc
```bash
php artisan db:seed --addon=visiosoft.theme.addon_name
```
### Run Command Inside Docker
```bash
docker exec -it oc_php php artisan addon:install anomaly.module.store --seed
```
### Composer set private repo
```bash
composer config repositories.repo-name composer https://abc.aaa.com
```
### Composer set username and password for repo
```bash
composer config http-basic.abc.aaa.com openclassify pass
```
## Asset Management
### assets:clear
Clears all asset and image generated cache.
The optional `path` argument specifies the path relative to your application's public asset path. In this way you can easily clear `public` or `admin` theme cache directories.
```bash
php artisan asset:clear // Clear everything
php artisan asset:clear public // Clear public theme cache
```
## View Management
### twig:clear
Clears all Twig related view cache.
```bash
php artisan twig:clear
```
## Cache Management
### cache:clear
Clears all framework cache. Does not include HTTP cache.
```bash
php artisan cache:clear
```
## HTTP Cache
### httpcache:clear
Clears all HTTP cache.
```bash
php artisan httpcache:clear
```
### httpcache:warm
Warms HTTP cache by crawling your sitemap.
The `--sleep` option specifies how long in `seconds` to wait between each request. HTTP cache will be warmed as fast as possible by default.
The `--clear` flag will call `httpcache:clear` prior to warming.
```bash
php artisan httpcache:warm --sleep=5 --clear
```
## Application Commands
### env:set
Set a `.env` value. Specify the `like` to update or insert like this:
```bash
php artisan env:set APP_DEBUG=true
```
### app:publish
Copy the base `.env` and generate a `routes.php` file in the application's `resources` directory.
Use the `--force` flag to overwrite the files should they already exist.
```bash
php artisan app:publish --force
```
### streams:publish
Copy the configuration, language files, and views from the Streams Platform into `resources/streams` so that you can modify them to override core and commit the changes safely to your version control.
Use the `--force` flag to overwrite the files should they already exist.
```bash
php artisan streams:publish --force
```
### build
Compile Streams models and signal to others components that the system is building.
```bash
php artisan build
```
### refresh
Refreshes all caches and signals to other components to refresh as well.
```bash
php artisan build
```
## Streams Commands
### make:stream
Create a scaffold a new stream.
The `stream` argument should be a **plural slug identifier** for the stream like `books` or `favorite_books`.
The `addon` argument must be a unique module or extension identifier like a `dot namespace` or `slug`. The stream classes will be generated in the addon's `src` directory.
The `--namespace` option may be used to specify a namespace for the stream like `--namespace=book_store`. The slug of the specified `addon` will be used by default.
> The addon must be created using [make:addon](#make-addon) prior to running this command.{.notice}
```bash
php artisan make:stream books anomaly.module.store
```
### streams:index
Import `searchable` stream entries into the search index.
Use the optional `namespace` argument to index stream entries within that namespace only.
Use the optional `stream` argument to target entries for a specific stream with the `namespace`.
The `--flush` flag may be used flush the search index before importing.
```bash
php artisan streams:index // Import everything searchable
php artisan streams:index products books // Import books
```
### streams:compile
Compile the base generated models for all streams from their database values.
```bash
php artisan streams:compile
```
### streams:cleanup
Safely deletes any "abandoned" or otherwise garbage streams, fields, and assignments that might present themselves during or after development.
```bash
php artisan streams:cleanup
```
### streams:destroy
Destroy all streams, fields, and assignments within a given `namespace`.
```bash
php artisan streams:destroy store
```
## Addon Commands
### make:addon
Create an addon with everything you need to start development.
The `namespace` argument looks like `{vendor}.{type}.{addon}` and specifies the addon's `vendor` slug, the `type` slug, and the `addon` slug of the desired addon to create.
The `vendor` slug should reflect you as an author. The `vendor` slug used by the creators of the Streams Platform for example is `anomaly`.
Supported `type` slugs are `module`, `theme`, `extension`, `plugin`, and `field_type`.
The `addon` slug is the `slug_formatted` name of the addon you are creating.
```bash
php artisan make:addon anomaly.module.store
```
### addon:uninstall
Uninstall an addon.
The required `addon` argument must be an addon identifier like `anomaly.module.store`.
> Only **modules** and **extensions** are installable.{.notice}
```bash
php artisan addon:uninstall anomaly.module.store --seed
```
### addon:reinstall
Reinstall an addon.
The required `addon` argument must be an addon identifier like `anomaly.module.store`.
> Only **modules** and **extensions** are installable.{.notice}
```bash
php artisan addon:reinstall anomaly.module.store --seed
```
### addon:publish
Copy the configuration, language files, and views from the specified `addon` into `resources/streams` so that you can modify them to override the addon and commit the changes safely to your version control.
The required `addon` argument must be an addon identifier like `anomaly.module.store`.
Use the `--force` flag to overwrite the files should they already exist.
```bash
php artisan addon:publish anomaly.module.store --force
```

View File

@ -0,0 +1,84 @@
## Via Composer
> Do not create an `.env` file just yet - Installer will generate one for you.{.important}
```bash
composer create-project openclassify/openclassify
```
### Host Configuration
When you setup your web host be sure to point the web root to `public` directory. Just as you would a normal Laravel installation.
#### Alternate Directories for cPanel or Virtualmin
In some environments like cPanel or Virtualmin it may be difficult to use the `public` directory as the web root. In these cases we suggest symlinking the `public` directory to `public_html`:
```bash
ln -s public public_html
```
You may also simply rename the `public` directory to `public_html`. Path hints will automatically use the correct path.
### Directory Permissions
After installing, you may need to configure some permissions in order to proceed.
Directories within the `storage`, `public/app`, and the `bootstrap/cache` directories should be writable by your web server.
If you are using the [Homestead](http://laravel.com/docs/homestead) virtual machine, these permissions should already be set.
## Installation
### Running the Installation Wizard
After downloading and it's dependencies with:
```bash
composer install
```
you will need to install the software in order to get started.
By this time you should be able to visit your site's URL which will
redirect you to the installer: `http://yoursite.com/installer`
### Using the CLI Installer
```bash
php artisan install
```
You will be prompted for details in order to proceed with the installation process.
> You may need to run `ulimit -n 1024` before installing via CLI to temporarily increase your max open files limit.
#### Automating the CLI Installer
You can automate the installer by creating your own .env file with something like this:
```bash
APP_ENV=local
APP_DEBUG=true
APP_KEY=zfesbnTkXvooWVcsKMw2r4SmPVNGbFoS
DB_CONNECTION=mysql
DB_HOST=localhost
DB_DATABASE=workbench
DB_USERNAME=root
DB_PASSWORD=root
APPLICATION_NAME=Default
APPLICATION_REFERENCE=default
APPLICATION_DOMAIN=localhost
ADMIN_EMAIL=info@openclassify.com
ADMIN_USERNAME=admin
ADMIN_PASSWORD=password
LOCALE=en
TIMEZONE=Turkey/Istanbul
```
> The APP_KEY must be exactly 32 characters in length.
Then run the installer and indicate that the system is ready to install:
```bash
php artisan install --ready
```

10
install.sh Normal file
View File

@ -0,0 +1,10 @@
#!/bin/bash
echo "================================================"
echo "----------------- Openclassify -----------------"
echo "----- Automated install script with Docker -----"
echo "================================================"
docker --version
cp .env-sail .env
docker compose up

View File

@ -1,7 +0,0 @@
location / {
try_files $uri @rewriteapp;
}
location @rewriteapp {
rewrite ^(.*)$ /index.php$1 last;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

View File

@ -11,6 +11,12 @@ const requireModulesVueFiles = (moduleVueFiles) => {
})
}
requireModulesVueFiles(require.context(
'../../../addons',
true,
/\.*\.vue$/i
))
requireModulesVueFiles(require.context(
'../../../vendor/visiosoft',
true,

View File

@ -13,8 +13,8 @@ return [
*/
'eager' => [
'core/anomaly/settings-module',
'core/anomaly/preferences-module'
'vendor/anomaly/settings-module',
'vendor/anomaly/preferences-module',
],
/*
@ -28,8 +28,9 @@ return [
*/
'deferred' => [
'core/anomaly/pages-module',
'core/anomaly/redirects-module'
'vendor/anomaly/pages-module',
'vendor/anomaly/redirects-module',
'vendor/visiosoft/advs-module',
]
];

View File

@ -50,7 +50,7 @@ return [
'TRY' => [
'name' => 'Türk Lirası',
'direction' => 'rtl',
'symbol' => ' TL',
'symbol' => ' ',
'separator' => ',',
'point' => '.',
'decimals' => 2,

5
supervisord/cron.conf Normal file
View File

@ -0,0 +1,5 @@
[program:cron]
command=/usr/sbin/cron -f -l 8
autostart=true
stdout_logfile=/var/log/cron.out.log
stderr_logfile=/var/log/cron.err.log

13
uninstall.sh Normal file
View File

@ -0,0 +1,13 @@
#!/bin/bash
echo "|| ## Openclassify ## || "
echo "|| Removing Bye bye || "
docker compose down -v
# TODO @fatihalp
# reinstall
docker compose build --no-cache
docker compose up --force-recreate

View File

@ -1,15 +0,0 @@
const mix = require('laravel-mix');
/*
|--------------------------------------------------------------------------
| Mix Asset Management
|--------------------------------------------------------------------------
|
| Mix provides a clean, fluent API for defining some Webpack build steps
| for your Laravel applications. By default, we are compiling the CSS
| file for the application as well as bundling up all the JS files.
|
*/
mix.js('resources/assets/js/app.js', 'public/js')
.vue();