Новости Joomla

Вышли релизы Joomla 6.1 и Joomla 5.4.5: новые возможности и стабильность

Релиз Joomla 6.1.0

Проект Joomla! объявил о доступности Joomla 6.1 [Nyota] — новой минорной версии шестой серии, а также о выпуске релиза исправлений ошибок Joomla 5.4.5. Релиз 6.1 приносит ряд долгожданных функций, повышающих удобство управления контентом и защиту от спама.

👩‍💻 Компонент "CS Афиши" для Joomla.

👩‍💻 Компонент "CS Афиши" для Joomla.

Расширение "CS Афиши" позволяет выводить список мероприятий, фильтровать их по датам, поиск по заголовкам и описанию.

В состав пакета расширений входят:
- Компонент "CS Афиши"
- Модуль "Календарь событий"
- Модуль "Предстоящие события"
- Библиотека "ImgResize"

Расширение "CS Афиши" позволяет выводить список мероприятий, фильтровать их по датам, поиск по заголовкам и описанию.

Модуль "Календарь событий" отображает предстоящие и прошедшие мероприятие на календаре, с отображением мероприятий на конкретную дату во всплывающем окне.

Модуль "Предстоящие события" показывает список предстоящий событий по порядку их наступления.

P.S. Расширение платное, но плата символическая, чисто для отработки приема платежей. Ключи без ограничения по времени, купившие сейчас - смогут обновляться без ограничений.

Разработчик - участник нашего сообщества Дмитрий Денисов (@codersite).

Страница расширения
Демо

Яндекс выпустил инструмент Видимость сайта в Алисе AI.

Яндекс выпустил инструмент Видимость сайта в Алисе AI.

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

Долгое время у всех был немой вопрос: "Как же теперь оценивать эффективность сайта?". Теперь этот на этот вопрос отчасти отвечает новый инструмент аналитики.
Процитируем справку Яндекса по инструменту:
На запросы пользователей в Поиске может отвечать Алиса AI. Ответы появляются в поисковой выдаче, в объектных ответах и на отдельной вкладке Поиска. В них чаще всего упоминаются страницы сайтов, на которые Алиса AI опиралась при подготовке ответа.

С помощью инструмента Видимость сайта в Алисе AI в Яндекс Вебмастере вы можете:
- узнать долю упоминаний сайта среди источников в ответах Алисы AI в Поиске и отследить динамику изменений;
- посмотреть примеры запросов, по которым страницы сайта показываются в ответах Алисы AI;
- посмотреть примеры сайтов той же тематики, которые часто упоминаются в генеративной выдаче.
Данные отображаются за последние 3 месяца и обновляются каждую неделю.

Статистика собирается только по тем запросам, по которым ваш сайт уже находится достаточно высоко в поисковой выдаче. Это позволяет анализировать видимость именно в той нише, где вы заинтересованы в продвижении, и избегать «размытия» по малозначимым для вас запросам.

Кроме того, такой подход обусловлен работой Алисы AI: она строит ответ с опорой на самые релевантные, информативные и качественные страницы, которые обычно занимают высокие позиции в Поиске.

Чтобы увидеть статистику вашего сайта в меню Яндекс.Вебмастера перейдите в раздел "Эффективность" и далее в "Показы сайта в Алисе AI".

В начале февраля 2026г. был вебинар с Михаилом Сливинским - амбассадором Поиска Яндекса, и в рамках вебинара была озвучена просьба сделать такой инструмент. Скорее всего разработка на тот момент уже велась, потому что от просьбы до релиза прошло около 2-х месяцев. В любом случае хорошо, что такая статистика появилась.

Показы сайта в Алисе AI в вашем Яндекс,Вебмастере.

@joomlafeed

0 Пользователей и 1 Гость просматривают эту тему.
  • 27 Ответов
  • 12280 Просмотров
*

ldmco

  • Moderator
  • 267
  • 28 / 1
  • ksenmart.ru
Проблемы при установке
« : 06.04.2013, 09:07:33 »
Ребята и девчата, кто пробовал установить новую версию, отпишите у всех ли все нормально ставится.
У меня есть желание отладить систему, будупросить доступы к вам на хостинг и разбираться в чем причина.
 *DRINK*
Я отвечаю на все сообщения, просто на некоторые - устно :)
*

ELLE

  • Глобальный модератор
  • 4505
  • 893 / 0
Re: Проблемы при установке
« Ответ #1 : 06.04.2013, 13:18:19 »
поставилось после того как в .htaccess дописали
Код
php_value upload_max_filesize 16M
php_value post_max_size 16M
а так, даже ошибки не было - после загрузки пакета просто перезагрузка и все.

а и кстати, неплохо было бы включить в пакет хоть какие-то демо-данные (может они есть? не предложили установить), а так для теста муторно забивать минимум чтоб проверить работоспособность
*

ldmco

  • Moderator
  • 267
  • 28 / 1
  • ksenmart.ru
Re: Проблемы при установке
« Ответ #2 : 06.04.2013, 15:51:05 »
поставилось после того как в .htaccess дописали
Код
php_value upload_max_filesize 16M
php_value post_max_size 16M
а так, даже ошибки не было - после загрузки пакета просто перезагрузка и все.

а и кстати, неплохо было бы включить в пакет хоть какие-то демо-данные (может они есть? не предложили установить), а так для теста муторно забивать минимум чтоб проверить работоспособность

ну так архав весит под 10мб из-за геоip, не мудрено что ругается. Что с этим делать я пока что не придумал.
по поводу демо данных, очень хорошая заметка, надо быдет с демо сайта наполнение загнать туда. К следующей сборке сделаем
Я отвечаю на все сообщения, просто на некоторые - устно :)
*

adan

  • Захожу иногда
  • 109
  • 7 / 0
Re: Проблемы при установке
« Ответ #3 : 06.04.2013, 16:13:46 »
ну так архав весит под 10мб из-за геоip, не мудрено что ругается. Что с этим делать я пока что не придумал.
по поводу демо данных, очень хорошая заметка, надо быдет с демо сайта наполнение загнать туда. К следующей сборке сделаем
Мне кажется должен быть выбор, ставить или нет. По мне так демо данные ненужны.., это нужно только для тестирования.
*

ldmco

  • Moderator
  • 267
  • 28 / 1
  • ksenmart.ru
Re: Проблемы при установке
« Ответ #4 : 07.04.2013, 00:53:30 »
Мне кажется должен быть выбор, ставить или нет. По мне так демо данные ненужны.., это нужно только для тестирования.

просто надо сделать кнопку "удалить все"
Я отвечаю на все сообщения, просто на некоторые - устно :)
*

ELLE

  • Глобальный модератор
  • 4505
  • 893 / 0
Re: Проблемы при установке
« Ответ #5 : 07.04.2013, 01:41:43 »
просто надо сделать кнопку "удалить все"
ой, не...сомневаюсь....
предположим ситуацию, что после разработки сайта, его управление переходит к кому-либо из сотрудников компании и вот ненароком нажмет он эту кнопку и усё....нет магазина :)
поэтому, лучше после установки спросить "установить демо-данные?" как например это делается в VirtueMart или джумшоппинге
*

ldmco

  • Moderator
  • 267
  • 28 / 1
  • ksenmart.ru
Re: Проблемы при установке
« Ответ #6 : 07.04.2013, 02:08:41 »
ой, не...сомневаюсь....
предположим ситуацию, что после разработки сайта, его управление переходит к кому-либо из сотрудников компании и вот ненароком нажмет он эту кнопку и усё....нет магазина :)
поэтому, лучше после установки спросить "установить демо-данные?" как например это делается в VirtueMart или джумшоппинге

Ну на самом деле надо и то и то, просто кнопку "удалить все" надо прятать от глаз менеджеров в настройки куда им зарезать доступ правами. Она очень спасает когда разрабатываешь сайт и тестируешь для него какой нить особый импорт. Ну а если кто-то удалит не нужное, то я думаю на любом уважающем себя хостинге делаются бекапы данных.
Я отвечаю на все сообщения, просто на некоторые - устно :)
*

AleksWhite

  • Новичок
  • 8
  • 0 / 0
Re: Проблемы при установке
« Ответ #7 : 10.04.2013, 14:05:45 »
Ребята и девчата, кто пробовал установить новую версию, отпишите у всех ли все нормально ставится.
У меня есть желание отладить систему, будупросить доступы к вам на хостинг и разбираться в чем причина.
 *DRINK*
Готов предоставить :) и даже помочь.
Открыл темку http://joomlaforum.ru/index.php/topic,260294.new.html#new

Если ставить через Установить из каталога, ругается что компонент установлен
Например
Код
Установка компонента: Другой компонент уже использует каталог: /home/administrator/components/com_ksenmart
удаляю и все равно компонент не ставится
*

ldmco

  • Moderator
  • 267
  • 28 / 1
  • ksenmart.ru
Re: Проблемы при установке
« Ответ #8 : 11.04.2013, 16:25:20 »
Готов предоставить :) и даже помочь.
Открыл темку http://joomlaforum.ru/index.php/topic,260294.new.html#new

Если ставить через Установить из каталога, ругается что компонент установлен
Например
Код
Установка компонента: Другой компонент уже использует каталог: /home/administrator/components/com_ksenmart
удаляю и все равно компонент не ставится

если можно, доступы к хостингу и сайту в скайп мне скинь dimitriy-ldm
ну и поясни, ставил с нуля или поверх одной из старых версий?
Я отвечаю на все сообщения, просто на некоторые - устно :)
*

AleksWhite

  • Новичок
  • 8
  • 0 / 0
Re: Проблемы при установке
« Ответ #9 : 12.04.2013, 21:59:07 »
Ставил с нуля. Скачал архив Joomla с сайта Joomla.ru и сразу после установки попытался установить Ваш компонент.
Отправил в скайп.
*

AleksWhite

  • Новичок
  • 8
  • 0 / 0
Re: Проблемы при установке
« Ответ #10 : 15.04.2013, 08:37:34 »
Переустановил заново.
Теперь при запуске установки получил вот такое сообщение
Цитировать
Warning: POST Content-Length of 9551007 bytes exceeds the limit of 8388608 bytes in Unknown on line 0

Добавил в .htaccess строки
Код
php_value upload_max_filesize 16M
php_value post_max_size 16M
Ошибка не ушла.
Тогда вновь использовал установку через каталог tmp/

Установка через tmp к успеху не привела.

Похоже проблемы с хостингом.

Установил на локальную систему.
Установка удалась. Однако при обращении к компоненте появляются ошибки отображаемые на странице.
Цитировать
Strict Standards: Non-static method KMUpdaterFunctions::curlResponse() should not be called statically in D:\www\ksenmart\administrator\components\com_ksenmart\helpers\functions\updater_functions.php on line 15 Strict Standards: Non-static method KMPanelFunctions::getComponents() should not be called statically, assuming $this from incompatible context in D:\www\ksenmart\administrator\components\com_ksenmart\views\panel\view.html.php on line 16 Strict Standards: Non-static method KsenMartHelper::loadModules() should not be called statically, assuming $this from incompatible context in D:\www\ksenmart\administrator\components\com_ksenmart\views\panel\tmpl\default.php on line 4

PS зарегистрировал свою копию. Хочу добиться работы на локальной системе и потом перенести в Интернет.
« Последнее редактирование: 15.04.2013, 10:17:24 от AleksWhite »
*

ldmco

  • Moderator
  • 267
  • 28 / 1
  • ksenmart.ru
Re: Проблемы при установке
« Ответ #11 : 15.04.2013, 10:07:49 »
Переустановил заново.
Теперь при запуске установки получил вот такое сообщение
Добавил в .htaccess строки
Код
php_value upload_max_filesize 16M
php_value post_max_size 16M
Ошибка не ушла.
Тогда вновь использовал установку через каталог tmp/

PS что получилось добавлю чуть позже

это ругается на размер файла архива.
Я отвечаю на все сообщения, просто на некоторые - устно :)
*

AleksWhite

  • Новичок
  • 8
  • 0 / 0
Re: Проблемы при установке
« Ответ #12 : 15.04.2013, 13:08:35 »
После установки получил ошибку
Цитировать
Strict Standards: Non-static method KMUpdaterFunctions::curlResponse() should not be called statically in D:\www\ksenmart\administrator\components\com_ksenmart\helpers\functions\updater_functions.php on line 15 Strict Standards: Non-static method KsenMartHelper::loadModules() should not be called statically, assuming $this from incompatible context in D:\www\ksenmart\administrator\components\com_ksenmart\views\product\tmpl\default.php on line 21
первую ошибку вылечил так в файле updater_functions.php строка 189
Код
// было
function curlResponse($url,$data='',$timeout=600 )
// стало
public static function curlResponse($url,$data='',$timeout=600 )

Вторую также объявлением статической функции в файле administrator\components\com_ksenmart\helpers\ksenmart.php в строке 11
Код
// было
function loadModules($position,$name='',$params=array())
// стало
public static function loadModules($position,$name='',$params=array())

И еще одна ошибка проявилась
Цитировать
Strict Standards: Non-static method KMPanelFunctions::getComponents() should not be called statically, assuming $this from incompatible context in D:\www\ksenmart\administrator\components\com_ksenmart\views\panel\view.html.php on line 16
Вылечил также добавлением public static в строке 30 файла administrator\components\com_ksenmart\helpers\functions\panel_functions.php

Теперь пробую перенести локальный сайт на хостинг

Перенес на хостинг. Приложение работает. Переходим к освоению. :)
« Последнее редактирование: 15.04.2013, 20:23:23 от AleksWhite »
*

AleksWhite

  • Новичок
  • 8
  • 0 / 0
Re: Проблемы при установке
« Ответ #13 : 15.04.2013, 20:39:06 »
При обновлении компонента оказалось, что почему-то нет таблицы
Обновление закончилось с ошибкой
Цитировать
500 - Обнаружена ошибка.

JDatabaseMySQL::query: 1146 - Table 'u853041833_tb.i_ksenmart_settings' doesn't exist SQL=select value from i_ksenmart_settings where name='update_parts'

В архиве компонента также не нашел этой таблицы в файле  ...ksenmart.zip \administrator\sql\install.sql
*

zru4na

  • Осваиваюсь на форуме
  • 16
  • 0 / 0
Re: Проблемы при установке
« Ответ #14 : 19.04.2013, 11:29:05 »
после установки и регистрации, выдало, что нужно обновить версию, нажимаю, находит, что появился новый модуль "Валюта по умолчанию" при попытке обновить либо скачать обновления выдает такую надпись "Fatal error: Call to undefined method KMCommonFunctions::getSettingsValue() in /home/zrunaby/public_html/administrator/components/com_ksenmart/helpers/functions/updater_functions.php on line 156
в 156 строке указанного файла стоит следующее
$versions['ksenmart']=KMCommonFunctions::getSettingsValue('version');

« Последнее редактирование: 19.04.2013, 23:04:51 от ldmco »
*

ldmco

  • Moderator
  • 267
  • 28 / 1
  • ksenmart.ru
Re: Проблемы при установке
« Ответ #15 : 19.04.2013, 23:05:02 »
после установки и регистрации, выдало, что нужно обновить версию, нажимаю, находит, что появился новый модуль "Валюта по умолчанию" при попытке обновить либо скачать обновления выдает такую надпись "Fatal error: Call to undefined method KMCommonFunctions::getSettingsValue() in /home/zrunaby/public_html/administrator/components/com_ksenmart/helpers/functions/updater_functions.php on line 156
в 156 строке указанного файла стоит следующее
$versions['ksenmart']=KMCommonFunctions::getSettingsValue('version');



косяк будет устранен в следующем релизе, спасибо за обратную связь
Я отвечаю на все сообщения, просто на некоторые - устно :)
*

Ne01eX

  • Захожу иногда
  • 89
  • 0 / 0
Re: Проблемы при установке
« Ответ #16 : 21.05.2013, 18:56:58 »
У меня такая ошибка на денвере... :( Как исправить подскажите?
Цитировать
Warning: POST Content-Length of 16601529 bytes exceeds the limit of 8388608 bytes in Unknown on line 0
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent in X:\home\localhost\www\meble\libraries\joomla\session\session.php on line 532
*

Ne01eX

  • Захожу иногда
  • 89
  • 0 / 0
Re: Проблемы при установке
« Ответ #17 : 22.05.2013, 11:31:22 »
У меня такая ошибка на денвере... :( Как исправить подскажите?
Ура исправил. У меня файл .htaccess почему то назывался htaccess.txt и по этому не работал код:
Цитировать
php_value upload_max_filesize 16M
php_value post_max_size 16M
Я переименовал файл htaccess.txt в .htaccess и все заработало.

Всем спасибо за отличную и нужную тему...
*

zlideni

  • Захожу иногда
  • 337
  • 76 / 0
Re: Проблемы при установке
« Ответ #18 : 05.06.2013, 19:00:13 »
На сегодняшний день пакет скачанный с оффсайта весит 26,7 мб - в два раза больше чем пакеты обсуждаемые в топике, ldmco  - какие-та новые возможности?
*

ldmco

  • Moderator
  • 267
  • 28 / 1
  • ksenmart.ru
Re: Проблемы при установке
« Ответ #19 : 07.06.2013, 12:09:46 »
На сегодняшний день пакет скачанный с оффсайта весит 26,7 мб - в два раза больше чем пакеты обсуждаемые в топике, ldmco  - какие-та новые возможности?

да, импорт/экспорт в эксель привинтили, гео локация в двух местах, ну и по мелочи набралось. Уже планирую разбивать Ксенмарт на компоненты и плагины потому что вы уже не первый кто задает подобный вопрос. 
Я отвечаю на все сообщения, просто на некоторые - устно :)
*

Raybon

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
Re: Проблемы при установке
« Ответ #20 : 11.06.2013, 03:57:57 »
очень хочется так сказать пощупать компонент . НО ! Сталкнулся с проблемой после установки компонента, а именно в Google chrome банально отсутсвует кнопка добавить товар !в Firefox кнопка отображается но не кликабельна как и еще некоторые "Счего начать" например.
И так вопрос,  что я делаю  не так или откуда мои руки растут?
так же не нашел инфу о требованиях к хостингу
*

ldmco

  • Moderator
  • 267
  • 28 / 1
  • ksenmart.ru
Re: Проблемы при установке
« Ответ #21 : 11.06.2013, 09:50:30 »
очень хочется так сказать пощупать компонент . НО ! Сталкнулся с проблемой после установки компонента, а именно в Google chrome банально отсутсвует кнопка добавить товар !http://clip2net.com/clip/m84420/1370908397-clip-40kb.pngв Firefox кнопка отображается http://clip2net.com/clip/m84420/1370908468-clip-43kb.png но не кликабельна как и еще некоторые "Счего начать" например.
И так вопрос,  что я делаю  не так или откуда мои руки растут?
так же не нашел инфу о требованиях к хостингу

Лично у меня проблема появилась из-за того что плагин браузера adBlock принял класс adds кнопки "добавить товар" за рекламу и заблочил ее.
Внесли изменения в сборку, сегодня выложим новую
« Последнее редактирование: 11.06.2013, 16:30:35 от ldmco »
Я отвечаю на все сообщения, просто на некоторые - устно :)
*

ifx

  • Осваиваюсь на форуме
  • 28
  • 4 / 0
Re: Проблемы при установке
« Ответ #22 : 15.06.2013, 18:53:48 »
Установил компонент, при попытке перейти в админке к компоненту (/administrator/index.php?option=com_ksenmart) получаю вот такую петрушку кода на белом экране. Что делать?
VPS, php 5.3, cURL, apc, debian
---
вижу у человека под ником scanners такая же проблема была еще в ноябре 2012 года - http://joomlaforum.ru/index.php/topic,223272.msg1226316.html#msg1226316. Прошло 6 месяцев она сохранилась по сей день. Как решили ее? Или не решили?

[code]setQuery($query); $modules=$db->loadObjectList(); foreach($modules as $module) { include(JPATH_COMPONENT.'/extentions/modules/'.$module->name.'/'.$module->name.'.php'); if (file_exists(JPATH_COMPONENT.'/extentions/modules/'.$module->name.'/'.$module->name.'.css')) $document->addStyleSheet(JURI::base().'components/com_ksenmart/extentions/modules/'.$module->name.'/'.$module->name.'.css'); if (file_exists(JPATH_COMPONENT.'/extentions/modules/'.$module->name.'/'.$module->name.'.js')) $document->addScript(JURI::base().'components/com_ksenmart/extentions/modules/'.$module->name.'/'.$module->name.'.js'); } } else { //$query="select * from #__ksenmart_modules where name='$name' and published='1'"; //$db->setQuery($query); //$module=$db->loadObject(); //if (count($module)>0) //{ include(JPATH_COMPONENT.'/extentions/modules/'.$name.'/'.$name.'.php'); if (file_exists(JPATH_COMPONENT.'/extentions/modules/'.$name.'/'.$name.'.css')) $document->addStyleSheet(JURI::base().'components/com_ksenmart/extentions/modules/'.$name.'/'.$name.'.css'); if (file_exists(JPATH_COMPONENT.'/extentions/modules/'.$name.'/'.$name.'.js')) $document->addScript(JURI::base().'components/com_ksenmart/extentions/modules/'.$name.'/'.$name.'.js'); //} } } function loadShortComponentInfo($component) { if (file_exists(JPATH_COMPONENT.'/extentions/components/'.$component.'/shortinfo.php')) include(JPATH_COMPONENT.'/extentions/components/'.$component.'/shortinfo.php'); } function getCategoryTree($parent,$level,$selected=array(),$show_root=0) { $db=JFactory::getDBO(); $query="select * from #__ksenmart_categories where parent='$parent' order by ordering"; $db->setQuery($query); $cats=$db->loadObjectList(); $return=''; if (count($cats)>0 || $show_root!=0) $return='
'; if ($show_root==1) { $class='cat-level-'.$level; if (in_array(0,$selected)) $class.=' active'; $return.='
'.JText::_('empty_cat').'
'; } foreach($cats as $cat) { $class='cat-level-'.$level; if ($level>1) $class.=' hide'; if (in_array($cat->id,$selected)) $class.=' active'; $return.='
'.$cat->title; $return_childs=KsenMartHelper::GetCategoryTree($cat->id,$level+1,$selected); if ($return_childs!='') $return.=''.$return_childs.'
'; else $return.=''; } if (count($cats)>0 || $show_root!=0) $return.='
'; return $return; } private static $_config = array(); private static $_settings_cache = array(); public static function getSettingsValue($name,$default='') { if (empty(self::$_config)) { $db=JFactory::getDBO(); $query="select * from #__ksenmart_settings "; $db->setQuery($query); self::$_config = $db->loadObjectList('name'); } if (!array_key_exists($name, self::$_config)){ self::$_settings_cache[$name] = null; } else { self::$_settings_cache[$name] = self::$_config[$name]->value; } $ret = self::$_settings_cache[$name]; if (!is_null($ret)){ return $ret; } else { return $default; } } function SaveSetting($name,$value) { $db=JFactory::getDBO(); $query="update #__ksenmart_settings set value='$value' where name='$name'"; $db->setQuery($query); $res=$db->Query(); return $res; } function ClearImageCache($file) { $cache_dir=JPATH_COMPONENT.'/image/cache/'; $dir=scandir($cache_dir); foreach($dir as $d) { if ($d!='.' && $d!='..') { if (file_exists($cache_dir.$d.'/'.$file)) unlink($cache_dir.$d.'/'.$file); } } } function GenAlias($str,$type='') { $converter = array( 'Р°' => 'a', 'Р±' => 'b', 'РІ' => 'v', 'Рі' => 'g', 'Рґ' => 'd', 'Рµ' => 'e', 'С‘' => 'e', 'Р¶' => 'zh', 'Р·' => 'z', 'Рё' => 'i', 'Р№' => 'y', 'Рє' => 'k', 'Р»' => 'l', 'Рј' => 'm', 'РЅ' => 'n', 'Рѕ' => 'o', 'Рї' => 'p', 'СЂ' => 'r', 'СЃ' => 's', 'С‚' => 't', 'Сѓ' => 'u', 'С„' => 'f', 'С…' => 'h', 'С†' => 'c', 'С‡' => 'ch', 'С?' => 'sh', 'С‰' => 'sch', 'СЊ' => '\'', 'С‹' => 'y', 'СЉ' => '\'', 'СЌ' => 'e', 'СЋ' => 'yu', 'СЏ' => 'ya', 'Рђ' => 'A', 'Р‘' => 'B', 'Р’' => 'V', 'Р“' => 'G', 'Р”' => 'D', 'Р•' => 'E', 'РЃ' => 'E', 'Р–' => 'Zh', 'Р—' => 'Z', 'Р?' => 'I', 'Р™' => 'Y', 'Рљ' => 'K', 'Р›' => 'L', 'Рњ' => 'M', 'Рќ' => 'N', 'Рћ' => 'O', 'Рџ' => 'P', 'Р ' => 'R', 'РЎ' => 'S', 'Рў' => 'T', 'РЈ' => 'U', 'Р¤' => 'F', 'РҐ' => 'H', 'Р¦' => 'C', 'Р§' => 'Ch', 'РЁ' => 'Sh', 'Р©' => 'Sch', 'Р¬' => '\'', 'Р«' => 'Y', 'РЄ' => '\'', 'Р­' => 'E', 'Р®' => 'Yu', 'РЇ' => 'Ya', ); $str=strtr($str, $converter); $str = strtolower($str); $str = preg_replace('~[^-a-z0-9_]+~u','.', $str); $str = trim($str, "-"); $str = str_replace(array('.','-','+','=','/'),array('_','_','_','_','_'),$str); $bad_words=array('','price_less','price_more','order_type','order_dir'); $db=JFactory::getDBO(); $query=$db->getQuery(true); $query->select('config')->from('#__ksenmart_seo_config')->where('type="url"'); $db->setQuery($query); $configs=$db->loadObjectList(); foreach($configs as $config) { $config=json_decode($config->config); foreach($config as $c) if ($c->user==1) $bad_words[]=$c->title; } if (in_array($str,$bad_words)) $str.=time(); $tables=array('#__ksenmart_products','#__ksenmart_categories','#__ksenmart_manufacturers','#__ksenmart_countries','#__ksenmart_properties','#__ksenmart_property_values'); foreach($tables as $table) { $query=$db->getQuery(true); $query->select('count(*)')->from($table)->where('alias="'.$str.'"'); $db->setQuery($query); $count=$db->loadResult(); if ($count>0) $str.=time(); }    return $str; } function checkAlias($alias,$id=0) { $alias = str_replace(array('.','-','+','=','/'),array('_','_','_','_','_'),$alias); $bad_words=array('price_less','price_more','order_type','order_dir'); $db=JFactory::getDBO(); $query=$db->getQuery(true); $query->select('config')->from('#__ksenmart_seo_config')->where('type="url"'); $db->setQuery($query); $configs=$db->loadObjectList(); foreach($configs as $config) { $config=json_decode($config->config); foreach($config as $c) if ($c->user==1) $bad_words[]=$c->title; } if (in_array($alias,$bad_words)) return ''; $tables=array('#__ksenmart_products','#__ksenmart_categories','#__ksenmart_manufacturers','#__ksenmart_countries','#__ksenmart_properties','#__ksenmart_property_values'); foreach($tables as $table) { $query=$db->getQuery(true); $query->select('count(*)')->from($table)->where('alias="'.$alias.'"'); if ((int)$id!=0) $query->where('id!='.(int)$id); $db->setQuery($query); $count=$db->loadResult(); if ($count>0) return ''; } return $alias;    } function showPriceWithoutTransform($price,$currency=0) { if (empty(self::$_currencies)) { $db=JFactory::getDBO(); $query="select * from #__ksenmart_currencies"; $db->setQuery($query); $rows = $db->loadObjectList(); foreach ($rows as $v) { self::$_currencies[$v->id] = $v; if ($v->default == 1 ) { self::$_currencies[0] = $v; } } } $currency = self::$_currencies[$currency]; $price=str_replace('{price}',$price,$currency->template); return $price; } function showPriceWithTransform($price,$currency=0) { if (empty(self::$_currencies)) { $db=JFactory::getDBO(); $query="select * from #__ksenmart_currencies"; $db->setQuery($query); $rows = $db->loadObjectList(); foreach ($rows as $v) { self::$_currencies[$v->id] = $v; if ($v->default == 1 ) { self::$_currencies[0] = $v; } } } $currency = self::$_currencies[$currency]; $price=number_format($price,$currency->fractional,'.',$currency->separator); $price=str_replace('{price}',$price,$currency->template); return $price; } function getPriceInDefaultCurrency($price,$currency) { if (empty(self::$_currencies)) { $db=JFactory::getDBO(); $query="select * from #__ksenmart_currencies"; $db->setQuery($query); $rows = $db->loadObjectList(); foreach ($rows as $v) { self::$_currencies[$v->id] = $v; if ($v->default == 1 ) { self::$_currencies[0] = $v; } } } $currency = self::$_currencies[$currency]; $price=$price/$currency->rate; return $price; } function getPriceInCurrentCurrency($price,$currency) { $app = JFactory::getApplication(); $curr_currency = $app->getUserState('com_ksenmart.curr_currency',0); if (empty(self::$_currencies)) { $db=JFactory::getDBO(); $query="select * from #__ksenmart_currencies"; $db->setQuery($query); $rows = $db->loadObjectList(); foreach ($rows as $v) { self::$_currencies[$v->id] = $v; if ($v->default == 1 ) { self::$_currencies[0] = $v; } } } $currency = self::$_currencies[$currency]; $curr_currency = self::$_currencies[$curr_currency]; $price=$price/$currency->rate*$curr_currency->rate; return $price; }    function getPriceInDefaultCurrencyWithTransform($price,$currency) { if (empty(self::$_currencies)) { $db=JFactory::getDBO(); $query="select * from #__ksenmart_currencies"; $db->setQuery($query); $rows = $db->loadObjectList(); foreach ($rows as $v) { self::$_currencies[$v->id] = $v; if ($v->default == 1 ) { self::$_currencies[0] = $v; } } } $currency = self::$_currencies[$currency]; $price=number_format($price,$currency->fractional,'.',$currency->separator); $price=str_replace('{price}',$price,$currency->template); return $price; } function getPriceInCurrency($price,$currency=0) { if (empty(self::$_currencies)) { $db=JFactory::getDBO(); $query="select * from #__ksenmart_currencies"; $db->setQuery($query); $rows = $db->loadObjectList(); foreach ($rows as $v) { self::$_currencies[$v->id] = $v; if ($v->default == 1 ) { self::$_currencies[0] = $v; } } } $currency = self::$_currencies[$currency]; $price=$price*$currency->rate; $price=number_format($price,$currency->fractional,'.',$currency->separator); return $price; } function getCurrencyCode($currency=0) { if (empty(self::$_currencies)) { $db=JFactory::getDBO(); $query="select * from #__ksenmart_currencies"; $db->setQuery($query); $rows = $db->loadObjectList(); foreach ($rows as $v) { self::$_currencies[$v->id] = $v; if ($v->default == 1 ) { self::$_currencies[0] = $v; } } } $currency = self::$_currencies[$currency]; return $currency->code; } function getCurrencyName($currency=0) { if (empty(self::$_currencies)) { $db=JFactory::getDBO(); $query="select * from #__ksenmart_currencies"; $db->setQuery($query); $rows = $db->loadObjectList(); foreach ($rows as $v) { self::$_currencies[$v->id] = $v; if ($v->default == 1 ) { self::$_currencies[0] = $v; } } } $currency = self::$_currencies[$currency]; return $currency->title; } function getShopItemid() { if (self::$_Itemid === null) { $db=JFactory::getDBO(); $query="select * from #__menu where link='index.php?option=com_ksenmart&view=shopcatalog&layout=catalog' and published='1' limit 1"; $db->setQuery($query); $menuitem=$db->loadObject(); if (count($menuitem)>0) self::$_Itemid=$menuitem->id; else self::$_Itemid=''; } return self::$_Itemid; } function getPriceWithDiscount($price,$subscribe=0) { $user=KsenmartHelper::getUser(); $db=JFactory::getDBO(); $percent=0; $rur=0; $where=" and (0"; foreach($user->groups as $group) if ($group!=2 || ($group==2 && $subscribe==2)) $where.=" or user_group like '%|$group|%'"; if ($subscribe==1) $where.=" or user_group like '%|2|%'"; $where.=")"; if(array_key_exists($where, self::$_discounts)){ $discounts = self::$_discounts[$where]; } else { $query="select * from #__ksenmart_discounts where enabled='1' $where"; $db->setQuery($query); $discounts=$db->loadObjectList(); self::$_discounts[$where] = $discounts; } $price=($price-$rur)*(100-$percent)/100; return number_format($price, 2, '.', ''); } function getPriceWithoutDiscount($price,$subscribe=0) { $user=KsenmartHelper::getUser(); $db=JFactory::getDBO(); $percent=0; $rur=0; $where=" and (0"; foreach($user->groups as $group) if ($group!=1 || ($group==1 && $subscribe==2)) $where.=" or user_group like '%|$group|%'"; if ($subscribe==1) $where.=" or user_group like '%|1|%'"; $where.=")"; $price=($price+$rur)*100/(100-$percent); return number_format($price, 2, '.', ''); } function LoadTemplate($tpl) { include(JPATH_ROOT.'/components/com_ksenmart/templates/'.KsenMartHelper::getSettingsValue('template').'/'.$tpl.'.html'); } function getProductRate($id) { $db=JFactory::getDBO(); $rate=new stdClass(); $rate->rate=0; $rate->count=0; $query="select * from #__ksenmart_comments where product='$id'"; $db->setQuery($query); $comments=$db->loadObjectList(); $rate->count=count($comments); if ($rate->count>0) { foreach($comments as $comment) $rate->rate+=$comment->rate; $rate->rate=$rate->rate/$rate->count; } return $rate; } function formatCommentDate($date) { $str_date=''; $date=explode(' ',$date); $date=explode('-',$date[0]); $mon=''; switch($date[1]) { case '01': $mon='января'; break; case '02': $mon='февраля'; break; case '03': $mon='марта'; break; case '04': $mon='апреля'; break; case '05': $mon='мая'; break; case '06': $mon='РёСЋРЅСЏ'; break; case '07': $mon='июля'; break; case '08': $mon='августа'; break; case '09': $mon='сентября'; break; case '10': $mon='октября'; break; case '11': $mon='РЅРѕСЏР±СЂСЏ'; break; case '12': $mon='декабря'; break; } $str_date=$date[2].' '.$mon.' '.$date[0]; return $str_date; } function formatPrintformDate($date) { return date('d.m.Y',strtotime($date)); } function getAddToCartLink() { $params = JComponentHelper::getParams('com_ksenmart'); $Itemid=KsenMartHelper::getShopItemid(); if ($params->get('order_process',0)==1) { $session =& JFactory::getSession(); $order_id=$session->get('shop_order_id',0); if ($order_id==0) $add_link_cart = JRoute::_('index.php?option=com_ksenmart&view=shopopenorder&Itemid='.$Itemid); else $add_link_cart = JRoute::_('index.php?option=com_ksenmart&view=shopopencart&Itemid='.$Itemid); } else $add_link_cart = JRoute::_('index.php?option=com_ksenmart&view=shopopencart&Itemid='.$Itemid); return $add_link_cart; } function sendOrderIndoCustomer($order_id) { $dispatcher   = JDispatcher::getInstance(); $db=JFactory::getDBO(); $Itemid=KsenMartHelper::getShopItemid(); $query="select * from #__ksenmart_orders where id='$order_id'"; $db->setQuery($query); $order=$db->loadObject(); $content = ''; $content.='
Р?нформация
Р?РјСЏ:   '.$order->name.'
E-mail:   '.$order->email.'
Адрес доставки:   '.$order->address.'
Заказ

'; $query="select * from #__ksenmart_order_items where order_id='$order_id'"; $db->setQuery($query); $order->items=$db->loadObjectList(); foreach ($order->items as &$item) { $item_properties=array(); $properties=explode(';',$item->properties); foreach($properties as $property) { $property=explode(':',$property); $query="select * from #__ksenmart_properties where id='$property[0]'"; $this->_db->setQuery($query); $prop=$this->_db->loadObject(); if (count($prop)>0) { $item_properties[]=new stdClass(); $item_properties[count($item_properties)-1]->title=$prop->title; if ($prop->type=='select' || $prop->type=='radio') { $query="select * from #__ksenmart_property_values where id='$property[1]'"; $this->_db->setQuery($query); $val=$this->_db->loadObject();    if (count($val)>0) $item_properties[count($item_properties)-1]->value=$val->title.' '.$prop->finishing; } }    }    $query="select * from #__ksenmart_products where id='$item->product_id'"; $db->setQuery($query); $item->product=$db->loadObject(); $link = JURI::root().JRoute::_('index.php?option=com_ksenmart&view=shopproduct&id='.$item->product->id.":".$item->product->alias.'&Itemid='.$Itemid); $content.='    '; } $order->total_cost=$order->cost; $dispatcher->trigger('onAfterGetOrder',array(&$order)); $results=$dispatcher->trigger('onDisplayAfterLetterContent',array(&$order)); $order->onDisplayAfterLetterContent=trim(implode("\n", $results)); $content.=' ';    $content.=$order->onDisplayAfterLetterContent; $content.='
РџСЂРѕРґСѓРєС‚   РљРѕР»-РІРѕ   Р¦РµРЅР°   РЎС‚оимость
'.$item->product->title.' '; if ($item->product->product_code!='') $content.=' РђСЂС‚. '.$item->product->product_code.''; foreach($item_properties as $item_property) { if (!empty($item_property->value)) $content.='
'.$item_property->title.': '.$item_property->value; else    $content.='
'.$item_property->title.''; }    $content.='
'.$item->product->introcontent.'

'.$item->count.'   '.KsenMartHelper::showPriceWithTransform($item->price).'    '.KsenMartHelper::showPriceWithTransform($item->count*$item->price).'
Общая стоимость товаров         '.KsenMartHelper::showPriceWithTransform($order->cost).'
Стоимость доставки:         '.KsenMartHelper::showPriceWithTransform($order->delivery_cost).'
Р?того         '.KsenMartHelper::showPriceWithTransform($order->total_cost+$order->delivery_cost).'
'; $mail =& JFactory::getMailer(); $mail->isHTML(true); $params = JComponentHelper::getParams('com_ksenmart'); $sender = array($params->get('shop_email'), $params->get('shop_name')); $mail->setSender($sender);    $mail->Subject = 'Новый заказ в„–'.$order_id; $mail->Body = $content; $mail->AddAddress($order->email , $order->name); $mail->Send();    } function sendOrderIndoAdmin($order_id) { $dispatcher   = JDispatcher::getInstance(); $db=JFactory::getDBO(); $Itemid=KsenMartHelper::getShopItemid(); $query="select * from #__ksenmart_orders where id='$order_id'"; $db->setQuery($query); $order=$db->loadObject(); $content = ''; $content.='
Р?нформация
Р?РјСЏ:   '.$order->name.'
E-mail:   '.$order->email.'
Адрес доставки:   '.$order->address.'
Заказ

'; $query="select * from #__ksenmart_order_items where order_id='$order_id'"; $db->setQuery($query); $order->items=$db->loadObjectList(); foreach ($order->items as &$item) { $item_properties=array(); $properties=explode(';',$item->properties); foreach($properties as $property) { $property=explode(':',$property); $query="select * from #__ksenmart_properties where id='$property[0]'"; $this->_db->setQuery($query); $prop=$this->_db->loadObject(); if (count($prop)>0) { $item_properties[]=new stdClass(); $item_properties[count($item_properties)-1]->title=$prop->title; if ($prop->type=='select' || $prop->type=='radio') { $query="select * from #__ksenmart_property_values where id='$property[1]'"; $this->_db->setQuery($query); $val=$this->_db->loadObject();    if (count($val)>0) $item_properties[count($item_properties)-1]->value=$val->title.' '.$prop->finishing; } }    }    $query="select * from #__ksenmart_products where id='$item->product_id'"; $db->setQuery($query); $item->product=$db->loadObject(); $link = JURI::root().JRoute::_('index.php?option=com_ksenmart&view=shopproduct&id='.$item->product->id.":".$item->product->alias.'&Itemid='.$Itemid); $content.='    '; } $order->total_cost=$order->cost; $dispatcher->trigger('onAfterGetOrder',array(&$order)); $results=$dispatcher->trigger('onDisplayAfterLetterContent',array(&$order)); $order->onDisplayAfterLetterContent=trim(implode("\n", $results)); $content.=' ';    $content.=$order->onDisplayAfterLetterContent; $content.='
РџСЂРѕРґСѓРєС‚   РљРѕР»-РІРѕ   Р¦РµРЅР°   РЎС‚оимость
'.$item->product->title.' '; if ($item->product->product_code!='') $content.=' РђСЂС‚. '.$item->product->product_code.''; foreach($item_properties as $item_property) { if (!empty($item_property->value)) $content.='
'.$item_property->title.': '.$item_property->value; else    $content.='
'.$item_property->title.''; }    $content.='
'.$item->product->introcontent.'

'.$item->count.'   '.KsenMartHelper::showPriceWithTransform($item->price).'    '.KsenMartHelper::showPriceWithTransform($item->count*$item->price).'
Общая стоимость товаров         '.KsenMartHelper::showPriceWithTransform($order->cost).'
Стоимость доставки:         '.KsenMartHelper::showPriceWithTransform($order->delivery_cost).'
Р?того         '.KsenMartHelper::showPriceWithTransform($order->total_cost+$order->delivery_cost).'
'; $mail =& JFactory::getMailer(); $mail->isHTML(true); $params = JComponentHelper::getParams('com_ksenmart'); $sender = array($params->get('shop_email'), $params->get('shop_name')); $mail->setSender($sender);    $mail->Subject = 'Новый заказ в„–'.$order_id; $mail->Body = $content; $mail->AddAddress($params->get('shop_email'), $params->get('shop_name')); $mail->Send();    } function incProductHit($id) { $db=JFactory::getDBO(); $query="update #__ksenmart_products set hits=hits+1 where id='$id'"; $db->setQuery($query); $db->query(); } function incProductCarted($id) { $db=JFactory::getDBO(); $query="update #__ksenmart_products set carted=carted+1 where id='$id'"; $db->setQuery($query); $db->query(); } static function number2string($n,$rod) //перевести число $n РІ строку. Число обязательно должно быть 0 < $n < 1000. $rod указывает РЅР° СЂРѕРґ суффикса (0 - женский, 1 - РјСѓР¶СЃРєРѕР№; например, "рубль" - 1, "тысяча" - 0). { $n = round($n%1000); $a = floor($n / 100)*100; $b = floor(($n - $a) / 10)*10; $c = $n % 10; if($b==10){ $b = $b+$c; $c = 0; } $s = ""; switch($a){//сотни case 100: $s = "сто";    break; case 200: $s = "двести";    break; case 300: $s = "триста";    break; case 400: $s = "четыреста";   break; case 500: $s = "пятьсот";    break; case 600: $s = "С?естьсот";   break; case 700: $s = "семьсот";    break; case 800: $s = "восемьсот";   break; case 900: $s = "девятьсот";   break; } $s .= ($s&&$b)?" ":''; switch($b){//десятки case 10: $s .= "десять";    break; case 11: $s .= "одиннадцать";   break; case 12: $s .= "двенадцать";   break; case 13: $s .= "тринадцать";   break; case 14: $s .= "четырнадцать";   break; case 15: $s .= "пятнадцать";   break; case 16: $s .= "С?естнадцать";   break; case 17: $s .= "семнадцать";   break; case 18: $s .= "восемнадцать";   break; case 19: $s .= "девятнадцать";   break; case 20: $s .= "двадцать";    break; case 30: $s .= "тридцать";    break; case 40: $s .= "СЃРѕСЂРѕРє";    break; case 50: $s .= "пятьдесят";    break; case 60: $s .= "С?естьдесят";   break; case 70: $s .= "семьдесят";    break; case 80: $s .= "восемьдесят";   break; case 90: $s .= "девяносто";    break; } $s .= ($s&&$c)?" ":''; switch($c){//единицы case 1: switch($rod){ case 0:$s .= "РѕРґРЅР°";break;//Р¶.СЂ. Р?.Рї. case 1:$s .= "РѕРґРёРЅ";break;//Рј.СЂ. Р?.Рї. case 2:$s .= "РѕРґРЅСѓ";break;//Р¶.СЂ. Р .Рї. case 3:$s .= "РѕРґРёРЅ";break;//Рј.СЂ. Р .Рї. } break; case 2: switch($rod){ case 0:$s .= "РґРІРµ";break;//Р¶.СЂ. Р?.Рї. case 1:$s .= "РґРІР°";break;//Рј.СЂ. Р?.Рї. case 2:$s .= "РґРІРµ";break;//Р¶.СЂ. Р .Рї. case 3:$s .= "РґРІР°";break;//Рј.СЂ. Р .Рї. } break; case 3: $s .= "три";    break; case 4: $s .= "четыре";    break; case 5: $s .= "пять";    break; case 6: $s .= "С?есть";    break; case 7: $s .= "семь";    break; case 8: $s .= "восемь";    break; case 9: $s .= "девять";    break; } return $s; } /** * создает строковое представление СЃСѓРјРјС‹. Например $n = 123. * результат будет "Сто двадцать три рубля 00 копеек" * * @param float $amount * @return string */ static function stringView( $amount ) { //разделить СЃСѓРјРјР° РЅР° разряды: единицы, тысячи, миллионы, миллиарды (больС?Рµ миллиардов РЅРµ проверять :) ) $n = round($amount,2); $billions = floor($n / 1000000000); $millions = floor( ($n-$billions*1000000000) / 1000000); $grands = floor( ($n-$billions*1000000000-$millions*1000000) / 1000); $roubles = floor( ($n-$billions*1000000000-$millions*1000000-$grands*1000) );//$n % 1000; //копейки $kop = round ( $n*100 - round( floor($n)*100 ) ); //var_dump(array($n,$billions,$millions,$grands,$roubles,$kop)); if ($kop < 10) $kop = "0".(string)$kop; $s = ""; if ($billions > 0) { $t = "РѕРІ"; $temp = $billions % 10; if (floor(($billions % 100)/10)!= 1) { if ($temp == 1) $t = ""; else if ($temp >=2 && $temp <= 4) $t = "Р°"; } $s .= KsenMartHelper::number2string($billions,1)." миллиард{$t} "; } if ($millions > 0) { $t = "РѕРІ"; $temp = $millions % 10; if (floor(($millions % 100)/10)!= 1) { if ($temp == 1) $t = ""; else if ($temp >=2 && $temp <= 4) $t = "Р°"; } $s .= KsenMartHelper::number2string($millions,1)." миллион{$t} "; } if ($grands > 0) { $t = ""; $temp = $grands % 10; if (floor(($grands % 100)/10)!= 1) { if ($temp == 1) $t = "Р°"; else if ($temp >=2 && $temp <= 4) $t = "Рё"; } $s .= KsenMartHelper::number2string($grands,0)." тысяч{$t} "; } if ($roubles > 0) { $rub = "ей"; $temp = $roubles % 10; if (floor(($roubles % 100)/10)!= 1) { if ($temp == 1) $rub = "СЊ"; else if ($temp >=2 && $temp <= 4) $rub = "СЏ"; } $s .= KsenMartHelper::number2string($roubles,1)." СЂСѓР±Р»{$rub} "; } { $kp = "ек"; $temp = $kop % 10; if (floor(($kop % 100)/10)!= 1) { if ($temp == 1) $kp = "Р№РєР°"; else if ($temp >=2 && $temp <= 4) $kp = "Р№РєРё"; } $s .= "{$kop} РєРѕРїРµ{$kp}"; } /* //теперь сделать первую Р±СѓРєРІСѓ заглавной if ($roubles>0 || $grands>0 || $millions>0 || $billions>0) { $cnt=0; while(substr($s, $cnt, 1)==" ") $cnt++; $s = substr($s, $cnt, 1); $s[$cnt] = chr( ord($s[$cnt])- 32 ); } */ return $s; } function getDiscountString($id) { $db=JFactory::getDBO(); $str=''; $query="select * from #__ksenmart_discounts where id='$id'"; $db->setQuery($query); $discount=$db->loadObject(); if ($discount) { if ($discount->type=='accumulation') { $discount->accumulation=explode(';',$discount->discount); for($i=0;$iaccumulation);$i++) { $discount->accumulation[$i]=explode(':',$discount->accumulation[$i]); $str.=JText::_('from').' '.KsenMartHelper::showPriceWithoutTransform($discount->accumulation[$i][0]).' - '.$discount->accumulation[$i][1].' %
'; } } elseif ($discount->discount_type==0) $str=$discount->discount.'%'; elseif ($discount->discount_type==1) $str=KsenMartHelper::showPriceWithoutTransform($discount->discount); } return $str; } function getShippingDate($shipping_id) { $db=JFactory::getDBO(); $query="select days from #__ksenmart_shippings where id='$shipping_id'"; $db->setQuery($query); $days=$db->loadResult(); $day=date('j',time()+$days*86400); $month=date('m',time()+$days*86400); switch($month) { case '1': $month='января'; break; case '2': $month='февраля'; break; case '3': $month='марта'; break; case '4': $month='апреля'; break; case '5': $month='мая'; break; case '6': $month='РёСЋРЅСЏ'; break; case '7': $month='июля'; break; case '8': $month='августа'; break; case '9': $month='сентября'; break; case '10': $month='октября'; break; case '11': $month='РЅРѕСЏР±СЂСЏ'; break; case '12': $month='декабря'; break; } return $day.' '.$month; } function getUser($id='') { if (array_key_exists($id, self::$_user)){ return self::$_user[$id]; } $db=JFactory::getDBO(); $original_id = $id; if ($id==''){ $id=JFactory::getUser()->id; } if ($id!=0) { $query="select * from #__ksenmart_users as ku,#__users as u where u.id=ku.id and ku.id='$id'"; $db->setQuery($query); $user=$db->loadObject(); if ($user->email==$user->username.'@email.ru') $user->email=''; $matches=array(); if (preg_match('/([a-z][a-z])-([0-9]+)/',$user->username,$matches)>0) { $user->social_name=$matches[1]; $user->social=1; } if ($user->groups!='') { $user->groups=str_replace('||',',',$user->groups); $user->groups=str_replace('|','',$user->groups); $user->groups=explode(',',$user->groups); } else $user->groups=array(); if ($user->watched!='') { $user->watched=str_replace('||',',',$user->watched); $user->watched=str_replace('|','',$user->watched); $user->watched=explode(',',$user->watched); } else $user->watched=array(); if ($user->favorites!='') { $user->favorites=str_replace('||',',',$user->favorites); $user->favorites=str_replace('|','',$user->favorites); $user->favorites=explode(',',$user->favorites); } else $user->favorites=array();    if ($user->region==0) { $session=JFactory::getSession(); $user_region=$session->get('user_region',0); $user->region=$user_region; } $tmp=explode('-',$user->phone); if (count($tmp)==3) { $user->phone_country=$tmp[0]; $user->phone_code=$tmp[1]; $user->phone=$tmp[2]; } else { $user->phone_country='+7'; $user->phone_code=''; $user->phone=''; } $user->logo=$user->logo==''?'media/ksenmart/images/users/default.png':$user->logo; } else { $session=JFactory::getSession(); $user_region=$session->get('user_region',0); $user=new stdClass(); $user->id=0; $user->name=''; $user->username=''; $user->email=''; $user->groups=array(); $user->region=$user_region; $user->phone_country='+7'; $user->phone_code=''; $user->phone=''; $user->address=''; $user->money=0; $user->sendmails=''; $query="select * from #__ksenmart_user_fields order by ordering"; $db->setQuery($query); $fields=$db->loadObjectList(); foreach($fields as $field) $user->{'field_'.$field->id}=''; $user->logo='media/ksenmart/images/users/default.png';    } self::$_user[$original_id] = $user; return $user; } private static $_property_values = array(); private static $_images = array(); private static $_images_products_files = array(); function getProduct($id) { $db=JFactory::getDBO(); $params = JComponentHelper::getParams('com_ksenmart'); $query=$db->getQuery(true); $query->select('p.*,f.filename,f.folder,f.params,m.title as manufacturer_title,u.form1 as unit')->from('#__ksenmart_products as p'); $query->join("LEFT","#__ksenmart_files as f on p.id=f.owner_id and f.owner_type='product'");    $query->join("LEFT","#__ksenmart_manufacturers as m on p.manufacturer=m.id");    $query->join("LEFT","#__ksenmart_product_units as u on p.product_unit=u.id"); $query->where('p.id='.$id); $query->order('f.ordering'); $query->group('p.id'); $db->setQuery($query); $row=$db->loadObject(); if ($row && !empty($row)) { $row->categories=array(); $query=$db->getQuery(true); $query->select('category_id')->from('#__ksenmart_products_categories')->where('product_id='.$id); $db->setQuery($query); $categories=$db->loadObjectList(); foreach($categories as $cat) $row->categories[]=$cat->category_id;    $row->properties = array(); if (count($row->categories)>0) { $query = $db->getQuery(true); $query->select('p.*') ->from('#__ksenmart_properties as p') ->join('inner', '#__ksenmart_product_categories_properties as cp on cp.property_id=p.id') ->where('cp.category_id in('.implode(', ', $row->categories).')'); $db->setQuery($query); $row->properties = $db->loadObjectList('id'); foreach ($row->properties as &$p) { $p->values = array(); } if (!empty($row->properties)){ $in = array_keys($row->properties); $query = $db->getQuery(true); $query->select('ppv.*,pv.title') ->from('#__ksenmart_product_properties_values as ppv') ->join('inner','#__ksenmart_property_values as pv on pv.id=ppv.value_id') ->where('ppv.product_id='.$id) ->where('ppv.property_id in ('.implode(', ', $in). ')'); $db->setQuery($query); $values = $db->loadObjectList(); foreach ($values as $v) { if (isset($row->properties[$v->property_id])) { $row->properties[$v->property_id]->values[$v->value_id] = $v; } } } } if (empty($row->folder)) $row->folder='products'; if (empty($row->filename)) $row->filename='no.jpg';    $query=$db->getQuery(true); $query->select('count(id)')->from('#__ksenmart_products'); $query->where('parent_id='.$row->id); $db->setQuery($query); $row->is_parent=$db->loadResult();    if ($row->product_packaging==0) $row->product_packaging=1; if (round($row->product_packaging)/$row->product_packaging==1) $row->product_packaging=round($row->product_packaging); $row->link = JRoute::_('index.php?option=com_ksenmart&view=shopproduct&id='.$row->id.':'.$row->alias); $row->price=KsenMartHelper::getPriceInDefaultCurrency($row->price,$row->price_type); $row->val_price_wou = KsenMartHelper::getPriceWithDiscount($row->price,2); if ($row->val_price_wou<0) $row->val_price_wou=0; $row->val_price = KsenMartHelper::showPriceWithTransform($row->val_price_wou); $row->old_price=KsenMartHelper::getPriceInDefaultCurrency($row->old_price,$row->price_type); $row->val_old_price_wou = KsenMartHelper::getPriceWithDiscount($row->old_price,2); if ($row->val_old_price_wou<0) $row->val_old_price_wou=0;    $row->val_old_price = KsenMartHelper::showPriceWithTransform($row->val_old_price_wou);    $row->val_diff_price_wou=$row->val_old_price_wou-$row->val_price_wou; $row->val_diff_price = KsenMartHelper::showPriceWithTransform($row->val_diff_price_wou);    $row->mini_small_img=KsenMartHelper::createProductThumb($row->filename,$row->folder,$params->get('mini_thumb_width'),$params->get('mini_thumb_height')); $row->mini_small_img_div_style=KsenMartHelper::getThumbDivStyle($params->get('mini_thumb_width'),$params->get('mini_thumb_height')); $row->mini_small_img_img_style=KsenMartHelper::getThumbImgStyle($params->get('mini_thumb_width'),$params->get('mini_thumb_height'),json_decode($row->params,true),$row->mini_small_img);    $row->small_img=KsenMartHelper::createProductThumb($row->filename,$row->folder,$params->get('thumb_width'),$params->get('thumb_height')); $row->small_img_div_style=KsenMartHelper::getThumbDivStyle($params->get('thumb_width'),$params->get('thumb_height')); $row->small_img_img_style=KsenMartHelper::getThumbImgStyle($params->get('thumb_width'),$params->get('thumb_height'),json_decode($row->params,true),$row->small_img);    $row->img=KsenMartHelper::createProductThumb($row->filename,$row->folder,$params->get('middle_width'),$params->get('middle_height')); if (!empty($row->folder)) $row->img_link = JURI::root().'media/ksenmart/images/'.$row->folder.'/original/'.$row->filename;    else    $row->img_link = JURI::root().'media/ksenmart/images/products/no.jpg';    $row->add_link_cart = KsenMartHelper::getAddToCartLink($row->price,2); }    return $row; } function getProductManufacturer($id) { $params = JComponentHelper::getParams('com_ksenmart'); $db = JFactory::getDbo(); $query=$db->getQuery(true); $query->select('m.*,f.filename,f.folder')->from('#__ksenmart_manufacturers as m'); $query->join("LEFT","#__ksenmart_files as f on m.id=f.owner_id and f.owner_type='manufacturer'");    $query->where('m.id='.$id); $db->setQuery($query); $row=$db->loadObject(); if (count($row)>0) { if ($row->filename!='') $row->img=JURI::root().'media/ksenmart/images/'.$row->folder.'/original/'.$row->filename; $query=$db->getQuery(true); $query->select('*')->from('#__ksenmart_countries'); $query->where('id='.$row->country); $db->setQuery($query); $row->country=$db->loadObject();    }    return $row; } private static $_products_properties = array(); private static $_products_properties_idx = array(); public static function fetchProductProperties($product){ if (empty(self::$_products_properties)){ $db = JFactory::getDbo(); $db->setQuery( "select kp.*, kpp.value, kpp.product, kpp.price,kpp.count,kpp.code FROM #__ksenmart_properties AS kp, #__ksenmart_product_properties AS kpp where kp.id = kpp.property_id AND kp.type != 'checkbox' AND kp.filter_count >0 AND kp.in_filter =1 AND kpp.value != '' ORDER BY kp.ordering" ); self::$_products_properties = $db->loadObjectList('id'); foreach (self::$_products_properties as $k=>$v){ self::$_products_properties_idx[$k] = $v->product; } } $search = $product->id; $keys = array_keys(self::$_products_properties_idx, $search); $ret = array(); if (!empty($keys)){ foreach ($keys as $k){ $ret[] = self::$_products_properties[$k]; } } return $ret; } function getCouponDiscount($price,$coupon_id) { $db=JFactory::getDBO(); $diff=0; $price_with_discount=0; $query="select * from #__ksenmart_discounts where id='$coupon_id'"; $db->setQuery($query); $discount=$db->loadObject(); if (count($discount)>0) { if ($discount->discount_type==1) $price_with_discount=$price-$discount->discount; else $price_with_discount=round($price*(100-$discount->discount)/100,2); $diff=$price-$price_with_discount; } return $diff; } function updateOrderGroupDiscount($order_id) { $db=JFactory::getDBO(); $query="select * from #__ksenmart_order_items where order_id='$order_id'"; $db->setQuery($query); $order_items=$db->loadObjectList(); $group_discount=0; foreach($order_items as $order_item) { //$group_discount+=($order_item->price-KsenMartHelper::getPriceWithDiscount($order_item->price,2))*$order_item->count; $group_discount+=(KsenMartHelper::getPriceWithoutDiscount($order_item->price,2)-$order_item->price)*$order_item->count; } $query="update #__ksenmart_orders set group_discount='$group_discount' where id='$order_id'"; $db->setQuery($query); $db->Query(); } function generateCode($length) { $arr = array('q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', 'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'z', 'x', 'c', 'v', 'b', 'n', 'm', 'Q', 'W', 'E', 'R', 'T', 'Y','U', 'I', 'O', 'P', 'A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L', 'Z', 'X', 'C', 'V', 'B', 'N', 'M', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'); $password = ''; for ($i = 0; $i < $length; $i++) { $index = rand(0, count($arr) - 1); $password .= $arr[$index]; } return $password; } private static $_categories = array(); private static $_categories_children = array(); public function getChildrenCategories($id) { if (empty(self::$_categories)) { $db = JFactory::getDbo(); $db->setQuery("select * from #__ksenmart_categories where published=1 order by parent, ordering "); self::$_categories = $db->loadObjectList('id'); $top_parent = (object) array( 'id'=>0, 'children'=>array() ); self::$_categories_children = array($top_parent); foreach (self::$_categories as $k=>$v){ $v->children = array(); self::$_categories_children[$k] = $v; self::$_categories_children[$v->parent]->children[$k] = $v; } } $ret = array(); $category = self::$_categories_children[$id]; if (!empty($category->children)){ $ret = array_merge($ret, array_keys($category->children)); foreach ($category->children as $child){ $ret = array_merge($ret, self::getChildrenCategories($child->id)); } } return $ret; } public static function createProductThumb($file,$folder, $width=0, $heigth=0,$iparams=array()) { $params = JComponentHelper::getParams('com_ksenmart'); if (!isset($iparams['displace'])) $iparams['displace']=$params->get('displace',0); if (!isset($iparams['watermark'])) $iparams['watermark']=$params->get('watermark',0); if (!isset($iparams['halign'])) $iparams['halign']=$params->get('halign','center'); if (!isset($iparams['valign'])) $iparams['valign']=$params->get('valign','middle');    $dst_file=basename($file); foreach($iparams as $iparam) $dst_file=$iparam.'-'.$dst_file; if (!class_exists('SimpleImage')){ require dirname(__FILE__).DS.'image.php' ; } if ($width === 0) { $width = $params->get('thumb_width'); } if ($heigth === 0 ) { $heigth = $params->get('thumb_height'); } $dst_path_segments = array('media','ksenmart', 'images', $folder, 'w'.$width.'x'.'h'.$heigth); $dst_path = JPATH_ROOT ; foreach ($dst_path_segments as $v){ $dst_path .= DS.$v; if (!JFolder::exists($dst_path)) { JFolder::create($dst_path); chmod($dst_path,0777); } } ($file != '')? $dst_filename = $dst_path.DS.$dst_file: $dst_filename = $dst_path.DS.'no.jpg'; if (!JFile::exists($dst_filename))    { if ($file != '') { $src_filename = JPATH_ROOT.DS.'media'.DS.'ksenmart'.DS.'images'.DS.$folder.DS.'original'.DS.basename($file);    } else { $src_filename = JPATH_ROOT.DS.'media'.DS.'ksenmart'.DS.'images'.DS.$folder.DS .'no.jpg'; } if (!JFile::exists($src_filename)){ $src_filename = JPATH_ROOT.DS.'media'.DS.'ksenmart'.DS.'images'.DS.$folder.DS .'no.jpg'; } $image = new SimpleImage($src_filename); if ($image->get_width()>$width || $image->get_height()>$heigth) { $ratio_in = $image->get_width()/$image->get_height();    if ($iparams['displace']==0) { $ratio_out = $width/$heigth; if ($ratio_in>$ratio_out){ $image->resize((int)$width*$ratio_in, $heigth); } else { $image->resize($width, $width/$ratio_in); } } else    { if ($width/$ratio_in>$heigth) $image->resize($heigth*$ratio_in, $heigth); else    $image->resize($width, $width/$ratio_in); } }    //$image->best_fit($size['w'], $size['h']); if (false) { //$wmimage = new SimpleImage(JPATH_ROOT.DS.'images'.DS.'ksenmart'.DS.'watermark.png') ; //$ratio = $image->get_width()/$wmimage->get_width(); //$wmimage->resize($image->get_width(), (int)$wmimage->get_height()*$ratio); //$wmimage->save($dst_path.DS.'watermark.png'); //TODO: сделать параметры, задаваемые РІ админке //$image->overlay($dst_path.DS.'watermark.png', 'bottom', 0.7); ///$image->overlay(JPATH_ROOT.DS.'images'.DS.'ksenmart'.DS.'watermark.png'); } $image->save($dst_filename); } return JURI::root(). str_replace(JPATH_ROOT.DS, '', $dst_filename); } function getThumbDivStyle($width=0,$heigth=0) { $params = JComponentHelper::getParams('com_ksenmart'); if ($width === 0) { $width = $params->get('thumb_width'); } if ($heigth === 0 ) { $heigth = $params->get('thumb_height'); } $style=array(); $style[]='width:'.$width.'px!important'; $style[]='height:'.$heigth.'px!important'; $style[]='overflow:hidden!important'; $style[]='display:inline-block!important'; return implode(';',$style); } function getThumbImgStyle($width=0,$heigth=0,$iparams=array(),$img) { $params = JComponentHelper::getParams('com_ksenmart'); if (!isset($iparams['displace'])) $iparams['displace']=$params->get('displace',0); if (!isset($iparams['watermark'])) $iparams['watermark']=$params->get('watermark',0); if (!isset($iparams['halign'])) $iparams['halign']=$params->get('halign','center'); if (!isset($iparams['valign'])) $iparams['valign']=$params->get('valign','middle');    if ($width === 0) { $width = $params->get('thumb_width'); } if ($heigth === 0 ) { $heigth = $params->get('thumb_height'); } $sizes=getimagesize($img); switch ($iparams['halign']) { case 'left':$marginL=0;break; case 'center':$marginL=round(($width-$sizes[0])/2);break; case 'right':$marginL=round($width-$sizes[0]);break; } switch ($iparams['valign']) { case 'top':$marginT=0;break; case 'middle':$marginT=round(($heigth-$sizes[1])/2);break; case 'bottom':$marginT=round($heigth-$sizes[1]);break; }    $style=array(); $style[]='margin-left:'.$marginL.'px!important'; $style[]='margin-top:'.$marginT.'px!important'; return implode(';',$style); }    } ?>addItem('','index.php?option=com_ksenmart'); } public static function getInstance() { if (empty(self::$instance)) { $instance = new KsenMartPath(); self::$instance = & $instance; } return self::$instance; }    function addItem($text='',$link='') { $this->path_items[]=array('text'=>$text,'link'=>$link); } } ?>getQuery(true); $query->select('manifest_cache')->from('#__extensions')->where('name="ksenmart"'); $db->setQuery($query); $manifest=$db->loadResult(); $manifest=json_decode($manifest,true); return $manifest[$key]; } function saveSetting($key='',$val='') { $db=JFactory::getDBO(); $query=$db->getQuery(true); $query->select('params')->from('#__extensions')->where('name="ksenmart"'); $db->setQuery($query); $params = json_decode($db->loadResult(),true); if (isset($params[$key])) { $params[$key]=$val; $query=$db->getQuery(true); $query->update('#__extensions')->set('params='.$db->quote(json_encode($params)))->where('name="ksenmart"'); $db->setQuery($query);    $db->Query(); } } }    ?>setQuery($query); $db->Query(); $k++; } } function resizeComponents() { $db=JFactory::getDBO(); $component_size=JRequest::getVar('component_size'); foreach($component_size as $component) { $query="update #__ksenmart_components set size='$component[1]' where id='$component[0]'"; $db->setQuery($query); $db->Query(); } }    function getComponents() { $db=JFactory::getDBO(); $component_type=JRequest::getVar('component_type','trade'); $query="select kc.* from #__ksenmart_components as kc,#__ksenmart_component_types as kct where kct.name='$component_type' and kc.type=kct.id and kc.panel=1 and kc.published=1 order by ordering"; $db->setQuery($query); $components=$db->loadObjectList(); for($i=0;$iname.'.png')) $components[$i]->image=JURI::root().'/media/ksenmart/images/icons/'.$components[$i]->name.'.png'; else    $components[$i]->image=JURI::root().'/media/ksenmart/images/icons/module.png'; } return $components; } }    ?>setQuery($query); $total=$db->loadResult();    $query="select kp.*,(select file from #__ksenmart_images where owner_type=kp.type and owner_id=kp.id order by ordering limit 1) as image from #__ksenmart_products as kp where 1 $where order by kp.$params[sort_type] $params[sort_dir] limit $params[limitstart],$params[limit]"; $db->setQuery($query); $products=$db->loadObjectList();    for($k=0;$ktype}s/"; $products[$k]->val_price = KsenMartHelper::getPriceInDefaultCurrencyWithTransform($products[$k]->price,$products[$k]->price_type);    $products[$k]->val_price_wou = KsenMartHelper::getPriceInDefaultCurrency($products[$k]->price,$products[$k]->price_type);    $products[$k]->img = $IMG_CONNETC."30_30/".$products[$k]->image; }    } }    ?>get('license'); return self::curlResponse(self::UPDATE_SERVER.'?action=check_license&license='.$params->get('license','').'&domen='.$_SERVER['HTTP_HOST']); } function checkUpdates() { $db=JFactory::getDBO(); $core_newest_version=self::curlResponse(self::UPDATE_SERVER.'?action=get_last_version&type=core&name=ksenmart'); $core_current_version=KMCommonFunctions::getManifest('version'); if ($core_newest_version!=$core_current_version) return true; $query="select name,version from #__ksenmart_components";    $db->setQuery($query); $components=$db->loadObjectList(); foreach($components as $component) { $component_newest_version=self::curlResponse(self::UPDATE_SERVER.'?action=get_last_version&type=component&name='.$component->name); if ($component->version!=$component_newest_version)    return true; } $query="select name,version from #__ksenmart_modules";    $db->setQuery($query); $modules=$db->loadObjectList(); foreach($modules as $module) { $module_newest_version=self::curlResponse(self::UPDATE_SERVER.'?action=get_last_version&type=module&name='.$module->name); if ($module->version!=$module_newest_version)    return true; }    return false; } function getUpdates() { $db=JFactory::getDBO(); $updates=array(); $core_newest_version=self::curlResponse(self::UPDATE_SERVER.'?action=get_last_version&type=core&name=ksenmart'); $core_current_version=KMCommonFunctions::getManifest('version'); if ($core_newest_version!=$core_current_version) $updates[]=array('type'=>'core','name'=>'ksenmart','current_version'=>$core_current_version,'new_version'=>$core_newest_version); $query="select name,version from #__ksenmart_components";    $db->setQuery($query); $components=$db->loadObjectList(); foreach($components as $component) { $component_newest_version=self::curlResponse(self::UPDATE_SERVER.'?action=get_last_version&type=component&name='.$component->name); if ($component->version!=$component_newest_version)    $updates[]=array('type'=>'component','name'=>$component->name,'current_version'=>$component->version,'new_version'=>$component_newest_version); } $query="select name,version from #__ksenmart_modules";    $db->setQuery($query); $modules=$db->loadObjectList(); foreach($modules as $module) { $module_newest_version=self::curlResponse(self::UPDATE_SERVER.'?action=get_last_version&type=module&name='.$module->name); if ($module->version!=$module_newest_version)    $updates[]=array('type'=>'module','name'=>$module->name,'current_version'=>$module->version,'new_version'=>$module_newest_version); }    return $updates;    } function updatePart($component,$active) { if ($component!='') { $db=JFactory::getDBO(); $query="select value from #__ksenmart_settings where name='update_parts'";    $db->setQuery($query); $update_parts=$db->loadResult(); if ($active==1) $update_parts.=$component.';'; else    $update_parts=str_replace($component.';','',$update_parts); $query="update #__ksenmart_settings set value='$update_parts' where name='update_parts'";    $db->setQuery($query); $db->query();    } } function downloadUpdateKsenmart() { $params = JComponentHelper::getParams('com_ksenmart'); $license = $params->get('license');    $postdata = http_build_query( array( 'versions' => KMUpdaterFunctions::serializeVersions() ) ); $update=self::curlResponse(self::UPDATE_SERVER.'?action=get_update&license='.$license.'&domen='.$_SERVER['HTTP_HOST'],$postdata); if ($update!='false') { header("Content-type: application/zip"); header("Content-Disposition: attachment; filename=update".date('-Y-m-d-H-i-s').".zip"); echo $update; } return false; }    function updateKsenmart() { $params = JComponentHelper::getParams('com_ksenmart'); $license = $params->get('license');    $postdata = http_build_query( array( 'versions' => KMUpdaterFunctions::serializeVersions() ) ); $updates_dir=JPATH_COMPONENT.'/tmp/updates/'; $update=self::curlResponse(self::UPDATE_SERVER.'?action=get_update&license='.$license.'&domen='.$_SERVER['HTTP_HOST'],$postdata); if ($update!='false') { JFolder::delete($updates_dir);    JFolder::create($updates_dir,0777); $update_zip=$updates_dir.'update'.date('-Y-m-d-H-i-s').'.zip'; file_put_contents($update_zip,$update); $zip = new ZipArchive; $result = JArchive::extract(JPath::clean($update_zip), JPath::clean($updates_dir)); if (file_exists($update_zip)) unlink($update_zip); $updates=scandir($updates_dir);    foreach($updates as $update) { if ($update!='.' && $update!='..') { $update_dir=str_replace('.zip','',$update); JFolder::create($updates_dir.$update_dir,0777);    $result = JArchive::extract($updates_dir.$update, $updates_dir.$update_dir); if (file_exists($updates_dir.$update_dir.'/install.php')) include($updates_dir.$update_dir.'/install.php'); JFolder::delete($updates_dir.$update_dir);    if (file_exists($updates_dir.$update)) unlink($updates_dir.$update); } } } return false; } function serializeVersions() { $db=JFactory::getDBO(); $versions['ksenmart']=KMCommonFunctions::getSettingsValue('version'); $query="select name,version from #__ksenmart_components";    $db->setQuery($query); $components=$db->loadObjectList(); foreach($components as $component) $versions[$component->name]=$component->version; $query="select name,version from #__ksenmart_modules";    $db->setQuery($query); $modules=$db->loadObjectList(); foreach($modules as $module) $versions[$module->name]=$module->version;    return serialize($versions); }    function updateComponentVersion($component,$version) { $db=JFactory::getDBO(); $query="update #__ksenmart_components set version='$version' where name='$component'"; $db->setQuery($query); $db->query(); } public static function sendShopEmail() { $params = JCompon
« Последнее редактирование: 15.06.2013, 19:13:08 от ifx »
*

SDKiller

  • Живу я здесь
  • 2705
  • 329 / 5
  • ...ergo sum
Re: Проблемы при установке
« Ответ #23 : 15.06.2013, 19:09:55 »
*

ifx

  • Осваиваюсь на форуме
  • 28
  • 4 / 0
Re: Проблемы при установке
« Ответ #24 : 15.06.2013, 19:23:11 »
http://joomlaforum.ru/index.php/topic,266738.msg1339256.html#msg1339256
Капец. Заработало наконец. Большое спасибо!
А то блин, ни системных требований, ни ФАКа с ошибками, ничего нет, сиди гадай, что где когда.

еще раз спасибо.
*

SDKiller

  • Живу я здесь
  • 2705
  • 329 / 5
  • ...ergo sum
Re: Проблемы при установке
« Ответ #25 : 15.06.2013, 19:27:33 »
А то блин, ни системных требований, ни ФАКа с ошибками, ничего нет, сиди гадай, что где когда.

Ну так тема есть - можете там высказать своё мнение
*

St@lker

  • Захожу иногда
  • 80
  • 0 / 0
Re: Проблемы при установке
« Ответ #26 : 31.10.2013, 18:47:39 »
При попытке установить последнюю актуальную версию на Joomla 1.5 - Ошибка! Не найден XML-файл установки Joomla!

Данный вопрос снимается, т.к. не работает на 1.5. Только сейчас заметил.

При попытке установки на J.2.5.x - просто белый экран. Как бы ничего не происходит ...

В обоих случаях файлы не создаются, в базу ничего не пишется.
*

ldmco

  • Moderator
  • 267
  • 28 / 1
  • ksenmart.ru
Re: Проблемы при установке
« Ответ #27 : 30.11.2013, 15:32:23 »
При попытке установить последнюю актуальную версию на Joomla 1.5 - Ошибка! Не найден XML-файл установки Joomla!

Данный вопрос снимается, т.к. не работает на 1.5. Только сейчас заметил.

При попытке установки на J.2.5.x - просто белый экран. Как бы ничего не происходит ...

В обоих случаях файлы не создаются, в базу ничего не пишется.

Надеяться что будет работать на 1.5 даже не стоит :)
А вот по поводу 2.5 должно работать, вообще на днях выпускаем бетта версию третей версии Ксенмарта, она более грамотная. Но пока еще сыровата. Если есть жгучие желание запустить именно ту что в паблике лежит, пишите в личку. У вас видимо что-то особенное на хостинге. У всех все ставится.
Я отвечаю на все сообщения, просто на некоторые - устно :)
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Ошибка 500 при установке на Windows Server

Автор Mishanya_V

Ответов: 0
Просмотров: 4936
Последний ответ 08.06.2016, 21:10:08
от Mishanya_V
Проблемы с установкой

Автор jurassik

Ответов: 45
Просмотров: 14102
Последний ответ 07.03.2015, 17:32:59
от Smith2007