/** * @see parent::initHtmlData */ public function initHtmlData() { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/stop_words.php'; $pid = $this->parseLinks(); if ($pid) { $pid = array_map('intval', $pid); $stop_words = new stop_words(); $projects = new_projects::getProjectsById($pid); foreach ($projects as $i => $project) { $sTitle = $project['moderator_status'] === '0' && $project['kind'] != 4 && $project['is_pro'] != 't' ? $stop_words->replace($project['name']) : $project['name']; $projects[$i]['sTitle'] = reformat2($sTitle, 30, 0, 1); $projects[$i]['friendly_url'] = $this->getLinkById($project['id']); $projects[$i]['str_cost'] = $project['cost'] ? CurToChar($project['cost'], $project['currency']) . getPricebyProject($project['priceby']) : 'По договоренности'; } $this->html_data = $projects; } }
echo $prj['currency']; ?> ', '<?php echo $prj['priceby']; ?> ', false, <?php echo $prj['id']; ?> , 1, 2); return false;"><?php echo CurToChar($prj['cost'], $prj['currency']); echo $priceby_str; ?> </a> <?php } else { print CurToChar($prj['cost'], $prj['currency']) . $priceby_str; } ?> </div> <?php } else { if (hasPermissions('projects') && $user->login != $_SESSION["login"]) { ?> <var class="bujet-dogovor"><a id="prj_budget_lnk_<?php echo $prj['id']; ?> " class="b-post__link b-post__link_dot_6db335" href="#" onClick="popupShowChangeBudget(<?php echo $prj['id']; ?> , '', 0, 1, true, <?php echo $prj['id'];
?> " target="_blank" nofollow ><img src="/users/<?php echo $eprj['login']; ?> /upload/<?php echo $eprj['filename']; ?> " border="0" /></a> <?php } ?> <div>Платный проект</div> </div> <div class="fl2_offer_budget"> Бюджет: <?php echo CurToChar($eprj['cost'], $eprj['currency']); ?> </div> <div class="fl2_offer_header"> <?php if ($eprj['no_risk'] == "t") { ?> <a href="/norisk2/" title="Безопасная Сделка"><img src="/images/shield.gif" alt="Безопасная Сделка" /></a><?php } ?> <?php echo $eprj['name']; ?> </div> <div class="fl2_offer_content">
?> b-post__price_fontsize_13 <?php } ?> "> <?php if ($project['cost'] == 0) { ?> По договоренности <?php } else { $priceby_str = getPricebyProject($project['priceby']); //if ?> <?php echo CurToChar($project['cost'], $project['currency']); echo $priceby_str; ?> <?php } //else ?> </div> </td> </tr></tbody></table> <div class="i-prompt"> <div class="b-prompt b-prompt_left_-270 b-prompt_width_200"> <div class="b-prompt__txt b-prompt__txt_color_6db335 b-prompt__txt_italic">Так увидят ваш <?php echo $is_konkurs ? "конкурс" : "проект"; ?> фри-лансеры</div>
case '2': $priceby_str = "/день"; break; case '3': $priceby_str = "/месяц"; break; case '4': $priceby_str = "/проект"; break; default: $priceby_str = ""; break; } ?> <div class="prj_cost">Бюджет: <?php echo CurToChar($project_history['cost'], $project_history['currency']); echo $priceby_str; ?> </div> <?php } else { ?> <div class="prj_cost prj-dogovor" style="margin-top:-14px"> <table cellspacing="0" cellpadding="0"> <tr> <td> <div class="form"> <b class="b1"></b> <b class="b2"></b> <div class="form-in">Бюджет по договоренности</div> <b class="b2"></b>
echo $row['currency']; ?> ', '<?php echo $row['priceby']; ?> ', false, <?php echo $row['id']; ?> , 1); return false;"><?php echo CurToChar($row['cost'], $row['currency']); echo $priceby_str; ?> </a> <?php } else { echo CurToChar($row['cost'], $row['currency']); echo $priceby_str; ?> <?php } ?> </div> <?php } else { ?> <div class="b-post__price b-post__price_padleft_10 b-post__price_padbot_5 b-post__price_fontsize_13 b-post__price_float_right"> <?php if ($can_change_prj) { ?> <a id="prj_budget_lnk_<?php echo $row['id'];
/** * @todo: замена NewProj * * Рассылка о новых проектах за предыдущий день. Вызывается раз в день из hourly.php * * @param array $uids - массив идентификаторов пользователей, которых нужно исключить * * @return int количество получивших рассылку */ public function NewProj2($uids = array()) { $show_pro_limit = 25; $show_limit = 25; $projects = projects::GetNewProjectsPreviousDay($error, true); $groups = professions::GetAllGroupsLite(true); $page = 0; $count = 0; $projects_count = count($projects); if (!$projects_count) { return false; } //Получаем баннеры $settings = new settings(); $banner_file = $settings->GetVariable('newsletter', 'banner_file'); $banner_link = $settings->GetVariable('newsletter', 'banner_link'); $this->subject = 'Новые проекты на FL.ru'; $this->message = Template::render($_SERVER['DOCUMENT_ROOT'] . '/templates/mail/new_projects/project_layout.tpl.php', array('projects' => '%MESSAGE%', 'host' => $GLOBALS['host'], 'title' => '%TITLE%', 'unsubscribe_url' => '%UNSUBSCRIBE_URL%', 'date' => strtotime('- 1 day'), 'track_url' => '%TRACK_URL%')); $this->recipient = ''; $massId = $this->send('text/html'); $project_ids = array(); foreach ($projects as $i => $prj) { $descr = $prj['descr']; $descr = htmlspecialchars($descr, ENT_QUOTES, 'CP1251', false); $descr = reformat(LenghtFormatEx($descr, 180), 50, 0, 1); $price = $prj['cost'] ? CurToChar($prj['cost'], $prj['currency']) . getPricebyProject($prj['priceby']) : null; $projects[$i]['html'] = Template::render($_SERVER['DOCUMENT_ROOT'] . '/templates/mail/new_projects/project.tpl.php', array('url' => $GLOBALS['host'] . getFriendlyURL('project', array('id' => $prj['id'], 'name' => $prj['name'])), 'name' => $prj['name'] ? reformat(htmlspecialchars($prj['name'], ENT_QUOTES, 'CP1251', false), 50, 0, 1) : '', 'descr' => $descr, 'host' => $GLOBALS['host'], 'project_kind' => $prj['kind'], 'project_pro_only' => $prj['pro_only'] == 't', 'project_verify_only' => $prj['verify_only'] == 't', 'project_urgent' => $prj['urgent'] == 't', 'price' => $price, 'end_date' => $prj['end_date'], 'create_date' => $prj['create_date'], 'utm_param' => '%UTM_PARAM%')); $project_ids[] = $prj['id']; } //Собираем юзеров у которых есть ответы на новые проекты $offers_exist = array(); $offers = projects_offers::AllFrlOffersByProjectIDs($project_ids); if (count($offers)) { foreach ($offers as $offer) { if (!isset($offers_exist[$offer['project_id']])) { $offers_exist[$offer['project_id']] = array(); } $offers_exist[$offer['project_id']][$offer['user_id']] = true; } } $strtotime_3y_ago = strtotime('- 3 year'); $strtotime_1y_ago = strtotime('- 1 year'); $strtotime_1w_ago = strtotime('- 1 week'); $current_date = time(); $current_date_sufix = '_' . date('dmy', $current_date); //format:_270314 $statistics = array(); while ($users = freelancer::GetPrjRecps($error, ++$page, 200, $uids)) { $this->recipient = array(); foreach ($users as $user) { //Если ли у фрилансера уточнение по категориям $is_mailer_str = strlen($user['mailer_str']) > 0; $subj = array(); if ($is_mailer_str) { foreach ($groups as $group) { if (freelancer::isSubmited($user['mailer_str'], array(array('category_id' => $group['id'])))) { $subj[$group['id']] = $group['name']; } } } $message_pro = ''; $cnt_pro = 0; $message = ''; $cnt = 0; $cnt_submited = 0; $cnt_user_submited = 0; foreach ($projects as $prj) { //Подписан ли фрилансер на специализацию к которой относится проект if ($is_mailer_str && !freelancer::isSubmited($user['mailer_str'], $prj['specs'])) { continue; } //Считаем все проекты по выбранным специализациям ++$cnt_submited; //Условия не попадания в письмо if ($prj['is_blocked'] == 't' || $prj['closed'] == 't' || $prj['state'] == projects::STATE_MOVED_TO_VACANCY || $prj['kind'] == projects::KIND_PERSONAL) { continue; } //Если у фрилансера ответ на проект то не добавляем его в рассылку if (isset($offers_exist[$prj['id']][$user['uid']])) { continue; } if ($prj['pro_only'] == 't') { if ($cnt_pro < $show_pro_limit) { $message_pro .= $prj['html']; ++$cnt_pro; } } else { if ($cnt < $show_limit) { $message .= $prj['html']; ++$cnt; } } ++$cnt_user_submited; } $message = $message_pro . $message; if (empty($message)) { continue; } if ($cnt_user_submited <= $show_pro_limit + $show_limit) { $cnt_submited = $cnt_user_submited; } //Формирует UTM метки аналитики $reg_date = strtotime($user['reg_date']); $reg_year = date('Y', $reg_date); $utm_content = $reg_date >= $strtotime_1w_ago ? '_new' : $reg_year; //$utm_content = ($user['reg_days_ago'] > 7)?$user['reg_date_year']:'_new'; $utm_param = $this->_addUtmUrlParams('email', 'free' . $utm_content, 'day_projects' . $current_date_sufix); $message = str_replace('%UTM_PARAM%', $utm_param, $message); //Собираем шаблон $message = Template::render($_SERVER['DOCUMENT_ROOT'] . '/templates/mail/new_projects/project_list.tpl.php', array('projects' => $message, 'spec_list' => implode(' / ', $subj), 'setup_url' => $GLOBALS['host'] . "/users/{$user['login']}/setup/mailer/", 'other_count' => $cnt_submited - $cnt_pro - $cnt, 'more_url' => $GLOBALS['host'] . $utm_param, 'banner_file' => $banner_file, 'banner_link' => $banner_link)); if (!$user['unsubscribe_key']) { $user['unsubscribe_key'] = users::GetUnsubscribeKey($user['login']); } /* $date = strtotime($projects[0]['post_date']); $date = date( 'j', $date ) . ' ' . monthtostr(date('n', $date),true); */ $projects_count_txt = $cnt_submited . ' ' . plural_form($cnt_submited, array('новый', 'новых', 'новых')) . ' ' . plural_form($cnt_submited, array('проект', 'проекта', 'проектов')); //$title = "{$projects_count_txt} за {$date}"; $last_time = strtotime($user['last_time']); if ($last_time < $strtotime_3y_ago) { $utm_content = '_3y'; } elseif ($last_time >= $strtotime_3y_ago && $last_time <= $strtotime_1y_ago) { $utm_content = '_1-3y'; } elseif ($reg_date < $strtotime_1w_ago) { $utm_content = '_1y'; } /* * @todo: EXTRACT медленней if($user['last_years_ago'] > 0){ $utm_content = ($user['last_years_ago'] > 3)?'_3y':'_1-3y'; }else{ $utm_content = ($user['reg_days_ago'] > 7)?'_1y':'_new'; } */ //Накапливаем статистику $stat_idx = $reg_date >= $strtotime_1w_ago ? 'new' : $reg_year; ++$statistics[$stat_idx]; $this->recipient[] = array('email' => $user['uname'] . ' ' . $user['usurname'] . ' [' . $user['login'] . '] <' . $user['email'] . '>', 'extra' => array('USER_NAME' => $user['uname'], 'USER_SURNAME' => $user['usurname'], 'USER_LOGIN' => $user['login'], 'MESSAGE' => $message, 'UNSUBSCRIBE_URL' => "/unsubscribe/?type=new_projects&ukey={$user['unsubscribe_key']}" . $this->_addUtmUrlParams('email', 'free' . $utm_content, 'unsubscr_day_projects' . $current_date_sufix), 'TITLE' => $projects_count_txt, 'TRACK_URL' => $GLOBALS['host'] . StatisticHelper::track_url(0, $stat_idx, $current_date, $user['login'] . $user['uid']))); ++$count; } $this->bind($massId, true); } //Собранную статистику отправляем в GA $statistics['total'] = $count; $ga = StatisticFactory::getInstance('GA'); $ga->newsletterNewProjectsFrl($statistics, $current_date); return $count; }
function quickprjedit_save_budget($prj_id, $frm, $type, $page_type) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects.php'; $objResponse = new xajaxResponse(); $budget = null; if (hasPermissions('projects')) { if ($frm['agreement'] == 1 || $frm['cost'] == 0) { $budget = projects::updateBudget($prj_id, 0, 0, 0, true); $str_budget_cost = 'По договоренности'; $agreement = true; $str_budget_lnk = "popupShowChangeBudget({$prj_id}, '', 0, 1, true, {$prj_id}, " . ($type == 1 ? 1 : 2) . ', ' . ($page_type ? $page_type : 0) . '); return false;'; $budget_block = '<table cellspacing="0" cellpadding="0"> <tr> <td> <div class="form"> <b class="b1"></b> <b class="b2"></b> <div class="form-in"> <a href="#" id="prj_budget_lnk_' . $prj_id . '" onClick="popupShowChangeBudget(' . $prj_id . ', \'\', 0, 1, true, ' . $prj_id . ', ' . ($type == 1 ? 1 : 2) . ', ' . ($page_type ? $page_type : 0) . '); return false;">Бюджет по договоренности</a> </div> <b class="b2"></b> <b class="b1"></b> </div> </td> </tr> </table>'; $budget_block_class = 'prj_cost prj-dogovor'; } else { if ($frm['cost'] > 0) { $budget = projects::updateBudget($prj_id, $frm['cost'], $frm['currency'], $frm['costby'], false); $str_budget_cost = CurToChar($budget['cost'], $budget['currency']); $agreement = false; $str_budget_lnk = "popupShowChangeBudget({$prj_id}, '{$budget['cost']}', '{$budget['currency']}', '{$budget['costby']}', false, {$prj_id}, " . ($type == 1 ? 1 : 2) . ', ' . ($page_type ? $page_type : 0) . '); return false;'; $budget_block_class = 'prj_cost'; $budget_block = '<div class="budget-block">'; switch ($budget['budget_type']) { default: $budget_price_str = ''; $budget_price_class = 'fl-form-grey'; break; } if ($budget['cost'] == '' || $budget['cost'] == 0) { $budget_price_str = ''; $budget_price_class = 'fl-form-grey'; } if ($budget_price_str != '') { $budget_block .= ' <div class="fl-form fl-form-tr budget-type"> ' . $budget_price_str . ' <span class="cc cc-lt"></span> <span class="cc cc-rt"></span> <span class="cc cc-lb"></span> <span class="cc cc-rb"></span> <span class="budget-type-lug"></span> </div>'; } $budget_block .= '<div class="fl-form ' . $budget_price_class . ' color-budget">'; switch ($budget['costby']) { case '1': $priceby_str = '/час'; break; case '2': $priceby_str = '/день'; break; case '3': $priceby_str = '/месяц'; break; case '4': $priceby_str = '/проект'; break; default: $priceby_str = ''; break; } if ($budget['cost'] == '' || $budget['cost'] == 0) { $priceby_str = ''; } $budget_block .= '<strong> <a href="#" id="prj_budget_lnk_' . $prj_id . '">Бюджет: ' . CurToChar($budget['cost'], $budget['currency']) . $priceby_str . '</a> </strong>'; if ($budget['cost'] > 0) { $project_exRates = project_exrates::GetAll(); $exch = array(1 => 'FM', 'USD', 'Euro', 'Руб'); $translate_exRates = array(0 => 2, 1 => 3, 2 => 4, 3 => 1); $price_other_cur = ''; if ($budget['currency'] != 0) { $price_other_cur .= CurToChar(preg_replace('/.00$/', '', sprintf('%.2f', round($budget['cost'] * $project_exRates[trim($translate_exRates[$budget['currency']]) . '2'], 2))), 0) . 'AA'; } if ($budget['currency'] != 1) { $price_other_cur .= CurToChar(preg_replace('/.00$/', '', sprintf('%.2f', round($budget['cost'] * $project_exRates[trim($translate_exRates[$budget['currency']]) . '3'], 2))), 1) . 'AA'; } if ($budget['currency'] != 2) { $price_other_cur .= CurToChar(preg_replace('/.00$/', '', sprintf('%.2f', round($budget['cost'] * $project_exRates[trim($translate_exRates[$budget['currency']]) . '4'], 2))), 2) . 'AA'; } if ($budget['currency'] != 3) { $price_other_cur .= CurToChar(preg_replace('/.00$/', '', sprintf('%.2f', round($budget['cost'] * $project_exRates[trim($translate_exRates[$budget['currency']]) . '1'], 2))), 3) . 'AA'; } $price_other_cur = preg_replace('/AA$/', '', $price_other_cur); $price_other_cur = preg_replace('/AA/', ' — ', $price_other_cur); $budget_block .= '<em>' . $price_other_cur . '</em>'; } $budget_block .= ' <span class="cc cc-lt"></span> <span class="cc cc-rt"></span> <span class="cc cc-lb"></span> <span class="cc cc-rb"></span> </div> </div>'; } } switch ($budget['costby']) { case '1': $costby_str = '/час'; break; case '2': $costby_str = '/день'; break; case '3': $costby_str = '/месяц'; break; case '4': $costby_str = '/проект'; break; default: $costby_str = ''; break; } $str_budget_cost = $str_budget_cost . $costby_str; } if ($budget) { switch ($type) { case 1: // Лента $objResponse->assign("prj_budget_lnk_{$prj_id}", 'innerHTML', $str_budget_cost); if ($agreement) { $objResponse->script('$("prj_budget_lnk_' . $prj_id . '").getParent().removeClass("b-post__price_bold").removeClass("b-post__price_fontsize_15").addClass("bujet-dogovor");'); } else { if ($page_type != 2) { $objResponse->script('$("prj_budget_lnk_' . $prj_id . '").getParent().addClass("b-post__price_bold").removeClass("b-post__price_fontsize_13").addClass("b-post__price_fontsize_15");'); } else { $objResponse->script('$("prj_budget_lnk_' . $prj_id . '").getParent().removeClass("b-post__price_bold").removeClass("b-post__price_fontsize_13").removeClass("bujet-dogovor");'); } } $objResponse->script("\$('prj_budget_lnk_{$prj_id}').addEvent('click', function() { {$str_budget_lnk} });"); break; case 2: // Проект $objResponse->assign('budget_block', 'innerHTML', $budget_block); $objResponse->script("\$('budget_block').set('class', '{$budget_block_class}');"); $objResponse->script("\$('prj_budget_lnk_{$prj_id}').addEvent('click', function() { {$str_budget_lnk} });"); break; } } return $objResponse; }
echo CurToChar(preg_replace('/.00$/', '', sprintf("%.2f", round($project['cost'] * $project_exRates[trim($translate_exRates[$project['currency']]) . '2'], 2))), 0); ?> <br><?php } if ($project['currency'] != 1) { echo CurToChar(preg_replace('/.00$/', '', sprintf("%.2f", round($project['cost'] * $project_exRates[trim($translate_exRates[$project['currency']]) . '3'], 2))), 1); ?> <br><?php } if ($project['currency'] != 2) { echo CurToChar(preg_replace('/.00$/', '', sprintf("%.2f", round($project['cost'] * $project_exRates[trim($translate_exRates[$project['currency']]) . '4'], 2))), 2); ?> <br><?php } if ($project['currency'] != 3) { echo CurToChar(preg_replace('/.00$/', '', sprintf("%.2f", round($project['cost'] * $project_exRates[trim($translate_exRates[$project['currency']]) . '1'], 2))), 3); ?> <br><?php } ?> </td> </tr> </table> <?php } ?> </div> <?php if ($show_info) { ?> <?php
$priceby_str = '/день'; break; case '3': $priceby_str = '/месяц'; break; case '4': $priceby_str = '/проект'; break; 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;
.</span> <div class="search-item-body <?php echo $result['is_bold'] == 't' ? "prj-weight" : ""; ?> <?php echo $result['prefer_sbr'] == 't' ? "has_sbr" : ""; ?> <?php echo $is_top ? "has_top" : ""; ?> "> <?php if ($result['cost']) { ?> <span class="search-price"><?php echo CurToChar($result['cost'], (int) $result['currency']); echo $priceby_str; ?> </span> <?php } else { //if ?> <span class="bujet-dogovor">По договоренности</span> <?php } //else ?> <?php if ($result['logo_path'] != '') { ?>