Beispiel #1
0
 /**
  * Активирует аккаунт юзера по $code, возвращает логин и пароль пользователя.
  *
  * @param string $code		Код активации
  * @param string $login		Возвращает логин пользователя
  * @param string $pass		Возвращает пароль пользователя
  *
  * @return integer			1 - активация прошла успешно, 0 - активация не прошла
  */
 public function Activate($code, &$login, &$pass)
 {
     define('IS_USER_ACTION', 1);
     /**
      * Подлючаем файл для работы с пользователем.
      */
     require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php';
     require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/wizard/wizard_registration.php';
     require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/wizard/step_employer.php';
     require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/wizard/step_freelancer.php';
     require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/smail.php';
     global $DB;
     $sql = 'SELECT user_id, login, passwd FROM activate_code LEFT JOIN users ON user_id=uid WHERE code = ?';
     $res = $DB->query($sql, $code);
     list($fid, $login, $pass) = pg_fetch_row($res);
     if ($fid) {
         $usr = new users();
         $usr->active = 1;
         $usr->Update($fid, $res);
         $usr->GetUserByUID($fid);
         // #0017513
         if ($usr->role[0] == 1) {
             $wiz_user = wizard::isUserWizard($fid, step_employer::STEP_REGISTRATION_CONFIRM, wizard_registration::REG_EMP_ID);
         } else {
             $wiz_user = wizard::isUserWizard($fid, step_freelancer::STEP_REGISTRATION_CONFIRM, wizard_registration::REG_FRL_ID);
         }
         $out = 1;
         $this->Delete($fid);
         if ($wiz_user['id'] > 0) {
             $mail = new smail();
             if ($usr->role[0] == 1) {
                 $mail->employerQuickStartGuide($fid);
             } else {
                 $mail->freelancerQuickStartGuide($fid);
             }
             step_wizard::setStatusStepAdmin(step_wizard::STATUS_COMPLITED, $fid, $wiz_user['id']);
             $role = $usr->role[0] == 1 ? wizard_registration::REG_EMP_ID : wizard_registration::REG_FRL_ID;
             login($login, $pass, 0, true);
             header('Location: /registration/activated.php?role=' . $role);
             exit;
         }
     } else {
         $out = 0;
     }
     return $out;
 }
Beispiel #2
0
 /**
  * Активирует новый e-mail юзера по коду активации
  *
  * @param string $code	Код активации
  * @return integer		1 - активировало, 0 - не активировало
  */
 function Activate($code)
 {
     require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/users.php";
     global $DB;
     $sql = "SELECT user_id, email FROM activate_mail WHERE code = ?";
     $res = $DB->query($sql, $code);
     list($fid, $email) = pg_fetch_row($res);
     if ($fid) {
         $usr = new users();
         $usr->email = $email;
         $usr->Update($fid, $res);
         $usr->SaveChangeEmailLog($fid, $email);
         $out = 1;
         $this->Delete($fid);
     } else {
         $out = 0;
     }
     return $out;
 }
Beispiel #3
0
/**
 * Проверка статуса верификации и обновление фио.
 *
 * @todo: обновление фио подвопросом так как при верификации банковсой карточкой тоже это происходит
 * 
 * @param type $fname
 * @param type $lname
 * @param type $type
 *
 * @return \xajaxResponse
 */
function checkIsVerify($fname, $lname, $type)
{
    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php';
    $objResponse = new xajaxResponse();
    $uid = get_uid(false);
    if ($uid <= 0) {
        return $objResponse;
    }
    $user = new users();
    $user->GetUserByUID($uid);
    if ($user->uid > 0 && $user->IsVerified()) {
        $update_fio = false;
        $fname = change_q(substr(trim($fname), 0, 21));
        if ($fname) {
            $user->uname = $fname;
            $update_fio = true;
        }
        $lname = change_q(substr(trim($lname), 0, 21));
        if ($lname) {
            $user->usurname = $lname;
            $update_fio = true;
        }
        if ($update_fio) {
            $user->Update($user->uid, $err);
        }
        $_SESSION['is_verify'] = 't';
        unset($_SESSION['quick_ver_fname']);
        unset($_SESSION['quick_ver_lname']);
        $objResponse->script("window.location = '?vok=1" . ($type == 'card' ? '&vuse=card' : '') . "';");
    } else {
        $error = session::getFlashMessages('verify_error');
        $error = empty($error) ? Verification::ERROR_DEFAULT : $error;
        $objResponse->script("window.verification_popup.showError('{$error}');");
    }
    return $objResponse;
}
Beispiel #4
0
 $pwd = strip_tags(stripslashes(trim($_POST['pwd'])));
 $pwd2 = strip_tags(stripslashes(trim($_POST['pwd2'])));
 if (!preg_match('/^[a-zA-Z\\d\\!\\@\\#\\$\\%\\^\\&\\*\\(\\)\\_\\+\\-\\=\\;\\,\\.\\/\\?\\[\\]\\{\\}]+$/', $pwd)) {
     $error = 'Пароль содержит недопустимые символы.<br>' . 'Пожалуйста, используйте только латинские буквы, цифры<br>' . 'и следующие спецсимволы: !@#$%^&*()_+-=;,./?[]{}';
 } elseif (strcmp($pwd, $pwd2)) {
     $error = 'Введенные пароли не совпадают';
 } elseif (strlen($pwd) < 6) {
     $error = 'Слишком короткий пароль (минимум — 6 символов)';
 } elseif (strlen($pwd) > 24) {
     $error = 'Слишком длинный пароль (максимум — 24 символа)';
 }
 if (!$error && $codes->user_id) {
     require_once ABS_PATH . '/classes/users.php';
     $user = new users();
     $user->passwd = $pwd;
     $err = $user->Update($codes->user_id, $res);
     $u_id = $codes->user_id;
     $codes->DelByUT($codes->user_id, 1);
     if (!$err) {
         $info = 'Изменения внесены';
         require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/smail.php';
         $smail = new smail();
         $smail->ChangePwd($codes->user_id, $pwd);
         // Пишем в лог смены паролей
         require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/restorepass_log.php';
         restorepass_log::SaveToLog($codes->user_id, getRemoteIP(), 1);
         $pwd = users::hashPasswd(trim(stripslashes($pwd)));
         $user->getUserByUID($u_id);
         login($user->login, $pwd);
         session_write_close();
         header('Location: /');
Beispiel #5
0
                }
            } else {
                if ($users->is_team == 't') {
                    $error_login = "******" . $users->login . " уже находится в команде Free-lance.ru";
                } else {
                    $error_login = "******" . $_POST['login'] . " не существует";
                }
            }
            break;
        case "delteam":
            $users->GetUser($_POST['login']);
            if ($users->uid && $users->is_team == 't') {
                $users->is_team = 'f';
                $user_update = new users();
                $user_update->is_team = 'f';
                $error = $user_update->Update($users->uid, $error);
                if ($error) {
                    $error_login = $error;
                }
            } else {
                if ($users->is_team == 'f') {
                    $error_login = "******" . $_POST['login'] . " нет в команде Free-lance.ru";
                } else {
                    $error_login = "******" . $_POST['login'] . " не существует";
                }
            }
            break;
    }
}
$users_team = $users->GetUsers("is_team = 't'", "login ASC");
?>
/**
 * Отключаем/включаем верификацию пользователям.
 * 
 * @param int  $uid  ИД пользователя
 * @param bool $type вкючить/выключить
 *
 * @return \xajaxResponse
 */
function setVerification($uid = 0, $type = false)
{
    session_start();
    $objResponse = new xajaxResponse();
    if (hasPermissions('users')) {
        require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php';
        $users = new users();
        $users->is_verify = $type;
        $sError = $users->Update($uid, $res);
        if ($type == false) {
            require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/Verification.php';
            Verification::decrementStat($uid);
        }
        if (empty($sError)) {
            $text = $type ? 'Снять верификацию' : 'Дать верификацию';
            $html = '<a href="javascript:void(0);" onclick="user_search.setVerification(' . $uid . ', ' . ($type ? 'false' : 'true') . ');" class="lnk-dot-666" title="' . $text . '"><b>' . $text . '</b></a>';
            $objResponse->assign("verify{$uid}", 'innerHTML', $html);
            if ($type) {
                $objResponse->script("\$\$('#user{$uid} a.user-name').grab(new Element('span', {class:'b-icon b-icon__ver b-icon_valign_middle'}), 'before')");
            } else {
                $objResponse->script("\$\$('#user{$uid} .b-icon__ver').dispose();");
            }
            $objResponse->alert($type ? 'Верификация дана' : 'Верификация снята');
        } else {
            $objResponse->alert('Ошибка сохранения данных');
        }
    }
    return $objResponse;
}
Beispiel #7
0
            $error_flag = 1;
            $alert[1] = "Поле заполнено некорректно";
        }
        if ($surname && !preg_match("/^[-a-zA-Zа-яёА-ЯЁ]+\$/", $surname)) {
            $error_flag = 1;
            $alert[2] = "Поле заполнено некорректно";
        }
        if (!$error_flag) {
            if ($name) {
                $userObj->uname = $name;
            }
            if ($surname) {
                $userObj->usurname = $surname;
            }
            if ($name || $surname || $userpic) {
                $userObj->Update($userID, $res);
            }
            $info = "Изменения внесены";
        }
        // делаем так как будто сохранение было не из сплэша а из обычной формы в профиле пользователя
        $action = 'main_change';
        $userObj->GetUserByUID($userID);
        $email = $userObj->email;
        $pname = $userObj->pname;
        $promo_block_hide = (bool) $_COOKIE['nfastpromo_open'];
        $direct_links = $_SESSION['direct_external_links'];
        break;
}
$body_class = $is_pro ? 'p-pro' : 'p-nopro';
$header = $rpath . "header.php";
$footer = $rpath . "footer.html";
Beispiel #8
0
 /**
  * Редактирует данные о подписках пользователя.
  * @param     integer   $fid                   uid пользователя
  * @param     boolean   $newmsgs               уведомления о новых сообщениях в "Мои контакты"
  * @param     boolean   $vacan                 уведомлять о новых проектах?
  * @param     boolean   $comments              комментарии к сообщениям/комментариям в блогах
  * @param     boolean   $opin                  уведомления о добавлении/удалении отзыва
  * @param     boolean   $prcomments            комментарии к сообщениям/комментариям в проектах
  * @param     boolean   $commune_subscr        уведомления о новых действиях в сообществах
  * @param     boolean   $commune_top_subscr    уведомления о новых темах в сообществах
  * @param     boolean   $adm_subscr            новости от команды Free-lance.ru
  * @param     boolean   $content_subscr        уведомления в конкурсах
  * @param     boolean   $defilecomments        комментарии к работе/комментариям в Дефиле
  * @param     boolean   $articlescomments      комментарии в разделе "Статьи/Интервью"
  * @param     boolean   $massending            платная рассылка
  * @param     integer   $shop                  комментарии к товару в магазине
  * @param     integer   $daily_news           Уведомления о платных рекомендациях
  * @param     boolean   $vacan_use             принимать во внимание сохраненные подписки о новых проектах
  * @param     boolean   $payment               Уведомления о платежах
  * @return    string                           возможная ошибка
  */
 function UpdateSubscr($fid, $newmsgs, $vacan, $comments, $opin, $prcomments, $commune_subscr, $commune_top_subscr, $adm_subscr, $contest_subscr, $team, $defilecomments, $articlescomments, $massending, $shop, $daily_news, $vacan_use = true, $payment)
 {
     $this->mailer = $vacan_use ? 1 : 0;
     $this->mailer_str = '';
     $cats = array();
     foreach ($vacan as $val) {
         $cats[] = 'c' . (int) $val['category_id'] . ($val['subcategory_id'] ? 's' . (int) $val['subcategory_id'] : '');
     }
     $this->mailer_str = implode(':', $cats);
     //@todo: сохраняем состояние подписки даже если не выбрана ниодна категория
     //if(!$this->mailer_str) {
     //    $this->mailer = 0;
     //}
     if ($this->mailer) {
         $proj = 1;
     } else {
         $proj = 0;
     }
     $this->subscr = (int) $newmsgs . $proj . (int) $comments . (int) $opin . (int) $prcomments . (int) $commune_subscr . (int) $commune_top_subscr . (int) $adm_subscr . (int) $contest_subscr . (int) $team . (int) $defilecomments . (int) $articlescomments . (int) $massending . (int) $shop . (int) $daily_news . (int) $payment;
     while (strlen($this->subscr) < $GLOBALS['subscrsize']) {
         $this->subscr .= '0';
     }
     $error = parent::Update($fid, $res);
     return $error;
 }
Beispiel #9
0
/**
 * Выход пользователя из системы
 *
 * @param boolean $save_cookie Удалять сохраненные кукисы или нет 
 */
function logout($save_cookie = FALSE)
{
    if (!$save_cookie) {
        $sql = "UPDATE users SET solt=NULL WHERE login='******'login'] . "'";
        pg_query(DBConnect(), $sql);
        if (is_emp()) {
            require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/projects.php";
            tmp_project::clearTmpAll($_SESSION['login']);
        }
    }
    $GLOBALS['session']->logout($_SESSION['login']);
    if ($_SESSION['uid']) {
        require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/activate_code.php";
        $user = new users();
        $active = $user->GetField($_SESSION['uid'], $err, 'active');
        $activate_code = activate_code::getActivateCodeByUid($_SESSION['uid']);
        if ($activate_code != '' && ($active == true || $active == 't')) {
            $user->active = false;
        }
        $user->last_time = 'now';
        $user->Update($_SESSION['uid'], $res);
    }
    //Переносим хеши ссылок на уже зафиксированные местки для юзера при выходе/входе
    $_ga_stat_url_hash = isset($_SESSION['ga_stat_url_hash']) ? $_SESSION['ga_stat_url_hash'] : null;
    session_unset();
    //Воссанавливаем значение хешей ссылок
    if ($_ga_stat_url_hash) {
        $_SESSION['ga_stat_url_hash'] = $_ga_stat_url_hash;
    }
    if (!$save_cookie) {
        uncookie();
    }
}
Beispiel #10
0
 /**
  * Изменение логина юзера. Перед вызовом необходимо проинициализировать члены класса
  * old_login, new_login, save_old.
  * 
  * @param string $error	возвращает сообщение об ошибке	
  *
  * @return 0
  *
  * @see classes/db_access#Add($error, $return_id)
  */
 public function Add(&$error)
 {
     global $DB;
     require_once ABS_PATH . '/classes/users.php';
     $user = new users();
     $this->user_id = $user->GetUid($error, $this->old_login);
     if (!$this->user_id) {
         $error = 'Пользователь не найден!';
         return 0;
     }
     $new_user = $user->GetUid($error, $this->new_login);
     if ($new_user) {
         $error = 'Логин занят!';
         return 0;
     }
     if ($this->save_old) {
         require_once ABS_PATH . '/classes/users_old.php';
         require_once ABS_PATH . '/classes/account.php';
         $account = new account();
         $tr_id = $account->start_transaction($this->user_id);
         $id = 0;
         $error = $account->Buy($id, $tr_id, self::OP_CODE, $this->user_id, 'Изменеие логина', 'Изменение логина');
         if ($error) {
             return 0;
         }
         $this->operation_id = $id;
         $users_old = new users_old();
         $users_old->Add($this->old_login);
     }
     if (!$error) {
         $aData = array('user_id' => '', 'old_login' => '', 'new_login' => '', 'save_old' => '', 'operation_id' => '');
         foreach ($aData as $key => $val) {
             $aData[$key] = $this->{$key};
         }
         $CFile = new CFile();
         if (!$CFile->MoveDir($this->new_login, $this->old_login)) {
             $error = "Директория не создана! {$this->new_login}, {$this->old_login}";
             if ($this->operation_id) {
                 $account->Del($this->user_id, $this->operation_id);
             }
         } else {
             $DB->insert('login_change', $aData);
             $user->login = $this->new_login;
             $user->Update($this->user_id, $res);
         }
     }
     return 0;
 }
Beispiel #11
0
 /**
  * Оплата услуг.
  * 
  * @param array $order Данные по оплачивоемой услуге
  *
  * @return bool
  */
 public function paymentOrder($order)
 {
     $_op_code = self::getOpCodeByDiscount($order['op_code']);
     switch ($_op_code) {
         // Верификация банковской картой через ЯКассу
         case 191:
             $error = $this->account->Buy($account_operation_id, $this->transaction, $order['op_code'], $this->user['uid'], $order['descr'], $order['comment']);
             if (!$error) {
                 $success = true;
                 //Устанавливаем флаг верификации
                 require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/Verification.php';
                 $verify = new Verification();
                 $verify->cardYK($this->user['uid']);
                 //Обновляем сессию
                 //@todo: эта штука не работает!
                 $session = new session();
                 $session->UpdateVerification($this->user['login']);
                 //Обновляем имя и фамилию
                 $fio = mb_unserialize($order['option']);
                 if (isset($fio['uname']) && isset($fio['usurname'])) {
                     require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php';
                     $u = new users();
                     $u->GetUserByUID($this->user['uid']);
                     $u->uname = $fio['uname'];
                     $u->usurname = $fio['usurname'];
                     $u->Update($this->user['uid'], $db_errors);
                 }
                 //Назначаем возврат
                 require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/billing/BillPayback.php';
                 BillPayback::getInstance()->requestPayback($order['id'], $this->paymentSysParams['invoiceId'], $order['ammount']);
             }
             break;
             //------------------------------------------------------------------
             // Верификация через FF
         //------------------------------------------------------------------
         // Верификация через FF
         case 117:
             require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/Verification.php';
             $error = $this->account->Buy($account_operation_id, $this->transaction, Verification::FF_OP_CODE, $this->user['uid'], $order['comment'], $order['descr'], 1, 0);
             $verify = new Verification();
             $verify->data = unserialize($order['option']);
             $this->_db->query('UPDATE verify_ff SET is_pro = ?, bill_id = ?  WHERE id = ?', false, $account_operation_id, $order['src_id']);
             if ($verify->verify($this->user['uid'])) {
                 $this->_db->query('UPDATE verify_ff SET result = TRUE WHERE id = ?', $order['src_id']);
                 $success = true;
             }
             break;
             //------------------------------------------------------------------
             // Конкурс
         //------------------------------------------------------------------
         // Конкурс
         case 9:
         case 106:
         case 121:
         case 122:
         case 123:
         case 124:
         case 125:
         case 126:
         case 127:
         case 128:
         case 129:
         case 130:
             // Платный конкурс
         // Платный конкурс
         case 86:
             // Платный проект (вакансия, устаревший опкод)
         // Платный проект (вакансия, устаревший опкод)
         case 53:
             //Покупка вакансии
         //Покупка вакансии
         case 113:
             //пользователь не PRO
         //пользователь не PRO
         case 192:
             //пользователь PRO
             //Платные услуги проектов
         //пользователь PRO
         //Платные услуги проектов
         case 138:
         case 139:
         case 140:
         case 141:
             require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects.php';
             require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/drafts.php';
             require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/uploader/uploader.php';
             // Публикуем платный проект
             if ($order['parent_table'] == 'draft_projects') {
                 $draft_id = $order['parent_id'];
                 $this->project_key = md5(uniqid($this->user['uid']));
                 $tmpPrj = new tmp_project($this->project_key);
                 $tmpPrj->initFromDraft($draft_id, $this->user['uid']);
                 $tproject = $tmpPrj->getProject();
                 $isMovedToVacancy = false;
                 // Нет конкурса значит его уже опубликовали и оплатили, оставляем деньги на личном счете
                 if ((int) $tproject['prj_id'] <= 0) {
                     // Не тратим деньги на такой конкурс
                     if ($tmpPrj->isKonkurs() && strtotime($tproject['end_date']) <= time()) {
                         $success = true;
                         break;
                     }
                     $error = $tmpPrj->saveProject($this->user['uid'], $proj, $this->ordersPromoCodes);
                     $success = !$error;
                     // Отработали все по конкурсу удаляем его чтобы не мешал (после отработки всех операций)
                     $this->setAfterQuery($this->_db->parse('DELETE FROM draft_projects WHERE id = ? AND uid = ?', $draft_id, $this->user['uid']), $order['parent_id']);
                     $sql = 'UPDATE draft_projects SET prj_id = ? WHERE id = ? AND uid = ?';
                     $this->_db->query($sql, $proj['id'], $draft_id, $this->user['uid']);
                 } else {
                     $success = true;
                 }
             } elseif ($order['parent_table'] == 'projects') {
                 $prj_id = $order['parent_id'];
                 $this->project_key = md5(uniqid($this->user['uid']));
                 $tmpPrj = new tmp_project($this->project_key);
                 $tmpPrj->setInitFromDB($prj_id);
                 $tproject = $tmpPrj->getProject();
                 $isMovedToVacancy = $tmpPrj->isStateMovedToVacancy();
                 // Если закрыт или заблокирован не тратим деньги
                 if ($tproject['closed'] == 't' || $tproject['is_blocked'] == 't') {
                     $success = true;
                     break;
                 }
                 switch ($order['option']) {
                     case 'top':
                         $tmpPrj->setAddedTopDays($order['op_count']);
                         break;
                     case 'logo':
                         $LogoFile = new CFile($order['src_id']);
                         $tmpPrj->initLogo($LogoFile, $order['descr']);
                         break;
                     case 'urgent':
                         $tmpPrj->setProjectField('urgent', 't');
                         break;
                     case 'hide':
                         $tmpPrj->setProjectField('hide', 't');
                         break;
                     case 'office':
                         $tmpPrj->setProjectField('old_state', $tproject['state']);
                         $tmpPrj->setProjectField('state', projects::STATE_PUBLIC);
                         //Если оплачивается не перемещенная вакансия
                         //то работаем как обычно и подымаем вверх
                         if ($tproject['state'] != projects::STATE_MOVED_TO_VACANCY) {
                             $tmpPrj->setProjectField('post_now', true);
                         }
                         break;
                 }
                 $error = $tmpPrj->saveProject($this->user['uid'], $proj, $this->ordersPromoCodes);
                 $success = !$error;
                 if ($success) {
                     if (isset($tmpPrj->account_operation_id) && $tmpPrj->account_operation_id > 0) {
                         $account_operation_id = $tmpPrj->account_operation_id;
                     }
                     switch ($order['option']) {
                         case 'office':
                             if ($tproject['state'] == projects::STATE_MOVED_TO_VACANCY) {
                                 require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/smail.php';
                                 $smail = new smail();
                                 $smail->sendMovedToVacancySuccessPayed($tproject);
                                 require_once $_SERVER['DOCUMENT_ROOT'] . '/guest/models/GuestInviteModel.php';
                                 $guestInviteModel = new GuestInviteModel();
                                 $guestInviteModel->updateDatePublicBySrc($prj_id, array(GuestConst::TYPE_PROJECT, GuestConst::TYPE_VACANCY));
                                 require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/autoresponse.php';
                                 $autoresponse = new autoresponse();
                                 $autoresponse->reduceByProject($prj_id);
                             }
                             break;
                     }
                 }
             }
             //Сохраняем, чтобы показать попап юзеру
             $memBuff = new memBuff();
             $memBuff->add('bill_ok_project_' . $this->user['uid'], $proj['id']);
             //Если это оплата вакансии или конкусра то предлагаем еще купить платные опции
             if (in_array($order['option'], array('office', 'contest')) && !$isMovedToVacancy) {
                 $memBuff->add('bill_ok_project_payed_' . $this->user['uid'], true);
             }
             break;
             //------------------------------------------------------------------
             // Платное место в карусели
         //------------------------------------------------------------------
         // Платное место в карусели
         case 65:
             // На главной странице
             $catalog = 0;
         case 73:
             // В каталоге
             require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/pay_place.php';
             $payPlace = new pay_place(isset($catalog) ? $catalog : 1);
             $buyMain = $this->account->Buy($account_operation_id, $this->transaction, $order['op_code'], $this->user['uid'], $order['comment'], $order['descr'], $order['op_count'], 0, $order['promo_code']);
             if ($buyMain === 0) {
                 $options = unserialize($order['option']);
                 if (isset($options['adHead'])) {
                     //поддержка старого режима
                     $success = $payPlace->addUser($this->user['uid'], $options['adHead'], $options['adText'], $options['adImg']);
                 } else {
                     $success = $payPlace->addUserRequest($this->user['uid'], $options);
                 }
             }
             break;
             //------------------------------------------------------------------
             // ПРО аккаунт фрилансеры
         //------------------------------------------------------------------
         // ПРО аккаунт фрилансеры
         case 47:
             // Тестовый ПРО на 1 неделю
             if (payed::IsUserWasPro($this->user['uid'])) {
                 return false;
                 break;
             }
         case 15:
             // Про на 1 месяц (emp)
         // Про на 1 месяц (emp)
         case 48:
             // Про на 1 месяц (frl)
         // Про на 1 месяц (frl)
         case 118:
             // Про на 3 месяца (emp)
         // Про на 3 месяца (emp)
         case 49:
             // Про на 3 месяца (frl)
         // Про на 3 месяца (frl)
         case 119:
             // Про на 6 месяцeв (emp)
         // Про на 6 месяцeв (emp)
         case 50:
             // Про на 6 месяцев (frl)
         // Про на 6 месяцев (frl)
         case 120:
             // Про на 1 год (emp)
         // Про на 1 год (emp)
         case 51:
             // Про на 1 год (frl)
         // Про на 1 год (frl)
         case 132:
             // Про на 1 день (frl)
         // Про на 1 день (frl)
         case 131:
             // Про на 1 неделю (frl)
         // Про на 1 неделю (frl)
         case 163:
             // Тестовый ПРО на месяц
         // Тестовый ПРО на месяц
         case 164:
             // PROFI на 1 месяц
             require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/payed.php';
             require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/freelancer.php';
             require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/employer.php';
             $payed = new payed();
             $user = is_emp($this->user['role']) ? new employer() : new freelancer();
             $success = $payed->SetOrderedTarif($this->user['uid'], $this->transaction, $order['op_count'], $order['comment'], $order['op_code'], $order['promo_code'], $error);
             if ($success) {
                 if (isset($payed->account_operation_id) && $payed->account_operation_id > 0) {
                     $account_operation_id = $payed->account_operation_id;
                 }
                 // Обновим сессию сразу!
                 if (get_uid(false) == $this->user['uid']) {
                     $_SESSION['pro_last'] = payed::ProLast($this->user['login']);
                     $_SESSION['pro_last'] = $_SESSION['pro_last']['is_freezed'] ? false : $_SESSION['pro_last']['cnt'];
                     if ($_SESSION['pro_last']['is_freezed']) {
                         $_SESSION['payed_to'] = $_SESSION['pro_last']['cnt'];
                     }
                 } else {
                     $membuff = new memBuff();
                     $membuff->set('is_changed_pro_' . $this->user['uid'], true);
                     //Этот подход не работает
                     //$session = new session();
                     //$session->UpdateProEndingDate($this->user['login']);
                 }
                 if ($order['auto'] == 't') {
                     $user->setPROAutoProlong('on', $this->user['uid']);
                 } else {
                     $user->setPROAutoProlong('off', $this->user['uid']);
                 }
                 //Опубликовать перемещенные вакансии при покупке ПРО
                 //@todo: Теперь вакансии для всех платные разница лишь в цене для ПРО дешевле
                 //поэтому отключаем публикацию после покупки ПРО
                 //https://beta.free-lance.ru/mantis/view.php?id=28579
                 /*
                                     if (is_emp($this->user['role'])) { 	 
                                         require_once($_SERVER['DOCUMENT_ROOT'] . "/classes/projects.php"); 	
                                         $project = new projects();	 
                                         $project->publishedMovedToVacancy($this->user); 	
                                     }*/
                 //Чистим кеш каталога PROFI пользователей
                 if ($order['op_code'] == 164) {
                     freelancer::clearCacheProfiCatalog();
                 }
             }
             break;
             //------------------------------------------------------------------
         //------------------------------------------------------------------
         case 45:
             // рассылка по каталогу
             require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/masssending.php';
             require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/messages.php';
             $masssending = masssending::Get($order['parent_id']);
             $masssending = $masssending[0];
             $error = $this->account->Buy($account_operation_id, $this->transaction, masssending::OPER_CODE, $this->user['uid'], $order['descr'], $order['comment'], $masssending['pre_sum'], 0, $order['promo_code']);
             if ($error) {
                 break;
             }
             masssending::UpdateAcOpID($order['parent_id'], $account_operation_id);
             $success = (bool) messages::Masssending($masssending['user_id'], $masssending['id'], $masssending['msgtext'], $masssending['posted_time']);
             break;
             //------------------------------------------------------------------
             /*
              * Погашение задолженности
              */
         //------------------------------------------------------------------
         /*
          * Погашение задолженности
          */
         case 135:
             $error = $this->account->Buy($account_operation_id, $this->transaction, $order['op_code'], $this->user['uid'], $order['descr'], $order['comment'], 1, 1, 0, 0, $order['ammount']);
             if (!$error) {
                 $success = true;
                 //Начисление погашенной комиссии и удаление блокировки ТУ
                 require_once $_SERVER['DOCUMENT_ROOT'] . '/tu/models/TServiceOrderModel.php';
                 TServiceOrderModel::model()->clearDebt($this->user['uid']);
             }
             break;
             //-------------------------------------------------------------------
             /*
              * Операции над бизнес логикой резерва средств 
              * при успешном зачислении денег
              */
         //-------------------------------------------------------------------
         /*
          * Операции над бизнес логикой резерва средств 
          * при успешном зачислении денег
          */
         case 136:
             $success = false;
             $data = @$this->list_service[$order['id']]['info'];
             if (!$data) {
                 break;
             }
             require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/reserves/ReservesModelFactory.php';
             $reserveInstance = ReservesModelFactory::getInstance($data['type']);
             //Уже была зарезервирована или нет нужный параметров то
             //ничего не покупаем деньги остаются на ЛС
             if (!$reserveInstance || !isset($this->paymentSysParams['invoiceId'])) {
                 break;
             }
             //Невозможно сменить статус сделки выходим
             $reserveInstance->setReserveData($data);
             if (!$reserveInstance->allowChangeStatus(ReservesModel::STATUS_RESERVE)) {
                 break;
             }
             $ret = $this->account->Buy($account_operation_id, $this->transaction, $order['op_code'], $this->user['uid'], $order['descr'], $order['comment'], $order['ammount']);
             if ($ret === 0) {
                 //Успешно купили услугу и теперь меняем статус резерва
                 $data['invoice_id'] = $this->paymentSysParams['invoiceId'];
                 $data['acc_op_id'] = $account_operation_id;
                 $reserveInstance->setReserveData($data);
                 $success = $reserveInstance->changeStatus(ReservesModel::STATUS_RESERVE);
             }
             break;
             //------------------------------------------------------------------
             /*
              * Завершение покупки автоответов.
              */
         //------------------------------------------------------------------
         /*
          * Завершение покупки автоответов.
          */
         case 137:
             $success = false;
             $ret = $this->account->Buy($account_operation_id, $this->transaction, $order['op_code'], $this->user['uid'], $order['descr'], $order['comment'], $order['ammount'], 1, $order['promo_code']);
             if ($ret === 0 && isset($order['parent_id']) && intval($order['parent_id'])) {
                 require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/autoresponse.php';
                 autoresponse::$db = $GLOBALS['DB'];
                 // Активация покупки услуги автоответа
                 if ($autoresponse = autoresponse::get($order['parent_id'])) {
                     $autoresponse->activate();
                     $success = true;
                 }
             }
             break;
             //------------------------------------------------------------------
             // Закрепление в каталоге фрилансеров
         //------------------------------------------------------------------
         // Закрепление в каталоге фрилансеров
         case 142:
             // В корневом разделе
         // В корневом разделе
         case 143:
             // В разделе
             $is_spec = false;
         case 144:
             // В подразделе
             if (!isset($is_spec)) {
                 $is_spec = true;
             }
             $success = false;
             require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/freelancer_binds.php';
             $freelancer_binds = new freelancer_binds();
             $freelancer_binds->prepare($this->user['uid'], $order['src_id'], $is_spec, $order['op_count']);
             $ret = $this->account->Buy($account_operation_id, $this->transaction, $order['op_code'], $this->user['uid'], $freelancer_binds->bind_info['descr'], $freelancer_binds->bind_info['comment'], $order['ammount'], 1, $order['promo_code']);
             if ($ret === 0) {
                 $success = $freelancer_binds->create();
             }
             break;
             //------------------------------------------------------------------
             // Продление закрепления в каталоге фрилансеров
         //------------------------------------------------------------------
         // Продление закрепления в каталоге фрилансеров
         case 148:
             // В корневом разделе
         // В корневом разделе
         case 149:
             // В разделе
             $is_spec = false;
         case 150:
             // В подразделе
             if (!isset($is_spec)) {
                 $is_spec = true;
             }
             $success = false;
             require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/freelancer_binds.php';
             $freelancer_binds = new freelancer_binds();
             $bind_id = $freelancer_binds->isUserBinded($this->user['uid'], $order['src_id'], $is_spec);
             $ret = true;
             if ($bind_id) {
                 $freelancer_binds->getProlongInfo($this->user['uid'], $order['src_id'], $is_spec, $order['op_count']);
                 $ret = $this->account->Buy($account_operation_id, $this->transaction, $order['op_code'], $this->user['uid'], $freelancer_binds->bind_info['descr'], $freelancer_binds->bind_info['comment'], $order['ammount']);
             }
             if ($ret === 0) {
                 $success = $freelancer_binds->prolong($bind_id, $order['op_count'], $order['src_id'], $is_spec);
             }
             break;
             //------------------------------------------------------------------
             // Поднятие закрепления в каталоге фрилансеров
         //------------------------------------------------------------------
         // Поднятие закрепления в каталоге фрилансеров
         case 151:
             // В корневом разделе
         // В корневом разделе
         case 152:
             // В разделе
             $is_spec = false;
         case 153:
             // В подразделе
         // В подразделе
         case 194:
             //Оплата из буфера
             if (!isset($is_spec)) {
                 $is_spec = $order['src_id'] > 0;
             }
             $success = false;
             require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/freelancer_binds.php';
             $freelancer_binds = new freelancer_binds();
             $bind_id = $freelancer_binds->isUserBinded($this->user['uid'], $order['src_id'], $is_spec);
             if ($bind_id) {
                 $freelancer_binds->getUpInfo($this->user['uid'], $order['src_id'], $is_spec);
                 $ret = $this->account->Buy($account_operation_id, $this->transaction, $order['op_code'], $this->user['uid'], $freelancer_binds->bind_info['descr'], '', $order['ammount']);
                 if ($ret === 0) {
                     $success = $freelancer_binds->up($bind_id, $order['src_id'], $is_spec);
                 }
             }
             break;
             //------------------------------------------------------------------
             // Закрепление/продление в каталоге услуг
         //------------------------------------------------------------------
         // Закрепление/продление в каталоге услуг
         case 155:
             // В лендинге
         // В лендинге
         case 156:
             // В корневом разделе
         // В корневом разделе
         case 157:
             // В разделе
         // В разделе
         case 158:
             // В подразделе
             $success = false;
             require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/tservices/tservices_binds.php';
             $tservices_binds = new tservices_binds(tservices_binds::KIND_LANDING);
             $tservices_binds->setKindByOpCode($_op_code);
             $option = unserialize($order['option']);
             $tservice_id = isset($option['tservice_id']) ? $option['tservice_id'] : $order['option'];
             $is_prolong = isset($option['is_prolong']) ? $option['is_prolong'] : false;
             $tservices_binds->prepare($this->user['uid'], $tservice_id, $order['src_id'], $order['op_count'], $is_prolong);
             if ($tservices_binds->bind_info) {
                 $ret = $this->account->Buy($account_operation_id, $this->transaction, $order['op_code'], $this->user['uid'], $tservices_binds->bind_info['descr'], $tservices_binds->bind_info['comment'], $order['ammount']);
                 if ($ret === 0) {
                     $success = $is_prolong ? $tservices_binds->update() : $tservices_binds->create();
                 }
             }
             break;
             //------------------------------------------------------------------
             // Поднятие закрепления в каталоге услуг
         //------------------------------------------------------------------
         // Поднятие закрепления в каталоге услуг
         case 159:
             // В лендинге
         // В лендинге
         case 160:
             // В корневом разделе
         // В корневом разделе
         case 161:
             // В разделе
         // В разделе
         case 162:
             // В подразделе
         // В подразделе
         case 193:
             //Оплата из буфера
             $success = false;
             require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/tservices/tservices_binds.php';
             $tservices_binds = new tservices_binds(tservices_binds::KIND_LANDING);
             $tservices_binds->setKindByOpCode($_op_code);
             $bind = $tservices_binds->getItemById($order['src_id']);
             $tservices_binds->makeUpInfo($bind);
             if ($tservices_binds->bind_info) {
                 $ret = $this->account->Buy($account_operation_id, $this->transaction, $order['op_code'], $this->user['uid'], $tservices_binds->bind_info['descr'], $tservices_binds->bind_info['comment'], $order['ammount']);
                 if ($ret === 0) {
                     $success = $tservices_binds->update();
                 }
             }
             break;
     }
     if ($success) {
         $update = array('status' => self::STATUS_COMPLETE);
         $this->update($order['id'], $update);
         $memBuff = new memBuff();
         $memBuff->delete('last_operation_' . $order['uid'] . '_' . $order['service']);
         //Если только что была оплата из яндекс.кассы
         if ($this->paymentSysParams['invoiceId']) {
             //Фиксируем ID транзакции
             $label = op_codes::getLabel($order['op_code']);
             if (isset($account_operation_id) && $account_operation_id > 0) {
                 $label = (empty($label) ? '' : "{$label},") . "trans_{$account_operation_id}";
             }
             // Посылаем данные о покупке в google analytics
             $this->_db->query("SELECT pgq.insert_event('statistic', 'service_payed', ?)", http_build_query(array('is_emp' => is_emp($this->user['role']), 'label' => $label, 'ammount' => floatval($order['ammount']), 'cid' => $this->getCid())));
         }
     }
     return $success;
 }
Beispiel #12
0
         header("Location: /siteadmin/rating/?result=success");
         exit;
     }
     $error = "ќшибка.";
     break;
 case "setpwd":
     $login = __paramInit('string', NULL, 'login');
     $pwd = stripslashes($_POST['pwd']);
     //__paramInit('string', NULL, 'pwd');
     require_once ABS_PATH . "/classes/users.php";
     require_once ABS_PATH . "/classes/codes.php";
     $codes = new codes();
     $user = new users();
     $uid = $user->GetUid($error, $login);
     $user->passwd = $pwd;
     $err = $user->Update($uid, $res);
     $codes->DelByUT($uid, 1);
     // ѕишем в лог смены паролей
     require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/restorepass_log.php";
     restorepass_log::SaveToLog($uid, getRemoteIP(), 4, get_uid(false));
     header("Location: /siteadmin/rating/?result=success");
     break;
 case "addserv":
     $login = __paramInit('string', NULL, 'login');
     $days = __paramInit('string', NULL, 'days');
     $type = __paramInit('int', NULL, 'type');
     $where = __paramInit('int', NULL, 'where');
     $fid = users::GetUid($err, $login);
     if ($fid && $login) {
         if (preg_match('#^[1-9]+[\\d]*$#', $days)) {
             require_once ABS_PATH . '/classes/account.php';
Beispiel #13
0
 /**
  * Снимает бан с пользователя.
  * 
  * @param  int $uid UID пользователя.
  * @param  int $ban_where какой бан снимаем: 0 - на всем сайте, 1 - в блогах.
  * @return string сообщение об ошибке или пестая строка.
  */
 function unsetUserBan($uid, $ban_where)
 {
     $user = new users();
     if ($ban_where) {
         // в блогах
         $GLOBALS['DB']->query('UPDATE users_ban SET "to" = NULL WHERE uid = ?i AND "where" = ?i', $uid, $ban_where);
         $sError = $GLOBALS['DB']->error;
         if (!$sError) {
             $user->ban_where = 0;
             $sError = $user->Update($uid, $res);
         }
     } else {
         // на всем сайте
         $user->is_banned = 0;
         $user->self_deleted = "FALSE";
         // флаг АККАУНТ УДАЛЕН САМОСТОЯТЕЛЬНО
         $sError = $user->Update($uid, $res);
         if (!$sError) {
             users::approveSuspiciousUser($uid);
         }
     }
     $memBuff = new memBuff();
     $memBuff->touchTag("msgsCnt");
     // восстанавливаем данные о разблокированном пользователе в сессию его антиюзера
     /*require_once($_SERVER['DOCUMENT_ROOT'] . "/classes/session_Memcached.php");
       $user->GetUserByUID($uid);
       $antiUid = $user->anti_uid;
       $antiUser = new users;
       $antiUser->GetUserByUID($antiUid);        
       $session = new session;
       $session->UpdateAntiuser($antiUser->login, $user);*/
     return $sError;
 }
Beispiel #14
0
 $users->ShowOne();
 echo "<div class='container'>";
 echo "<div class='col-md-9'> ";
 echo "<div> ";
 echo "<div><ol class='breadcrumb'><li><a href='/'>Home</a></li><li><a href='/master/users/'>Data Karyawan</a></li><li class='active'>Ubah Data Karyawan</li>";
 echo "</ol";
 echo "</div>";
 echo "</div>";
 if ($_POST) {
     include_once $_SERVER['DOCUMENT_ROOT'] . '/objects/users.php';
     $users = new users($db);
     $users->username = $_POST['username'];
     $users->password = $_POST['password'];
     $users->userlevel = $_POST['userlevel'];
     //	$users->isactive = $_POST['isactive'];
     if ($users->Update()) {
         echo "<div class='alert alert-success alert-dismissable'>";
         echo "<button type='button' class='close' data-dismiss='alert' aria-hidden='true'>&times;</button>";
         echo "User berhasil diubah.  <a href='/master/users/'>kembali</a>";
         echo "</div>";
     } else {
         echo "<div class='alert alert-danger alert-dismissable'>";
         echo "<button type='button' class='close' data-dismiss='alert' aria-hidden='true'>&times;</button>";
         echo "User gagal diubah.";
         echo "</div>";
     }
 }
 echo "<div class='row'>";
 echo "<form id='form_reg' class='form-horizontal' action='' method='POST' role='form'>";
 echo "<legend class='text-center'>Ubah Data Karyawan</legend>";
 echo "<div class='form-group'>";