public function run()
 {
     $user = $this->order[$this->is_emp ? 'freelancer' : 'employer'];
     //получаем общее кол-во отзывов
     $oplinks = NULL;
     $opcount = opinions::GetCounts($user['uid'], array('total'));
     if (array_sum($opcount['total']) > 0) {
         $oplinks = array('p' => getSortOpinionLinkEx('frl', "total", 1, $user['login'], zin($opcount['total']['p']), null, 0), 'n' => getSortOpinionLinkEx('frl', "total", 2, $user['login'], zin($opcount['total']['n']), null, 0), 'm' => getSortOpinionLinkEx('frl', "total", 3, $user['login'], zin($opcount['total']['m']), null, 0));
     }
     //город юзера
     $city_id = $this->order['is_meet'] == 't' && $this->order['city'] > 0 ? $this->order['city'] : $user['city'];
     $user['place_title'] = '';
     if ($city_id > 0) {
         $user['place_title'] = city::getCountryName($city_id) . ', ' . city::getCityName($city_id);
     }
     //собираем шаблон
     $this->render('t-service-order-user-profile', array('user' => $user, 'oplinks' => $oplinks));
 }
Esempio n. 2
0
 /**
  * Обработка пачки событий (вызывается демоном).
  *
  * @param int $batch_id
  *
  * @return bool
  */
 public function process_batch($batch_id)
 {
     $events = $this->preprocess_batch($batch_id);
     if ($events === false) {
         $this->log->verbose('PGQDaemonBanners.preprocess_batch got not events (False).');
         return false;
     }
     /*
      * Event processing loop!
      */
     $abort_batch = false;
     $sql = "PREPARE updBanners (int, int, int) AS \n        \t\tUPDATE ban_stats1 set views = views + \$2, clicks = clicks + \$3 WHERE banner_id = \$1;\n";
     foreach ($events as $event) {
         if ($abort_batch) {
             break;
         }
         $id = $event->data['id'];
         $type = $event->type;
         if ($type == 'click') {
             ++$bans[$id]['click'];
         } elseif ($type == 'view') {
             ++$bans[$id]['view'];
         }
         $this->log->verbose('PGQDaemonBanners.process_batch type %s event %d of batch %d ', $type, $event->id, $batch_id);
         $this->log->verbose('PGQDaemonBanners.process_batch processed event %d of batch %d', $event->id, $batch_id);
     }
     if ($bans) {
         foreach ($bans as $ikey => $ban) {
             $sql .= "EXECUTE updBanners({$ikey}, " . zin($ban['view']) . ', ' . zin($ban['click']) . ");\n";
         }
         $sql .= 'DEALLOCATE updBanners;';
         $result = pg_query(DBConnect(), $sql);
         $this->log->debug('UPDATE : %s ', $sql);
         if ($result === false) {
             $this->log->error('Unable to update : %s ', $sql);
             $abort_batch = true;
         }
     } else {
         $this->log->verbose('PGQDaemonBanners.process_batch has no banners');
     }
     return $this->postprocess_batch($batch_id, $abort_batch);
 }
Esempio n. 3
0
        echo $user->login;
        ?>
#form" method="post"><input type="hidden" name="prjname" value="<?php 
        echo $prj['name'] ? $prj['name'] : 'заголовок отсутствует';
        ?>
"><input type="submit" name="btn" class="btn" value="Оговорить детали"></form><?php 
    }
    ?>
	<div align="right" style="margin-top: 5px;"><b>[<a href="<?/* Апдейт проектов /blogs/view.php?tr=<?php 
    echo $prj['thread_id'];
    ?>
*/?>/projects/?pid=<?php 
    echo $prj['id'];
    ?>
" class="blue"><b>Комментарии (<?php 
    echo zin($prj['comm_count']);
    ?>
)</b></a>]</b></div>
	</td>
	</tr>
</table>
<?php 
} else {
    ?>
<table width="100%" border="0" cellspacing="0" cellpadding="19">
<tr valign="top">
	<td height="400" valign="top" bgcolor="#FFFFFF">
	<h1>Проект удален</h1>
К сожалению, этот проект был удален.<br> 
<br>
Электронная почта: <a href="mailto:info@free-lance.ru">info@free-lance.ru</a><br>
Esempio n. 4
0
                Сумма к оплате: <span id="quick_pro_sum_pay"></span> руб.<br>
            </div>
    
    
            <div class="b-layout__txt b-layout__txt_padbot_20 b-layout__txt_padleft_20 b-layout__txt_fontsize_11">
                <span id="quick_pro_sum_span_4">
                <span id="quick_pro_sum_span_2">Часть суммы (<span id="quick_pro_sum_span_7"></span> руб.)</span><span id="quick_pro_sum_span_3">Она</span> будет списана с личного счета, на нем 
                <span id="quick_pro_sum_account1" class="b-layout__bold">
                    <?php 
setlocale(LC_NUMERIC, 'en_US');
?>
                    <?php 
if (round($_SESSION['bn_sum'] + $_SESSION['ac_sum'], 2) > 0) {
    ?>
                        <?php 
    echo number_format(round(zin($_SESSION['ac_sum']), 2), 2, ",", " ");
    ?>
                    <?php 
} else {
    ?>
                        0
                    <?php 
}
?>
                </span>
                 руб.<br>
                 <span id="quick_pro_sum_span_5">
                Остаток (<span id="quick_pro_sum_span_6"></span> руб.) вам нужно оплатить одним из способов:
                </span>
                </span>
                <span id="quick_pro_sum_span_1">Ее вы можете оплатить одним из способов:</span>
Esempio n. 5
0
        $theme = $groups[$i];
        if (in_array($theme['id'], blogs::$copiny_group)) {
            $feedback_copiny[] = $theme;
            continue;
            // Перенесли в архив #0023264
        }
        $love = (int) $theme['id'] == 55;
        if ($love && !$allow_love) {
            continue;
        }
        $tname = $theme['t_name'];
        //if ($theme['id'] == 7 && $theme['t'] == 0) $tname = "<strong>".$theme['t_name']."</strong>";
        if ($theme['id'] == $gr && $base == $theme['t']) {
            $group_line .= $addit . "<li" . ($love ? ' style="background: url(/images/icons/heart.png) no-repeat 2px 7px;" ' : '') . ($i == $size - 1 ? " class=\"last\"" : "") . ">" . ($love ? '<span id="love_time_simple" style="float:right">00:00:00</span>' : '') . $theme['t_name'] . " (" . zin($theme['num']) . ")</li>\n";
        } else {
            $group_line .= $addit . "<li" . ($love ? ' style="background: url(/images/icons/heart.png) no-repeat 2px 7px;" ' : '') . ($i == $size - 1 ? " class=\"last\"" : "") . ">" . ($love ? '<span id="love_time_simple" style="float:right">00:00:00</span>' : '') . "<a href=\"" . getFriendlyUrl('blog_group', $theme['id']) . ($theme['t'] || $ord ? "?" : "") . ($theme['t'] ? "&amp;t=prof" : "") . ($ord != "new" ? "&amp;ord={$ord}" : "") . "\" title=\"" . $theme['t_name'] . "\">" . $tname . " (" . zin($theme['num']) . ")</a></li>\n";
        }
        $sum = $sum + $theme['num'];
    }
    ?>
            <li><?php 
    if ($gr) {
        ?>
<a href="/blogs/viewgroup.php<?php 
        echo $ord ? "?ord={$ord}" : "";
        ?>
" title="Все вместе"><?php 
    }
    ?>
<strong>Все вместе</strong> (<?php 
    echo $sum;
Esempio n. 6
0
/**
 * Форматтер состояния счета в шапке
 * 
 * @return string
 */
function view_account_format($tip = FALSE)
{
    $ac_sum = round(zin($_SESSION['ac_sum']), 2);
    $bn_sum = round(zin($_SESSION['bn_sum']), 2);
    $ac_sum_txt = number_format($ac_sum, 2, ",", " ");
    $bn_sum_txt = number_format($bn_sum, 2, ",", " ");
    $ret = $tip ? "У вас на счету {$ac_sum_txt} " . ending($ac_sum, 'рубль', 'рубля', 'рублей') : $ac_sum_txt . ((int) $_SESSION['bn_sum'] ? ' + ' . $bn_sum_txt : '') . ' руб.';
    $ret = str_replace(',00', '', $ret);
    return $ret;
}
Esempio n. 7
0
 /**
  * Аутентификация пользователя и заполнение его сессии необходимыми данными.
  *
  * @param string $login логин пользователя
  * @param string $pwd   пароль пользователя
  * @param array &params             данные пользователя
  * @param boolean $is_2fa_off принудительное откулючение 2х этапной проверки
  *
  * @return integer id сессии
  *
  * @global DB $DB
  */
 public function Auth($login, $pwd, &$params, $is_2fa_off = false)
 {
     //////////////////////////////////////////////////////////
     // Ахтунг! Изменение логики нужно отражать также в новом движке.
     // Например, при добавлении новый полей в сессию, добавьте их в Web_Front::login()
     //////////////////////////////////////////////////////////
     global $DB;
     $plogin = preg_replace('/[+ ()-]/', '', $login);
     $phoneType = preg_replace("/\\D/", '', $plogin);
     if ($phoneType == $plogin) {
         $plogin = '******' . $plogin;
         $sql = "SELECT user_id FROM sbr_reqv WHERE (_1_mob_phone = ? OR _2_mob_phone = ?) AND is_activate_mob = 't'";
         $uids = $DB->rows($sql, $plogin, $plogin);
         if ($uids) {
             foreach ($uids as $u) {
                 $sql_uids .= $u['user_id'] . ',';
             }
             $sql_uids = preg_replace('/,$/', '', $sql_uids);
         }
     }
     $sql = '
       SELECT 
         u.email, u.role, u.uname, u.usurname, u.uid, u.is_banned, u.ban_where, u.active, 
         a.sum, a.bonus_sum,
         u.login, u.anti_uid, u.is_pro_test, u.is_pro_new, u.is_chuck, 
         u.sex, u.settings, u.splash_show, u.is_verify,
         u.reg_date, ac.code, u.photo, u.is_profi,
         u.birthday
       FROM users AS u
       LEFT JOIN activate_code ac ON ac.user_id = u.uid  
       LEFT JOIN account AS a ON a.uid = u.uid
       WHERE ((lower(u.login) = ? OR lower(u.email) = ?) AND u.passwd = ?) ' . ($sql_uids ? "OR ( u.uid IN ({$sql_uids}) AND u.passwd = ?)" : '');
     $res = $DB->rows($sql, strtolower($login), mb_strtolower($login), $pwd, $pwd);
     if ($res) {
         $qres = $res;
         $uvisits = array();
         $n = 0;
         foreach ($qres as $k => $v) {
             $uvisits[$this->getLastVisit($v['uid']) . '-' . $n] = $k;
             ++$n;
         }
         asort($uvisits);
         $res = $qres[array_pop($uvisits)];
     }
     $error .= $DB->error;
     $first_login = $this->getLastVisit($res['uid']);
     $ip = getRemoteIP();
     /**
      * Дополнительная проверка логина. 
      * Нужна для исправления паролей, содержащих 
      * теги (или похожие на теги последовательности).
      * 
      * !!Убрать после следующей глобальной смены паролей.
      */
     if (!$res) {
         // попробуем убрать (0018079)
         //$res = $this->FixPassword($sql, $login);
     }
     /**
      * Определяем нужна ли 2хэтапная авторизация.
      */
     if (!$is_2fa_off && count($res) && $first_login) {
         //не первый вход
         //если на 2ом этапе ввели другой аккаунт то направить
         //обратно на 2ой этап и сообщить обэтом
         if (isset($params['2fa_provider']['uid']) && $params['2fa_provider']['uid'] != $res['uid']) {
             $is_login = $params['2fa_provider']['type'] == 0;
             session::setFlashMessage($is_login ? self::TXT_AUTH_2FA_LOG_FAIL : self::TXT_AUTH_2FA_SOC_FAIL, '/auth/second/');
             return self::AUTH_STATUS_2FA;
         }
         $is_opauth = defined('IS_OPAUTH');
         if (!isset($params['2fa_provider']) || $params['2fa_provider']['type'] > 0 != $is_opauth) {
             //несовпадают типы авторизаций на 2ом этапе
             require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/opauth/OpauthModel.php';
             $opauthModel = new OpauthModel();
             $is_2fa = $opauthModel->getMultilevel($res['uid']);
             if (isset($is_2fa['type'])) {
                 //$is_2fa - авторизация через выбранную соцсеть
                 //0 - нужна обычная авторизация так как вход был выполнен через соцсеть
                 $params['2fa_provider'] = array('type' => !$is_opauth ? $is_2fa['type'] : 0, 'uid' => $res['uid'], 'login' => $res['login']);
                 //Сбрасываем авторизацию
                 $res = array();
                 //переходим ко 2ой стадии
                 return self::AUTH_STATUS_2FA;
             }
         }
     }
     //Более нам параметр этапов авторизации не нужен
     unset($params['2fa_provider']);
     /**
      * Успешная авторизация.
      */
     if (count($res)) {
         list($email, $trole, $tname, $tsurname, $tid, $is_banned, $ban_where, $active, $sum, $bonus_sum, $log, $anti_uid, $is_pro_test, $is_pro_new, $is_chuck, $sex, $settings, $splash_show, $is_verify, $reg_date, $activate_code, $photo, $is_profi, $birthday) = array_values($res);
         if ($activate_code != '' && $active == 't') {
             $this->checkRegDate($tid, $reg_date);
         }
         if ($is_banned) {
             return -1;
         }
         //if ($active=='f') return -2; //##0027983
         if (!$this->CheckUserAllowIP($ip, $tid)) {
             return -3;
         }
         $params['birthday'] = $birthday ? strtotime($birthday) : null;
         $params['age'] = $params['birthday'] ? intval(ElapsedYears($params['birthday'])) : null;
         require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/permissions.php';
         $params['permissions'] = permissions::getUserPermissions($tid);
         $params['email'] = $email;
         $params['role'] = $trole;
         $params['name'] = $tname;
         $params['surname'] = $tsurname;
         $params['uid'] = $tid;
         $params['user_ip'] = $ip;
         $params['ac_sum'] = zin($sum);
         $params['bn_sum'] = zin($bonus_sum);
         $params['login'] = $log;
         $params['is_pro_new'] = $is_pro_new;
         $params['pro_test'] = $is_pro_test;
         $params['is_chuck'] = $is_chuck;
         $params['is_verify'] = $is_verify;
         $params['sex'] = $sex;
         $params['reg_date'] = $reg_date;
         $params['photo'] = $photo;
         if (!is_emp($trole)) {
             $params['is_profi'] = $is_profi === 't';
         }
         if ($anti_uid) {
             $anti_class = is_emp($trole) ? 'freelancer' : 'employer';
             require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/{$anti_class}.php";
             $anti = new $anti_class();
             $anti->GetUserByUID($anti_uid);
             $params['anti_uid'] = $anti->uid;
             $params['anti_login'] = $anti->login;
             $params['anti_surname'] = $anti->usurname;
             $params['anti_name'] = $anti->uname;
         }
         if (!is_emp($params['role'])) {
             require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects_offers.php';
             if ($po_summary = projects_offers::GetFrlOffersSummary($params['uid'])) {
                 $params['po_count'] = $po_summary['total'];
             }
         }
         $sql = 'UPDATE users SET last_time = now(), last_ip = ?, is_active = true WHERE uid = ?i';
         $res = $DB->query($sql, $ip, $tid);
         $this->SaveLoginIPLog($tid, $ip);
         $this->increaseLoginsCnt($tid);
         // количество операций
         $sQuery = 'SELECT COUNT(ao.id) FROM account_operations ao 
             INNER JOIN account a ON a.id = ao.billing_id WHERE a.uid = ?i AND (ao.ammount <> 0 OR ao.trs_sum <> 0)';
         $params['account_operations'] = $DB->val($sQuery, $tid);
         $params['question_button_hide'] = $settings[1];
         // Показывать/скрывать кнопку "У вас есть вопрос?"
         $params['promo_block_hide'] = $settings[2];
         // показывать Блок "Быстрый доступ к основным функциям сайта"
         $params['direct_external_links'] = $settings[3];
         // Не показывать страницу "Переход по внешней ссылке" a.php
         $params['sbr_slash_show'] = $settings[4] && $first_login < strtotime('2012-08-08');
         // Показывать/скрыть СБР промо-слеш
         $params['splash_show'] = $splash_show;
         $params['chat'] = $settings[5];
         $params['chat_sound'] = $settings[6];
         // #0017182 > Вопрос можем ли мы вытащить эту настройку из кук пользователей и сохранить ее в базу?
         if (empty($settings[3]) && $_COOKIE['direct_external_links'] == 1) {
             $this->setDirectExternalLinks($tid, 1);
             if ($anti_uid) {
                 $this->setDirectExternalLinks($anti_uid, 1);
             }
             setcookie('direct_external_links', '', time() - 60 * 60 * 24 * 365, '/');
             setcookie('no_a_php', '1', time() + 60 * 60 * 24 * 365 * 2, '/');
         }
         //генерация куки для userecho
         require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/userecho.php';
         setcookie('ue_sso_token', UserEcho::get_sso_token(USERECHO_API_KEY, USERECHO_PROJECT_KEY, array()), 0, '/', preg_replace('/^https?\\:\\/\\/(?:www\\.)?/', '.', 'fl.ru'));
         // Первый заход, регистрация через мастер, мастер не закончен
         if ($first_login == 0) {
             require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/wizard/wizard.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';
             if (is_emp($params['role'])) {
                 $wiz_user = wizard::isUserWizard($tid, step_employer::STEP_REGISTRATION_CONFIRM, wizard_registration::REG_EMP_ID);
             } else {
                 $wiz_user = wizard::isUserWizard($tid, step_freelancer::STEP_REGISTRATION_CONFIRM, wizard_registration::REG_FRL_ID);
             }
             if ($wiz_user['id'] > 0) {
                 $role = is_emp($params['role']) ? wizard_registration::REG_EMP_ID : wizard_registration::REG_FRL_ID;
                 header('Location: /registration/activated.php?role=' . $role);
                 //header("Location: /wizard/registration/?role={$role}");
                 exit;
             } elseif (!is_emp($params['role'])) {
                 require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/payed.php';
                 $pro_last = payed::ProLast($_SESSION['login']);
                 $_SESSION['pro_last'] = $pro_last['is_freezed'] ? false : $pro_last['cnt'];
                 if ($_SESSION['pro_last'] && $_SESSION['is_pro_new'] != 't') {
                     payed::checkNewPro($id);
                 }
                 if ($pro_last['freeze_to']) {
                     $_SESSION['freeze_from'] = $pro_last['freeze_from'];
                     $_SESSION['freeze_to'] = $pro_last['freeze_to'];
                     $_SESSION['is_freezed'] = $pro_last['is_freezed'];
                     $_SESSION['payed_to'] = $pro_last['cnt'];
                 }
                 if ($_SESSION['anti_login']) {
                     $pro_last = payed::ProLast($_SESSION['anti_login']);
                     $_SESSION['anti_pro_last'] = $pro_last['freeze_to'] ? false : $pro_last['cnt'];
                 }
                 //отправляем письмо с инфой, как работать на сайте
                 /*
                 require_once($_SERVER['DOCUMENT_ROOT'] . "/classes/smail.php");
                 $mail = new smail();
                 
                 if (is_emp()) {                
                     $mail->employerQuickStartGuide(get_uid(false));
                 } else {
                    $mail->freelancerQuickStartGuide(get_uid(false));
                 }
                 */
                 return $tid;
                 if (!defined('IN_API')) {
                     // для API мобильного приложения не нужно
                     header("Location: /users/{$login}/");
                     exit;
                 }
             }
         }
         //-----------------------------------
     } else {
         $tid = 0;
         require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/annoy.php';
         $annoy = new annoy();
         $annoy->Add($ip);
     }
     return $tid;
 }
Esempio n. 8
0
                echo $prj['thread_id'];
                ?>
" class="blue">
	  <?php 
                echo $prj['comm_count'] ? '<b>Комментарии (' . zin($prj['comm_count']) . ')</b>' : 'Комментарии (' . zin($prj['comm_count']) . ')';
                ?>
</a>]</b>
	</div><?php 
            } else {
                ?>
	<div align="right" style="margin-top: 5px;"><b>[<a href="/projects/?pid=<?php 
                echo $prj['id'];
                ?>
" class="blue">
	  <?php 
                echo $prj['offers_count'] ? '<b>Комментарии (' . zin($prj['offers_count']) . ')</b>' : 'Комментарии (' . zin($prj['offers_count']) . ')';
                ?>
</a>]</b>
	</div><?php 
            }
            ?>
	</td>
	<td width="67" align="center" class="qp"><?if ($prj['cost']>0) {?><strong><?php 
            echo CurToChar($prj['cost'], $prj['currency']);
            ?>
</strong><?} else{?>&nbsp;<?}?></td>
	<td width="30"><?php 
            if ($prj['closed'] == 't') {
                ?>
Проект закрыт<?php 
            } else {
Esempio n. 9
0
 /**
  * Возвращает html заголовка страницы с отзывами в массиве
  * 
  * @param string $from (frl|my|emp|norisk) параметр from
  * @param users $user пользователь, на странице которого мы в данный момент находимся
  * @param integer $to_id пользователь, для которго мы готовим вывод
  * @return array html заголовка страницы с отзывами в массиве
  */
 public static function getHeaderData($from, $user, $to_id)
 {
     $opcount = opinions::GetCounts($to_id, array('emp', 'norisk', 'frl', 'all', 'total'));
     $out = array();
     /*
      * @todo: неиспользуется?
      * 
      * 
     $out['all'] = getSortOpinionLinkEx($from, "users", 1, $user->login, zin($opcount['all']['p']))
             . '&nbsp;&nbsp;' . getSortOpinionLinkEx($from, "users", 2, $user->login, zin($opcount['all']['n']))
             . '&nbsp;&nbsp;' . getSortOpinionLinkEx($from, "users", 3, $user->login, zin($opcount['all']['m']));
     
     $out['emp'] = getSortOpinionLinkEx($from, "emp", 1, $user->login, zin($opcount['emp']['p']))
             . '&nbsp;&nbsp;' . getSortOpinionLinkEx($from, "emp", 2, $user->login, zin($opcount['emp']['n']))
             . '&nbsp;&nbsp;' . getSortOpinionLinkEx($from, "emp", 3, $user->login, zin($opcount['emp']['m']));
     
     $out['frl'] = getSortOpinionLinkEx($from, "frl", 1, $user->login, zin($opcount['frl']['p']))
             . '&nbsp;&nbsp;' . getSortOpinionLinkEx($from, "frl", 2, $user->login, zin($opcount['frl']['n']))
             . '&nbsp;&nbsp;' . getSortOpinionLinkEx($from, "frl", 3, $user->login, zin($opcount['frl']['m']));
     
     $out['norisk'] = getSortOpinionLinkEx($from, "norisk", 1, $user->login, zin($opcount['norisk']['p']))
             . '&nbsp;&nbsp;' . getSortOpinionLinkEx($from, "norisk", 2, $user->login, zin($opcount['norisk']['n']))
             . '&nbsp;&nbsp;' . getSortOpinionLinkEx($from, "norisk", 3, $user->login, zin($opcount['norisk']['m']));
     
     $out['total'] = getSortOpinionLinkEx($from, "total", 1, $user->login, zin($opcount['total']['p']))
             . '&nbsp;&nbsp;' . getSortOpinionLinkEx($from, "total", 2, $user->login, zin($opcount['total']['n']))
             . '&nbsp;&nbsp;' . getSortOpinionLinkEx($from, "total", 3, $user->login, zin($opcount['total']['m']));
     */
     $out['total_no_author'] = getSortOpinionLinkEx($from, "total", 1, $user->login, zin($opcount['total']['p']), null, 0) . '&nbsp;&nbsp;' . getSortOpinionLinkEx($from, "total", 2, $user->login, zin($opcount['total']['n']), null, 0) . '&nbsp;&nbsp;' . getSortOpinionLinkEx($from, "total", 3, $user->login, zin($opcount['total']['m']), null, 0);
     return $out;
 }
Esempio n. 10
0
            ?>
                     </td>
                     <td class="b-layout__td b-layout__td_padtb_15 b-layout__td_valign_mid b-page__desktop">
                        <div class="b-layout__txt b-layout__txt_color_64 b-layout__txt_fontsize_15 b-layout__txt_bold b-layout__txt_center">
                            <a class="b-layout__link b-layout__link_color_6db335 b-layout__link_bold b-layout_hover_link_decorated" href="/users/<?php 
            echo $frl['login'];
            ?>
/opinions/?sort=1&author=0">+ <?php 
            echo zin($frl['total_opi_plus']);
            ?>
</a>  |  
                            <a class="b-layout__link b-layout__link_bold b-layout__link_color_c10600 b-layout_hover_link_decorated" href="/users/<?php 
            echo $frl['login'];
            ?>
/opinions/?sort=3&author=0">- <?php 
            echo zin($frl['total_opi_minus']);
            ?>
</a>
                        </div>
                     </td>
                     <td class="b-layout__td b-layout__td_padleft_20 b-layout__td_padright_20 b-layout__td_padtb_15 b-layout__td_valign_mid">
                        <div class="b-layout__txt b-layout__txt_color_64 b-layout__txt_fontsize_11">
                            <?php 
            echo br2br(LenghtFormatEx(reformat($frl['status_text'], 40, 0, 1, 25), 150));
            ?>
                        </div>
                     </td>
                  </tr>
                  <?php 
            if ($i < $cntCatalogList - 1) {
                ?>
Esempio n. 11
0
% (<a href="/siteadmin/users/?action=selacop&fdate=<?php 
        echo $fdate;
        ?>
&tdate=<?php 
        echo $tdate;
        ?>
&akop=45" class="blue">операций: <?php 
        echo zin($mass_sending_a[$i]['cnt']);
        ?>
</a>)
        <br>
        Отказанные: <?php 
        echo zin(abs($mass_sending_r[$i]['sum']));
        ?>
 руб. (операций: <?php 
        echo zin(abs($mass_sending_r[$i]['cnt']));
        ?>
)
    </td>
</tr>


</table>
<?php 
    }
    ?>

<br><br>

<div style="margin-bottom: 50px"></div>
<?php 
Esempio n. 12
0
	<td><?php 
echo zin($konk[$i]['cnt']);
?>
</td>
</tr>
<tr>
	<td>- Подняли проект:</td>
	<td><?php 
echo zin($upproj[$i]['cnt']);
?>
</td>
</tr>
<tr>
	<td>- Перевели денег:</td>
	<td><?php 
echo zin($transf[$i]['cnt']);
?>
</td>
</tr>
<tr><td colspan=2><strong>Живых</strong></td></tr>
<tr>
	<td>- Фрилансеры:</td>
	<td>
        <?php 
$sql = "SELECT SUM(l_frl) as cnt FROM stat_data WHERE date >=? AND date<=?";
$s_f_live['cnt'] = $DB->val($sql, $fdate, $tdate);
?>
        <?php 
echo (int) $s_f_live['cnt'];
?>
    </td>
Esempio n. 13
0
function getOpinionLinks($login, $value)
{
    return getSortOpinionLinkEx(0, 1, 1, $login, zin($value['total_opi_plus']), null, 0) . '&nbsp;' . getSortOpinionLinkEx(0, 1, 2, $login, zin($value['total_opi_null']), null, 0) . '&nbsp;' . getSortOpinionLinkEx(0, 1, 3, $login, zin($value['total_opi_minus']), null, 0);
}
Esempio n. 14
0
 <?php 
echo $user->usurname;
?>
 [<?php 
echo $user->login;
?>
]</a><br>
Номер счета: <?php 
echo $account->id;
?>
<h3 style="margin-bottom:0px;">На счету <?php 
echo round($account->sum, 2);
?>
 руб.</h3>
<strong>на бонусном счету - <?php 
echo zin(round($account->bonus_sum, 2));
?>
 руб.</strong><br /><br />

<?php 
if (!is_release() || in_array($_SESSION['login'], $GLOBALS['balanceCanChangeAdmins'])) {
    ?>
<form action="." method="post">
Изменить счет пользователя
<table cellspacing="2" cellpadding="2" border="0">
<tr>
	<td>на сумму(руб):</td>
	<td><input type="text" name="val"></td>
</tr>
<tr>
	<td>комментарий (для пользователя)</td>
Esempio n. 15
0
                echo $prj['thread_id'];
                ?>
" class="blue">
	  <?php 
                echo $prj['comm_count'] ? "<b>Комментарии (" . zin($prj['comm_count']) . ")</b>" : "Комментарии (" . zin($prj['comm_count']) . ")";
                ?>
</a>]</b>
	</div><?php 
            } else {
                ?>
	<div align="right" style="margin-top: 5px;"><b>[<a href="/projects/?pid=<?php 
                echo $prj['id'];
                ?>
" class="blue">
	  <?php 
                echo $prj['offers_count'] ? "<b>Комментарии (" . zin($prj['offers_count']) . ")</b>" : "Комментарии (" . zin($prj['offers_count']) . ")";
                ?>
</a>]</b>
	</div><?php 
            }
            ?>
	</td>
	<td width="67" align="center" class="qp"><?php 
            if ($prj['cost'] > 0) {
                ?>
<strong><?php 
                echo CurToChar($prj['cost'], $prj['currency']);
                ?>
</strong><?php 
            } else {
                ?>
Esempio n. 16
0
"><?php 
        echo zin($frl['se']);
        ?>
</a></span><br />
                                        <span class="review-type">-</span><span class="review-minus"><a href="/users/<?php 
        echo $frl['login'];
        ?>
/opinions/?from=users&sort=3&f=<?php 
        echo stat_collector::REFID_CATALOG;
        ?>
&stamp=<?php 
        echo $_SESSION['stamp'];
        echo $kw_param;
        ?>
"><?php 
        echo zin($frl['sl']);
        ?>
</a></span>
                                        <?php 
        echo seo_end();
        ?>
                                    </td>
                                    <td style="width:65px;"><?php 
        echo view_cost2($frl['frl_cost_hour'], '', '', true, $frl['frl_cost_type_hour']);
        ?>
</td>
                                    <td class="price_prj" style="width:70px;"><?php 
        if ($prof_type) {
            echo view_cost2($frl['cost_1000'], '', '', true, $frl['cost_type']);
        } else {
            echo view_cost2($frl['cost_from'], 'от', '', true, $frl['cost_type']);
Esempio n. 17
0
 /**
  * Возвращает статистику по комиссиям СБР
  *
  * @param string $from_date     фильтр: начальная дата
  * @param string $to_date       фильтр: конечная дата
  * @return array                массив или NULL
  */
 function GetStatSbrCommission($from_date = '2000-01-01', $to_date = 'now()')
 {
     global $DB;
     $sql = "SELECT SUM(act_lcomm) as summ, COALESCE(ao.payment_sys, cost_sys) as ps\n                FROM sbr_stages_users s\n                    INNER JOIN sbr_stages st ON st.id = s.stage_id\n                    INNER JOIN sbr ON sbr.id = st.sbr_id\n                    LEFT JOIN sbr_stages_payouts po ON po.stage_id = st.id\n                    LEFT JOIN account_operations ao ON ao.id = po.credit_id\n                WHERE st.closed_time::date >= ?::date\n                AND st.closed_time::date < ?::date+'1 day'::interval\n                GROUP BY ps\n        ";
     $ret = null;
     if (($res = $DB->query($sql, $from_date, $to_date)) && pg_num_rows($res)) {
         while ($row = pg_fetch_assoc($res)) {
             $row['summ'] = zin(round($row['summ'], 2));
             $ret[$row['ps']] = $row;
         }
     }
     return $ret;
 }
/**
 * Новый отзыв по заказу ТУ
 * 
 * @global type $uid
 * @global type $orderModel
 * @param type $params
 * @return \xajaxResponse
 */
function tservicesOrdersNewFeedback($params)
{
    $uid = get_uid(false);
    $orderModel = TServiceOrderModel::model();
    $objResponse =& new xajaxResponse();
    $order_id = intval(@$params['oid']);
    $hash = @$params['hash'];
    $test_hash = md5(TServiceOrderModel::SOLT . $order_id);
    if ($uid <= 0 || $hash !== $test_hash) {
        return $objResponse;
    }
    $memebuff = new memBuff();
    if ($memebuff->get('feedback_process_' . $order_id)) {
        return $objResponse;
    }
    $memebuff->set('feedback_process_' . $order_id, true);
    $is_emp = is_emp();
    $prefix = $is_emp ? 'emp' : 'frl';
    $sufix = $is_emp ? 'frl' : 'emp';
    $allow_status = array(TServiceOrderModel::STATUS_ACCEPT, TServiceOrderModel::STATUS_FIX, TServiceOrderModel::STATUS_EMPCLOSE, TServiceOrderModel::STATUS_FRLCLOSE);
    $feedback = @$params['feedback'];
    $is_feedback = !empty($feedback);
    $fbtype = @$params['fbtype'];
    $orderData = $orderModel->getCard($order_id, $uid);
    //Если не существует или статус не подходящий
    if (!$orderData || !in_array($orderData['status'], $allow_status)) {
        $memebuff->delete('feedback_process_' . $order_id);
        return $objResponse;
    }
    //Если есть отзыв и он не удален
    if (!empty($orderData[$prefix . '_feedback'])) {
        $memebuff->delete('feedback_process_' . $order_id);
        return $objResponse;
    }
    $order_id = $orderData['id'];
    $status = $orderData['status'];
    if ($orderModel->isDisallowFeedback()) {
        $memebuff->delete('feedback_process_' . $order_id);
        return $objResponse;
    }
    //Меняем статус при необходимости и тем самым закрываем заказ
    if ($status != TServiceOrderModel::STATUS_EMPCLOSE) {
        try {
            $new_status = $orderModel->changeStatus($order_id, 'close', $is_emp, $fbtype);
        } catch (Exception $e) {
            $sHtml = tservices_helper::getMessage($e->getMessage(), 'error');
            $objResponse->call('TServices_Order.showBeforeStatus', $order_id, $sHtml);
            $memebuff->delete('feedback_process_' . $order_id);
            return $objResponse;
        }
        $orderData['status'] = $new_status;
    }
    //Сохраняем отзыв если он есть
    if ($is_feedback) {
        $orderFeedbackModel = new TServiceOrderFeedbackModel();
        $is_valid = $orderFeedbackModel->attributes(array('feedback' => $feedback, 'rating' => $fbtype, 'is_emp' => $is_emp, 'user_id' => $uid));
        //Тут обрабатывать ошибки при валидации
        if (!$is_valid || !$orderFeedbackModel->addFeedback($order_id)) {
            $memebuff->delete('feedback_process_' . $order_id);
            return $objResponse;
        }
        $attributes = $orderFeedbackModel->attributes();
        $orderData[$prefix . '_feedback'] = $attributes['feedback'];
        $orderData[$prefix . '_rating'] = $attributes['rating'];
        //Сохранить действие в историю
        $history = new tservices_order_history($order_id);
        $history->saveFeedback($is_emp, $fbtype);
        //Чистим кеш кол-во новых сообщений юзера после написания комментария
        $orderModel->clearCountEvent($orderData["{$sufix}_id"]);
        /*
                if ($status == TServiceOrderModel::STATUS_EMPCLOSE && $is_emp && $fbtype < 0) 
                {
           $orderModel->cancelTax($order_id);
                }
        */
    }
    //Уведомление на почту
    $tservices_smail = new tservices_smail();
    $tservices_smail->attributes(array('order' => $orderData, 'is_emp' => $is_emp));
    $tservices_smail->closeOrderAndFeedback($status);
    $tserviceOrderStatusWidget = new TServiceOrderStatus();
    $tserviceOrderStatusWidget->setIsEmp($is_emp);
    $tserviceOrderStatusWidget->setOrder($orderData);
    $tserviceOrderStatusWidget->init();
    ob_start();
    $tserviceOrderStatusWidget->run();
    $sHtml = ob_get_contents();
    ob_end_clean();
    $objResponse->assign('tservices_order_status_' . $order_id, 'innerHTML', $sHtml);
    //если фрилансер закрывает заказ или оставляет отзыв
    //то обновляем ему информацию о состоянии счета
    if (!$is_emp) {
        //не показываем отрицательную сумму
        //$balance = ($_SESSION['ac_sum'] > 0)?number_format(round(zin($_SESSION['ac_sum']),2), 2, ",", " ").' руб.':'Мои услуги';
        //$balance = '<span class="b-bar__icon b-bar__icon_fm"></span>' . $balance;
        //для новой шапки
        $balance = number_format(round(zin($_SESSION['ac_sum']), 2), 2, ",", " ") . ' Р';
        $objResponse->script("\$\$('.b-user-menu-wallet-clause a').set('html', '" . $balance . "');");
    }
    //Обновляем события так как у mootools нет Live
    //а Delegation не работает.
    $objResponse->script('
        Bar_Ext.popuper();
        window.order_feedback_factory = new OrderFeedbackFactory();
    ');
    $memebuff->delete('feedback_process_' . $order_id);
    return $objResponse;
}