Можно ли сделать, что бы оценку можно было давать раз в сутки. И как это сделать или хотя бы приблизительно где искать.
файл components\catalog\frontend.php
function ratingData($item_id){ $inCore = cmsCore::getInstance(); $inDB = cmsDatabase::getInstance(); $sql = "SELECT *, IFNULL(AVG(points), 0) as rating, COUNT(id) as votes FROM cms_uc_ratings WHERE item_id = $item_id GROUP BY item_id"; $result = $inDB->query($sql) ; if ($inDB->num_rows($result)){ $data = $inDB->fetch_assoc($result); } else { $data['rating'] = 0; $data['votes'] = 0; } return $data; } function buildRating($rating){ $inCore = cmsCore::getInstance(); $inDB = cmsDatabase::getInstance(); global $_LANG; $html = '<a href="#" title="'.$_LANG['RATING'].': '.$rating.'">'; for($r = 1; $r < 5; $r++){ $html .= '<img src="/images/ratings/starfull.gif" border="0" style="padding:0;border:0;margin:0" />'; } else { $html .= '<img src="/images/ratings/starhalf.gif" border="0" style="padding:0;border:0;margin:0" />'; } } $html .= '</a>'; return $html; } function alreadyVoted($item_id){ $inCore = cmsCore::getInstance(); $inDB = cmsDatabase::getInstance(); $ip = $_SERVER['REMOTE_ADDR']; $sql = "SELECT points FROM cms_uc_ratings WHERE item_id = $item_id AND ip = '$ip' LIMIT 1"; $result = $inDB->query($sql) ; if ($inDB->num_rows($result)){ $data = $inDB->fetch_assoc($result); return (int)$data['points']; } return false; } function ratingForm($ratingdata, $item_id){ $inCore = cmsCore::getInstance(); $inDB = cmsDatabase::getInstance(); $inUser = cmsUser::getInstance(); $userid=$inUser->id; global $_LANG; $html = ''; $html .= '<form name="rateform" action="" method="POST"><div class="uc_detailrating" style="margin:20px 0"><table><tr>' ."\n"; $html .= '<td width="90">'."\n"; $html .= '<strong>'.$_LANG['RATING'].':</strong> <span style="font-family:Georgia, Times New Roman, Times, serif; font-size:16px">'.round($ratingdata['rating'], 2).'</span>'."\n"; $html .= '</td>'."\n"; $html .= '<td width="100" valign="middle">'."\n"; $html .= buildRating($ratingdata['rating'])."\n"; $html .= '</td>'."\n"; $html .= '<td width="50">'."\n"; $html .= ''.$_LANG['VOTES'].': '."\n"; $html .= '</td>'."\n"; $html .= '<td width="40" valign="middle">'."\n"; $html .= '<span style="font-family:Georgia, Times New Roman, Times, serif; font-size:16px">'.$ratingdata['votes'].'</span>'."\n"; $html .= '</td>'."\n"; $userdata = $inDB->get_field('cms_uc_items', "id=$item_id", 'user_id'); if ($userdata==$userid) {} else { $html .= '<td width="100">'."\n"; $html .= '<strong>'.$_LANG['YOUR_VOTE'].':</strong>'."\n"; $html .= '</td>'."\n"; $html .= '<td width="" align=left> '."\n"; $myvote = alreadyVoted($item_id); if (!$myvote){ $html .= '<input type="hidden" name="rating" value="1"/>'."\n"; $html .= '<input type="hidden" name="item_id" value="'.$item_id.'"/>'."\n"; $html .= '<select name="points" style="width:50px" onchange="document.rateform.submit();">'."\n"; $html .= '<option value="-1"> -- </option>'."\n"; for($p=1; $p<=5; $p++) { $html .= '<option value="'.$p.'">'.$p.'</option>'."\n"; } $html .= '</select>'."\n"; } else { $html .= '<span style="font-family:Georgia, Times New Roman, Times, serif; font-size:16px">'.$myvote.'</span>'; } $html .= '</td>'."\n"; } $html .= '</tr></table></div></form>'."\n"; return $html; }
//////////////////////////// RATING SUBMISSION /////////////////////////////////////////////////////////////////// if ($inCore->inRequest('rating')){ $inUser = cmsUser::getInstance(); $user_id = $inUser->id; $points = $inCore->request('points', 'int', 0); $item_id = $inCore->request('item_id', 'int', 0); $ip = $_SERVER['REMOTE_ADDR']; if (!alreadyVoted($item_id)){ $inDB->query("INSERT INTO cms_uc_ratings (item_id, points, ip, user_id) VALUES ($item_id, $points, '$ip', '$user_id')") ; $inDB->query("DELETE FROM cms_uc_ratings WHERE item_id = $item_id AND ip = '0.0.0.0'") ; $url = $_SERVER['REQUEST_URI']; else echo ''; } }
то есть прописать права для пользователя 1 раз в сутки голосовать. как бы только это сделать)
я тут поднятие объявления один раз в сутки(т.е. просто обновлял дату на текущию) реализовывал. на основе этой функци… поглядите.
function upData($item_id){ $inCore = cmsCore::getInstance(); $inDB = cmsDatabase::getInstance(); $sql = "SELECT up FROM cms_uc_items WHERE id = $item_id"; $result = $inDB->query($sql) ; if ($inDB->num_rows($result)){ $up_data = $inDB->fetch_assoc($result); } else { $up_data['up'] = 0; } return $up_data; } function buildUp($up){ $inCore = cmsCore::getInstance(); $inDB = cmsDatabase::getInstance(); global $_LANG; $html = ''.$up.''; return $html; } function alreadyUp($item_id){ $inCore = cmsCore::getInstance(); $inDB = cmsDatabase::getInstance(); $inUser = cmsUser::getInstance(); $user_id = $inUser->id; $sql = "SELECT up FROM cms_uc_items WHERE id = '$item_id' AND user_id = '$user_id'"; $result = $inDB->query($sql) ; if ($inDB->num_rows($result)){ $up_data = $inDB->fetch_assoc($result); return (int)$up_data['up']; } return false; } function alreadyUp2($item_id){ $inCore = cmsCore::getInstance(); $inDB = cmsDatabase::getInstance(); $inUser = cmsUser::getInstance(); $user_id = $inUser->id; $sql = "SELECT up FROM cms_uc_items WHERE id = '$item_id' AND user_id = '$user_id'"; $result = $inDB->query($sql) ; if ($inDB->num_rows($result)){ $up_data = $inDB->fetch_assoc($result); return $up_data['up']; } return false; } function upForm($update, $item_id){ $inCore = cmsCore::getInstance(); $inDB = cmsDatabase::getInstance(); global $_LANG; $myup = alreadyUp($item_id); $html = ''; $html .= '<form name="upform" action="" method="POST" style="display:inline;margin-left:10px">' ."\n"; if (!$myup){ $html .= '<input type="hidden" name="item_id" value="'.$item_id.'"/>'."\n"; $html .= '<input type="hidden" name="update" value="'.$update.'"/>'."\n"; $html .= '<input type="button" onclick="document.upform.submit();" value="'.$_LANG['up'].'" style="font-size:14px">'."\n"; } if (alreadyUp2($item_id) == '0000-00-00') { $html .= '';} $html .= '<div class="o" style="padding:5px;background:yellow;float:left">'.$_LANG['up2'].'</div>'; } $html .= '<input type="hidden" name="item_id" value="'.$item_id.'"/>'."\n"; $html .= '<input type="hidden" name="update" value="'.$update.'"/>'."\n"; $html .= '<input type="button" onclick="document.upform.submit();" value="'.$_LANG['up'].'" style="font-size:14px">'."\n"; } else { $html .= alreadyUp2($item_id); } $html .= '</form>'."\n"; return $html; }
$upForm = upForm($updata, $item['id']);
$smarty->assign('upForm', $upForm);
и в базу заносим
if ($inCore->inRequest('update')){ $update = $inCore->request('update', 'str', 0); $item_id = $inCore->request('item_id', 'int', 0); $inDB->query("UPDATE cms_uc_items SET up='$update' WHERE id=$item_id") ; $url = $_SERVER['REQUEST_URI']; else echo ''; }
Интересует очень. Сделайте описание, пожалуйстап.с. если вдруг кого заинтиресует эта функция могу подробное описание сделать..