Список изменений
Версия 2.0.0
Релиз: January 28, 2011
Hg Tag: v2.0.0
- Основные изменения
- Удалена поддержка PHP 4. Теперь CodeIgniter требует как минимум PHP 5.1.6.
- Скаффолдинг, объявленный устаревшим в нескольких версиях, окончательно удален.
- Плагины удалены, в пользу помощников. Плагин капчи конвертирован в помощник и документирован. Плагин JavaScript Calendar удален ввиду доступности замечательных календарей JavaScript, в частности jQuery.
- Добавлен новый специальный тип библиотек: Драйверы.
- Директория приложения вынесена из системной директории.
- Директории system/cache и system/logs перемещены в директорию приложения.
- Добавлены роуты, переписывающие путь к главному файлу index.php, что позволяет работать нормальной маршрутизации.
- Добавлена возможность устанавливать (или переписывать) конфигурационные значения прямо из основного index.php. Это позволяет использовать приложения с различными контроллерами, но работать с общими конфигурациями.
- Добавлен $config['directory_trigger'] в конфигурационный файл, теперь поддиректория контроллера может быть указана из _GET-строки вместо сегментов URI.
- Добавлена возможность устанавливать путь к "пакету" — конкретный путь, где классы Loader и Config будут сперва смотреть запрашиваемые файлы. Это позволяет использовать подпрограммы (sub-applications) с собственными библиотеками, моделями, файлами конфигурации и т.д. в единственной "пакетной" директории. Смотрите документацию к классу Loader для дополнительной информации.
- Код разработки теперь хостится в BitBucket.
- Удален устаревший класс валидации.
- Добавлен префикс CI_ ко всем классам ядра.
- Библиотеки
- Добавлены свойства $prefix, $suffix и $first_url в библиотеке Pagination .
- Добавлена возможность убирать ссылки на первую, предыдущую, следующую и последние страницы посредством указания из значений в FALSE в библиотеке Pagination.
- Добавлена библиотека Security, которая теперь содержит функции xss_clean, filename_security и другие, связанные с безопасностью.
- Добавлена защита CSRF (Cross-site Reference Forgery) в библиотеку Security.
- Добавлены переменные $parse_exec_vars в библиотеку Output.
- Добавлена возможность включать и выключать индивидуальные разделы в профайлере Profiler
- Добавлено подстановочное значение $config['allowed_types'] = '*' в класс File Uploading.
- Добавленая "объектная" конфигурационная переменная в библиотеку XML-RPC server, которая позволяет указывать объект с требуемыми методами, вместо использования суперобъекта $CI.
- Добавлено "is_object" в список модульных тестов.
- Библиотека Table генерирует пустые ячейки с указанной строкой по умолчанию, или с NULL.
- Добавлена возможность устанавливать аттрибуты тегов индивидуальных ячеек в библиотеке Table.
- Добавлен метод parse_string() в класс Parser.
- Добавлены заголовки HTTP и конфигурационная информация в профайлер.
- Добавлены Chrome и Flock в список обнаруживаемых браузеров функцией browser() в классе User Agent.
- Класс Unit Test теперь имеет опциональные "примечания" для полей и допускает раздельный вывод результатов тестов, используя $this->unit->set_test_items().
- Добавлена переменная $xss_clean в класс XML-RPC library, включающая контроль над использованием метода xss_clean() библиотеки Sequrity.
- Добавлен метод download() в библиотеку FTP
- Изменен do_xss_clean(), возвращающий FALSE, если загружаемый файл не прошел проверку XSS.
- Добавлены stripslashes() и trim() двойных кавычек из $_FILES для стандартизации ввода библиотеки Upload.
- Добавлен второй параметр (TRUE/FALSE) в $this->zip->read_dir('/path/to/directory', FALSE), чтобы удалять пустые папки при создании архивов zip. Также, можно сжимать целые директории со всем содержимым в архивы zip, указав лишь путь к директории.
- Добавлена возможность работы с прозрачностью PNG в библиотеке Image, для операций масштабирования с использованием GD.
- Модифицирован класс Session для предотвращения использования, если ключ шифрования не установлен в конфигурационном файле.
- Добавлен новый конфигурационный элемент в класс Session sess_expire_on_close, чтобы позволять автозавершение сессий при закрытии окна браузера.
- Улучшена производительность библиотеки Encryption на серверах, где доступен Mcrypt.
- Изменен режим шифрования по умолчанию в библиотеке Encryption — в CBC.
- Добавлен метод encode_from_legacy() для предоставления способа миграции зашифрованных данных от CodeIgniter 1.x к CodeIgniter 2.x. Смотрите подробности в инструкции по обновлению.
- Изменена библиотека Form_Validation — доступно сцепление методов в функциях set_rules(), set_message() и set_error_delimiters().
- Изменена библиотека Email — дозволяется сцепление методов.
- Добвлены функции request_headers(), get_request_header() и is_ajax_request() в класс Input.
- База данных
- database configuration.
- Добавлено значение autoinit в конфигурацию базы данных.
- Добавлено значение stricton в конфигурацию базы данных.
- Добавлено database_exists() в класс Database Utilities.
- Семантические изменения в функции db->version(), предоставляющей список исключений для баз данных с функциями возврата строки версии, вместо специально сформированного запроса SQL. Сейчас этот список включает только Oracle и SQLite.
- Исправлена ошибка, когда идентификатор защиты драйвера конкретной таблицы мог привести к некорректным запросам в функции field_data().
- Исправлена ошибка, когда переменная неопределенного класса становилась ссылкой в драйверах БД.
- Модифицированы ошибки БД, чтобы показывать строку кода и имя файла, вызвавшего проблемный запрос.
- Удалены следующие устаревшие функции: orwhere, orlike, groupby, orhaving, orderby, getwhere.
- Удалены устаревшие функции _drop_database() и _create_database() из драйвера db utility.
- Улучшена функция dbforge create_table() для драйвера Postgres.
- Помощники
- Добавлена функция convert_accented_characters() в помощник text.
- Добавлена разрешенная кодировка в список вставляемых аттрибутов form_open() в помощник Form.
- Объявлена устаревшей функция dohash() в пользу do_hash().
- Внесены изменения в get_dir_file_info() помощник File, для предотвращения получения доступа к директориям выше. Больше нет рекурсий по умолчанию, для более ответственного использования (эта функция может привести к проблемам производительности сервера при использовании без должной осторожности).
- Изменен второй параметр в directory_map() помощнике Directory, чтобы принимать целое значение глубины рекурсии.
- Изменено delete_files() в помощнике File, чтобы возвращать FALSE в случае неудачи.
- Изменен опциональный второй параметр в byte_format() в помощнике Number для обеспечения десятичной точности.
- Добавлены строковые типы alpha и sha1 в random_string() помощника String.
- Изменено prep_url() таким образом, чтобы не предварять без надобности http:// .
- Изменено get_file_info в помощнике File, изменено filectime() в filemtime() для дат.
- Изменено smiley_js(), добавлен третий опциональный параметр, чтобы возвращать javascript без открывающих тегов.
- Функция img() помощника HTML теперь генерирует пустую строку как аттрибут alt, если она не предоставлена.
- Если включена защита CSRF в конфигурационном файле приложения, form_open() будет автоматически вставлять ее скрытым полем.
- Добавлено sanitize_filename() в помощнике Security.
- Добавлено ellipsize() в помощник Text
- Добавлено elements() в помощник Array
- Другие изменения
- Добавлен второй опциональный параметр в функицю show_404(), для выключения логгирования.
- Обновлен загрузчик для автоматического включения префикса подкласса как опцию при загрузке класса. Имена классов могут быть с префиксом "CI_", или с другим префиксом, как префикс подкласса, или вовсе без префиксов.
- Увеличена случайность в is_really_writable() для предотвращения файловых коллизий, когда сотни или тысячи запросов выполняются одновременно.
- Изменены некоторые константы DIR_WRITE_MODE, использующие FILE_WRITE_MODE, где используются файлы и не директории.
- get_mime_by_extension() теперь не регистрозависимое.
- Добавлено "default" в список зарезервированных имен.
- Добавлено 'application/x-msdownload' для файлов .exe и 'application/x-gzip-compressed' для файлов .tgz в config/mimes.php.
- Обновлена библиотека Output, которая не сжимает вывод и не посылает заголовки длины контента, если сервер запущен с включенным zlib.output_compression.
- Устранены вызовы к is_really_writable() для каждого запроса, так как они действительно не нужны (кеширование вывода)
- Документирована append_output() в классе Output.
- Документирован второй параметр функции decode() класса Encryption.
- Документировано db->close().
- Обновлен роутер, чтобы поддерживать маршрутизацию по умолчанию с любым количеством сегментов.
- Убрана _remove_invisible_characters() из библиотеки Security в объединенные функции.
- Добавлено audio/mpeg3, как правильный тип mime для MP3.
Устраненные ошибки 2.0.0
- Устранена ошибка, когда класс Output отправлял некорректный кешированный вывод для контроллеров со своими методом _output().
- Устранена ошибка, когда при неудавшемся запросе не сохранялось время выполнения запросов в профайлере.
- Устранена ошибка, когда в лог записывалась множественная загрузка идентичных помощников и плагинов.
- Исправлены опечатки в руководстве и в примерах (#10693, #8951, #7825, #8660, #7883, #6771, #10656).
- Исправлен языковой ключ в профайлере: "profiler_no_memory_usage" ы "profiler_no_memory".
- Устранена ошибка в библиотеке Zip, не разрешающая загрузку с серверов PHP 4.
- Устранена ошибка в библиотеке Form Validation, когда поля передавались как правила полей без перевода (#9132)
- Исправлен помощник inflector, при образовании множественного числа со словами, заканчивающимися на 'ch' or 'sh'
- Устранена ошибка в xss_clean(), которая не допускала дефисы в строке запроса переданного URL.
- Устранены ошибки в get_dir_file_info() и get_file_info() в помощнике File с рекурсией, и файловыми путями в Windows.
- Устранена ошибка, когда Active Record не выключался, если он был включен в файле конфигурации БД.
- Устранена ошибка в reduce_double_slashes() в помощнике String для корректного удаления дубликатов двойных ведущих слешей (#7585)
- Устранена ошибка в values_parsing() библиотеки XML-RPC, которая мешала переменным NULL определяться как 'string' при правильном обращении.
- Устранена ошибка, когда form_open_multipart() не принимала строку с аттрибутами аргументов (#10930).
- Устранена ошибка (#10470), где
get_mime_by_extension() была регистрочувствительной. - Устранена ошибка, когда некоторые сообщения об ошибках в драйверах SQLite и Oracle не отображались.
- Устранена ошибка, где файлы, созданные библиотекой Zip, имели дату создания 1980.
- Устранена ошибка в библиотеке Session, которая выдавала ошибку при попытке сохранения значений с объектами.
- Устранена ошибка, когда при расширении класса Controller выдавалась fatal PHP error.
- Устранена ошибка PHP Strict Standards Error в файле index.php.
- Устранена ошибка, когда getimagesize() проверялся для неграфических файлов в is_allowed_type().
- Устранена ошибка в библиотеке Encryption, когда пустой ключ не создавал ошибку.
- Устранена ошибка в библиотеке Email, когда получатели CC и BCC не сбрасывались при использовании метода clear() (#109).
- Устранена ошибка в помощнике URL, когда prep_url() мог вызвать ошибку PHP в версии PHP < 5.1.2.
- Добавление сообщения лога в core/output, если не найдено значение конфигурации для директории кеша.
- Устранена ошибка, когда множество библиотек не могли быть загружены передачей массива в load->library()
- Устранена ошибка в помощнике html, когда было слишком много пробелов между тегами src и alt tags в функции img().
- Устранена ошибка в функции профайлера _compile_queries().
- Устранена ошибка в помощнике date, когда переменная DATE_ISO8601 возвращалась некорректно отформатированной строкой.