Пример #1
0
<?php

require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/notes.php';
$note = notes::GetNotes((int) $_SESSION['uid'], (int) $project['user_id'], $error);
if ($note['n_text']) {
    $noteText = reformat($note['n_text'], 22, 0, 0, 1, 22);
    $noteBtn = 'Редактировать';
} else {
    $noteText = '';
    $noteBtn = 'Добавить';
}
?>
<div id="noteTextBlock" class="b-note b-note_inline-block b-fon b-fon_bg_ffeda9">
    <div class="b-fon__b1"></div>
    <div class="b-fon__b2"></div>
    <div class="b-fon__body b-fon__body_pad_5_10">
        <div class="b-note__txt">
            <strong class="b-note__bold">Ваша заметка: </strong><span id="noteText"><?php 
echo $noteText;
?>
</span> <a id="noteEditBtn" class="b-note__link b-note__link_bordbot_0f71c8" href="javascript:void(0)"><?php 
echo $noteBtn;
?>
</a>
        </div>
    </div>
    <div class="b-fon__b2"></div>
    <div class="b-fon__b1"></div>
</div>
<div id="noteEditBlock" class="b-note b-fon b-fon_bg_ffeda9 b-fon_hide" style=" max-width: 600px;">
    <div class="b-fon__b1"></div>
Пример #2
0
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/notes.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/commune.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/rating.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/user_langs.php';
$recoms = new teams();
$additinfo = $user->GetAdditInfo($user->login, $error);
$languages = users::GetUserLangs($user->uid);
if ($rating && $rating instanceof rating && $rating->data['user_id'] == $user->uid) {
    $rating_total = rating::round($rating->data['total']);
} else {
    $rating_total = rating::round($additinfo['rating']);
}
$info_for_reg = unserialize($user->info_for_reg);
$reg_string = 'только для <A class="blue" href="/registration/">зарегистрированных</A>';
if ($_SESSION['uid']) {
    $note = notes::GetNotes($_SESSION['uid'], null, $error);
    if (count($note) > 0) {
        foreach ($note as $key => $value) {
            $notes[$value['to_id']] = $value;
        }
    }
}
$stop_words = new stop_words(hasPermissions('users'));
?>
<!-- NEW -->

<!-- NEW -->
<script type="text/javascript">
window.addEvent('domready',
	function() {
        $$('.izbr-choose li a').addEvent('click', function(){
Пример #3
0
 /**
  * Получение списка предложений по конкретному проекту.
  *
  * @param integer $count    возвращает количество предложений
  * @param integer $prj_id   id проекта
  * @param string  $show_all признак отображения всех (true) или только открытых (false) предложений проекта
  * @param string  $sort     сортировка списка предложений
  * @param string  $type     выбор предложений одного типа ('o' - все, 'c' - выбранных в кандидаты, 'r' - отказанных, 'nor' - все кроме отказавшихся, 'i' - исполнитель)
  *
  * @return array список предложений
  */
 public function GetPrjOffers(&$count, $prj_id, $limit, $offset = 0, $user_id = 0, $show_all = false, $sort = 'date', $type = 'a')
 {
     global $DB;
     require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/teams.php';
     require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/notes.php';
     $user_id = intval($user_id);
     $limit = $limit == 'ALL' ? $limit : intval($limit);
     $offset = intval($offset);
     $limit_str = " LIMIT {$limit} OFFSET {$offset}";
     $bPermissions = hasPermissions('projects');
     // исключаем заблокированные предложения
     $sel_blocked = ', pb.reason as blocked_reason, pb.blocked_time, COALESCE(pb.src_id::boolean, false) as is_blocked';
     $join_blocked = 'LEFT JOIN projects_offers_blocked pb ON po.id = pb.src_id ';
     if ($bPermissions) {
         $sel_blocked .= ', admins.login as admin_login, admins.uname as admin_uname, admins.usurname as admin_usurname';
         $join_blocked .= 'LEFT JOIN users as admins ON pb.admin = admins.uid ';
         $where_blocked = '';
         $and_blocked = '';
     } else {
         $where_blocked = " (po.user_id = {$user_id} OR pb.src_id IS NULL) ";
         $and_blocked = ' AND ' . $where_blocked;
     }
     //@todo: Рекомендуется вынести completed_cnt в users_counters таблицу и с ней соединяться
     //тем более, что в ней уже есть кол-во по новой БС reserves_completed_cnt
     //нужно добавить поле по старой БС и пересчитать туда
     if ($type == 'i') {
         $sql = "SELECT\n          po.*,\n          fl.uid, fl.login, fl.uname, fl.usurname, fl.photo, fl.photosm, fl.spec, fl.is_pro, fl.is_team, fl.is_pro_test, fl.is_profi, uc.ops_frl_plus as ops_plus, uc.ops_frl_null as ops_null, uc.ops_frl_minus as ops_minus, fl.role, fl.warn, fl.is_banned, fl.ban_where, rating_get(fl.rating, fl.is_pro, fl.is_verify, fl.is_profi) as rating, fl.is_verify, fl.reg_date, fl.modified_time, fl.photo_modified_time,\n          p.name AS spec_name,\n          cr.country_name,\n          ct.city_name, \n          COALESCE(sbr_meta.completed_cnt, 0) + COALESCE(uc.reserves_completed_cnt, 0) AS completed_cnt, -- старые БС + новые БС\n          uc.ops_emp_plus + uc.ops_frl_plus as ops_all_plus, uc.ops_emp_null + uc.ops_frl_null as ops_all_null, uc.ops_emp_minus + uc.ops_frl_minus as ops_all_minus,\n          uc.ops_emp_plus, uc.ops_emp_null, uc.ops_emp_minus,\n          uc.sbr_opi_plus, uc.sbr_opi_null, uc.sbr_opi_minus,\n          uc.paid_advices_cnt + uc.sbr_opi_plus + uc.ops_emp_plus + uc.tu_orders_plus + uc.projects_fb_plus as opinions_plus,\n          uc.sbr_opi_minus + uc.ops_emp_minus + uc.tu_orders_minus + uc.projects_fb_minus as opinions_minus\n          {$sel_blocked} \n          FROM (SELECT por.*, exec_id, pr.user_id as p_user_id FROM projects AS pr\n          LEFT JOIN projects_offers as por ON por.project_id=pr.id AND (pr.exec_id =por.user_id)\n          WHERE  pr.id = '{$prj_id}' AND (por.user_id > 0)" . ($show_all ? '' : " AND (por.only_4_cust='f')") . ') AS po
       INNER JOIN freelancer as fl ON (po.exec_id=fl.uid' . ($bPermissions ? '' : ' AND fl.is_banned::integer = 0') . ")\n          {$join_blocked} \n          LEFT JOIN professions p ON p.id=fl.spec\n          LEFT JOIN users_counters uc ON uc.user_id = fl.uid\n          LEFT JOIN sbr_meta ON sbr_meta.user_id = fl.uid -- старые БС\n          LEFT JOIN country cr ON cr.id=fl.country\n          LEFT JOIN city ct ON ct.id=fl.city\n          " . ($user_id == 0 ? "WHERE {$where_blocked}" : 'WHERE (fl.uid<>' . $user_id . ") {$and_blocked}");
         $ret = $DB->rows($sql);
         $error = $DB->error;
         if ($error) {
             $error = parse_db_error($error);
         } else {
             if ($ret) {
                 foreach ($ret as &$value) {
                     // Выбираем вложения.
                     if ($value['id']) {
                         $sql = 'SELECT a.id, a.prev_pict as prev, a.pict ' . 'FROM projects_offers_attach AS a ' . 'WHERE a.offer_id= ?i ';
                         $value['attach'] = $DB->rows($sql, $value['id']);
                     }
                 }
             }
         }
     } else {
         switch ($sort) {
             default:
             case 'date':
                 $order = ' ORDER BY (fl.is_verify AND fl.is_pro) DESC, fl.is_pro DESC, fl.is_verify DESC, post_date DESC';
                 break;
             case 'rating':
                 $order = ' ORDER BY rating DESC, fl.is_pro DESC, post_date DESC';
                 break;
             case 'opinions':
                 $order = ' ORDER BY ssum DESC, fl.is_pro DESC, post_date DESC';
                 break;
             case 'time':
                 $order = ' ORDER BY (((time_from = 0) OR (time_from IS NULL)) AND ((time_to = 0) OR (time_to IS NULL))) ASC, time_from_days ASC, time_to_days ASC, is_pro DESC, post_date DESC';
                 break;
             case 'cost':
                 $order = ' ORDER BY (((cost_from = 0) OR (cost_from IS NULL)) AND ((cost_to = 0) OR (cost_to IS NULL))) ASC, usd_cost_from DESC, usd_cost_to DESC, is_pro DESC, post_date DESC';
                 break;
         }
         switch ($type) {
             default:
             case 'a':
                 $filter = '';
                 break;
             case 'o':
                 $filter = ' AND NOT po.selected AND NOT po.refused AND NOT po.frl_refused AND COALESCE(pr.exec_id,0)<>fl.uid';
                 break;
             case 'c':
                 $filter = ' AND po.selected';
                 break;
             case 'r':
                 $filter = ' AND po.refused';
                 break;
             case 'nor':
                 $filter = ' AND NOT po.frl_refused';
                 break;
             case 'fr':
                 $filter = ' AND po.frl_refused';
                 break;
         }
         require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/project_exrates.php';
         $project_exRates = project_exrates::GetAll();
         $sql = "SELECT\n          CASE po.cost_type\n            WHEN 0 THEN po.cost_from\n            WHEN 1 THEN po.cost_from*{$project_exRates[32]}\n            WHEN 2 THEN po.cost_from*{$project_exRates[42]}\n            WHEN 3 THEN po.cost_from*{$project_exRates[12]}\n          END as usd_cost_from,\n          CASE po.cost_type\n            WHEN 0 THEN po.cost_to\n            WHEN 1 THEN po.cost_to*{$project_exRates[32]}\n            WHEN 2 THEN po.cost_to*{$project_exRates[42]}\n            WHEN 3 THEN po.cost_to*{$project_exRates[12]}\n          END as usd_cost_to,\n\n          CASE po.time_type\n            WHEN 0 THEN po.time_from\n            WHEN 1 THEN po.time_from * 30\n            WHEN 2 THEN po.time_from * 356\n            ELSE po.time_from\n          END as time_from_days,\n          CASE po.time_type\n            WHEN 0 THEN po.time_to\n            WHEN 1 THEN po.time_to * 30\n            WHEN 2 THEN po.time_to * 356\n            ELSE po.time_to\n          END as time_to_days,\n          po.*, pr.user_id AS p_user_id,\n          fl.uid, fl.login, fl.uname, fl.usurname, fl.photo, fl.photosm, fl.spec, fl.is_profi, fl.is_pro, fl.is_team, fl.is_pro_test, \n          uc.ops_frl_plus as ops_plus, \n          uc.ops_frl_null as ops_null, \n          uc.ops_frl_minus as ops_minus, \n          fl.role, fl.warn, fl.is_banned, fl.ban_where, \n          rating_get(fl.rating, fl.is_pro, fl.is_verify, fl.is_profi) as rating, \n          zin(uc.ops_emp_plus) + zin(uc.sbr_opi_plus) - zin(uc.ops_emp_minus) - zin(uc.sbr_opi_minus) as ssum, \n          fl.is_verify, fl.reg_date, fl.modified_time, fl.photo_modified_time,\n          p.name AS spec_name,\n          cr.country_name,\n          COALESCE(sbr_meta.completed_cnt, 0) + COALESCE(uc.reserves_completed_cnt, 0) AS completed_cnt, -- старые БС + новые БС\n          ct.city_name,\n          uc.ops_emp_plus + uc.ops_frl_plus as ops_all_plus, uc.ops_emp_null + uc.ops_frl_null as ops_all_null, uc.ops_emp_minus + uc.ops_frl_minus as ops_all_minus,\n          uc.ops_emp_plus, uc.ops_emp_null, uc.ops_emp_minus,\n          uc.sbr_opi_plus, uc.sbr_opi_null, uc.sbr_opi_minus,\n          uc.paid_advices_cnt + uc.sbr_opi_plus + uc.ops_emp_plus + uc.tu_orders_plus + uc.projects_fb_plus as opinions_plus,\n          uc.sbr_opi_minus + uc.ops_emp_minus + uc.tu_orders_minus + uc.projects_fb_minus as opinions_minus\n          {$sel_blocked} \n          FROM projects_offers AS po\n          LEFT JOIN projects pr ON pr.id=po.project_id\n          INNER JOIN freelancer as fl ON po.user_id=fl.uid\n          {$join_blocked} \n          LEFT JOIN users_counters uc ON uc.user_id = fl.uid\n          LEFT JOIN professions p ON p.id=fl.spec\n          LEFT JOIN country cr ON cr.id=fl.country\n          LEFT JOIN city ct ON ct.id=fl.city\n          LEFT JOIN sbr_meta ON sbr_meta.user_id = fl.uid -- старые БС\n          WHERE (po.project_id = ?i ) AND (po.user_id > 0) {$and_blocked}" . ($bPermissions ? '' : ' AND fl.is_banned::integer = 0') . ($show_all ? '' : " AND (po.only_4_cust='f')") . ($user_id == 0 ? '' : ' AND (fl.uid<>' . $user_id . ')') . $filter . $order . $limit_str;
         $ret = $DB->rows($sql, $prj_id);
         $error = $DB->error;
         if ($error) {
             $error = parse_db_error($error);
         } else {
             //$ret = pg_fetch_all($res);
             $sql = "SELECT COUNT(*) as num\n            FROM projects_offers AS po\n            LEFT JOIN projects as pr ON po.project_id=pr.id\n            INNER JOIN freelancer as fl ON po.user_id=fl.uid\n            {$join_blocked} \n            LEFT JOIN professions p ON p.id=fl.spec\n            LEFT JOIN country cr ON cr.id=fl.country\n            LEFT JOIN city ct ON ct.id=fl.city\n            WHERE (po.project_id = ?i ) AND (po.user_id > 0) {$and_blocked}" . ($bPermissions ? '' : ' AND fl.is_banned::integer = 0') . ($show_all ? '' : " AND (po.only_4_cust='f')") . ($user_id == 0 ? '' : ' AND (fl.uid<>' . $user_id . ')') . $filter;
             $count = $DB->val($sql, $prj_id);
             if ($count && $ret) {
                 foreach ($ret as &$value) {
                     // Выбираем вложения.
                     if ($value['id']) {
                         $sql = 'SELECT a.id, a.prev_pict as prev, a.pict ' . 'FROM projects_offers_attach AS a ' . 'WHERE a.offer_id= ?i';
                         $value['attach'] = $DB->rows($sql, $value['id']);
                     }
                 }
             }
         }
     }
     // временное решение для plproxy. очень не красиво, но пока не перенесется большая часть таблиц,
     // придется видимо оставить так
     if (!empty($ret)) {
         $teams = new teams();
         $notes = new notes();
         $t = $teams->teamsFavorites($ret[0]['p_user_id'], $error);
         $n = $notes->GetNotes($ret[0]['p_user_id'], 0, $error);
         for ($i = 0; $i < count($ret); ++$i) {
             // избранные
             $ret[$i]['in_team'] = 0;
             for ($j = 0; $j < count($t); ++$j) {
                 if ($t[$j]['uid'] == $ret[$i]['uid']) {
                     $ret[$i]['in_team'] = $ret[$i]['uid'];
                     break;
                 }
             }
             // заметки
             $ret[$i]['n_text'] = '';
             for ($j = 0; $j < count($n); ++$j) {
                 if ($n[$j]['to_id'] == $ret[$i]['uid']) {
                     $ret[$i]['n_text'] = $n[$j]['n_text'];
                     break;
                 }
             }
         }
     }
     return $ret;
 }