<?php require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/stdf.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/projects.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/CFile.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/users.php"; $ret = 'ok:::-!-:::'; if (isset($_POST['project_id']) && isset($_POST['emp_id']) && is_array($_FILES['attach'])) { $prj_id = isset($_POST['project_id']) ? intval($_POST['project_id']) : 0; $project = new projects(); $prj = $project->GetPrj(0, $prj_id, 1); if ($prj['id'] == $prj_id && $_POST['emp_id'] == $prj['user_id']) { $attaches = array(); if (is_array($_FILES['attach']) && !empty($_FILES['attach']['name'])) { foreach ($_FILES['attach']['name'] as $key => $v) { if (!$_FILES['attach']['name'][$key]) { continue; } $attaches[] = new CFile(array('name' => $_FILES['attach']['name'][$key], 'type' => $_FILES['attach']['type'][$key], 'tmp_name' => $_FILES['attach']['tmp_name'][$key], 'error' => $_FILES['attach']['error'][$key], 'size' => $_FILES['attach']['size'][$key])); } } if ($attaches) { $files = array(); $error = false; $err = ''; $emp = new users(); $emp->GetUser($emp->GetField($prj['user_id'], $ee, 'login')); $dir = $emp->login; foreach ($attaches as $attach) { $attach->max_size = 2097152; $attach->proportional = 1;
$js_file[] = 'svg.js'; } $inner = "rating_inner.php"; $activ_tab = 11; break; case "project": require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/projects.php"; $prj_id = intval(trim($_GET['prjid'])); // todo: переполнение integer в БД. if ($prj_id < -2147483648 || $prj_id > 2147483647) { include ABS_PATH . "/404.php"; exit; } $projects = new projects(); $uid = $user->GetUid($err); $prj = $projects->GetPrj($uid, $prj_id); if ($prj['pro_only'] == "t" && !$_SESSION['pro_last'] && $_SESSION['login'] !== $prj['login'] && !hasPermissions('projects')) { header("Location: /proonly.php"); } $inner = "aboutprj_inner.php"; $activ_tab = 0; $page_keyw = "требуется дизайнер, программист, требуется менеджер, фотограф,\n переводчик, автор, журналист, ищу, работа, вакансия, услуги, дизайн,\n сайт, оптимизация, хостинг, флэш, баннер, портфолио, резюме, москва,\n петербург"; $page_descr = substr(preg_replace("'[\r\n\\s]+'", " ", input_ref($prj['descr'])), 0, 150); $page_title = $prj['name']; break; case "opinions": require_once $_SERVER['DOCUMENT_ROOT'] . "/user/opinions.action.php"; $inner = "../opinions_inner.php"; $activ_tab = 5; $css_file[] = 'opinions.css'; break;
/** * Добавляет жалобу на проект. * * @param integer $project_id ID проекта * @param integer $user_id ID пользователя * @param integer $type тип жалобы * @param string $msg текст жалобы * @param string $files имена загруженных скриншотов * * @return xajax responce */ function SendComplain($project_id, $type, $msg, $files) { global $session; session_start(); require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/uploader/uploader.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects_complains.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/userecho.php'; $objResponse = new xajaxResponse(); $project_id = (int) $project_id; $user_id = get_uid(false); $type = (int) $type; $msg = __paramValue('htmltext', $msg); $error = false; $project = new projects(); $prj = $project->GetPrj(0, $project_id, 1); $file_list = array(); if ($files != '') { $files = uploader::sgetFiles($files); if (!empty($files)) { $emp = new users(); $emp->GetUser($emp->GetField($prj['user_id'], $ee, 'login')); $dir = 'users/' . substr($emp->login, 0, 2) . '/' . $emp->login . '/upload/'; foreach ($files as $file) { $copy = uploader::remoteCopy($file['id'], 'file_projects', $dir); $rfiles[] = $copy->name; $file_list[] = array('name' => $copy->original_name, 'link' => WDCPREFIX . '/' . $copy->path . $copy->name); } $files = implode(',', $rfiles); } else { $files = ''; } } if (!$files) { $files = ''; } if (projects::IsHaveComplainType($project_id, $user_id, $type)) { // Уже жаловался return $objResponse; } $projects_complains = new projects_complains(); $type_name = $projects_complains->GetComplainType($type); $project_url = getAbsUrl(getFriendlyURL('project', $project_id)); $is_moder = $projects_complains->isComplainTypeModer($type); if ($is_moder) { $userEcho = new UserEcho(); $topic_message = $userEcho->constructMessage($project_url, $prj['name'], $msg, $file_list); $topicUrl = $userEcho->newTopicComplain($type_name, $topic_message, $file_list); if ($topicUrl) { messages::sendProjectComplain($user_id, $project_url, $prj['name'], $msg, $topicUrl); } else { $error = true; } } if (!$error) { $error = projects::AddComplain($project_id, $user_id, $type, $msg, $files, $is_moder && $topicUrl); } if ($error) { $objResponse->script("\$('abuse_project_popup').toggleClass('b-shadow_hide');"); if ($is_moder) { $objResponse->script("\$('abuse-cause-error').removeClass('b-layout__txt_hide'); abuseResetSelection();"); } else { $objResponse->script("\$\$('.abuse-btn-send').removeClass('b-button_rectangle_color_disable')"); } } else { $upl = array('umask' => uploader::umask('prj_abuse'), 'validation' => array('allowedExtensions' => array('jpg', 'gif', 'png', 'jpeg'), 'restrictedExtensions' => array()), 'text' => array('uploadButton' => iconv('cp1251', 'utf8', 'Прикрепить файлы'))); $objResponse->script("\n \$('abuse{$type}').addClass('abuse-checked');\n \$('abuse{$type}').getChildren().each(function(el) { \$(el).addClass('abuse-checked'); });\n "); $objResponse->script("uploader.create('abuse_uploader', " . json_encode($upl) . ');'); $objResponse->script("\$('prj_abuse_msg').set('value', '')"); $objResponse->script("\$\$('.abuse-btn-send').removeClass('b-button_disabled')"); $objResponse->script("\$('abuse_project_popup').toggleClass('b-shadow_hide');"); $objResponse->script("\$('project_abuse_success').removeClass('b-layout__txt_hide');"); $objResponse->script("\$('form_abuse').hide();"); $objResponse->script("setTimeout(\"\$('project_abuse_success').addClass('b-layout__txt_hide')\", 5000);"); if ($is_moder) { $objResponse->script("\$('abuse-cause-error').addClass('b-layout__txt_hide');"); } } return $objResponse; }
?> <br/> <?php } ?> </form> <?php } ?> </body> </html> <?php } else { if (preg_match('~/projects/\\?pid=([\\d]+)~i', $_SERVER['HTTP_REFERER'], $aMatches)) { $project = new projects(); $prj = $project->GetPrj(0, $aMatches[1], 1); $prj_kind = $prj['kind']; if ($prj_kind == 7) { echo '<html> <head> <title></title> </head> <body style="margin:0px; padding:0px"> ERROR </body> </html>'; die; } } ?> <html>
/** * Посылаем уведомление пользователю о его некорректном проекте исходя из жалоб пользователей * * @param array $ids имеет вид array('1-2') где 1 - ИД проекта, 2 - Тип жалобы */ function ProjectComplainsSend($ids, $connect = NULL) { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/projects.php"; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php'; if (!is_array($ids)) { $ids = array($ids); } foreach ($ids as $id) { list($project_id, $type) = explode("-", $id); $complains[$project_id][] = $type; } // Рассылаем foreach ($complains as $project_id => $types) { $project = new projects(); $prj = $project->GetPrj(0, $project_id, 1); $emp = new users(); $emp->GetUserByUID($prj['user_id']); if (!$emp->email || substr($emp->subscr, 4, 1) != '1' || $emp->is_banned == '1') { continue; } $prj['name'] = htmlspecialchars($prj['name'], ENT_QUOTES, 'CP1251', false); $text_type = ""; foreach ($types as $type) { switch ($type) { case '6': $this->subject = "Отредактируйте свой проект на FL.ru"; $message = "Пожалуйста, измените раздел/подраздел, в котором опубликован ваш проект «<a href='{$GLOBALS['host']}" . getFriendlyURL("project", $project_id) . $this->_addUrlParams('e') . "'>{$prj['name']}</a>». По сообщениям пользователей, проект размещен неверно: задание не соответствует специализации фрилансеров, которую вы указали.<br/><br/>"; $message .= "<a href='{$GLOBALS['host']}/public/?step=1&public={$project_id}" . $this->_addUrlParams('e') . "'>Перейти к редактированию проекта</a><br/><br/>"; $message .= "Шансы найти подходящего исполнителя выше, если ваш проект опубликован правильно. Вы можете ознакомиться с инструкцией по <a href='http://feedback.fl.ru/" . $this->_addUrlParams('e') . "'>редактированию</a> проектов в нашем сообществе поддержки."; break; case '7': $this->subject = "Укажите дополнительную информацию по вашему проекту на FL.ru"; $message = "По сообщениям пользователей, вы указали недостаточно информации при публикации проекта «<a href='{$GLOBALS['host']}" . getFriendlyURL("project", $project_id) . $this->_addUrlParams('e') . "'>{$prj['name']}</a>». Возможно, вам стоит описать подробнее суть задачи, дополнить техническое задание, указать сроки выполнения работы.<br/><br/>"; $message .= "<a href='{$GLOBALS['host']}/public/?step=1&public={$project_id}" . $this->_addUrlParams('e') . "'>Перейти к редактированию проекта</a><br/><br/>"; $message .= "Вы можете ознакомиться с инструкцией по <a href='http://feedback.fl.ru/" . $this->_addUrlParams('e') . "'>редактированию</a> проектов в нашем сообществе поддержки. "; break; case '8': $this->subject = "Укажите бюджет вашего проекта на FL.ru"; $message = "По сообщениям пользователей, вы не указали размер гонорара исполнителя в вашем проекте «<a href='{$GLOBALS['host']}" . getFriendlyURL("project", $project_id) . $this->_addUrlParams('e') . "'>{$prj['name']}</a>».<br/><br/>"; $message .= "Для того чтобы фрилансеры могли оценить соотношение «объем работы/оплата» и принять решение о подаче заявки на выполнение проекта, им необходимо знать бюджет. Пожалуйста, заполните поле «Бюджет» в форме редактирования проекта.<br/><br/>"; $message .= "<a href='{$GLOBALS['host']}/public/?step=1&public={$project_id}" . $this->_addUrlParams('e') . "'>Перейти к редактированию проекта</a><br/><br/>"; $message .= "Вы можете ознакомиться с инструкцией по <a href='http://feedback.fl.ru/" . $this->_addUrlParams('e') . "'>редактированию</a> проектов в нашем сообществе поддержки. "; break; default: continue; break; } $this->message = $this->GetHtml($emp->uname, $message, array('header' => 'default', 'footer' => 'feedback_default'), array('login' => $emp->login)); $this->recipient = $emp->uname . ' ' . $emp->usurname . ' [' . $emp->login . '] <' . $emp->email . '>'; $this->send('text/html'); //$this->SmtpMail('text/html'); projects::updateComplainCounters(array('is_send' => true), $project_id, "AND is_send = false AND type = {$type}"); } } }
} $action = trim($_GET['action']); if (!$action) { $action = trim($_POST['action']); } $can_modify = hasPermissions('projects'); switch ($action) { case "delete": $id = trim($_GET['prjid']); $projects = new projects(); $projects->DeletePublicProject($id, 0, $can_modify); break; case "edit": $id = trim($_GET['prjid']); if ($id) { $eprj = projects::GetPrj(0, $id, $can_modify); } break; case "allow": $id = trim($_GET['aid']); if ($id) { $error .= projects::Alow($id); } break; case "prj_change": $admin_edit = 1; include $rpath . "user/employer/setup/newproj.php"; break; } $kind = trim($_GET['kind']); if (!$page) {
} if (!$error) { $error = $prj_offer->SetSelected($po_id, $prj_id, $user_id, true); header('Location: /projects/index.php?pid=' . intval($prj_id)); exit; } } } break; case 'refuse': if ($PDA) { $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 {