# "Emergency" reinstalls (from /opt/iiab/downloads/wordpress.tar.gz
# to /library/wordpress) should also work offline...
#
# ONLINE OR OFFLINE, IF YOU NEED A CLEAN REINSTALL OF WORDPRESS DURING YOUR
# NEXT RUN OF "./runrole wordpress" OR "./iiab-install" PLEASE FIRST DO:
#
# - "mv /library/wordpress /library/wordpress.old"
# - back up WordPress's database then drop it
#
# REASON: "keep_newer: yes" below tries to preserve WordPress's self-upgrades
# and security enhancements using timestamps under /library/wordpress, as these
# can arise without warning when WordPress is online, since WordPress ~4.8

- name: Download {{ wordpress_download_base_url }}/{{ wordpress_src }} to {{ downloads_dir }}
  get_url:
    url: "{{ wordpress_download_base_url }}/{{ wordpress_src }}"
    dest: "{{ downloads_dir }}"
    timeout: "{{ download_timeout }}"
#   force: yes
#   backup: yes
  register: wp_download_output
  when: internet_available | bool

- name: Create symlink from /opt/iiab/downloads/wordpress.tar.gz to {{ wp_download_output.dest }}
  file:
    src: "{{ wp_download_output.dest }}"
    path: "{{ downloads_dir }}/wordpress.tar.gz"
    state: link
  when: wp_download_output.dest is defined

- name: Does /opt/iiab/downloads/wordpress.tar.gz link exist?
  stat:
    path: "{{ downloads_dir }}/wordpress.tar.gz"
  register: wp_link

- name: FAIL (force Ansible to exit) IF /opt/iiab/downloads/wordpress.tar.gz doesn't exist
  fail:
    msg: "{{ downloads_dir }}/wordpress.tar.gz is REQUIRED in order to install WordPress."
  when: not wp_link.stat.exists

- name: "Unpack /opt/iiab/downloads/wordpress.tar.gz to permanent location /library/wordpress - owner: root, group: {{ apache_user }}, mode: 0664, keep_newer: yes"
  unarchive:
    src: "{{ downloads_dir }}/wordpress.tar.gz"
    dest: "{{ wp_install_path }}"
    owner: root
    group: "{{ apache_user }}"
    mode: 0664
    keep_newer: yes

# - name: Rename /library/wordpress* to /library/wordpress
#   shell: if [ ! -d {{ wp_abs_path }} ]; then mv {{ wp_abs_path }}* {{ wp_abs_path }}; fi

#- name: Make Apache owner and group, 1st pass permissions set to 0664
#  file: path={{ wp_abs_path }}
#        recurse=yes
#        owner=root
#        group={{ apache_user }}
#        mode=0664
#        state=directory

- name: Make /library/wordpress directories 775 so Apache can traverse and write (most files remain 0664)
  command: "/usr/bin/find {{ wp_abs_path }} -type d -exec chmod 775 {} +"

- name: Install {{ wp_abs_path }}/wp-keys.php.BAK
  copy:
    src: wp-keys.php.BAK
    dest: "{{ wp_abs_path }}/wp-keys.php.BAK"
    owner: root
    group: "{{ apache_user }}"
    mode: 0640

# Fetch random salts for WordPress config into wp-keys.php file by generating script and running

- name: Install script /tmp/get-iiab-wp-salts from template
  template:
    src: get-iiab-wp-salts.j2
    dest: /tmp/get-iiab-wp-salts
    owner: root
    group: root
    mode: 0700

- name: Run /tmp/get-iiab-wp-salts to create /library/wordpress/wp-keys.php
  command: /tmp/get-iiab-wp-salts

- name: Remove script /tmp/get-iiab-wp-salts
  file:
    path: /tmp/get-iiab-wp-salts
    state: absent

- name: Start MySQL systemd service
  service:
    state: started
    name: "{{ mysql_service }}"

- name: 'Create MySQL wordpress database: {{ wp_db_name }}'
  mysql_db:
    name: "{{ wp_db_name }}"
    state: present

- name: Create MySQL wordpress database user
  mysql_user:
    name: "{{ wp_db_user }}"
    password: "{{ wp_db_user_password }}"
    priv: "{{ wp_db_name }}.*:ALL,GRANT"
    state: present

- name: Install {{ wp_abs_path }}/wp-config.php
  template:
    src: wp-config.php.j2
    dest: "{{ wp_abs_path }}/wp-config.php"
    owner: root
    group: "{{ apache_user }}"
    mode: 0660

- name: Install etc/{{ apache_config_dir }}/wordpress.conf from template, for http://box{{ wp_url }}
  template:
    src: wordpress.conf.j2
    dest: "/etc/{{ apache_config_dir }}/wordpress.conf"

- name: Create symlink wordpress.conf from sites-enabled to sites-available, if wordpress_enabled (debuntu)
  file:
    src: /etc/apache2/sites-available/wordpress.conf
    path: /etc/apache2/sites-enabled/wordpress.conf
    state: link
  when: wordpress_enabled and is_debuntu

- name: Remove /etc/apache2/sites-enabled/wordpress.conf if not wordpress_enabled (debuntu)
  file:
    path: /etc/apache2/sites-enabled/wordpress.conf
    state: absent
  when: not wordpress_enabled and is_debuntu

- name: Restart Apache service ({{ apache_service }}) to enable/disable http://box{{ wp_url }}
  systemd:
    name: "{{ apache_service }}"
    state: restarted

- name: Add 'wordpress' variable values to {{ iiab_ini_file }}
  ini_file:
    path: "{{ iiab_ini_file }}"
    section: wordpress
    option: "{{ item.option }}"
    value: "{{ item.value }}"
  with_items:
    - option: name
      value: WordPress
    - option: description
      value: '"WordPress is a blog and web site management application."'
    - option: wordpress_src
      value: "{{ wordpress_src }}"
    - option: wp_abs_path
      value: "{{ wp_abs_path }}"
    - option: wp_db_name
      value: "{{ wp_db_name }}"
    - option: wp_db_user
      value: "{{ wp_db_user }}"
    - option: wp_url
      value: "{{ wp_url }}"
    - option: wp_full_url
      value: "{{ wp_full_url }}"
    - option: wordpress_enabled
      value: "{{ wordpress_enabled }}"
