/modules/mod_latest/module.php
<?php /*********************************************************************************************/ // // // InstantCMS v1.7 (c) 2010 FREEWARE // // http://instantcms.ru/, info@instantcms.ru // // // // written by Vladimir E. Obukhov, 2007-2010 // // // /*********************************************************************************************/ function mod_latest($module_id){ // определяем последние материалы по идентификатору модуля $inCore = cmsCore::getInstance(); // подгружаем класс cms.php $inDB = cmsDatabase::getInstance(); // подгружаем класс db.class.php $cfg = $inCore->loadModuleConfig($module_id); //загружаем конфигурацию модуля global $_LANG; // определяем глобальную языковую переменную if (!isset($cfg['showrss'])) { $cfg['showrss'] = 1; } //если в конфиге не установлено значение для rss включаем rss if (!isset($cfg['subs'])) { $cfg['subs'] = 1; } //если в конфиге не установлено разрешать подразделы включем их if (!isset($cfg['cat_id'])) { $cfg['cat_id'] = 1; } //если в кофиге не задана определенная категория включаем главную // опции постраничной разбивки $page = 1; $perpage = $cfg['newscount']; //берем из конфига количество новостей на страницу if ($cfg['cat_id'] != '-1') //если в конфиге не установлено показывать из всех категорий { if (!$cfg['subs']) //если в конфиге не установлено показывать из подразделов { //select from category //то выбираем только из указанной категории по её ID $catsql = ' AND con.category_id = '.$cfg['cat_id']; //добавляем к запросу соответствующее условие } else //иначе { //select from category and subcategories // выбираем из категории и подраздела $rootcat = $inDB->get_fields('cms_category', 'id='.$cfg['cat_id'], 'NSLeft, NSRight'); //определяем родительскую категорию $catsql = "AND (cat.NSLeft >= {$rootcat['NSLeft']} AND cat.NSRight <= {$rootcat['NSRight']})"; //включаем из неё подразделы } $rssid = $cfg['cat_id']; //передаем записи из выбранной категроии в rss } else //иначе { $catsql = ''; $rssid = 'all'; //передаем записи из всех категорий } //формируем запрос к базе данных и обращаемся к таблице контента применяя сформированные выше условия $sql = "SELECT con.*, con.pubdate as fdate, u.nickname as author, u.login as author_login FROM cms_content con LEFT JOIN cms_category cat ON cat.id = con.category_id LEFT JOIN cms_users u ON u.id = con.user_id WHERE con.published = 1 AND con.showlatest = 1 AND (con.is_end=0 OR (con.is_end=1 AND con.enddate >= '$today' AND con.pubdate <= '$today')) ".$catsql." ORDER BY con.id DESC LIMIT ".$cfg['newscount']; $result = $inDB->query($sql); //получаем результат запроса $is_con = false; // не контент if ($cfg['is_pag']) //если включено разбиение на страницы (пэйджинация) { // Считаем общее количество материалов если опция пагинация включена SELECT 1 ??? $sql_total = "SELECT 1 FROM cms_content con LEFT JOIN cms_category cat ON cat.id = con.category_id WHERE con.published = 1 AND con.showlatest = 1 AND (con.is_end=0 OR (con.is_end=1 AND con.enddate >= '$today' AND con.pubdate <= '$today')) ".$catsql.""; $result_total = $inDB->query($sql_total) ; //всего результатов $total_page = $inDB->num_rows($result_total); //всего страниц } if ($inDB->num_rows($result)) //если результат вернулся не пустой (строка 63) { $is_con = true; // контент $inCore->loadModel('content'); // вызываем из cms.php метод loadModel $model = new cms_model_content(); //присваиваем модели новый объект контент while($con = $inDB->fetch_assoc($result)) //заполняем его значениями из результата запроса выше (строка 63) { //перебирая в цикле все строки из него в виде ассоциативного массива $articles[$next]['id'] = $con['id']; $articles[$next]['title'] = $con['title']; $articles[$next]['hits'] = $con['hits']; $articles[$next]['href'] = $model->getArticleURL(null, $con['seolink']); $articles[$next]['author'] = $con['author']; $articles[$next]['authorhref'] = cmsUser::getProfileURL($con['author_login']); $articles[$next]['comments'] = $cfg['showcom'] ? $inCore->getCommentsCount('article', $con['id']) : false; $articles[$next]['date'] = $inCore->dateformat($con['fdate']); $articles[$next]['description'] = $con['description']; $articles[$next]['image'] = (file_exists(PATH.'/images/photos/small/article'.$con['id'].'.jpg') ? 'article'.$con['id'].'.jpg' : ''); } } $smarty = $inCore->initSmarty('modules', 'mod_latest.tpl'); //инициируем объект Смарти и передаем в него переменные $smarty->assign('articles', $articles); //в Смарти {$articles} $smarty->assign('rssid', $rssid); //в Смарти {$rssid} if ($cfg['is_pag']) //если установлена пейджинация передаем в Смарти {$is_pad} { $smarty->assign('pagebar', cmsPage::getPagebar($total_page, $page, $perpage, 'javascript:conPage(%page%,'.$module_id.')')); //в Смарти {$pagebar} } $smarty->assign('is_ajax', false); //в Смарти {$is_ajax} по умолчанию ложно $smarty->assign('is_con', $is_con); //в Смарти {$is_con} наличие контента $smarty->assign('module_id', $module_id); // и т.д. $smarty->assign('cfg', $cfg); $smarty->display('mod_latest.tpl'); //выводим Шаблон Модуля return true; } ?>