Return TypeFunction nameArguments
voidhdsApp::ProcForm(hzHttpEvent*,hdsFormref*,hdsFormhdl*,)

Declared in file: hzDissemino.h
Defined in file : hdsSystem.cpp

Function Logic:

0:START 1:hzHttpEvent::Session pInfo hzHttpEvent::ClientIP ipa hzXDate::SysDateTime 2:!pFormref 3:Fatal 4:!pFhdl 5:Fatal 6:hzLogger::Log pFormdef 7:!pFormdef 8:Fatal 9:hzLogger::Log hzVect::Count hzLogger::Log pE hzHttpEvent::Inputs 10:!pE->Inputs() 11:rc hzLogger::Log 12:Goto respond 13:nIndexm_Inputs.Count(); 14:P hzLogger::Log pFld 15:!pFld 16:hzLogger::Log rc 17:rc!=E_OK 18:Goto respond 19:pFhdl->m_flgFH&VE_COOKIES 20:!pInfo 21:hzHttpEvent::EventNo hdsApp::MakeCookie newCookie hzSDate::SysDate expires hzHttpEvent::SetSessCookie pInfo hzHttpEvent::SetSession hzMapS::Insert hzLogger::Log 22:ei.Valid(); 23:hzLogger::Log hzList::Iter::Element pExec 24:!pExec 25:hzLogger::Log 26:Exec2Txt hzLogger::Log hdsExec::Exec rc hzLogger::Out hzChain::Clear 27:rc==E_OK 28:hdsExec::Whatami Exec2Txt Err2Txt hzLogger::Log 29:hdsExec::Whatami Exec2Txt Err2Txt hzLogger::Log 30:pExec->m_FailGoto||pExec->m_pFailResponse 31:errorReport.Size() 32:pE 33:pExec->m_pFailResponse 34:pResponse 35:pExec->m_FailGoto[0]==(char)37 36:hdsApp::ConvertText S hzLogger::Log pResponse 37:!pResponse 38:pResponse 39:hzLogger::Log pResponse 40:!pResponse 41:pResponse 42:!pResponse 43:hdsExec::Whatami Exec2Txt hdsApp::SendErrorPage 44:items 45:pPage 46:hzLogger::Log hdsPage::Display 47:items items 48: No text 49:respond 50:rc==E_OK 51:pFhdl->m_pCompletePage 52:pResponse 53:pFhdl->m_CompleteGoto[0]==(char)37 54:hdsApp::ConvertText S hzLogger::Log pResponse 55:!pResponse 56:pResponse 57:hzLogger::Log pResponse 58:!pResponse 59:pResponse 60:!pResponse 61:hdsApp::SendErrorPage 62:items 63:pPage 64:hzLogger::Log hdsPage::Display 65:items items 66:errorReport.Size() 67:pE 68:pFhdl->m_pFailDfltPage 69:pResponse 70:pFhdl->m_FailDfltGoto[0]==(char)37 71:hdsApp::ConvertText S hzLogger::Log pResponse 72:!pResponse 73:pResponse 74:hzLogger::Log pResponse 75:!pResponse 76:pResponse 77:!pResponse 78:hdsApp::SendErrorPage 79:items 80:pPage 81:hzLogger::Log hdsPage::Display 82:items items 83:hzVect::Count hzLogger::Log 84: No text

Function body:

void hdsApp::ProcForm (hzHttpEvent* pE, hdsFormref* pFormref, hdsFormhdl* pFhdl)
{
   _hzfunc("hdsApp::ProcForm") ;
   hzList<hdsExec*>::Iter  ei ;
   hzChain         Z ;
   hzChain         errorReport ;
   hzPair          P ;
   hdsInfo*        pInfo ;
   hdsFormdef*     pFormdef ;
   hdsField*       pFld ;
   hdsExec*        pExec ;
   hdsResource*    pResponse ;
   hdsPage*        pPage = 0;
   hdsCIFunc*      pFunc = 0;
   hzAtom          atom ;
   hzSysID         newCookie ;
   hzXDate         now ;
   hzString        S ;
   hzString        unam ;
   hzString        pass ;
   hzIpaddr        ipa ;
   hzSDate         expires ;
   uint32_t        nIndex ;
   hzEcode         rc = E_OK ;
   pInfo = (hdsInfo*) pE->Session() ;
   ipa = pE->ClientIP() ;
   now.SysDateTime() ;
   if (!pFormref)  Fatal("No form reference supplied") ;
   if (!pFhdl)     Fatal("No form handler supplied") ;
   m_pLog->Log("Processing form reference %p flags %x handler %p and info %p\n", pFormref, pFormref->m_flagVE, pFhdl, pInfo) ;
   pFormdef = pFhdl->m_pFormdef ;
   if (!pFormdef)
       Fatal("Form handler (%s) has no form", *pFhdl->m_Refname) ;
   m_pLog->Log("Processing form reference %p and info %p\n", pFormref, pInfo) ;
   m_pLog->Log("Processing form %p %s with %d fields and info %p\n", pFormdef, *pFormdef->m_Formname, pFormdef->m_vecFlds.Count(), pInfo) ;
   pE->m_pContextForm = pFormref ;
   if (!pE->Inputs())
   {
       rc = E_NODATA ;
       m_pLog->Log("Form has no data\n") ;
       goto respond ;
   }
   for (nIndex = 0; nIndex < pE->m_Inputs.Count() ; nIndex++)
   {
       P = pE->m_Inputs[nIndex] ;
           m_pLog->Log("Doing field %s %s\n", *P.name, *P.value) ;
       pFld = pFormdef->m_mapFlds[P.name] ;
       if (!pFld)
       {
           m_pLog->Log("No such field as %s\n", *P.name) ;
           rc = E_NOTFOUND ;
       }
   }
   if (rc != E_OK)
       goto respond ;
   if (pFhdl->m_flgFH & VE_COOKIES)
   {
       if (!pInfo)
       {
           newCookie = MakeCookie(ipa, pE->EventNo()) ;
           expires.SysDate() ;
           expires += 365;
           pE->SetSessCookie(newCookie) ;
           pInfo = new hdsInfo() ;
           pE->SetSession(pInfo) ;
           m_SessCookie.Insert(newCookie, pInfo) ;
           m_pLog->Log("New cookie %016x and session %p\n", *now, newCookie, pInfo) ;
       }
   }
   for (ei = pFhdl->m_Exec ; ei.Valid() ; ei++)
   {
       m_pLog->Log("CASE 5\n") ;
       pExec = ei.Element() ;
       if (!pExec)
       {
           m_pLog->Log("ERROR. Null exec at posn %d\n", nIndex) ;
           continue ;
       }
       m_pLog->Log("HAVE EXEC %s\n", Exec2Txt(pExec->m_Command)) ;
       rc = pExec->Exec(errorReport, pE) ;
       m_pLog->Out(errorReport) ;
       errorReport.Clear() ;
       if (rc == E_OK)
       {
           m_pLog->Log("Sucess exec %s at posn %d (err=%s)\n", Exec2Txt(pExec->Whatami()), nIndex, Err2Txt(rc)) ;
           continue ;
       }
       m_pLog->Log("Failed exec %s at posn %d (err=%s)\n", Exec2Txt(pExec->Whatami()), nIndex, Err2Txt(rc)) ;
       if (pExec->m_FailGoto || pExec->m_pFailResponse)
       {
           if (errorReport.Size())
               pE->m_appError = errorReport ;
           if (pExec->m_pFailResponse)
               pResponse = pExec->m_pFailResponse ;
           else
           {
               if (pExec->m_FailGoto[0]== CHAR_PERCENT)
               {
                   S = ConvertText(pExec->m_FailGoto, pE) ;
                   m_pLog->Log("Converted error page directive %s to %s\n", *pExec->m_FailGoto, *S) ;
                   pResponse = m_ResourcesName[S] ;
                   if (!pResponse)
                       pResponse = m_ResourcesPath[S] ;
               }
               else
               {
                   m_pLog->Log("Using named error page %s\n", *pExec->m_FailGoto) ;
                   pResponse = m_ResourcesName[pExec->m_FailGoto] ;
                   if (!pResponse)
                       pResponse = m_ResourcesPath[pExec->m_FailGoto] ;
               }
           }
           if (!pResponse)
               SendErrorPage(pE, HTTPMSG_OK, *_fn, "Could not find an error page for exec %s in form %s", Exec2Txt(pExec->Whatami()), *pFhdl->m_Refname) ;
           else
           {
               pPage = dynamic_cast<hdsPage*>(pExec->m_pFailResponse) ;
               if (pPage)
               {
                   m_pLog->Log("Using error page %s\n", *pPage->m_Title) ;
                   pPage->Display(pE) ;
               }
               else
               {
                   pFunc = dynamic_cast<hdsCIFunc*>(pResponse) ;
                   pFunc->m_pFunc(pE) ;
               }
           }
           return ;
       }
   }
respond:
   if (rc == E_OK)
   {
       if (pFhdl->m_pCompletePage)
           pResponse = pFhdl->m_pCompletePage ;
       else
       {
           if (pFhdl->m_CompleteGoto[0]== CHAR_PERCENT)
           {
               S = ConvertText(pFhdl->m_CompleteGoto, pE) ;
               m_pLog->Log("Converted response page directive %s to %s\n", *pFhdl->m_CompleteGoto, *S) ;
               pResponse = m_ResourcesName[S] ;
               if (!pResponse)
                   pResponse = m_ResourcesPath[S] ;
           }
           else
           {
               m_pLog->Log("Using named response page %s\n", *pFhdl->m_CompleteGoto) ;
               pResponse = m_ResourcesName[pFhdl->m_CompleteGoto] ;
               if (!pResponse)
                   pResponse = m_ResourcesPath[pFhdl->m_CompleteGoto] ;
           }
       }
       if (!pResponse)
           SendErrorPage(pE, HTTPMSG_NOTFOUND, *_fn, "Could not find a response page for form %s", *pFhdl->m_Refname) ;
       else
       {
           pPage = dynamic_cast<hdsPage*>(pResponse) ;
           if (pPage)
           {
               m_pLog->Log("Using response page %s\n", *pPage->m_Title) ;
               pPage->Display(pE) ;
           }
           else
           {
               pFunc = dynamic_cast<hdsCIFunc*>(pResponse) ;
               pFunc->m_pFunc(pE) ;
           }
       }
   }
   else
   {
       if (errorReport.Size())
           pE->m_appError = errorReport ;
       if (pFhdl->m_pFailDfltPage)
           pResponse = pFhdl->m_pFailDfltPage ;
       else
       {
           if (pFhdl->m_FailDfltGoto[0]== CHAR_PERCENT)
           {
               S = ConvertText(pFhdl->m_FailDfltGoto, pE) ;
               m_pLog->Log("Converted error page directive %s to %s\n", *pFhdl->m_FailDfltGoto, *S) ;
               pResponse = m_ResourcesName[S] ;
               if (!pResponse)
                   pResponse = m_ResourcesPath[S] ;
           }
           else
           {
               m_pLog->Log("Using named error page %s\n", *pFhdl->m_FailDfltGoto) ;
               pResponse = m_ResourcesName[pFhdl->m_FailDfltGoto] ;
               if (!pResponse)
                   pResponse = m_ResourcesPath[pFhdl->m_FailDfltGoto] ;
           }
       }
       if (!pResponse)
           SendErrorPage(pE, HTTPMSG_OK, *_fn, "Could not find an error page for form %s", *pFhdl->m_Refname) ;
       else
       {
           pPage = dynamic_cast<hdsPage*>(pFhdl->m_pFailDfltPage) ;
           if (pPage)
           {
               m_pLog->Log("Using error page %s\n", *pPage->m_Title) ;
               pPage->Display(pE) ;
           }
           else
           {
               pFunc = dynamic_cast<hdsCIFunc*>(pResponse) ;
               pFunc->m_pFunc(pE) ;
           }
       }
   }
   m_pLog->Log("Processed form %p %s with %d fields and info %p\n", pFormdef, *pFormdef->m_Formname, pFormdef->m_vecFlds.Count(), pInfo) ;
}