Skip to content

Commit

Permalink
мелкие правки
Browse files Browse the repository at this point in the history
  • Loading branch information
Ichinya committed Dec 26, 2020
1 parent 3dbb989 commit 1841e3a
Show file tree
Hide file tree
Showing 4 changed files with 57 additions and 18 deletions.
12 changes: 6 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
# Яндекс Турбо для сайта на MediWiki
# Яндекс Турбо для сайта на MediWiki

# Установка
Скопировать папку в корень сайта mediawiki. После чего вбить в файлы конфигов скрипта `config.inc.php` и ленты rss `rss_templates\turbo.params.php`
Скопировать папку в корень сайта mediawiki. После чего лучше посмотреть настройки в файлах конфигурации скрипта `config.inc.php` и ленты rss `rss_templates\turbo.params.php` _(стандартные настройки подойдут для многих)_

# Вызов ленты RSS
* `сайт/turbo` выведется список адресов лент rss (для Яндекс Турбо)
* `сайт/turbo?page=0` лента RSS с шаблоном по умолчанию (задается в конфиге)
* `сайт/turbo?template=new` выводится список лент RSS с шаблоном new
* `сайт/turbo?template=new&page=0` лента с шаблоном new
* `сайт/turbo?template=new` выводится список лент RSS с шаблоном new _(название шаблона указано для примера)_
* `сайт/turbo?template=new&page=0` лента с шаблоном new _(название шаблона указано для примера)_

# Возможности
* Не требуется авторизация к сайту. По идее может работать даже из другого места. Работает поностью через **api mediawiki**
* Есть кэширование страниц, при первом запуске создается файл cache.db, в котором будут храниться страницы для rss лент
* Не требуется авторизация к сайту. По идее может работать даже из другого места. Работает полностью через **api mediawiki**
* Есть кэширование страниц, при первом запуске создается файл `cache.db`, в котором будут храниться страницы для rss лент
* Можно изменить почти что угодно. Код довольно простой, параметры апи храняться в файлах `params_*.json`
* Можно добавить шаблоны, просто нужно создать три файла: `шаблон.item.php` _(один элемент ленты)_, `шаблон.rss.php` _(лента)_ и `шаблон.params.php` _(параметры ленты)_
* Вызов шаблона (при использовании не по-умолчанию) происходит с параметром GET `template=шаблон`
Expand Down
31 changes: 23 additions & 8 deletions cDB.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public function __construct()
$sql = "SELECT * FROM config WHERE name = :name;";
$query = self::$db->prepare($sql);
$query->bindValue(':name', 'version');
self::$query[] = (self::$getSQL) ? $query->getSQL(self::$getSQL): "$sql version";
self::$query[] = (self::$getSQL) ? $query->getSQL(self::$getSQL) : "$sql version";
$res = $query->execute()->fetchArray(SQLITE3_ASSOC);
if ($res == null) {
$this->setConfig('version', SQLite3::version()['versionString']);
Expand All @@ -34,7 +34,7 @@ public function __construct()
self::$getSQL = false;
}

$this->setConfig('getSQL', self::$getSQL);
$this->setConfig('getSQL', self::$getSQL);
}
}

Expand Down Expand Up @@ -78,7 +78,7 @@ public function getConfig($name)
$query = self::$db->prepare($sql);
$query->bindValue(':name', $name);
$res = $query->execute()->fetchArray(SQLITE3_ASSOC);
self::$query[] = (self::$getSQL) ? $query->getSQL(self::$getSQL): "$sql $name";
self::$query[] = (self::$getSQL) ? $query->getSQL(self::$getSQL) : "$sql $name";
return $res['value'];
}

Expand All @@ -100,7 +100,7 @@ public function setConfig($name, $value)
$query = self::$db->prepare($sql);
$query->bindValue(':name', $name);
$query->bindValue(':value', $value);
self::$query[] = (self::$getSQL) ? $query->getSQL(self::$getSQL): "$sql $name - $value";
self::$query[] = (self::$getSQL) ? $query->getSQL(self::$getSQL) : "$sql $name - $value";
if (!$query->execute()) {
return false;
}
Expand All @@ -113,10 +113,26 @@ public function getPageById(int $id)
$sql = "SELECT * FROM page WHERE id = :id;";
$query = self::$db->prepare($sql);
$query->bindValue(':id', $id);
self::$query[] = (self::$getSQL) ? $query->getSQL(self::$getSQL): "$sql $id";
self::$query[] = (self::$getSQL) ? $query->getSQL(self::$getSQL) : "$sql $id";
return $query->execute()->fetchArray(SQLITE3_ASSOC);
}

public function getPageByIds(array $ids)
{
if (count($ids) == 0) {
return [];
}
self::$count_query++;
$sql = "SELECT * FROM page WHERE id in (".implode(',', $ids).");";
$query = self::$db->query($sql);
self::$query[] = $sql;
$result = [];
while ($row = $query->fetchArray(SQLITE3_ASSOC)) {
$result[$row['id']] = $row;
}
return $result;
}

public function getEmptyPagesId()
{
self::$count_query++;
Expand Down Expand Up @@ -191,7 +207,7 @@ public function updateUrlByIds(array $data): bool
$query = self::$db->prepare($sql);
$query->bindValue(':id', $id);
$query->bindValue(':url', $url);
self::$query[] = (self::$getSQL) ? $query->getSQL(self::$getSQL): "$sql $id";
self::$query[] = (self::$getSQL) ? $query->getSQL(self::$getSQL) : "$sql $id";
if (!$query->execute()) {
return false;
}
Expand Down Expand Up @@ -232,12 +248,11 @@ public function updateCache(cPage $page)
$query->bindValue(':text', $this->clearText($page->text));
$query->bindValue(':updateAt', $page->updateAt);
$query->bindValue(':categories', implode(',', $page->categories));
self::$query[] = (self::$getSQL) ? $query->getSQL(self::$getSQL): "$sql {$page->id}";
self::$query[] = (self::$getSQL) ? $query->getSQL(self::$getSQL) : "$sql {$page->id}";
return $query->execute();
}



public function __destruct()
{
self::$db->close();
Expand Down
26 changes: 26 additions & 0 deletions cParse.php
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,32 @@ private function updatePageByPage(cPage &$page)
return $page;
}

private function getCachePage(array $pageList)
{
$ids = [];
foreach ($pageList as $page) {
$ids[] = $page->id;
}
return $this->db->getPageByIds($ids);
}

public function updateCache(array $pageList)
{
$cachePage = $this->getCachePage($pageList);
foreach ($pageList as $page) {
if ($page->revid === 0) {
continue;
}
if (!$cachePage[$page->id] ||
strtotime($page->updateAt) > strtotime($cachePage[$page->id]['updateAt']) ||
empty($page->revid)) {
// парсим страницу и записываем в БД
$this->updatePageByPage($page);
$this->db->updateCache($page);
}
}
}

/**
* Получаем актуальные данные из кэша, либо обновляем их
* @param cPage $page
Expand Down
6 changes: 2 additions & 4 deletions index.php
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,8 @@

$list->getPages();
// проверяем все страницы
foreach ($list->listPage as $page) {
// обновляем кэш
$parse->updateCacheByPageId($page);
}

$parse->updateCache($list->listPage);
$parse->fillingURL();
// модуль формирования RSS
$rssTemplate = isset($_GET['template']) ? $_GET['template'] : $config['defaultTemplate'];
Expand Down

0 comments on commit 1841e3a

Please sign in to comment.