0 Invalid address:

После обновления Joomla до 3.5.1, Virtuemart при оформлении заказа, выдает ошибку 0 Invalid address:

Это не полноценный багфикс, временное решение проблемы:

components/com_virtuemart/helpers/shopfunctionsf.php

Берем кусок кода:

if(!$noVendorMail) {
$replyTo[0] = $view->vendorEmail;
$replyTo[1] = $view->vendor->vendor_name;
$mailer->addReplyTo( $replyTo );
} else {
if(isset($view->orderDetails[‘details’]) and isset($view->orderDetails[‘details’][‘BT’])){
$replyTo[0] = $view->orderDetails[‘details’][‘BT’]->email;
$replyTo[1] = $view->orderDetails[‘details’][‘BT’]->first_name.’ ‘.$view->orderDetails[‘details’][‘BT’]->last_name;
} else {
if (isset($view->user->email) and $view->user->name) {
$replyTo[0] = $view->user->email;
$replyTo[1] = $view->user->name;
} else {
$replyTo[0] = $view->user[’email’];
$replyTo[1] = $view->user[‘name’];
}

}

$mailer->addReplyTo( $replyTo );
}

И меняем на:

if(!$noVendorMail) {
$replyTo[0] = $view->vendorEmail;
$nameReplyTo[0] = $view->vendor->vendor_name;
//$replyTo[1] = $view->vendor->vendor_name;

if ( version_compare( JVERSION, ‘3.0’, ‘<‘ ) == 1) {
$replyTo[1] = $nameReplyTo[0];
$mailer->addReplyTo( $replyTo);
}
else
{
$mailer->addReplyTo( $replyTo, $nameReplyTo );
}

} else {
if(isset($view->orderDetails[‘details’]) and isset($view->orderDetails[‘details’][‘BT’])){
$replyTo[0] = $view->orderDetails[‘details’][‘BT’]->email;
$nameReplyTo[0] = $view->orderDetails[‘details’][‘BT’]->first_name.’ ‘.$view->orderDetails[‘details’][‘BT’]->last_name;
} else {
if (isset($view->user->email) and $view->user->name) {
$replyTo[0] = $view->user->email;
$nameReplyTo[0] = $view->user->name;
} else {
$replyTo[0] = $view->user[’email’];
$nameReplyTo[0] = $view->user[‘name’];
}

}
if (!empty($replyTo)) {
if ( version_compare( JVERSION, ‘3.0’, ‘<‘ ) == 1) {
$replyTo[1] = $nameReplyTo[0];
$mailer->addReplyTo( $replyTo );
}
else
{
$mailer->addReplyTo( $replyTo, $nameReplyTo );
}
}
}

Если это не помогло. Меняем libraries/joomla/mail/mail.php на то же, из более старой версии.

Как сэкономить 10-20т.р.

Рецепт для ИП.

Идем сюда:
http://novosibstat.gks.ru/wps/wcm/connect/rosstat_ts/novosibstat/ru/reporting/statistical_reports/form_blanks/ad49b8004a5f647c8852e8758571d025

Качаем бланк во вложении, заполняем и несемся во всю прыть в местный отдел статистики, не обязательно на Каинскую ехать, сдавать заполненное до 1.04.16 Если не успели, обещают штраф 10-20т.р.

Свой ОКПО можно узнать тут:
http://кодыросстата.рф/54stat.html

Virtuemart3 вывод категорий с подкатегориями на главной.

В VM уже есть готовый функционал, который надо только красиво оформить. Берем стандартный модуль VM3 выводящий категории с подкатегориями.

1. Клонируем модуль вывода категорий в админке;
2. Публикуем скопированный модуль в нужной позиции + назначаем ему шаблон «All»;
3. Редактируем шаблон All (не забываем его сложить в наш основной шаблон, чтобы при обновлении он не умер)

Вместо кода:

< ?php echo $active_menu ? >
< div >
< ?php echo JHTML::link($caturl, $cattext); ? >
< /div >

Вставляем код:

< li class="kkk" >
< div >
< div class="kkkimg" >< ?php echo $category- >images[0]- >displayMediaThumb(«»,false);? >< /div >
< ?php echo JHTML::link($caturl, $cattext); ? >
< /div >
< hr/ >

4. В файл стилей дописываем:

.kkk img {
max-width: 25px;
max-height: 25px;
}
.kkkimg {
float: left;
margin: 0 3px 3px;
}
.kkk {
float: left;
width: 30%;
display: block;
margin: 5px 5px 0 0;

}
.kkk li {
list-style: none;
}
.kkk a {
display: block;
margin: 12px 0 10px 0;
font-size: 16px;
line-height: 16px;
}
.kkk li a {
font-size: 14px;
line-height: 12px;
padding: 3px 0 0 0;
margin: 0;
}

5. Добавляем картинки категориям верхнего уровня.

В результате будет как-то так:

Открытия 2015

Trello — удобная, мобильная и бесплатная склерозница + грандиозное кладбище великих начинаний.

WhatsApp — куда ж без него. СМС и Viber похоже умирают. Старичок Skype — еще держится. И на сцену выходит Вконтакте. Через контакт изрядное число клиентов привыкло общаться.

Настольные игры. Голова отлично расслабляется и отдыхает от рабочих задач. А процесс самостоятельного изготовления настолок Print And Play — замечательная терапия. (кстати, в Метро CC, есть бюджетный ламинатор и пленки к нему).

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

Перфоратор — больше сотни гнезд под розетки, больше 100м. штроб. В перфораторе главное не жалеть денег на респиратор, защитные очки и смазывать насадки.

Push ups — простые и бесплатные приложения для тренировки отжиманий. Оказались отличной альтернативой тупняку на развлекательных ресурсах в рабочих перерывах.

Гигиенический душ — тема не часто поднимаемая в приличном обществе, но чистая задница — это здорово. Никакая туалетная бумага и даже влажные салфетки с этим не сравнится. Есть правда минус. При длительном использовании г.д., общественные туалеты порой причиняют реальный батхёрт.

Делаем красиво, добавляем разряды к цене в Virtuemart

Открываем шаблон карточки товара, шаблон категории, шаблон модуля выводящего товар и т.д. и вставляем после вывода цены код:

<script>
var str = $(‘.product-price’).text();
$(‘.product-price’).html(str.replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, ‘$1 ‘));
</script>

Дополнительно, надо подключить jquery, если этого уже не сделано.

Если все правильно сделали, ваши унылые цены 1000000₽, превратятся в шикарные 1 000 000 ₽.

Virtuemart 3 — Лечим отправку письма покупателю.

В новой версии VM убрали возможность устанавливать отправку писем покупателю при статусе заказа «В ожидании» (pending). Разработчики вообще убрали статус «в ожидании» с отправки писем покупателю. Причина этому есть, объяснять не буду, кому интересно, можно посмотреть форум поддержки

Для решения проблемы достаточно в способе оплаты поставить любой из оставшихся статусов заказа…

Убираем вывод категорий при поиске в Virtuemart 3

templates/шаблон/html/com_virtuemart/category/default.php

Примерно 43 строка:

// Show child categories
if (VmConfig::get (‘showCategory’, 1) and empty($this->keyword)) {
if (!empty($this->category->haschildren)) {

echo ShopFunctionsF::renderVmSubLayout(‘categories’,array(‘categories’=>$this->category->children));

}
}

Ахалай, махалай:

$search=$_GET[‘search’]; //читаем переменную $search
if ($search != «true») { //если $search есть, а при поиске она есть и равна «true», категории не выводим
// Show child categories
if (VmConfig::get (‘showCategory’, 1) and empty($this->keyword)) {
if (!empty($this->category->haschildren)) {

echo ShopFunctionsF::renderVmSubLayout(‘categories’,array(‘categories’=>$this->category->children));

}
}
}

Обозначенный метод тестировался так же с модулем Virtuemart Param Filter — прекрасно работает.

Они определенно не хотят моих денег.

На официальном сайте ПФ РФ
http://www.pfrf.ru/branches/altai/news/~2015/01/27/83997

Пенсионный фонд РФ, на финансирование страховой части трудовой пенсии
КБК 392 1 02 02140 06 1000 160

Федеральный фонд обязательного медицинского страхования
КБК 392 1 02 02101 08 1011 16

Сущая безделица. У 2-го КБК не хватает нолика в конце.

Нет повести печальнее на свете. Как лечить взлом сайта — продолжение.

История. Звонит клиент, при заходе на часть страниц сайта, Аваст ругается на малваре. При этом остальные антивирусы молчат.

Полез разбираться, полуавтоматом просканировал код сайта, ничего не нашел. Полез смотреть в код страницы, опять ничего подозрительного. Уже начал ругать Аваст, а зря. Как выяснилось, зловредный код прятался в статьях и модулях джумлы. Что само по себе необычно, т.к. последствия взлома обычно вылезают в других местах.

В итоге подозрения пали на дворецкого прошлого менеджера, который ушел не очень красиво и после которого естественно никто не сменил пароли. И который накидал со злости навоза гадости в материалы и текстовые модули.

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

Кстати, мегаполезный инструмент: http://antivirus-alarm.ru Сканирует страницы по разным вирусным базам (и Авастовской тоже).

Рекомендую.


Почему не стоить экономить на регистрации домена.

Зачем платить регистратору деньги за домен, когда можно получить его бесплатно у хостера по акции? Ответ простой: Экономя пару сотен на домене, получаешь бомбу замедленного действия. Когда бизнес маленький, приносит не много и не стабильно, простой в час или день не смертелен. Но когда весь бизнес завязан на сайте и через сайт проходят крупные транзакции, активно продается сервис и т.д., даже часовой простой грозит финансовыми и репутационными потерями.


http://habrahabr.ru/post/265711/

Сегодня утром ряд клиентов, поддержку веб-серверов которых я осуществляю, получили письма счастья о смене ДНС серверов:

Домен:

domain: *******.RU
admin-o: *******-GPT
nserver: ns-*******.awsdns-34.org
nserver: ns-*******.awsdns-58.com
nserver: ns-*******.awsdns-12.net
nserver: ns-*******.awsdns-30.co.uk
state: REGISTERED, DELEGATED
created: 29-11-2011
changed: 30-08-2015
paid-till: 29-11-2015
mnt: TIMEWEB-MNT-GPT
source: R01

заменен на:

domain: *******.RU
admin-o: *******-GPT
nserver: ns1.hostingnewfree.ru
nserver: ns2.hostingnewfree.ru
state: REGISTERED, DELEGATED
created: 29-11-2011
changed: 30-08-2015
paid-till: 29-11-2015
mnt: TIMEWEB-MNT-GPT
source: R01



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

Итак, первое письмо пришло около 6 утра по московскому времени, 30 августа.

1) Пробуем на сайте r01.ru зайти в раздел «Вход для клиентов», переход по ссылке радует циклической переадресацией и ошибкой браузера.

2) Звоним в r01.ru, грустный молодой человек сообщает, что о проблеме с разделом они знают, нужно ждать 6-8 часов.

3) Тот-же самый грустный молодой человек сообщает, что о проблеме с доменами зарегистрированными партнером TIMEWEB они также знают, и нужно ждать те-же 6-8 часов, после которых днс вернутся в прежнее состояние.

4) Пишем в чат поддержки тайвеба, получаем не очень ободряющий ответ:


5) Сайты начинают резолвится на левые ip адреса и выпадать из поиска яндекса.

6) На 12:00 по мск панель r01.ru заработала, однако попытка изменить днсы выдает сообщение:
Задание для этого домена уже имеется в очереди


7) Один из клиентов уже сообщает о потери 300 тысяч рублей (снижение продаж в одном из интернет-магазинов), а некоторые жалуются на появившиеся баннеры, предлагающие удлинить член на 10 см за 4 дня. Что дальше и кто будет компенсировать это?

Как и в посте habrahabr.ru/post/265699 все веб-кластеры, репликации и прочие вещи оказываются бесполезными, против «ждите 6-8 часов» от регистратора.

На 12:30 по мск, whois начинают возвращать правильные днс.

Саппорт таймвеба сообщает о:

Действительно, сегодня утром злоумышленниками была произведена смена NS серверов для некоторых доменных имен.



9) На 13:00 по мск, partner.r01.ru работает в режиме панели Шрёдингера.


Экономия на доменах до добра не доводит.
Лично я, для своих проектов и проектов своих клиентов, с 2006 года регистрирую домена в РУ-центре.
9 лет, полет нормальный.