示例#1
0
 /**
  * Размещает пользователя в платных местах каталога, на главной странице, в списке "все фрилансеры" и/или по специальному новогоднему предложению. 
  * Если пользователь уже размещался в данном месте, то его данные восстанавливаются.
  * Если размещение еще действует, то добавляется новое размещение, дата начала которого после завершения текущего, т.е. размещение продлевается.
  * @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;
 }