Есть обработчик, который делает репосты ВК по запросу с сайта. Куча условий: Количество участников, проверка ссылок и т.д и т.п. Так вот, есть кусок кода, который должен проверить в бд наличие записи с id группы. Если записи нет - делаем репост, если есть - проверяем дату репоста (должна быть на 7 дней раньше, чем выполняется запрос. т.е репост одного паблика делаем раз в неделю).
<?
$res = $dbh->query("SELECT COUNT(*) FROM `reposts` WHERE `id` = " . $postinfo[0]);
if ($res->fetchColumn() == 0) {
$wall = file_get_contents("https://api.vk.com/method/wall.repost?v=4.102&object=wall-" . $postinfo[0] . "_" . $postinfo[1] . "&group_id=100562658&access_token=" . $token);
$wall = json_decode($wall);
$response = $wall->response;
$error = $wall->error;
if ($response->success !== 1) {
$stmt = $dbh->prepare("INSERT IGNORE INTO `reposts` (id, url, repost, date) VALUES (:id, :url, :repost, :date)");
$stmt->bindParam(':id', $postinfo[0]);
$stmt->bindParam(':url', $_POST["url"]);
$stmt->bindParam(':repost', $_POST["post"]);
$stmt->bindParam(':date', $currentTime->getTimestamp());
$stmt->execute();
$dbh = null;
$link = "https://vk.com/wall" . $gid . "_" . $response->post_id;
echo '<div class="alert alert-success" role="alert">Репост сделан! Проверить его наличие Вы можете по этой ссылке: <a href="' . $link . '" target="_blank">' . $link . '</a></div>';
} else {
echo '<div class="alert alert-danger" role="alert">Ошибка! Сервер ВКонтакте вернул ответ с кодом ошибки: ' . $error->error_code . '</div>';
}
} elseif ($res->fetchColumn() !== 0) {
$qwe = $dbh->query("SELECT * FROM `reposts` WHERE `id` = " . $postinfo[0]);
$row = $qwe->fetch();
$repostTime = new DateTime(date('Y-m-d H:i:s', $row['date']));
$interval = $currentTime->diff($repostTime);
if ($interval->d >= 7) {
$wall = file_get_contents("https://api.vk.com/method/wall.repost?v=4.102&object=wall-" . $postinfo[0] . "_" . $postinfo[1] . "&group_id=100562658&access_token=" . $token);
$wall = json_decode($wall);
$response = $wall->response;
$error = $wall->error;
if ($response->success == 1) {
$stmt = $dbh->prepare("INSERT IGNORE INTO `reposts` (id, url, repost, date) VALUES (:id, :url, :repost, :date)");
$stmt->bindParam(':id', $postinfo[0]);
$stmt->bindParam(':url', $_POST["url"]);
$stmt->bindParam(':repost', $_POST["post"]);
$stmt->bindParam(':date', $currentTime->getTimestamp());
$stmt->execute();
$dbh = null;
$link = "https://vk.com/wall" . $gid . "_" . $response->post_id;
echo '<div class="alert alert-success" role="alert">Репост сделан! Проверить его наличие Вы можете по этой ссылке: <a href="' . $link . '" target="_blank">' . $link . '</a></div>';
} else {
echo '<div class="alert alert-danger" role="alert">Ошибка! Сервер ВКонтакте вернул ответ с кодом ошибки: ' . $error->error_code . '</div>';
}
} else {
$diff = date('d.m.Y H:i:s', $row['date'] + 604800);
echo '<div class="alert alert-danger" role="alert">Сожалеем, но мы уже делали с Вами репост на этой неделе. Следующий репост будет возможен: ' . $diff . '</div>';
}
}
?>
Вопрос: как сократить эти действия и привести к минимальному количеству условий?