mirror of
https://github.com/openclassify/openclassify.git
synced 2026-01-11 18:01:10 -06:00
Compare commits
165 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3658be4a44 | ||
|
|
7c206dd392 | ||
|
|
18193f00d7 | ||
|
|
85339d41b0 | ||
|
|
38c3438e52 | ||
|
|
156e18b600 | ||
|
|
5eec7c127b | ||
|
|
8130534405 | ||
|
|
938855b302 | ||
|
|
ed42318732 | ||
|
|
a3c98b1e34 | ||
|
|
46cf908c19 | ||
|
|
5c89df907e | ||
|
|
0c23163a57 | ||
|
|
bac028312a | ||
|
|
e8863e32cd | ||
|
|
361815107f | ||
|
|
f8f932893c | ||
|
|
63c0387e15 | ||
|
|
050bca13e5 | ||
|
|
8bf337bba1 | ||
|
|
dfc5f9c894 | ||
|
|
77426dfbe8 | ||
|
|
de2cd7ec5c | ||
|
|
4e98de314a | ||
|
|
f6899a205a | ||
|
|
965c588475 | ||
|
|
eefc91d9e5 | ||
|
|
254e2aaeed | ||
|
|
56df6c3fb2 | ||
|
|
4216f0d9ad | ||
|
|
4272bfd569 | ||
|
|
54e841cbae | ||
|
|
b48a163a89 | ||
|
|
b6a1b17043 | ||
|
|
dbc62a329e | ||
|
|
bfe604a880 | ||
|
|
4d10ed80f0 | ||
|
|
12aa5d84ab | ||
|
|
844613772c | ||
|
|
ca916e4455 | ||
|
|
4390603cdd | ||
|
|
601311beef | ||
|
|
229350ad1d | ||
|
|
fb8c14f643 | ||
|
|
386e511a06 | ||
|
|
121af05159 | ||
|
|
a45f83ef23 | ||
|
|
8ae88e954a | ||
|
|
201d39d645 | ||
|
|
8f735c046b | ||
|
|
7eb4ef2932 | ||
|
|
2fc9d623f6 | ||
|
|
58a9093464 | ||
|
|
5d507e7be7 | ||
|
|
124d138edf | ||
|
|
7e920366e4 | ||
|
|
a6f6810dd1 | ||
|
|
84dce14077 | ||
|
|
b16e846d05 | ||
|
|
2526947af3 | ||
|
|
1f64785719 | ||
|
|
d95bd3bf4d | ||
|
|
dcc6126e5a | ||
|
|
4f90ae94f2 | ||
|
|
c6c9fa51a5 | ||
|
|
714c444d8f | ||
|
|
6adf68474b | ||
|
|
4973bd08e8 | ||
|
|
5561be3ebf | ||
|
|
f0279bb883 | ||
|
|
15aca28ce2 | ||
|
|
bad7d2130a | ||
|
|
1d1d08ea07 | ||
|
|
bbf3877959 | ||
|
|
8c80ab3134 | ||
|
|
8ca36c7e41 | ||
|
|
0d88dea4b7 | ||
|
|
d953c36486 | ||
|
|
2cb95e19ab | ||
|
|
19cdf2620e | ||
|
|
a81b488361 | ||
|
|
e3180e799e | ||
|
|
d6a3ee73f5 | ||
|
|
4a4783ab53 | ||
|
|
4f0fed8541 | ||
|
|
d1fca33821 | ||
|
|
477708a8e2 | ||
|
|
e38aa039d5 | ||
|
|
a22a3750a6 | ||
|
|
4a7d2f64e0 | ||
|
|
7ee8924714 | ||
|
|
16304e8fb4 | ||
|
|
642238f550 | ||
|
|
9adeda9a44 | ||
|
|
0a92e82d5b | ||
|
|
0b6152ad95 | ||
|
|
6e227536c0 | ||
|
|
eadb71c99d | ||
|
|
6c499c4cad | ||
|
|
67be2ee781 | ||
|
|
6223429b01 | ||
|
|
f29cf64277 | ||
|
|
1d74f08e4c | ||
|
|
7e32b4f374 | ||
|
|
07e1f6a4fe | ||
|
|
78a056853f | ||
|
|
b3acca94e3 | ||
|
|
b9c175c464 | ||
|
|
34e41c7334 | ||
|
|
950d92e40a | ||
|
|
721da8e1be | ||
|
|
6ae6e9f958 | ||
|
|
03f10d384f | ||
|
|
5ce8275bf5 | ||
|
|
c401f2a5c5 | ||
|
|
6494508e35 | ||
|
|
42fede30db | ||
|
|
8689f3de98 | ||
|
|
fe14276d79 | ||
|
|
416eb290f5 | ||
|
|
c806568ef7 | ||
|
|
ea81195a6e | ||
|
|
1b84c227c3 | ||
|
|
2cf4f7c7b0 | ||
|
|
2ba784cbd5 | ||
|
|
211c70d654 | ||
|
|
962c57ec2c | ||
|
|
7153c548b2 | ||
|
|
ecae9feecc | ||
|
|
1c0d0ed824 | ||
|
|
c41545c72b | ||
|
|
e46fd7d972 | ||
|
|
64e3ab9ddd | ||
|
|
1636208f45 | ||
|
|
ac732c261c | ||
|
|
197b04e373 | ||
|
|
d9d45edb35 | ||
|
|
e15a93e556 | ||
|
|
dd9f26697f | ||
|
|
64a12c49cd | ||
|
|
916e749156 | ||
|
|
2a88942390 | ||
|
|
4f6977f397 | ||
|
|
cedbe5594e | ||
|
|
e535d9bc3a | ||
|
|
bf7ac475e8 | ||
|
|
f207b352e8 | ||
|
|
ea5af5b6f8 | ||
|
|
ce080263a5 | ||
|
|
619eb23016 | ||
|
|
6860fdfe06 | ||
|
|
2797fd9355 | ||
|
|
31e55e0ff9 | ||
|
|
f5655fbd4a | ||
|
|
e17027a1aa | ||
|
|
2c1e380022 | ||
|
|
d3ff814222 | ||
|
|
11cb190230 | ||
|
|
58b8736008 | ||
|
|
d6ca910ef8 | ||
|
|
eb787a6bbf | ||
|
|
a1809f61c3 | ||
|
|
8a593834ec | ||
|
|
94cd57193c |
6
.devcontainer/devcontainer.json
Normal file
6
.devcontainer/devcontainer.json
Normal 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
23
.env-sail
Normal 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
16
.env.example
Normal 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
33
.gitignore
vendored
@ -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
|
||||
@ -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.
|
||||
@ -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
|
||||
69
INSTALL.md
69
INSTALL.md
@ -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.
|
||||
|
||||
1
Procfile
1
Procfile
@ -1 +0,0 @@
|
||||
web: INSTALLED=false php artisan streams:compile && INSTALLED=true bin/heroku-php-apache2 public/
|
||||
161
README.md
161
README.md
@ -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>
|
||||
|
||||
|
||||
|
||||
[](https://scrutinizer-ci.com/g/openclassify/openclassify/?branch=master)
|
||||
[](https://scrutinizer-ci.com/g/openclassify/openclassify/build-status/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>
|
||||
|
||||
|
||||
[](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>
|
||||
|
||||
15
SECURITY.md
15
SECURITY.md
@ -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.
|
||||
@ -1 +0,0 @@
|
||||
theme: jekyll-theme-cayman
|
||||
0
addons/.gitkeep
Normal file
0
addons/.gitkeep
Normal file
20
app.json
20
app.json
@ -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"
|
||||
}
|
||||
}
|
||||
64
app/Notification/ActivateYourAccount.php
Normal file
64
app/Notification/ActivateYourAccount.php
Normal 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])
|
||||
);
|
||||
}
|
||||
}
|
||||
72
app/Notification/PasswordInvalidated.php
Normal file
72
app/Notification/PasswordInvalidated.php
Normal 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])
|
||||
);
|
||||
}
|
||||
}
|
||||
69
app/Notification/ResetYourPassword.php
Normal file
69
app/Notification/ResetYourPassword.php
Normal 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])
|
||||
);
|
||||
}
|
||||
}
|
||||
52
app/Notification/UserHasBeenActivated.php
Normal file
52
app/Notification/UserHasBeenActivated.php
Normal 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')
|
||||
);
|
||||
}
|
||||
}
|
||||
110
app/Notification/UserHasRegistered.php
Normal file
110
app/Notification/UserHasRegistered.php
Normal 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,
|
||||
];
|
||||
}
|
||||
}
|
||||
68
app/Notification/UserPendingActivation.php
Normal file
68
app/Notification/UserPendingActivation.php
Normal 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')
|
||||
);
|
||||
}
|
||||
}
|
||||
46
build.xml
46
build.xml
@ -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>
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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,
|
||||
|
||||
],
|
||||
];
|
||||
|
||||
@ -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',
|
||||
|
||||
@ -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),
|
||||
],
|
||||
],
|
||||
|
||||
];
|
||||
|
||||
@ -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',
|
||||
],
|
||||
|
||||
@ -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');
|
||||
}
|
||||
}
|
||||
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
@ -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 */;
|
||||
|
||||
@ -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
7
docker/mysql/Dockerfile
Normal 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
37
docker/mysql/my.cnf
Normal 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
9
docker/nginx/Dockerfile
Normal 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
35
docker/nginx/default.conf
Normal 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
69
docker/php/Dockerfile
Normal 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
29
docker/php/entrypoint.sh
Executable 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
11
docker/php/opcache.ini
Normal 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
25
docker/php/php.deploy.ini
Normal 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
|
||||
25
docker/php/php.development.ini
Normal file
25
docker/php/php.development.ini
Normal 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
7
docker/php/xdebug.ini
Normal 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
128
docs/CONTRIBUTING.md
Normal 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.
|
||||
|
||||

|
||||
|
||||
* 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, don’t tell. (“What do you think about trying…?” rather than “Don’t 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
20
docs/LICENSE.md
Normal 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
273
docs/cli-commands.md
Normal 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
|
||||
```
|
||||
|
||||
84
docs/other-install-methods.md
Normal file
84
docs/other-install-methods.md
Normal 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
10
install.sh
Normal 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
|
||||
@ -1,7 +0,0 @@
|
||||
location / {
|
||||
try_files $uri @rewriteapp;
|
||||
}
|
||||
|
||||
location @rewriteapp {
|
||||
rewrite ^(.*)$ /index.php$1 last;
|
||||
}
|
||||
BIN
public/openclassify-logo.png
Normal file
BIN
public/openclassify-logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 36 KiB |
@ -11,6 +11,12 @@ const requireModulesVueFiles = (moduleVueFiles) => {
|
||||
})
|
||||
}
|
||||
|
||||
requireModulesVueFiles(require.context(
|
||||
'../../../addons',
|
||||
true,
|
||||
/\.*\.vue$/i
|
||||
))
|
||||
|
||||
requireModulesVueFiles(require.context(
|
||||
'../../../vendor/visiosoft',
|
||||
true,
|
||||
|
||||
@ -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',
|
||||
]
|
||||
|
||||
];
|
||||
|
||||
@ -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
5
supervisord/cron.conf
Normal 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
13
uninstall.sh
Normal 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
|
||||
|
||||
@ -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();
|
||||
Loading…
Reference in New Issue
Block a user