Перейти к публикации

MaHarder

Клиенты
  • Публикации

    117
  • Зарегистрирован

  • Посещение

  • Дней в лидерах

    5

Сообщения, опубликованные пользователем MaHarder

  1. Сабж,

    из класса DLEPlugins пропала переменная $read_only.

     

    Из-за этого сыпятся проблемы

    Fatal error: Uncaught Error: Call to undefined method DLEPlugins::$read_only in C:\_dev\OpenServer\domains\...\engine\inc\plugins.php:1377 Stack trace: #0 C:\_dev\OpenServer\domains\....local\engine\inc\include\init.php(598): include_once() #1 C:\_dev\OpenServer\domains\....local\admin.php(29): require_once('C:\\_dev\\OpenSer...') #2 {main} thrown in C:\_dev\OpenServer\domains\....local\engine\inc\plugins.php on line 1377

    Версию только что с сайта скачал

    define('DINITVERSION', '1551' );
    define('VERSIONID',    '15.2' );
    define('BUILDID',      '103' );

     

  2. 18 часов назад, Captain сказал:

    Данная папка не предназначена для загрузки изображений

    тогда, я думаю, стоит об этом вывести уведомление, что изображения не допустимы. потому что не очевидно при использовании UI. Ведь другого пути не дано.

     

    7 часов назад, celsoft сказал:

    Эта папка для загрузки скачиваемых через DLE файлов, а не для изображений.

    по внешнему виду - это не понятно

    • Нравится 1
  3. Для примера использовал это изображение: https://picfiles.alphacoders.com/306/306837.jpg.

    Загрузил его предварительно в папку /uploads/files

    В админпанели указал название файла. При нажатии "Загрузить" получаю ошибку "Image source not readable"

     

    image-2022-06-28-20-25-30.png

     

    Используется последняя версия DLE

    71f6c48c0a6042b6edf5a2d200f87706.png

  4. 3 часа назад, celsoft сказал:

    Никаких багов в DLE в данном вопросе нет. Ничего добавлять в этот файл не нужно, и никаких подключений в этом файле быть не должно.

    А ваша проблема связана исключительно с тем что у вас файлы от разных версий скрипта на сервере и при обновлении вы обновили не все файлы DLE.

    ясно, поэтому в файле класса парсера используется этот класс

    $parse_config = HTMLPurifier_Config::createDefault();

    Конечно, если подключать файл при помощи класса плагина, то проблем не будет (полагаю), а вот если без - будет выдавать ошибку, что класс не известен. Возможно, это было не предусмотрено в ходе разработки, что сторонние разработчики будут напрямую подключать файлы.

  5. Модуль будет отправлять сообщения в выбранный чат при помощи бота. Гибкие настройки позволят модулю отправлять лишь то, что вы хотите.

    Пожелания учитываются.

     

    Возможности:

    • Отправка сообщений при добавлении новости
    • Отправка сообщений при редактировании новости
    • Отправка при зависимости от полей
    • Отправка обычного сообщения на канал
    • Поиск нужного чата
    • Настройка шаблонов для отправки сообщений
    • Если сайт работает через SSL, то будет возможность преобразовать бота в Webhook
    •  

    Обновления

    v1.6.0 BETA

    Последнее обновление в данном виде, думаю. НУЖНЫ ТЕСТЕРЫ, ПРОВЕРКИ ТОЛКОМ НЕ БЫЛО!

    Модуль был переписан с нуля, тем самым подготавливая его к новой версии релиза

     

    Были добавлены следующие возможности:

    • Доступны все теги, что используются в полной новости
    • Добавлены новые теги, подробнее ниже
    • Добавлена поддержка вывода галереи, видео, изображения и аудио
    • Добавлена поддержка миниатюр, для превью контента
    • Выбор зависимости был расширен

    Поддерживаемые теги для оформление шаблонов:

    • Теги для полной новости движка DLE - https://dle-news.ru/extras/online/all17.html
    • {tags_no_link} - Вывод тегов без ссылок
    • {hashtags} - Вывод тегов в виде хештегов (тег без ссылки, но добавляется # к тегу)
    • [xfvalue_XXX_text] - Если доп. поле является перекрестной ссылкой, то выводиться будет как простой текст
    • [xfvalue_XXX_hashtag] - Если доп. поле является перекрестной ссылкой, то выводиться будет как хештег
    • [telegram_media_xfield_XXX file=Y max=Z] - Добавляет значение в массив медиа для сообщения.
      XXX - название доп. поля
      Y - Номер медиафайла, если в перечени несколько файлов (file= не обязателен)
      Z - максимальное кол-во добавляемых файлов, если в перечени несколько файлов, иначе добавятся все (max= не обязателен). Не совместим с опцией file.
    • [telegram_media_video video=X max=Z] - Добавление видео в массив медиа.
      X - номер видео
      Y - Номер медиафайла, если в перечени несколько файлов (video= не обязателен)
      Z - максимальное кол-во добавляемых файлов, если в перечени несколько файлов, иначе добавятся все (max= не обязателен). Не совместим с опцией video.
    • [telegram_media_audio audio=X max=Z] - Добавление аудио в массив медиа.
      Y - Номер медиафайла, если в перечени несколько файлов (audio= не обязателен). Не совместим с опцией audio.
      Z - максимальное кол-во добавляемых файлов, если в перечени несколько файлов, иначе добавятся все (max= не обязателен)
    • [telegram_media_image image=X max=Z] - Добавление изображений в массив медиа.
      Y - Номер медиафайла, если в перечени несколько файлов (image= не обязателен). Не совместим с опцией image.
      Z - максимальное кол-во добавляемых файлов, если в перечени несколько файлов, иначе добавятся все (max= не обязателен). Не совместим с опцией image.
    • [telegram_media_allimages image=X max=Z] - Учитываются все изображения добавленные в краткую и полную новость, а так-же из доп. полей.
      Y - Номер медиафайла, если в перечени несколько файлов (image= не обязателен)
      Z - максимальное кол-во добавляемых файлов, если в перечени несколько файлов, иначе добавятся все (max= не обязателен). Не совместим с опцией image.
    • [telegram_thumb]XXX[/telegram_thumb] - Миниатюра или же превьюшка. Вместо XXX заполняем теги, иначе будет браться первое изображение из массива изображений.
      Максимальный размер изображения - 200 kb
      Максимальная высота и ширина - 320 px
      Указывать только онду ссылку на миниатюру, иначе будет браться первое изображение из массива изображений
    • [telegram_title]XXX[/telegram_title] - Заголовок для сообщения в телеграме. Вместо XXX выши теги, иначе будет браться заголовок новости.
    • [button=X]Y[/button] - Добавление кнопки под сообщением.
      X - ссылка
      Y - описание ссылки

    Теги [telegram_media_ будут обработаны в том случае, если выбран медийный шаблон. Иначе - станут пустышкой. Если загруженный файл не будет являться разрешённым форматом, то он будет загружен как документ. Максимальное кол-во медиа файлов: 10.

    Вывод сообщений

    • Текстовой вывод - Обыкновенный вывод сообщений.
    • Галерейный вывод - Вывод сообщений с поддержкой медиавставок (до 10-ти штук)
    • Сообщение с постером - Вывод сообщения с основным постером, в качестве постера берётся первое указанное изображение, другие игнорируются
    • Сообщение с аудио - Вывод сообщения с аудио, как основа, в качестве аудио берётся первое указанное аудио, другие игнорируются
    • Сообщение с видео - Вывод сообщения с видео, как основа, в качестве видео берётся первое указанное видео, другие игнорируются

     

     

    Скачать: https://github.com/Gokujo/telegramposting/releases/latest

    • Нравится 2
    • Поддерживаю 1
  6. Не буду создавать новую тему

    в этом же файле, на строке 1741

    $tpl->copy_template = preg_replace( "#\[not-image-{$i_count}\](.+?)\[/not-image-{$i_count}\]#is", "", $tpl->copy_template );

    Предыдущих значений не нашёл в файле, видать имелось ввиду

    $tpl->copy_template = preg_replace( "#\[not-image-{$i}\](.+?)\[/not-image-{$i}\]#is", "", $tpl->copy_template );

     

  7. Обновил до 1.1.0, полностью переписал запрос, чтобы охватить все используемые доп. поля

    https://devcraft.club/downloads/xf-list-generator.19/download

    Версия 1.1.0
    Добавлены новые теги для формирования вывода

    • cat - Перечень категорий через запятую (,) из которых должны формироваться списки
    • news_id - Перечень новостей через запятую (,) из которых должны формироваться списки


    Добавлены новые теги для шаблонов

    • {count} - Выводит общее количество использования доп. поля (пока тестируется)

     

  8. 18 часов назад, celsoft сказал:

    Так достаточно просто не использовать знак "|", а просто написать "Понятное описание значения 1" и все. Стандартный DLE сделает то же самое.

    Это понятно. Никто не спорит. Но бывают моменты, когда нужно именно значение на латинском, при этом прописывать ifxvalue и выводить повторно описания в шаблоне.

    Допустим, у нас поле со списком которое должно выводить статус. В оформлении заточено так, что стиль подстраивается под значение поля, т.е. 

    [xfgiven_status]class="status [xfvalue_status]"[/xfgiven_status]

    Может, конечно где-то и используется кириллица в стилях, но я такого не встречал. ведь по логике выше мне придётся прописывать следующее для вывода описания значения

    [ifxfvalue status="uno"]Описание 1[/ifxfvalue][ifxfvalue status="dos"]Описание 2[/ifxfvalue][ifxfvalue status="tres"]Описание 3[/ifxfvalue]

    А с этой модификацией кода достаточно будет прописать вот так

    [xfgiven_status] <div class="status [xfvalue_status]">[xfvalue_tagvalue_status]</div>[/xfgiven_status]

     

  9. 21 час назад, Mr. Bot сказал:

    Это как раз таки специально и сделано, что бы

     

    и? его работа не будет затронута. А этот тег позволит вывести описание самого значения. Не пойму, в чём придирка?

  10. 16 минут назад, Хоббит сказал:

    Для чего такой плагин? 

    для генерации списков. допустим, чтобы вывести всех доступных производителей запчастей в определённой части сайта. Я когда-то делал его для одного киносайта, для фильтрации.

  11. Данный модуль работает на основе перекрёстных ссылок и при помощи шаблона выводит в нужном месте сгенерированный список.

    Всё настраивается в шаблонах.

     

    Модуль подключается в любом шаблоне при помощи инклуда:

    [CODE=html]{include file="engine/modules/xf_list_gen.php?xffield=X&template=X&&limit=X&skip=X&sort=X"}[/CODE]

     

    Обязательные теги:

    • xffield - Название доп. поля
    • template - Название шаблона с окончанием

    Дополнительные теги:

    • limit - Ограничивает вывод записей в списке, принимает только числа. По умолчанию: пусто
    • skip - Пропускает заданное число записей, принимает только числа. По умолчанию: пусто
    • sort - Сортировка списка, по умолчанию или по убыванию. Принимает только ASC и DESC. По умолчанию: ASC

     

    Возможные теги в вашем шаблоне:

    • {link} - Выводит ссылку на доп. поле, если имеется (хотя да...)
    • {name} - Название доп. поля
    • {value} - Значение доп. поля
    • {max_value} - Максимально возможное значение, сделано для вывода чисел
    • {min_value} - Минимально возможное значение, сделано для вывода чисел

     

    Скачатьhttps://devcraft.club/downloads/xf-list-generator.19/

    Или файл плагина

    <?xml version="1.0" encoding="utf-8"?>
    <dleplugin>
    	<name>Xfield List Generator</name>
    	<description>Создаёт списки доп. полей на основе шаблона.</description>
    	<icon></icon>
    	<version>1</version>
    	<dleversion>13</dleversion>
    	<versioncompare>greater</versioncompare>
    	<upgradeurl></upgradeurl>
    	<filedelete>0</filedelete>
    	<needplugin></needplugin>
    	<mnotice>0</mnotice>
    	<mysqlinstall><![CDATA[]]></mysqlinstall>
    	<mysqlupgrade><![CDATA[]]></mysqlupgrade>
    	<mysqlenable><![CDATA[]]></mysqlenable>
    	<mysqldisable><![CDATA[]]></mysqldisable>
    	<mysqldelete><![CDATA[]]></mysqldelete>
    	<phpinstall><![CDATA[]]></phpinstall>
    	<phpupgrade><![CDATA[]]></phpupgrade>
    	<phpenable><![CDATA[]]></phpenable>
    	<phpdisable><![CDATA[]]></phpdisable>
    	<phpdelete><![CDATA[]]></phpdelete>
    	<notice><![CDATA[]]></notice>
    	<file name="engine/modules/xf_list_gen.php">
    		<operation action="create">
    			<replacecode><![CDATA[<?php
    /**
     * @author: Maxim Harder
     * @link: https://devcraft.club
     * @description: Автоматический генератор списков для вывода доп. полей
     *
     */
    
    
    if (!defined('DATALIFEENGINE')) {
    	die('see ya.');
    }
    
    if( empty($template) && empty($xffield)) return false;
    
    $limit = (isset($limit) && (int)$limit) ? " LIMIT {$limit}" : '';
    $skip = (isset($skip) && (int)$skip) ? " OFFSET {$skip}" : '';
    $steps = $limit + $skip;
    $cprefix = "xf_gen_".$xffield;
    $db_prefix = PREFIX;
    $sort = (isset($sort) && in_array($sort, ['asc', 'desc', 'ASC', 'DESC'])) ? $sort : 'ASC';
    $sql_field = "SELECT tagvalue FROM {$db_prefix}_xfsearch WHERE tagname = '{$xffield}' ORDER BY tagvalue {$sort}{$limit}{$skip}";
    $cache_name = "{$sql_field}_{$template}_{$limit}_{$skip}";
    
    $gen = dle_cache ( $cprefix, $cache_name );
    
    if( $gen ) {
    	echo $gen;
    } else {
    
    	if (!function_exists('get_min_max')) {
    		function get_min_max(array $values, string $type)
    		{
    			if ('min' == $type) {
    				return min(array_diff(array_map('intval', $values), [0]));
    			}
    
    			return max(array_diff(array_map('intval', $values), [0]));
    		}
    	}
    
    	if (!function_exists('gen_xfields')) {
    		function gen_xfields()
    		{
    			global $config;
    			$xf_list = [];
    
    			$handle = @fopen(ENGINE_DIR.'/data/xfields.txt', 'r');
    			if ($handle) {
    				while (($buffer = fgets($handle, 4096)) !== false) {
    					$buf_split = explode('|', $buffer);
    					$xf_list[$buf_split[0]] = [
    						'name' => $buf_split[0],
    						'value' => $buf_split[1],
    						'type' => $buf_split[3],
    						'splitter' => empty($buf_split[21]) ? ', ' : $buf_split[21],
    						'search' => (1 === $buf_split[6]) ? true : false,
    						'default' => [],
    					];
    
    					if ('select' == $buf_split[3]) {
    						$default_values = explode('__NEWL__', $buf_split[4]);
    						foreach ($default_values as $val) {
    							$vals = explode('&#124;', $val);
    							$xf_list[$buf_split[0]]['default'][$vals[0]] = $vals[1];
    						}
    					}
    				}
    				fclose($handle);
    			}
    
    			return $xf_list;
    		}
    	}
    
    	$db->query( $sql_field );
    
    	$gen_tpl = new dle_template();
    	$gen_tpl->dir = TEMPLATE_DIR;
    	$gen_tpl->load_template( $template );
    	$xffields = gen_xfields();
    	$xf_chosen = $xffields[$xffield];
    	$all_xfs = array();
    	$min_max_value = [];
    
    	$l = 0;
    	while($gen = $db->get_row()) {
    		$l++;
    
    		if (!in_array($gen['tagvalue'], $all_xfs)) {
    
    			if ('select' == $xf_chosen['type']) {
    				$value = $xffields[$xffield]['default'][$gen['tagvalue']];
    			} else {
    				$value = $gen['tagvalue'];
    			}
    			$link = '';
    
    			if ($xffields[$xffield]['search']) {
    				$url_val = str_replace(['&#039;', '&quot;', '&amp;', '&#123;', '&#91;', '&#58;'], ["'", '"', '&', '{', '[', ':'], $value);
    
    				if ($config['allow_alt_url']) {
    					$link = '<a href="'.$config['http_home_url'].'xfsearch/'.$xffield.'/'.rawurlencode($url_val).'/">'.$value.'</a>';
    				} else {
    					$link = "<a href=\"{$PHP_SELF}?do=xfsearch&amp;xfname=".$xffield.'&amp;xf='.rawurlencode($url_val).'">'.$value.'</a>';
    				}
    			}
    
    			if ((int) $gen['tagvalue']) $min_max_value[] = (int) $gen['tagvalue'];
    
    			$gen_tpl->set('{link}', $link);
    			$gen_tpl->set('{name}', $value);
    			$gen_tpl->set('{value}', $gen['tagvalue']);
    			$gen_tpl->set('{max_value}', get_min_max($min_max_value, 'max'));
    			$gen_tpl->set('{min_value}', get_min_max($min_max_value, 'min'));
    			$gen_tpl->set('{count}', (int) $l);
    
    			$gen_tpl->compile('gen_item');
    			$all_xfs[] = $gen['tagvalue'];
    		}
    	}
    
    	echo $gen_tpl->result['gen_item'];
    
    	create_cache ( $cprefix, $gen_tpl->result['gen_item'], $cache_name );
    	$gen_tpl->clear();
    	unset($gen_tpl);
    	$db->free();
    
    
    }
    
    ]]></replacecode>
    		</operation>
    	</file>
    </dleplugin>

     

    • Спасибо 1
  12. Допустим, вы ввели значения похожие на эти:
     

    Цитата

    val1|Понятное описание значения 1
    val2|Понятное описание значения 2
    val3|Понятное описание значения 3
    ...


    Стандартный тег [xfvalue_X] будет выводить лишь valN, но при помощи этого модуля на сайте будут показаны значения "Понятное описание значения N".

    Модуль не заменят стандартные теги, а добавляет два новых двух.

    Для использования данной модификации - достаточно указать следующие теги в шаблоне оформления новостей. Модуль будет работать и с мультивыбором, и с указанием значений с разделителем |, и даже без него.

    [xfvalue_tagvalue_X] - Выводит просто все значения поля
    [xfvalue_tagvalue_url_X] - Если доп. поле обозначено, как перекрёстная ссылка, то и вывод всех значений будет выводиться как ссылка. Если же это измениться, то значение будет схоже с тегом [xfvalue_tagvalue_X].

    Вместо X вводим своё доп. поле

     

    Скачатьhttps://github.com/Gokujo/xfselecttruevalue/releases/latest

    • Спасибо 1
  13. @celsoft

    мне было интересно решение относительно такой структуры. ни я, ни кто-либо другой не может вам что либо навязать. Однако, загорелся интерес проверить затрату времени при выборке данных полей дат. Я использовал базу данных сотрудников своей фирмы, само собой - её копию, а именно таблицу по рабочим часам. Для теста я взял данные за 2018 год. Сначала я запрашивал как datetime, а затем как varchar. Integer не трогал. Всего собралось более 36000 строк. Думаю, этого будет достаточно. Тест показал, что конвертация дат из текста, куда больше времени и ресурсов занимает, нежели конвертация из даты в текст. Может, я что-то упустил или напутал. Кто знает. Вот, сам тест. И да, я тестировал на PostgreSQL.

     

    Если вам так угодна скорость и работоспособность базы данных, то почему же не использовать SQLite? Она идеально подходит вашим требованиям, даже лучше. На вебхосте даже не нужно иметь отдельно базы данных. И взаимодействие будет происходить куда быстрее и эфективнее. То, что ваши 15000 клиентов сидят на MyISAM - ничего страшного, обновят в ходе обновления движка. А те, кто не сидит на актуальных версиях - обновлять не будет и их это ну никак не коснётся. Тем более, что минимальное требование по MySQL значится как 5.5.3. Рано или поздно вам всёравно придётся обновляться. А с версии 5.5.6 InnoDB уже стандартный движок MySQL. Конечно, опыт с хостерами у нас разный, но на моём опыте - пока никто из хостеров не отказывал в апгрейде MySQL, ибо им это не выгодно.

     

    Да, у вас в CMS системах больше опыта, чем у меня, поскольку я работаю с ERP-системами.

     

    Спасибо, ответ на свои вопросы я получил. Повторюсь в очередной раз, никому и ничего я не хотел и не хочу навязывать.

  14. 57 минут назад, crafic сказал:

    Это уже дополнительный запрос в бд 

    это один запрос, он аналогичен тому, что даёт DLE. я не специфицировал для чего именно. так или иначе - этим запросом я получаю данные о доп. полях к новости.

    1 час назад, crafic сказал:

    я б наверно в serialize их.

    если оставаться при той же структуре - было бы супер, но увы - факт остаётся фактом, если поле mytranslitedname вдруг переименнуется в alt_name, то в базе данных это никак не отобразится. Просто выпадет из списка доп. полей и не будет отображаться, поскольку в бд до сих пор остаётся mytranslitedname.

     

    1 час назад, crafic сказал:

    deleteNewsById

    есть, полезная функция

  15. 1 час назад, celsoft сказал:

    А DLE как известно готовый коробочный продукт, а не фрейворк

    Причём тут фреймворк до 3. нормы базы данных? я вам о Foreign Keys говорю. Я ради наглядности сделал пару связок:

    8b50e74bdfa1e716b701e052ab877f9a.png

    Ведь проще удалить, к примеру, одну новость со всеми логами, комментариями, файлами и т.д. ОДНИМ запросом, нежели n запросами, поскольку таблицы будут связаны друг с другом. Это функционал самой базы данных, а не DLE. И я понимаю, что для этого нужно будет принудительно обновить базу данных до InnoDB. Думаю, это не проблема. С UTF-8 тоже ведь получилось.

     

    1 час назад, celsoft сказал:

    Поэтому она и не создавала CMS

    Ну, вы сами говорите, что не стоит утверждать то, что не знаете. У нас преподователи хорошо получают, больше чем в больших/крупных компаниях. Чем она занималась во время работы на свободном рынке - не вам осуждать. По программе обучения IHK считается, что быстродействие и реакция между таблицами наилучше всего достигается при нормализации единообразных названий начиная со второй нормы. Не мне вас судить, если учесть, что даже в Deutsche Bahn бардак с базой данных, то там и уровень разработки выше. Простите, вы имеете опыт работы в Data Warehouse? Моя училка - имеет. Но, это не имеет значения, я лишь хотел преукрасить ситуацию с базой данных. Не думал, что вы так зациклитесь на ней. Я хотел лишь указать на не систематические названия и структуру.

     

    1 час назад, celsoft сказал:

    Так создайте свою CMS, потом похвастаетесь, и мы посмотрим на ее производительность.

    Не сомневайтесь, создам. А покажу - будет зависеть от работодателя. Однако я не считаю выборку, хотябы тех же доп. полей, производительной частью. проще достать и получить массив при помощи 

    select xf.name, xf.alt_name from xfields xf, post_xfields px where xf.id = px.xfield and news_id = 1
    $result = $mysqli->query($query);
    $xfields = $result->fetch_array(MYSQLI_ASSOC);

    нежели 

    select xfields from dle_post where id = 1
    $result = $mysqli->query($query);
    $xfields_row = explode('||', $result['xfields']);
    $xfields = array();
    foreach($xfields_row as $xr) {
    	$xTemp = explode('|', $xr);
    	$xfields[$xTemp[0]] = $xfields[$xTemp[1]];
    }

    А если поле изменится, то, на данный момент, нужно исправлять это через поиск и замену в базе данных. Очень удобно и производительно. Решать вам.

    1 час назад, celsoft сказал:

    И это правильно.

    тогда, может сразу всё в текстовом формате сохранять? Ведь конвертировать даты можно и при помощи функции convert, date и т.д. в базе данных. Это же сколько сэкономит на производительности?

     

    Я извиняюсь за свои придирки и, наверное, насмешки, не мне решать как развивать движок далее. Ведь, сторонним разработчикам будет проще разрабатывать для DLE на таких простых структурах.

     

    И всё же, один вопрос остаётся открытым

    21 час назад, MaHarder сказал:

    В таблице usergroups проверьте поле max_edit_days. Точно однозначный int?

    ибо аналогичные ему - имеют 6ти значное число

     

     

     

    ==========================

     

    Я ничего не хочу навязывать. Мне было интересно, почему такая структура, будет ли она изменена. Каждый учился по своему и у каждого своя "библия" по написанию кода. Да, я видел структуры базы данных похуже, та же система ERP Odoo - сплошной кошмар, к примеру.

  16. 12 часов назад, webair сказал:

    что несколько разработчиков

    значит ли это, что лид команды спустил всё на тормозах, @celsoft? ладно названия, ещё куда не шло, но типы поля - это жесть. к тому же пользователя идентифицируют то по имени, то по айди - надо же как-то определиться уже...

     

    я бы вообще dle_post разделил бы на 4 таблицы. категории уже существуют, посему ещё нужны доп. поля и похожие новости. такое чувство, что о нормативах базы данных никто не слышал ничего и постепенно разрабы осваивают википедию или мануалы... моя училка по базам данных наверное сразу бы коньки откинула увидев такую структуру...

     

    очень не удобно работать с таблицами, когда удаляешь ту же новость. давно пора перейти на 3. норму. и желательно на Postgre.

  17. Разрабатывая API заметил, что нет однообразных названий для определённых полей.

    autor, он же author

    news_id, он же post_id, p_id, n_id

    user_id, он же member, u_id

    descr, он же description

     

    Про даты вообще молчу, то string, то integer, то datetime

     

    В таблице usergroups проверьте поле max_edit_days. Точно однозначный int?

     

    Почему не использовать Foreign keys?

  18. Написал апи на основе slimframework 3. Однако, нужны добровольцы в тестировании.

    Плагин находится здесь: Github

    Документацию к API начал писать: POSTMAN. Принцип один и тот же для всех таблиц.

    Предложения можно добавить через feathub

    Связаться со мной можно через телеграм:@MaHarder

     

    Установка через плагины.

    Подключение к базе данных берётся от конфигурации движка.

    • Нравится 1
    • Поддерживаю 1
    • Спасибо 1
×
×
  • Создать...