private function displayPublicJobOrders() { $site = new Site(-1); $careerPortalSiteID = $site->getFirstSiteID(); if (!eval(Hooks::get('RSS_SITEID'))) { return; } $jobOrders = new JobOrders($careerPortalSiteID); $rs = $jobOrders->getAll(JOBORDERS_STATUS_ACTIVE, -1, -1, -1, false, true); /* XML Headers */ header('Content-type: text/xml'); $indexName = CATSUtility::getIndexName(); $stream = sprintf("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" . "<rss version=\"2.0\">\n" . "<channel>\n" . "<title>New Job Orders</title>\n" . "<description>CATS RSS Feed</description>\n" . "<link>%s</link>\n" . "<pubDate>%s</pubDate>\n", CATSUtility::getAbsoluteURI(), DateUtility::getRSSDate()); foreach ($rs as $rowIndex => $row) { $uri = sprintf("%scareers/?p=showJob&ID=%d", CATSUtility::getAbsoluteURI(), $row['jobOrderID']); // Fix URL if viewing from /rss without using globals or dirup '../' if (strpos($_SERVER['PHP_SELF'], '/rss/') !== false) { $uri = str_replace('/rss/', '/', $uri); } $stream .= sprintf("<item>\n" . "<title>%s (%s)</title>\n" . "<description>Located in %s.</description>\n" . "<link>%s</link>\n" . "</item>\n", $row['title'], $jobOrders->typeCodeToString($row['type']), StringUtility::makeCityStateString($row['city'], $row['state']), $uri); } $stream .= "</channel>\n</rss>\n"; echo $stream; }
private function displayPublicJobOrders() { $site = new Site(-1); $careerPortalSiteID = $site->getFirstSiteID(); if (!eval(Hooks::get('RSS_SITEID'))) { return; } $jobOrders = new JobOrders($careerPortalSiteID); $rs = $jobOrders->getAll(JOBORDERS_STATUS_ACTIVE, -1, -1, -1, false, true); // Log that this file was accessed // FIXME: Does this really need to involve two queries? Can we store // the IDs in constants too? HTTPLogger::addHTTPLog(HTTPLogger::getHTTPLogTypeIDByName('xml'), $careerPortalSiteID); /* XML Headers */ header('Content-type: text/xml'); $indexName = CATSUtility::getIndexName(); $availTemplates = XmlTemplate::getTemplates(); if (isset($_GET['t'])) { $templateName = $_GET['t']; // Check if the template exists foreach ($availTemplates as $template) { if (!strcasecmp($template['xml_template_name'], $templateName)) { $templateSections = XmlTemplate::loadTemplate($templateName); } } } // no template exists, load the default (which will always be first) if (!isset($templateSections)) { $templateSections = XmlTemplate::loadTemplate($templateName = $availTemplates[0]["xml_template_name"]); } // get the section bodies from the template into strings $templateHeader = $templateSections[XTPL_HEADER_STRING]; $templateJob = $templateSections[XTPL_JOB_STRING]; $templateFooter = $templateSections[XTPL_FOOTER_STRING]; $tags = XmlTemplate::loadTemplateTags($templateHeader); foreach ($tags as $tag) { switch ($tag) { case 'date': $templateHeader = XmlTemplate::replaceTemplateTags($tag, DateUtility::getRSSDate(), $templateHeader); break; case 'siteURL': $templateHeader = XmlTemplate::replaceTemplateTags($tag, CATSUtility::getAbsoluteURI(''), $templateHeader); break; } } $stream = $templateHeader; $tags = XmlTemplate::loadTemplateTags($templateJob); $careerPortalSettings = new CareerPortalSettings($careerPortalSiteID); $settings = $careerPortalSettings->getAll(); if ($settings['allowBrowse'] == 1) { // browse the jobs, adding a section body for each job foreach ($rs as $rowIndex => $row) { $txtJobPosting = $templateJob; foreach ($tags as $tag) { switch ($tag) { case 'siteURL': $txtJobPosting = XmlTemplate::replaceTemplateTags($tag, substr(CATSUtility::getAbsoluteURI(''), 0, -4), $txtJobPosting); break; case 'jobTitle': $txtJobPosting = XmlTemplate::replaceTemplateTags($tag, $row['title'], $txtJobPosting); break; case 'jobPostDate': $txtJobPosting = XmlTemplate::replaceTemplateTags($tag, DateUtility::getRSSDate(strtotime($row['dateCreatedSort'])), $txtJobPosting); break; case 'jobURL': $uri = sprintf("%scareers/?p=showJob&ID=%d&ref=%s", substr(CATSUtility::getAbsoluteURI(), 0, -4), $row['jobOrderID'], $templateName); $txtJobPosting = XmlTemplate::replaceTemplateTags($tag, $uri, $txtJobPosting); break; case 'jobID': $txtJobPosting = XmlTemplate::replaceTemplateTags($tag, $row['jobOrderID'], $txtJobPosting); break; case 'hiringCompany': $txtJobPosting = XmlTemplate::replaceTemplateTags($tag, 'CATS (www.catsone.com)', $txtJobPosting); break; case 'jobCity': $txtJobPosting = XmlTemplate::replaceTemplateTags($tag, $row['city'], $txtJobPosting); break; case 'jobState': $txtJobPosting = XmlTemplate::replaceTemplateTags($tag, $row['state'], $txtJobPosting); break; // FIXME: Make this expandable to non-US? // FIXME: Make this expandable to non-US? case 'jobCountry': $txtJobPosting = XmlTemplate::replaceTemplateTags($tag, "US", $txtJobPosting); break; case 'jobZipCode': $txtJobPosting = XmlTemplate::replaceTemplateTags($tag, '', $txtJobPosting); break; case 'jobDescription': $txtJobPosting = XmlTemplate::replaceTemplateTags($tag, $row['jobDescription'], $txtJobPosting); break; } } $stream .= $txtJobPosting; } } $stream .= $templateFooter; echo $stream; }