Итак, в файле сайт\components\com_jshopping\controllers\product.php как указывалось ранее, добавил
mail(email@email.ru, "тема", "текст");
Работает, но, естественно письмо идет сразу, до одобрения или публикации.
Пошел в админку, посмотрел какая функция отвечает за публикацию отзыва это
\administrator\components\com_jshopping\controllers\reviews.php
там три функции подряд начиная со строки 173:
Публикация
function publish(){
$this->_publish(1);
$this->setRedirect("index.php?option=com_jshopping&controller=reviews");
}
Отключение
function unpublish(){
$this->_publish(0);
$this->setRedirect("index.php?option=com_jshopping&controller=reviews");
}
И основная, которая публикует или отключает отзыв после определения параметра flag в первых двух.
function _publish($flag) {
$jshopConfig = JSFactory::getConfig();
$db = JFactory::getDBO();
$cid = JRequest::getVar('cid');
JPluginHelper::importPlugin('jshoppingadmin');
$dispatcher = JDispatcher::getInstance();
$dispatcher->trigger( 'onBeforePublishReview', array(&$cid, &$flag) );
foreach ($cid as $key => $value) {
$query = "UPDATE `#__jshopping_products_reviews` SET `publish` = '".$db->escape($flag)."' WHERE `review_id` = '".$db->escape($value)."'";
$db->setQuery($query);
$db->query();
$review = JTable::getInstance('review', 'jshop');
$review->load($value);
$product = JTable::getInstance('product', 'jshop');
$product->load($review->product_id);
$product->loadAverageRating();
$product->loadReviewsCount();
$product->loadQuestCount();
$product->store();
#unset($product);
unset($review);
}
$dispatcher->trigger('onAfterPublishReview', array(&$cid, &$flag) );
}
Добавил отправку письма в цикл foreach, сначало в первую функцию, потом в третью, разница в том что в первой письма отправляются только при публикации, а втретьем идут и при отключении комментария.
Условие сделал такое, как уже сказал добавил в цикл который выше():
$query = "SELECT * FROM teyzk_jshopping_products_reviews WHERE subscribe=product_id"; // сравнение двух полей
$db->setQuery($query);
$list = $db->loadObjectList();
foreach ($list as $item) {
mail($item->user_email, "Тема письма", "текст");
}
Долго думал как сделать "кому отправлять", в итоге решил сделать условием совпадение номера подписки и номера товара.
Но, помогите перехватить переменную "номера товара" для которого публикуется отзыв, а то письмо отправляется все подписчикам на уведомления.
Переменная $cid в третьем коде, перехватывается из параметра url из админки при публикации как я понял, и передает id самого отзыва.