示例#1
0
 /**
  *
  * @param
  * @return
  */
 function vote($formData)
 {
     if (empty($formData['poll_id']) || empty($formData['quest'])) {
         return 'Пожалуйста, будьте внимательны при участии в опросе. Необходимо указать как минимум 1 вариант ответа.';
     }
     $poll_id = $formData['poll_id'];
     $PollData = new Zx_Db_Table_PollData();
     $PollLog = new Zx_Db_Table_PollLog();
     #echo "DEBUG:<br><textarea rows=10 cols=100>" . print_r($formData, 1) . "</textarea><br>";
     foreach ($formData['quest'] as $data_id => $v) {
         // check poll data
         $select = $PollData->select()->where('poll_id = ?', $poll_id)->where('id = ?', $data_id);
         $row = $PollData->getRow($select);
         #echo "DEBUG:<br><textarea rows=10 cols=100>" . print_r($row, 1) . "</textarea><br>";die;
         // check poll spamming
         $ips = Zx_FrontEnd::getIP();
         $select = $PollLog->select()->where('poll_id = ?', $poll_id)->where('data_id = ?', $data_id)->where('ip = ?', new Zend_Db_Expr("INET_ATON('" . $ips['ip'] . "')"));
         #echo "DEBUG:<br><textarea rows=10 cols=100>" . $select . "</textarea><br>";die;
         $row = $PollLog->getRow($select);
         /* 			if ($row) {
         				return 'Данный IP-адрес (' . $ips['ip'] . ') уже использовался при участии в опросе.';# Использование 1 IP-адреса возможно в течении 1 суток.
         			}
         */
         // insert poll data
         $data = array('poll_id' => $poll_id, 'data_id' => $data_id, 'ip' => new Zend_Db_Expr("INET_ATON('" . $ips['ip'] . "')"));
         if (!empty($ips['ip2'])) {
             $data['ip2'] = ip2long($ips['ip']);
         }
         $res = $PollLog->insert($data);
         #echo "DEBUG:<br><textarea rows=10 cols=100>" . print_r($res, 1) . "</textarea><br>";
         // update poll data
         if ($res) {
             $data = array('votes' => new Zend_Db_Expr('votes+1'));
             $res = $PollData->update($data, 'poll_id = "' . $poll_id . '" AND id = "' . $data_id . '"');
             // update poll
             if ($res) {
                 $res = $this->update($data, 'id = ' . $poll_id);
             }
         }
     }
     return true;
 }