public static function nextActive() { $stmt = parent::$conn->prepare("SELECT * FROM contest WHERE contest_start = 0 ORDER BY contest_id ASC LIMIT 1"); $contest = new contest($stmt); if ($contest->found()) { return $contest; } $stmt = parent::$conn->prepare("SELECT contest_name, contest_desc FROM contest GROUP BY contest_name, contest_desc ORDER BY COUNT(*) ASC, RAND() LIMIT 1"); $randcontest = new contest($stmt); if (!$randcontest->found()) { return new contest(['name' => 'Placeholder', 'desc' => '-']); } return new contest(['name' => $randcontest->name, 'desc' => $randcontest->desc]); }
function pickrandom($time) { $active = contest::active(); $activeCountries = country::stateSortVotes('active'); if ($activeCountries->count() == 0) { $final = country::stateSortVotes('finale'); $finalCount = $final->count(); $ranks = [1 => 'gold', 2 => 'silver', 3 => 'bronze']; for ($i = 1; $i <= 3 && $i <= $finalCount; $i++) { $final->found(); new medal(['type' => $ranks[$i], 'votes' => $final->votes, 'contest#' => $active->id, 'country#' => $final->id]); } country::resetVotes(); $active->end = $time; $new = contest::nextActive(); $new->start = $time; $new->update(); pickFromQueue(); } else { $activeCountries->state = 'finale'; $activeCountries->votes = 0; while ($activeCountries->found()) { $activeCountries->state = 'eliminated'; } pickFromQueue(); } }
public function executeNew(sfWebRequest $request) { // Display the form $this->form = new ContestForm(); if ($this->getRequest()->isMethod('post')) { $this->form->bind($request->getParameter('contest')); if ($this->form->isValid()) { $contest = new contest(); $contest->setEmail($this->form->getValue('email')); $contest->setUrl($this->form->getValue('url')); $contest->setAdmin_hash(md5(time() . $this->form->getValue('url') . $this->form->getValue('email'))); $contest->setPublic_hash(md5(time() . $this->form->getValue('email') . $this->form->getValue('url'))); $contest->save(); // Send mail with secret URL try { // Create the mailer and message objects //$mailer = new Swift(new Swift_Connection_NativeMail()); //$connection = new Swift_Connection_SMTP('smtp.free.fr'); $connection = new Swift_Connection_NativeMail(); $mailer = new Swift($connection); $message = new Swift_Message('Welcome!'); // Render message parts $mailContext = array('admin_hash' => $contest->getAdmin_hash(), 'contest_url' => $contest->getUrl()); $v = $this->getPartial('newcontestMailHtmlBody', $mailContext); $htmlPart = new Swift_Message_Part($v, 'text/html'); $message->attach($htmlPart); $message->attach(new Swift_Message_Part($this->getPartial('newcontestMailTextBody', $mailContext), 'text/plain')); $mailTo = $contest->getEmail(); $mailFrom = sfConfig::get('app_mail_webmaster'); $mailer->send($message, $mailTo, $mailFrom); $mailer->disconnect(); } catch (Exception $e) { $this->logMessage($e); } //redirect to the thank you page $this->redirect('contest/thankyou'); } } else { return sfView::SUCCESS; } }
/** * Переносим ответы на проекты в работающие таблицы * * @param array $offers Ответы на проекты * @return array */ public function transferOffers($offers) { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/projects_offers.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/contest.php"; foreach ($offers as $k => $offer) { $pict1 = str_replace("sm_", "", $offer['pict1']); $pict2 = str_replace("sm_", "", $offer['pict2']); $pict3 = str_replace("sm_", "", $offer['pict3']); // Переносим файлы в рабочие папки сайта $files = $this->_db->rows("SELECT DISTINCT id FROM file_wizard WHERE fname IN (?l)", array($pict1, $pict2, $pict3)); if ($files) { $dir = "users/" . substr($this->user->login, 0, 2) . "/" . $this->user->login . "/upload/"; $table = 'file'; $picts = $this->transferFiles($files, $table, $dir, false); $sm_files = $this->_db->rows("SELECT DISTINCT id FROM file_wizard WHERE fname IN (?l)", array($offer['pict1'], $offer['pict2'], $offer['pict3'])); if ($sm_files) { $sm_picts = $this->transferFiles($sm_files, $table, $dir, false); } } if ($offer['kind'] != 7) { $error = projects_offers::AddOffer(wizard::getUserIDReg(), $offer['project_id'], $offer['cost_from'], $offer['cost_to'], $offer['cost_currency'], $offer['time_from'], $offer['time_to'], $offer['time_type'], $offer['descr'], 0, 0, 0, null, null, null, null, null, null, $picts[0]['fname'], $picts[1]['fname'], $picts[2]['fname'], $sm_picts[0]['fname'], $sm_picts[1]['fname'], $sm_picts[2]['fname']); } else { // Пишем ответ на конкурс $contest = new contest($offer['project_id'], wizard::getUserIDReg()); $error = $contest->CreateOffer($offer['descr'], implode('/', $files), false); if ($picts && $contest->new_oid) { $content_pict = array(); foreach ($picts as $k => $pict) { $content_pict[] = array('uid' => wizard::getUserIDReg(), 'file' => $pict['id'], 'prev' => $sm_picts[$k]['id'], 'orig_name' => $pict['orig_name'], 'post_date' => date('Y-m-d H:i:s')); } $contest->addOfferFiles($contest->new_oid, $content_pict); } } if (!$error) { $delete_offers[] = $offer['id']; } else { $error_offer[] = $error . " - ответ на проект #{$offer['id']}"; } unset($error); } // Очищаем перенесенные данные если нет ошибок если есть выводим if ($error_offer) { foreach ($error_offer as $error) { $this->log->writeln("Error transfer offer content - user (" . wizard::getUserIDReg() . "|" . $this->getWizardUserID() . ") - Error: {$error}"); } } else { if ($delete_offers) { $this->_db->query("DELETE FROM wizard_offers WHERE id IN (?l) AND wiz_uid = ?", $delete_offers, $this->getWizardUserID()); } } return $error_offer; }
/** * Проверка возможности отправить сообщение ползователю. * * @global type $DB * @staticvar null $exists_allowed * * @param type $to_id * @param type $from_id * * @return bool */ public static function isAllowed($to_id, $from_id = null) { $is_auth = isset($_SESSION['uid']) && $_SESSION['uid'] > 0; if (!$from_id && !$is_auth) { return false; } if (!$from_id) { $from_id = $_SESSION['uid']; } if ($is_auth && (currentUserHasPermissions('users') || is_emp())) { return true; } $is_allowed = self::_isAllowed($to_id, $from_id); if (!$is_allowed) { //Была ли уже проверка доступности //тогда пользователю запрещено писать $key_check_is_allowed = sprintf(self::KEY_CHECK_IS_ALLOWED, $from_id, $to_id); $mem = new memBuff(); if ($mem->get($key_check_is_allowed)) { return false; } //Иначе делаем проверку //Которые уже хотя бы раз общались с заказчиком через личку, //например если заказчик инициировал общение или они ранее общались $proxy_db = new DB(); $is_allowed = $proxy_db->val('SELECT messages_dialog_count(?i, ?i)', $to_id, $from_id) > 0; //Которых заказчик выбрал исполнителем в любом своем проекте if (!$is_allowed) { require_once ABS_PATH . '/classes/projects.php'; $is_allowed = (bool) projects::isExec($from_id, $to_id); } //В список условий я бы еще добавил проведение заказа на сайте - если есть завершенный заказ //(с резервом или без, по ТУ, проекту или прямой) с данным заказчиком, то тоже разрешать //исполнителю писать ему в личку, так как в заказе светится логин заказчика и они уже сотрудничали. if (!$is_allowed) { require_once ABS_PATH . '/tu/models/TServiceOrderModel.php'; $is_allowed = (bool) TServiceOrderModel::hasSuccessfulOrder($from_id, $to_id); } //Если фрилансер был выбран на любое призовое место в конкурсе то //он может писать сообщения заказчику. if (!$is_allowed) { require_once ABS_PATH . '/classes/contest.php'; $is_allowed = (bool) contest::isPrizePlace($from_id, $to_id); } if ($is_allowed) { self::setIsAllowed($to_id, $from_id, true); } $mem->set($key_check_is_allowed, 1, 0, self::KEY_CHECK_TAG_IS_ALLOWED); } return $is_allowed; }
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 integer id предложения * * @return xajaxResponse */ function Candidate($oid) { global $DB; session_start(); $uid = $_SESSION['uid']; $oid = intval($oid); $objResponse = new xajaxResponse(); require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/contest.php'; $row = $DB->row(' SELECT offers.*, users.login, projects.user_id AS owner_id, projects.closed FROM projects_contest_offers AS offers JOIN projects ON projects.id = offers.project_id JOIN users ON users.uid = offers.user_id WHERE offers.id = ? AND ((SELECT COUNT(*) FROM projects_contest_offers WHERE project_id = projects.id AND (position IS NOT NULL AND position > 0)) = 0) ', $oid); if (!$row) { $objResponse->alert('Несуществующее предложение'); return $objResponse; } if (!is_emp() || $uid != $row['owner_id']) { $objResponse->alert('Несуществующее предложение!'); return $objResponse; } if ($row['closed'] == 't') { $objResponse->alert('Проект закрыт!'); return $objResponse; } $contest = new contest(0, $uid, is_emp(), TRUE, hasPermissions('projects')); if ($error = $contest->Candidate($oid)) { $objResponse->alert($error); return $objResponse; } if ($row['selected'] == 't') { $objResponse->call('candidate.deleted', $row['user_id'], $row['login']); } else { $objResponse->call('candidate.added', $row['user_id'], $row['login']); } return $objResponse; }
/** * Получение одного проекта * * @param array $aParams массив входящих данных * @return array $aResult ответ */ protected function x____projects_get($aParams = array()) { $this->_validDevice($aParams); $sId = __paramValue('int', $aParams['id'], null, true); if (!empty($sId)) { require_once ABS_PATH . '/classes/projects.php'; $oPrj = new new_projects(); $aProject = $oPrj->GetPrjCust($sId); $aAttaches = $oPrj->getAllAttach($sId); if (!empty($aProject)) { if ($aProject['is_banned'] || $aProject['is_blocked']) { // работодатель или проест заблокированы $this->error(EXTERNAL_ERR_PROJECT_NOT_FOUND); } $aResult = array('item' => $this->_getProjectData($aProject)); $nUid = get_uid(false); $aSpecs = new_projects::getSpecs($sId); if (is_array($aSpecs) && $aSpecs) { $aResult['item']['category_id'] = $aSpecs[0]['category_id']; $aResult['item']['subcategory_id'] = $aSpecs[0]['subcategory_id']; } $aResult['item']['attaches'] = array(); if ($aAttaches) { foreach ($aAttaches as $attach) { $aResult['item']['attaches'][] = array("url" => WDCPREFIX . '/' . $attach['path'], "file" => $attach['name']); } } $aResult['item']['responses'] = array(); if ($aProject['kind'] == 7) { // конкурс require_once ABS_PATH . '/classes/contest.php'; $oContest = new contest($sId, $nUid, is_emp(), $aProject['user_id'] == $nUid, false, is_pro()); $oContest->GetOffers(); if (is_array($oContest->offers) && $oContest->offers) { foreach ($oContest->offers as $aOne) { $aResult['item']['responses'][] = $this->_getContestOfferData($aOne); } } } else { // проект require_once ABS_PATH . '/classes/projects_offers.php'; require_once ABS_PATH . '/classes/projects_offers_dialogue.php'; $oPrjOffers = new projects_offers(); $obj_dialogue = new projects_offers_dialogue(); $nOffersCnt = 0; if (is_emp()) { // залогинен работодатель $aOffers = $oPrjOffers->GetPrjOffers($nOffersCnt, $sId, 'ALL', 0, $nUid, $aProject['user_id'] == $nUid, 'date', $aProject['user_id'] == $nUid ? 'a' : 'nor'); } else { $aOffers = $oPrjOffers->GetPrjOffers($nOffersCnt, $sId, 'ALL', 0, $nUid, false, null, 'nor'); } // Диалоги по предложениям к данному проекту и все остальное if (is_array($aOffers) && $aOffers) { foreach ($aOffers as $key => $value) { $aOffers[$key]['exec_id'] = $aProject['exec_id']; $aOffers[$key]['emp_uid'] = $aProject['user_id']; $aOffers[$key]['dialogue'] = $obj_dialogue->GetDialogueForOffer($value['id']); $aResult['item']['responses'][] = $this->_getProjectOfferData($aOffers[$key]); } } $aResult['item']['responses_count'] = $nOffersCnt; $aResult['item']['is_responses_exists'] = $oPrjOffers->OfferExist($sId, $nUid) ? 1 : 2; // Наличие предложения данного юзера по данному проекту if ($aResult['item']['is_responses_exists'] == 1) { // Предложение данного пользователя по данному проекту $user_offer = $oPrjOffers->GetPrjOffer($sId, $nUid); $user_offer['exec_id'] = $aProject['exec_id']; $user_offer['emp_uid'] = $aProject['user_id']; // Диалог по предложению данного пользователя $user_offer['dialogue'] = $obj_dialogue->GetDialogueForOffer($user_offer['id']); $aResult['item']['responses'][] = $this->_getProjectOfferData($user_offer); } } } else { $this->error(EXTERNAL_ERR_PROJECT_NOT_FOUND); } } else { $this->error(EXTERNAL_ERR_EMPTY_PROJECT_ID); } return $aResult; }
</div> <?php if (count($_POST) == 2) { new contest($_POST); echo '<div class="green">Contest ', $_POST['name'], ' has been added</div>'; } ?> <div> <form action="/manage/contest" method="post"> <div><input type="text" name="name" placeholder="Name" /></div> <div><textarea name="desc" placeholder="Description"></textarea></div> <div><input type="submit" value="Add"/></div> </form> </div> <?php $contest = new contest(false); $i = 0; $max = 10; if (isset($uri[0]) && $uri[0] == 'all') { $max = 10000; } ?> <div id="contests"> <?php echo $contest->count(); ?> contests found <?php if ($max == 10) { ?> (10 newest shown - <a href="/manage/contest/all">click here to show all</a>)<?php
ini_set('max_execution_time', 900); require_once '../../config/connection.php'; //including classes include 'classes/coders_basic.php'; include 'classes/coders_rating.php'; include 'classes/contests.php'; include 'classes/hackerearth_api_connect.php'; include 'classes/hackerearth_data.php'; include 'classes/hackerearth_candidate_api_connect.php'; include 'classes/admin.php'; include 'classes/api_table.php'; //including functions include 'functions/new_rating.php'; include 'functions/probability_function.php'; //declaring contest variables $contest = new contest(); $contest_id = $contest->get_not_evaluated_contest(); $cid = $contest->get_contest_no($contest_id); $contest_type = $contest->get_contest_type($contest_id); //calling the function if ($contest_type == 1) { update_details($contest, $contest_id, $contest_type, $cid); } else { update_details_global($contest, $contest_id, $contest_type, $cid); } function update_details($contest, $contest_id, $contest_type, $cid) { //adding contest details //creating object of api echo "inside update details "; $provider = "hackerearth";
/** * @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; }
<?php //including configuration require_once '../../config/connection.php'; //including classes include 'classes/coders_basic.php'; include 'classes/coders_rating.php'; include 'classes/contests.php'; include 'classes/hackerearth_api_connect.php'; include 'classes/hackerearth_data.php'; include 'classes/admin.php'; include 'classes/api_table.php'; //including functions include 'functions/new_rating.php'; include 'functions/probability_function.php'; //declaring contest variables $contest = new contest(); $contest_id = $_POST['contest_id']; $contest_name = $_POST['contest_name']; $contest_type = $_POST['contest_type']; $contest_link = $_POST['contest_link']; $contest_date = $_POST['contest_date']; //add $_POST VALUES HERE AND CONTEST WILL BE UPDATED $contest->add_contest($contest_id, $contest_name, $contest_type, $contest_date, $contest_link); //calling the function header('Location:../pages/updateDatabase.php');
} ?> ><strong><a href="javascript:void(0)" onClick="allCommentsTree(); return false;" id="allct">Свернуть все ветви комментариев</a> (<span id="co-all"><?php echo (int) $all_msg_count; ?> </span>)</strong></div> <?php } ?> <ul class="coments-list"> <?php foreach ($contest->offers as $offer) { if ($offer['user_id'] == get_uid(false) || $offer['user_id'] == $project["user_id"]) { contest::markReadComments(get_uid(false)); } if ($_GET['filter'] == 'candidates' && $offer['selected'] == 'f') { continue; } $a_is_banned = ($offer['is_banned'] || $offer['usr_banned']) && hasPermissions('projects'); if ($offer['user_id'] != $uid && $offer['is_deleted'] == 't' && !hasPermissions('projects')) { continue; } ?> <li class="thread thread-offer <?php echo $offer['is_deleted'] == 't' ? 'comment-deleted' : ''; ?> " id="offer-<?php echo $offer['id']; ?>
<?php //including configuration require_once 'core/config.php'; //including classes include 'classes/coders_basic.php'; include 'classes/coders_rating.php'; include 'classes/contests.php'; include 'classes/hackerearth_api_connect.php'; include 'classes/hackerearth_data.php'; include 'classes/admin.php'; include 'classes/api_table.php'; //including functions include 'functions/new_rating.php'; include 'functions/probability_function.php'; //declaring contest variables $contest = new contest(); $contest->is_table_present(); $coders = new coders(); $coders->is_table_present(); $rating = new rating(); $rating->is_table_present(); $admin = new admin(); $admin->is_table_present(); $api_table = new api_table(); $api_table->is_table_present();
if (trim($contact['value']) == '') { $empty_contacts_employer++; } } $is_contacts_employer_empty = count($contacts_employer) == $empty_contacts_employer; } if ($project['sbr_frl_id'] && $project['sbr_status'] >= sbr::STATUS_CHANGED) { $project['exec_id'] = $project['sbr_frl_id']; } if (hasPermissions('projects')) { $project_history = $obj_project->GetPrjHistory($prj_id); } // Новые конкурсы if ($project['kind'] == 7) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/contest.php'; $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 ($_GET['offer-edit']) { $edit = $contest->GetOffer($_GET['offer-edit'], true); } } 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 = get_uid(false); } } else { if (projects_offers::IsPrjOfferExists($project['id'], get_uid(false))) { $is_verify = 1;
/** * Напоминание об окончании конкурса. * * @return string возможная ошибка */ public function ContestEndReminder() { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/contest.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/freelancer.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/employer.php'; $users = contest::WInterval('1 day', 'end_date'); if (!$this->Connect()) { return 'Невозможно соеденится с SMTP сервером'; } foreach ($users as $prj_id => $u) { $project_name = htmlspecialchars($u['project_name'], ENT_QUOTES, 'CP1251', false); // Заказчик $user = new employer(); $user->GetUserByUID($u['employer']); if ($user->email && substr($user->subscr, 8, 1) == '1') { $this->message = $this->GetHtml($user->uname, "\nСообщаем вам, что остается один день до окончания конкурса «<a href=\"{$GLOBALS['host']}" . getFriendlyURL('project', $prj_id) . $this->_addUrlParams('e') . '">' . $project_name . '</a>». ', array('header' => 'simple', 'footer' => 'sub_emp_projects'), array('login' => $user->login)); $this->recipient = "{$user->uname} {$user->usurname} [{$user->login}] <" . $user->email . '>'; $this->subject = 'Остался день до окончания конкурса «' . htmlspecialchars_decode($u['project_name'], ENT_QUOTES) . '»'; $this->SmtpMail('text/html'); } // фрилансеры foreach ($u['freelancer'] as $user) { if (!$user['email'] || substr($user['subscr'], 8, 1) != '1' || $user['is_banned'] == '1') { continue; } $this->message = $this->GetHtml($user['uname'], "\nСообщаем вам, что остается один день до окончания конкурса «<a href=\"{$GLOBALS['host']}" . getFriendlyURL('project', $prj_id) . $this->_addUrlParams('f') . '">' . $project_name . "</a>».\n<br />\nВы можете перейти к своей <a href=\"{$GLOBALS['host']}" . getFriendlyURL('project', $prj_id) . "?offer={$user['offer_id']}{$this->_addUrlParams('f', '&')}#offer-{$user['offer_id']}\">работе</a>.\n<br />\n", array('header' => 'simple', 'footer' => 'default'), array('login' => $user['login'])); $this->recipient = "{$user['uname']} {$user['usurname']} [{$user['login']}] <{$user['email']}>"; $this->subject = 'Остался день до окончания конкурса «' . htmlspecialchars_decode($u['project_name'], ENT_QUOTES) . '»'; $this->SmtpMail('text/html'); } } return 0; }
<script src="http://code.jquery.com/jquery-1.10.2.min.js" type="text/javascript"></script> <?php $state = null; $country = country::voteable(); $imgs = []; while ($country->found()) { $state = $country->state; $img = '/style/images/bg' . $country->id . '.jpg'; if (file_exists(root . $img)) { $imgs[] = "'" . $img . "'"; } } if (!isset($imgs[0])) { $imgs[0] = '/style/images/bg0.jpg'; } $contest = contest::active(); $c = 0; $color = ['whiterow', 'greyrow']; ?> <script type="text/javascript"> $(window).load(function() { var i = 1; var images = [<?php echo implode(',', $imgs); ?> ]; var image = $('header'); //Initial Background image setup //image.css('background-image', "url(<?php
/** * Отсылает сообщения победителям конкурса * * @param string|array $ids ид предложений пользователей * @param resource $connect * @return integer количество отправленных уведомлений. */ function ContestWinners($ids, $connect = NULL) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/contest.php'; if (!($data = contest::getWinnerOffers($ids, $connect))) { return NULL; } foreach ($data as $proj) { if (!$proj['email'] || substr($proj['subscr'], 8, 1) != '1' || $proj['is_banned'] == '1') { continue; } $str = array(1 => 'первое', 2 => 'второе', 3 => 'третье'); $this->recipient = "{$proj['uname']} {$proj['usurname']} [{$proj['login']}] <{$proj['email']}>"; $userlink = $GLOBALS["host"] . "/users/" . $proj['emp_login']; $this->subject = 'Вас объявили одним из победителей конкурса «' . htmlspecialchars_decode($proj['project_name'], ENT_QUOTES) . '»'; $proj['project_name'] = htmlspecialchars($proj['project_name'], ENT_QUOTES, 'CP1251', false); $this->message = $this->GetHtml($proj['uname'], "Поздравляем вас!<br/><br/>\n Заказчик <a href=\"{$userlink}\">{$proj['emp_name']}</a> <a href=\"{$userlink}\">{$proj['emp_uname']}</a> [<a href=\"{$userlink}\">{$proj['emp_login']}</a>] объявил(a) вас одним из победителей в конкурсе «<a href=\"{$GLOBALS['host']}" . getFriendlyURL("project", $proj['project_id']) . $this->_addUrlParams('f') . "\">" . $proj['project_name'] . "</a>». \n Вы заняли " . ($str[$proj['position']] ? $str[$proj['position']] : $position) . " место. Поздравляем!\n <br /><br/>\n Вы можете перейти к своей <a href=\"{$GLOBALS['host']}" . getFriendlyURL("project", $proj['project_id']) . "?offer={$proj['id']}{$this->_addUrlParams('f', '&')}#offer-{$proj['id']}\">работе</a>.\n <br />\n ", array('header' => 'default', 'footer' => 'frl_subscr_projects'), array('login' => $proj['login'])); $this->SmtpMail('text/html'); } return $this->sended; }
/** * Отдает HTML для комментариев к работе в конкурсе * * @param object $objResponse xajaxResponse * @param string $rec_id идентификатор записи * @param string $rec_type тип записи * @param array $aParams массив дополнительных параметров * @return string */ function _admEditContestComParseForm(&$objResponse, $rec_id = '', $rec_type = '', $aParams = array()) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/contest.php'; $msg = contest::GetComment($rec_id); ob_start(); include_once $_SERVER['DOCUMENT_ROOT'] . '/user/adm_edit_tpl/contest_commment.php'; $sHtml = ob_get_contents(); ob_end_clean(); // текст $sOnReady = "if(\$('adm_edit_msg')) \$('adm_edit_msg').set('value', (\$('adm_edit_msg_source')? \$('adm_edit_msg_source').get('value') : null));"; $objResponse->assign('h4_adm_edit', 'innerHTML', 'Редактировать комментарий'); $objResponse->assign('div_adm_edit', 'innerHTML', $sHtml); $objResponse->script($sOnReady); $objResponse->script("\$('div_adm_reason').setStyle('display', '');"); $objResponse->script('adm_edit_content.edit();'); $objResponse->script('xajax_getAdmEditReasons(' . admin_log::ACT_ID_EDIT_CONTEST_COM . ');'); }
<?php /** * @application Automatical Judging System * @author deltamaster * @copyright Softrank Research Center * @version 2.0.0.0 */ $contest = new contest(); $contestname = $contest->config['contestname']; $starttime = ProcessTime($contest->config['starttime']); $endtime = ProcessTime($contest->config['endtime']); $started = $contest->started(); $ended = $contest->ended(); $timepassed = $contest->timepassed(); $totaltime = $contest->totaltime(); $introduction = $contest->config['introduction']; $introduction_html = translate($contest->config['introduction']);