function NewAdvice($to_user, $msgtext)
{
    require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/sbr.php";
    $objResponse = new xajaxResponse();
    $to_user = intval($to_user);
    $sbr = new sbr(get_uid(false));
    $isReqvsFilled = !$sbr->checkUserReqvs();
    if ($isReqvsFilled && !is_emp($_SESSION['role'])) {
        $objResponse->call('alert', 'Заполните раздел «Финансы»');
        $objResponse->script("\$\$('a.advice-new').store('lock', 0);");
        return $objResponse;
    }
    if (!$to_user) {
        $objResponse->call('alert', 'Ошибка');
        $objResponse->script("\$\$('a.advice-new').store('lock', 0);");
        return $objResponse;
    }
    if (is_empty_html($msgtext)) {
        $objResponse->call('alert', 'Вы не заполнили форму.');
        $objResponse->script("\$\$('a.advice-new').store('lock', 0);");
        return $objResponse;
    }
    if (strlen_real($msgtext) > paid_advices::MAX_DESCR_ADVICE) {
        $objResponse->call('alert', 'Рекомендация не должна быть больше ' . paid_advices::MAX_DESCR_ADVICE . ' символов');
        $objResponse->script("\$\$('a.advice-new').store('lock', 0);");
        return $objResponse;
    }
    $advice = new paid_advices();
    $new = $advice->add($to_user, $msgtext);
    if ($new === false) {
        $objResponse->call('alert', 'Ошибка отправки рекомендации.');
        $objResponse->script("\$\$('a.advice-new').store('lock', 0);");
        return $objResponse;
    }
    $objResponse->call('newAdviceResp', $res);
    return $objResponse;
}
/**
 * Сохранение предложений фрилансеров Сделаю
 * 
 * @param object $objResponse xajaxResponse
 * @param string $rec_id идентификатор записи
 * @param string $rec_type тип записи
 * @param array $aForm массив данных
 * @param string $sDrawFunc имя функции для выполнения после сохранения
 */
function _admEditSdelauSaveForm(&$objResponse, $rec_id = '', $rec_type = '', $aForm = array(), $sDrawFunc = '')
{
    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/freelancer_offers.php';
    $alert = array();
    if (trim($aForm['name']) == '') {
        $alert[1] = 'Поле не заполнено';
    } elseif (strlen($aForm['name']) > freelancer_offers::MAX_SIZE_TITLE) {
        $alert[1] = 'Максимальное количество символов ' . freelancer_offers::MAX_SIZE_TITLE;
    }
    if (trim($aForm['msg']) == '') {
        $alert[2] = 'Поле не заполнено';
    } elseif (strlen_real($aForm['msg']) > freelancer_offers::MAX_SIZE_DESCRIPTION) {
        $alert[2] = 'Максимальное количество символов ' . freelancer_offers::MAX_SIZE_DESCRIPTION;
    }
    if ($aForm['categories'] == 0) {
        $alert[3] = 'Не выбран раздел и подраздел';
    }
    if (!$alert) {
        require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/messages.php';
        $oFreelancerOffers = new freelancer_offers();
        $update = array('title' => $aForm['name'], 'descr' => $aForm['msg'], 'category_id' => intval($aForm['categories']), 'subcategory_id' => intval($aForm['subcategories']), 'modify_date' => date('Y-m-d H:i:s'));
        $oFreelancerOffers->Update(intval($rec_id), $update);
        $sReason = _parseReason($aForm['user_id'], $aForm['adm_edit_text']);
        messages::sdelauModifiedNotification($aForm['msg'], $aForm['login'], $aForm['uname'], $aForm['usurname'], $sReason);
        $content_id = user_content::MODER_SDELAU;
        _admEditAfterAll($objResponse, $content_id, $rec_id, $rec_type, $sDrawFunc, $aForm);
    } else {
        _setErrors($objResponse, $alert, array(1 => 'name', 2 => 'msg', 3 => 'categories'), $sDrawFunc);
    }
}
Beispiel #3
0
/**
 * Обновление заметки о пользователе на главной странице сообществ.
 *  
 * @param integer $user_id    -  uid пользователя
 * @param integer $commune_id -  id сообщества
 * @param string  $note       -  заметка
 *
 * @return xajaxResponse
 */
function UpdateNoteMP($user_id, $commune_id, $note)
{
    $objResponse = new xajaxResponse();
    if (get_uid(false) != $user_id) {
        return $objResponse;
    }
    $note = change_q_x(stripcslashes($note), FALSE, TRUE, '', false, false);
    if (strlen_real($note) > commune::MEMBER_NOTE_MAX_LENGTH) {
        $objResponse->alert('Максимальное количество символов ' . commune::MEMBER_NOTE_MAX_LENGTH);
        $objResponse->script('$("ne2' . $user_id . '").getElement("textarea").disabled=false;');
        return $objResponse;
    }
    if (commune::UpdateNoteMP($user_id, $commune_id, $note)) {
        if (preg_match) {
            $objResponse->assign("ne1{$user_id}", 'innerHTML', reformat(stripslashes($note), 20, 0, 0, 1, 15));
            $objResponse->script('
                memberNoteForm(' . $user_id . ');
                $("ne2' . $user_id . '").getElement("textarea").disabled=false;
            ');
        }
    }
    return $objResponse;
}
Beispiel #4
0
    exit;
}
$content = "tpl.public-offers.php";
$js_file = array('tawl.js');
if ($action) {
    if ($_POST['action']) {
        if (trim($_POST['title']) == "") {
            $error['title'] = true;
        }
        if (trim($_POST['descr']) == "") {
            $error['descr'] = true;
        }
        if ($_POST['categories'] == 0) {
            $error['categories'] = true;
        }
        if (strlen_real($_POST['descr']) > freelancer_offers::MAX_SIZE_DESCRIPTION) {
            $error['descr_max'] = true;
        }
        if (strlen($_POST['title']) > freelancer_offers::MAX_SIZE_TITLE) {
            $error['title_max'] = true;
        }
    }
    if ($action != "create" && $action != "update" && $fid) {
        $offer = $frl_offers->getOfferById($fid);
        if (!$offer) {
            include $error_page;
            exit;
        }
    }
    switch ($action) {
        case "create":
Beispiel #5
0
     $error['cost'] = 'Введите положительную сумму';
 }
 if ($project['cost'] > 999999) {
     $error['cost'] = 'Слишком большая сумма';
 }
 if ($project['cost'] > 0 && ($project['currency'] < 0 || $project['currency'] > 3)) {
     $error['currency'] = 'Валюта не определена';
 }
 if (is_empty_html($project['descr'])) {
     $error['descr'] = 'Поле не заполнено';
 }
 if (is_empty_html($project['name'])) {
     $error['name'] = 'Поле не заполнено';
 }
 $descr_limit = !$PDA ? 5000 : 2500;
 if (strlen_real($project['descr']) > $descr_limit) {
     $error['descr'] = "Исчерпан лимит символов ({$descr_limit})";
 }
 if ($project['kind'] == 7) {
     $tmpPrj->setProjectField('end_date', str_replace('.', '-', __paramInit('string', NULL, 'end_date')), 0, 64);
     $tmpPrj->setProjectField('win_date', str_replace('.', '-', __paramInit('string', NULL, 'win_date')), 0, 64);
     $project = $tmpPrj->getProject();
     $pExrates = project_exrates::getAll();
     if ($project['currency'] == 0) {
         // USD
         $costRub = $project['cost'] * $pExrates['24'];
         // бюджет в рублях
     } elseif ($project['currency'] == 1) {
         // EURO
         $costRub = $project['cost'] * $pExrates['34'];
     } else {
 /**
  * Добавление сообщения в диалог предложения к проекту.
  *
  * @param integer $po_id    id предложения к проекту
  * @param integer $user_id  id пользователя
  * @param string  $message  текст сообщения
  * @param boolean $frl_read пометка о прочтении фрилансером
  * @param boolean $emp_read пометка о прочтении работодателем
  * @param boolean $emp_read пометка о корневом сообщении - само предложение
  *
  * @return string пустая строка если метод выполнен успешно или сообщение об ошибке
  */
 public function AddDialogueMessage($po_id, $user_id, $message, $frl_read = false, $emp_read = false, $root = false)
 {
     global $DB;
     $message = preg_replace("/(\r\n|\r|\n){3,100}/i", "\r\n\r\n", $message);
     $message = rtrim(ltrim($message, "\r\n"));
     if (strlen_real($message) > 1000) {
         $message = substr(stripcslashes($message), 0, 1000);
     }
     $message = change_q_x(stripcslashes($message), false, true, '', false, false);
     $sql = 'SELECT po.user_id AS frl, p.user_id AS emp, e.is_pro AS emp_is_pro, f.is_pro AS frl_is_pro 
             FROM projects_offers po
             LEFT JOIN projects p ON p.id = po.project_id 
             LEFT JOIN employer e ON e.uid = p.user_id 
             LEFT JOIN freelancer f ON f.uid = po.user_id 
             WHERE po.id = ?i LIMIT 1';
     $users = $DB->row($sql, $po_id);
     $nStopWordsCnt = 0;
     if (!$root && $users['emp_is_pro'] != 't' && $users['frl_is_pro'] != 't') {
         require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/stop_words.php';
         $stop_words = new stop_words();
         $nStopWordsCnt = $stop_words->calculate($message);
     }
     $sModVal = $root || $users['emp_is_pro'] == 't' || $users['frl_is_pro'] == 't' || !$nStopWordsCnt ? null : 0;
     $sId = $DB->insert('projects_offers_dialogue', array('po_id' => $po_id, 'user_id' => $user_id, 'post_text' => (string) $message, 'frl_read' => (bool) $frl_read, 'emp_read' => (bool) $emp_read, 'root' => (bool) $root, 'moderator_status' => $sModVal), 'id');
     if ($sId && !$root && $users['emp_is_pro'] != 't' && $users['frl_is_pro'] != 't' && $nStopWordsCnt) {
         require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/user_content.php';
         $GLOBALS['DB']->insert('moderation', array('rec_id' => $sId, 'rec_type' => user_content::MODER_PRJ_DIALOG, 'stop_words_cnt' => $nStopWordsCnt));
     }
     // стираем мемкеш
     $memBuff = new memBuff();
     if ((int) $users['frl'] !== (int) $user_id) {
         $memBuff->delete("prjMsgsCnt{$users['frl']}");
         $memBuff->delete("prjMsgsCntWst{$users['frl']}");
     } elseif ((int) $users['emp'] !== (int) $user_id) {
         $memBuff->delete("prjMsgsCnt{$users['emp']}");
         $memBuff->delete("prjLastMess{$users['emp']}");
     }
     return $GLOBALS['DB']->error;
 }
Beispiel #7
0
 /**
  * Добавление проекта
  * 
  * @param  array $aParams массив входящих данных
  * @return array $aResult ответ
  */
 protected function x____projects_add($aParams = array())
 {
     $this->_validDevice($aParams);
     require_once ABS_PATH . "/classes/projects.php";
     $nKind = intvalPgSql($aParams['kind']);
     $nKind = !empty($nKind) ? $nKind : $this->_mCfg['default_kind'];
     $nUid = get_uid(false);
     $sKey = md5(uniqid($uid));
     // ключ-идентификатор создаваемого/редактируемого проекта, для хранения в кэше.
     $aCats = array(array('category_id' => intvalPgSql($aParams['group_category_id']), 'subcategory_id' => intvalPgSql($aParams['category_id'])));
     $tmpPrj = new tmp_project($sKey);
     $tmpPrj->init(1, 0);
     $tmpPrj->setProjectField('kind', $nKind);
     $tmpPrj->setProjectField('descr', __paramValue('html', antispam(iconv('utf-8', 'cp1251', $aParams['descr'])), null, true));
     $tmpPrj->setProjectField('name', substr(antispam(__paramValue('string', iconv('utf-8', 'cp1251', $aParams['title']), 60)), 0, 512));
     $tmpPrj->setProjectField('cost', __paramValue('float', $aParams['budget']));
     $tmpPrj->setProjectField('currency', intvalPgSql($aParams['currency']));
     $tmpPrj->setProjectField('priceby', intvalPgSql($aParams['dimension']));
     $tmpPrj->setProjectField('agreement', intvalPgSql($aParams['budget_agreement']));
     $tmpPrj->setProjectField('budget_type', 0);
     // TODO: ???
     $tmpPrj->setCategories($aCats);
     $tmpPrj->setProjectField('country', intvalPgSql($aParams['country_id']));
     $tmpPrj->setProjectField('city', intvalPgSql($aParams['city_id']));
     $tmpPrj->setProjectField('pro_only', intvalPgSql($aParams['only_pro']) ? 't' : 'f');
     $tmpPrj->setProjectField('verify_only', intvalPgSql($aParams['only_verified']) ? 't' : 'f');
     $tmpPrj->setProjectField('prefer_sbr', intvalPgSql($aParams['prefer_sbr']) ? 't' : 'f');
     $project = $tmpPrj->getProject();
     if ($project['cost'] < 0) {
         $this->error(EXTERNAL_ERR_PRJ_COST_MIN);
     }
     if ($project['cost'] > 999999) {
         $this->error(EXTERNAL_ERR_PRJ_COST_MAX);
     }
     if ($project['cost'] > 0 && ($project['currency'] < 0 || $project['currency'] > 3)) {
         $this->error(EXTERNAL_ERR_PRJ_CURRENCY);
     }
     if (is_empty_html($project['descr'])) {
         $this->error(EXTERNAL_ERR_PRJ_EMPTY_DESCR);
     }
     if (is_empty_html($project['name'])) {
         $this->error(EXTERNAL_ERR_PRJ_EMPTY_TITLE);
     }
     if (strlen_real($project['descr']) > $this->_mCfg['descr_limit']) {
         $this->error(EXTERNAL_ERR_PRJ_LENGTH_DESCR);
     }
     // TODO: пока только проекты
     /*if ( $project['kind'] == 7 ) {
                     $tmpPrj->setProjectField('end_date', __paramInit('string', NULL, 'end_date'),0,64);
                     $tmpPrj->setProjectField('win_date', __paramInit('string', NULL, 'win_date'),0,64);
                     $project = $tmpPrj->getProject();
     
                     if (!preg_match("/^([0-9]{1,2})\-([0-9]{1,2})\-([0-9]{4})$/", $project['end_date'], $o1) || !checkdate($o1[2], $o1[1], $o1[3]))
                             $error['end_date'] = 'Неправильная дата';
     
                     if (!preg_match("/^([0-9]{1,2})\-([0-9]{1,2})\-([0-9]{4})$/", $project['win_date'], $o2) || !checkdate($o2[2], $o2[1], $o2[3]))
                             $error['win_date'] = 'Неправильная дата';
     
                     // Модераторам аккуратней	
                 if(!hasPermissions('projects')) {
                     if (!$error['end_date'] && mktime(0, 0, 0, $o1[2], $o1[1], $o1[3]) <= mktime(0, 0, 0))
                             $error['end_date'] = 'Дата окончания конкурса не может находиться  в прошлом';
     
                     if (!$error['win_date'] && mktime(0, 0, 0, $o2[2], $o2[1], $o2[3]) <= mktime(0, 0, 0, $o1[2], $o1[1], $o1[3]))
                             $error['win_date'] = 'Дата определения победителя должна быть больше даты окончания конкурса';
                     }
     
             }*/
     // сохранение файлов
     if (is_array($_FILES['files']) && $_FILES['files']) {
         $aFiles = $this->_multiple($_FILES);
         foreach ($aFiles['files'] as $aFile) {
             if (is_array($aFile) && !$aFile['error']) {
                 $_FILES['attachedfiles_file'] = $aFile;
                 $_POST['attachedfiles_action'] = 'add';
                 $_POST['attachedfiles_type'] = 'project';
                 $bSilentMode = true;
                 include ABS_PATH . '/attachedfiles.php';
                 if (isset($file['errno'])) {
                     switch ($file['errno']) {
                         case 1:
                             $this->error(EXTERNAL_ERR_FILE);
                             break;
                         case 2:
                             $this->error(EXTERNAL_ERR_MAX_FILES_CONUT);
                             break;
                         case 3:
                             $this->error(EXTERNAL_ERR_MAX_FILES_SIZE);
                             break;
                         case 4:
                             $this->error(EXTERNAL_ERR_FILE_FORMAT);
                             break;
                         default:
                             $this->error(EXTERNAL_ERR_SERVER_ERROR);
                             break;
                     }
                 }
                 $attachedfiles_files = $attachedfiles->getFiles(array(1, 3, 4));
                 $tmpPrj->addAttachedFiles($attachedfiles_files);
                 $attachedfiles->clear();
             }
         }
     }
     $tmpPrj->fix();
     $tmpPrj->saveProject(null, $aProject);
     return $this->x____projects_get(array('id' => $aProject['id']));
 }
Beispiel #8
0
 }
 if ($files) {
     if (!($err = tryLoadFile($files, 'upload', $user_login, $attach_name, $small, commune::MSG_IMAGE_MAX_WIDTH, commune::MSG_IMAGE_MAX_HEIGHT, commune::MSG_FILE_MAX_SIZE))) {
         //$request['small'] = $small;
     } else {
         $alert['attach'] = $err;
         $attach_name = NULL;
     }
 }
 require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/attachedfiles.php';
 $attachedfiles = new attachedfiles($_POST['attachedfiles_session']);
 $attachedfiles_files = $attachedfiles->getFiles(array(1, 3, 4));
 //$question = change_q_x_a(antispam(trim((string) $question)), false, false, '');
 if (strlen_real($question) > commune::POLL_QUESTION_CHARS_MAX) {
     $len = strlen($question);
     $rlen = strlen_real($question);
     $question = substr($question, 0, $len - ($rlen - commune::POLL_QUESTION_CHARS_MAX));
 }
 $answers = array();
 $answers_exists = array();
 $multiple = (bool) $_POST['multiple'];
 $acount = 0;
 if ($request['answers'] && is_array($request['answers'])) {
     foreach ($request['answers'] as $key => $answer) {
         if (trim($answer) != '') {
             $answers[] = __paramValue('string', $answer, commune::POLL_ANSWER_CHARS_MAX * 2);
             ++$acount;
         } else {
             unset($request['answers'][$key]);
         }
     }
Beispiel #9
0
 /**
  * Обработка информации шага проекты.
  */
 public function actionProjects()
 {
     $prj_id = $_SESSION['view_wizard_project'];
     if (!$prj_id) {
         require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/attachedfiles.php';
         require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/project_exrates.php';
         require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/professions.php';
         require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects.php';
         require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/country.php';
         require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/city.php';
         $prj_exrates = project_exrates::GetAll();
         $categories = professions::GetAllGroupsLite();
         $professions = professions::GetAllProfessions();
         array_group($professions, 'groupid');
         $professions[0] = array();
         $addedPrc = is_pro() ? 0 : new_projects::PRICE_ADDED;
         $colorPrc = new_projects::PRICE_COLOR * ($addedPrc > 0 ? 1 : 0);
         $boldPrc = new_projects::PRICE_BOLD + $addedPrc;
         $logoPrc = new_projects::PRICE_LOGO + $addedPrc;
         $cTopPrice = new_projects::PRICE_CONTEST_TOP1DAY + $addedPrc;
         $pTopPrice = new_projects::PRICE_TOP1DAY + $addedPrc;
         $action = __paramInit('string', 'action', 'action', null);
         $attachedfiles_session = __paramInit('string', 'attachedfiles_session', 'attachedfiles_session', false);
         // проверяем есть ли уже созданый проект
         $projects = $this->getCreatedProjects();
         $existPrjID = count($projects) > 0 ? $projects[0][id] : null;
         // выводим ранее сохраненный проект
         if ($action != 'create_project' && $existPrjID) {
             $data = $projects[0];
             list($category, $subcategory) = explode('|', $data['categories']);
             $currency_name = $this->CURRENCY_TYPE[$data['currency']];
             $priceby_name = $this->PRICEBY_TYPE[$data['priceby']];
             $data['pro_only'] = $data['pro_only'] === 't';
             $price = $data['payed'];
             $option = array();
             $option['top'] = $data['top_count'] > 0;
             $option['top_count'] = $data['top_count'];
             $option['color'] = $data['is_color'] === 't';
             $option['bold'] = $data['is_bold'] === 't';
             $option['logo'] = $data['logo_id'] > 0;
         } elseif ($action == 'create_project') {
             // сохраняем новый проект или изменяем старый
             $in_office = __paramInit('int', null, 'in_office', 0);
             $type = __paramInit('string', null, 'kind');
             if ($type == 'contest') {
                 $data['kind'] = 7;
                 $data['end_date'] = date('d-m-Y', strtotime(__paramInit('string', null, 'end_date_eng_format', 0)));
                 $data['win_date'] = date('d-m-Y', strtotime(__paramInit('string', null, 'win_date_eng_format', 0)));
             } elseif ($in_office == 1) {
                 $location = __paramInit('integer', null, 'location_column_id');
                 if ($location == 1) {
                     $data['city'] = __paramInit('integer', null, 'location_db_id');
                     $data['country'] = country::getCountryByCityId($data['city']);
                 } else {
                     $data['country'] = __paramInit('integer', null, 'location_db_id');
                 }
                 $data['kind'] = 4;
             } else {
                 $data['kind'] = 1;
             }
             $data['name'] = __paramInit('string', null, 'name');
             $data['descr'] = __paramInit('string', null, 'descr');
             $category = __paramInit('int', null, 'r_category');
             $subcategory = __paramInit('int', null, 'r_subcategory');
             $agreement = __paramInit('int', null, 'agreement', 0);
             $data['pro_only'] = __paramInit('int', null, 'pro_only', 0) == 1 ? true : false;
             if ($agreement != 1) {
                 $data['cost'] = __paramInit('int', null, 'cost', 0);
                 $data['priceby'] = __paramInit('int', null, 'r_priceby', 0);
                 $data['currency'] = __paramInit('int', null, 'r_currency', 0);
                 $data['budget_type'] = __paramInit('int', null, 'budget_type', 0);
             }
             if (is_empty_html($data['descr'])) {
                 $error['descr'] = 'Поле не заполнено';
             }
             if (is_empty_html($data['name'])) {
                 $error['name'] = 'Поле не заполнено';
             }
             // проверяем длину необработанной строки, а иначе спецсимволы считаются как несколько символов
             if (strlen(stripslashes($_POST['name'])) > 60) {
                 $error['name'] = 'Превышен лимит - 60 символов';
             }
             if (!$category) {
                 $error['category'] = 'Не выбран раздел';
             } elseif ($subcategory) {
                 $data['categories'] = "{$category}|{$subcategory}";
             } else {
                 $data['categories'] = $category;
             }
             if ($data['cost'] < 0) {
                 $error['cost'] = 'Введите положительную сумму';
             }
             if ($data['cost'] > 999999) {
                 $error['cost'] = 'Слишком большая сумма';
             }
             if ($data['cost'] > 0 && ($data['currency'] < 0 || $data['currency'] > 3)) {
                 $error['currency'] = 'Валюта не определена';
             }
             if ($data['cost'] > 0 && ($data['priceby'] < 1 || $data['priceby'] > 4)) {
                 $error['priceby'] = 'Вид бюджета не определен';
             }
             $descr_limit = projects::LIMIT_DESCR;
             if (strlen_real($data['descr']) > $descr_limit) {
                 $error['descr'] = "Исчерпан лимит символов ({$descr_limit})";
             }
             if ($data['kind'] == 7) {
                 if (!preg_match("/^([0-9]{1,2})\\-([0-9]{1,2})\\-([0-9]{4})\$/", $data['end_date'], $o1) || !checkdate($o1[2], $o1[1], $o1[3])) {
                     $error['end_date'] = 'Неправильная дата';
                 }
                 if (!preg_match("/^([0-9]{1,2})\\-([0-9]{1,2})\\-([0-9]{4})\$/", $data['win_date'], $o2) || !checkdate($o2[2], $o2[1], $o2[3])) {
                     $error['win_date'] = 'Неправильная дата';
                 }
                 if (!$error['end_date'] && mktime(0, 0, 0, $o1[2], $o1[1], $o1[3]) <= mktime(0, 0, 0)) {
                     $error['end_date'] = 'Дата окончания конкурса не может находиться  в прошлом';
                 }
                 if (!$error['win_date'] && mktime(0, 0, 0, $o2[2], $o2[1], $o2[3]) <= mktime(0, 0, 0, $o1[2], $o1[1], $o1[3])) {
                     $error['win_date'] = 'Дата определения победителя должна быть больше даты окончания конкурса';
                 }
             }
             $option['top'] = __paramInit('int', null, 'option_top', 0);
             $option['top_count'] = __paramInit('int', null, 'option_top_count', 0);
             $option['color'] = __paramInit('int', null, 'option_color', 0);
             $option['bold'] = __paramInit('int', null, 'option_bold', 0);
             $option['logo'] = __paramInit('int', null, 'option_logo', 0);
             // логотип
             if ($option['logo'] == 1) {
                 $data['logo_link'] = str_replace('http://', '', __paramInit('string', null, 'logo_link', null));
                 $data['logo_id'] = __paramInit('int', null, 'logo_id', null);
                 // если выбрана опция "Логотип со ссылкой", то картинка должна быть обязательно
                 if (!$data['logo_id']) {
                     $error['logo_image'] = 'Отсутствует логотип';
                 }
                 if ($data['logo_link'] === 'Адрес сайта') {
                     $data['logo_link'] = '';
                 }
                 if ($data['logo_link'] !== '' && !is_url($data['logo_link'])) {
                     $error['logo_link'] = 'Не верно введен адрес';
                 }
             } else {
                 $data['logo_id'] = null;
             }
             $price = 0;
             // закрепление на верху
             if ($option['top'] == 1 && $option['top_count'] > 0) {
                 if ($option['top_count'] > 999) {
                     $option['top_count'] = 999;
                 }
                 $price = (int) $option['top_count'] * ($data['kind'] == 7 ? $cTopPrice : $pTopPrice);
                 $data['top_count'] = (int) $option['top_count'];
                 $pay_option[] = array('wiz_uid' => $this->getWizardUserID(), 'op_code' => new_projects::OPCODE_PAYED, 'option' => self::PROJECT_OPTION_TOP, 'type' => $data['kind'] == 7 ? self::BILL_TYPE_CONTEST : self::BILL_TYPE_PROJECT, 'ammount' => $price);
             } else {
                 $data['top_count'] = 0;
             }
             // выделение цветом
             if ($option['color'] == 1) {
                 $price += (int) $colorPrc;
                 $data['is_color'] = true;
                 $pay_option[] = array('wiz_uid' => $this->getWizardUserID(), 'op_code' => new_projects::OPCODE_PAYED, 'option' => self::PROJECT_OPTION_COLOR, 'type' => $data['kind'] == 7 ? self::BILL_TYPE_CONTEST : self::BILL_TYPE_PROJECT, 'ammount' => $colorPrc);
             } else {
                 $data['is_color'] = false;
             }
             // выделение жирным
             if ($option['bold'] == 1) {
                 $price += (int) $boldPrc;
                 $data['is_bold'] = true;
                 $pay_option[] = array('wiz_uid' => $this->getWizardUserID(), 'op_code' => new_projects::OPCODE_PAYED, 'option' => self::PROJECT_OPTION_BOLD, 'type' => $data['kind'] == 7 ? self::BILL_TYPE_CONTEST : self::BILL_TYPE_PROJECT, 'ammount' => $boldPrc);
             } else {
                 $data['is_bold'] = false;
             }
             if ($option['logo'] == 1) {
                 $price += (int) $logoPrc;
                 $pay_option[] = array('wiz_uid' => $this->getWizardUserID(), 'op_code' => new_projects::OPCODE_PAYED, 'option' => self::PROJECT_OPTION_LOGO, 'type' => $data['kind'] == 7 ? self::BILL_TYPE_CONTEST : self::BILL_TYPE_PROJECT, 'ammount' => $logoPrc);
             }
             if ($price > 0) {
                 $data['payed'] = (int) $price;
             }
             if (!$error) {
                 $data['wiz_uid'] = $this->getWizardUserID();
                 // если проект уже есть
                 if ($existPrjID) {
                     // то просто обновляем его
                     $prj_id = $this->updateProject($data, $existPrjID);
                     // и очищаем все платные опции для этого проекта
                     wizard_billing::clearPayedOptions($prj_id);
                 } else {
                     $prj_id = $this->createProject($data);
                 }
                 if ($prj_id && $_POST['attachedfiles_session']) {
                     $attachedfiles = new attachedfiles($_POST['attachedfiles_session']);
                     $files = $attachedfiles->getFiles(array(1, 2, 3, 4));
                     $this->parent->addAttachedFiles($files, $prj_id);
                     $attachedfiles->clear();
                 }
                 if ($prj_id && $data['kind'] == 7) {
                     $insert = array('wiz_uid' => $data['wiz_uid'], 'op_code' => new_projects::OPCODE_KON_NOPRO, 'type' => self::BILL_TYPE_CONTEST, 'ammount' => new_projects::getKonkursPrice(), 'parent' => $prj_id);
                     wizard_billing::addPaidOption($insert);
                 }
                 if ($price > 0 && $prj_id) {
                     foreach ($pay_option as $k => $opt) {
                         $opt['parent'] = $prj_id;
                         wizard_billing::addPaidOption($opt);
                     }
                 }
                 if ($prj_id) {
                     $_SESSION['view_wizard_project'] = $prj_id;
                     header('Location: /wizard/registration/');
                     exit;
                 } else {
                     $error['project'] = 'Ошибка записи проекта';
                 }
             }
             $currency_name = __paramInit('string', null, 'currency');
             $priceby_name = __paramInit('string', null, 'priceby');
         }
         // Генерируем данные для вывода ошибок и заполнения полей
         $loc[] = country::GetCountryName($data['country']);
         if ($data['city']) {
             $loc[] = city::GetCityName($data['city']);
         }
         $location_name = implode(': ', $loc);
         $cat[] = professions::GetGroupName($category);
         if ($subcategory) {
             $cat[] = professions::GetProfName($subcategory);
         }
         $category_name = implode(': ', $cat);
         if ($data['logo_id']) {
             $file = new CFile($data['logo_id']);
             $logo_path = WDCPREFIX . '/' . $file->path . $file->name;
         }
         include $_SERVER['DOCUMENT_ROOT'] . '/wizard/registration/steps/tpl.step.project.php';
     } else {
         $project = $this->getProjectById($prj_id);
         $attached = $this->getProjectAttach($prj_id);
         include $_SERVER['DOCUMENT_ROOT'] . '/wizard/registration/steps/tpl.step.project.view.php';
     }
 }
Beispiel #10
0
 /**
  * Проверка передаваемых данных для сохранения/изменения комментария
  * 
  * @param boolean $edit_mode   Флаг указывающий какие данные на проверке при создании или при редактировании, 
  *                             для проверки валидности автора к редактированию комментария
  * @return type 
  */
 protected function checkInput($edit_mode = false)
 {
     $uid = get_uid(false);
     if (!$uid) {
         header("Location: /fbd.php");
         die;
     }
     $tn = 0;
     if ($this->enableWysiwyg) {
         if ($this->enableNewWysiwyg) {
             $msg = __paramValue('ckedit', antispam($_POST['cmsgtext']));
             //$msg = __paramValue('ckedit_nocut', antispam($_POST['cmsgtext']));
         } else {
             $msg = __paramValue('wysiwyg_tidy', antispam($_POST['cmsgtext']));
         }
     } else {
         $msg = change_q_x(antispam(stripslashes($_POST['cmsgtext'])), false, false, 'b|br|i|p|ul|li|cut|s|h[1-6]{1}', false, false);
     }
     $reply = __paramInit('int', null, 'parent_id', NULL);
     $order_type = __paramInit('int', null, 'ord');
     $thread = __paramInit('int', 'id');
     $rmatt = $_POST['rmattaches'];
     $no_redirect = $_POST['no_redirect'];
     if ($edit_mode) {
         $mod = $this->_options['is_permission'];
         $comment = $this->getData($reply);
         if (!$mod && $comment['author'] != get_uid(false)) {
             header("Location: /fbd.php");
             die;
         }
     }
     // загрузка файлов
     $files = array();
     $attach = $_FILES['attach'];
     if (is_array($attach) && !empty($attach['name'])) {
         foreach ($attach['name'] as $key => $v) {
             if (!$attach['name'][$key] || $key > self::MAX_FILE_COUNT) {
                 continue;
             }
             $_POST['is_attached'] = true;
             $files[] = new CFile(array('name' => $attach['name'][$key], 'type' => $attach['type'][$key], 'tmp_name' => $attach['tmp_name'][$key], 'error' => $attach['error'][$key], 'size' => $attach['size'][$key]));
             if ($attach['size'][$key] == 0) {
                 $alert['attach'] = "Пустой файл";
             }
         }
     }
     $yt_link = $_POST['yt_link'];
     if ((!$msg || is_empty_html($msg)) && !$_POST['is_attached'] && $yt_link == '') {
         $alert['msgtext'] = 'Поле не должно быть пустым';
     } elseif (strlen_real($msg) > self::MSG_TEXT_MAX_LENGTH) {
         $alert['msgtext'] = 'Количество символов превышает допустимое';
     } elseif ($this->enableWysiwyg) {
         /*$tidy = new tidy();
           $msg = $tidy->repairString(
               $msg,
               array(
                   'fix-backslash' => false,
                   'show-body-only' => true,
                   'bare' => true,
                   'preserve-entities' => true,
                   'wrap' => '0'),
               'raw');*/
         $msg = str_replace("\n", "", $msg);
         $msg = preg_replace("/\\h/", " ", $msg);
     }
     if ($yt_link != '') {
         $v_yt_link = video_validate($yt_link);
         if (!$v_yt_link) {
             $alert['yt_link'] = "Неверная ссылка.";
         } else {
             $yt_link = $v_yt_link;
         }
     } else {
         $yt_link = null;
     }
     $model = $this->model();
     list($att, $uperr, $error_flag) = $this->UploadFiles($files, array('width' => 390, 'height' => 1000, 'less' => 0), '', $model['attaches']['file_table']);
     if ($uperr) {
         $alert['attach'] = $uperr;
         $att = $comment['attach'];
     }
     $this->_post_msg = array('resource' => $this->_resource_id, 'parent_id' => $reply, 'author' => get_uid(false), 'msgtext' => $msg, 'yt' => $edit_mode && !$yt_link ? "" : $yt_link, 'attaches' => $att, 'rmattaches' => $rmatt);
     if (!isset($alert)) {
         $new = $this->save($this->_post_msg, $edit_mode ? $comment['id'] : null, $comment['author']);
         // если автор комментария прикрепляет новые файлы - на модерирование
         // пока не используется - на модерирование сразу при insert/update
         /*if ( $edit_mode && $new && $files && $comment['author'] == $uid 
               && $model['comments']['fields']['moderator_status'] && $model['moderation_rec_type'] 
           ) {
               $GLOBALS['DB']->query( 'UPDATE ' . $model['comments']['table'] 
                   . ' SET ' . $model['comments']['fields']['moderator_status'] .' = 0' 
                   . ' WHERE ' . $model['comments']['fields']['id'] .' = ?i', $comment['id'] );
               $GLOBALS['DB']->query( 'DELETE FROM moderation WHERE rec_id = ?i AND rec_type = ?i', 
                   $comment['id'], $model['moderation_rec_type'] );
           }*/
         if ($new && !count($this->errors) && !$no_redirect) {
             // Сделано в связи с тем что IE(любой версии) не понимает #anchor, если делать в PHP header()
             $_SESSION['c_new_id'] = intVal($new);
             $parse = parse_url($_SERVER['HTTP_REFERER']);
             $location = $parse['path'] . '?' . url($_SERVER['HTTP_REFERER'], array('r' => rand(1, 1000)));
             header("Location: {$location}", true, 303);
             exit;
         }
     } else {
         if ($edit_mode) {
             $this->_post_msg['attaches'] = $comment['attach'];
         } else {
             $this->_post_msg['attaches'] = null;
         }
     }
     return $alert;
 }