function AddDialogueMessage($form) { global $session; session_start(); $objResponse = new xajaxResponse(); $offerIsBlocked = projects_offers::isOfferBlocked(false, get_uid(), $form['prj_id']); if ($offerIsBlocked) { $objResponse->alert('Ваше предложение заблокировано, вы не можете отправить это сообщение'); return $objResponse; } $prj = new projects(); $project = $prj->GetPrjCust(intval($form['prj_id'])); $is_pro = is_pro(); if ($project['pro_only'] == 't' && !$is_pro && !is_emp() && !hasPermissions('projects')) { if ($project['kind'] == 7) { if (contest::IsContestOfferExists($project['id'], get_uid(false))) { $is_pro = true; } } else { if (projects_offers::IsPrjOfferExists($project['id'], get_uid(false))) { $is_pro = true; } } } if ($project['pro_only'] == 't' && !$is_pro && $project['user_id'] != get_uid() && !hasPermissions('projects')) { $objResponse->alert('Данная функция доступна только пользователям с аккаунтом PRO.'); $objResponse->script("\$('savebtn').set('disabled', false);"); return $objResponse; } elseif ($project['verify_only'] == 't' && !($_SESSION['is_verify'] == 't') && $project['user_id'] != get_uid() && !hasPermissions('projects')) { $objResponse->alert('Данная функция доступна только верифицированным пользователям.'); $objResponse->script("\$('savebtn').set('disabled', false);"); return $objResponse; } if (!trim($form['po_text'])) { $objResponse->alert('Невозможно отправить пустое сообщение.'); $objResponse->script("\n \$('savebtn').set('disabled', false);\n "); return $objResponse; } if (!is_emp() && $form['from'] == 'emp') { $objResponse->script("\n \$('savebtn').set('disabled', false);\n "); $objResponse->alert('Невозможно отправить сообщение. Вы вышли из аккаунта работодателя.'); return $objResponse; } elseif (is_emp() && $form['from'] == 'frl') { $objResponse->script("\n \$('savebtn').set('disabled', false);\n "); $objResponse->alert('Невозможно отправить сообщение. Вы вышли из аккаунта фрилансера.'); return $objResponse; } //Не позволяем производить действия с заблокированным проектом if (projects::CheckBlocked(intval($form['prj_id']))) { $objResponse->script("document.location.href='/projects/index.php?pid=" . intval($form['prj_id']) . "'"); } elseif (intval($_SESSION['uid'])) { $po_id = intval($form['po_id']); //$po_text = substr(change_q_x($form['po_text'], false), 0, 1000); $po_text = antispam(trim($form['po_text'])); $po_text = preg_replace("/(\r\n|\r|\n){3,100}/i", "\r\n\r\n", $po_text); $po_commentid = intval($form['po_commentid']); $user_id = get_uid(false); $user = new users(); $user_name = $user->GetName($user_id, $error); $pod = new projects_offers_dialogue(); $project_dialogue = $pod->GetDialogueForOffer($po_id); $project = $pod->GetProjectFromDialogue($po_id); if (count($project_dialogue)) { for ($i = count($project_dialogue) - 1; $i >= 0; --$i) { if ($project_dialogue[$i]['user_id'] != $user_id) { $to_user_name = $project_dialogue[$i]['login']; break; } } } if (is_emp()) { $emp_read = true; $frl_read = false; } else { $emp_read = false; $frl_read = true; } if (!$po_commentid) { $error = $pod->AddDialogueMessage($po_id, $user_id, $po_text, $frl_read, $emp_read); $last_comment = $pod->GetLastDialogueMessage($user_id, $po_id); $objResponse->script("last_commentid={$last_comment};"); $objResponse->script("edit_block[{$po_id}] = ' <span><a href=\"javascript:void(null)\" onClick=\"answer({$po_id}, {$last_comment});markRead(\\'{$po_id}\\');\" class=\"internal\">Редактировать</a></span>';"); // $objResponse->script("alert(last_commentid);"); // $objResponse->script("alert(edit_block);"); } else { $error = $pod->SaveDialogueMessage($user_id, $po_text, $po_commentid, $po_id, false); if ($error == 1) { $objResponse->alert('Вы не можете редактировать комментарий, так как на него уже ответили.'); return $objResponse; } } $po_text = rtrim(ltrim($po_text, "\r\n")); $po_text = substr(change_q_x($po_text, false, true, '', false, false), 0, 1000); $po_text = stripslashes($po_text); if ($error == '') { $sPostText = $po_text; if ($project['kind'] != 4) { $sId = $po_commentid ? $po_commentid : $last_comment; $aComment = $pod->getDialogueMessageById($sId); if ($aComment['moderator_status'] === '0') { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/stop_words.php'; $stop_words = new stop_words(hasPermissions('projects')); $sPostText = $stop_words->replace($sPostText); } } if (!$po_commentid) { $objResponse->append('po_dialogue_talk_' . $po_id, 'innerHTML', '<div style="margin-bottom:8px;font-size:100%;"><span class="' . (is_emp() ? 'emp' : 'frl') . 'name11"><a href="/users/' . get_login($user_id) . '/" class="' . (is_emp() ? 'emp' : 'frl') . 'name11" title="' . $user_name['uname'] . ' ' . $user_name['usurname'] . '">' . $user_name['uname'] . ' ' . $user_name['usurname'] . '</a> [<a href="/users/' . $user_name['login'] . '/" class="' . (is_emp() ? 'emp' : 'frl') . 'name11" title="' . $user_name['login'] . '">' . $user_name['login'] . '</a>]</span> <span id="po_date_' . $last_comment . '">[' . strftime('%d.%m.%Y | %H:%M', time()) . ']</span><br /><div id="po_comment_' . $last_comment . '">' . reformat($sPostText, 50, 0, 0, 1) . '</div><div id="po_comment_original_' . $last_comment . '" style="display:none;">' . str_replace(' ', ' ', reformat($po_text, 1000, 0, 1)) . '</div></div>'); // $objResponse->call('resetfld', $po_id); $objResponse->script('dialogue_count[' . $po_id . '] = ' . (count($project_dialogue) + 1)); } else { $objResponse->assign('po_comment_' . $po_commentid, 'innerHTML', reformat($sPostText, 50, 0, 0, 1)); $objResponse->assign('po_comment_original_' . $po_commentid, 'innerHTML', str_replace(' ', ' ', reformat($po_text, 1000, 0, 1))); $objResponse->assign('po_date_' . $po_commentid, 'innerHTML', dateFormat('[d.m.Y | H:i]', date('Y-m-d H:i:s'))); } $objResponse->call('answer', $po_id); if ($to_user_name && $project['id'] && $project['name'] && !$po_commentid) { /*require_once($_SERVER['DOCUMENT_ROOT'] . "/classes/smail.php"); $smail = new smail(); if ($project['user_id'] == $user_id) { $error = $smail->NewPrjMessageOnOfferFrl($user_name['login'], $project['id'], $project['name'], $to_user_name, $po_text); } else { $error = $smail->NewPrjMessageOnOfferEmp($user_name['login'], $project['id'], $project['name'], $to_user_name, $po_text); }*/ } } else { $objResponse->alert('Ошибка сохранения.'); } } else { $objResponse->alert('Ошибка сохранения. Авторизируйтесь на сайте.'); } return $objResponse; }
/** * Редактирование личного сообщения. * * @param int $from_id UID пользователя-отправителя * @param int $modified_id UID пользователя изменявшего сообщение * @param int $id ID сообщения * @param string $msg_text текст сообщения * @param array $attachedfiles_file приаттаченные файлы * @param string $modified_reason причина редактирования * * @return bool true - успех, false - провал */ public function Update($from_id = 0, $modified_id = 0, $id = 0, $msg_text = '', $attachedfiles_file = array(), $modified_reason = '') { $bRet = false; if ($from_id && $id && $msg_text) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php'; $users = new users(); $login = $users->GetName($from_id, $err); $files = array(); if ($login) { if ($attachedfiles_file) { foreach ($attachedfiles_file as $file) { switch ($file['status']) { case 1: // добавляем файл $cFile = new CFile($file['id']); $cFile->table = 'file'; $ext = $cFile->getext(); $tmp_dir = 'users/' . substr($login['login'], 0, 2) . '/' . $login['login'] . '/contacts/'; $tmp_name = $cFile->secure_tmpname($tmp_dir, '.' . $ext); $tmp_name = substr_replace($tmp_name, '', 0, strlen($tmp_dir)); $cFile->_remoteCopy($tmp_dir . $tmp_name, true); $files[] = $cFile->id; break; case 3: // ранее добавленный $files[] = $file['id']; break; case 4: // удаляем файл $cFile = new CFile(); $cFile->Delete($file['id']); break; } } } $DB = new DB(); $DB->val('SELECT message_update(?i, ?i, ?, ?a, ?)', $id, $modified_id, $msg_text, $files, $modified_reason); $bRet = empty($DB->error); } } return $bRet; }
/** * Добавляет или редактирует данные размещения пользователя * @param integer $ufp_id id места размещения * @param string $title заголовок * @param string $descr краткое описание * @param string $full_descr дополнительное описание (подробнее) * @param array $sels массив с данными. В случае если значение масива целое, то берутся значения из портфолио. * в случае строкового значения с именами файлов загруженных работ. * @return boolean успех операции */ function UpdateFullDescription($ufp_id, $title, $descr, $full_descr, $sels) { global $DB; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/users.php"; $sql = "SELECT ufp_description_id, user_id FROM users_first_page WHERE id = ?i"; if (!($res = $DB->rows($sql, $ufp_id))) { return 0; } if (!$sels) { $sels = array(); } $user_id = $res[0]['user_id']; $users = new users(); $user = $users->GetName($user_id, $e); $login = $user['login']; $trans = 'COMMIT'; $sModer = ''; if (!$title) { $title = null; } if (!$descr) { $descr = null; } if (!$full_descr) { $full_descr = null; } if ($user_id == $_SESSION['uid'] && !hasPermissions('users') && ($title || $descr || $full_descr || $sels)) { // автор, не админ, не про - отправить на модерирование $sModer = ' , moderator_status = 0 '; } if ($d_id = $res[0]['ufp_description_id']) { $sql = "UPDATE ufp_description\n SET title = ? ,\n descr = ? ,\n full_descr = ?\n {$sModer}\n WHERE id = ?i"; } $sql2 = "DELETE FROM ufp_portfolio WHERE ufp_description_id = ?i RETURNING portfolio_id, jumptowork_count, pict"; if ($d_id && $DB->query($sql, $title, $descr, $full_descr, $d_id)) { $res = $DB->rows($sql2, $d_id); if (!$sels) { $sels = array(); } $DB->start(); // !!! удаление файлов с сервера надо сделать. // if() { $dels = array(); $olds = array(); if ($res) { foreach ($res as $k => $v) { if ($v['portfolio_id']) { $olds[$v['portfolio_id']] = $v; } else { $dels[$v['pict']] = $v['pict']; } } } $i = 0; $sql = "INSERT INTO ufp_portfolio (portfolio_id, pict, ufp_description_id, n_order, jumptowork_count) VALUES "; foreach ($sels as $key) { // !!! is_numeric надо заменить на нормальную проверку целого числа. $sql .= ($i++ ? ',' : '') . "(" . (is_numeric($key) ? "{$key}, NULL" : "NULL, '{$key}'") . ", {$d_id}, {$i}, " . (is_numeric($key) && $olds[$key] ? (int) $olds[$key]['jumptowork_count'] : 0) . ")"; unset($dels[$key]); } if ($i && !$DB->squery($sql)) { $trans = "ROLLBACK"; } if ($trans != "ROLLBACK") { $dir = "users/" . substr($login, 0, 2) . "/" . $login . "/upload/"; $cfile = new CFile(); foreach ($dels as $f) { if ($f) { $cfile->Delete(0, $dir, $f); $cfile->Delete(0, $dir, "sm_" . $f); } } } if ($trans == "ROLLBACK") { $DB->rollback(); } else { $DB->commit(); } } else { $sql = "INSERT INTO ufp_description (title, descr, full_descr) VALUES(?, ?, ?) RETURNING (id)"; $d_id = $DB->val($sql, $title, $descr, $full_descr); if ($d_id) { $sql = "UPDATE users_first_page ufp\n SET ufp_description_id = ?i\n FROM users_first_page ux\n WHERE ufp.from_date >= ux.from_date\n AND ufp.user_id = ux.user_id\n AND ufp.profession = ux.profession\n AND ux.id = ?i"; if ($DB->query($sql, $d_id, $ufp_id)) { if ($sels) { $i = 0; $sql = "INSERT INTO ufp_portfolio (portfolio_id, pict, ufp_description_id, n_order) VALUES "; foreach ($sels as $key) { // !!! is_numeric надо заменить на нормальную проверку целого числа. $sql .= ($i++ ? ',' : '') . "(" . (is_numeric($key) ? "{$key}, NULL" : "NULL, '{$key}'") . ", {$d_id}, {$i})"; } if ($i) { $DB->squery($sql); } } } else { $trans = "ROLLBACK"; } } else { $trans = "ROLLBACK"; } } if ($d_id && $trans != "ROLLBACK" && (!hasPermissions('users') || !$res[0]['ufp_description_id']) && ($title || $descr || $full_descr || $sels)) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/user_content.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/stop_words.php'; $stop_words = new stop_words(true); $nStopWordsCnt = $stop_words->calculate($title, $descr, $full_descr); $DB->insert('moderation', array('rec_id' => $ufp_id, 'rec_type' => user_content::MODER_FIRST_PAGE, 'stop_words_cnt' => $nStopWordsCnt)); } elseif ($d_id && $trans != "ROLLBACK" && (!hasPermissions('users') || !$res[0]['ufp_description_id']) && !$title && !$descr && !$full_descr && !$sels) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/user_content.php'; $aId = $DB->col('SELECT id FROM users_first_page WHERE ufp_description_id = ?i', $d_id); $DB->query('DELETE FROM moderation WHERE rec_id IN (?l) AND rec_type = ?i', $aId, user_content::MODER_FIRST_PAGE); } $memBuff = new memBuff(); $memBuff->flushGroup("firstpg"); $_SESSION['clr_ufp'][$ufp_id] = true; return 1; }
$close_comments = 't'; } else { $close_comments = 'f'; } if ($_POST['is_private']) { $is_private = 't'; } else { $is_private = 'f'; } $msg_name = substr_entity(change_q_x(antispam($_POST['name']), true, false), 0, 96, true); $attach = $_FILES['attach']; $attach_delete = is_array($_POST['delattach']) ? $_POST['delattach'] : array(); $attach_have = $_POST['have_attach']; $olduser = intval($_POST['olduser']); $us = new users(); $logins = $us->GetName($olduser, $error); $olduserlogin = $logins['login']; if (!$olduserlogin) { break; } if (!$t) { $base = 0; } else { $base = 1; } $attach = $_FILES['attach']; $files = array(); if (is_array($attach) && !empty($attach['name'])) { $nTotalSize = 0; $aAttach = blogs::GetAttach($thread, $attach_delete); if (is_array($aAttach) && count($aAttach)) {
<?php if ($theme['modified_id'] == $theme['fromuser_id']) { ?> [внесены изменения: <?php echo date("d.m.Y | H:i]", strtotimeEx($theme['modified'])); } else { ?> [Отредактировано модератором <?php if (!$mod) { ?> ( <?php $user = new users(); $mod_user = $user->GetName($theme['modified_id'], $err); print $mod_user['login'] . ' : ' . $mod_user['usurname'] . ' ' . $mod_user['uname']; ?> ) <?php } ?> <?php echo date("d.m.Y | H:i]", strtotimeEx($theme['modified'])); ?> <?php } } if ($theme['deleted'] && (hasPermissions('blogs') || $theme['fromuser_id'] == get_uid(false))) { ?>
<h4>Предупреждений: <span id="warncount-<?php echo $user->uid; ?> "><?php echo $user->warn ? $user->warn : 0; ?> </span> <?php echo $user->is_banned ? "<em>(Забанен)</em>" : ""; ?> </h4> <?php if ($user->is_banned || $user->ban_where) { $ban = $user->getBan($user->uid, $user->ban_where); $admin_user = new users(); $admin_user_info = $admin_user->GetName($ban['admin'], $ee); } ?> <div id="banreasonblock-<?php echo $user->uid; ?> " style="display: <?php echo $user->is_banned || $user->ban_where ? 'block' : 'none'; ?> ;"> <table><tbody> <tr> <th colspan="3"><strong id="banreasonblock-text-<?php echo $user->uid; ?> ">Блокировка <?php
/** * Модератор отвергает рассылку, деньги возращаются юзеру. * * @param integer $id ИД Рассылки * @param string $denied_reason Причина отказа * @param string $error Возвращает сообщение об ошибке * @return integer 1 - все сработало как надо, 0 - ошибка */ public function Deny_new($id, $reason, $row) { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/messages.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/account.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/users.php"; $this->error = ''; global $DB; /*$sql = 'SELECT * FROM mass_sending WHERE id = ? AND is_accepted IS NULL'; if (!($row = $DB->row($sql, $id))) { $this->error = 'Рассылка выбрана неправильно'; return FALSE; }*/ $account = new account(); $account->GetInfo($row['user_id']); if (!$account->id) { $this->error = 'Ошибка. Не опеределен счет пользователя.'; return FALSE; } $users = new users(); $user = $users->GetName($row['user_id'], $e); $login = $user['login']; $users->GetUser($login); $admin_id = users::GetUid($err, 'admin'); $text = "Здравствуйте!\n\nАдминистрацией нашего ресурса было принято решение отказать Вам в рассылке по каталогу по причине:\n\n\"\n" . stripslashes($reason) . "\n\"\n\nЭто сообщение было выслано автоматически и ответ на него не будет рассматриваться.\n\nНадеемся на понимание, Команда Free-lance.ru. \n\nИсходный текст Вашей рассылки:\n\n---\n" . html_entity_decode($row['msgtext'], ENT_QUOTES) . "\n--- "; // уведомляем автора о разрешении рассылки $smail = new smail(); $smail->subject = "Ваша заявка на рассылку не прошла модерацию"; $smail->recipient = $users->uname . " " . $users->usurname . " [" . $users->login . "] <" . $users->email . ">"; $reason = $smail->ToHtml($reason); $body = "Ваша заявка на рассылку была отклонена модераторами сайта Free-lance.ru.<br/> \n Причина:<br/>\n ---<br/>\n {$reason}<br/>\n ---<br/>\n "; $smail->message = $smail->GetHtml($users->uname, $body, array('header' => 'default', 'footer' => 'simple')); $smail->send('text/html'); messages::Add($admin_id, $login, $text, '', 1); if (!$DB->query("UPDATE mass_sending SET denied_reason = ?, is_accepted=false, decided_time=now() WHERE id=?", $reason, $id)) { $this->error = 'Произошла ошибка при установлении статуса "Отказано".'; return FALSE; } return TRUE; }
$po_id = intval($_GET['id']); $prj_id = intval($_GET['pid']); $user_id = intval($_GET['uid']); $prj = new projects(); $project = $prj->GetPrj($emp_id, $prj_id, 1); if (!$project) { $content = '404.php'; include '../template2.php'; exit; } if (isset($_GET['refuse'])) { $user = new users(); $prj_offer = new projects_offers(); $po_reason = intval($_GET['refuse']); $emp_id = get_uid(false); $emp_name = $user->GetName($emp_id, $error); //Не позволяем производить действия с заблокированным проектом if (projects::CheckBlocked(intval($prj_id))) { $objResponse->script("document.location.href='/projects/index.php?pid=" . intval($prj_id) . "'"); } else { $error = ''; $project = $prj->GetPrjCust($prj_id); if ($project['exec_id'] == $user_id) { $error = $prj->ClearExecutor($prj_id, $emp_id); } if (!$error) { $prj_offer->SetRefused($po_id, $prj_id, $user_id, $po_reason, true); header('Location: /projects/index.php?pid=' . intval($prj_id)); exit; } }
echo $_GET["closed"] ? "<b>Закрытые</b> (" . $conted_prj["closed"] . ")" : '<a class="blue" href="#" onclick="javascript: document.frm.openclose.value=2; document.frm.submit();"><b>Закрытые</b></a> (' . $conted_prj["closed"] . ')'; ?> </td> <td align="right" style="padding:15px 10px 0px 0px;"><a href="/public/"><IMG alt="Публиковать ваш проект" align="absmiddle" src="/images/post_button.gif" width="178" height="28" border="0"></a></td> </tr> </table> <br> <?php $i = 0; if ($prjs) { // print "<pre>"; // print_r($prjs); // print "</pre>"; setlocale(LC_ALL, 'ru_RU.CP1251'); $usr = new users(); $name = $usr->GetName($_SESSION["uid"], $err); $dir = $name["login"]; ?> <div style="height:1px; background:#d7d7d7; width:920px; margin:5px 0;"></div><?php $pj = 0; $pn = sizeof($prjs); foreach ($prjs as $ikey => $prj) { $spec = projects::getPrimarySpec($prj['id']); $prj['category'] = $spec['category_id']; if (is_new_prj($prj['post_date'])) { $blink = !$is_emp && $prj['pro_only'] == 't' && !$is_pro && $uid != $prj['user_id'] && !hasPermissions('projects') ? "/proonly.php" : "/blogs/view.php?tr=" . $prj['thread_id']; } else { $blink = !$is_emp && $prj['pro_only'] == 't' && !$is_pro && $uid != $prj['user_id'] && !hasPermissions('projects') ? "/proonly.php" : "/projects/?pid=" . $prj['id'] . '&f=1'; } $plink = "/users/" . $prj['login'] . "/project/?prjid=" . $prj['id']; if ($prj['payed'] && $prj["kind"] != 2) {