Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
.idea/
68 changes: 68 additions & 0 deletions CLASS.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
<?
use \Bitrix\Main\Loader;
Loader::includeModule("iblock");

class ElementsCollector
{

$sort = ['sort'=>'asc'];
$filter = [];
$fields = [];

private function Validator($params)
{
//Сначала проводим валидацию фильтра, предполагается что он обязательно должен быть заполненым
if(empty($params['filter'])){
return ['type' => false, 'msg' => 'Empty filter'];
}else if(!is_array($params['filter'])){
return ['type' => false, 'msg' => 'Invalid filter'];
}else if(empty($params['filter']['IBLOCK_ID'])){
return ['type' => false, 'msg' => 'Empty IBLOCK_ID'];
}else{
$this->filter = $params['filter'];
}

//Проверяем сортировку
//Предполагается что мыиспользуем простую сортировку по возрастанию и убыванию
if(!empty($params['sort'])){
if(!is_array($params['sort'])){
return ['type' => false, 'msg' => 'Invalid sort'];
}else if(count($params['sort']) > 1){
return ['type' => false, 'msg' => 'Invalid sort'];
}else if(!in_array($params['sort'][array_key_first($params['sort'])],['asc','desc'])){
return ['type' => false, 'msg' => 'Invalid sort'];
}else{
$this->sort = $params['sort'];
}
}

//Проверяем поля
if(!empty($params['fields'])){
if(!is_array($params['fields'])){
return ['type' => false, 'msg' => 'Invalid fields'];
}else{
$this->fields = $params['fields'];
}
}
return ['type' => true];
}

public function Collector($params)
{
$validator = $this->Validator($params);
if($validator['type']){

//Для удобства
$sort = &$this->sort;
$filter = &$this->filter;
$fields = &$this->fields;

$sample = CIBlockElement::GetList($sort,$filter,false,false,$fields);
return $sample;
}else{
return $validator['msg'];
}
}


}
43 changes: 43 additions & 0 deletions CLASS2.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
<?php
/**
* Created by PhpStorm.
* User: Ryumin_DS
* Date: 19.11.2019
* Time: 11:57
*/
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");

use \Bitrix\Main\Loader;
Loader::includeModule("iblock");

Class IblockWork {
function GetElementsListCache($ListCacheParams){ // Метод - Получение кэшированногого списка элементов инфоблока
$cacheTime = 3600; // Время действия кэша
$cacheId = md5(serialize($ListCacheParams)); // id кэша, собранный из параметров, переданных в метод
$cachePath = 'get_elements_list'; // директория кэша
$obCache = new CPHPCache();
if ($obCache->InitCache($cacheTime, $cacheId, $cachePath)){ // Если кэш с текущими параметрами существует
$elements_list = $obCache->GetVars();
}else{ // Если кэш с текущими параметрами Не существует
$elements_list = CIBlockElement::GetList($ListCacheParams['arSort'], $ListCacheParams['arSelect'], false, Array("nPageSize"=>50), $ListCacheParams['arFilter']); // Получаем список элементов инфоблока
$obCache->StartDataCache($cacheTime, $cacheId, $cachePath);
$obCache->EndDataCache($elements_list); // Записываем список в кэш
}
return $elements_list;
}
}
/* END Класс - Работа с инфоблоками */
/* Применение метода - получение кэшированногого списка элементов инфоблока */
$ListCacheParams = Array( // Задаем параметры метода
'arSort' => Array("ID" => 'asc'), // Сортировка
'arSelect' => Array("ID", "NAME", "DATE_ACTIVE_FROM"), // Поля
'arFilter' => Array("IBLOCK_ID"=>IntVal(24), "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y") // Фильтр
);
$object = new IblockWork;
$elements_list = $object->GetElementsListCache($ListCacheParams); // Обращаемся к методу
echo '<pre>';
print_r($elements_list); // Выводим результат
echo '</pre>';
/* END Применение метода - получение кэшированногого списка элементов инфоблока */
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");
?>
28 changes: 28 additions & 0 deletions getLastNews.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<?

$url = "https://lenta.ru/rss";
$content = file_get_contents($url);

$items = new SimpleXmlElement($content);

$count = 0;
$news = [];

foreach ($items->channel->item as $key => $item) {
if($count < 5){
$title = $item->title;
$link = $item->link;
$descr = $item->description;
$news[] = implode("<br>",[$title,$link,$descr]);

$count++;
}else{
break;
}
}

echo "<ul>";
foreach ($news as $key => $value) {
echo "<li>$value</li>";
}
echo "</ul>";