Checks that all pages are refered to. Writes out synopsis of the application. Arguments: None

Return TypeFunction nameArguments
hzEcodehdsApp::CheckProject(void)

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

Function Logic:

0:START 1:items 2:unknown 3:unknown 4:m_nPortSTD items 5:rc items 6:unknown 7:unknown 8:m_nPortSSL items 9:rc items 10:unknown 11:Return E_OK 12:items 13:unknown 14:S_key items 15:items items items 16:unknown 17:S_key pFormdef 18:unknown 19:items 20:items 21:items 22:unknown 23:S_key pFormHdl 24:unknown 25:items 26:items 27:items 28:unknown 29:pFormref S_obj pFormdef 30:unknown 31:items 32:items 33:items 34:unknown 35:S_key S_obj pFormHdl pFormref 36:unknown 37:items 38:items 39:items 40:unknown 41:pPage items 42:unknown 43:unknown 44:items items 45:items 46:unknown 47:pFormref pFormdef 48:unknown 49:pPage 50:items 51:items 52:unknown 53:pRes pPage 54:unknown 55:items 56:unknown 57:pFormref pFormdef 58:unknown 59:items 60:items 61:unknown 62:pFld items 63:items 64:unknown 65:pRes pPage 66:unknown 67:items 68:unknown 69:pFormref pFormdef 70:unknown 71:items 72:items 73:unknown 74:pFld items 75:items 76:unknown 77:S_obj pRes 78:unknown 79:items 80:items 81:items items 82:unknown 83:items items items items m_Robot items items 84:unknown 85:pRes pPage 86:unknown 87:unknown 88:unknown 89:unknown 90:items items 91:items 92:unknown 93:pAG 94:unknown 95:items 96:unknown 97:pArt 98:unknown 99:items items items 100:items 101:items items items 102:unknown 103:items items 104:unknown 105:pRes pPage 106:unknown 107:unknown 108:items 109:unknown 110:pAG 111:unknown 112:items 113:unknown 114:pArt 115:unknown 116:items 117:items items 118:items 119:Return rc

Function body:

hzEcode hdsApp::CheckProject (void)
{
   //  Category: Project Level Config Read Functions
   //  
   //  Checks that all pages are refered to. Writes out synopsis of the application.
   //  
   //  Arguments: None
   //  
   //  Returns: E_OK In all cases
   _hzfunc("hdsApp::checkProject") ;
   hzList<hdsFormref*>::Iter   fi ;    //  Forms iteration (within page)
   hzChain             report ;        //  Chain for ADP report
   hzChain             Z ;             //  For building robots.txt etc
   hdsFldspec          vd ;            //  Variable (in a class)
   hzPair              p ;             //  For adding name/link to navbar
                                       //  hdsSubject*   pSubj ;   // Page subject
   hdsResource*        pRes ;          //  Resource
   hdsPage*            pPage ;         //  Page
   hdsFormdef*         pFormdef ;      //  Form
   hdsFormref*         pFormref ;      //  Form reference
   hdsFormhdl*         pFormHdl ;      //  Form handler
   hdsField*           pFld ;          //  Field
   hdsNavtree*         pAG ;           //  Article group
   const hdsArticle*   pArt ;          //  Article pointer
   hzString            S_key ;         //  Temp string
   hzString            S_obj ;         //  Temp string
   uint32_t            x ;             //  General iterator
   uint32_t            y ;             //  General iterator
   hzEcode             rc = E_OK ;     //  Return code
   m_pLog->Log("APPLICATION REPORT: %s\n", *m_Appname) ;
   if (!m_nPortSTD)
   {
       if (_hzGlobal_Sphere)
       {
           m_nPortSTD = _hzGlobal_Sphere->m_nCommonPortSTD ;
           m_pLog->Log("Inheriting HTTP port %d\n", m_nPortSTD) ;
       }
       else
       {
           rc = E_INITFAIL ;
           m_pLog->Log("No HTTP port specified and no overriding dissemino instance to inherit from\n") ;
       }
   }
   if (!m_nPortSSL)
   {
       if (_hzGlobal_Sphere)
       {
           m_nPortSSL = _hzGlobal_Sphere->m_nCommonPortSSL ;
           m_pLog->Log("Inheriting HTTPS port %d\n", m_nPortSSL) ;
       }
       else
       {
           rc = E_INITFAIL ;
           m_pLog->Log("No HTTPS port specified and no overriding dissemino instance to inherit from\n") ;
       }
   }
   if (rc != E_OK)
       return E_OK ;
   m_pLog->Log("User Categories\n") ;
   for (x = 0; x < m_UserTypes.Count() ; x++)
   {
       S_key = m_UserTypes.GetKey(x) ;
       m_pLog->Log(" -- %s (%08x)\n", *S_key, m_UserTypes.GetObj(x)) ;
   }
       //  /{ ut = m_UserTypes.GetObj(x) ; m_pLog->Log(" -- %s\n", *ut.m_Refname) ; }
   m_ADP.Report(report) ;
   m_pLog->Log(report) ;
   /*
   **  ** Forms report
   **      */
   m_pLog->Log("Form Definitions\n") ;
   for (x = 0; x < m_FormDefs.Count() ; x++)
   {
       S_key = m_FormDefs.GetKey(x) ;
       pFormdef = m_FormDefs.GetObj(x) ;
       if (pFormdef)
           m_pLog->Log("\t\t -- Form def %s - %s (%p)\n", *S_key, *pFormdef->m_Formname, pFormdef) ;
       else
           m_pLog->Log("\t\t -- Form def %s - NULL\n", *S_key) ;
   }
   m_pLog->Log("Form Handlers\n") ;
   for (x = 0; x < m_FormHdls.Count() ; x++)
   {
       S_key = m_FormHdls.GetKey(x) ;
       pFormHdl = m_FormHdls.GetObj(x) ;
       if (pFormHdl)
           m_pLog->Log("\t\t -- Form handler %s applied to form %p %s\n", *S_key, pFormHdl->m_pFormdef, *pFormHdl->m_pFormdef->m_Formname) ;
       else
           m_pLog->Log("\t\t -- Form handler %s not created\n", *S_key) ;
   }
   m_pLog->Log("Form References\n") ;
   for (x = 0; x < m_FormRef2Url.Count() ; x++)
   {
       pFormref = m_FormRef2Url.GetKey(x) ;
       S_obj = m_FormRef2Url.GetObj(x) ;
       //  pFormdef = pFormref->m_pFormdef ;
       pFormdef = m_FormDefs[pFormref->m_Formname] ;
       if (pFormdef)
           m_pLog->Log("\t\t -- Ref [%p] -> %p %s on %s\n", pFormref, pFormdef, *pFormdef->m_Formname, *S_obj) ;
       else
           m_pLog->Log("\t\t -- Ref [%p] -> NULL_FORM_DEF on %s\n", *S_obj) ;
   }
   m_pLog->Log("Submission URLs to Form Handlers\n") ;
   for (x = 0; x < m_FormUrl2Hdl.Count() ; x++)
   {
       S_key = m_FormUrl2Hdl.GetKey(x) ;
       S_obj = m_FormUrl2Hdl.GetObj(x) ;
       pFormHdl = m_FormHdls[S_obj] ;
       pFormref = m_FormUrl2Ref[S_obj] ;
       if (!pFormHdl)
           m_pLog->Log("\t\t -- URL %s -> NULL (ref %p)\n", *S_key, pFormref) ;
       else
           m_pLog->Log("\t\t -- URL %s -> %s (ref %p)\n", *S_key, *pFormHdl->m_Refname, pFormref) ;
   }
   /*
   **  ** Pages report
   **      */
   m_pLog->Log("Pages (by incidence) Total %u\n", m_vecPages.Count()) ;
   for (x = 0; x < m_vecPages.Count() ; x++)
   {
       pPage = m_vecPages[x] ;
       m_pLog->Log(" -- access=%08x %s (%s) subj=%s\n", pPage->m_resAccess, *pPage->m_Url, *pPage->m_Title, *pPage->m_Subj) ;
       if (pPage->m_Subj)
       {
           if (!m_setPgSubjects.Exists(pPage->m_Subj))
           {
               m_setPgSubjects.Insert(pPage->m_Subj) ;
               m_lstPgSubjects.Add(pPage->m_Subj) ;
           }
           m_mapSubj2Res.Insert(pPage->m_Subj, pPage) ;
           /*
           **  pSubj = m_setPgSubjects[pPage->m_Subj] ;
           **     if (!pSubj)
           **     {
           **      pSubj = new hdsSubject() ;
           **      pSubj->subject = pPage->m_Subj ;
           **      pSubj->first = pPage->m_Url ;
           **  
           **      m_setPgSubjects.Insert(pSubj->subject, pSubj) ;
           **      m_vecPgSubjects.Add(pSubj) ;
           **     }
           **  
           **     pSubj->pglist.Add(pPage) ;
           **                */
       }
       for (fi = pPage->m_xForms ; fi.Valid() ; fi++)
       {
           pFormref = fi.Element() ;
           pFormdef = m_FormDefs[pFormref->m_Formname] ;
           //  if (!pForm->m_valJS)
           //   pForm->WriteValidationJS() ;
           if (pFormdef)
               pPage->m_bScriptFlags |= pFormdef->m_bScriptFlags ;
       }
       pPage->WriteValidationJS() ;
   }
   m_pLog->Log("Pages (by name) Total %u\n", m_ResourcesName.Count()) ;
   //  for (x = 0 ; x < m_PagesName.Count() ; x++)
   for (x = 0; x < m_ResourcesName.Count() ; x++)
   {
       pRes = m_ResourcesName.GetObj(x) ;
       pPage = dynamic_cast<hdsPage*>(pRes) ;
       if (!pPage)
           continue ;
       m_pLog->Log(" -- access=%08x %s (%s)\n", pPage->m_resAccess, *pPage->m_Url, *pPage->m_Title) ;
       for (fi = pPage->m_xForms ; fi.Valid() ; fi++)
       {
           pFormref = fi.Element() ;
           pFormdef = m_FormDefs[pFormref->m_Formname] ;
           if (!pFormdef)
               m_pLog->Log("\t -- form ref %p NULL form def\n", pFormref) ;
           else
           {
               m_pLog->Log("\t -- form ref %p -> %s\n", pFormref, *pFormdef->m_Formname) ;
               for (y = 0; y < pFormdef->m_vecFlds.Count() ; y++)
               {
                   pFld = pFormdef->m_vecFlds[y] ;
                   m_pLog->Log("\t\t -- fld %s\n", *pFld->m_Varname) ;
               }
           }
       }
   }
   m_pLog->Log("Pages (by path) Total %u\n", m_ResourcesPath.Count()) ;
   //  for (x = 0 ; x < m_PagesPath.Count() ; x++)
   for (x = 0; x < m_ResourcesPath.Count() ; x++)
   {
       //  pRes = m_PagesPath.GetObj(x) ;
       pRes = m_ResourcesPath.GetObj(x) ;
       pPage = dynamic_cast<hdsPage*>(pRes) ;
       if (!pPage)
           continue ;
       m_pLog->Log(" -- access=%08x %s (%s)\n", pPage->m_resAccess, *pPage->m_Url, *pPage->m_Title) ;
       for (fi = pPage->m_xForms ; fi.Valid() ; fi++)
       {
           pFormref = fi.Element() ;
           pFormdef = m_FormDefs[pFormref->m_Formname] ;
           if (!pFormdef)
               m_pLog->Log("\t -- form ref %p NULL form def\n", pFormref) ;
           else
           {
               m_pLog->Log("\t -- form ref %p -> %s\n", pFormref, *pFormdef->m_Formname) ;
               for (y = 0; y < pFormdef->m_vecFlds.Count() ; y++)
               {
                   pFld = pFormdef->m_vecFlds[y] ;
                   m_pLog->Log("\t\t -- fld %s\n", *pFld->m_Varname) ;
               }
           }
       }
   }
   m_pLog->Log("Verifying %u Links\n", m_Links.Count()) ;
   for (x = 0; x < m_Links.Count() ; x++)
   {
       S_obj = m_Links.GetObj(x) ;
       pRes = m_ResourcesPath[S_obj] ;
       if (!pRes)
           m_pLog->Log("ERROR: %u No such link as %s\n", x, *S_obj) ;
       else
           m_pLog->Log("Verified link %u %s\n", x, *S_obj) ;
   }
   m_pLog->Log("Verifying %u Links\n", m_Links.Count()) ;
   m_nLoadComplete++ ;
   /*
   **  ** Build Sitemap
   **      */
   if (m_OpFlags & DS_APP_ROBOT)
   {
       Z.Clear() ;
       Z << "User-agent: *\r\nDisallow:\r\n" ;
       Z.Printf("Sitemap: http://%s/sitemap.xml\r\n", *m_Domain) ;
       Z.Printf("Sitemap: http://%s/sitemap.txt\r\n", *m_Domain) ;
       m_Robot = Z ;
       m_rawSitemapXml <<
       "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd\">\r\n"
                                                                            ;
       m_pLog->Log("Checking %u Pages\n", m_ResourcesPath.Count()) ;
       for (x = 0; x < m_ResourcesPath.Count() ; x++)
       {
           pRes = m_ResourcesPath.GetObj(x) ;
           pPage = dynamic_cast<hdsPage*>(pRes) ;
           if (!pPage)
               continue ;
           if (!pPage->m_Subj)
               continue ;
           if (pPage->m_Title == "Login")  continue ;
           if (pPage->m_Title == "Logout") continue ;
           m_rawSitemapTxt.Printf("http://%s%s\r\n", *m_Domain, *pPage->m_Url) ;
           m_rawSitemapXml.Printf("\t<url><loc>http://%s%s</loc><changefreq>daily</changefreq></url>\r\n", *m_Domain, *pPage->m_Url) ;
       }
       m_pLog->Log("Checking %u Article Groups\n", m_ArticleGroups.Count()) ;
       for (y = 0; y < m_ArticleGroups.Count() ; y++)
       {
           pAG = m_ArticleGroups.GetObj(y) ;
           if (!pAG)
               continue ;
           m_pLog->Log("Checking Article Group %s\n", *pAG->m_Groupname) ;
           for (x = 0; x < pAG->Count() ; x++)
           {
               pArt = pAG->GetItem(x) ;
               if (pArt)
               {
                   m_pLog->Log("Exporting article link %s\n", *pArt->m_Title) ;    //  txtPath()) ;
                   m_rawSitemapTxt.Printf("http://%s%s?%s=%s\r\n", *m_Domain, *pAG->m_Hostpage, *pAG->m_Groupname, *pArt->m_Url) ;
                   m_rawSitemapXml.Printf("\t<url><loc>http://%s%s?%s=%s</loc><changefreq>daily</changefreq></url>\r\n",
                       *m_Domain, *pAG->m_Hostpage, *pAG->m_Groupname, *pArt->m_Url) ;
               }
           }
           m_pLog->Log("Checking Article Group %s\n", *pAG->m_Groupname) ;
       }
       m_rawSitemapXml << "</urlset>\r\n" ;
       Gzip(m_zipSitemapTxt, m_rawSitemapTxt) ;
       Gzip(m_zipSitemapXml, m_rawSitemapXml) ;
   }
   if (m_OpFlags & DS_APP_GUIDE)
   {
       m_rawSiteguide << "<!DOCTYPE html>\n<head>\n<title>Site Guide</title>\n</head>\n<body>\n" ;
       m_rawSiteguide << "<p>Main Pages</p>\n" ;
       for (x = 0; x < m_ResourcesPath.Count() ; x++)
       {
           pRes = m_ResourcesPath.GetObj(x) ;
           pPage = dynamic_cast<hdsPage*>(pRes) ;
           if (!pPage)
               continue ;
           if (!pPage->m_Subj)
               continue ;
           m_rawSiteguide.Printf("<p><a href=\"http://%s%s\">%s</a></p>\n", *m_Domain, *pPage->m_Url, *pPage->m_Title) ;
       }
       for (y = 0; y < m_ArticleGroups.Count() ; y++)
       {
           pAG = m_ArticleGroups.GetObj(y) ;
           if (!pAG)
               continue ;
           m_rawSiteguide.Printf("<p>Article from %s</p>\n", *pAG->m_Groupname) ;
           for (x = 0; x < pAG->Count() ; x++)
           {
               pArt = (hdsArticle*) pAG->GetItem(x) ;
               if (pArt)
                   m_rawSiteguide.Printf("<p><a href=\"http://%s%s-%s\">%s</a></p>\n", *m_Domain, *pAG->m_Hostpage, *pArt->m_Title, *pArt->m_Title) ;
           }
       }
       m_rawSiteguide << "</body>\n</html>\n" ;
       Gzip(m_zipSiteguide, m_rawSiteguide) ;
   }
   /*
   **  ** Add the webmaster admin functions as CIFs
   **      */
   /*
   **  if (rc == E_OK) rc = AddCIFunc(&_masterMainMenu, "/masterMainMenu",  ACCESS_ADMIN, HTTP_GET) ;
   **   if (rc == E_OK) rc = AddCIFunc(&_masterCfgList,  "/masterCfgList",  ACCESS_ADMIN, HTTP_GET) ;
   **   if (rc == E_OK) rc = AddCIFunc(&_masterCfgEdit,  "/masterCfgEdit",  ACCESS_ADMIN, HTTP_POST) ;
   **   if (rc == E_OK) rc = AddCIFunc(&_masterResList,  "/masterResList",  ACCESS_ADMIN, HTTP_GET) ;
   **   if (rc == E_OK) rc = AddCIFunc(&_masterVisList,  "/masterVisList",  ACCESS_ADMIN, HTTP_GET) ;
   **   if (rc == E_OK) rc = AddCIFunc(&_masterDomain,  "/masterDomain",  ACCESS_ADMIN, HTTP_GET) ;
   **   if (rc == E_OK) rc = AddCIFunc(&_masterEmaddr,  "/masterEmaddr",  ACCESS_ADMIN, HTTP_GET) ;
   **   if (rc == E_OK) rc = AddCIFunc(&_masterStrFix,  "/masterStrFix",  ACCESS_ADMIN, HTTP_GET) ;
   **   if (rc == E_OK) rc = AddCIFunc(&_masterStrGen,  "/masterStrGen",  ACCESS_ADMIN, HTTP_GET) ;
   **   if (rc == E_OK) rc = AddCIFunc(&_masterBanned,  "/masterBanned",  ACCESS_ADMIN, HTTP_GET) ;
   **   if (rc == E_OK) rc = AddCIFunc(&_masterMemstat,  "/masterMemstat",  ACCESS_ADMIN, HTTP_GET) ;
   **   if (rc == E_OK) rc = AddCIFunc(&_masterUSL,   "/masterUSL",   ACCESS_ADMIN, HTTP_GET) ;
   **   if (rc == E_OK) rc = AddCIFunc(&_masterFileList, "/masterFileList",  ACCESS_ADMIN, HTTP_GET) ;
   **   if (rc == E_OK) rc = AddCIFunc(&_masterFileEdit, "/masterFileEdit",  ACCESS_ADMIN, HTTP_POST) ;
   **   //if (rc == E_OK) rc = AddCIFunc(&_masterDataModel, "/masterDataModel",  ACCESS_ADMIN, HTTP_GET) ;
   **   if (rc == E_OK) rc = AddCIFunc(&_masterCfgRestart, "/masterCfgRestart", ACCESS_ADMIN, HTTP_GET) ;
   **   if (rc == E_OK) rc = AddCIFunc(&_masterLogout,  "/masterLogout",  ACCESS_ADMIN, HTTP_GET) ;
   **      */
   m_pLog->Log(" -- END of REPORT --\n") ;
   return rc ;
}