- name: 'Create MySQL database with name: {{ nextcloud_dbname }}'
  mysql_db:
    name: "{{ nextcloud_dbname }}"

- name: Add username/password to the MySQL database (associated with trusted IP's like localhost)
  mysql_user:
    name: "{{ nextcloud_dbuser }}"
    host: "{{ item }}"
    password: "{{ nextcloud_dbpassword }}"
    priv: "{{ nextcloud_dbname }}.*:ALL,GRANT"
  with_items:
#    - 127.0.0.1
#    - ::1
    - localhost


# https://docs.nextcloud.com/server/18/admin_manual/installation/command_line_installation.html
- name: Create data dir {{ nextcloud_data_dir }}
  file:
    state: directory
    path: "{{ nextcloud_data_dir }}"    # /library/www/nextcloud/data
    owner: "{{ apache_user }}"          # www-data on debuntu
    group: "{{ apache_user }}"

# 1 of 3: Very Old Way... from OwnCloud days
#- name: Install {{ nextcloud_root_dir }}/config/autoconfig.php from template
#  template:
#    src: autoconfig.php.j2
#    dest: "{{ nextcloud_root_dir }}/config/autoconfig.php"
#    owner: "{{ apache_user }}"
#    group: "{{ apache_user }}"
#    mode: '0640'

# 2 of 3: Another Possible Way... not quite ready for prime time
# - name: Set 'datadirectory' to {{ nextcloud_data_dir }} in {{ nextcloud_root_dir }}/config/config.php
#   lineinfile:
#     path: "{{ nextcloud_root_dir }}/config/config.php"
#     regexp: "^  'datadirectory' => "
#     insertafter: '^\$CONFIG = array \('
#     line: "  'datadirectory' => '{{ nextcloud_data_dir }}',"

# 2020-02-16: SHOULD THIS STANZA GO AWAY IN FUTURE, in favor of 'nextcloud_installed is undefined' test below?
- name: Use php to determine if Nextcloud is installed (which would cause the install wizard to FAIL in the next step)
  shell: >
    php {{ nextcloud_root_dir }}/occ status |
    gawk '/installed:/ { print $3 }'
  become: yes
  become_user: "{{ apache_user }}"
  register: returned

# 3 of 3: New Way In 2020... use --data-dir "{{ nextcloud_data_dir }}"
# https://docs.nextcloud.com/server/18/admin_manual/installation/command_line_installation.html
# https://docs.nextcloud.com/server/18/admin_manual/configuration_server/occ_command.html#command-line-installation-label
- name: Run Nextcloud initial install wizard, seeding data dir {{ nextcloud_data_dir }} (IF THIS FAILS, CONSIDER MANUALLY DROPPING MySQL db '{{ nextcloud_dbname }}' THEN RERUN THIS)
  shell: >
    cd {{ nextcloud_root_dir }};
    php occ maintenance:install
    --database "mysql"
    --database-name "{{ nextcloud_dbname }}"
    --database-user "{{ nextcloud_dbuser }}"
    --database-pass "{{ nextcloud_dbpassword }}"
    --admin-user "{{ nextcloud_admin_user }}"
    --admin-pass "{{ nextcloud_admin_password }}"
    --data-dir "{{ nextcloud_data_dir }}"
  become: yes
  become_user: "{{ apache_user }}"
  #when: nextcloud_installed is undefined
  when: returned.stdout == "false"    # and nextcloud_enabled


# https://docs.nextcloud.com/server/18/admin_manual/installation/source_installation.html#php-fpm-configuration-notes
- name: Set 'clear_env = no' in /etc/php/{{ php_version }}/fpm/pool.d/www.conf
  lineinfile:
    path: "/etc/php/{{ php_version }}/fpm/pool.d/www.conf"
    regexp: '^clear_env'
    insertafter: ';.*clear_env'
    line: 'clear_env = no'

- name: 'Allow Nextcloud access from all hosts and IP addresses (SEE ALSO: /etc/apache2/sites-available/nextcloud.conf)'
  command: php {{ nextcloud_root_dir }}/occ config:system:set trusted_domains 1 --value=*
  become: yes
  become_user: "{{ apache_user }}"
