header("Content-Type: application/download"); header("Content-Description: File Transfer"); break; } if (file_exists(DIR_FS_ORDER_FILES . $_REQUEST['order'] . '/' . $_REQUEST['file'] . '.' . $extension)) { echo file_get_contents(DIR_FS_ORDER_FILES . $_REQUEST['order'] . '/' . $_REQUEST['file'] . '.' . $extension); die; } else { $GUI->ERR("Файл " . DIR_FS_ORDER_FILES . $_REQUEST['order'] . '/' . $_REQUEST['file'] . '.' . $extension . " не найден"); page_reloadSubSec(); } } elseif (!empty($_REQUEST['file']) && $_REQUEST['action'] == 'delete') { $file = OrderFile::find($_REQUEST['file']); $extension = pathinfo($file['name']); $extension = strtolower($extension['extension']); OrderFile::delete($_REQUEST['file']); if (file_exists(DIR_FS_ORDER_FILES . $_REQUEST['order'] . '/' . $_REQUEST['file'] . '.' . $extension)) { @unlink(DIR_FS_ORDER_FILES . $_REQUEST['order'] . '/' . $_REQUEST['file'] . '.' . $extension); $GUI->OK("Файл " . DIR_FS_ORDER_FILES . $_REQUEST['order'] . '/' . $_REQUEST['file'] . '.' . $extension . " удален"); page_reloadSubSec(); } else { $GUI->ERR("Файл " . DIR_FS_ORDER_FILES . $_REQUEST['order'] . '/' . $_REQUEST['file'] . '.' . $extension . " не найден"); page_reloadSubSec(); } } $frm = $GUI->Form("Загрузить файл", "300", "100", CGUI_FORM_FLAG_MODAL); $ypos = 0; //$frm->Label("Макс. размер: ", 10, $ypos += 10); $t = $frm->Hidden($order_id); $t->linkName = 'order_id'; $frm->Label("Файл: ", 10, $ypos += 10);
function add_order($client_id, &$err) { $err = ""; try { $client = Client::find($client_id); } catch (Exception $e) { $err = "Ошибка - не указан клиент"; return false; } try { $filial = Filial::find($client['filial_id']); } catch (Exception $e) { $filial = Filials::getDefault(); Client::update($client['id'], array('filial_id' => $filial['id'])); db::update(TABLE_ORDERS, array('filial_id' => $filial['id']), 'klient_id = ' . $client['id']); } $pgs = get_min_max_from_str($_SESSION["zf_work_pages"]); // disc id try { $discipline = Discipline::find($_SESSION["zf_work_predm"]); $disc_id = $discipline['id']; } catch (Exception $e) { $discipline = Discipline::findOneBy(array('name' => $_SESSION["zf_work_predm"])); if ($discipline) { $disc_id = $discipline['id']; } else { $disc_id = Discipline::create(array('name' => $_SESSION["zf_work_predm"])); } } $info = $_SESSION["zf_work_dopinfo"]; $worktype_custom = ''; $worktype = null; try { $worktype = Worktypes::find($_SESSION["zf_work_type"]); } catch (Exception $e) { $worktype = Worktypes::findOneBy(array('name' => $_SESSION["zf_work_type"])); if (!$worktype) { $worktype_custom = $_SESSION["zf_work_type"]; $worktype['id'] = null; } } $id = Order::create(array("filial_id" => $filial['id'], "klient_id" => $client['id'], "type_id" => $worktype['id'], "type_user" => $worktype_custom, "disc_id" => $disc_id, "time_kln" => strtotime($_SESSION["zf_work_date"]), "subject" => $_SESSION["zf_work_tema"], "about_kln" => $info, "pages_min" => $pgs["min"], "pages_max" => $pgs["max"])); if ($id > 0) { //////////////////////// // Текст клиенту $txt = "<p>Здравствуйте, " . $client["fio"] . "!</p>"; // Если первый раз if (@$_SESSION["new_klient_added"]) { $txt .= "<p>Мы очень рады, что Вы решили воспользоваться нашими услугами и высоко ценим Ваше доверие!</p>" . "<p>Теперь Вы можете войти в личный кабинет:<br>" . " Логин: " . $client["email"] . "<br>" . " Пароль: " . $client["password"] . "<br></p>"; } else { $txt .= "<p>Спасибо, что Вы с нами! Для постоянных клиентов у нас всегда есть интересные и выгодные предложения!</p>"; } $zak = "<p>Номер заказа: " . $id . "<br>" . "Дата: " . date("d.m.Y") . "<br>"; $zak .= "Вид работы: "; if (!empty($worktype_custom)) { $zak .= $worktype_custom . "<br>"; } else { $zak .= $worktype["name"] . "<br>"; } $zak .= "Дисциплина: "; if ($discipline) { $zak .= $discipline['name'] . "<br>"; } else { $zak .= $_SESSION["zf_work_predm"] . "<br>"; } $zak .= "Тема работы: " . $_SESSION["zf_work_tema"] . "<br>" . "Требования: " . $_SESSION["zf_work_dopinfo"] . "<br>" . "Дата сдачи: " . $_SESSION["zf_work_date"] . "<br>" . "Число страниц: " . $_SESSION["zf_work_pages"] . "<br>" . ($txt .= "<p>Ваш заказ принят, и в ближайшее время наш менеджер свяжется с Вами.</p>" . "<p>Содержание заказа: <br>" . $zak . "</p>"); $txt .= "<p><i>С уважением, компания по написанию студенческих работ.</i></p>"; $email = new Email(); $email->setData(array('email' => $client['email'], 'name' => $client['fio']), "Ваш заказ принят!", $txt, array(), true, array(), array('email' => $filial['email'], 'name' => $filial['name'])); //$m->SMTPDebug = true; if ($email->send()) { $user_send_res = "Письмо клиенту отправлено"; } else { $user_send_res = "Ошибки при отправке письма клиенту: " . $email->ErrorInfo; } //////////////////////// // Текст в приемную заказов $zak .= "<p>Заказчик:<br>"; if (@$_SESSION["new_klient_added"]) { $zak .= "Новая регистрация<br>"; } $zak .= "id: " . $client["id"] . "<br>" . "Имя: " . $client["fio"] . "<br>" . "Почта: " . $client["email"] . "<br>" . "Телефон: " . $client["telnum"] . "<br>" . "Город: " . $client["city"] . "<br>" . "Другие контакты: " . $client["contacts"] . "<br>"; $zak .= $user_send_res; // Прикалываем файлы $files = check_user_files(); $message_id = \Components\Entity\Message::create(array('parent_id' => 0, 'order_id' => $id, 'klient_id' => $client["id"], 'visit_id' => 0, 'tender_id' => 0, 'created' => time(), 'creator_id' => 'k' . $client["id"], 'addr' => 'u' . $filial['id'], 'subject' => "Поступил новый заказ #" . $id, 'text' => $zak, 'prior' => 1, 'uvedom' => 1, 'readed' => 0, 'needansv' => 0, 'basket' => 0)); if (!empty($message_id)) { \Components\Classes\Author::enqueue_message_to_email($message_id, $filial['id'], EmailNotification::TO_MANAGER_ON_CLIENT_CREATED_ORDER); } /* ОТПРАВИТЬ В РЕАЛЬНОМ ВРЕМЕНИ $email = new Email(); $email->setData(array( 'email' => FIRM_ORD_MAIL, 'name' => 'Приемная заказов', ), "Поступил новый заказ #" . $id, $zak, $files, true, array(), array( 'email' => $filial['email'], 'name' => $filial['name'], )); $email->send(); ENDOF ОТПРАВИТЬ В РЕАЛЬНОМ ВРЕМЕНИ */ // move file if (count($files)) { $path = DIR_FS_ORDER_FILES . $id; if (!file_exists($path)) { mkdir($path); } foreach ($files as $f) { $fid = OrderFile::create(array('order_id' => $id, 'creator_id' => 0, 'created' => time(), 'name' => $f["name"], 'size' => $f["size"])); if ($fid > 0) { $ext = substr($f["name"], strrpos($f["name"], ".") + 1); $f_s = fopen($f["path"], "r"); $f_d = fopen($path . "/" . $fid . "." . $ext, "w"); fwrite($f_d, fread($f_s, $f["size"])); fclose($f_s); fclose($f_d); } unlink($f["path"]); } } $path = TMPFILES_PATH . session_id(); if (file_exists($path)) { rmdir($path); } return true; } else { return false; } }
public static function sendEmail($order_id, array $authors_ids, $subject, $body, $needAttachments = false, $isHTML = false) { static $order, $manager, $filial, $attachments; if (!is_array($authors_ids)) { return false; } if (empty($order)) { try { $order = Order::find($order_id); } catch (Exception $e) { return false; } } if (empty($manager)) { try { $manager = Employee::find($order['manager_id']); } catch (Exception $e) { return false; } } $replyTo = array('email' => $manager['email'], 'name' => $manager['fio']); if (empty($filial)) { try { $filial = Filial::find($order['filial_id']); } catch (Exception $e) { return false; } } $from = array('email' => $filial['email'], 'name' => $filial['name']); if ($needAttachments && !is_array($attachments)) { $attachments = OrderFile::findBy(array('order_id' => $order_id)); if (count($attachments)) { foreach ($attachments as &$file) { $file['path'] = get_file_path($order_id, $file); } unset($file); } } else { $attachments = is_array($attachments) ? $attachments : array(); } $result = array(); foreach ($authors_ids as $id) { if (is_numeric($id)) { try { $author = Employee::find($id); } catch (Exception $e) { continue; } $receiver = array('email' => $author['email'], 'name' => $author['fio']); $email = new Email(); $email->setData($receiver, $subject, $body, $attachments, $isHTML, $replyTo, $from); if (!$email->send()) { $result[] = $receiver; } } else { $ids = explode(', ', $id); $temp_result = self::sendEmail($order_id, $ids, $subject, $body, $needAttachments, $isHTML); if (count($temp_result)) { array_push($result, $temp_result); } } } return $result; }
public static function create_order($order_parameters) { $result = array('status' => false, 'msg' => ''); $message = array(); if (empty($order_parameters['client_id'])) { $result['msg'] = "Id клиента не указан"; return $result; } if ($order_parameters['work'] == 0 && !strlen($order_parameters['work_usr'])) { $order_parameters['work_usr'] = "******"; // $message[] = "Не указан вид работы"; } if ($order_parameters['disc'] == 0 && !strlen($order_parameters['disc_usr'])) { $order_parameters['disc_usr'] = "******"; // $message[] = "Не указана дисциплина"; } if ($order_parameters['pgmax'] && $order_parameters['pgmax'] < $order_parameters['pgmin']) { $message[] = "Неверно указано макс. число страниц"; } if ($order_parameters['srcmax'] && $order_parameters['srcmax'] < $order_parameters['srcmin']) { $message[] = "Неверно указано макс. число источников"; } if (count($message)) { $result['msg'] = join("\n", $message); return $result; } $date = mktime(); $filial_id = db::get_single_value("SELECT filial_id FROM " . TBL_PREF . "clients WHERE id = " . db::input($order_parameters['client_id']) . ""); if (!$filial_id) { $filial_id = $order_parameters['filial_id']; } if (!$filial_id) { $query = "SELECT ftc.filial_id FROM " . TBL_PREF . "clients c JOIN " . TBL_PREF . "data_city dc ON dc.name = c.city JOIN " . TBL_PREF . "filial_to_city ftc ON ftc.city_id = dc.id" . " WHERE c.id = " . db::input($order_parameters['client_id']) . ""; $filial_id = db::get_single_value($query); } $order_id = Order::create(array("filial_id" => $filial_id, "klient_id" => $order_parameters['client_id'], "vuz_id" => $order_parameters['vuz'], "vuz_user" => $order_parameters['vuz_usr'], "type_id" => $order_parameters['work'], "type_user" => $order_parameters['work_usr'], "napr_id" => $order_parameters['napr'], "disc_id" => $order_parameters['disc'], "disc_user" => $order_parameters['disc_usr'], "time_kln" => $order_parameters['time_kln'], "payment_id" => $order_parameters['opl'], "subject" => $order_parameters['subj'], "about_kln" => $order_parameters['treb'], "kurs" => $order_parameters['kurs'], "prakt_pc" => $order_parameters['prakt'], "pages_min" => $order_parameters['pgmin'], "pages_max" => $order_parameters['pgmax'], "src_min" => $order_parameters['srcmin'], "src_max" => $order_parameters['srcmax'], "from_id" => 4)); // foreach ($_FILES as $file) { // if (is_uploaded_file($file["tmp_name"])) { // $extension = pathinfo($file['name']); // $extension = strtolower($extension['extension']); // // $file_id = \Components\Entity\OrderFile::create() ::attachFile($order_id, 0, $file["name"], $file["size"]); // // if (!$file_id) { // $result['msg'] = "Ошибка при загрузке файла"; // return $result; // } else { // $dir = DIR_FS_ORDER_FILES . $order_id . '/'; // if (!is_dir(DIR_FS_ORDER_FILES)) { // create_path('order_files', DIR_FS_DOCUMENT_ROOT); // } // if (!is_dir($dir)) { // create_path($order_id, DIR_FS_ORDER_FILES); // } // // $file_name = $file_id . '.' . $extension; // // if (!move_uploaded_file($file['tmp_name'], $dir . $file_name)) { // Order::deleteAttachedFile($file_id); // $result['msg'] = "Ошибка при сохранении файла"; // return $result; // } // } // } // } if ($order_id) { //////////////////////// // Текст клиенту $client = Client::find($order_parameters['client_id']); $filial = \Components\Entity\Filial::find($filial_id); $txt = "<p>Здравствуйте" . (empty($client["fio"]) ? "" : ", " . $client["fio"]) . "!</p>"; // Если первый раз if (@$_SESSION["new_klient_added"]) { $txt .= "<p>Мы очень рады, что Вы решили воспользоваться нашими услугами и высоко ценим Ваше доверие!</p>"; } else { $txt .= "<p>Спасибо, что Вы с нами! Для постоянных клиентов у нас всегда есть интересные и выгодные предложения!</p>"; } $zak = "<p>Номер заказа: " . $order_id . "<br>" . "Дата: " . date("d.m.Y") . "<br>"; $zak .= "Вид работы: "; if (!empty($order_parameters['work_usr'])) { $zak .= $order_parameters['work_usr'] . "<br>"; } else { $worktype = \Components\Entity\Worktypes::find($order_parameters['work']); $zak .= $worktype['name'] . "<br>"; } $zak .= "Дисциплина: "; if ($order_parameters['disc_usr']) { $zak .= $order_parameters['disc_usr'] . "<br>"; } else { $discipline = \Components\Entity\Discipline::find($order_parameters['disc']); $zak .= $discipline['name'] . "<br>"; // $zak .= $_SESSION["zf_work_predm"] . "<br>"; } if ($order_parameters['subj']) { $zak .= "Тема работы: " . $order_parameters['subj'] . "<br>"; } if ($order_parameters['treb']) { $zak .= "Требования: " . $order_parameters['treb'] . "<br>"; } if ($order_parameters['time_kln']) { $zak .= "Дата сдачи: " . $order_parameters['time_kln'] . "<br>"; } if ($order_parameters['pgmin'] && $order_parameters['pgmax']) { $zak .= "Число страниц: " . $order_parameters['pgmin'] . "-" . $order_parameters['pgmax'] . "<br>"; } $txt .= "<p>Ваш заказ принят, и в ближайшее время наш менеджер свяжется с Вами.</p>" . "<p>Содержание заказа: <br>" . $zak . "</p>"; $txt .= "<p><i>С уважением, компания по написанию студенческих работ.</i></p>"; $email = new \Components\Classes\Email(); $email->setData(array('email' => $client['email'], 'name' => $client['fio']), "Ваш заказ принят!", $txt, array(), true, array(), array('email' => $filial['email'], 'name' => $filial['name'])); //$m->SMTPDebug = true; $mailErrors = array(); if (!$email->send()) { $mailErrors[] = "Ошибки при отправке письма клиенту: " . $email->ErrorInfo; } //////////////////////// // Текст в приемную заказов $zak .= "<p>Заказчик:<br>"; if (@$_SESSION["new_klient_added"]) { $zak .= "Новая регистрация<br>"; } $zak .= "id: " . $client["id"] . "<br>" . "Имя: " . $client["fio"] . "<br>" . "Почта: " . $client["email"] . "<br>" . "Телефон: " . $client["telnum"] . "<br>" . "Город: " . $client["city"] . "<br>" . "Другие контакты: " . $client["contacts"] . "<br>"; if (!empty($mailErrors)) { $zak .= join('<br>', $mailErrors); } $message_id = \Components\Entity\Message::create(array('parent_id' => 0, 'order_id' => $order_id, 'klient_id' => $client["id"], 'visit_id' => 0, 'tender_id' => 0, 'created' => time(), 'creator_id' => 'k' . $client["id"], 'addr' => 'u' . $filial['user_id'], 'subject' => "Поступил новый заказ #" . $order_id, 'text' => $zak, 'prior' => 1, 'uvedom' => 1, 'readed' => 0, 'needansv' => 0, 'basket' => 0)); if (!empty($message_id)) { \Components\Classes\Author::enqueue_message_to_email($message_id, $filial['user_id'], \Components\Entity\EmailNotification::TO_MANAGER_ON_CLIENT_CREATED_ORDER); } // Прикалываем файлы $files = $_FILES; // move file if (count($files)) { $path = DIR_FS_ORDER_FILES . $order_id; if (!file_exists($path)) { mkdir($path); } foreach ($files as $f) { $fid = \Components\Entity\OrderFile::create(array('order_id' => $order_id, 'creator_id' => 0, 'created' => time(), 'name' => $f["name"], 'size' => $f["size"])); if ($fid > 0) { $ext = substr($f["name"], strrpos($f["name"], ".") + 1); $f_s = fopen($f["tmp_name"], "r"); $f_d = fopen($path . "/" . $fid . "." . $ext, "w"); fwrite($f_d, fread($f_s, $f["size"])); fclose($f_s); fclose($f_d); } // unlink($f["path"]); } } } return self::generate_response(true, "OK", array('id' => $order_id, 'date' => $date)); }
function fp_loadfile($Frm, $Err) { if (!$Err) { $order_id = $Frm->GetNmValueI('order_id'); $file = $Frm->GetNmValue('file'); if (is_uploaded_file($file["tmp_name"])) { $extension = get_file_ext($file['name']); $new_name = trim($Frm->GetNmValueH('new_name')); if ($new_name == "") { $name = $file["name"]; } else { $name = $new_name . '.' . $extension; } $file_id = OrderFile::create(array('order_id' => $order_id, 'creator_id' => $_SESSION["user"]["data"]["id"], 'created' => time(), 'name' => $name, 'size' => $file["size"])); if (!$file_id) { $Frm->_gui->ERR("Ошибка при загрузке"); } else { $dir = DIR_FS_ORDER_FILES . $order_id . '/'; if (!is_dir(DIR_FS_ORDER_FILES)) { create_path('order_files', DIR_FS_DOCUMENT_ROOT); } if (!is_dir($dir)) { create_path($order_id, DIR_FS_ORDER_FILES); } $file_name = $file_id . '.' . $extension; if (move_uploaded_file($file['tmp_name'], $dir . $file_name)) { $Frm->_gui->OK("Файл загружен"); if ($_SESSION["user"]["data"]["group_id"] == 6 && get_order_author_id($order_id) == $_SESSION["user"]["data"]["id"]) { $res = change_order_status($order_id, 'RECEIVED_FILE_FROM_AUTHOR'); if ($res == 1) { $Frm->_gui->OK("Статус заказа изменен"); } else { $Frm->_gui->ERR($res); } } } else { OrderFile::delete($file_id); $Frm->_gui->ERR("Ошибка при сохранении файла"); } } page_reloadAll(); } } }
if (file_exists($path)) { $new_name = $path . "/" . $_FILES["zf_work_file"]["name"]; if (file_exists($new_name)) { unlink($new_name); } move_uploaded_file($_FILES["zf_work_file"]["tmp_name"], $new_name); } } $files = check_user_files(); if (count($files)) { $path = "../order_files/" . $order['id']; if (!file_exists($path)) { mkdir($path); } foreach ($files as $f) { $fid = OrderFile::create(array('order_id' => $order['id'], 'creator_id' => 0, 'created' => time(), 'name' => $f["name"], 'size' => $f["size"])); if ($fid > 0) { $ext = substr($f["name"], strrpos($f["name"], ".") + 1); $f_s = fopen($f["path"], "r"); $f_d = fopen($path . "/" . $fid . "." . $ext, "w"); fwrite($f_d, fread($f_s, $f["size"])); fclose($f_s); fclose($f_d); } unlink($f["path"]); } } } $type = "<i>неизвестно</i>"; $napr = "<i>неизвестно</i>"; $disc = "<i>неизвестно</i>";