1212 * - Сжатие выходного css-файла (с возможностью отключать сжатие).
1313 * - Вывод ошибок компиляции (особо не проверял какие ошибки выводятся, но если будет явный косяк - класс скажет в какой строке искать и не станет делать компиляцию, но может и не точно сказать т.к. защиты от кривых рук там нет).
1414 * - Ведение наглядного лога
15+ * - Автоматическое добавление блока с информацией о компиляции файла и копирайтами (текст копирайта берётся из настроек ниже).
1516 * ===============================================================
1617 * Файл: less.php
1718 * ---------------------------------------------------------------
18- * Версия: 2.0.1 (21.06 .2013)
19+ * Версия: 2.1.0 (18.07 .2013)
1920 * ===============================================================
2021 *
2122 * Использование:
4041$ lessLogFile = 'less-log ' ; // Имя лог-файла. Файл является html-страницей и записывается в корень сайта.
4142
4243// Определяем входящий и выходящий файлы и определяем сжимать или нет выходящий файл.
43- $ inputFile = $ _SERVER ['DOCUMENT_ROOT ' ].SITE_TEMPLATE_PATH ."/template_styles .less " ; // Файл template_styles.less, лежащий в текущем шаблоне сайта
44+ $ inputFile = $ _SERVER ['DOCUMENT_ROOT ' ].SITE_TEMPLATE_PATH ."/special .less " ; // Файл template_styles.less, лежащий в текущем шаблоне сайта
4445$ outputFile = str_ireplace ('.less ' , '.css ' , $ inputFile ); // Файл template_styles.css - который подключается к шаблону
4546$ normal = true ; // true для отключения сжатия выходящего файла.
4647$ alertError = true ; // false для показа ошибок компиляции вверху страницы (по умолчанию показываются js-алертом);
4748
49+ $ copyText = '@author: Павел Белоусов (www.info-expert.ru) ' ; // Текст, который будет записан в начало файла CSS вместе со статистикой
50+
4851
4952/**
5053 * Конец настроек
5861
5962// Выполняем функцию компиляции
6063try {
61- autoCompileLess ($ inputFile , $ outputFile , $ normal );
64+ autoCompileLess ($ inputFile , $ outputFile , $ normal, $ copyText );
6265} catch (exception $ e ) {
6366 // Если что-то пошло не так - скажем об этом пользователю способом, указанным в настройках и запишем в лог.
6467 $ logError = str_replace ($ _SERVER ['DOCUMENT_ROOT ' ], '' , $ e ->getMessage ());
65- $ showError = ($ alertError ) ? '<script>alert("Less error: ' .$ logError .'")</script> ' : '<div style="text-align: center; background: #fff; color: red; padding: 5px;">Less error: ' .$ logError .'</div> ' ;
68+ $ showError = ($ alertError ) ? '<script>alert("Less error: ' .str_replace ( ' " ' , ' ' , $ logError) .'")</script> ' : '<div style="text-align: center; background: #fff; color: red; padding: 5px;">Less error: ' .$ logError .'</div> ' ;
6669
6770 echo $ showError ;
6871
177180 * @param string $nocompress - отключает сжатие выходного файла
178181 * @return file
179182 */
180- function autoCompileLess ($ inpFile , $ outFile , $ nocompress = false ) {
181-
183+ function autoCompileLess ($ inpFile , $ outFile , $ nocompress = false , $ copy ) {
184+
182185 $ cacheFile = $ inpFile .".cache " ;
183186
184187 if (file_exists ($ cacheFile )) {
@@ -199,12 +202,29 @@ function autoCompileLess($inpFile, $outFile, $nocompress = false) {
199202 // Иначе сжимаем всё в одну строку.
200203 $ less ->setFormatter ('compressed ' );
201204 }
202-
205+ // Массив с данными разультата компиляции
203206 $ newCache = $ less ->cachedCompile ($ cache );
204207
208+ // Выдёргиваем имена импортируемых файлов
209+ $ sourceFiles = array ();
210+ foreach ($ cache ["files " ] as $ key => $ source ) {
211+ $ sourceFiles [] = basename ($ key );
212+ }
213+
214+ // Добавляем копирайты и информацию по файлам в начало.
215+ $ copy = '
216+ /* ==========================================================================
217+ @outputFile: ' .basename ($ outFile ).'
218+ @inputFiles: ' .implode (', ' ,$ sourceFiles ).'
219+ @date: ' .date ('Y-m-d H:i:s ' ).'
220+ ' .$ copy .' */
221+ /* ========================================================================== */
222+
223+ ' ;
224+
205225 if (!is_array ($ cache ) || $ newCache ["updated " ] > $ cache ["updated " ]) {
206226 file_put_contents ($ cacheFile , serialize ($ newCache ));
207- file_put_contents ($ outFile , $ newCache ['compiled ' ]);
227+ file_put_contents ($ outFile , $ copy . $ newCache ['compiled ' ]);
208228 }
209229 }
210230
0 commit comments