コード例 #1
0
ファイル: autoresponse.php プロジェクト: kapai69/fl-ru-damp
 public function process_event(&$event)
 {
     global $DB;
     $this->force_connect();
     $r = false;
     switch ($event->type) {
         case 'ProjectPosted':
             $project_id = $event->data['id'];
             $this->log->notice('New project posted #id = ' . $project_id);
             $obj_project = new projects();
             $project = $obj_project->GetPrjCust($project_id);
             // Не выбран испольнитель (если испольнитель выбран, то не пишем ответ на этот проект)
             if ($project && $project['exec_id'] == 0 && $project['kind'] == 1) {
                 $autoresponses = autoresponse::getListForProject($project);
                 foreach ($autoresponses as $autoresponse) {
                     $freelancer = $autoresponse->data['freelancer'];
                     $contacts_freelancer = $autoresponse->data['contacts_freelancer'];
                     // Проверяем если проект только для про, то и пользователь который на него отвечает должен быть ПРО
                     if ($project['pro_only'] == 't' && !payed::CheckPro($freelancer->login)) {
                         continue;
                     }
                     // Проверяем если проект только для верифицированных, то и пользователь который на него отвечает должен быть верифицирован
                     if ($project['verify_only'] == 't' && !$freelancer->IsVerified()) {
                         continue;
                     }
                     // Проверка, что текущий пользователь не является владельцем проекта
                     if ($project['user_id'] == $freelancer->uid) {
                         continue;
                     }
                     // Добавление нового отзыва к проекту
                     $obj_offer = new projects_offers();
                     $save_contacts = serialize($contacts_freelancer);
                     $DB->start();
                     $error_offer = $obj_offer->AddOffer($freelancer->uid, $project['id'], '', '', '', '', '', '', antispam(stripslashes($autoresponse->data['descr'])), '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', $autoresponse->toBoolean($autoresponse->data['only_4_cust']), 0, 0, false, false, $save_contacts, 0, $autoresponse->data['id']);
                     // В случае добавление автоответа, уменьшаем счетчик автоответов для пользователя (в транзакции)
                     if ($error_offer || !$autoresponse->reduce($freelancer, $obj_offer, $project_id)) {
                         $this->log->notice('Rollback autoresponse posted for project #id = ' . $project_id);
                         $DB->rollback();
                     } else {
                         $obj_project->incrementViews($project_id);
                         $this->log->notice(sprintf('New autoresponse #%d posted for project #%d', $obj_offer->offer_id, $project_id));
                         $DB->commit();
                     }
                 }
             }
             break;
     }
     return PGQ_EVENT_OK;
 }
コード例 #2
0
/**
 * Сохранение предложения по проектам
 * 
 * @param object $objResponse xajaxResponse
 * @param string $rec_id идентификатор записи
 * @param string $rec_type тип записи
 * @param array $aForm массив данных
 * @param string $sDrawFunc имя функции для выполнения после сохранения
 */
function _admEditPrjOfferSaveForm(&$objResponse, $rec_id = '', $rec_type = '', $aForm = array(), $sDrawFunc = '')
{
    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/messages.php';
    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/user_content.php';
    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects_offers.php';
    $obj_offer = new projects_offers();
    $payed_items = $aForm['ps_payed_items'];
    $payed_color = $aForm['ps_payed_items'][0] == '1';
    if ($aForm['is_color'] && !$payed_color) {
        $account = new account();
        $transaction_id = $account->start_transaction(get_uid());
        $error_buy = $account->Buy($billing_id, $transaction_id, $answers->color_op_code, get_uid(), "Выделение ответа на проект цветом", "Выделение <a href='" . getFriendlyURL("project", $project['id']) . "#freelancer_{$_SESSION['uid']}' target='_blank'>предложения</a> цветом", 1, 1);
        $payed_items = '1';
        if ($error_buy) {
            $aForm['is_color'] = false;
            $payed_items = '0';
        }
    }
    $sReason = _parseReason($aForm['user_id'], $aForm['adm_edit_text']);
    $error = $obj_offer->AddOffer($aForm['user_id'], $aForm['pid'], $aForm['ps_cost_from'], $aForm['ps_cost_to'], $aForm['ps_cost_type'], $aForm['ps_time_from'], $aForm['ps_time_to'], $aForm['ps_time_type'], antispam(stripslashes($aForm['ps_text'])), $aForm['ps_work_1_id'], $aForm['ps_work_2_id'], $aForm['ps_work_3_id'], $aForm['ps_work_1_link'], $aForm['ps_work_2_link'], $aForm['ps_work_3_link'], $aForm['ps_work_1_name'], $aForm['ps_work_2_name'], $aForm['ps_work_3_name'], $aForm['ps_work_1_pict'], $aForm['ps_work_2_pict'], $aForm['ps_work_3_pict'], $aForm['ps_work_1_prev_pict'], $aForm['ps_work_2_prev_pict'], $aForm['ps_work_3_prev_pict'], isset($aForm['ps_for_customer_only']), $aForm['edit'], 0, isset($aForm['prefer_sbr']), $aForm['is_color'], null, $payed_items, 0, $_SESSION['uid'], $sReason);
    if (!$error && !$error_buy && !$payed_color && $account) {
        $account->commit_transaction($transaction_id, get_uid(), $billing_id);
        $is_payed_color = true;
    }
    if ($error) {
        $objResponse->alert('Ошибка сохранения предложения' . $error);
        $sParent = $sDrawFunc == 'stream0' || $sDrawFunc == 'stream1' || $sDrawFunc == 'stream2' ? 'parent.' : '';
        $objResponse->script("{$sParent}adm_edit_content.disabled = false; {$sParent}adm_edit_content.button();");
    } else {
        messages::prjOfferModifiedNotification($aForm['user_id'], $aForm['pid'], $sReason);
        $content_id = user_content::MODER_PRJ_OFFERS;
        _admEditAfterAll($objResponse, $content_id, $rec_id, $rec_type, $sDrawFunc, $aForm);
    }
}
コード例 #3
0
 /**
  * Переносим ответы на проекты в работающие таблицы
  * 
  * @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;
 }
コード例 #4
0
ファイル: index.php プロジェクト: Nikitian/fl-ru-damp
         Руководитель проекта <a href='http://www.dizkon.ru/?utm_source=flnwsldiz&utm_medium=email&utm_campaign=dizkonvsjob' >DizKon.ru</a><br />
         <a href='mailto:maxim@dizkon.ru'>maxim@dizkon.ru</a><br />
                                         "; // текст письма
         */
         $mail->recipient = "{$employer->login} <" . $employer->email . ">";
         // получатель
         $mail->send('text/html');
         // отправляем письмо как plain/text
     }
 }
 if (!$is_edit && $is_personal) {
     //Добавляем ответ фрилансера
     //$message = 'Я получил' . ($sex == 'f' ? 'а' : '') . ' ваше предложение о проекте, в скором времени отвечу на него.';
     $message = '';
     $obj_offer = new projects_offers();
     $obj_offer->AddOffer($freelancer->uid, $proj['id'], '', '', 2, '', '', 0, $message, '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', false, 0, 1);
     $tmpPrj->SetExecutor($proj['id'], $freelancer->uid, $employer->uid);
     //Отправляем СМС Фрилансеру
     require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/projects_sms.php";
     ProjectsSms::model($freelancer->uid)->sendStatus(0, $proj['id'], 9);
 }
 if (hasPermissions("projects")) {
     $inspect_user_session = new session();
     $inspect_user_session->UpdateProEndingDate($view_user_login);
 }
 if (!$is_edit) {
     $_SESSION['new_public'] = 1;
 }
 $drafts->DeleteDraft($draft_id, $uid, 1);
 if ($is_edit) {
     $back = $backLink ? $backLink : '/projects/' . $proj['id'];
コード例 #5
0
ファイル: index.php プロジェクト: kapai69/fl-ru-damp
 if ($_POST['is_color']) {
     $account = new account();
     $transaction_id = $account->start_transaction(get_uid());
     $error_buy = $account->Buy($billing_id, $transaction_id, $answers->color_op_code, get_uid(), 'Выделение ответа на проект цветом', "Выделение <a href='" . getFriendlyURL('project', $project['id']) . "#freelancer_{$_SESSION['uid']}' target='_blank'>ответа на проект</a> цветом", 1, 1);
     $payed_items = '1';
     if ($error_buy) {
         $_POST['is_color'] = false;
         $payed_items = '0';
     }
 }
 if (isset($_POST['contacts'])) {
     $error_offer = users::validateContacts($_POST['contacts'], $contacts_freelancer);
 }
 if (!$error_offer) {
     $save_contacts = serialize($contacts_freelancer);
     $error_offer = $obj_offer->AddOffer($uid, $project['id'], $_POST['ps_cost_from'], $_POST['ps_cost_to'], $_POST['ps_cost_type'], $_POST['ps_time_from'], $_POST['ps_time_to'], $_POST['ps_time_type'], antispam(stripslashes($_POST['ps_text'])), $_POST['ps_work_1_id'], $_POST['ps_work_2_id'], $_POST['ps_work_3_id'], $_POST['ps_work_1_link'], $_POST['ps_work_2_link'], $_POST['ps_work_3_link'], $_POST['ps_work_1_name'], $_POST['ps_work_2_name'], $_POST['ps_work_3_name'], $_POST['ps_work_1_pict'], $_POST['ps_work_2_pict'], $_POST['ps_work_3_pict'], $_POST['ps_work_1_prev_pict'], $_POST['ps_work_2_prev_pict'], $_POST['ps_work_3_prev_pict'], isset($_POST['ps_for_customer_only']), 0, 0, isset($_POST['prefer_sbr']), $_POST['is_color'], $save_contacts, $payed_items);
     //Получаем новые данные о количестве ответов
     $answers->GetInfo($uid);
     $projectKindIdent = $projectObject->getKindIdent();
     $obj_offer->sendStatistic($projectKindIdent, $answers->offers, $is_pro, $obj_offer->offer_id);
     require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/external/base.php';
     require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/external/api/api.php';
     require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/external/api/mobile.php';
     externalApi_Mobile::addPushMsg($project['user_id'], 'prj_response', array('from_user_id' => get_uid(false), 'name' => $project['name'], 'prj_id' => $project['id']));
 }
 $kind = $project['kind'];
 if (!$error_offer && !$error_buy && $_POST['is_color'] && $account) {
     $account->commit_transaction($transaction_id, get_uid(), $billing_id);
     $is_payed_color = true;
 }
 if ($is_payed_color) {
コード例 #6
0
ファイル: mobile.php プロジェクト: Nikitian/fl-ru-damp
 /**
  * Добавления предложения к проекту
  * 
  * @param  array $aParams массив входящих данных
  * @return array $aResult ответ
  */
 protected function x____projects_response_add($aParams = array())
 {
     $this->_validDevice($aParams);
     $sId = __paramValue('int', $aParams['project_id'], null, true);
     if (!empty($sId)) {
         require_once ABS_PATH . "/classes/projects.php";
         $nUid = get_uid(false);
         $oPrj = new new_projects();
         $aProject = $oPrj->GetPrjCust($sId);
         if (!empty($aProject)) {
             require_once ABS_PATH . '/classes/projects_offers.php';
             if (projects_offers::offerSpecIsAllowed($sId)) {
                 require_once ABS_PATH . '/classes/projects_offers_dialogue.php';
                 if ($aParams['term'] > 9999) {
                     $this->error(EXTERNAL_ERR_SERVER_ERROR);
                 } else {
                     // TODO: все что с ps_ - по умолчанию
                     $obj_offer = new projects_offers();
                     $error_offer = $obj_offer->AddOffer($nUid, $sId, $aParams['budget'], $aParams['ps_cost_to'], $aParams['currency'], $aParams['term'], $aParams['ps_time_to'], $aParams['term_dimension'], antispam(stripslashes(iconv('utf-8', 'cp1251', $aParams['comment']))), $aParams['ps_work_1_id'], $aParams['ps_work_2_id'], $aParams['ps_work_3_id'], $aParams['ps_work_1_link'], $aParams['ps_work_2_link'], $aParams['ps_work_3_link'], $aParams['ps_work_1_name'], $aParams['ps_work_2_name'], $aParams['ps_work_3_name'], $aParams['ps_work_1_pict'], $aParams['ps_work_2_pict'], $aParams['ps_work_3_pict'], $aParams['ps_work_1_prev_pict'], $aParams['ps_work_2_prev_pict'], $aParams['ps_work_3_prev_pict'], !empty($aParams['only_customer']), 0, 0, false, false, serialize(array()), '0');
                 }
                 if ($error_offer) {
                     $this->error(EXTERNAL_ERR_SERVER_ERROR);
                 }
                 $aOffer = $obj_offer->GetPrjOffer($sId, $nUid);
                 $aResult = array('project_response' => $this->_getProjectOfferData($aOffer));
             } else {
                 $this->error(EXTERNAL_ERR_OFFER_SPEC);
             }
         } else {
             $this->error(EXTERNAL_ERR_PROJECT_NOT_FOUND);
         }
     } else {
         $this->error(EXTERNAL_ERR_EMPTY_PROJECT_ID);
     }
     return $aResult;
 }