Отзывы с оценкой товара - доработка сниппета Решено

Дополнение: Tickets

Тут Тыц в комментах указано решение. Сделал всё как описано — всё работает, за исключением подсчёта средней оценки.
Сниппет:
<?php
$sql = "SELECT C.properties AS prop FROM modx_tickets_comments C LEFT JOIN modx_tickets_threads D
ON C.thread=D.id WHERE D.resource = ".$id;
$q = $modx->prepare($sql);
$q->execute(array(0));
$arr = $q->fetchAll(PDO::FETCH_ASSOC);
foreach ($arr as $arr_one) {
    $tmp = json_decode($arr_one["prop"], true)["starrating"];
    $all[] = $tmp;
}
$middle = number_format(array_sum($all)/count($all), 1, '.', '' );
if (count($all) == 0) {
   $result = ""; 
} else {
$result = '<span itemprop="review" itemscope itemtype="http://data-vocabulary.org/Review-aggregate"><span class="stars"
 itemprop="rating">'.$middle.'</span>Рейтинг '.$middle.' на основе <span itemprop="count">'.count($arr).'</span> отзывов</span>';
}
$modx->setPlaceholders(array(
   'rating' => $result,
   'ratingCount' => "(".count($all).")"
));

отказывается работать — пишет что ошибка в 8 строке:

Parse error: syntax error, unexpected '[' in /core/cache/includes/elements/modsnippet/103.include.cache.php on line 8
Кто сможет помочь? Небольшое материальное вознаграждение гарантирую)
25 августа 2016, 10:36    Сергей   
0    330 0

Комментарии (4)

  1. Алексей Ерохин 25 августа 2016, 17:32 # 0
    json_decode($arr_one["prop"], true)["starrating"];
    Такая конструкция появилась только в php 5.4. Проверьте, что у вас на сервере используется
    1. Алексей Ерохин 25 августа 2016, 17:49 # 0
      *начиная с php 5.4 (опечатка)
      1. Сергей 26 августа 2016, 14:05 # 0
        Спасибо) Поменял PHP, ошибка пропала. Но теперь вообще ничего не происходит)
        Вас готов отблагодарить. Отпишитесь на почту пожалуйста)
        1. Сергей 27 августа 2016, 22:24 # 0
          Разобрался сам — вызывается вот так:
          [[!starrating-middle? &id=`[[*id]]`]]
                       [[+rating]]
          Где starrating-middle — название сниппета
    Вы должны авторизоваться, чтобы оставлять комментарии.