$i = 0; if ($prjs) { setlocale(LC_ALL, 'ru_RU.CP1251'); $dir = $user->login; ?> <?php $pj = 0; $pn = sizeof($prjs); foreach ($prjs as $ikey => $prj) { if (!get_uid(false) && $prj['hide'] == 't') { $pn--; continue; } $prj['name'] = htmlspecialchars($prj['name'], ENT_QUOTES, 'CP1251', false); $prj['descr'] = htmlspecialchars($prj['descr'], ENT_QUOTES, 'CP1251', false); $project = new_projects::initData($prj); //@todo: Лишний запрос. Применение в код ненайдено. Пока скрываю. //$spec = projects::getPrimarySpec($prj['id']); //$prj['category'] = $spec['category_id']; if (is_new_prj($prj['post_date'])) { $blink = getFriendlyURL("blog", $prj['thread_id']); } else { $blink = getFriendlyURL("project", $prj); } $plink = "/users/" . $prj['login'] . "/project/?prjid=" . $prj['id']; $executorExists = false; if ($prj['exec_id']) { // если исполнитель выбран if ($prj['offer_id']) { // если исполнитель отвечал на проект $executorExists = true;
/** * Перемещает проект в вакансии * @global type $user_content * @param type $sid * @return \xajaxResponse */ function makeVacancy($stream_id = '', $sid = '') { global $user_content; $objResponse = new xajaxResponse(); list($content_id, $rec_id, $rec_type) = explode('_', $sid); if ($user_content->hasContentPermissions($content_id)) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/smtp.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/template.php'; $project = new_projects::initData(new_projects::getPrj($rec_id)); if ($project->isAllowMovedToVacancy()) { // Делаем проект вакансией $project->movedToVacancy(); $user_content->markProjectBlocked($stream_id, $rec_id); // Отсылаем письмо заказчику о переносе его проекта в раздел вакансии $mail = new smtp(); $mail->subject = 'Ваш проект перенесен в раздел Вакансии и ожидает публикации'; // заголовок письма $mail->message = Template::render($_SERVER['DOCUMENT_ROOT'] . '/templates/mail/projects/makevacancy.tpl.php', array('title' => $project->_project['name'], 'project_id' => $project->_project['id'])); $mail->recipient = "{$project->_project['email']} <{$project->_project['email']}>"; // получатель $mail->SmtpMail('text/html'); } $objResponse->script('user_content.spinner.hide(true);'); $objResponse->script("\$('my_div_content_{$sid}').destroy();"); $objResponse->script('user_content.spinner.resize();'); } else { _parsePermissionsDenied($objResponse); } return $objResponse; }
<?php require_once realpath(__DIR__ . '/../../classes/stdf.php'); require_once HOME . '/classes/projects.php'; require_once HOME . '/classes/smtp.php'; require_once HOME . '/classes/template.php'; $id = intval(__paramInit('int', 'id', 'id', 0)); $is_allow = $id > 0 && hasPermissions('projects'); if (!$is_allow) { header('Location: /403.php'); exit; } $project = new_projects::initData(new_projects::getPrj($id)); if ($project->isAllowMovedToVacancy()) { // ƒелаем проект вакансией $project->movedToVacancy(); // ќтсылаем письмо заказчику о переносе его проекта в раздел вакансии $mail = new smtp(); $mail->subject = '¬аш проект перенесен в раздел ¬акансии и ожидает оплаты'; // заголовок письма $mail->message = Template::render(HOME . '/templates/mail/projects/makevacancy.tpl.php', array('title' => $project->_project['name'], 'project_id' => $project->_project['id'], 'is_pro' => $project->isOwnerPro(), 'pro_price' => $project->getProjectInOfficePrice(true), 'not_pro_price' => $project->getProjectInOfficePrice(false))); $mail->recipient = "{$project->_project['email']} <{$project->_project['email']}>"; // получатель $success = $mail->SmtpMail('text/html'); } $ref_uri = empty($_SESSION['ref_uri']) ? '/' : urldecode($_SESSION['ref_uri']); header("Location: {$ref_uri}#project-item{$project->_project['id']}"); exit;
/** * Парсит порцию HTML содержимого для проектов * * @param int $last_id возвращает последний Id проектов * @param array $content массив данных из базы * @param int $status статус: 0 - не проверенно, 1 - утверждено, 2 - удалено * @param array $aStream данные о потоке * @return string HTML */ function _parseProjects(&$last_id, $content = array(), $status = 0, $aStream = array()) { global $user_content, $stop_words, $sTeam; $nCnt = count($content); $sReturn = ''; $aEmpId = array(); foreach ($content as $aOne) { $aEmpId[] = $aOne['user_id']; } $aPrjCnt = $user_content->getProjectsPer24($aEmpId); // TODO: вынести в модель foreach ($content as $aOne) { $last_id = $aOne['moder_num']; $sAttach = ''; if ($aOne['attach']) { $nn = 1; foreach ($aOne['attach'] as $attach) { $aData = getAttachDisplayData(null, $attach["name"], $attach['path'], 1000, 300, 307200, 0); if ($aData && $aData['success']) { if ($aData['file_mode'] || $aData['virus_flag'] || $aData['file_ext'] == "swf") { $sAttach .= _parseAttach($aData); } else { $sAttach .= "<div class=\"b-fon__body b-fon__body_pad_5 b-fon__body_bg_ffebbf b-fon__body_margbot_1\"><img src=\"" . WDCPREFIX . '/' . $attach['path'] . $attach["name"] . "\" alt=\"{$aData['file_name']}\" title=\"{$aData['file_name']}\" width=\"{$aData['img_width']}\" height=\"{$aData['img_height']}\" /></div>"; } $nn++; } } $sAttach = '<div class="b-icon-layout b-post__txt_padbot_15">' . $sAttach . '</div>'; } $sLogo = ''; if ($aOne['logo_id']) { $cfile = new cfile($aOne['logo_id']); if ($cfile->id && trim($aOne['link'])) { $sLogo = '<div class="b-post__txt b-post__txt_padbot_15"><strong>Лого: </strong><br/> <div> <a target="_blank" rel="nofollow" href="' . $aOne['link'] . '" target="_blank" class="b-post__link"> <img alt="" src="' . WDCPREFIX . '/' . $cfile->path . '/' . $cfile->name . '" class="b-post__pic b-post__pic_clear_right"> </a> </div>'; } } $sPayed = $aOne['kind'] == 7 ? 'Конкурс!' : ($aOne['ico_payed'] == 't' || $aOne['is_upped'] == 't' ? 'Платный проект!' : ''); $sPayed = $sPayed ? '<div class="b-post__txt b-post__txt_padbot_5 b-post__txt_fontsize_15"><span class="b-post__txt b-post__txt_color_c10601">' . $sPayed . '</span></div>' : ''; $sTitle = xmloutofrangechars($aOne['name']); $sTitle = $aOne['kind'] != 4 && $status != 1 ? $stop_words->replace($sTitle) : $sTitle; $sTitle = reformat($sTitle, 30, 0, 1); $sDescr = xmloutofrangechars($aOne['descr']); $sDescr = $aOne['kind'] != 4 && $status != 1 ? $stop_words->replace($sDescr) : $sDescr; $sDescr = preg_replace("/^ /", "", $sDescr); $sDescr = preg_replace("/(\n) /", "\$1", $sDescr); $sDescr = reformat($sDescr, 30, 0, 0, 1); $sDescr = preg_replace("//", " ", $sDescr); $sLink = $GLOBALS['host'] . getFriendlyURL('project', $aOne['id']); $sPrjCnt = isset($aPrjCnt[$aOne['user_id']]) ? $aPrjCnt[$aOne['user_id']] : '0'; $sOffice = $aOne['kind'] != 4 ? '' : '<div class="b-post__txt b-post__txt_padbot_5 b-post__txt_fontsize_15" style="color: #cc4642;"> Проект в офис. Разрешен обмен контактами.</div>'; $aOne['context_code'] = '3'; $aOne['context_link'] = $sLink; $aOne['context_title'] = xmloutofrangechars($aOne['name']); $sKindIco = $aOne['kind'] == 7 ? 'kont' : 'prj'; $sJSParams = "{'content_id': " . user_content::MODER_PROJECTS . ", 'stream_id': '{$aStream['stream_id']}', 'content_cnt': {$nCnt}, 'status': {$status}, 'is_sent': '{$aOne['is_sent']}'}"; $sEditIcon = _parseEditIcon('admEditProjects', $aOne['id'], $status, $aOne['kind'] == 7 ? 7 : 0, $sJSParams); $sPro = $aOne['is_pro'] == 't' ? preg_replace('#<a[^>]+>(.+)</a>#', '$1', view_pro_emp()) . ' ' : ''; $projectObject = new_projects::initData(new_projects::getPrj($aOne['id'])); $allow_vacancy = $projectObject->isAllowMovedToVacancy(); $moveToVacancy = $allow_vacancy ? ' <div class="b-post__txt b-post__txt_padbot_10 b-post__txt_fontsize_11"> <a onclick="user_content.make_vacancy(\'' . $aOne['content_id'] . '_' . $aOne['id'] . '_0\');" class="b-post__txt b-post__txt_padbot_10 b-post__txt_fontsize_11" href="#">Сделать вакансией</a> </div>' : ''; $sReturn .= ' <div class="b-post b-post_bordtop_dfe3e4 b-post_padtop_15 b-post_marg_20_10" id="my_div_content_' . $aOne['content_id'] . '_' . $aOne['id'] . '_0"> ' . _parseHidden($aOne) . ' ' . _parseOkIcon($status, $aOne['content_id'], $aOne['id'], '0', $aOne['user_id']) . ' ' . _parsePostTime($status, $aOne['post_time']) . ' <div class="b-username b-username_padbot_5">' . ($aOne['is_team'] == 't' ? $sTeam : $sPro) . '<a class="b-username__link b-username__link_color_6db335 b-username__link_fontsize_11 b-username__link_bold" href="/users/' . $aOne['login'] . '?kind=0&all=1" target="_blank">' . $aOne['uname'] . ' ' . $aOne['usurname'] . ' [' . $aOne['login'] . ']</a></div> ' . $sPayed . ' ' . ($aOne['warn'] ? '<div class="b-username_padbot_5"><a onclick="parent.user_content.getUserWarns(' . $aOne['user_id'] . ');" href="javascript:void(0);" class="notice">Предупреждения: <span id="warn_' . $aOne['user_id'] . '_' . user_content::MODER_PROJECTS . '_' . $aOne['id'] . '">' . intval($aOne['warn']) . '</span></a></div>' : '<div class="b-username_padbot_5 user-notice">Предупреждений нет</div>') . ' <div class="b-post__txt b-post__txt_padbot_10 b-post__txt_fontsize_11"><img class="b-post__pic b-post__pic_valign_mid" src="/images/frame-' . $sKindIco . '.png" alt="" /> (' . $sPrjCnt . ' за 24 часа)' . ($aOne['pro_only'] == 't' ? ' Только для <span class="b-icon b-icon__pro b-icon__pro_f"></span>' : '') . '</div> ' . $sOffice . ' ' . _parseMass($aOne, $status, '0') . ' <div class="b-post__txt b-post__txt_padbot_5 b-post__txt_fontsize_15"><a class="b-post__link b-post__link_bold b-post__link_fontsize_15" href="' . $sLink . '" target="_blank">' . $sTitle . '</a></div> <div class="b-post__txt b-post__txt_padbot_5 b-post__txt_fontsize_15">' . $sDescr . '</div> ' . $sAttach . ' ' . $sLogo . ' <div class="b-post__txt b-post__txt_padtop_5 b-post__txt_fontsize_11"><span class="b-post__bold">Раздел:</span> ' . $aOne['specs'] . '</div> ' . ($aOne['pro_only'] == 't' ? '<div class="b-post__txt b-post__txt_padtop_10 b-post__txt_fontsize_11">Только для <span class="b-icon b-icon__pro b-icon__pro_f"></span></div>' : '') . ' ' . $moveToVacancy . ' ' . _parseDelIcons($aOne, 'user_id', $status, '0', $sJSParams, $sEditIcon) . ' </div>'; } return $sReturn; }
<?php /** * Шаблон катрочки проекта */ $projectObject = new_projects::initData($project); ?> <div class="b-layout b-layout_overflow_hidden b-layout_margbot_10"> <?php $cfile = new cfile($project["logo_id"]); if ($cfile->id) { if (trim($project["link"])) { ?> <a target="_blank" rel="nofollow" href="<?php echo $project["link"]; ?> " class="b-post__link"> <img alt="" src="<?php echo WDCPREFIX . "/" . $cfile->path . "/" . $cfile->name; ?> " class="b-post__pic b-post__pic_float_right b-post__pic_clear_right b-post__pic_margleft_10"> </a> <?php } else { ?> <img alt="" src="<?php echo WDCPREFIX . "/" . $cfile->path . "/" . $cfile->name; ?> " class="b-post__pic b-post__pic_float_right b-post__pic_clear_right b-post__pic_margleft_10"> <?php
<?php // ќбработка событий на сайте и отправка результатов в Google Analytics ?> <script type='text/javascript'> window.addEvent('domready', function() { <?php if (Zend_Registry::isRegistered('action.render_project_page_after_publishing')) { // публикаци¤ проекта ?> <?php $project = new_projects::initData(Zend_Registry::get('project')); ?> ga('send', 'event', 'Projects', '<?php echo $project->getKindIdent(); ?> _created'); <?php } ?> }); </script> <script type='text/javascript'> var googletag = googletag || {}; googletag.cmd = googletag.cmd || []; (function() { var gads = document.createElement('script'); gads.async = true; gads.type = 'text/javascript'; var useSSL = 'https:' == document.location.protocol;