A fork of shimmie2 maintianed not by cavemanon for *our* booru
Go to file
Shish d17e207984 Have get_arg never return null
90% of places assume it will never return null, and they will break in
weird ways if it does return null
2019-11-04 00:40:10 +00:00
.github/ISSUE_TEMPLATE Update issue templates 2018-11-05 19:10:06 +00:00
core Have get_arg never return null 2019-11-04 00:40:10 +00:00
ext Have get_arg never return null 2019-11-04 00:40:10 +00:00
tests stub config so scrutinizer stops complaining about missing define()s 2019-10-01 13:28:38 +01:00
themes formatting 2019-11-02 19:57:34 +00:00
.dockerignore A docker container for making testing easier 2018-11-07 00:43:01 +00:00
.editorconfig PSR-2. I'm not a huge fan, but ugly consistency beats no consistency... 2019-05-28 17:59:38 +01:00
.gitignore remove a bunch of dead variables and things 2019-10-02 11:23:57 +01:00
.htaccess Added webp upload and thumbnailing support 2019-06-09 14:14:04 -05:00
.php_cs.dist ignore data dir 2019-07-05 19:20:10 +01:00
.scrutinizer.yml stub config so scrutinizer stops complaining about missing define()s 2019-10-01 13:28:38 +01:00
.travis.yml travis adjustment 2019-08-14 08:51:03 -05:00
composer.json s/Context/EventTracer/g 2019-07-05 20:49:47 +01:00
composer.lock composer update 2019-10-01 10:31:31 +01:00
Dockerfile slightly more verbose docker install 2019-11-03 18:55:37 +00:00
index.php fix merge 2019-09-29 15:44:59 +01:00
LICENSE.txt Create LICENSE.txt 2016-11-27 20:28:16 +00:00
README.markdown bump required versions based on Debian Stable 2019-10-01 11:06:40 +01:00

     _________.__     .__                   .__         ________   
    /   _____/|  |__  |__|  _____    _____  |__|  ____  \_____  \  
    \_____  \ |  |  \ |  | /     \  /     \ |  |_/ __ \  /  ____/  
    /        \|   Y  \|  ||  Y Y  \|  Y Y  \|  |\  ___/ /       \  
   /_______  /|___|  /|__||__|_|  /|__|_|  /|__| \___  >\_______ \ 
           \/      \/           \/       \/          \/         \/ 
                                                                

Shimmie

Build Status Scrutinizer Code Quality Code Coverage (master)

This is the main branch of Shimmie, if you know anything at all about running websites, this is the version to use.

Alternatively if you want a version that will never have significant changes, check out one of the versioned branches.

Requirements

  • These are generally based on "whatever is in Debian Stable", because that's conservative without being TOO painfully out of date, and is a nice target for the unit test Docker build.
  • A database: PostgreSQL 11+ / MariaDB 10.3+ / SQLite 3.27+
  • Stable PHP (7.3+ as of writing)
  • GD or ImageMagick

Installation

  1. Download the latest release under Releases.
  2. Unzip shimmie into a folder on the web host
  3. Create a blank database
  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 not, you should be given instructions on how to fix any errors~

Installation (Development)

  1. Download shimmie via the "Download Zip" button on the master branch.
  2. Unzip shimmie into a folder on the web host
  3. Install Composer. (If you don't already have it)
  4. Run composer install in the shimmie folder.
  5. Follow instructions noted in "Installation" starting from step 3.

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.

Upgrade from earlier versions

I very much recommend going via each major release in turn (eg, 2.0.6 -> 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 enough to be a pain.

Custom Configuration

Various aspects of Shimmie can be configured to suit your site specific needs via the file data/config/shimmie.conf.php (created after installation).

Take a look at core/sys_config.php for the available options that can be used.

Custom User Classes

User classes can be added to or altered by placing them in data/config/user-classes.conf.php.

For example, one can override the default anonymous "allow nothing" permissions like so:

new UserClass("anonymous", "base", [
	Permissions::CREATE_COMMENT => True,
	Permissions::EDIT_IMAGE_TAG => True,
	Permissions::EDIT_IMAGE_SOURCE => True,
	Permissions::CREATE_IMAGE_REPORT => True,
]);

For a moderator class, being a regular user who can delete images and comments:

new UserClass("moderator", "user", [
	Permissions::DELETE_IMAGE => True,
	Permissions::DELETE_COMMENT => True,
]);

For a list of permissions, see core/permissions.php

Development Info

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 themes, be careful with these, and avoid styling them, eg:

  • shm-thumb = outermost element of a thumbnail
    • data-tags
    • data-post-id
  • shm-toggler = click this to toggle elements that match the selector
    • data-toggle-sel
  • shm-unlocker = click this to unlock elements that match the selector
    • data-unlock-sel
  • shm-clink = a link to a comment, flash the target element when clicked
    • data-clink-sel

Please tell me if those docs are lacking in any way, so that they can be improved for the next person who uses them

Contact

Email: webmaster at shishnet.org

Issue/Bug tracker: http://github.com/shish/shimmie2/issues

Licence

All code is released under the GNU GPL Version 2 unless mentioned otherwise.

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.