<?xml version="1.0"?>
<!--
 -
 -  $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:variable name="user_name" type="varchar" default="null" persist="page"/>
    <vm:variable name="user_sid" type="varchar" default="null" persist="page"/>
    <vm:variable name="user_id" type="int" default="0" persist="temp"/>
    <vm:variable name="app_name" type="varchar" default="null" persist="page"/>
    <vm:variable name="app_id" type="int" default="null" persist="page" param-name="app_id"/>
    <vm:variable name="message" type="varchar" default="''" persist="page"/>
    <vm:variable name="activated" type="int" default="0" persist="page"/>
    <vm:variable name="member_type" type="int" default="0" persist="temp"/>
    <vm:variable name="member_type_name" type="varchar" default="''" persist="temp"/>
    <v:on-init>
      <v:script>
        <![CDATA[
          self.user_sid := get_keyword('sid', self.vc_event.ve_params);
          self.user_name := (select VS_UID from VSPX_SESSION where VS_SID = self.user_sid and VS_REALM = 'wa');
          self.user_id := (select U_ID from SYS_USERS where U_NAME = self.user_name);
          self.app_name := get_keyword('app', self.vc_event.ve_params);
	  if (self.app_name is null)
	    self.app_name := (select WAI_NAME from WA_INSTANCE where WAI_ID = self.app_id);
          self.member_type := (select top 1 WAM_MEMBER_TYPE from WA_MEMBER where WAM_USER = self.user_id and WAM_INST = self.app_name);
          if(self.user_name is null) self.activated := -1;
        ]]>
      </v:script>
    </v:on-init>
    <vm:header>
      <vm:title>Registration Confirmation</vm:title>
    </vm:header>
    <vm:body>
      <input type="hidden" name="sid" value="<?vsp http(self.user_sid); ?>"/>
      <input type="hidden" name="app" value="<?vsp http(self.app_name); ?>"/>
      <h2>Registration Confirmation</h2>
      <div><vm:label value="--self.message"/></div>
      <vm:template condition="self.activated = 1">
        <div>To login click here:
          <v:url url="" name="url_to_app" value="Here">
            <v:before-render>
              <![CDATA[
               declare inst web_app;
               inst := (select WAI_INST from WA_INSTANCE where WAI_NAME = self.app_name);
	       if (inst is not null)
	 	 {
                   control.vu_url := inst.wa_home_url ();
                   control.ufl_value := self.app_name;
                 }
	       else
		 {
                   control.vu_url := '';
                   control.ufl_value := 'Error...';
                 }
              ]]>
            </v:before-render>
          </v:url>.
        </div>
      </vm:template>
      <vm:template condition="self.activated = 0">
        <h2>Welcome, <v:label value="--self.user_name"/>:</h2>
        <h3>You are about to confirm membership in '<v:label value="--self.app_name"/>' application.</h3>
        <h2>Do you confirm your membership?</h2>
        <v:button action="simple" name="confirm_membership" value="Confirm">
          <v:on-post>
            <![CDATA[
          {
            declare exit handler for sqlstate '*' {
              self.vc_is_valid := 0;
              declare _use_sys_errors, _sys_error, _error any;
              _sys_error := concat (__SQL_STATE,' ',__SQL_MESSAGE);
              _error := 'Due to a transient problem in the system, your confirmation could not be
                  processed at the moment. The system administrators have been notified. Please
                  try again later';
              _use_sys_errors := (select top 1 WS_SHOW_SYSTEM_ERRORS from WA_SETTINGS);
              if(_use_sys_errors) {
                self.vc_error_message := _error || ' ' || _sys_error;
              }
              else {
                self.vc_error_message := _error;
              }
              rollback work;
              return;
            };
            update WA_MEMBER set WAM_STATUS = 2 where WAM_USER = self.user_id and WAM_INST = self.app_name;
            self.activated := 1;
          }
            ]]>
          </v:on-post>
        </v:button>
        <v:button action="simple" name="reject_membership" value="Reject">
          <v:on-post>
            <![CDATA[
          {
            declare exit handler for sqlstate '*' {
              self.vc_is_valid := 0;
              declare _use_sys_errors, _sys_error, _error any;
              _sys_error := concat (__SQL_STATE,' ',__SQL_MESSAGE);
              _error := 'Due to a transient problem in the system, your rejection could not be
                  processed at the moment. The system administrators have been notified. Please
                  try again later';
              _use_sys_errors := (select top 1 WS_SHOW_SYSTEM_ERRORS from WA_SETTINGS);
              if(_use_sys_errors) {
                self.vc_error_message := _error || ' ' || _sys_error;
              }
              else {
                self.vc_error_message := _error;
              }
              rollback work;
              return;
            };
              delete from VSPX_SESSION where VS_SID = self.user_sid and VS_REALM = 'wa';
              delete from WA_MEMBER where WAM_USER = self.user_id and WAM_INST = self.app_name;
              self.activated := -1;
          }
            ]]>
          </v:on-post>
        </v:button>
      </vm:template>
      <vm:template condition="self.activated = -1">
        Sorry...
      </vm:template>
    </vm:body>
  </vm:page>
</v:page>

