# see https://www.howtoforge.com/how-to-use-multiple-php-versions-php-fpm-and-fastcgi-with-ispconfig-3-ubuntu-12.10

---
# file: roles/php/tasks/php53.yml

- name: Ensure PHP53 config directory
  file:
    dest: '{{ item }}'
    state: directory
  with_items:
    - /etc/{{ php_base_dir }}/fpm/pool.d/

- name: Check PHP 5.3 Requirement
  shell: php --version
  register: php_version_available
  changed_when: no

- block:
  - name: Package Preferences
    template:
      src: preferences/{{ item }}
      dest: /etc/apt/preferences.d/{{ item }}-pin
      owner: root
      group: root
      mode: 0644
    with_items:
      - openssl
      - libssl

  - name: Install Packages
    apt:
      pkg: '{{ packages }}'
      state: present
    vars:
      packages:
        - autoconf2.13
        - automake1.4
        - build-essential
        - libc-client2007e
        - libc-client2007e-dev
        - libfcgi-dev
        - libfcgi0ldbl
        - libfreetype6-dev
        - libgif-dev
        - libgif4
        - libjpeg-progs
        - libjpeg62-dbg
        - libjpeg8
        - libjpeg8-dev
        - libmcrypt-dev
        - libmysqlclient-dev
        - libpcre++-dev
        - libpcre3-dev
        - libpng-dev
        - libssl-dev
        - libx11-dev
        - libxau-dev
        - libxcb1-dev
        - libxdmcp-dev
        - libxml2-dev
        - libxml2-dev
        - libxpm-dev
        - x11proto-core-dev
        - x11proto-input-dev
        - x11proto-kb-dev
        - xtrans-dev

  - name: Link Client Lib
    file:
      src: /usr/lib/libc-client.a
      dest: /usr/lib/x86_64-linux-gnu/libc-client.a
      state: link

  - name: Make sure an empty directory /tmp/php53 exists
    file:
      path: /tmp/php53
      state: '{{ item }}'
    with_items:
      - absent
      - directory

  - name: Download PHP 5.3
    get_url:
      url: http://in1.php.net/distributions/php-5.3.29.tar.bz2
      dest: /tmp/php-5.3.29.tar.bz2

  - name: Unpack PHP 5.3
    unarchive:
      src: /tmp/php-5.3.29.tar.bz2
      dest: /tmp/php53
      copy: no

  - name: Compile PHP 5.3
    shell: '{{ item }}'
    args:
      chdir: /tmp/php53/php-5.3.29
    with_items:
      - ./configure --with-libdir=/lib/x86_64-linux-gnu --enable-fpm --enable-mbstring --enable-sockets --with-zlib --enable-zip --with-imap-ssl --with-imap --with-curl --with-mcrypt --with-gd --with-mysql --with-pdo-mysql --with-mysqli --with-gettext --with-jpeg-dir=/usr --with-png-dir=/usr --with-kerberos --with-openssl --disable-cgi
      - make
      - make install

  - name: Create PHP53 Start Script
    template:
      src: etc-init-d-php53-fpm
      dest: /etc/init.d/php-fpm
      owner: root
      group: root
      mode: 0755

  - name: Add PHP-FPM to Boot-List
    command: update-rc.d php-fpm defaults

  when: php_version_available and 'PHP 5.3.29' not in php_version_available.stdout

- name: Copy PHP53 Libraries
  copy:
    src: php53/libs/{{ item.file }}
    dest: '{{ php53.libdir }}/{{ item.file }}'
    owner: root
    group: root
    mode: 0644
  with_items: '{{ php53.libraries }}'

- name: Ensure PHP53 Library Links
  file:
    src: '{{ php53.libdir }}/{{ item.file }}'
    dest: '{{ php53.libdir }}/{{ item.link }}'
    state: link
    owner: root
    group: root
    mode: 0644
  with_items: '{{ php53.libraries }}'

- name: Ensure extra Library Links
  file:
    src: '{{ item.src }}'
    dest: '{{ php53.libdir }}/{{ item.link }}'
    state: link
    owner: root
    group: root
    mode: 0644
  with_items: '{{ php53.liblinks }}'

- name: Copy PHP53 Modules
  copy:
    src: php53/{{ item }}.so
    dest: '{{ php53.extdir }}/{{ item }}.so'
    owner: root
    group: root
    mode: 0644
  with_items: '{{ php53.modules }}'

- name: Create PHP53 INI Files
  template:
    src: etc-php5-apache2-php.ini
    dest: /etc/{{ php_base_dir }}/{{ item }}/php.ini
    owner: root
    group: root
    mode: 0644
  with_items:
    - cgi53
    - cli53
    - fpm