---
# file: roles/php/tasks/oci-7.4.yml
#
# https://gist.github.com/Yukibashiri/cebaeaccbe531665a5704b1b34a3498e

- name: Check OCI Requirement
  stat:
    path: /usr/lib/php/20190902/oci8.so
  register: oci_file

- block:

    - name: Enable OCI for PHP
      copy:
        content: extension={{ item }}.so
        dest: /etc/{{ php_base_dir }}/{{ php_conf_dir }}/{{ item }}.ini
        owner: root
        group: root
        mode: 0644
      with_items:
        - oci8

    - name: Remove possible components in /tmp
      file:
        path: /tmp/{{ item }}
        state: absent
      with_items:
        - instantclient_18_5
        - oracle_x64_18_5_0_0_0_oci8_so_php_7

    - name: Make available Oracle InstantClient
      command: scp -r {{ repository }}{{ item }} /tmp/
      become: no
      with_items:
        - instantclient_18_5
        - oracle_x64_18_5_0_0_0_oci8_so_php_7_4

    - name: Remove /opt/oracle/instantclient_18_5
      file:
        path: /opt/oracle/instantclient_18_5
        state: absent

    - name: Ensure directory /opt/oracle
      file:
        path: /opt/oracle
        state: directory

    - name: Move Oracle InstantClient to /opt/oracle
      command: mv /tmp/instantclient_18_5 /opt/oracle/instantclient_18_5

    - name: Move oci8 to /usr/lib/php
      command: mv /tmp/oracle_x64_18_5_0_0_0_oci8_so_php_7_4 /usr/lib/php/20190902/oci8.so

    - name: Change ownership for Oracle InstantClient
      file:
        path: '{{ item }}'
        owner: root
        group: root
        recurse: yes
        follow: no
      with_items:
        - /opt/oracle/instantclient_18_5

    - name: Ensure log directories
      file:
        path: /opt/oracle/instantclient_18_5/log/diag/clients
        owner: www-data
        group: root
        state: directory
        mode: 0775
        follow: no

    - name: Set permissions in log directories
      file:
        path: /opt/oracle/instantclient_18_5/log
        owner: www-data
        group: root
        mode: 0775
        recurse: yes
        follow: no

    - name: Create symlinks
      file:
        src: /opt/oracle/instantclient_18_5/{{ item }}.so.18.1
        dest: /opt/oracle/instantclient_18_5/{{ item }}.so
        state: link
      with_items:
        - libclntsh
        - libocci

    - name: Configure libraries
      template:
        src: etc-ld-oracle
        dest: /etc/ld.so.conf.d/oracle-instantclient.conf
        owner: root
        group: root
        mode: 0644

    - name: Update libraries
      command: ldconfig

  when: not oci_file.stat.exists
