/** * Размещает пользователя в платных местах каталога, на главной странице, в списке "все фрилансеры" и/или по специальному новогоднему предложению. * Если пользователь уже размещался в данном месте, то его данные восстанавливаются. * Если размещение еще действует, то добавляется новое размещение, дата начала которого после завершения текущего, т.е. размещение продлевается. * @param integer $user uid пользователя * @param integer $transaction_id id транзакции в биллинге * @param array $pages массив, индексы элементов которого указывают место размещения, а значения элементов - количество недель. * @param integer id нового заказа */ function SetOrdered($user, $transaction_id, $pages, $tarif = null, $promo = 0, &$error) { if (is_array($tarif)) { $buy_tarif = current($tarif); $tarif = key($tarif); } else { $buy_tarif = $tarif; } global $DB; if ($pages) { foreach ($pages as $prof => $interv) { if ($tarif == null) { if ($prof === 0) { $tarif = 19; } else { if ($prof === -1) { $tarif = 10; } else { if ($prof === -2) { $tarif = 33; } else { $tarif = 20; } } } } if ($tarif == 20) { $this->addProfToUserIfNeed($user, $prof); } require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/account.php"; $account = new account(); $sql = "SELECT from_date+to_date FROM users_first_page \n WHERE user_id = ?i AND from_date+to_date >= now() AND payed=true AND ordered = true AND profession=?i AND tarif = ?i\n ORDER BY from_date+to_date DESC LIMIT 1;"; $last_date = $DB->val($sql, $user, $prof, $tarif); $prof_name = 'общем разделе'; if ($tarif == 19) { //Раздел каталога $profession = professions::getProfGroupTitle($prof); $prof_name = 'разделе ' . $profession; } elseif ($prof > 0) { $profession = professions::getProfTitle($prof); $prof_name = 'разделе ' . $profession['name']; } $descr = ($last_date ? 'Продление размещения' : 'Размещение') . ' в ' . $prof_name . ' каталога фрилансеров и услуг'; $date = new DateTime($last_date); $date->modify('+' . $interv * 7 . ' day'); $comment = 'До ' . $date->format('d.m.Y H:i'); $error = $account->Buy($bill_id, $transaction_id, $buy_tarif, $user, $descr, $comment, $interv, 0, $promo); if ($error !== 0) { return 0; } $sql = "INSERT INTO users_first_page (user_id, to_date, tarif, ordered, payed, billing_id, profession, skip_psum) \n VALUES (?, ?, ?, 'true', 'true', ?, ?, 'true')\n RETURNING id"; $id = $DB->val($sql, $user, $interv . ' weeks', $tarif, $bill_id, $prof); $sql = "UPDATE users_first_page SET skip_psum = TRUE, first_post = NOW() WHERE id IN (SELECT id FROM users_first_page \n WHERE user_id = ? AND profession=? )"; $DB->query($sql, $user, $prof); self::bindDescription($id); } } //if ($bill_id) $account->commit_transaction($transaction_id, $user, $bill_id); $memBuff = new memBuff(); $ret = $memBuff->flushGroup("firstpg"); return $id; }