Create standalone authored by bgm's avatar bgm
# Todo
* Installer
* Login page (and/or login via Oauth, but we should have something easy to use)
* Password reset
* 2fa support (via extension?)
* Manage users -> Setting a password for a Contact - Standalone had something
* Manage roles/permissions (re-use what WordPress has? or Standalone?)
* Basic theme for frontend pages?
Things to consider:
* Translation / multi-lingual (lcMessages would be fine)
* Installation documentation, visibility on civicrm.org/download
# Tooling
* buildkit support
* cv support
* tar.gz release builder
* demo site
# Random
* Github repo civicrm-standalone, that we could build using composer (require civicrm-core, civicrm-setup, etc), and distribute on c.o as a tar.gz.
* Login feature could be an extension, and could be disabled if people want to use something else such as Oauth SSO or LDAP.
# civicrm-core: Files to add
(I have some very quick & dirty working versions of these files, need to create a WIP PR that we can apply during the build process)
* CRM/Utils/System/Standalone.php
* CRM/Core/Permission/Standalone.php
* CRM/Utils/Hook/Standalone.php
* templates/CRM/common/standalone.tpl
# Manual installation
## Using composer
```
mkdir /var/www/standalone/
cd /var/www/standalone/
composer config extra.enable-patching true
composer config minimum-stability dev
composer require civicrm/civicrm-core
composer require civicrm/civicrm-packages
```
Directories:
```
cd /var/www/standalone/
# Keeping smarty files outside the public webroot
mkdir templates_c
chgrp www-data templates_c
chmod g+w templates_c
# Some uploads are assumed to be publicly accessible, I think?
mkdir web/upload
chgrp www-data upload
chmod g+w upload
```
## civicrm.settings.php
Since the installer does not work, generate manually:
```
cd /var/www/standalone/
cp vendor/civicrm/civicrm-core/templates/CRM/common/civicrm.settings.php.template civicrm.settings.php
```
And then edit and set things manually:
* UF = Standalone
* civicrm_root = ..
also need to patch this bit to set include path for civicrm-packages:
```
$include_path = '.' . PATH_SEPARATOR .
$civicrm_root . PATH_SEPARATOR .
$civicrm_root . DIRECTORY_SEPARATOR . '../civicrm-packages' . PATH_SEPARATOR .
get_include_path( );
```
(how does Drupal8 handle that?)
## Initialize the database
Copied `sql/civicrm.mysql` from a Drupal8 codebase, then:
```
cat vendor/civicrm/civicrm-core/sql/civicrm.mysql | mysql -u civitest -p civitest
cat vendor/civicrm/civicrm-core/sql/civicrm_generated.mysql | mysql -u civitest -p civitest
```
and then in mysql:
```
-- probablement pas nécessaire:
-- insert into civicrm_contact (organization_name, contact_type, display_name) values ('Test Org', 'Organization', 'Test Org');
insert into civicrm_setting (name, value, domain_id, is_domain) values ('installed', 'i:1;', 1, 1);
```