/** * Действие "поделиться ссылкой" через букмарклет: */ public function shareLinkAction(Application $application, Template $template) { $kvs = KVS::getInstance(); $validator = new ValidatorHelper($_GET); $validator->assertExists('title', ''); $validator->assertLength('title', 70, ''); $validator->assertExists('link', ''); $validator->assertRegexp('link', ValidatorHelper::URL_REGEXP, ''); $validator->assertLength('description', 128, ''); if ($validator->isValid()) { $key = md5(strtolower($_GET['link'])); $ip = md5($_SERVER['REMOTE_ADDR']); $counter = $kvs->get(__CLASS__, 'shared_links_ip', $ip); if (!$kvs->exists(__CLASS__, 'shared_links', $key) && !$kvs->exists(__CLASS__, 'shared_links_ban', $ip)) { if ($kvs->exists(__CLASS__, 'shared_links_ip', $ip)) { if ($counter > 5) { $kvs->set(__CLASS__, 'shared_links_ban', $ip, true); $kvs->expire(__CLASS__, 'shared_links_ban', $ip, 5 * 60); } else { $lifetime = $kvs->lifetime(__CLASS__, 'shared_links_ip', $ip); $kvs->set(__CLASS__, 'shared_links_ip', $ip, ++$counter); $kvs->expire(__CLASS__, 'shared_links_ip', $ip, $lifetime); } } else { $kvs->set(__CLASS__, 'shared_links_ip', $ip, 1); $kvs->expire(__CLASS__, 'shared_links_ip', $ip, 60); } JabberBot::send('-=% /me Отправлена ссылка: ' . $_GET['link'] . ' (' . $_GET['title'] . ')' . "\n" . (!empty($_GET['description']) ? 'С описанием: ' . $_GET['description'] : '')); $kvs->set(__CLASS__, 'shared_links', $key, true); $kvs->expire(__CLASS__, 'shared_links', $key, 60 * 60); $template->headerOk(); $template->headerContentTypeWOCharset('image/png'); readfile(WEB_DIR . '/ico/tick.png'); exit; } } $template->headerBadRequest(); exit; }