# 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: false

- block:
  - name: "Package Preferences"
    template:
      src='preferences/{{ item }}'
      dest='/etc/apt/preferences.d/{{ item }}-pin'
      owner='root'
      group='root'
      mode='644'
    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 }} 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='755'

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

  when: '"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='644'
  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='644'
  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='644'
  with_items: '{{ php53.liblinks }}'

- name: "Copy PHP53 Modules"
  copy:
    src='php53/{{ item }}.so'
    dest='{{ php53.extdir }}/{{ item }}.so'
    owner='root'
    group='root'
    mode='644'
  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='644'
  with_items:
    - 'cgi53'
    - 'cli53'
    - 'fpm'