// Может быть получен с нулевого шага. $project = $tmpPrj->getProject(); if ($project['kind'] && !in_array($project['kind'], array(0, 1, 2, 4, 7))) { $error['kind'] = 'Закладка не выбрана'; } if ($action == 'next' || $action == "change" || $action == "change_country") { $use_draft = $project['user_id'] == get_uid(false); // сохаряем проект в черновики между первым и вторым шагом, если вдруг что пойдет не так $is_tmp_draft = false; if ($use_draft) { if (!$draft_id) { $is_tmp_draft = true; } $tmp = $_POST; $tmp['uid'] = $uid; $dmp = $drafts->SaveProject($tmp); $draft_id = $dmp['id']; } $tmpPrj->setProjectField('descr', antispam(__paramInit('html', NULL, 'descr', NULL, NULL, TRUE))); $tmpPrj->setProjectField('name', substr(antispam(__paramInit('string', NULL, 'name', NULL, 60)), 0, 512)); $tmpPrj->setProjectField('cost', __paramInit('float', NULL, 'cost', 0)); $tmpPrj->setProjectField('currency', __paramInit('int', NULL, 'currency', 0)); $tmpPrj->setProjectField('budget_type', __paramInit('int', NULL, 'budget_type', 0)); $tmpPrj->setProjectField('priceby', __paramInit('int', NULL, 'priceby', 0)); $tmpPrj->setProjectField('agreement', __paramInit('int', NULL, 'agreement', 0)); if (!$PDA) { $c = __paramInit('array', NULL, 'categories'); $sc = __paramInit('array', NULL, 'subcategories'); if (empty($c) || sizeof($c) == 1 && $c[0] == 0) { $error['category'] = 'Не выбран раздел'; } else {
/** * Сохнить черновик проекта * * @param array $prj Информация о проекте */ function SaveDraftProject($prj, $newTemplate = false) { session_start(); $uid = get_uid(false); if ($uid) { $prj['uid'] = $uid; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/drafts.php"; $draft = $newTemplate ? drafts::SaveProjectNew($prj) : drafts::SaveProject($prj); $aRes['html'] = iconv('CP1251', 'UTF-8', "Текст проекта сохранен в " . preg_replace("/^.* /", "", preg_replace("/:\\d{2}\$/", "", $draft['date']))); $aRes['id'] = $draft['id']; $aRes['success'] = true; } else { $aRes['success'] = false; } echo json_encode($aRes); }
public function transferProjects() { $projects = $this->getCreatedProjects(); require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/drafts.php'; if ($projects) { $key = md5(microtime()); $prj = new tmp_project($key); $this->setPath(); foreach ($projects as $k => $project) { $files = $this->getProjectAttach($project['id']); if ($project['kind'] == 7) { $tmp_dir = $this->tmpAbsDir; } else { $tmp_dir = $this->dstAbsDir; } if ($files) { $table = 'file_projects'; $files = $this->transferFiles($files, $table, $tmp_dir); } if ($project['kind'] != 7) { $attach = array_map(create_function('$a', 'return array("file_id" => $a["id"]);'), $files); $insert = array('user_id' => $_SESSION['uid'] ? $_SESSION['uid'] : $_SESSION['RUID'], 'name' => addslashes($project['name']), 'descr' => addslashes($project['descr']), 'kind' => $project['kind'], 'cost' => $project['cost'], 'currency' => $project['currency'], 'country' => $project['country'] > 0 ? $project['country'] : 'NULL', 'city' => $project['city'] > 0 ? $project['city'] : 'NULL', 'payed' => '0', 'pro_only' => $project['pro_only'], 'logo_id' => 'NULL', 'link' => $project['logo_link'], 'is_color' => 'f', 'is_bold' => 'f', 'billing_id' => 0, 'payed_items' => '000', 'folder_id' => 0, 'budget_type' => $project['budget_type'], 'priceby' => $project['priceby'], 'prefer_sbr' => $project['prefer_sbr']); $cat = explode('|', $project['categories']); $categories[0] = array('category_id' => intval($cat[0]), 'subcategory_id' => intval($cat[1])); $prj->addPrj($insert, $attach, $categories); // Добавляем проект if ($insert['id']) { $delete_projects[] = $project['id']; } else { $error_project[] = "Ошибка создания проекта #{$project['id']}"; } // Проверяем платные опции если есть обновляем в отложенных операциях тк выше все операции выбранные там уже ушли туда if ($insert['id'] && ($project['is_color'] || $project['is_bold'] || $project['top_count'] > 0 || $project['logo_id'] > 0)) { $update = array('parent_id' => $insert['id']); $this->_db->update('draft_account_operations', $update, "parent_id = ? AND op_type = 'project' AND uid = ?", $project['id'], wizard::getUserIDReg()); if ($project['logo_link']) { $update = array('extra' => $project['logo_link']); $this->_db->update('draft_account_operations', $update, "parent_id = ? AND op_type = 'contest' AND option = 'logo' AND uid = ?", $contest['id'], wizard::getUserIDReg()); } } // Если это конкурс он сразу идет в черновики } else { $draft = new drafts(); $cat = explode('|', $project['categories']); $insert = array('uid' => $_SESSION['uid'] ? $_SESSION['uid'] : $_SESSION['RUID'], 'name' => addslashes($project['name']), 'descr' => addslashes($project['descr']), 'kind' => $project['kind'], 'cost' => $project['cost'], 'currency' => $project['currency'], 'country' => $project['country'], 'end_date' => $project['end_date'], 'win_date' => $project['win_date'], 'city' => $project['city'], 'pro_only' => $project['pro_only'] == 't' ? 1 : 0, 'budget_type' => $project['budget_type'], 'priceby' => $project['priceby'], 'prefer_sbr' => $project['prefer_sbr'], 'categories' => array(0 => $cat[0]), 'subcategories' => array(0 => $cat[1]), 'logo_id' => $project['logo_id'], 'link' => $project['logo_link']); $contest = $draft->SaveProject($insert, $files); if ($contest['id']) { $delete_projects[] = $project['id']; } else { $error_project[] = "ошибка создания конкурса #{$project['id']}"; } // Проверяем платные опции если есть пишем в отложенные платежи if ($contest['id'] && ($project['is_color'] || $project['is_bold'] || $project['top_count'] > 0 || $project['logo_id'] > 0)) { $update = array('parent_id' => $contest['id']); $this->_db->update('draft_account_operations', $update, "parent_id = ? AND op_type = 'contest' AND uid = ?", $project['id'], wizard::getUserIDReg()); if ($project['logo_link']) { $update = array('extra' => $project['logo_link']); $this->_db->update('draft_account_operations', $update, "parent_id = ? AND op_type = 'contest' AND option = 'logo' AND uid = ?", $contest['id'], wizard::getUserIDReg()); } } } } if ($delete_projects) { $this->_db->query('DELETE FROM wizard_projects WHERE id IN (?l) AND wiz_uid = ?', $delete_projects, $this->getWizardUserID()); } if ($error_projects) { foreach ($error_projects as $error) { $this->log->writeln('Error transfer projects content () - user (' . wizard::getUserIDReg() . '|' . $this->getWizardUserID() . ") - Error: {$error}"); } } } return $error; }