!empty($retFields['eDate']) ? !validate::validateMySqlDate($retFields['eDate']) ? $arrErrors[] = ERROR_DATE_FORMAT : ($strWhere .= " AND datetime<=" . secure::escQuoteData($retFields['eDate'])) : null; /////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////// $smarty->assignByRef('retFields', $retFields); /** текущий обработанный URL **/ $path .= 'do=filter&id=' . $retFields['id'] . '&id_user='******'id_user'] . '&author=' . $retFields['author'] . '&title=' . $retFields['title'] . '&id_section=' . $retFields['id_section'] . '&sDate=' . $retFields['sDate'] . '&eDate=' . $retFields['eDate'] . '&records=' . $retFields['records'] . '&'; } /** смещение, всегда 0 (затем берется из $_GET) **/ $offset = !empty($_GET['offset']) && strings::ifInt($_GET['offset']) && (int) $_GET['offset'] > 0 ? (int) abs($_GET['offset']) : 0; $strLimit = array('strLimit' => $offset . ',' . $retFields['records'], 'calcRows' => true); $arrFields = array('id', 'title', 'id_section', 'id_user', 'author', 'datetime'); $smarty->assign('arrArticles', $articles->getArticles($strWhere, false, $strLimit, $arrFields)); // массив всех статей /** формируем страницы **/ $allRecords = $articles->cntArticles(); // получаем общее количество статей $strPages = strings::generatePage($allRecords, $offset, $retFields['records'], $path, true); // формируем странциы $smarty->assignByRef('allRecords', $allRecords); //передаем в шаблон общее количество записей $smarty->assignByRef('strPages', $strPages); //передаем в шаблон строку сформированных страниц } // создаем объект разделов статей $sections = !($sections['full'] = $artsections->getSections()) ? false : $sections + $artsections->splitSections($sections['full']); // передаем в смарти все разделы $smarty->assignByRef('sections', $sections); // адресная строка $smarty->assignByRef('qString', $qString); $smarty->assignByRef('errors', $arrErrors); $smarty->assignByRef('actions', $arrActions);
$xml .= '<url><loc>' . chpu::createChpuUrl(CONF_SCRIPT_URL . 'index.php?ut=employer') . '</loc><priority>1.0</priority><changefreq>weekly</changefreq></url>' . "\n"; // Работаем с доп. страницами if ($arrPages) { foreach ($arrPages as $value) { $xml .= '<url><loc>' . chpu::createChpuUrl(CONF_SCRIPT_URL . 'index.php?do=pages&action=view&id=' . $value['id']) . '</loc><priority>0.5</priority><changefreq>never</changefreq></url>' . "\n"; } } // Работаем с новостями if ($arrNewses = $news->getPuplishedNewses(false, false, array('id', 'title'))) { foreach ($arrNewses as $value) { $xml .= '<url><loc>' . chpu::createChpuUrl(CONF_SCRIPT_URL . 'index.php?do=news&action=view&id=' . $value['tId']) . '</loc><priority>0.8</priority><changefreq>never</changefreq></url>' . "\n"; } } // Работаем с разделами статей (все статьи выводить не будем, много получится) $artsections = new artsections(); if ($arrArtSections = $artsections->getSections()) { foreach ($arrArtSections as $value) { if ($value['count']) { $userType = $value['affiliation'] !== 'none' ? 'ut=' . $value['affiliation'] . ' ' : ''; $xml .= '<url><loc>' . chpu::createChpuUrl(CONF_SCRIPT_URL . 'index.php?' . $userType . 'do=articles&action=section&id=' . $value['tId']) . '</loc><priority>0.8</priority><changefreq>weekly</changefreq></url>' . "\n"; } } } // Работаем с компаниями $strWhere = "conf_users.token IN ('active') AND conf_users.user_type IN ('company')"; $arrFields = array(array('conf_users', 'id'), array('conf_users', 'company_name')); if ($arrCompanies = $user->getCombinedUsersData($arrFields, $strWhere, false, false)) { foreach ($arrCompanies as $value) { $xml .= '<url><loc>' . chpu::createChpuUrl(CONF_SCRIPT_URL . 'index.php?do=companies&action=detail&id=' . $value['tId']) . '</loc><priority>0.5</priority><changefreq>daily</changefreq></url>' . "\n"; } }
/** * private функция формирует RSS для статей * * @param (int) $id - id раздела, статьи которого необходимо показать (по умолчанию false) * * @return string */ protected function rssArticles($id = false) { // создаем объекты $articles = new articles(); $artsections = new artsections(); // получаем список разделов $sections = $artsections->getSections("token IN ('active')"); // формируем данные шапки $this->title[] = array('name' => MENU_ARTICLES); $this->link = chpu::createChpuUrl(CONF_SCRIPT_URL . 'index.php?do=rss&action=articles'); $this->description = MENU_ARTICLES; // проверяем просмотр по разделу if (!empty($id) && !empty($sections[$id])) { // выбираем статьи с учетом раздела $arrArticles = $articles->getPuplishedArticles("id_section=" . secure::escQuoteData($id), false, array('strLimit' => '0,' . CONF_RSS_ARTICLES_COUNT, 'calcRows' => false), array('id', 'title', 'small_text', 'datetime', 'id_section')); // Дописываем данные по разделу в шапку $this->title[] = array('name' => $sections[$id]['name']); $this->description .= ' - ' . $sections[$id]['name']; } else { $arrArticles = $articles->getPuplishedArticles(false, false, array('strLimit' => '0,' . CONF_RSS_ARTICLES_COUNT, 'calcRows' => false), array('id', 'title', 'small_text', 'datetime', 'id_section')); } /***** Формируем XML-документ *****/ $data = '<?xml version="1.0" encoding="' . CONF_DEFAULT_CHARSET . '" ?> <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> <channel> <atom:link href="' . $this->link . '" rel="self" type="application/rss+xml" /> <title>' . strings::formTitle($this->title) . '</title> <link>' . $this->link . '</link> <description>' . $this->description . '</description> <language>ru</language> <pubDate>' . $this->pubDate . '</pubDate> <image> <url>' . $this->siteLogo . '</url> <title>' . strings::formTitle($this->title) . '</title> <link>' . $this->link . '</link> </image>'; // если статьи есть if (!empty($arrArticles) && is_array($arrArticles)) { foreach ($arrArticles as $value) { $data .= '<item> <title>' . $value['title'] . '</title> <link>' . chpu::createChpuUrl(CONF_SCRIPT_URL . 'index.php?do=articles&action=view&id=' . $value['tId']) . '</link> <pubDate>' . terms::RFCDate($value['datetime']) . '</pubDate> <guid>' . chpu::createChpuUrl(CONF_SCRIPT_URL . 'index.php?do=articles&action=view&id=' . $value['tId']) . '</guid> <category domain="' . chpu::createChpuUrl(CONF_SCRIPT_URL . 'index.php?do=articles&action=section&id=' . $sections[$value['id_section']]['tId']) . '">' . $sections[$value['id_section']]['name'] . '</category> <description><![CDATA[' . $value['small_text'] . ']]></description> </item>'; } } $data .= '</channel> </rss>'; return $data; }
if (isset($_POST['save']) && isset($_POST['arrBindFields']['name']) && $_POST['arrBindFields']['name']) { // получаем из формы поля обязательные для заполнения $artsections->arrBindFields = $_POST['arrBindFields']; // производим запись в таблицу БД !$artsections->updateSections($_POST['arrBindFields'], array($_GET['id'])) ? $arrErrors[] = db::$message_error ? db::$message_error : ERROR_MISMATCH_FIELDS : messages::messageChangeSaved(MESSAGE_CHANGE_SAVED, false, CONF_ADMIN_FILE . '?m=dictionary&s=articles.sections'); } $arrAction['edit'] = true; } else { $arrErrors[] = ERROR_SECTION_NOT_EXISTS; } } } else { // инициируем "Наименование страницы" отображаемое в форме $arrNamePage[] = array('name' => MENU_DICTIONARY_ARTICLES_SECTIONS, 'link' => false); /** * удаление разделов статей */ if (isset($_POST['action'])) { if ('del' === $_POST['action'] && isset($_POST['sections'])) { $artsections->deleteSections(array_keys($_POST['sections'])); messages::messageChangeSaved(MESSAGE_CHANGE_SAVED, false, CONF_ADMIN_FILE . '?m=dictionary&s=articles.sections'); } else { messages::messageChangeSaved(MESSAGE_WARNING_NOT_SELECT_RECORDS, false, CONF_ADMIN_FILE . '?m=dictionary&s=articles.sections'); } } // END отображение, скрытие, удаление новостей } // получаем все разделы $smarty->assign('sections', $artsections->getSections()); $smarty->assignByRef('errors', $arrErrors); $smarty->assignByRef('action', $arrAction);