<!--
 -
 -  $Id$
 -
 -  This file is part of the OpenLink Software Virtuoso Open-Source (VOS)
 -  project.
 -
 -  Copyright (C) 1998-2018 OpenLink Software
 -
 -  This project is free software; you can redistribute it and/or modify it
 -  under the terms of the GNU General Public License as published by the
 -  Free Software Foundation; only version 2 of the License, dated June 1991.
 -
 -  This program is distributed in the hope that it will be useful, but
 -  WITHOUT ANY WARRANTY; without even the implied warranty of
 -  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 -  General Public License for more details.
 -
 -  You should have received a copy of the GNU General Public License along
 -  with this program; if not, write to the Free Software Foundation, Inc.,
 -  51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 -
-->
<v:page name="blog_home_page"
        xmlns:vm="http://www.openlinksw.com/vspx/ods/"
        xmlns:v="http://www.openlinksw.com/vspx/"
        style="index.xsl"
        doctype="-//W3C//DTD XHTML 1.0 Transitional//EN"
        doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  <vm:page>
    <vm:header>
      <vm:title>Deleting Application</vm:title>
    </vm:header>
    <v:on-init>
      <![CDATA[
        declare apps, v, i any;

        if (self.iid is not null)
        {
          select WAI_MEMBER_MODEL, WAI_IS_PUBLIC, WAI_MEMBERS_VISIBLE, WAI_INST, WAI_NAME, WAI_DESCRIPTION, WAI_TYPE_NAME
            into self.imodel, self.is_public, self.is_visible, self.inst, self.iname, self.idesc, self.wa_type
            from DB.DBA.WA_INSTANCE
           where WAI_ID = self.iid;
          self.instance_descr := self.idesc;
          self.ihome := self.inst.wa_home_url();
        }
        v := null;
        if (self.apps_ids is not null)
        {
          apps := split_and_decode (self.apps_ids, 0, '\0\0,');
          v := make_array (length (apps), 'any');
          i := 0;
          foreach (any id in apps) do
          {
            v[i] := atoi (id);
            i := i + 1;
          }
        }
        self.apps := v;
      ]]>
    </v:on-init>
    <v:after-data-bind>
      <![CDATA[
        declare freeze varchar;

        freeze := (select WAI_IS_FROZEN from DB.DBA.WA_INSTANCE where WAI_ID = self.iid);
        if (freeze = 1 and not wa_user_is_dba (self.u_name, self.u_group))
        {
          http_request_status('HTTP/1.1 302 Found');
          if (self.redir = 'security')
            http_header(sprintf('Location: security.vspx?sid=%s&realm=%s\r\n', self.sid, self.realm));
          else
            http_header(sprintf('Location: services.vspx?sid=%s&realm=%s\r\n', self.sid, self.realm));
          return;
        }
      ]]>
    </v:after-data-bind>
    <vm:pagewrapper>
      <vm:navigation on="settings"/>
      <vm:navigation1 on="services"/>
      <vm:rawheader caption="Deleting Application"/>
      <vm:variable name="inst" type="db.dba.web_app" default="null" persist="0" />
      <vm:variable name="wa_name" type="varchar" default="null" persist="0" param-name="wa_name"/>
      <vm:variable name="wa_type" type="varchar" default="null" persist="0"/>
      <vm:variable name="imodel" type="int" default="null" persist="0"/>
      <vm:variable name="is_public" type="int" default="null" persist="0"/>
      <vm:variable name="is_visible" type="int" default="null" persist="0"/>
      <vm:variable name="iid" type="int" default="null" persist="0" param-name="wai_id"/>
      <vm:variable name="redir" type="varchar" default="null" persist="0" param-name="redir"/>
      <vm:variable name="iname" type="varchar" default="null" persist="0"/>
      <vm:variable name="idesc" type="varchar" default="null" persist="0"/>
      <vm:variable name="ilic" type="varchar" default="null" persist="0"/>
      <vm:variable name="ihome" type="varchar" default="null" persist="0"/>
      <vm:variable name="switch_adv" type="int" default="0" persist="0"/>
      <vm:variable name="page_type" type="varchar" default="'del'" persist="0"/>
      <vm:variable name="apps_ids" type="varchar" default="null" persist="0" param-name="apps"/>
      <vm:variable name="apps" type="any" default="null" persist="0" />
      <v:variable name="instance_descr" type="varchar" default="null" persist="page" />
      <vm:body>
        <vm:login redirect="index.vspx"/>
        <div class="box">
          <v:form type="simple" method="POST" name="eform1">
            <h3>You are about to delete following application(s). This operation cannot be undone. Please confirm.</h3>
            <?vsp
              if (self.iid is not null)
              {
            ?>
            <h2>Application Details</h2>
            <?vsp
              }
              else
              {
                declare wai_nam varchar;
                foreach (any v in self.apps) do
                {
                  wai_nam := (select WAI_NAME from WA_INSTANCE where WAI_ID = v);
                  http (wai_nam); http ('<br />');
                }
              }
            ?>
            <table  class="ctl_grp">
              <?vsp
                if (self.iid is not null)
                {
              ?>
              <vm:instance-settings readonly="yes"/>
              <?vsp
                }
              ?>
              <?vsp
                if (self.wa_type = 'oMail')
                {
              ?>
              <tr>
                <th>
                  Do you like to delete a content of mailboxes?
                </th>
                <td>
                  <v:check-box name="iDeleteAll" xhtml_id="iDeleteAll" value="1" />
                </td>
              </tr>
              <?vsp
                }
              ?>
              <tr>
                <td colspan="2">
                  <span class="fm_ctl_btn">
                    <v:button action="simple" name="cancel1" value="Cancel">
                      <v:on-post>
                        <![CDATA[
                          if (self.redir = 'security')
                            self.vc_redirect ('security.vspx');
                          else
                            self.vc_redirect ('services.vspx');
                        ]]>
                      </v:on-post>
                    </v:button>
                    <v:button action="simple" name="accept1" value="Delete">
                      <v:on-post>
                        <![CDATA[
                          declare inst web_app;
                          declare h, id any;
                          declare freeze varchar;

                          if (self.apps is null)
                            self.apps := vector (self.iid);

                          foreach (any iid in self.apps) do
                          {
                            declare exit handler for not found {
                              rollback work;
                              signal ('22023', 'No such application');
                            };
                            select WAI_IS_FROZEN, WAI_INST into freeze, inst from DB.DBA.WA_INSTANCE where WAI_ID = iid;
                            if (freeze = 1 and not wa_user_is_dba (self.u_name, self.u_group))
                            {
                              self.vc_error_message := 'Application is frozen';
                              self.vc_is_valid := 0;
                              goto done;
                            }
                            h := udt_implements_method(inst, 'wa_drop_instance');
                            declare exit handler for sqlstate '*'
                            {
                              self.vc_error_message := WA_RETRIEVE_MESSAGE (concat (__SQL_STATE, ' ', __SQL_MESSAGE));
                              self.vc_is_valid := 0;
                              rollback work;
                              return;
                            };
                            commit work;
                            connection_set ('deleteAll', self.iDeleteAll.ufl_selected);
                            id := call (h) (inst);
                          }
                        done:;
                          if (self.redir = 'security')
                            self.vc_redirect ('security.vspx');
                          else
                            self.vc_redirect ('services.vspx');
                        ]]>
                      </v:on-post>
                    </v:button>
                  </span>
                </td>
              </tr>
            </table>
          </v:form>
        </div>
      </vm:body>
    </vm:pagewrapper>
  </vm:page>
</v:page>

