/** * * @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; }