Solution Technologies
Управление сайтом без ограничений
<?php
/**
 * XS2:
 *
 * This file is developed by Solutecs, LLC for the purpose of the company
 * and is provided together with XS2 Framework as and inherent part of the
 * system. This file can be used on the terms of License Agreement.
 *
 * +7 (495) 585-0833 / 13 Rusakovskaya street, Moscow 107140 Russia
 *
 * @link http://www.solutecs.com
 * @copyright ©1998-2007 Solutecs, LLC
 * @package XS2-MODCOM
 * @subpackage proc-voting
 * @version 1.XX
 */



// Опция $delayTime: в течение какого времени пользователь
// не может голосовать повторно (в часах)
$delayTime = 24*3;

// Если в атрибуте не указан показываемый вопрос, выбирается самый свежий
if ($_THE['PARAMS'][0]) {
  $question = xs2GetNode(array('mod'=> 'voting', 'NodId'=> $_THE['PARAMS'][0]));
}
else {
  $questions = xs2GetNodes(array('mod'=> 'voting', 'NType'=> 'question', 'sort'=> 'CDate desc'));
  $question = $questions[0];
}

if ($question) {
  $answers = xs2GetChildren(array('ParId'=> $question['NodId'],
                                  'mod'=> 'voting',
                                  'NType'=> 'answer'));
  // Увеличиваем счетчик того варианта, который выбрал пользователь,
  // если он еще не голосовал по этому вопросу (или уже истекло время задержки)
  foreach($answers as $key=>$node) {
    if ('voteSend'==$_POST['action']
            && $node['NodId']==$_POST['answer']
            && $_COOKIE['vote'.$question['NodId']]!='y') {
      ++$answers[$key]['Counter'];
      xs2UpdateNode($answers[$key]);
      header("Pragma: no-cache");
      setcookie('vote'.$question['NodId'], 'y', (time()+($delayTime*3600)), '/');
    }
  }

  // Определяем общее число ответивших
  $sum = 0;
  foreach($answers as $key=>$node) {
    $sum += $node['Counter'];
  }
  foreach($answers as $key=>$node) {
    $answers[$key]['CounterPercent'] = ($sum > 0 ? ((100*$node['Counter'])/$sum) : 0);
  }

  $_HTML->assign('answers', $answers);
  $_HTML->assign('question', $question);
  $_HTML->assign('sum', $sum);

  // Если пользователь уже голосовал или еще не истекло время задержки, то выставляем флаг
  if (('voteSend'==$_POST['action']) || ('y'==$_COOKIE['vote'.$question['NodId']])) {
    $_HTML->assign('voteSended', true);
  }
}

?>
Copyright ©1998-2008 Солютекс. Все права защищены.
Этот сайт сделан в designLab | Работает на технологии XS2
Условия использования | О защите конфиденциальности