public function updateRating($data) { $user = JFactory::getUser(); $created = JFactory::getDate()->toSql(); $criteriaArray = isset($data['criteria_array']) ? $data['criteria_array'] : array(); $docId = $data['doc_id']; $commentId = $data['comment_id']; $ratingObj = $this->getRating($docId, $commentId); $ratingId = $ratingObj->id; $ratingScoreOld = $ratingObj->score; $ratingScoreNew = JUDownloadFrontHelperRating::calculateRatingScore($data, $docId, $criteriaArray); $dataRating = array( 'id' => $ratingId, 'user_id' => $user->id, 'comment_id' => $commentId, 'score' => $ratingScoreNew, 'created' => $created, 'doc_id' => $docId ); JTable::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_judownload/tables'); $ratingTable = JTable::getInstance('Rating', 'JUDownloadTable'); $ratingTable->bind($dataRating); if (!$ratingTable->check()) { return false; } $ratingStore = $ratingTable->store(); if (!$ratingStore) { return false; } if ($ratingStore && count($criteriaArray) > 0) { $oldCriteriaIdArr = $this->getCriteriasId($ratingId); $criteriaIdArr = array(); foreach ($criteriaArray AS $criteria) { $criteriaIdArr[] = $criteria->id; } $flagUpdate = false; if (count(array_diff($criteriaIdArr, $oldCriteriaIdArr)) == 0) { $flagUpdate = true; } if ($flagUpdate == false) { $this->deleteCriteriasByRatingId($ratingId); } foreach ($criteriaArray AS $criteria) { if ($flagUpdate == true) { $this->updateCriteriaValue($ratingId, $criteria->id, $criteria->value); } else { JUDownloadMultiRating::insertCriteriaValue($ratingId, $criteria->id, $criteria->value); } } } $documentItem = JUDownloadHelper::getDocumentById($docId); $rating = (($documentItem->rating * $documentItem->total_votes) + $ratingScoreNew - $ratingScoreOld) / $documentItem->total_votes; $db = JFactory::getDbo(); $query = $db->getQuery(true); $query->update('#__judownload_documents'); $query->set('rating = ' . $rating); $query->where('id = ' . $docId); $db->setQuery($query); $db->execute(); $session = JFactory::getSession(); $timeNow = JFactory::getDate()->toSql(); $timeNowStamp = strtotime($timeNow); $inputCookie = JFactory::getApplication()->input->cookie; $config = JFactory::getConfig(); $cookie_domain = $config->get('cookie_domain', ''); $cookie_path = $config->get('cookie_path', '/'); $inputCookie->set('judl-document-rated-' . $docId, $timeNowStamp, time() + 864000, $cookie_path, $cookie_domain); $session->set('judl-document-rated-' . $docId, $timeNowStamp); $logData = array( 'user_id' => $user->id, 'event' => 'document.rate', 'item_id' => $docId, 'doc_id' => $docId, 'value' => $ratingScoreNew, 'reference' => $ratingTable->id ); JUDownloadFrontHelperLog::addLog($logData); return true; }