Esempio n. 1
0
 /**
  * Обработка и оплата операций
  * 
  * @global type $DB
  * @param type $option
  * @return boolean 
  */
 function billingOperation($option, $transaction_id)
 {
     global $DB;
     $ok = false;
     $account = new account();
     switch ($option['op_code']) {
         // Аккаунт ПРО у фрилансера
         case 48:
         case 49:
         case 50:
         case 51:
         case 76:
             // Удаляем операции по покупке ответов - публикуем ответы
             $prof = new payed();
             $ok = $prof->SetOrderedTarif($this->uid, $transaction_id, 1, "Аккаунт PRO", $option['op_code'], $error);
             if ($ok) {
                 $_SESSION['pro_last'] = payed::ProLast($_SESSION['login']);
                 $_SESSION['pro_last'] = $_SESSION['pro_last']['freeze_to'] ? false : $_SESSION['pro_last']['cnt'];
                 $userdata = new users();
                 $_SESSION['pro_test'] = $userdata->GetField($this->uid, $error2, 'is_pro_test', false);
                 $this->clearBlockedOperations(step_freelancer::OFFERS_OP_CODE);
                 $step_frl = new step_freelancer();
                 $offers = $step_frl->getWizardOffers($this->uid, 'all', false);
                 if ($offers) {
                     require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/users.php";
                     $step_frl->log = $this->log;
                     $step_frl->user = new users();
                     $step_frl->user->GetUserByUID($this->uid);
                     $step_frl->transferOffers($offers);
                 }
                 $this->showProjectsFeedbacks();
             }
             break;
             // Аккаунт ПРО у работодателя
         // Аккаунт ПРО у работодателя
         case 15:
             $prof = new payed();
             $ok = $prof->SetOrderedTarif($this->uid, $transaction_id, 1, "Аккаунт PRO", $option['op_code'], $error);
             if ($ok) {
                 $_SESSION['pro_last'] = payed::ProLast($_SESSION['login']);
                 $_SESSION['pro_last'] = $_SESSION['pro_last']['freeze_to'] ? false : $_SESSION['pro_last']['cnt'];
                 $userdata = new users();
                 $_SESSION['pro_test'] = $userdata->GetField($this->uid, $error2, 'is_pro_test', false);
             }
             // Обновляем выбор цвета для проектов тк он для ПРО бесплатный
             $colorProjects = $this->updateColorProject();
             $prj = new new_projects();
             foreach ($colorProjects as $k => $project) {
                 $delete_color[] = $project['op_id'];
                 if ($project['country'] == null) {
                     $project['country'] = 'null';
                 }
                 if ($project['city'] == null) {
                     $project['city'] = 'null';
                 }
                 $project['name'] = addslashes($project['name']);
                 $project['descr'] = addslashes($project['descr']);
                 if ($project['logo_id'] <= 0) {
                     $project['logo_id'] = 'null';
                 }
                 $project['payed_items'] = $project['payed_items'] | '010';
                 $project['is_color'] = 't';
                 $prj->editPrj($project, false);
             }
             // Удаляем данные операции
             if ($delete_color) {
                 $this->deleteDraftAccountOperation($delete_color);
             }
             break;
             // Публикация конкурса
         // Публикация конкурса
         case new_projects::OPCODE_KON:
         case new_projects::OPCODE_KON_NOPRO:
             require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/wizard/step_wizard_registration.php';
             $drafts = new drafts();
             $draft = $drafts->getDraft($option['parent_id'], $this->uid, 1);
             // Если еще не опубликован
             if (!$draft['prj_id']) {
                 $project_id = $draft['id'];
                 $error = $account->Buy($bill_id, $transaction_id, $option['op_code'], $this->uid, $option['descr'], $option['comment'], 1, 0);
                 $ok = $bill_id > 0;
                 if ($bill_id) {
                     $color = $DB->val("SELECT id FROM draft_account_operations WHERE parent_id = ? AND op_type = 'contest' AND option = 'color' AND uid = ?", $project_id, wizard::getUserIDReg());
                     $draft['billing_id'] = $bill_id;
                     $draft['folder_id'] = 'null';
                     $draft['payed'] = '0';
                     $draft['payed_items'] = '000';
                     if (is_pro() && $color > 0) {
                         $draft['is_color'] = 't';
                     } else {
                         $draft['is_color'] = 'f';
                     }
                     $draft['win_date'] = date('d-m-Y', strtotime($draft['win_date']));
                     $draft['end_date'] = date('d-m-Y', strtotime($draft['end_date']));
                     $draft['is_bold'] = 'f';
                     $draft['user_id'] = $this->uid;
                     if ($draft['country'] == null) {
                         $draft['country'] = 'null';
                     }
                     if ($draft['city'] == null) {
                         $draft['city'] = 'null';
                     }
                     $draft['name'] = addslashes($draft['name']);
                     $draft['descr'] = addslashes($draft['descr']);
                     if ($draft['logo_id'] <= 0) {
                         $draft['logo_id'] = 'null';
                     }
                     $prj = new new_projects();
                     $attachedfiles_tmpdraft_files = drafts::getAttachedFiles($option['parent_id'], 4);
                     if ($attachedfiles_tmpdraft_files) {
                         $attachedfiles_tmpdraft_files = array_map(create_function('$a', 'return array("id" => $a);'), $attachedfiles_tmpdraft_files);
                     }
                     if ($attachedfiles_tmpdraft_files) {
                         $month = date('Ym');
                         $dir = 'projects/upload/' . $month . '/';
                         $files = step_wizard_registration::transferFiles($attachedfiles_tmpdraft_files, 'file_projects', $dir);
                     }
                     $spec = $draft["categories"];
                     $spec = explode("|", $spec);
                     $spec = array(array('category_id' => $spec[0], 'subcategory_id' => $spec[1]));
                     $prj->addPrj($draft, $files);
                     $prj->saveSpecs($draft["id"], $spec);
                     // смотрим были ли выбраны платные опции для опубликованного конкурса
                     if ($draft['id'] != $project_id && $draft['id'] > 0) {
                         if ($this->sleep[$project_id]) {
                             foreach ($this->sleep[$project_id] as $k => $opt) {
                                 $opt['parent_id'] = $draft['id'];
                                 $this->billingOperation($opt);
                             }
                         } else {
                             //Обновляем родителя на всякий случай
                             $update = array("parent_id" => $draft['id']);
                             $DB->update("draft_account_operations", $update, "parent_id = ? AND op_type = 'contest' AND uid = ?", $project_id, wizard::getUserIDReg());
                             $this->sleep_parent[$project_id] = $draft['id'];
                         }
                         $DB->update("draft_projects", array('prj_id' => $draft['id']), "id = ? AND uid = ?", $project_id, wizard::getUserIDReg());
                     }
                 }
             }
             break;
             // Платный проект/конкурс
         // Платный проект/конкурс
         case 53:
             $prj = new new_projects();
             if ($this->sleep_parent[$option['parent_id']]) {
                 $option['parent_id'] = $this->sleep_parent[$option['parent_id']];
             }
             $project = $prj->getProject($option['parent_id']);
             if (!$project['id']) {
                 $this->sleep[$option['parent_id']][$option['id']] = $option;
                 return true;
             } else {
                 unset($this->sleep[$option['parent_id']]);
             }
             if ($project['country'] == null) {
                 $project['country'] = 'null';
             }
             if ($project['city'] == null) {
                 $project['city'] = 'null';
             }
             $project['name'] = addslashes($project['name']);
             $project['descr'] = addslashes($project['descr']);
             if ($project['logo_id'] <= 0) {
                 $project['logo_id'] = 'null';
             }
             $project['folder_id'] = 'null';
             $items = array();
             switch ($option['option']) {
                 case 'top':
                     $project['top_days'] = $option['op_count'];
                     break;
                 case 'color':
                     $is_pay = $project['payed_items'] & '010';
                     if ($is_pay != '010') {
                         $project['payed_items'] = $project['payed_items'] | '010';
                         $project['is_color'] = 't';
                         $items['color'] = true;
                         if (is_pro()) {
                             $is_payed = true;
                             $prj->SavePayedInfo($items, $project['id'], null, $project['top_days']);
                             $prj->editPrj($project, false);
                         }
                     } else {
                         $is_payed = true;
                     }
                     break;
                 case 'bold':
                     $is_pay = $project['payed_items'] & '001';
                     if ($is_pay != '001') {
                         $project['payed_items'] = $project['payed_items'] | '001';
                         $project['is_bold'] = 't';
                         $items['bold'] = true;
                     } else {
                         $is_payed = true;
                     }
                     break;
                 case 'logo':
                     $is_pay = $project['payed_items'] & '100';
                     if ($is_pay != '100') {
                         $key = md5(microtime());
                         $prj = new tmp_project($key);
                         $prj->init(1);
                         $fu = new CFile($option['src_id']);
                         $ext = $fu->getext();
                         $tmp_dir = $prj->getDstAbsDir();
                         $tmp_name = $fu->secure_tmpname($tmp_dir, '.' . $ext);
                         $tmp_name = substr_replace($tmp_name, "", 0, strlen($tmp_dir));
                         $fu->table = 'file_projects';
                         $r = $fu->_remoteCopy($tmp_dir . $tmp_name);
                         $project['payed_items'] = $project['payed_items'] | '100';
                         $project['logo_id'] = $fu->id;
                         $items['logo'] = true;
                         if ($option['extra']) {
                             $project['link'] = $option['extra'];
                         }
                     } else {
                         $is_payed = true;
                     }
                     break;
             }
             if (!$is_payed) {
                 $error = $account->Buy($bill_id, $transaction_id, $option['op_code'], $this->uid, $option['descr'], $option['comment'], $option['ammount'], 0);
                 $ok = $bill_id > 0;
                 $project['billing_id'] = $bill_id;
                 $prj->SavePayedInfo($items, $project['id'], $bill_id, $project['top_days']);
                 $prj->editPrj($project, false);
             } else {
                 $ok = true;
             }
             break;
             // Платные ответы на проекты
         // Платные ответы на проекты
         case 61:
             $answers = new projects_offers_answers();
             $error = $answers->BuyByFM($this->uid, $option['op_count'], $transaction_id, 0);
             if (!$error) {
                 $ok = true;
                 $_SESSION['answers_ammount'] = $option['op_count'];
                 // Публикуем ответы
                 $step_frl = new step_freelancer();
                 $offers = $step_frl->getWizardOffers($this->uid, $option['op_count']);
                 if ($offers) {
                     require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/users.php";
                     $step_frl->log = $this->log;
                     $step_frl->user = new users();
                     $step_frl->user->GetUserByUID($this->uid);
                     $step_frl->transferOffers($offers);
                 }
             }
             break;
     }
     return $ok;
 }
Esempio n. 2
0
 function initFromDraft($draft_id, $uid)
 {
     require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/drafts.php";
     require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/project_exrates.php";
     $drafts = new drafts();
     $this->_project = $drafts->getDraft($draft_id, $uid, 1);
     if (!$this->_project['id']) {
         return false;
     }
     if ($this->_project['logo_id'] > 0) {
         $this->_project['link'] = $this->_project['logo_link'];
         $LogoFile = new CFile($this->_project['logo_id']);
         $this->initLogo($LogoFile);
     }
     $cat = explode(",", $this->_project['categories']);
     foreach ($cat as $category) {
         list($cat_id, $subcat_id) = explode("|", $category);
         $categories[] = array('category_id' => $cat_id, 'subcategory_id' => $subcat_id);
     }
     $this->setCategories($categories);
     $pExrates = project_exrates::getAll();
     if ($this->_project['currency'] === 0) {
         // USD
         $costRub = $this->_project['cost'] * $pExrates['24'];
         // бюджет в рублях
     } elseif ($this->_project['currency'] === 1) {
         // EURO
         $costRub = $this->_project['cost'] * $pExrates['34'];
     } else {
         // рубли
         $costRub = $this->_project['cost'];
     }
     $this->setCostRub($costRub);
     $this->_project['draft_id'] = $this->_project['id'];
     unset($this->_project['id']);
     $this->_project['user_id'] = $this->_project['uid'];
     $this->_project['is_pro'] = is_pro(true, $uid) ? 't' : 'f';
     if ($this->_project['top_days'] > 0) {
         $this->setAddedTopDays($this->_project['top_days']);
     }
     if ($this->isKonkurs()) {
         $this->_project['end_date'] = date('d-m-Y', strtotime($this->_project['end_date']));
         $this->_project['win_date'] = date('d-m-Y', strtotime($this->_project['win_date']));
     }
     $attach = drafts::getAttachedFiles($draft_id, 4, $this->_project['uid']);
     if (!empty($attach)) {
         foreach ($attach as $file_id) {
             $ret[$file_id] = array('status' => 1, 'id' => $file_id);
         }
         $this->addAttachedFiles($ret, true);
     }
     return true;
 }
<?php

global $user_mod;
?>
<a name="o"></a>
<a name="<?php 
echo !empty($alert) ? 'error' : '';
?>
"></a>

<?php 
$member = commune::GetCommuneByMember($_SESSION['uid']);
$draft_id = !$draft_id ? intval($_GET['draft_id']) : $draft_id;
require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/drafts.php";
$draft_data = drafts::getDraft($draft_id, get_uid(false), 4);
if ($draft_data) {
    $mess['category_id'] = $draft_data['category'];
    $title = $draft_data['title'];
    $msgtext = $draft_data['msg'];
    $youtube_link = $draft_data['yt_link'];
    $question = $draft_data['poll_question'];
    $multiple = $draft_data['poll_type'] == 0 ? 'f' : 't';
    $draft_answers = $draft_data['poll_answers'];
    if (empty($draft_answers)) {
        $draft_answers = array('');
    }
    $edit_msg['poll'] = array();
    if ($draft_answers) {
        foreach ($draft_answers as $draft_answer) {
            array_push($edit_msg['poll'], array('answer' => htmlspecialchars($draft_answer)));
        }
Esempio n. 4
0
    $categories = current($savedData['categories']);
    if ($categories && $categories['category_id']) {
        $cats[] = array('category_id' => $categories['category_id'], 'subcategory_id' => $categories['subcategory_id']);
        $tmpPrj->setCategories($cats);
    }
    $tmpPrj->setProjectField('country', $savedData['country']);
    $tmpPrj->setProjectField('city', $savedData['city']);
    $tmpPrj->setProjectField('pro_only', $savedData['pro_only'] ? 't' : 'f');
    $tmpPrj->setProjectField('verify_only', $savedData['verify_only'] ? 't' : 'f');
    if (isset($savedData['prefer_sbr'])) {
        $tmpPrj->setProjectField('prefer_sbr', $savedData['prefer_sbr'] ? 't' : 'f');
    }
}
// черновики. если пользователь сразу публикует, то подставляем данные в массив #_POST
if ($draft_id && $auto_draft) {
    $draft = $drafts->getDraft($draft_id, $uid, 1);
    $uploader = new uploader(uploader::createResource('project'));
    $attachedfiles_tmpdraft_files = drafts::getAttachedFiles($draft_id, 4);
    if ($attachedfiles_tmpdraft_files) {
        $attachedfiles_draft_files = array();
        foreach ($attachedfiles_tmpdraft_files as $attachedfiles_draft_file) {
            $attachedfiles_draft_files[] = $attachedfiles_draft_file;
        }
        $uploader->setFiles($attachedfiles_draft_files, uploader::STATUS_ADDED);
    }
    $_POST = array('kind' => $draft['kind'], 'descr' => addslashes($draft['descr']), 'name' => addslashes($draft['name']), 'cost' => $draft['cost'], 'currency' => $draft['currency'], 'priceby' => $draft['priceby'], 'pro_only' => $draft['pro_only'] == 't' ? 1 : 0, 'verify_only' => $draft['verify_only'] == 't' ? 1 : 0, 'videolnk' => addslashes($draft['videolnk']), 'strong_top' => $draft['strong_top'], 'prefer_sbr' => $draft['prefer_sbr'] == 't' ? 1 : 0, 'urgent' => $draft['urgent'] == 't' ? 1 : 0, 'hide' => $draft['hide'] == 't' ? 1 : 0, 'draft_id' => $draft_id, 'auto_draft' => $auto_draft, 'budget_type' => $draft['budget_type'], 'IDResource' => array($uploader->resource), 'attachedfiles_deleteold' => '1', 'contacts' => unserialize($draft['contacts']));
    //echo '<pre>'; var_dump($_POST); echo '</pre>';    exit;
    if ($draft['kind'] == 4) {
        $_POST['country'] = $draft['country'];
        $_POST['city'] = $draft['city'];
    }
Esempio n. 5
0
/**
* Публикация черновика
*
* @param    int     $draft_id   ID черновика
* @param    int     $type       Тип черновика
* @param    bool    $is_edit    false - публикация нового поста/прокта, true - публикация существующего поста/проекта
*/
function PostDraft($draft_id, $type, $is_edit = false)
{
    $objResponse = new xajaxResponse();
    session_start();
    $draft_id = intval($draft_id);
    $uid = get_uid(false);
    if ($uid) {
        require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/drafts.php";
        $draft = drafts::getDraft($draft_id, $uid, $type);
        if ($draft) {
            switch ($type) {
                case 2:
                    // Личка
                    require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/attachedfiles.php";
                    $attachedfiles = new attachedfiles($attachedfiles_session);
                    $attachedfiles_tmpdraft_files = drafts::getAttachedFiles($draft_id, 3);
                    if ($attachedfiles_tmpdraft_files) {
                        $attachedfiles_draft_files = array();
                        foreach ($attachedfiles_tmpdraft_files as $attachedfiles_draft_file) {
                            $attachedfiles_draft_files[] = $attachedfiles_draft_file;
                        }
                        $attachedfiles->setFiles($attachedfiles_draft_files);
                    }
                    $objResponse->assign("f_attachedfiles_session", "value", $attachedfiles->getSession());
                    $objResponse->assign("f_msg", "innerHTML", $draft['msg']);
                    $objResponse->assign("f_msg_to", "value", $draft['to_login']);
                    $objResponse->assign("f_draft_id", "value", $draft['id']);
                    $objResponse->assign("f_to_login", "value", $draft['to_login']);
                    $objResponse->script("var attrAction = document.createAttribute('action'); attrAction.value='/contacts/?from=" . $draft['to_login'] . "'; \$('f_frm').setAttributeNode(attrAction);");
                    $objResponse->script('$("f_frm").submit();');
                    break;
                case 3:
                    // Блоги
                    require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/blogs.php";
                    $objResponse->assign("f_draft_id", "value", $draft['id']);
                    $objResponse->assign("f_msg", "value", $draft['msgtext']);
                    $objResponse->assign("f_yt_link", "value", $draft['yt_link']);
                    if ($draft['is_close_comments'] == 't') {
                        $objResponse->script('$("f_is_close_comments").set("checked",true);');
                    }
                    if ($draft['is_private'] == 't') {
                        $objResponse->script('$("f_is_private").set("checked",true);');
                    }
                    $objResponse->assign("f_category", "value", $draft['category'] . '|0');
                    if ($is_edit) {
                        $blogmsg = blogs::GetMsgInfo($draft['post_id'], $error, $perm);
                        $objResponse->assign("f_msg_name", "value", $draft['title']);
                        $objResponse->assign("f_tr", "value", $blogmsg['thread_id']);
                        $objResponse->assign("f_olduser", "value", $blogmsg['fromuser_id']);
                        $objResponse->assign("f_reply", "value", $draft['post_id']);
                        $objResponse->assign("f_action", "value", 'change');
                        $objResponse->assign("f_msg_name", "value", $draft['title']);
                        $objResponse->assign("f_draft_post_id", "value", $draft['post_id']);
                        $objResponse->script("var attrAction = document.createAttribute('action'); attrAction.value='/blogs/view.php?id=" . $draft['post_id'] . "'; \$('f_frm').setAttributeNode(attrAction);");
                    } else {
                        $objResponse->assign("f_name", "value", $draft['title']);
                        $objResponse->assign("f_sub_ord", "value", 'new');
                        $objResponse->assign("f_action", "value", 'new_tr');
                        $objResponse->script("var attrAction = document.createAttribute('action'); attrAction.value='/blogs/viewgroup.php?gr=" . $draft['category'] . "&ord=new&tr='; \$('f_frm').setAttributeNode(attrAction);");
                    }
                    require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/attachedfiles.php";
                    $attachedfiles = new attachedfiles($attachedfiles_session);
                    $attachedfiles_tmpdraft_files = drafts::getAttachedFiles($draft_id, 1);
                    if ($attachedfiles_tmpdraft_files) {
                        $attachedfiles_draft_files = array();
                        foreach ($attachedfiles_tmpdraft_files as $attachedfiles_draft_file) {
                            $attachedfiles_draft_files[] = $attachedfiles_draft_file;
                        }
                        $attachedfiles->setFiles($attachedfiles_draft_files, 1);
                    }
                    $objResponse->assign("f_attachedfiles_session", "value", $attachedfiles->getSession());
                    $objResponse->assign("f_poll_question", "value", $draft['poll_question']);
                    $objResponse->assign("f_poll_type", "value", $draft['poll_type']);
                    $answers = $draft['poll_answers'];
                    if (count($answers)) {
                        $out = '';
                        foreach ($answers as $answer) {
                            $out .= '<input type="hidden" value="' . htmlspecialchars($answer, ENT_QUOTES) . '" name="answers[]" />';
                        }
                        $objResponse->assign("f_poll_answers", "innerHTML", $out);
                    }
                    $objResponse->script('$("f_frm").submit();');
                    break;
                case 4:
                    // Сообщества
                    $objResponse->assign("f_id", "value", $draft['commune_id']);
                    $objResponse->assign("f_draft_id", "value", $draft['id']);
                    $objResponse->assign("f_category_id", "value", intval($draft['category']));
                    $objResponse->assign("f_title", "value", $draft['title']);
                    $objResponse->assign("f_msgtext", "value", $draft['msg']);
                    $objResponse->assign("f_youtube_link", "value", $draft['yt_link']);
                    if ($draft['close_comments'] == 't') {
                        $objResponse->script('$("f_close_comments").set("checked",true);');
                    }
                    if ($draft['is_private'] == 't') {
                        $objResponse->script('$("f_is_private").set("checked",true);');
                    }
                    if ($is_edit) {
                        $objResponse->assign("f_draft_post_id", "value", $draft['post_id']);
                        $objResponse->assign("f_top_id", "value", $draft['post_id']);
                        $objResponse->assign("f_message_id", "value", $draft['post_id']);
                        $objResponse->assign("f_page", "value", 0);
                        $objResponse->script("var attrAction = document.createAttribute('action'); attrAction.value='" . getFriendlyURL('commune', $draft['post_id']) . "'; \$('f_frm').setAttributeNode(attrAction);");
                        $objResponse->assign("f_action", "value", "do.Edit.post");
                    } else {
                        $objResponse->script("var attrAction = document.createAttribute('action'); attrAction.value='" . getFriendlyURL('commune_commune', $draft['commune_id']) . "#o'; \$('f_frm').setAttributeNode(attrAction);");
                        $objResponse->assign("f_action", "value", "do.Create.post");
                    }
                    require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/attachedfiles.php";
                    $attachedfiles = new attachedfiles($attachedfiles_session);
                    if (!$is_edit) {
                        $attachedfiles_tmpdraft_files = drafts::getAttachedFiles($draft_id, 2);
                        if ($attachedfiles_tmpdraft_files) {
                            $attachedfiles_draft_files = array();
                            foreach ($attachedfiles_tmpdraft_files as $attachedfiles_draft_file) {
                                $attachedfiles_draft_files[] = $attachedfiles_draft_file;
                            }
                            $attachedfiles->setFiles($attachedfiles_draft_files, 1);
                        }
                    }
                    $objResponse->assign("f_attachedfiles_session", "value", $attachedfiles->getSession());
                    $objResponse->assign("f_poll_question", "value", $draft['poll_question']);
                    $objResponse->assign("f_poll_type", "value", $draft['poll_type']);
                    $answers = $draft['poll_answers'];
                    if (count($answers)) {
                        $out = '';
                        foreach ($answers as $answer) {
                            $out .= '<input type="hidden" value="' . htmlspecialchars($answer, ENT_QUOTES) . '" name="answers[]" />';
                        }
                        $objResponse->assign("f_poll_answers", "innerHTML", $out);
                    }
                    $objResponse->script('$("f_frm").submit();');
                    break;
            }
        }
    }
    return $objResponse;
}
Esempio n. 6
0
        <b class="b1"></b>
      </div>
    <?php 
        }
        ?>


<?php 
        $request_uri = ($gr ? "?gr={$gr}&" : "?") . "ord={$ord}" . ($edit_msg["id"] ? "&tr={$edit_msg["id"]}" : ($thread ? "&tr={$thread}" : ""));
        ?>

            <?php 
        // Заполнение данных из черновика
        $draft_id = intval($_GET['draft_id']);
        $uid = get_uid(false);
        $draft_data = drafts::getDraft($draft_id, $uid, 3);
        if ($draft_data) {
            $edit_msg['title'] = str_replace(array('"', "'", "\\", '<', '>'), array('&quot;', '&#039;', '&#92;', '&lt;', '&gt;'), $draft_data['title']);
            $edit_msg['msgtext'] = str_replace(array('"', "'", "\\", '<', '>'), array('&quot;', '&#039;', '&#92;', '&lt;', '&gt;'), $draft_data['msgtext']);
            $edit_msg['yt_link'] = $draft_data['yt_link'];
            $is_yt_link = $draft_data['yt_link'] ? true : false;
            $edit_msg['close_comments'] = $draft_data['is_close_comments'];
            $edit_msg['is_private'] = $draft_data['is_private'];
            $edit_msg['poll_question'] = str_replace(array('"', "'", "\\", '<', '>'), array('&quot;', '&#039;', '&#92;', '&lt;', '&gt;'), $draft_data['poll_question']);
            $edit_msg['poll_multiple'] = $draft_data['poll_type'] ? 't' : 'f';
            $draft_answers = $draft_data['poll_answers'];
            if (empty($draft_answers)) {
                $draft_answers = array('');
            }
            $edit_msg['poll'] = array();
            if ($draft_answers) {
Esempio n. 7
0
/**
 * Проверяет туда ли попал пользователь и есть ли у него на это право.
 * Возвращает адрес переброски пользователя, если он не туда попал,
 * и если не NULL, то надо будет вызвать header().
 * Если NULL, но $error не пуст, то надо будет выдать страницу ошибок __COMMUNES__ERROR и
 * прекратить операцию.
 * Заодно заполняет необходимые переменные.
 *
 * @global $uid    Ид пользователя
 * @global $id     Ид сообщения
 * @global $top_id Ид вкладки ТОП
 * @global $site   Сайт
 * @global $action Действие для данной функции при отсылке данных (submit)
 * 
 * @param string  $error Возвращает сообщение об ошибке
 * @param array   $comm  Возвращает данные по комментариям
 * @param array   $top   Возвращает популярные сообщения
 * @param integer $restrict_type  Возвращает тип пользования
 * @param integer $user_mod Возвращает битовую маску прав пользователя
 * @return string если не null, название страницы куда перенести пользователя
 */
function __commShaolin(&$error, &$comm, &$top, &$restrict_type, &$user_mod)
{
    global $uid, $id, $top_id, $site, $action, $draft_id;
    $comm = NULL;
    $user_mod = 0;
    if ($uid) {
        $user_mod = commune::MOD_ADMIN * hasPermissions('communes');
        $user_mod |= commune::MOD_MODER * ($user_mod & commune::MOD_ADMIN || hasPermissions('communes'));
        $user_mod |= commune::MOD_PRO * (payed::CheckPro(get_login($uid)) ? 1 : 0);
        $user_mod |= commune::MOD_EMPLOYER * (int) is_emp();
        $user_mod |= commune::MOD_BANNED * is_banned($uid);
    }
    if (!$id) {
        if (!$site) {
            return NULL;
        }
        if ($site == 'Create') {
            if (!$uid) {
                return '/fbd.php';
            }
            if (!($user_mod & (commune::MOD_PRO | commune::MOD_ADMIN))) {
                /*if ($user_mod & commune::MOD_EMPLOYER)
                  return '/payed-emp/';*/
                return '/proonly.php';
            }
            if (($limit = commune::GetUserCommunesLimits($uid)) && $limit['user_communes_count']) {
                if ($limit['user_communes_count'] >= commune::MAX_COUNT) {
                    $error['name'] = 'Создание вашего сообщества';
                    $error['message'] = 'Вы уже создали максимальное количество сообществ.';
                    return NULL;
                }
                $seconds = $limit['seconds_passed_since_user_created_his_last_commune'];
                if ($seconds < commune::CREATION_INTERVAL) {
                    $error['name'] = 'Создание вашего сообщества';
                    $wait = commune::CREATION_INTERVAL - $seconds;
                    $error['message'] = "Подождите {$wait} " . getSymbolicName($wait, 'second') . '.';
                    return NULL;
                }
            }
        } else {
            return '/404.php';
        }
        return NULL;
    }
    if (!($comm = commune::GetCommune($id, !$uid ? NULL : $uid, $user_mod))) {
        return '/commune/';
    }
    if (!$uid) {
        if ($action) {
            return "/commune/?id={$id}";
        }
        if ($site == 'Topic') {
        } else {
            if ($site == 'Join') {
                return '/fbd.php';
            } else {
                if ($site == 'Members') {
                    return '/fbd.php';
                } else {
                    if ($site) {
                        return "/commune/?id={$id}";
                    }
                }
            }
        }
    } else {
        if ($uStatus = commune::GetUserCommuneRel($id, $uid)) {
            $user_mod |= commune::MOD_COMM_MODERATOR * $uStatus['is_moderator'];
            $user_mod |= commune::MOD_COMM_MANAGER * $uStatus['is_manager'];
            $user_mod |= commune::MOD_COMM_ADMIN * ($uStatus['is_admin'] || $uStatus['is_moderator'] || $uStatus['is_manager']);
            $user_mod |= commune::MOD_COMM_AUTHOR * $uStatus['is_author'];
            $user_mod |= commune::MOD_COMM_ASKED * $uStatus['is_asked'];
            $user_mod |= commune::MOD_COMM_ACCEPTED * ($uStatus['is_accepted'] || $user_mod & commune::MOD_COMM_ADMIN);
            $user_mod |= commune::MOD_COMM_BANNED * $uStatus['is_banned'];
        }
    }
    if ($comm['is_blocked'] && !($user_mod & commune::MOD_MODER)) {
        if ($comm['author_id'] != $uid || $comm['author_id'] == $uid && ($site && $site != 'Members' || $action)) {
            return '/commune/';
        }
    }
    if ($user_mod & commune::MOD_COMM_BANNED && !hasPermissions('communes') && $comm['restrict_type'] != '00') {
        $error['name'] = 'Нет доступа в сообщество';
        $error['message'] = 'Вы находитесь в бан-листе этой группы. Вы можете обратиться к создателю группы:<br/><br/>' . '<div style="float:left">' . __commPrntUsrAvtr($comm, 'author_') . '</div>' . '<div style="padding-left:10px;float:left">' . __commPrntUsrInfo($comm, 'author_') . '</div>';
        return NULL;
    }
    $restrict_type = bitStr2Int($comm['restrict_type']);
    if ($restrict_type & commune::RESTRICT_READ_MASK) {
        if ($site != 'Join' && $action != 'Join' && !($user_mod & (commune::MOD_COMM_AUTHOR | commune::MOD_COMM_ACCEPTED | commune::MOD_ADMIN | commune::MOD_MODER))) {
            $error['name'] = 'Нет доступа в сообщество';
            if ($user_mod & commune::MOD_COMM_ASKED) {
                $error['message'] = "&nbsp;Администратор сообщества <b>&laquo;{$comm['name']}&raquo;</b> еще не рассмотрел вашу заявку. Просмотр этого сообщества вам не доступен.<br/><br/>" . __commPrntJoinButton($comm, $uid);
            } else {
                $error['message'] = "&nbsp;Вы не являетесь членом сообщества <b>&laquo;{$comm['name']}&raquo;</b>. Просмотр этого сообщества вам не доступен.<br/><br/>" . __commPrntJoinButton($comm, $uid);
            }
            return NULL;
        }
    }
    switch ($site) {
        case 'Join':
            //        if ( $user_mod & commune::MOD_COMM_AUTHOR )
            //          return "/commune/?id={$id}";
            //        if ( $user_mod & commune::MOD_COMM_ASKED )
            //          return "/commune/?id={$id}";
            break;
        case 'Create':
            if ($id) {
                return "/commune/?id={$id}";
            }
            break;
        case 'Edit':
            if (!($user_mod & (commune::MOD_ADMIN | commune::MOD_COMM_AUTHOR))) {
                return "/commune/?id={$id}";
            }
            break;
        case 'Admin':
            if (!($user_mod & (commune::MOD_ADMIN | commune::MOD_COMM_AUTHOR))) {
                if ($user_mod & commune::MOD_COMM_MANAGER) {
                    return "/commune/?id={$id}&site=Admin.members";
                }
                return "/commune/?id={$id}";
            }
            break;
        case 'Admin.members':
            if (!($user_mod & (commune::MOD_ADMIN | commune::MOD_COMM_AUTHOR | commune::MOD_COMM_MANAGER) || hasPermissions('communes'))) {
                return "/commune/?id={$id}";
            }
            break;
        case 'Topic':
            if ($action && $action != 'do.Edit.post' && $action != 'do.Create.post' && $action != 'add_comment' && $action != 'edit_comment' && $action != 'wysiwygUploadImage') {
                //if ($action && $action != 'Edit.post')
                return "/404.php";
            }
            if (!$top_id || !($top = commune::GetTopMessageByAnyOther($top_id, $uid, $user_mod, TRUE)) || $top['member_is_banned'] && $comm['restrict_type'] != '00' && ($action != 'do.Edit.post' && $action != 'do.Create.post') && !($user_mod & (commune::MOD_ADMIN | commune::MOD_COMM_AUTHOR | commune::MOD_COMM_MANAGER)) || $top['is_private'] == 't' && $top['user_id'] != $uid && !($user_mod & (commune::MOD_ADMIN | commune::MOD_COMM_AUTHOR | commune::MOD_COMM_MANAGER)) || $top['deleted_id'] && !hasPermissions('communes')) {
                return "/404.php";
            }
            break;
        case 'Members':
            break;
        case 'Newtopic':
            if (commune::isBannedCommune($user_mod)) {
                $error['name'] = 'Нет доступа';
                $error['message'] = 'Вы находитесь в бан-листе этой группы. Вы можете обратиться к создателю группы:<br/><br/>' . '<div style="float:left">' . __commPrntUsrAvtr($comm, 'author_') . '</div>' . '<div style="padding-left:10px;float:left">' . __commPrntUsrInfo($comm, 'author_') . '</div>';
                return NULL;
            }
            if (!($user_mod & commune::MOD_COMM_AUTHOR && !$comm['is_blocked']) && !($user_mod & (commune::MOD_ADMIN | commune::MOD_MODER | commune::MOD_COMM_ACCEPTED | commune::MOD_COMM_ADMIN | commune::MOD_COMM_MODERATOR | commune::MOD_COMM_ADMIN))) {
                return getFriendlyURL('commune_commune', $comm['id']);
            }
            break;
        case 'Editdraft':
            require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/drafts.php";
            $draftData = drafts::getDraft($draft_id, get_uid(false), 4);
            if (!$draftData) {
                return getFriendlyURL('commune_commune', $comm['id']);
            }
            break;
        case 'Edittopic':
            break;
        default:
            if ($site) {
                return "/404.php";
            }
            break;
    }
    if ($action) {
        if ($action == 'Delete' && !($user_mod & commune::MOD_ADMIN)) {
            return "/commune/?id={$id}";
        }
        if (!$site) {
            if (($action == 'do.Edit.post' || $action == 'do.Create.post') && $user_mod & (commune::MOD_ADMIN | commune::MOD_COMM_AUTHOR | commune::MOD_COMM_ACCEPTED)) {
                return NULL;
            }
            if ($action == 'Join') {
                return NULL;
            }
            return "/commune/?id={$id}";
        }
    }
    return NULL;
}
Esempio n. 8
0
require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/messages.php";
require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/drafts.php";
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/stop_words.php';
$stop_words = new stop_words(false);
$is_pro1 = payed::CheckPro($user->login);
$cf = new mess_folders();
$cf->from_id = get_uid();
$folders = $cf->GetAll();
$msgs = new messages();
$users_folders = $msgs->GetContactFolders(get_uid(), $dlg_user, $err);
$isNeedUseCaptcha = $msgs->isNeedUseCaptcha(get_uid(false));
if ($isNeedUseCaptcha) {
    $SESSION['need_captcha_messages'] = 1;
}
if ($draft_id) {
    $draft = drafts::getDraft($draft_id, get_uid(), 2);
    if ($draft['msg']) {
        $msg = $draft['msg'];
    }
}
$userNotBeSpam = array_merge($GLOBALS['usersNotBeIgnored'], $GLOBALS['ourUserLoginsInCatalog']);
require_once $_SERVER['DOCUMENT_ROOT'] . "/xajax/contacts.common.php";
$xajax->printJavascript('/xajax/');
?>
<script type="text/javascript">
<!--
var inner = false;
function show_fpopup(img,num)
{
    document.getElementById(img).blur();
    document.getElementById(num).toggleClass('b-layout_hide');