diff --git a/htdocs/website/index.php b/htdocs/website/index.php index 2d3d1c80bfc..4d86b1f856b 100644 --- a/htdocs/website/index.php +++ b/htdocs/website/index.php @@ -2155,65 +2155,6 @@ if ($action == 'regeneratesite') } } -$form = new Form($db); -$formadmin = new FormAdmin($db); -$formwebsite = new FormWebsite($db); -$formother = new FormOther($db); -$domainname = '0.0.0.0:8080'; -$tempdir = $conf->website->dir_output.'/'.$websitekey.'/'; - -// Confirm generation of website sitemaps -if ($action == 'confirmgeneratesitemaps'){ - $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?website='.$website->ref, $langs->trans('ConfirmSitemapsCreation'), $langs->trans('ConfirmGenerateSitemaps', $object->ref), 'generatesitemaps', '', "yes", 1); - $action = 'preview'; -} - -// Generate web site sitemaps -if ($action == 'generatesitemaps') { - $domtree = new DOMDocument('1.0', 'UTF-8'); - $root = $domtree->createElementNS('http://www.sitemaps.org/schemas/sitemap/0.9', 'urlset'); - $domtree->formatOutput = true; - - $sql = "SELECT wp.type_container , wp.pageurl, wp.lang, DATE(wp.tms) as tms, w.virtualhost"; - $sql .= " FROM ".MAIN_DB_PREFIX."website_page as wp, ".MAIN_DB_PREFIX."website as w"; - $sql .= " WHERE wp.type_container IN ('page', 'blogpost')"; - $resql = $db->query($sql); - if ($resql) { - $num_rows = $db->num_rows($resql); - if ($num_rows > 0) { - $i = 0; - while ($i < $num_rows) { - $objp = $db->fetch_object($resql); - $url = $domtree->createElement('url'); - $pageurl = $objp->pageurl; - if ($objp->lang) { - $pageurl = $objp->lang.'/'.$pageurl; - } - if ($objp->virtualhost) { - $domainname = $objp->virtualhost; - } - $loc = $domtree->createElement('loc', 'http://'.$domainname.'/'.$pageurl); - $lastmod = $domtree->createElement('lastmod', $objp->tms); - - $url->appendChild($loc); - $url->appendChild($lastmod); - $root->appendChild($url); - $i++; - } - $domtree->appendChild($root); - if ($domtree->save($tempdir.'sitemaps.'.$websitekey.'.xml')) - { - setEventMessages($langs->trans("SitemapGenerated"), null, 'mesgs'); - } else { - setEventMessages($object->error, $object->errors, 'errors'); - } - } - }else { - dol_print_error($db); - } - $action = 'preview'; -} - // Import site if ($action == 'importsiteconfirm') { @@ -2307,9 +2248,91 @@ if ($action == 'importsiteconfirm') /* - * View - */ +* View +*/ +$form = new Form($db); +$formadmin = new FormAdmin($db); +$formwebsite = new FormWebsite($db); +$formother = new FormOther($db); +$domainname = '0.0.0.0:8080'; +$tempdir = $conf->website->dir_output.'/'.$websitekey.'/'; + +// Confirm generation of website sitemaps +if ($action == 'confirmgeneratesitemaps'){ + $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?website='.$website->ref, $langs->trans('ConfirmSitemapsCreation'), $langs->trans('ConfirmGenerateSitemaps', $object->ref), 'generatesitemaps', '', "yes", 1); + $action = 'preview'; +} + +// Generate web site sitemaps +if ($action == 'generatesitemaps') { + $domtree = new DOMDocument('1.0', 'UTF-8'); + $root = $domtree->createElementNS('http://www.sitemaps.org/schemas/sitemap/0.9', 'urlset'); + $domtree->formatOutput = true; + $xmlname = 'sitemap.'.$websitekey.'.xml'; + + $sql = "SELECT wp.type_container , wp.pageurl, wp.lang, DATE(wp.tms) as tms, w.virtualhost"; + $sql .= " FROM ".MAIN_DB_PREFIX."website_page as wp, ".MAIN_DB_PREFIX."website as w"; + $sql .= " WHERE wp.type_container IN ('page', 'blogpost')"; + $sql .= " AND wp.fk_website = w.rowid"; + $sql .= " AND w.ref = '".$websitekey."'"; + $resql = $db->query($sql); + if ($resql) { + $num_rows = $db->num_rows($resql); + if ($num_rows > 0) { + $i = 0; + while ($i < $num_rows) { + $objp = $db->fetch_object($resql); + $url = $domtree->createElement('url'); + $pageurl = $objp->pageurl; + if ($objp->lang) { + $pageurl = $objp->lang.'/'.$pageurl; + } + if ($objp->virtualhost) { + $domainname = $objp->virtualhost; + } + $loc = $domtree->createElement('loc', 'http://'.$domainname.'/'.$pageurl); + $lastmod = $domtree->createElement('lastmod', $objp->tms); + + $url->appendChild($loc); + $url->appendChild($lastmod); + $root->appendChild($url); + $i++; + } + $domtree->appendChild($root); + if ($domtree->save($tempdir.$xmlname)) + { + setEventMessages($langs->trans("SitemapGenerated"), null, 'mesgs'); + } else { + setEventMessages($object->error, $object->errors, 'errors'); + } + } + }else { + dol_print_error($db); + } + $robotcontent = @file_get_contents($filerobot); + $result = preg_replace('/\n/ims', '', $robotcontent); + if ($result) + { + $robotcontent = $result; + } + $robotsitemap = "Sitemap: ".$domainname."/".$xmlname; + $result = strpos($robotcontent,'Sitemap: '); + if ($result) + { + $result = preg_replace("/Sitemap.*\n/",$robotsitemap,$robotcontent); + $robotcontent = $result ? $result : $robotcontent; + }else{ + $robotcontent .= $robotsitemap."\n"; + } + $result = dolSaveRobotFile($filerobot, $robotcontent); + if (!$result) + { + $error++; + setEventMessages('Failed to write file '.$filerobot, null, 'errors'); + } + $action = 'preview'; +} $helpurl = 'EN:Module_Website|FR:Module_Website_FR|ES:Módulo_Website';