if (! $result = $this->diafan->_cache->get($cache_meta, "news"))
{
$minus = array();
$one_cat_id = count($cat_ids) == 1 && substr($cat_ids[0], 0, 1) !== '-' ? $cat_ids[0] : false;
if(! $this->validate_attribute_site_cat('news', $site_ids, $cat_ids, $minus))
{
return false;
}
$where = "";
if($sort == 'keywords')
{
Custom::inc('includes/searchwords.php');
$searchwords = new Searchwords();
$names = $searchwords->prepare($title);
if(empty($names))
{
return false;
}
foreach ($names as $i => $name)
{
$where .= ($i ? " OR ": " AND (")."LOWER(e.[name]) LIKE '%%".$name."%%'";
}
$where .= ")";
}
if($this->diafan->_site->module == "news" && $this->diafan->_route->show)
{
$where .= " AND e.id<>".$this->diafan->_route->show;
}
$inner = "";
if($cat_ids)
{
$inner = " INNER JOIN {news_category_rel} as r ON r.element_id=e.id"
." AND r.cat_id IN (".implode(',', $cat_ids).")";
}
elseif(! empty($minus["cat_ids"]))
{
$inner = " INNER JOIN {news_category_rel} as r ON r.element_id=e.id"
." AND r.cat_id NOT IN (".implode(',', $minus["cat_ids"]).")";
}
if($site_ids)
{
$where .= " AND e.site_id IN (".implode(",", $site_ids).")";
}
elseif(! empty($minus["site_ids"]))
{
$where .= " AND e.site_id NOT IN (".implode(",", $minus["site_ids"]).")";
}
if($prior!='')
$where .= " AND e.prior = '".$prior."' ";
$result["rows"] = DB::query_range_fetch_all(
"SELECT e.id, e.[name],e.[anons], e.timeedit, e.site_id, e.created FROM {news} AS e"
.$inner
.($this->diafan->configmodules('where_access_element', 'news') ? " LEFT JOIN {access} AS a ON a.element_id=e.id AND a.module_name='news' AND a.element_type='element'" : "")
." WHERE e.[act]='1' AND e.trash='0' AND e.created<%d"
.($this->diafan->_site->module == 'news' && $this->diafan->_route->show ? " AND e.id<>".$this->diafan->_route->show : '')
." AND e.date_start<=%d AND (e.date_finish=0 OR e.date_finish>=%d)"
.($this->diafan->configmodules('where_access_element', 'news') ? " AND (e.access='0' OR e.access='1' AND a.role_id=".$this->diafan->_users->role_id.")" : '')
.$where
." GROUP BY e.id ORDER BY e.prior DESC, e.created DESC, e.id DESC",
$time, $time, $time, 0, $count
);
$this->elements($result["rows"], array("count" => $images, "variation" => $images_variation));
// если категория только одна, задаем ссылку на нее
if (!empty($result["rows"]) && $one_cat_id)
{
$cat = DB::query_fetch_array("SELECT [name], site_id, id FROM {news_category} WHERE id=%d LIMIT 1", $one_cat_id);
$result["name"] = $cat["name"];
$result["link_all"] = $this->diafan->_route->link($cat["site_id"], $cat["id"], 'news', 'cat');
$result["category"] = true;
}
// если раздел сайта только один, то задаем ссылку на него
elseif (!empty($result["rows"]) && count($site_ids) == 1)
{
$result["name"] = DB::query_result("SELECT [name] FROM {site} WHERE id=%d LIMIT 1", $site_ids[0]);
$result["link_all"] = $this->diafan->_route->link($site_ids[0]);
$result["category"] = false;
}
$this->diafan->_cache->save($result, $cache_meta, "news");
}
foreach ($result["rows"] as &$row)
{
$this->prepare_data_element($row);
}
foreach ($result["rows"] as &$row)
{
$this->format_data_element($row);
}
return $result;
}
В news.php заменить функцию
Код
public function show_block($attributes)
{
$attributes = $this->get_attributes($attributes, 'count', 'site_id', 'cat_id', 'sort', 'images', 'images_variation', 'only_module', 'template','prior');
В новой сборке совершили революцию в структурировании кастомизированной информации в шаблонах, добавили авторегистрацию пользователей, усовершенствовали защиту от спама, актуализировали накопительную скидку, а также улучшили производительность и стабильность работы системы.
После выхода сборки 7.1 мы выпустили уже три патча, в каждом из которых улучшаем административную часть сайта. Сборка DIAFAN.CMS 7.1.3 уже доступна к установке.