- Core Framework
- Changelog
Changelog
Планы todo
- Добавить новые классы для простых типов number file
- pic, pics добавить метод обрезки с учетом содержимого smartcrop
- pic, pics обработка анимированных gif
- pic, pics поддержка формата ico
- xlsx поддержка формата odf
- xlsx поддержка шаблонов с циклами {foreach} {/foreach}
- xlsx поддержка цветов (и других произвольных стилей)
- добавить класс notificator, позволяющий обращаться через единый интерфейс к telegram, sms, push, email
- Исправление ошибки при наличии exceptions в отладочном скрипте js
- core::$debug=2 developer mode. Show errors with source code
- corasan cli helper. Create table as model, create model hint class
- Scheduler на основе свойств компонентов //cron: 0 10 * * *
- model::with() параметр подгружающий соседние модели
- subform filter clear проверяет чистоту блока вместе с поддержкой типа файлов
- form::addField возвращает объект formItem
- mvc::extendFolder($__DIR__,$sourceFolder); mvc::includeExtend($__FILE__) => bool; функции управления виртуальными папками с возможностью переопределения части функционала
- core helper tool. Помощник для создания компонентов через командную строку в виде каталога "core make admin", "core make crud"."core make auth", "core composer update"
- form-bootstrap компонент разделить на mdb отдельно
Core 3.6
- Совместимость с php 8.1 и более ранними версиями
- Фреймворк адаптирован для работы в PHP-FPM режиме
- Фреймворк адаптирован для работы через nginx в качестве прокси
- core::watch() функция для наблюдения за переменными
- core::$data['table_header_render_callback'] - добавлена возможность указать в качестве параметра callback для каждого заголовка всех таблиц
- core::$data['db_describe_cache'] - добавлен параметр описывающий callback, возвращающий путь к файлу, для сохранения кеша описания таблицы (для функции dbwork::describeTable)
- core::$data['telegram_request'] - возможность указать callback для подключения к прокси серверу телеграм
- добавлены быстрые хелперы для часных функций c\ajax c\t c\translate
- model добавлены условия для связывания выражений: and, or, xor
- model добавлены вспомогательные функции when, each, whereNotIn, SaveOrFail, WhereInRaw, whereNull, whereNotNull, FirstOrCreate
- model->where($callback) позволяет строить подзапросы в where
- model->whereHas($relation,$query) позволяет искать в связанных моделях (а также добавлено whereNotHas)
- model->pluck($column) функция вывода данных в виде массива из одной колонки
- model->orderByRaw feature, указание произвольного выражения в сортировке модели
- model добавлена утверсальная функция агрегации aggregate с возможностью указать столбцы для группировки, а также стандартные функции агрегации: avg, sum, min, max, count
- model::clearCache возможность очистить кеш для модели, может быть полезно для экономии памяти, либо при сочетании модели с сырыми запросами
- model после создания - модель обновляет данные из базы, чтобы получить корректный primary key например
- model->exists возвращает существует хотя бы одна запись по выбранным условиям или нет (аналогично count>0)
- model::$sequence может ссылаться на функцию определяющую последовательность для primary field
- model добавлены полиморфные отношения relationMorphToMany и relationMorphToOne
- model сохраняет данные только если они были изменены
- model on_before_create on_after_create on_before_update on_after_update добавлены события, срабатывающие перед и после сохранения
- model добавлены статичные алиасы для всех основных функций
- collection -добавлены функции map и implode
- env новый кдасс, оперирующий с информацией об окружении, способен вернуть информацию о загрузке процессора, о свободной оперативной памяти, о числе процессорных ядер, а также самой операционной системе
- mvc::controllerPage добавлена возможность указать страницу через "/" в начале, чтобы сослаться на папку относительно папки с корнем приложения app
- mvc::clearScriptsFull добавлен метод для очистки всех вложенных скриптов (полезен в сочетании с mvc::layoutStartWith)
- db::getAllConnectSchemes возможность получить полный список всех подключений (без пароля, разумеется)
- db::wrapper добавлена функция, экранирующая названия полей в зависимости от типа базы
- dbwork получает описание всех ключей и constraints из таблицы для подключений mysql
- dbwork получает описание о типах "enum" и "set"
- dbwork добавлена поддержка типа timestamp
- telegram::checkAuth возможность проверить авторизацию через сайт
- telegram возможность отправить фотографию, либо документ из файла, а также изменить ранее отправленный документ (editDocument)
- telegram добавлены функции getChatAdministrators, deleteMessage, leaveChat, banChatMember
- telegram добавлено свойтсво сообщения для защиты от копирования и пересылки protectContent
- telegram возможности получить отправленный файл с сервера телеграм (getFile, getFileContent)
- telegram добавлены популярные emoji в константах
- table::renderFooter возможность кастомизировать футер таблицы
- table добавлено свойство is_html позволяющее добавить название заголовка без экранирования
- input::ucfirst выделена в отдельную функцию из функции filter
- input::array_find_index добавлена функция поиска и возврата первого элемента из массива по $callback (аналогичая функция есть в javascript)
- input::array_is_list добавлен полифил функции для версий PHP ниже 8.1
- input PhoneDigits добавлена фкнкция получения только цифр из номер телефона (без формата, тире и скобок)
- рендер форм для bootsrap версии 5
- core::$data['db_not_explain'] параметр позволяющий избегать описания структуры запроса explain в режиме отладки
- pic возможность создать изображение из base64 через строку "data:image/base64"
- pic->resizeMaxWidth($x) pic->resizeMaxHeight($y) сжать изображение до максимальной ширины/высоты, если ширина/высота больше максимальной
- pic понимает webp формат
- ftp::remove подсчитывает число удаленных файлов
- filedata возможность блокировать файл на процесс, мониторить разблокировку одного из файлов и разблокировать файл
- filedata добавлен механизм для работы с файлами логов - добавление данных в конец файла appendDataPart и чтения последнего блока readLastDataPart
- request::basicAuth to возможность реализовать basic авторизацию для запроса
- form добавлен параметр mulrtiple для полей типа файл
- table::renderAsText функция вывода данных таблицы в виде текста
- db config доабвлены настройки кодировки и persistent подключения в параметрах
- db добавлен параметр указания порта для mysql подключения
- db обращается к MsSQL через sqlsrv драйвер
- cache::getList доабвлен метод для получения списка загруженных файлов
- cache добавлены методы deleteMultiple, setMultiple, getMultiple, has по заветам PSR-16
- curl добавлены методы для пинга pingICMP и ping
- доавлен класс config для возможности гибкого управления конфигкрациями
- добавлен класс arrayaccess для возможности организации подсказок для массовов
- куча мелких тюнингов, оптимизаций, рефакторинга и корректировок стилей
Core 3.5
- core_ajax.js не зависит от jquery
- db Добавлено автоматическе переподключение в случае, возникновения ошибки MySQL server has gone away
- db Параметр sql больше не является обязательным. В случае пропуска - его значение берется из глобальной переменной $sql;
- core::$partition добавлено отображение скриптов в режиме обновления контента через ajax (core_load), а также исправлена отработка контента при возвращении не html содержимого
- Возможность прервать выполнение скрипта и вернуть полный html со всеми скриптами - через оператор return
- mvc::$titleSeparator='->' добавлен разделитель между хлебными крошками в title
- datawork::flatten($array,$concat='.') добавлен метод переводящий многомерный массив в плоский с соединителем . (например key1.key2=>val)
- xlsx::generateXlsxByTemplate($source,$data,$filename='',$out=true) Добавлен метод генерации файлов экселя по шаблону. Все вставленные в шаблоне метки вида ${key1.key2} будут заменены данными из массива $data
- core::VERSION добавлена константа обозначающая версию фреймворка. Теперь вы можете управлять логикой в зависимости от совместимости конкретной версии
- translate::mat, c\translate::grammar справочники вынесены в отдельные файлы, которые вынесены в global-config
- db::dateToDb($timestamp) в качестве $timestamp можно применять не только числа, но и строки. Строки будут преобразованы в timestamp через strtotime
- db::setData добавлена поддержка типа time
- form добавлено свойство helperHTML, позволяющее вывести параметр helper без экранирования
- table и form исправлено позиционирование элементов таблицы связаных со свойством position, при одинаковых ключах, или отсутствии ключей
- datawork::stable_uasort($array,$callback) добавлена функция сортировки по повользовательской функции с сохранением позиций одинаковых ключей
- translate::translit добавлена обработка переносов строк
- mail::send исправлена ошибка с отображением символа _ в теме
- Оптимизировано для работы с сертификатами https
- mvc::nextPage($default=null,$exception=null,$__DIR__=null) добавлен метод совмещающий в себе mvc::controllerPage и mvc::controllerPageInstant. Где $__DIR__ не обязателый параметр и отслеживается системой
- mvc::nextPageForce($page,$__DIR__=null) добавлен метод взамен mvc::controllerPageForce($__DIR__,$page), где $__DIR__ не обязательный параметр и отслеживается системой
- request::protocol() добавлен метод, возвращающий протокол текущего подключения
- model полностью обновлены. Убрано преобразование через query-builder, добавлены методы для создания scope, а также оптимального вызова отношений relation
- Добавлено подавление вывода ошибок, чтобы можно было работать с приложением с просмотром ошибок всех уровней E_ALL
- mvc исправлено автоматическое определение controllerPage для систем linux
- mail::AddAttachment, mail::AddStringAttachment исправлено отображение типа присылаемых файлов при изменении имени
- filedata::mime_content_type($filename) добавлена функция определения mime типа файла по содержимому файла или расширению
- form->isValid($data=null) добавлена возможность провалидировать форму, не заполняя её
- form->setData($data,$namePriority,$force=false) добавлен параметр force, запрещающий устанавливать значения для disabled и readonly и submit полей формы
- form рендеринг поля input стал учитывать fill($row) функцию, результат которой будет рисовать под полем input результат функции
- xlsx::writesheetFromTable() исправлено определение callback функции fill заголовков, передаваемых через $table->header
- form::getData() исправлено получение значений default, когда не указано value
- mvc::addJs, mvc::addCss позволяют добавить скрипт начинающийся с // (без учета протокола)
- datawork::valsToKeyVals добавлена функция, преобразующая массив из значений в массив с одинаковыми ключами и значениями
- table->group tables::$group выделено свойство группировки строк таблицы в отдельную переменную. Также оптимизирована прорисовка группы через пользовательскую функцию
- table->groupFooter tables::$groupFooter добавлено свойство группы размещаемой под строкой
- tables::$row_attribute $table->row_attribute значения заданые через $input дополняются значениями формы, а не заменяются
- db::setData добавлен параметр &$outErrors в который вернутся все пойманные при выполнении скрипта ошибки. По умолчанию используется стек c\error. Запрос выполняется, даже если в стеке ошибок были записи, но их не было при составлении запроса
- db::setData добавлен параметр $schema позволяющий обратиться к таблицам других пользователей
- db::setDataOrFail($tablename,$arrayIn='',$sequence='',$db='') добавлена функция, бросающая исключение в случае получения в db::setData каких-либо ошибок при выполнении
- db::describeTable добавлен параметр $schema. А также добавлена возможность получить описание таблицы в другой схеме под текущим пользователем
- db::describeTable возвращает теперь primaryKey и uniqueKeys для оракла
- core::$data['mail_modify_callback'] добавлена произвольная функция обработчик почтовых mail адресов. Таким образом в массиве почтовых адресов могут быть и табельные номера сотрудников при обращении к функции mail::send
- mail::sendToQueue($text,$adress=array(),$subject='System mail',$db='',$order=100,$date_must='now') добавлен метод, позволяющий организовать очередь при отправки сообщений вместо отправки. Описание добавления в очередь должно быть описано в методе core::$data['mail_send_to_queue']($text,$adress,$subject,$db,$order,$date_must)
- mvc::addJs проверяет соответствие ранее добавленных скриптов по адресу расположения скрипта
- xlsx при обработке данных класса DateTime сохраняет значение в формате дата
- curl добавлен класс для работы с curl. Добавлена возможность осуществлять многопоточность и одиночные обращения
- xlsx исправлена ошибка рендера таблицы с fill свойствами полей
- mvc::drawTitle() добавлена функция рендера заголовка страницы
- mvc::$noHeader добавлен параметр позволяющий указать заголовки страницы самостоятельно
- input::validate добавлена валидация типа date и datetime
- input::isLinkActive($params) возвращает активная ли ссылка с текущими параметрами
- form свойство "ico" распространяется на каждое из полей при наличии свойства "range"
- mvc Появилась возможность использовать ранее недоступный параметр $_GET['link']
- request::isCmd() добавлена функция позволяющая определить вызов из командной строки
- Добавлена возможность обращения к скриптам через командную строку. Путь необходимо передавать в качестве первого аргумента. Пример php index.php /cron/test/
- mvc::getRemaningParams() добавлена функция, получающая остаточный url относительно текущей папки
- mvc::virtualRoute($folder,$baseFolder,$startFromBaseDir=true) Добавлена функция, переключающая начальный каталог на уровне $baseFolder на папку $baseFolder/$folder и продолжает копать от неё, если указан $startFromBaseDir
- filedata::readfile($path,$filename,$attachment=true,$type=null) добавлена функция для скачки файла с жесткого диска. Функция устанавливает нужный тип файла, и подменяет название
- form тип select с ограничением required и отображением auto принудительно рисует select
- form тип select с отображением radio или radio-inline с ограничением required просит заполнить поле в браузере
- input::upper() добавлена функция преобразования в верхний регистр с учетом кодировки
- translate::reloadLocate($locate) добавлена функция горячего переключения локальзации с перегрузкой словарей
- mvc добавлен вызов файла debug.php в каждой папке, срабатывающим тольк в режиме отладки, чтобы снизить нагрузку на скрипты в рабочем режиме
- debug::group debug::groupEnd добавлен параметр $increaseCounter=true и $decreaseCounter=true, которые управляют отображением детализации внутри группы. При отключении счетчика - детализация сохраняется
- cache::get($var,$callback) Callback функция вызывается с аргументом $var
- cli Добавлен класс для работы с командной строкой
- mvc::viewPage() показывает файлы cli.phtml в режиме работы из командной строки
- filedata::clean($pattern,$mTimeAgo) добавлен метод, очищающий файлы (логи) в папке по шаблону, которые последний раз изменялись $mTimeAgo секунд назад
- form добавлены свойства поля range_before_text и range_to_text которые отображают ярлыки "с" "по" для отображения поля со свойством диапазона range=true
- form корректно прорисовываются inline-form поля
- core::$data['error_callback'] добавлена возможность настроить пользовательскую функцию для добавления ошибки, которая будет срабатывать через c\error::add
- datawork::tree исправлено построение дерева с строковыми ключами
- cache::clear($var) добавлен признак $var для очистки конкретного кеша
- form->addAttribute($key,$value) исправлены аргументы добавления атрибутов в форму
- form добавлен тип элемента формы "check" (он же "checkbox" и "boolean") для отображения флажка. Возвращает только boolean значения
- form добавлено свойство поля label_html, позволяющее выводить label без фильтров htmlspecialchars
- input::validate добавлены свойства min и max для проверки на минимальное и максимальное значение
- db::setData воспринимает boolean значения как 0 и 1
- form::упрощен механизм задания масок inputmask. Класс автоматически определяет алиасы, маску или сырую строку при вводе значения
- form по умолчанию выбирается default значение, если оно указано
- form->renderFieldsByPosition($min,$max) forms::renderFieldsByPosition($min,$max) добавлен метод, выводящий часть полей
- db добавлена возможность переключать среду на лету и содержать одновременно подключения разных сред
- db::massExecute($sql,$beginSql='begin ',$repeatSql='',$endSql="end;",$bind,$db) оптимизирована конструкция для множественых запросов с экономией ресурсов на обработке каждого
- mvc::addJsVar исправлена ошибка при передаче в качестве переменной значение содержащее фразу '</script>'
- db::setData исправлена ошибка при сохранении даты 1970-01-01 03:00:00
- input::strtotime добавлена функция преобразующая строку во время с дополнительными русскими форматами 2017.01.01
- mvc::routePage исправлена ошибка с подключением скриптов на странице к которой изначально идет обращение
- filedata::filelist($dir,$mask='*',$callback=null) Возвращает рекурсивный список файлов по маске, в качестве значения - возвращается результат выполнения $callback функции
- input::validate добавлены типы валидации связные с файлами - проверка на расширение [type=extension,value=['doc','pdf']] и проверка на размер файла [type=filesize,value=10000], а также добавлен 4й элемент - ключ заливаемого файла для проверки
- forms, tables, pics при создании экземпляра класса - в режиме отладки добавлено предупреждение об ошибке
- table::renderAsArray() возвращает массив итоговых данных в соответствии с шапкой и данными
- Добавлены альтернативные функции в замену параметров с флагами: render::containerFluid, table::addDataForce, table::setDataForce, input::getLinkParams, input::iconvBack
- mvc::getMenu Исправлена ошибка отображения ссылок в меню при нахождении двух mvc::controllerPage на одном уровне
- mvc::getMenu исправлена ошибка отображения множества уровней
- mvc::addJsVar, mvc::addJsVarAsArray добавлена возможнсть передать множество переменных в виде массива ключ-значение
- mvc::addJs mvc::script mvc::drawJs изменен порядок вывода скриптов из буфера. Все типы скриптов будут выведены последовательно по мере их включения в буфер. Файлы js и css будут включены после скриптов описаных в файлах логике соответствующей категории
- db_oracle по умолчанию выводит даты в формате YYYY-MM-DD HH24:MI:SS
- str добавлен класс для простого типа string
- input::validate добавлен параметр валидатора inverse=true - проверяет на несовпадение условия
- c\mvc::$meta - массив meta тегов для страницы
- link rel=canonical автоматически генерится и указывается для страниц
- c\mvc::getUrl() указывается с учетом получения дополнительных параметров c\mvc::routeNext()
- c\mvc::$bodyAttributes массив с атрибутами для body
- telegram::sendLocation($chat_id,$latitude,$longitude,$reply_markup=null) добавлен метод указания положения на карте
- xlsx:::getXlsx учитывает переносы строк _x000D_
- mvc::getRealDir($__DIR__=null,$withApp=true) в качестве 2го параметра принимает также path __DIR__ к директории, относительно которой будет возвращена указаная директория
- ajax::render($redirect = false,$answer_needed=null) добавлен параметр о необходимости ответа
- tables::$data, $table->data принимают на вход экземпляры model и collection
- db::getConnectScheme($db) Позволяют получить параметр схемы подключения по названию подключения
- mvc, db, mail берут настройку относительно global-config внутри фреймворка, так и относительно папки config внутри проекта
- PSR-4 autoinclude для возможности подключения сторонних модулей при помощи композера
- request::isAjax() определяет аяксовый запрос пришел или нет
- datawork::unflatten($array,$concat='.') Добавлен метод обратный flatten, превращающий плоский массив с разделителем в массив с подмассивами
- table::header название заголовка можно указывать 0м элементом массива
- input::roundFirstNumber($number,$precision=0) Округление до первой значимой цифры
- xlsx::getCSV() исправлен парсигн экранированных строк
- render::ShowErrors() заменена на render::ShowAlerts()
- request::url() возвращает текущий url соединения
- core::$render='bootstrap4' Поддержка бутстрап 4 при рендере форм
- ajax::renderOutLoad() вывод скриптов для обработки ajax::addAction при вызове метода core_load()
- ajax::addAction($action,$data) принимает в качестве $data не обязательно массив
- core::$data['db_exception']=true параметр переключающий ошибки при выполнении запросов в выброс исключения
- model::relationToOne() добавлена функция как разновидность relation за исключением вызова из режима строки - вернёт экземпляр в режиме строки
- model::get() кеширование результата с учетом orderBy()
- form распознание и правильный рендер типа float, с возможностью указать числа с плавающей запятой
- mvc::$appFolder Возможность переключать каталог с приложением для реализации нескольких сайтов через одну физическую папку
- curl::ping($host,$port) добавлена команда для пинга сервера
- ajax переменная core_ajax_var автоматически примешивается в core_ajax и core_load запросы для настройки автоматической валидации ерез csrf
- model::$connectionAlter параметр для указания подключений, с которых доступны операции на изменение
- db::in добавлен параметр $wrapper для возможности указывать оборотную функцию для каждого in значения
- mvc::getMenu mvc::getFileProp возвращает объект fileprop с возможность доступа как к элементам массива
- form реализация рендера осуществляется через сторонний класс, а также добавлена возможность цеплять собственную реализацию компонентов через параметр поля resolver
- Файлы вида post.php будут подключаться автоматически при отправке данных через пост сразу после загрузки index.php
- response добавлен новый класс управления выводом (header, redirect,redirectToHttps)
- responce::redirectToHttps(); redirectToHttp(); Принудительная установка протокола
- form->getFieldValue($name) достает значение поля по названию поля
- db::ea в качестве $bind можно передавать экземпляр модели model
- db::execute db::execute_assoc созданы алиасы для функций db::e и db::ea
- form->addSubmitField учтена возможность добавлять несколько кнопок, последующая не будет заменять предыдущую
- mvc::viewPage возвращает ссылку на пустой файл, вместо выдачи warning
- db добавлена возможность использовать в качестве массива с данными экземпляр SimpleXMLElement
- table->data принимает данные в класса model с возможностью использовать методы в fill функции
- tables::render рисует $emptyCallback при передаче пустого множества через db::query
- error::setError setWarning setSuccess($key,$message) заменяет ошибку по ключу (Не добавляет ошибку, если ошибка с аналогичным ключом существует)
- error::delError($key) удаляет ошибку из массива ошибок по ключу
- error::isError($key) проверяет ошибу по ключу
- error::getError($key) выводит ошибку по ключу
- error::getErrorWithClean($key) выводит ошибку и очищает буфер ошибки по ключу
- db::setMassData получает определение таблицы один раз
- table::renderAsText рендер таблицы в текстовом режиме
- core::$data['controller_exception_page'] - возможность указать параметр исключения при поиске страницы через c\mvc::controllerPage
- mvc::controllerPage(__DIR__,$default,$exception) возможность указать в качестве $default и $exception выражение начинающиеся с '/' для указания директории с корня папки app
- translate::dictLP добавление словаря с низким приоритетом
- db::wrapper($db='') текстовая обертка для имен таблиц, столбцов, чтобы обезопаситься от указания ключевых фраз
- storage класс объединен с моделью model за ненадобностью
- model функции аггрегации count, min, max, avg, sum кешируются, а также дополнительно оптимизированы для вызова из коллекции
- model для вызова статических методов, чтобы исключить deprecated warnings добавлены аналогичные функции с постфиксом Static. whereStatic, orderStatic, FindStatic, getStatic
- mvc::$version не отражается на скриптах подключаемых через http
- db поддержка postgresSQL
- db добавлен параметр port для подключений к базам данных
- mvc::setViewPageName($__DIR__,'index') Добавлена функция, подменяющая шаблон на конкретном уровне
- Добавлена возможность обращаться к скриптам через командную строку используя подсказки bash
Core 3.4
- c\db::ea и c\db::e получение результата ускорено в 2 раза для oracle и в 6 раз для mysql за счет использования оптимизированных алгоритмов
- c\db добавлена возможность использования бинда в качестве экземпляра класса c\model
- $form->setData исправлен вывод отладочной информации в режиме отладки
- $form->addField исправлен вывод поля типа select с признаком multiple
- c\datawork::difference($before,$after,$list) Добавлен метод, отображающий разницу в элементах массива. В качестве параметра $list указываются описания названий полей и возможный список значений в виде массива ['name'=>'name','values'=>[0=>'value1']], также в качестве параметра может быть указана константа, по которой описание берется из формы c\datawork::FORMS
- form->getFormDescription($key) получает описание формата формы для datawork::difference. Также для полного отображения ярлыка добавлено свойство 'label_full'
- mvc::getRealDir добавлен параметр $with_app , позволяющий получить ответ с учетом и без учета начальной директории приложения app/
- mvc::controllerPage возвращает $default параметр, если назначается директория по умолчанию
- core Приоритет директории подключения собственных классов через core::$data['include_dir'] повышен перед директорией model
- $table::render исправлена возможность указания параметров fill и row_attributes непосредственно через свойства c\tables::$fill $table->fill
- debug Все отладочные методы возвращают количество милисекунд относительно начала выполнения скрипта и дату между двумя отладочными строками, а не текущее время
- debug Все отладочные методы корректно выполняются в firebug
- db::eo и db::eo1 Добавлена возможность получения вывода в качестве объекта
- forms::render_field исправлена ошибка отображение величины 0 заменялся пустышкой
- mvc::getRealDir; mvc::redirect; mvc::url; mvc::getAbsoluteUrl; mvc::getMenu; mvc::controllerPageInstant; mvc::controllerPage; mvc::controllerPageForce; mvc::layoutStartWith; mvc::layoutStartAfter - параметр __DIR__ является не обязательным и подставляется по умолчанию текущей назначенной последним controller директорией
- ajax::render() добавлена защита от изменения заголовков сторонними скриптами, которые могли привести к сбою вывода данных
- xlsx::get() Исправлен механизм чтения xlsx файлов, пустые ячейки также отражаются в результирующем массиве. Целиком пустые строки - не отображаются в выводе
- collection. Добавлен класс коллекций. С возможностями группировки, вывода в таблицу результатов коллекций. Результаты всех запросов принудительно оборачиваются в коллекции, если указано свойство c\core::$data['db_output']=c\core::DATA_DB_COLLECTION;
- collection_object. Добавлен класс коллекций с выводом аргументов в качестве объектов. Для вывода в коллекции объектов - можно использовать метод c\db::eo или указав специальное свойство c\core::$data['db_output']=c\core::DATA_DB_COLLECTION_OBJECT;
- Добавлена возможность указания вывода результата запросов в массив вида spl_fixed_array при помощи c\core::$data['db_output']=c\core::DATA_DB_SPL_FIXED_ARRAY. За счет этого скорость работы с массивами увеличена на 30%-100%
- tables::getTableObject() Позволяет получить экземпляр из статичной таблицы
- xlsx::generateFromTable() добавлен второй параметр - экземпляр класса таблицы. Можно использовать генерацию экселя не только из статичной таблицы
- table::xlsxWritescheet($input) table::xlsxGenerate($input,$filename) добавлены методы генерации листа и вывода экселя прямо из класса таблицы
- Удалены методы input::to_array
- c\super добавлен суперкласс для возможности построения цепочек при различных операциях. Добавлены цепочки вызовов для методов input::filter, error::log, error::add, error::redirect, error::header, mvc::addTitle, mvc::addComponent, mvc::addScript, mvc::addJsVar, mvc::addJsVarAsAssay, mvc::addJs, mvc::addCss. Например c\error::addError('text')->header(404)->redirect();
- Расширены способы поведения моделей. Модели возвращают экземпляр коллекции с дополнительными параметрами обратной связи с исходной таблицей для возможности проводить операции с экземпляром модели.
- mail::AddAttachment кидает исключение, если файл не обнаруживается по указаному адресу
- mail::AddAttachment исправлена ошибка с названиями файлов в кириллице
- form->addField добавлено свойство group_classes - классы, которые будут добавлены на элемент .form-group. Параметр может быть строкой, массивом или callback функцией
- form->addField добавлено свойство group_attributes - атрибуты, которые будут добавлены в элемента .form-group. Атрибуты могут быть callback функцией, или массивом также содержащим callback функции
- form->addFields добавлен метод для добавления множества полей. Метод form->addField(field_key,field_params) изменен для добавления одного поля
- input::validate , form->addField(validate) добавлено свойсто валидации pattern, проверяющее значение через регулярное выражение
- form->addFields в качестве параметра value может быть указана callback функция относительно элемента
- mvc::isRouteMatch() добавлен метод, описывающий попадание хотя бы по одному маршруту роутинга r()
- form->toForms($name) добавлена возможность перенести объект формы в статический класс forms
- forms::FIELD_KEY добавлена константа для указания имени ключа при добавлении полей, чтобы указывать её в атрибуте 'name'=>array('prefix',forms::FIELD_KEY)
- form->renderFieldsByName($prefix) рендерит часть формы по наличию в них префикса имени 'name'=>array('prefix','name');
- Все имена методов всех классов преобразованы в camelCase. Преждние имена сохранены для сохранения совместимости
- mvc::$foldersRegexp добавлен метод определения названия папок в качестве регулярных выражений для функции mvc::controllerPage. Папки должны начинаться с `, вместо "-" пишется "..". Пример `^user-([0..9]{3,})$`. В случае совпадения - в ответ возвращается массив функции preg_match первого совпадающего каталога
- core::$version добавлен параметр версии приложения. Параметр используется для динамической загрузки статических js и css файлов. К справочнику mvc также добавляется параметр version
- table->$header добавлена поддержка свойств attributes и fill вместо table->$cell_attributes и table->$fill
- table->$fill callback добавлен 2й аргумент - в который передается ключ поля
- forms::addFields свойство html распространяется на checkbox и select
- mvc::$noBody добавлена директива, позволяющая скрывать или показывать тег body при рендере заголовка и футера
- ajax::redirect() исправлена ошибка редиректа на ту же страницу при вызове без аргументов
- input::JsonDecode() добавлена функция декодирования в формате json в кодировке проекта
- mvc::controllerPageForce() добавлена возможность вызова нескольких маршрутов на одном уровне. Каждый последующий переопределит предыдущий
- db::setData правильно воспринимает экземпляры класса DateTime в качестве аргументов
- date:date исправлен баг с вызовом даты с 31го числа, когда в вызываемом месяце было меньше 31 дня
- form добавлено отобажение атрибута required для элементов с валидатором required
- form добавлено отображение placeholder для элемента типа select
- mail::sendOrFail Добавлен метод, возвращающий exception в случае неудачной отправки почты
- form::setData в качестве входного аргумента принимает объект класса c\model
- datawork::flatTree($tree,$children) добавлен метод, делающий массив с подветками, получаемый через datawork::tree - плоским. Дополнительно добавлено свойство level
- datawork::tree() добавлен параметр $includeMainBranch отвечающий за то будет ли включена главная ветка в вывод поддерева
- form::addData добавлен метод аналогичный setData, но дополняющий значения, а не замещающий
- form::validate type file проводит валидацию с value, если ранее уже было заполнено значение через value
- form::isValid проверка на дополнительные свойства validate "in" - происходит во время валидации, таким образом можно динамически добавлять валидацию по общим правилам
- form::addFieldAs($fieldKey,$asFieldKey,$params=array()) добавлен метод, создающий новое поле на основе имеющегося поля с дополнительными преобразованиями
- form::fillness добавлен метод, позволяющий определить количество заполненных полей относительно всех необходимых полей
- c\pic заменен c\pics. c\pic Полностью переписан для работы с объектом. Добавлены методы rotate, flip, sepia, sketch, smooth, getImage, getWidth, getHeight, blurSelective, blurGaussian, brightness, contrast, desaturate, edges, emboss, invert. meanRemove. pixelate. output
- c\xlsx::generate() исправлен экспорт значения 0
- c\mvc::$story изменен алгоритм составления истории
- c\table->$headerTotalHtml добавлен параметр, который полностью выводит html заголовок вместо текущего
Core 3.3
- dbwork::INFINITY добавлена константа для заполнения бесконечности в ячейку, то есть максимально возможного значения
- db::date_to_db($timestamp) устанавливает дату а базу через формат timestamp, либо через формат, который может быть преобразован с помощью strtotime
- ajax::add_action также распространяется на действия баз аякса, а этом случае просто вызывается core_ajax[type] функция
- core::$data['include_dir'] - возможность указания пути подключения дополнительных расширений классов для конкретного приложения
- mvc::routeNext() берёт следующий по счету параметр /_/. Упрощенный вариант использования mvc::route()
- form->$attributes; form->$classes Возможность задания атрибутов и классов для формы
- form->render_field($name,$item) в качестве $item теперь указывается массов не заменяющий, а дополняющий свойства оригинального поля, если оно есть.
- form->add_field добавлены дополнительные свойства поля subform с куазанием type=subform. Subform содержит объект подчиненной динамически создаваемой формы. Также добавлены методы $form->getSubform и $form->getSubformTemplate для получения экземпляра формы и рендеринга.
- form->add_field добавлены дополнительные свойства поля default. Указывающее значение по умолчанию, если элементу не было присвоено значение методом form->set_data()
- form->add_field добавлена возможность отправлять callback функцию в ключе render для прорисовки произвольных элементов формы
- form->add_field добавлен признак name, который заменяет ключевое название поля, если он указан. Также name может быть передан массивом из 2х элементов для структурирования ввода и вывода формы.
- form->add_field добавлен признак inputmask, который управляется плагином inputmask и подгружает все нужные классы для подключения проверок
- forms::getForm() получает объект типа c\form статичной формы
- form->is_submit() работает для форм с множеством submit полей и возвращает значение поля (для возможности разделения логики)
- form->render_field может быть разбит на более мелкие сегменты при помощи form->render_field_form_group_begin , form->render_field_label , form->render_field_field , form->render_field_form_group_end
- core::$data['form_attribute'], core::$data['form_render'] - поддержка стратегии управления свойствами и элементами формы
- При формировании меню - свойство link определяется по свойству файла, если оно указано
- Исправлено отображение кодировки при попытке вывести данные до начала вывода шаблона
- ajax автоматически конвертирует POST переменные в кодировку проекта
- date::date() добавлена переменная 'д' для вывода дня недели состоящий из 2х букв пн,вт,ср,чт,пт,сб,вс
- translate::num_endings() исправлен вывод окончаний в дробных числах
- Исправлено определение положения на дефолтной странице с c\mvc::controller_page=default
- mvc::get_menu возможность получить меню на несколько уровней вложений, как параметр submenu.
- mvc::get_menu добавился вывод абсолютного пути раздела меню в аргументе __DIR__
- mvc::get_menu $addition_menu может быть указано, как callback функция, преобразующая существующее меню
- mvc::add_component исправлена подгрузка css зависимых элементов
- input::validate добавлен параметр clear, который очищает пустые элементы массива. А также добавлен аналогичный метод c\input::clearArray()
- db созданы алиасы функций и констант dbwork. Можно использовать любой из классов
- db::e Принимает в качестве параметра sql массив. На выводе программа выполняет все найденные значения в массиве в массив с аналогичной структурой. Конечная ветка массива должна содержать массив с ключами sql и type. В качестве типа применяются ea,ea1,ea11,ec,e. Все операции закоючены в транзакцию
- db::begin_transaction() db::commit() db::rollback() добавлены методы для работы с транзакциями
- models ОРМ модели. Query builder
- tables::$header добавлена возможность указания порядка следования столбца, путем указания ключа position
- mail::addAttachment добавлен 3й аргумент для указания CID объекта, для возможности вставки inline в теле письма. <img src="cid:{img}">
Core 3.2
- translate::t добавлена возможность перевода фраз с использованием выражений и микрошаблонов
- forms::add_field добавлено свойство position определяющее позицию поля в форме
- forms::add_field добавлено свойство disabled
- forms::add_field добавлено свойство ico для отображения иконки внутри поля
- forms::add_field добавлен тип поля fancytree и pick-a-color, div (для построения к примеру jquery-ui slider)
- forms::is_submit исправлено поведение для GET формы
- forms::disabledReturn добавлено свойство для возможности отключения хранения данных для disabled полей
- tables возможность передать fill замыкание в заголовках $header
- mvc добавлена поддержка translate_{lang}.php файлов внутри папок, содержащих перевод
- mvc добавлена поддержка middleware.php файлов внутри папок, для предподготовки к конфигурации
- mvc::getParansAsArray mvc::getParamsAsString добавлены вместо устаревших get_params и get_vars
- input::get_link добавлен параметр, возвращающий значение без полной абсолютной ссылки $only_params
- dbwork::set_data во всех запросах можно указывать бинды без массива. В этом случае все свободные бинды будут заменены переданным значением. Кроме автобиндов
- mvc::r Добавлены роутинги. Можно строить маршрут из любой директории на конечный контролер. Поддержка callback функций
- mvc::$router_placeholder добавление возможности фильтрации всех ключевых переменных, входимых в роуты, назначать функцию обработки, значение по умолчанию и регулярное выражение
- mvc::redirectToRoute и mvc::getUrlFromRoute - переадресация и ссылка на маршрут по имени
- mvc::get_absolute_url возвращает абсолютный путь к текущему разделу
- mvc::add_js_var_as_array и input::js_var_array генерирует json объект с массивами
- xlsx::getCSV читает csv в зависимости от кодировки проекта
- datawork::group - datawork::KEY возможность сослаться на ключ массива в описании
- db возможность указывать бинд параметры в качестве строки. В этом случае - все неописаные бинды будут приравнены указаному
Core 3.1
- date::date() добавлена функция вывода даты в формате на русском языке
- mvc::$story возвращает историю загруженых файлов
- mvc::url() возвращает дополнительный / на конце. Это необходимо для поддержания целостности
- forms::render_as_table() рендерит форму в виде таблицы ключ-значение, например для вывода в письма
- forms::add_field добавлено свойство helper_text, предлагающее варианты ответа в свободно заполняемом поле
- db mysql добавлена отладочная информация
- db mysql исправлена ошибка определения id последней записи в режиме отладки
Core 3.0
- dbwork::set_data Добавлена информация для отладки
- input добавлен параметр валидации == , match
- xlsx добавлена возможность читать загловоки и содержание страниц excel
- xlsx добавлена отладочная информация
- datawork die заменен исключениями
- datawork::describe_to_form типы float double number возвращают тип text вместо number
- table добавлен метод сортировки и свойство sort в заголовках с прорисовкой ссылки на сортировку
- table добавлена возможность задавать замыкания для атрибутов строки
- form теперь авляется не статичным классом. Все c\form:: необходимо заменить на c\forms
- mvc переделан механизм определения файла следования. Копает, даже при отсутствии index.php в файле. Добавлена поддержка файлов в папке config.php -> ajax.php ->index.php
- mvc::header добавлено указание типа файла с кодировкой
- mvc::get_params добавлена функция, выводящая остаток пути url в виде строки
- mvc::controller_page_instant добавлена функция, проверяющая возможность дальнейшего направления, и возвращающая false в случае неудачи
- mvc::view_layout добавлен метод поддержки подшаблонов с наследованием
- render больше не рисует формы, теперь это делают сами формы
- добавлены render::container() и render::containerClose() для контроля вложенных контейнеров с наследованием
- pic работает с изображениями, подаными в виде переменной
- db::date_from_db db::date_to_db добавлены методы для универсального преобразования даты в не зависимости от типа базы данных