2014-04-26 21:43:13 +00:00
```
2012-02-12 19:42:37 +00:00
_________ .__ .__ .__ ________
/ _____ /| |__ |__| _____ _____ |__| ____ \_____ \
\_____ \ | | \ | | / \ / \ | |_/ __ \ / ____ /
/ \| Y \| || Y Y \| Y Y \| |\ ___/ / \
/_______ /|___| /|__||__|_| /|__|_| /|__| \___ >\_______ \
2014-04-26 21:52:31 +00:00
\/ \/ \/ \/ \/ \/
2014-04-26 21:43:13 +00:00
```
2012-02-12 19:40:38 +00:00
2014-04-26 21:52:31 +00:00
# Shimmie
2014-04-26 21:43:13 +00:00
[![Build Status ](https://travis-ci.org/shish/shimmie2.svg?branch=master )](https://travis-ci.org/shish/shimmie2)
2016-06-19 16:41:40 +00:00
[![Scrutinizer Code Quality ](https://scrutinizer-ci.com/g/shish/shimmie2/badges/quality-score.png?b=master )](https://scrutinizer-ci.com/g/shish/shimmie2/?branch=master)
[![Code Coverage ](https://scrutinizer-ci.com/g/shish/shimmie2/badges/coverage.png?b=master )](https://scrutinizer-ci.com/g/shish/shimmie2/?branch=master)
(master)
[![Build Status ](https://travis-ci.org/shish/shimmie2.svg?branch=develop )](https://travis-ci.org/shish/shimmie2)
[![Scrutinizer Code Quality ](https://scrutinizer-ci.com/g/shish/shimmie2/badges/quality-score.png?b=develop )](https://scrutinizer-ci.com/g/shish/shimmie2/?branch=develop)
[![Code Coverage ](https://scrutinizer-ci.com/g/shish/shimmie2/badges/coverage.png?b=develop )](https://scrutinizer-ci.com/g/shish/shimmie2/?branch=develop)
(develop)
2007-04-16 11:58:25 +00:00
2014-04-26 21:52:31 +00:00
This is the main branch of Shimmie, if you know anything at all about running
websites, this is the version to use.
2014-04-26 21:47:14 +00:00
2014-04-26 21:52:31 +00:00
Alternatively if you want a version that will never have significant changes,
check out one of the versioned branches.
2007-04-16 11:58:25 +00:00
2014-04-26 21:52:31 +00:00
# Requirements
2014-04-26 21:43:13 +00:00
2015-08-01 12:41:47 +00:00
- MySQL/MariaDB 5.1+ (with experimental support for PostgreSQL 9+ and SQLite 3)
2018-11-05 19:47:05 +00:00
- [Stable PHP ](https://en.wikipedia.org/wiki/PHP#Release_history ) (7.1+ as of writing)
2014-04-26 21:43:13 +00:00
- GD or ImageMagick
2007-04-16 11:58:25 +00:00
2014-04-26 21:52:31 +00:00
# Installation
2014-04-26 21:43:13 +00:00
2016-06-19 03:51:48 +00:00
1. Download the latest release under [Releases ](https://github.com/shish/shimmie2/releases ).
2016-06-19 16:41:40 +00:00
2. Unzip shimmie into a folder on the web host
3. Create a blank database
2016-06-19 03:51:48 +00:00
4. Visit the folder with a web browser
5. Enter the location of the database
6. Click "install". Hopefully you'll end up at the welcome screen; if
2007-04-16 11:58:25 +00:00
not, you should be given instructions on how to fix any errors~
2016-05-19 14:15:02 +00:00
# Installation (Development)
2016-06-19 03:55:32 +00:00
1. Download shimmie via the "Download Zip" button on the [develop ](https://github.com/shish/shimmie2/tree/develop ) branch.
2. Unzip shimmie into a folder on the web host
3. Install [Composer ](https://getcomposer.org/ ). (If you don't already have it)
2017-03-10 15:49:58 +00:00
4. Run `composer install` in the shimmie folder.
5. Follow instructions noted in "Installation" starting from step 3.
2016-05-19 14:15:02 +00:00
2018-11-10 11:19:56 +00:00
# Docker
Useful for testing in a known-good environment, this command will build a simple debian image and run all the unit tests inside it:
```
docker build -t shimmie .
```
Once you have an image which has passed all tests, you can then run it to get a live system:
```
docker run -p 0.0.0.0:8123:8000 shimmie
```
Then you can visit your server on port 8123 to see the site.
Note that the docker image is entirely self-contained and has no persistence (assuming you use the sqlite database); each `docker run` will give a clean un-installed image.
2014-04-26 21:52:31 +00:00
### Upgrade from earlier versions
2014-04-26 21:43:13 +00:00
2010-03-02 02:48:11 +00:00
I very much recommend going via each major release in turn (eg, 2.0.6
2014-04-26 21:47:14 +00:00
-> 2.1.3 -> 2.2.4 -> 2.3.0 rather than 2.0.6 -> 2.3.0).
While the basic database and file formats haven't changed *completely* , it's different
2010-03-02 02:48:11 +00:00
enough to be a pain.
2014-04-26 21:52:31 +00:00
## Custom Configuration
2014-04-26 21:43:13 +00:00
2012-03-31 17:59:28 +00:00
Various aspects of Shimmie can be configured to suit your site specific needs
2014-04-26 21:43:13 +00:00
via the file `data/config/shimmie.conf.php` (created after installation).
Take a look at `core/sys_config.inc.php` for the available options that can
2012-03-31 17:59:28 +00:00
be used.
2012-02-12 19:56:21 +00:00
2014-04-26 21:52:31 +00:00
#### Custom User Classes
2014-04-26 21:43:13 +00:00
2014-04-26 21:52:31 +00:00
User classes can be added to or altered by placing them in
`data/config/user-classes.conf.php` .
2014-04-26 21:47:14 +00:00
For example, one can override the default anonymous "allow nothing" permissions like so:
2012-03-19 11:27:01 +00:00
2014-04-26 21:43:13 +00:00
```php
2012-03-19 11:27:01 +00:00
new UserClass("anonymous", "base", array(
2012-05-03 13:55:13 +00:00
"create_comment" => True,
2012-03-19 11:27:01 +00:00
"edit_image_tag" => True,
"edit_image_source" => True,
"create_image_report" => True,
));
2014-04-26 21:43:13 +00:00
```
2012-03-19 11:27:01 +00:00
2014-04-26 21:47:14 +00:00
For a moderator class, being a regular user who can delete images and comments:
2012-04-28 10:02:12 +00:00
2014-04-26 21:43:13 +00:00
```php
2012-04-28 10:02:12 +00:00
new UserClass("moderator", "user", array(
"delete_image" => True,
"delete_comment" => True,
));
2014-04-26 21:43:13 +00:00
```
2012-04-28 10:02:12 +00:00
2014-04-26 21:43:13 +00:00
For a list of permissions, see `core/userclass.class.php`
2012-03-19 11:27:01 +00:00
2014-04-26 21:52:31 +00:00
# Development Info
2014-04-26 21:43:13 +00:00
2012-08-15 09:43:28 +00:00
ui-* cookies are for the client-side scripts only; in some configurations
(eg with varnish cache) they will be stripped before they reach the server
shm-* CSS classes are for javascript to hook into; if you're customising
2012-08-15 20:19:51 +00:00
themes, be careful with these, and avoid styling them, eg:
2012-08-15 09:43:28 +00:00
2012-08-15 19:42:56 +00:00
- shm-thumb = outermost element of a thumbnail
2014-04-26 21:43:13 +00:00
* data-tags
* data-post-id
2012-08-15 20:19:51 +00:00
- shm-toggler = click this to toggle elements that match the selector
2014-04-26 21:43:13 +00:00
* data-toggle-sel
2012-08-15 20:19:51 +00:00
- shm-unlocker = click this to unlock elements that match the selector
2014-04-26 21:43:13 +00:00
* data-unlock-sel
2012-08-15 20:19:51 +00:00
- shm-clink = a link to a comment, flash the target element when clicked
2014-04-26 21:43:13 +00:00
* data-clink-sel
2012-08-15 19:42:56 +00:00
2014-04-26 21:43:13 +00:00
Documentation: http://shimmie.shishnet.org/doc/
2010-07-07 12:02:27 +00:00
Please tell me if those docs are lacking in any way, so that they can be
improved for the next person who uses them
2014-04-26 21:52:31 +00:00
# Contact
2014-04-26 21:43:13 +00:00
IRC: `#shimmie` on [Freenode ](irc.freenode.net )
Email: webmaster at shishnet.org
Issue/Bug tracker: http://github.com/shish/shimmie2/issues
2007-04-16 11:58:25 +00:00
2014-04-26 21:52:31 +00:00
# Licence
2014-04-26 21:43:13 +00:00
All code is released under the [GNU GPL Version 2 ](http://www.gnu.org/licenses/gpl-2.0.html ) unless mentioned otherwise.
2016-06-19 16:41:40 +00:00
If you give shimmie to someone else, you have to give them the source (which
should be easy, as PHP is an interpreted language...). If you want to add
customisations to your own site, then those customisations belong to you,
and you can do what you want with them.