- name: "Set 'apache_install: True' and 'apache_enabled: True'"
  set_fact:
    apache_install: True
    apache_enabled: True

- name: APACHE - run 'httpd' role
  include_role:
    name: httpd


- name: "Set 'postgresql_install: True' and 'postgresql_enabled: True'"
  set_fact:
    postgresql_install: True
    postgresql_enabled: True

- name: POSTGRESQL - run 'postgresql' role (attempt to install & enable PostgreSQL)
  include_role:
    name: postgresql


- name: Install 8 php packages (debuntu)
  package:
    name:
      - php{{ php_version }}-pgsql
      - php{{ php_version }}-curl
      - php{{ php_version }}-zip
      - php{{ php_version }}-gd
      - php{{ php_version }}-mbstring    # 2020-06-15: Required by Moodle 3.9+
      - php{{ php_version }}-cli     # 2020-06-15: In the past this included (above) mbstring? However this is not true on Ubuntu Server 20.04 LTS.
      - php{{ php_version }}-intl    # 2020-12-03: Required by Moodle 3.10+
      - php{{ php_version }}-soap    # 2020-12-03: Recommended by Moodle 3.10+
    state: present
  when: is_debuntu

- name: Does {{ moodle_base }}/config-dist.php exist? (indicating Moodle is/was installed)
  stat:
    path: "{{ moodle_base }}/config-dist.php"    # /opt/iiab/moodle
  register: moodle

- name: Clone (i.e. use git to download) {{ moodle_repo_url }} to {{ moodle_base }} (~300 MB)
  git:
    repo: "{{ moodle_repo_url }}"
    dest: "{{ moodle_base }}"
    depth: 1
    force: yes
    version: "MOODLE_{{ moodle_version }}_STABLE"
    #version: master   # TEMPORARY DURING MAY 2018 TESTING, installed 3.5beta+ = https://download.moodle.org/releases/development/
  #ignore_errors: yes
  when: internet_available and moodle.stat.exists is defined and not moodle.stat.exists

- name: Create dir {{ moodle_base }} owned by {{ apache_user }} (for config file?)
  file:
    state: directory
    path: "{{ moodle_base }}"
    owner: "{{ apache_user }}"    # www-data
    recurse: yes

- name: Create dir {{ content_base }}/dbdata/moodle owned by {{ apache_user }}
  file:
    state: directory
    path: "{{ content_base }}/dbdata/moodle"    # /library
    owner: "{{ apache_user }}"

- name: Create dir {{ moodle_data }} ({{ apache_user }}:{{ apache_user }}, '0770')
  file:
    state: directory
    path: "{{ moodle_data }}"    # /library/moodle
    owner: "{{ apache_user }}"
    group: "{{ apache_user }}"
    #mode: '0770'    # Regardless, permissions end up as: drwxrwsrwx

- name: Remove stock /etc/{{ apache_conf_dir }}/moodle.conf
  file:
    path: "/etc/{{ apache_conf_dir }}/moodle.conf"    # apache2/sites-available
    state: absent

# 2021-02-01: Not nec if we can hopefully migrate from Apache to NGINX soon!
- name: Install /etc/{{ apache_conf_dir }}/022-moodle.conf from template
  template:
    src: 022-moodle.j2
    dest: "/etc/{{ apache_conf_dir }}/022-moodle.conf"

# roles/postgresql/templates/postgresql-iiab.service WAS INSTALLED HERE:
# /etc/systemd/system/postgresql-iiab.service
- name: Start 'postgresql-iiab' systemd service, to configure Moodle's DB
  systemd:
    name: postgresql-iiab
    state: started

- name: Create PostgreSQL db user Admin/changeme
  postgresql_user:
    name: Admin
    password: changeme
    encrypted: yes   # Required by PostgreSQL 10+ e.g. Ubuntu 18.04's PostgreSQL 10.3+, see https://github.com/iiab/iiab/issues/759
    role_attr_flags: NOSUPERUSER,NOCREATEROLE,NOCREATEDB
    state: present
  become: yes
  become_user: postgres

- name: 'Create database: {{ moodle_database_name }}'
  postgresql_db:
    name: "{{ moodle_database_name }}"
    encoding: utf8
    owner: Admin
    template: template1
    state: present
  become: yes
  become_user: postgres

- name: Install {{ moodle_base }}/moodle_installer from template ('0755')
  template:
    src: moodle_installer
    dest: "{{ moodle_base }}"
    mode: '0755'

- name: (Re)Start 'postgresql-iiab' systemd service
  systemd:
    name: postgresql-iiab
    state: restarted
    #enabled: yes    # Service ends up enabled regardless

- name: (Re)Start '{{ apache_service }}' systemd service
  systemd:
    name: "{{ apache_service }}"
    state: restarted

- name: Does {{ moodle_base }}/config.php exist?
  stat:
    path: "{{ moodle_base }}/config.php"
  register: config

- name: Execute {{ moodle_base }}/moodle_installer
  shell: "{{ moodle_base }}/moodle_installer"
  when: config.stat.exists is defined and not config.stat.exists

# 2021-02-01: Let's stick with Moodle's default (640)
#- name: Make {{ moodle_base }}/config.php readable, with permission '0644'
#  #command: chown -R {{ apache_user }} {{ moodle_base }}
#  file:
#    path: "{{ moodle_base }}/config.php"    # /opt/iiab/moodle
#    mode: '0644'


# RECORD Moodle AS INSTALLED

- name: "Set 'moodle_installed: True'"
  set_fact:
    moodle_installed: True

- name: "Add 'moodle_installed: True' to {{ iiab_state_file }}"
  lineinfile:
    path: "{{ iiab_state_file }}"    # /etc/iiab/iiab_state.yml
    regexp: '^moodle_installed'
    line: 'moodle_installed: True'
