/** * Скрывает или отображает платные проекты. * * @see projects_filter::ShowClosedProjects() * @see projects_filter::initClosedProjects() * * @param string $id id определенного или all для всех * @param string $type скрыть (hide) или показать (unhide) * @param int $kind тип текущей закладки главной страницы (см. new_projects::getProjects()) * @param int $page номер текущей страницы. * @param bool $filter включен ли фильтр у юзера. * * @return object xajaxResponse */ function _HideProject($id, $type, $kind, $page, $filter) { session_start(); $objResponse = new xajaxResponse(); $all = $id == 'all'; $id = (int) $id; $uid = $_SESSION['uid']; if ($type == 'hide') { $prj = new new_projects(); $content = $prj->SearchDB((int) $kind, 2, 0, $uf, true, true); $prjs = $prj->getProjects($num_prjs, (int) $kind, 2, true, $uf, true, true); $num = 0; $nDH = $nH; $_SESSION['ph'][$id] = base64_encode(projects::GetField($id, 'name')); $_SESSION['top_payed']--; $objResponse->assign("project-item{$id}", 'outerHTML', ''); if ($filter) { $prj_filter = new projects_filters(); $uf = $prj_filter->GetFilter($uid, $error); } if ($prjs[$num]) { $this_kind = $prjs[$num]['kind']; $this_uid = get_uid(false); $this_pro_last = $_SESSION['pro_last']; $this_is_pro = payed::CheckPro($_SESSION['login']); $this_edit_mode = hasPermissions('projects'); if ($this_uid) { $this_user_role = $_SESSION['role']; } $this_project = $prjs[$num]; $row = $this_project; if ($this_edit_mode || $this_project['kind'] == 2 || $this_project['user_id'] == $this_uid || $this_project['offer_id'] || $this_pro_last) { $this_show_data = 1; $row['show_data'] = 1; } else { $this_show_data = 0; $row['show_data'] = 0; } $descr = $row['descr']; $descr = preg_replace("/^ /", "", $descr); $descr = preg_replace("/(\n) /", "\$1", $descr); $descr = reformat(strip_tags(LenghtFormatEx($descr, 180), "<br />"), 50, 1, 0, 1); $descr = preg_replace("//", " ", $descr); $row['descr'] = $descr; $row['t_is_payed'] = $this_project['payed'] && $this_project['kind'] != 2 && $this_project['kind'] != 7; $row['t_is_contest'] = $this_project['kind'] == 2 || $this_project['kind'] == 7; $row['t_pro_only'] = $this_project['pro_only'] == "t"; $row['t_prefer_sbr'] = $this_project['prefer_sbr'] == "t"; $row['priceby'] = $this_project['priceby']; $row['t_is_adm'] = hasPermissions('projects'); $row['t_is_ontop'] = strtotime($this_project['top_to']) >= time(); $row['unread'] = (int) $this_project['unread_p_msgs'] + (int) $this_project['unread_c_msgs'] + (int) $this_project['unread_c_prjs']; $row['t_is_proonly'] = $this_project['pro_only'] == 't' && !$_SESSION['pro_last'] && !$this_edit_mode && $this_uid != $this_project['user_id']; $row['friendly_url'] = getFriendlyURL('project', array('id' => $row['id'], 'name' => $row['name'])); $attaches = projects::GetAllAttach($this_project['id']); $attaches = !$attaches ? array() : $attaches; foreach ($attaches as $k => $a) { $a['virus'] = is_null($a['virus']) ? $a['virus'] : bindec($a['virus']); $attaches[$k] = $a; } $row['attaches'] = $this_project['attaches'] = $attaches; $is_ajax = true; $can_change_prj = hasPermissions("projects"); ob_start(); require $_SERVER['DOCUMENT_ROOT'] . '/projects/tpl.lenta-item.php'; $prj_html = ob_get_contents(); ob_end_clean(); $objResponse->script('ndiv = new Element("div", {id: "project-item' . $prjs[$num]['id'] . '", class: "b-post b-post_pad_10_15_15_20 b-post_margleft_-20 b-post_margright_-15 b-post_margbot_15 b-layout b-post_relative b-post_overflow_hidden' . ($row['is_color'] == 't' ? ' b-post_bg_fffded' : '') . '"});'); $objResponse->script('ndiv.inject($("projects-list").getLast("div[id^=project-item]"), "after");'); $objResponse->assign("project-item" . $prjs[$num]['id'], "innerHTML", $prj_html); } } else { if ($all && $_SESSION['ph']) { $nDH = -1 * $nH * count($_SESSION['ph']); unset($_SESSION['ph']); } else { $nDH = -1 * $nH; unset($_SESSION['ph'][$id]); if (!$_SESSION['ph']) { unset($_SESSION['ph']); } } if ($filter) { $prj_filter = new projects_filters(); $uf = $prj_filter->GetFilter($uid, $error); } $prj = new new_projects(); $content = $prj->SearchDB((int) $kind, (int) $page, 0, $uf, true, true); $objResponse->assign("projects-list", "innerHTML", $content); } if ($_SESSION['ph']) { $ccph = array_keys($_SESSION['ph']); } setcookie("ph[{$uid}]", $ccph ? implode(',', $ccph) : '', time() + 60 * 60 * 24 * 30, '/'); if ($kind == 2 || $kind == 7) { $prjWord_1 = 'скрытый конкурс'; $prjWord_2 = 'скрытых конкурса'; $prjWord_5 = 'скрытых конкурсов'; } elseif ($kind == 4) { $prjWord_1 = 'скрытая вакансия'; $prjWord_2 = 'скрытых вакансии'; $prjWord_5 = 'скрытых вакансий'; } else { $prjWord_1 = 'скрытый проект'; $prjWord_2 = 'скрытых проекта'; $prjWord_5 = 'скрытых проектов'; } $cnt = ""; if (sizeof($_SESSION['ph']) && $_SESSION['uid']) { $cnt = sizeof($_SESSION['ph']) . " " . ending(sizeof($_SESSION['ph']), $prjWord_1, $prjWord_2, $prjWord_5); } $objResponse->assign("hide_project_count", "innerHTML", $cnt); // если до этого проекты отображались в режиме "Только название", то сворачиваем их $objResponse->call("rollProjects"); return $objResponse; }
if ($prj['name']) { ?> <strong><?php echo $prj['name']; ?> </strong><?php } ?> <br> <?php echo reformat($prj['descr'], 96); ?> <br><br> <?php $projects = new projects(); $attach = $projects->GetAllAttach($prj['id']); for ($j = 0; $j < count($attach); ++$j) { if ($attach[$j]['name']) { print '<div class="flw_offer_attach"><a href="/users/' . $prj['login'] . '/upload/' . $attach[$j]['name'] . '" target="_blank">Загрузить</a> (' . $attach[$j]['ftype'] . '; ' . ConvertBtoMB($attach[$j]['size']) . ' )</div>'; } } ?> <?php if ($uid != $_SESSION['uid'] && $prj['closed'] == 'f') { ?> <form action="/contacts/?from=<?php echo $user->login; ?> #form" method="post"><input type="hidden" name="prjname" value="<?php echo $prj['name'] ? $prj['name'] : 'заголовок отсутствует'; ?>
/** * Отдает HTML для Редактирование проектов и конкурсов * * @param object $objResponse xajaxResponse * @param string $rec_id идентификатор записи * @param string $rec_type тип записи * @param array $aParams дополнительные параметры с UID отправителя. остальные - опционально * @return string */ function _admEditProjectsParseForm(&$objResponse, $rec_id = '', $rec_type = '', $aParams = array()) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/city.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/country.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/professions.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/attachedfiles.php'; $sTmpKey = md5(uniqid($_SESSION['uid'])); $tmpPrj = new tmp_project($sTmpKey); $prj = $tmpPrj->init(1, $rec_id); $tmpPrj->fix(); // $aFolders = projects::getUserFolders( $prj['user_id'] ); // папки $remTPeriod = $tmpPrj->getRemainingTopPeriod($remTD, $remTH, $remTM, $remtverb); // закрепление // страны и города $countries = country::GetCountries(); if ($prj['country']) { $cities = city::GetCities($prj['country']); } // разделы $categories = professions::GetAllGroupsLite(); $professions = professions::GetAllProfessions(); array_group($professions, 'groupid'); $professions[0] = array(); $project_categories = new_projects::getSpecs($rec_id); if (empty($project_categories)) { $project_categories[] = array('category_id' => 0, 'subcategory_id' => 0); } ob_start(); include_once $_SERVER['DOCUMENT_ROOT'] . '/user/adm_edit_tpl/projects.php'; $sHtml = ob_get_contents(); ob_end_clean(); // текст $sOnReady = "if(document.getElementById('adm_edit_descr')) \n document.getElementById('adm_edit_descr').value = (\$('adm_edit_descr_source')? \$('adm_edit_descr_source').value : null);"; // аттачи $sAttach = getAttachedFilesJs(projects::GetAllAttach($rec_id), tmp_project::MAX_FILE_COUNT, tmp_project::MAX_FILE_SIZE, 'project'); $objResponse->assign('h4_adm_edit', 'innerHTML', 'Редактировать ' . ($rec_type == '7' ? 'конкурс' : 'проект')); $objResponse->assign('div_adm_edit', 'innerHTML', $sHtml); $objResponse->script("\$('div_adm_reason').setStyle('display', 'none');"); $objResponse->script("adm_edit_content.editMenuItems = ['', 'Основное', 'Файлы', 'Платные услуги'];"); $objResponse->script('adm_edit_content.edit();'); $objResponse->script($sAttach); $objResponse->script($sOnReady); $objResponse->script("var mx = new MultiInput('adm_edit_professions','category_line'); mx.init();"); $objResponse->script('xajax_getAdmEditReasons(' . admin_log::ACT_ID_EDIT_PROJECTS . ');'); // для конкурса даты окончания и определения победителей if ($prj['kind'] == 7) { $objResponse->script("new tcal ({ 'formname': 'adm_edit_frm', 'controlname': 'adm_edit_end_date', 'iconId': 'end_date_btn', 'clickEvent': function(){ adm_edit_content.hideError('end_date'); } });"); $objResponse->script("new tcal ({ 'formname': 'adm_edit_frm', 'controlname': 'adm_edit_win_date', 'iconId': 'win_date_btn', 'clickEvent': function(){ adm_edit_content.hideError('win_date'); } });"); } }
projects::SetWinner($_SESSION['uid'], $winner); //header("Location: /blogs/view.php?tr=$thread"); header("Location: /blogs/view.php?tr={$thread}&pagefrom=" . intval($_POST['pagefrom']) . "&ord=" . $_GET["ord"]); } $base = (int) (!!trim($_GET['t'])); //$theme = intval(trim($_GET['b'])); $blog = new blogs(); list($gr_name, $gr_id, $gr_base) = $blog->GetThread($thread, $err, $mod, $uid); $main = $blog->id; if ($gr_base == 5) { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/projects.php"; $winner = projects::CheckWinner($gr_id); } if ($blog->id_gr && ($blog->base == 3 || $blog->base == 5)) { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/projects.php"; $attach_ar = projects::GetAllAttach($blog->id_gr); } if ($gr_base == 3 || $gr_base == 4 || $gr_base == 5 || !isset($gr_base)) { $grey_blogs = 0; } if (($gr_base == 3 || $gr_base == 5) && !hasPermissions('blogs')) { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/projects.php"; if (projects::CheckProOnly($thread) == 't' && !$_SESSION['pro_last'] && $_SESSION['login'] !== $blog->login && !is_emp()) { header("Location: /proonly.php"); } } if ($blog->deleted && !hasPermissions('blogs')) { include ABS_PATH . "/404.php"; exit; } if ($blog->is_private && $uid != $blog->fromuser_id && !hasPermissions('blogs')) {
/** * Вспомогательная функция для получения аттачей и профессий для проектов/конкурсов * * @param type $aReturn */ function _getProjectsAttachSpecs(&$aReturn = array()) { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/projects.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/professions.php"; // аттачи foreach ($aReturn as $key => $aOne) { $aReturn[$key]['attach'] = projects::GetAllAttach($aOne['id']); $aReturn[$key]['specs'] = projects::getSpecsStr($aOne['id'], ' / ', ', ', true); $aReturn[$key]['specs'] = str_replace('<a', '<a target="_blank"', $aReturn[$key]['specs']); } }
exit; } require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/professions.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects.php'; $sPrjId = __paramInit('string', 'pid'); $aReasons = admin_log::getAdminReasons(9); $js_file[] = 'banned.js'; if ($sPrjId) { if (!preg_match('/^[\\d]+$/', $sPrjId)) { header_location_exit('/404.php'); } require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/projects.php"; $log = $admin_log->getLogProjById($nCount, $sPrjId); $obj_project = new projects(); $project = $obj_project->GetPrjCust($sPrjId); $project_attach = $obj_project->GetAllAttach($sPrjId); $project_history = $obj_project->GetPrjHistory($sPrjId); } else { $_SESSION['admin_log_proj'] = $_SERVER['REQUEST_URI']; $actions = $admin_log->getAdminActions(admin_log::OBJ_CODE_PROJ); $admins = $admin_log->getAdminsInLog(admin_log::OBJ_CODE_PROJ); $all_specs = professions::GetAllProfessions('', 0, 1); $categories = professions::GetAllGroupsLite(true); $filter_specs = ''; $spec_now = 0; for ($i = 0; $i < sizeof($all_specs); $i++) { if ($all_specs[$i]['groupid'] != $spec_now) { $spec_now = $all_specs[$i]['groupid']; $filter_specs .= "filter_specs[" . $all_specs[$i]['groupid'] . "]=["; } $filter_specs .= "[" . $all_specs[$i]['id'] . ",'" . $all_specs[$i]['profname'] . "']";
/** * @param $frm - данные запроса * @param $type - тип страницы, с которой была запрошена форма быстрого редактирования проекта * 1 - лента на главной, * 2 - редактируется конкурс, * 3 - страница проекта в профиле работодателя, * 4 - проект в списке в профиле работодателя * */ function quickprjedit_save_prj($frm, $type) { $objResponse = new xajaxResponse(); if (hasPermissions('projects')) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects.php'; $oprj = new new_projects(); $project = $oprj->getPrj($frm['id']); if ($project['id']) { $objResponse->script('popupQEditPrjHideErrors();'); $key = $frm['tmpid']; $tmpPrj = new tmp_project($key); $tmpPrj->init(2); $errors = array(); $frm['name'] = trim($frm['name']); $frm['descr'] = trim($frm['descr']); if ($frm['link'] == 'Адрес сайта') { $frm['link'] = ''; } $frm['link'] == trim($frm['link']); if (!empty($frm['link'])) { if (strpos($frm['link'], 'http://') === 0) { $protocol = 'http://'; } if (strpos($frm['link'], 'https://') === 0) { $protocol = 'https://'; } if ($protocol == '') { $protocol = 'http://'; } $frm['link'] = $protocol . ltrim($frm['link'], $protocol); if (!is_url($frm['link'])) { $errors[] = 'logourl'; } } if (empty($frm['name'])) { $errors[] = 'name'; } if (empty($frm['descr'])) { $errors[] = 'descr'; } if ($frm['pf_city']) { $frm['city'] = $frm['pf_city']; } if ($project['kind'] == 7) { if (!preg_match("/^([0-9]{1,2})\\-([0-9]{1,2})\\-([0-9]{4})\$/", $frm['end_date'], $o1) || !checkdate($o1[2], $o1[1], $o1[3])) { $errors[] = 'end_date'; } if (!preg_match("/^([0-9]{1,2})\\-([0-9]{1,2})\\-([0-9]{4})\$/", $frm['win_date'], $o2) || !checkdate($o2[2], $o2[1], $o2[3])) { $errors[] = 'win_date'; } if (!in_array('end_date', $errors) && mktime(0, 0, 0, $o1[2], $o1[1], $o1[3]) <= mktime(0, 0, 0)) { $errors[] = 'end_date_past'; } if (!in_array('end_date', $errors) && mktime(0, 0, 0, $o2[2], $o2[1], $o2[3]) <= mktime(0, 0, 0, $o1[2], $o1[1], $o1[3])) { $errors[] = 'win_date_past'; } } if (!count($errors)) { $c = $frm['categories']; $sc = $frm['subcategories']; foreach ($frm['categories'] as $sKey => $value) { if ($value == 0) { continue; } $check[] = $value . '_' . $sc[$sKey]; } $uniq = array_unique($check); foreach ($uniq as $val) { list($cat, $subcat) = explode('_', $val); $check_array[$cat][] = $subcat; } $categories = array(); foreach ($check_array as $k => $val) { if (count($val) > 1 && array_search(0, $val) !== false) { $categories[] = array('category_id' => $k, 'subcategory_id' => 0); unset($check_array[$k]); } else { foreach ($val as $m => $v) { $categories[] = array('category_id' => $k, 'subcategory_id' => $v); } } } $tmpPrj->setProjectField('name', change_q_x($frm['name']), true); $tmpPrj->setProjectField('descr', change_q_x($frm['descr'], false, true, '', false, false)); $tmpPrj->setProjectField('pro_only', $frm['pro_only'] == 1 ? 't' : 'f'); $tmpPrj->setProjectField('verify_only', $frm['verify_only'] == 1 ? 't' : 'f'); $tmpPrj->setProjectField('strong_top', (int) $frm['strong_top']); $tmpPrj->setProjectField('prefer_sbr', $frm['prefer_sbr'] == 1 ? 't' : 'f'); $tmpPrj->setProjectField('urgent', $frm['is_urgent'] == 1 ? 't' : 'f'); $tmpPrj->setProjectField('hide', $frm['is_hide'] == 1 ? 't' : 'f'); switch ($frm['kind']) { case 1: $tmpPrj->setProjectField('country', 0); $tmpPrj->setProjectField('city', 0); $tmpPrj->setProjectField('kind', $frm['kind']); break; case 4: $tmpPrj->setProjectField('country', $frm['country']); $tmpPrj->setProjectField('city', $frm['city']); $tmpPrj->setProjectField('kind', $frm['kind']); break; } if ($project['kind'] == 7) { $tmpPrj->setProjectField('end_date', $frm['end_date']); $tmpPrj->setProjectField('win_date', $frm['win_date']); $tmpPrj->clearWinners(); } $tmpPrj->setCategories($categories); $tmpPrj->setProjectField('link', $frm['link']); $tmpPrj->setProjectField('is_color', $frm['is_color'] == 1 ? 't' : 'f'); $tmpPrj->setProjectField('is_bold', $frm['is_bold'] == 1 ? 't' : 'f'); $tmpPrj->setAddedTopDays($frm['top_ok'] == 1 ? $frm['top_days'] : 0); if (!$project['folder_id']) { $tmpPrj->setProjectField('folder_id', 0); } require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/attachedfiles.php'; $attachedfiles = new attachedfiles($frm['attachedfiles_session']); $attachedfiles_files = $attachedfiles->getFiles(array(1, 3, 4)); $tmpPrj->addAttachedFiles($attachedfiles_files); $attachedfiles->clear(); $tmpPrj->saveProject(get_uid(false), $ttt); require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/project_exrates.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/stop_words.php'; $stop_words = new stop_words(hasPermissions('projects')); $objResponse->script('popupQEditPrjHide();'); switch ($type) { case 1: case 4: // Лента проектов global $session; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects.php'; $prj_id = $project['id']; $obj_project = new new_projects(); $tproject = $obj_project->getProjects($num, -1, 1, false, null, false, true, $prj_id); $this_kind = $tproject[0]['kind']; $this_uid = get_uid(false); $this_pro_last = $_SESSION['pro_last']; $this_is_pro = payed::CheckPro($_SESSION['login']); $this_edit_mode = hasPermissions('projects'); if ($this_uid) { $this_user_role = $_SESSION['role']; } $this_project = $tproject[0]; $row = $this_project; if ($this_edit_mode || $this_project['kind'] == 2 || $this_project['user_id'] == $this_uid || $this_project['offer_id'] || $this_pro_last) { $this_show_data = 1; $row['show_data'] = 1; } else { $this_show_data = 0; $row['show_data'] = 0; } $descr = $row['descr']; $descr = preg_replace('/^ /', "", $descr); $descr = preg_replace("/(\n) /", "\$1", $descr); $descr = reformat(strip_tags(LenghtFormatEx($descr, 180), '<br />'), 50, 1, 0, 1); $descr = preg_replace("//", ' ', $descr); $row['descr'] = $descr; $row['t_is_payed'] = $this_project['payed'] && $this_project['kind'] != 2 && $this_project['kind'] != 7; $row['t_is_contest'] = $this_project['kind'] == 2 || $this_project['kind'] == 7; $row['t_pro_only'] = $this_project['pro_only'] == 't'; $row['t_verify_only'] = $this_project['verify_only'] == 't'; $row['t_hide'] = $this_project['hide'] == 't'; $row['t_urgent'] = $this_project['urgent'] == 't'; $row['t_prefer_sbr'] = $this_project['prefer_sbr'] == 't'; $row['priceby'] = $this_project['priceby']; $row['t_is_adm'] = hasPermissions('projects'); $row['t_is_ontop'] = strtotime($this_project['top_to']) >= time(); $row['unread'] = (int) $this_project['unread_p_msgs'] + (int) $this_project['unread_c_msgs'] + (int) $this_project['unread_c_prjs']; $row['t_is_proonly'] = $this_project['pro_only'] == 't' && !$_SESSION['pro_last'] && !$this_edit_mode && $this_uid != $this_project['user_id']; $attaches = projects::GetAllAttach($this_project['id']); $attaches = !$attaches ? array() : $attaches; foreach ($attaches as $k => $a) { $a['virus'] = is_null($a['virus']) ? $a['virus'] : bindec($a['virus']); $attaches[$k] = $a; } $row['attaches'] = $this_project['attaches'] = $attaches; $is_ajax = true; $can_change_prj = hasPermissions('projects'); $row['friendly_url'] = getFriendlyURL('project', $row['id']); ob_start(); if ($type == 1) { $project = projects::initData($row); require_once $_SERVER['DOCUMENT_ROOT'] . '/projects/tpl.lenta-item.php'; } else { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/employer.php'; $user = new employer(); $user->GetUserByUID($this_project['user_id']); require_once $_SERVER['DOCUMENT_ROOT'] . '/projects/tpl.employer-project-item.php'; } $html_data = ob_get_contents(); ob_end_clean(); $objResponse->assign("project-item{$prj_id}", 'innerHTML', $html_data); if ($row['is_color'] == 't') { $objResponse->script("\$('project-item{$prj_id}').addClass('b-post_bg_fffded')"); } else { $objResponse->script("\$('project-item{$prj_id}').removeClass('b-post_bg_fffded')"); } //$objResponse->script('alert("Лента");'); //$objResponse->script('window.location.reload();'); break; case 2: // Конкурс //$objResponse->script('alert("Конкурс");'); $project_exRates = project_exrates::GetAll(); $translate_exRates = array(0 => 2, 1 => 3, 2 => 4, 3 => 1); global $session; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/contest.php'; $prj_id = $project['id']; $obj_project = new projects(); $project = $obj_project->GetPrjCust($prj_id); if (hasPermissions('projects')) { $project_history = $obj_project->GetPrjHistory($prj_id); } $project_attach = $obj_project->GetAllAttach($prj_id); $contest = new contest($project['id'], $uid, is_emp(), $project['user_id'] == $uid, hasPermissions('projects'), is_pro()); $contest->GetOffers((string) $_GET['filter']); $project['contest_end'] = mktime() > strtotime($project['end_date']); $project['contest_win'] = mktime() > strtotime($project['win_date']); if (trim($project['contacts']) != '') { $contacts_employer = unserialize($project['contacts']); $empty_contacts_employer = 0; foreach ($contacts_employer as $name => $contact) { if (trim($contact['value']) == '') { $empty_contacts_employer++; } } $is_contacts_employer_empty = count($contacts_employer) == $empty_contacts_employer; } ob_start(); require_once $_SERVER['DOCUMENT_ROOT'] . '/projects/contest_item.php'; $html_data = ob_get_contents(); ob_end_clean(); $objResponse->assign("contest_info_{$prj_id}", 'innerHTML', $html_data); break; case 3: // Проект $project_exRates = project_exrates::GetAll(); $translate_exRates = array(0 => 2, 1 => 3, 2 => 4, 3 => 1); $prj_id = $project['id']; $obj_project = new projects(); $project = $obj_project->GetPrjCust($prj_id); if (trim($project['contacts']) != '') { $contacts_employer = unserialize($project['contacts']); $empty_contacts_employer = 0; foreach ($contacts_employer as $name => $contact) { if (trim($contact['value']) == '') { $empty_contacts_employer++; } } $is_contacts_employer_empty = count($contacts_employer) == $empty_contacts_employer; } $project_attach = $obj_project->GetAllAttach($prj_id); ob_start(); require_once $_SERVER['DOCUMENT_ROOT'] . '/projects/tpl.prj-main-info.php'; $html_data = ob_get_contents(); ob_end_clean(); $objResponse->assign("project_info_{$project['id']}", 'innerHTML', $html_data); break; default: $objResponse->script('window.location.reload();'); break; } } else { $tab1 = 0; $tab2 = 0; foreach ($errors as $error) { switch ($error) { case 'end_date': $objResponse->script('$("popup_qedit_prj_fld_err_txt_cal1").set("html", "Неправильная дата");'); $objResponse->script('popupQEditPrjShowError("cal1");'); break; case 'win_date': $objResponse->script('$("popup_qedit_prj_fld_err_txt_cal2").set("html", "Неправильная дата");'); $objResponse->script('popupQEditPrjShowError("cal2");'); break; case 'end_date_past': $objResponse->script('$("popup_qedit_prj_fld_err_txt_cal1").set("html", "Дата окончания конкурса не может находиться в прошлом");'); $objResponse->script('popupQEditPrjShowError("cal1");'); break; case 'win_date_past': $objResponse->script('$("popup_qedit_prj_fld_err_txt_cal2").set("html", "Дата определения победителя должна быть больше даты окончания конкурса");'); $objResponse->script('popupQEditPrjShowError("cal2");'); break; case 'logourl': $objResponse->script('$("popup_qedit_prj_fld_err_pay").setStyle("display","block");'); $objResponse->script('$("popup_qedit_prj_fld_err_pay_txt").set("html", "Ссылка для логотипа указана не верно");'); break; default: $objResponse->script('popupQEditPrjShowError("' . $error . '");'); break; } if (in_array($error, array('name', 'descr', 'location', 'end_date', 'win_date', 'end_date_past', 'win_date_past'))) { ++$tab1; } elseif (in_array($error, array('logourl'))) { ++$tab2; } } if ($tab1) { $objResponse->script('popupQEditPrjMenu(1)'); } elseif ($tab2) { $objResponse->script('popupQEditPrjMenu(2)'); } } } $objResponse->script('popupQEditIsProcess = false;'); } return $objResponse; }
/** * Функция генерации ленты проектов. * * @param int $num_prjs проектов на странице * @param array $projects массив проектов (результат работы projects::GetProjects()) * @param int $kind закладка * @param int $page номер страницы * @param inetger $is_ajax если функция вызвана через ajax @see JS seo_print(); * * @return HTML */ public function ShowProjects($num_prjs, $projects, $kind, $page, $filter, $is_ajax) { $this->projects = $projects; $this->num_prjs = $num_prjs; $this->kind = $this_kind = $kind; $this->page = $this_page = $page == '' ? 1 : $page; $this->pages = ceil($this->num_prjs / new_projects::PAGE_SIZE); $this->filter = $this_filter = (int) ($filter && $filter['active'] == 't'); $this->uid = $this_uid = get_uid(false); $this->pro_last = $this_pro_last = $_SESSION['pro_last']; $this->is_pro = $this_is_pro = payed::CheckPro($_SESSION['login']); $this->edit_mode = $this_edit_mode = hasPermissions('projects'); if ($this->uid) { $this->user_role = $this_user_role = $_SESSION['role']; } $outHTML = ''; $outHTML .= $this->ShowHeader(); $list = array(); if ($projects) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/stop_words.php'; $stop_words = new stop_words(hasPermissions('projects')); foreach ($projects as $i => $project) { $this->project = $project; $list[$i] = $project; if ($this->edit_mode || $this->project['kind'] == 2 || $this->project['user_id'] == $this->uid || $this->project['offer_id'] || $this->pro_last) { $this->show_data = 1; $list[$i]['show_data'] = 1; } else { $this->show_data = 0; $list[$i]['show_data'] = 0; } $descr = $list[$i]['descr']; $descr = $list[$i]['moderator_status'] === '0' && $list[$i]['kind'] != 4 && $list[$i]['is_pro'] != 't' ? $stop_words->replace($descr) : $descr; $descr = preg_replace('/^ /', "", $descr); $descr = preg_replace("/(\n) /", "\$1", $descr); $descr = LenghtFormatEx($descr, 180); $descr = htmlspecialchars($descr, ENT_QUOTES, 'CP1251', false); $descr = reformat($descr, 50, 1, 0, 1); $descr = preg_replace("//", ' ', $descr); $list[$i]['name'] = htmlspecialchars($list[$i]['name'], ENT_QUOTES, 'CP1251', false); $list[$i]['descr'] = $descr; $list[$i]['t_is_payed'] = $this->project['payed'] && $this->project['kind'] != 2 && $this->project['kind'] != 7 && $this->project['kind'] != 4; $list[$i]['t_is_contest'] = $this->project['kind'] == 2 || $this->project['kind'] == 7; $list[$i]['t_pro_only'] = $this->project['pro_only'] == 't'; $list[$i]['t_verify_only'] = $this->project['verify_only'] == 't'; $list[$i]['t_prefer_sbr'] = $this->project['prefer_sbr'] == 't'; $list[$i]['priceby'] = $this->project['priceby']; $list[$i]['t_is_adm'] = hasPermissions('projects'); $list[$i]['t_is_ontop'] = strtotime($this->project['top_to']) >= time(); $list[$i]['unread'] = (int) $this->project['unread_p_msgs'] + (int) $this->project['unread_c_msgs'] + (int) $this->project['unread_c_prjs']; $list[$i]['t_is_proonly'] = $this->project['pro_only'] == 't' && !$_SESSION['pro_last'] && !$this->edit_mode && $this->uid != $this->project['user_id']; $list[$i]['friendly_url'] = getFriendlyURL('project', array('id' => $this->project['id'], 'name' => $this->project['name'])); $attaches = projects::GetAllAttach($this->project['id']); $attaches = !$attaches ? array() : $attaches; foreach ($attaches as $k => $a) { $a['virus'] = is_null($a['virus']) ? $a['virus'] : bindec($a['virus']); $attaches[$k] = $a; } $list[$i]['attaches'] = $this->project['attaches'] = $attaches; $list[$i]['view_cnt'] = projects::getProjectViews($this->project['id']); } } elseif ($page == 1) { $outHTML .= '<div class="project-preview">Ничего не найдено</div>'; } $kind = $this->kind; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/professions.php'; switch ($kind) { case 0: case 1: $rss_link = 'projects.xml'; break; case 2: $rss_link = 'competition.xml'; break; case 4: $rss_link = 'office.xml'; break; case 6: $rss_link = 'pro.xml'; break; case 5: $rss_link = 'all.xml'; break; default: $rss_link = 'all.xml'; break; } $isPrjOpened = isset($_COOKIE['isPrjOpened']) ? $_COOKIE['isPrjOpened'] : true; ob_start(); include ABS_PATH . $this->template; $out = ob_get_clean(); if ($page <= $this->pages) { $out .= '<!--data_found-->'; } return $out; }
} ?> <?php } ?> <div class="b-post__body b-post__body_padtop_15 b-post__body_padbot_10"> <div class="b-post__txt"> <?php echo reformat2(LenghtFormatEx($prj['descr'], 300), 50, 1, 0, 1); ?> </div> </div> <?php if ($prj['pro_only'] != 't' || $is_pro) { $i = 0; if ($attach = projects::GetAllAttach($prj['id'])) { foreach ($attach as $a) { if ($a['name']) { ?> <div class="flw_offer_attach"><a href="<?php echo WDCPREFIX . '/' . $a['path'] . $a['name']; ?> " target="_blank">Загрузить</a> (<?php echo $a['ftype']; ?> ; <?php echo ConvertBtoMB($a['size']); ?> )</div><?php } $i++;
default: $priceby_str = ''; break; } if ($project['cost'] == '' || $project['cost'] == 0) { $priceby_str = ''; } $project['price_display'] = CurToChar($project['cost'], $project['currency']) . $priceby_str; $project['price_display'] = str_replace(array('€', ' '), array('€', ' '), $project['price_display']); } $price = @$project['price_display'] ? $project['price_display'] : 'по договоренности'; // OpenGraph данные для шаринга в соц.сети $FBShare = array('title' => $sTitle . ' - ' . $price, 'description' => '', 'image' => $GLOBALS['host'] . '/images/logo_50x50.png'); //if ($project['pro_only'] == 't' && !$is_pro && $project['user_id']!=$_SESSION['uid'] && !hasPermissions('projects')) {include("../proonly.php");exit;} if (get_uid(false)) { $project_attach = $obj_project->GetAllAttach($prj_id); } /* // Стоимость проекта в разных валютах. require_once($_SERVER['DOCUMENT_ROOT'] . "/classes/exrates.php"); $exrates = new exrates(); $exrate = $exrates -> GetField($oldMoneyType . $money_to_type, $error, 'val'); if ($exrate) $money_to_sum = floor($oldMoneySum * 98 * $exrate)/100; */ // Предложения по данному проекту. $obj_offer = new projects_offers(); $smail = new smail(); // Диалог по предложениям к данному проекту. $obj_dialogue = new projects_offers_dialogue(); if (hasPermissions('projects') && $project['login'] != $_SESSION['login']) { switch ($action) {