本文整理汇总了PHP中CFile::_remoteCopy方法的典型用法代码示例。如果您正苦于以下问题:PHP CFile::_remoteCopy方法的具体用法?PHP CFile::_remoteCopy怎么用?PHP CFile::_remoteCopy使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CFile
的用法示例。
在下文中一共展示了CFile::_remoteCopy方法的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: aSaveDocument
function aSaveDocument($stage_id, $doc_id, $name, $type, $access, $session)
{
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/sbr_meta.php';
$stage_id = __paramValue('int', $stage_id);
$doc_id = __paramValue('int', $doc_id);
$objResponse = new xajaxResponse();
if (!hasPermissions('sbr')) {
$objResponse->script('window.sended = false');
return $objResponse;
}
$sbr = sbr_meta::getInstance();
$sbr_id = $sbr->getSbrIdFromStage($stage_id);
$sbr->initFromId($sbr_id, true, false, false);
if ($sbr->error) {
$objResponse->script('window.sended = false');
return $objResponse;
}
$stage = $sbr->initFromStage($stage_id, false);
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/attachedfiles.php';
$attachedfiles = new attachedfiles($session);
$attach = current($attachedfiles->getFiles());
if ($attach['id']) {
$file = new CFile($attach['id']);
$file->table = 'file_sbr';
$file->_remoteCopy($sbr->getUploadDir() . $file->name);
} else {
$file = false;
}
if ($doc_id) {
$old_doc = $sbr->getDoc($doc_id);
$doc = array('name' => $name, 'type' => $type, 'access_role' => $access, 'status' => $old_doc['status'], 'stage_id' => $stage_id, 'id' => $doc_id);
if ($file) {
$doc['file_id'] = $file->id;
}
$sbr->editDoc($doc, $old_doc);
if ($old_doc['access_role'] == 0 && $doc['access_role'] > 0) {
$stage->removeEvent(29, true);
} elseif ($old_doc['access_role'] > 0 && $doc['access_role'] == 0) {
$stage->removeEvent(30, true);
}
} else {
if (!$file) {
$objResponse->script('window.sended = false');
$objResponse->call('alert', 'Загрузите файл');
return $objResponse;
}
$doc = array('stage_id' => $stage_id, 'file_id' => $file->id, 'status' => sbr::DOCS_STATUS_PUBL, 'access_role' => $access, 'owner_role' => 0, 'type' => $type);
$add_doc = $sbr->addDocR($doc);
if (!$add_doc) {
$objResponse->script('window.sended = false;');
$objResponse->call('alert', 'Ошибка запроса');
return $objResponse;
}
}
$objResponse->script('window.location.reload()');
return $objResponse;
}
示例2: transferFiles
/**
* Перенос файлов в рабочие папки сайта
*
* @param array $files Массив файлов
* @param string $table Таблица для переноса
* @param string $dir Директория для переноса
* @param bool = true $newName Генерировать новое имя файла
* @return array
*/
function transferFiles($files, $table, $dir, $newName = true)
{
foreach ($files as $key => $file) {
$objFile = new CFile($file['id']);
$ext = $objFile->getext();
if (!$newName) {
$tmp_name = $objFile->name;
} else {
$tmp_name = $objFile->secure_tmpname($dir, '.' . $ext);
$tmp_name = substr_replace($tmp_name, "", 0, strlen($dir));
}
$objFile->table = $table;
$copy = $objFile->_remoteCopy($dir . $tmp_name);
$data[] = array('fname' => $objFile->name, 'id' => $objFile->id, 'orig_name' => $objFile->original_name, 'file_id' => $objFile->id);
unset($objFile);
}
return $data;
}
示例3: Update
/**
* Редактирование личного сообщения.
*
* @param int $from_id UID пользователя-отправителя
* @param int $modified_id UID пользователя изменявшего сообщение
* @param int $id ID сообщения
* @param string $msg_text текст сообщения
* @param array $attachedfiles_file приаттаченные файлы
* @param string $modified_reason причина редактирования
*
* @return bool true - успех, false - провал
*/
public function Update($from_id = 0, $modified_id = 0, $id = 0, $msg_text = '', $attachedfiles_file = array(), $modified_reason = '')
{
$bRet = false;
if ($from_id && $id && $msg_text) {
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php';
$users = new users();
$login = $users->GetName($from_id, $err);
$files = array();
if ($login) {
if ($attachedfiles_file) {
foreach ($attachedfiles_file as $file) {
switch ($file['status']) {
case 1:
// добавляем файл
$cFile = new CFile($file['id']);
$cFile->table = 'file';
$ext = $cFile->getext();
$tmp_dir = 'users/' . substr($login['login'], 0, 2) . '/' . $login['login'] . '/contacts/';
$tmp_name = $cFile->secure_tmpname($tmp_dir, '.' . $ext);
$tmp_name = substr_replace($tmp_name, '', 0, strlen($tmp_dir));
$cFile->_remoteCopy($tmp_dir . $tmp_name, true);
$files[] = $cFile->id;
break;
case 3:
// ранее добавленный
$files[] = $file['id'];
break;
case 4:
// удаляем файл
$cFile = new CFile();
$cFile->Delete($file['id']);
break;
}
}
}
$DB = new DB();
$DB->val('SELECT message_update(?i, ?i, ?, ?a, ?)', $id, $modified_id, $msg_text, $files, $modified_reason);
$bRet = empty($DB->error);
}
}
return $bRet;
}
示例4: billingOperation
//.........这里部分代码省略.........
}
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;
}
示例5: _new_initStagesFromRequest
/**
* Новая СБР
* Инициализирует этапы сделки для редактирования/создания из пользовательского запроса.
* Загружает вложения на сервер. Учитывает удаление этапов.
*
* @param array $tstages массив этапов. Может содержать новые этапы и старые, отредактированные.
* @param array $attached_session ид сессии автозагрузчика
* @param int $mode 0: создается, 1: редактируется вся сделка, 2: редактируется один этап.
*/
private function _new_initStagesFromRequest($tstages, $tstages_attach, $mode)
{
// $tstages_attach = array();
$stages = array();
$stages_attach = array();
$fcnt = self::MAX_FILES;
// Формируем массив удаленных этапов. Уменьшаем общий бюджет сделки.
if ($this->data['delstages']) {
foreach ($this->data['delstages'] as $id => $ds) {
if ($dds = $this->getStageById($id)) {
$this->_delstages[$id] = clone $dds;
$this->data['cost'] -= $dds->cost;
}
}
}
// Упорядочиваем массив этапов в новой последовательности, на случай если были удаления/добавления и все перемешалось.
// Если редактируется только один этап, то он не меняет номер ни при каких обстоятельствах.
$num = 0;
foreach ($tstages as $rnum => $ts) {
if ($ts['id']) {
if ($mode == 2 && ($tts = $this->getStageById($ts['id']))) {
$num = $tts->num;
}
}
$stages[$num] = $ts;
// if($tstages_attach[$rnum])
// $stages_attach[$num] = $tstages_attach[$rnum];
if ($mode == 2) {
break;
}
++$num;
}
unset($tstages, $tstages_attach);
// Инициализируем $this->stages.
$stage_cnt = count($stages);
$new_stages = 0;
$dnum = 0;
foreach ($stages as $num => $stg) {
$num = $num - $dnum;
if ($stg['id'] && ($tts = $this->getStageById($stg['id']))) {
$this->stages[$num] = $tts;
} else {
$this->stages[$num] = new sbr_stages($this);
++$new_stages;
}
$this->stages[$num]->data['num'] = $num;
$this->data['cost'] -= $this->stages[$num]->cost;
$data_exists = $this->stages[$num]->initFromRequest($stg) || $stages[$num]['attached'];
$this->data['cost'] += $this->stages[$num]->cost;
// Если передан пустой этап то решаем, что с ним делать:
if (!$data_exists && $stage_cnt > 1 && ($mode == 0 || $mode == 1 && $this->isDraft())) {
array_splice($this->stages, $num, 1);
// array_splice($stages_attach, $num, 1);
++$dnum;
--$stage_cnt;
} elseif ($this->stages[$num]->error) {
$this->error['stages'][$num] = $this->stages[$num]->error;
}
// @todo файлы при редактировании
}
$d = $new_stages - count($this->_delstages);
$this->data['stages_cnt'] += $d;
while (++$d <= 0) {
array_pop($this->stages);
}
// Загружаем вложения на сервер.
if (!$this->error) {
$dest = $this->getUploadDir();
foreach ($stages as $num => $stage) {
if (!$stage['attached']) {
continue;
}
foreach ($stage['attached'] as $idx => $att) {
$file = new CFile($att['id']);
$file->table = 'file_sbr';
$file->_remoteCopy($dest . $file->name);
$this->stages[$num]->uploaded_files[$idx] = $file;
}
if ($stage['new_del_attach']) {
foreach ($stage['new_del_attach'] as $idx => $att) {
$this->stages[$num]->data['new_del_attach'][$att['id']] = $att;
}
}
}
}
}
示例6: addAttachedFiles
/**
* Связывает файлы загруженные ассинхронно с проектом и добавляет информацию о них в массив $this->_attach
*
* @param array $files Список добавляемых файлов
* @param boolean $from_draft Файлы из черновика
*/
function addAttachedFiles($files, $from_draft = false)
{
global $DB;
$old_files = array();
if ($this->_attach) {
foreach ($this->_attach as $f) {
array_push($old_files, $f['file_id']);
}
}
if ($from_draft) {
if ($this->_attach) {
foreach ($this->_attach as $attach_id => $attach) {
if (!in_array($attach['file_id'], $old_files)) {
$this->delAttach($attach_id, true);
}
}
}
}
if ($files) {
foreach ($files as $file) {
switch ($file['status']) {
case 4:
// Удаляем файл
if ($this->_attach) {
foreach ($this->_attach as $attach_id => $attach) {
if ($attach['file_id'] == $file['id']) {
$this->delAttach($attach_id, true);
}
}
}
break;
case 1:
case 3:
// Добавляем файл
if (!in_array($file['id'], $old_files)) {
if (in_array($file['id'], $old_files)) {
$need_copy = false;
} else {
$need_copy = true;
}
$cFile = new CFile($file['id']);
$cFile->table = 'file_projects';
$ext = $cFile->getext();
if ($need_copy) {
$tmp_dir = $this->_tmpAbsDir;
$tmp_name = $cFile->secure_tmpname($tmp_dir, '.' . $ext);
$tmp_name = substr_replace($tmp_name, "", 0, strlen($tmp_dir));
$cFile->_remoteCopy($tmp_dir . $tmp_name, true);
}
$this->_attach[] = array('file_id' => $cFile->id, 'path' => $cFile->path, 'name' => $cFile->name, 'size' => $cFile->size, 'ftype' => $cFile->getext(), 'is_new' => true);
$this->_tmpFiles[] = $cFile->name;
}
break;
}
}
}
}
示例7: addAttachedFiles
/**
* Добавление/удаление файлов к рассылке
* @param array $files Список файлов
* @param integer $id Ид рассылки
*/
public function addAttachedFiles($files, $id)
{
if ($files) {
foreach ($files as $file) {
switch ($file['status']) {
case 4:
// Удаляем файл
$this->delAttach($file['id']);
break;
case 1:
// Добавляем файл
$cFile = new CFile($file['id']);
$cFile->table = 'file_mailer';
$ext = $cFile->getext();
$tmp_name = $cFile->secure_tmpname(self::FILE_DIR, '.' . $ext);
$tmp_name = substr_replace($tmp_name, "", 0, strlen(self::FILE_DIR));
$cFile->_remoteCopy(self::FILE_DIR . $tmp_name, true);
$this->insertAttachedFile($cFile->id, $id);
break;
}
}
}
}
示例8: arbitrage
/**
* Принимает заявку в Арбитраж.
*
* @param string $descr причина обращения.
* @param array $files массив файлов ($_FILES).
* @return boolean успешно?
*/
function arbitrage($descr, $files)
{
// проверим не послал ли паралельно ктото в арбитраж
$this->getArbitrage();
if ($this->arbitrage['id'] != null) {
$this->error['arbitrage']['descr'] = 'Сделка уже находится в арбитраже';
return false;
}
if (!($descr = pg_escape_string(change_q_x($descr, true, false)))) {
$this->error['arbitrage']['descr'] = 'Поле не должно быть пустым';
return false;
}
$fcnt = sbr::MAX_FILES;
if ($files) {
foreach ($files as $file) {
$cfile = new CFile($file['id']);
$cfile->table = 'file_sbr';
$cfile->_remoteCopy($this->sbr->getUploadDir() . $cfile->name);
$this->uploaded_files[] = $cfile;
}
/*$this->sbr->getUploadDir(); // !!! если админ редактирует, то нужно в папку автора коммента загружать.
foreach($files['name'] as $idx=>$aname) {
foreach($files as $prop=>$a)
$att[$idx][$prop] = $a[$idx];
if(--$fcnt < 0) break;
$file = new CFile($att[$idx]);
// проверка файла
if($file->size > self::ARB_FILE_MAX_SIZE) {
$this->error['arbitrage']['err_attach'] = "Максимальный объем файлов: ".ConvertBtoMB(self::ARB_FILE_MAX_SIZE);
return false;
}
if( in_array($file->getext(), $GLOBALS['disallowed_array'])) {
$this->error['arbitrage']['err_attach'] = "Недопустимый формат файла";
return false;
}
if($err = $this->sbr->uploadFile($file, self::ARB_FILE_MAX_SIZE)) {
if($err == -1) continue;
else {
$this->error['arbitrage']['err_attach'] = $err;
break;
}
}
$this->uploaded_files[] = $file;
}*/
}
if ($this->error) {
return false;
}
if (!$this->_openXact(TRUE)) {
return false;
}
$sql = "INSERT INTO sbr_stages_arbitrage (stage_id, user_id, descr) VALUES ({$this->id}, {$this->sbr->uid}, '{$descr}') RETURNING id";
if (!($res = pg_query(self::connect(false), $sql)) || !pg_num_rows($res)) {
$this->_abortXact();
return false;
}
$id = pg_fetch_result($res, 0, 0);
$sql_attach = '';
if ($this->uploaded_files) {
foreach ($this->uploaded_files as $file) {
if (!$file->id) {
continue;
}
$file->orig_name = pg_escape_string($file->original_name);
$file->orig_name = $file->shortenName($file->orig_name, 128);
if (!$file->orig_name) {
continue;
}
$sql_attach .= "INSERT INTO sbr_stages_arbitrage_attach(arbitrage_id, file_id, orig_name) VALUES({$id}, {$file->id}, '{$file->orig_name}');";
}
}
if ($sql_attach && !pg_query(self::connect(false), $sql_attach)) {
$this->_abortXact();
return false;
}
$this->_commitXact();
return true;
}
示例9: addAttachedFiles
/**
* Связывает файлы загруженные ассинхронно с сообщением
*
* @param array $files Список загруженных файлов
* @param string $login Логин пользователя
* @param integer $msg_id ID сообщения
* @param boolean $from_draft Файлы из черновика
*/
function addAttachedFiles($files, $msg_id, $login = NULL, $from_draft = false)
{
global $DB;
if (!$login) {
$login = $_SESSION['login'];
}
$bModeration = false;
$old_files = $this->getAttachedFiles($msg_id);
if ($from_draft) {
$notdeleted_files = array();
if ($files) {
foreach ($files as $f) {
if ($f['status'] == 3 || in_array($f['id'], $old_files)) {
array_push($notdeleted_files, $f['id']);
}
}
}
$attaches = CFile::selectFilesBySrc(self::FILE_TABLE, $msg_id);
if ($attaches) {
foreach ($attaches as $attach) {
if (in_array($attach['id'], $notdeleted_files)) {
continue;
}
$cFile = new CFile($attach['id']);
$cFile->table = self::FILE_TABLE;
if ($cFile->id) {
$cFile->Delete($cFile->id);
}
}
}
}
$max_image_size = array('width' => blogs::MAX_IMAGE_WIDTH, 'height' => blogs::MAX_IMAGE_HEIGHT, 'less' => 0);
if ($files) {
foreach ($files as $file) {
switch ($file['status']) {
case 4:
// Удаляем файл
$cFile = new CFile($file['id']);
$cFile->table = self::FILE_TABLE;
if ($cFile->id) {
$cFile->Delete($cFile->id);
}
break;
case 1:
if (in_array($file['id'], $old_files)) {
$need_copy = false;
} else {
$bModeration = true;
$need_copy = true;
}
// Добавляем файл
$cFile = new CFile($file['id']);
$cFile->proportional = 1;
$cFile->table = self::FILE_TABLE;
$ext = $cFile->getext();
if ($need_copy) {
$tmp_dir = "users/" . substr($login, 0, 2) . "/" . $login . "/upload/";
$tmp_name = $cFile->secure_tmpname($tmp_dir, '.' . $ext);
$tmp_name = substr_replace($tmp_name, "", 0, strlen($tmp_dir));
$cFile->_remoteCopy($tmp_dir . $tmp_name, true);
}
if (in_array($ext, $GLOBALS['graf_array'])) {
$is_image = TRUE;
} else {
$is_image = FALSE;
}
if ($is_image && $ext != 'swf' && $ext != 'flv') {
if ($cFile->image_size['width'] > $max_image_size['width'] || $cFile->image_size['height'] > $max_image_size['height']) {
if ($need_copy) {
if ($cFile->resizeImage($cFile->path . 'sm_' . $cFile->name, $max_image_size['width'], $cFile->image_size['height'], 'landscape')) {
$cFile->small = 2;
}
} else {
$cFile->small = 2;
}
} else {
$cFile->small = 1;
}
} else {
$cFile->small = $ext == 'flv' ? 2 : 0;
}
$cFile->updateFileParams(array('src_id' => $msg_id, 'small' => $cFile->small), false);
break;
}
}
}
if ($bModeration && $login == $_SESSION['login'] && !hasPermissions('blogs')) {
// отравляем сообщение на модерирование сразу по факту создания или редактирования
// появились новые файлы и это правит автор, и он не админ и не ПРО - отправить на модерирование
/*require_once( $_SERVER['DOCUMENT_ROOT'] . '/classes/user_content.php' );
$DB->query( 'UPDATE blogs_msgs SET moderator_status = 0 WHERE id = ?i', $msg_id );
$DB->insert( 'moderation', array('rec_id' => $msg_id, 'rec_type' => user_content::MODER_BLOGS) );*/
//.........这里部分代码省略.........
示例10: updateDocument
//.........这里部分代码省略.........
$data['letters_doc_frm_user2_status_date_data'] = null;
}
if (!$data['letters_doc_frm_user1_status_date_data']) {
$data['letters_doc_frm_user1_status_date_data'] = null;
}
if (!$data['letters_doc_frm_user3_status_data']) {
$data['letters_doc_frm_user3_status_data'] = null;
}
if (!$data['letters_doc_frm_user2_status_data']) {
$data['letters_doc_frm_user2_status_data'] = null;
}
if (!$data['letters_doc_frm_user1_status_data']) {
$data['letters_doc_frm_user1_status_data'] = null;
}
if (!$data['letters_doc_frm_parent_db_id'] || $data['letters_doc_frm_parent_db_id'] == 'null') {
$data['letters_doc_frm_parent_db_id'] = null;
}
if (!$data['letters_doc_frm_group'] || $data['letters_doc_frm_group'] == 'null') {
$data['letters_doc_frm_group'] = null;
}
if (!$data['letters_doc_frm_group_db_id'] || $data['letters_doc_frm_group_db_id'] == 'null') {
$data['letters_doc_frm_group_db_id'] = null;
}
if (!$data['letters_doc_frm_group_db_id'] && !empty($data['letters_doc_frm_group'])) {
$data['letters_doc_frm_group_db_id'] = letters::checkCreateGroup($data['letters_doc_frm_group']);
}
if ($data['letters_doc_frm_user_1_section'] == '1') {
$data['letters_doc_frm_user_1_section'] = true;
} else {
$data['letters_doc_frm_user_1_section'] = false;
}
if ($data['letters_doc_frm_user_2_section'] == '1') {
$data['letters_doc_frm_user_2_section'] = true;
} else {
$data['letters_doc_frm_user_2_section'] = false;
}
if ($data['letters_doc_frm_user_3_section'] == '1') {
$data['letters_doc_frm_user_3_section'] = true;
} else {
$data['letters_doc_frm_user_3_section'] = false;
}
if ($data['letters_doc_frm_withoutourdoc'] == '1') {
$data['letters_doc_frm_withoutourdoc'] = true;
} else {
$data['letters_doc_frm_withoutourdoc'] = false;
}
$doc = self::getDocument($id);
$doc_data['title'] = $data['letters_doc_frm_title'];
$doc_data['user_1'] = $data['letters_doc_frm_user_1_db_id'];
$doc_data['user_2'] = $data['letters_doc_frm_user_2_db_id'];
$doc_data['user_3'] = $data['letters_doc_frm_user_3_db_id'];
$doc_data['group_id'] = $data['letters_doc_frm_group_db_id'];
$doc_data['parent'] = $data['letters_doc_frm_parent_db_id'];
$doc_data['user_status_1'] = $data['letters_doc_frm_user1_status_data'];
$doc_data['user_status_2'] = $data['letters_doc_frm_user2_status_data'];
$doc_data['user_status_3'] = $data['letters_doc_frm_user3_status_data'];
$doc_data['user_status_date_1'] = $data['letters_doc_frm_user1_status_date_data'];
$doc_data['user_status_date_2'] = $data['letters_doc_frm_user2_status_date_data'];
$doc_data['user_status_date_3'] = $data['letters_doc_frm_user3_status_date_data'];
$doc_data['is_user_1_company'] = $data['letters_doc_frm_user_1_section'] ? 't' : 'f';
$doc_data['is_user_2_company'] = $data['letters_doc_frm_user_2_section'] ? 't' : 'f';
$doc_data['is_user_3_company'] = $data['letters_doc_frm_user_3_section'] ? 't' : 'f';
$doc_data['withoutourdoc'] = $data['withoutourdoc'] ? 't' : 'f';
if (isset($data['letters_doc_frm_comment']) && $data['letters_doc_frm_comment']) {
$doc_data['comment'] = $data['letters_doc_frm_comment'];
} else {
$data['letters_doc_frm_comment'] = $doc['comment'];
}
if ($doc_data['user_status_1'] != $doc['user_status_1'] || $doc_data['user_status_2'] != $doc['user_status_2'] || $doc_data['user_status_3'] != $doc['user_status_3']) {
letters::updateDateStatusChange($id);
}
letters::saveHistory($id, $doc_data);
$sql = "UPDATE letters SET\n date_add = " . ($data['letters_doc_frm_dateadd_eng_format'] ? "'{$data['letters_doc_frm_dateadd_eng_format']}'" : "NOW()") . ",\n title = ?,\n user_1 = ?,\n user_2 = ?,\n user_3 = ?,\n group_id = ?,\n parent = ?,\n user_status_1 = ?, \n user_status_2 = ?, \n user_status_3 = ?, \n user_status_date_1 = ?, \n user_status_date_2 = ?, \n user_status_date_3 = ?,\n is_user_1_company = ?, \n is_user_2_company = ?, \n is_user_3_company = ?, \n withoutourdoc = ?,\n comment = ?\n WHERE id = ?i;";
$DB->query($sql, $data['letters_doc_frm_title'], $data['letters_doc_frm_user_1_db_id'], $data['letters_doc_frm_user_2_db_id'], $data['letters_doc_frm_user_3_db_id'], $data['letters_doc_frm_group_db_id'], $data['letters_doc_frm_parent_db_id'], $data['letters_doc_frm_user1_status_data'], $data['letters_doc_frm_user2_status_data'], $data['letters_doc_frm_user3_status_data'], $data['letters_doc_frm_user1_status_date_data'], $data['letters_doc_frm_user2_status_date_data'], $data['letters_doc_frm_user3_status_date_data'], $data['letters_doc_frm_user_1_section'], $data['letters_doc_frm_user_2_section'], $data['letters_doc_frm_user_3_section'], $data['letters_doc_frm_withoutourdoc'], $data['letters_doc_frm_comment'], $id);
$sql = "UPDATE letters SET is_out=false WHERE (user_status_1 IS DISTINCT FROM 1 AND user_status_2 IS DISTINCT FROM 1 AND user_status_3 IS DISTINCT FROM 1) AND id=?i";
$DB->query($sql, $id);
require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/attachedfiles.php";
require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/CFile.php";
$attachedfiles = new attachedfiles($data['attachedfiles_session']);
$attachedfiles_files = $attachedfiles->getFiles();
if ($attachedfiles_files) {
foreach ($attachedfiles_files as $attachedfiles_file) {
$cFile = new CFile();
$cFile->table = 'file';
$cFile->GetInfoById($attachedfiles_file['id']);
if ($cFile->id != $doc['file_id']) {
$ext = $cFile->getext();
$tmp_dir = "letters/";
$tmp_name = $cFile->secure_tmpname($tmp_dir, '.' . $ext);
$tmp_name = substr_replace($tmp_name, "", 0, strlen($tmp_dir));
$cFile->_remoteCopy($tmp_dir . $tmp_name, true);
$sql = "UPDATE letters SET file_id = ?i WHERE id = ?i";
$DB->query($sql, $cFile->id, intval($id));
$cFile->delete($doc['file_id']);
}
}
}
$attachedfiles->clear();
return $id;
}
示例11: addAttachedFiles
/**
* Связывает файлы загруженные ассинхронно с сообщением
*
* @param array $files Список загруженных файлов
* @param string $login Логин пользователя
* @param integer $msg_id ID сообщения
* @param boolean $from_draft Файлы из черновика
*/
function addAttachedFiles($files, $msg_id, $login, $from_draft = false)
{
global $DB;
if (!$login) {
$login = $_SESSION['login'];
}
$bModeration = false;
$where = " inline != TRUE";
$attaches = CFile::selectFilesBySrc(self::FILE_TABLE, $msg_id, NULL, $where);
//$DB->rows($sql, $msg_id);
$old_files = array();
if ($attaches) {
foreach ($attaches as $f) {
array_push($old_files, $f['fid']);
}
}
if ($from_draft) {
$notdeleted_files = array();
if ($files) {
foreach ($files as $f) {
if ($f['status'] == 3) {
array_push($notdeleted_files, $f['id']);
}
}
}
if ($attaches) {
$cfile = new CFile();
foreach ($attaches as $attach) {
if (in_array($attach['id'], $notdeleted_files)) {
continue;
}
$cfile->Delete(0, "users/" . substr($login, 0, 2) . "/" . $login . "/upload/", $attach['fname']);
//if ($attach['small'] == 't') {
// $cfile->Delete(0, "users/" . substr($login, 0, 2) . "/" . $login . "/upload/", "sm_" . $attach['fname']);
//}
}
}
}
$max_image_size = array('width' => 470, 'height' => 1000, 'less' => 0);
if ($files) {
$cfile = new CFile();
$num = 0;
foreach ($files as $file) {
switch ($file['status']) {
case 3:
$num++;
break;
case 4:
// Удаляем файл
$cFile = new CFile($file['id']);
$cFile->table = self::FILE_TABLE;
if ($cFile->id) {
$cFile->updateFileParams(array('src_id' => null), false);
// Удаляем связь
$cFile->Delete($cFile->id);
}
break;
case 1:
$num++;
if (in_array($file['id'], $old_files)) {
$need_copy = false;
} else {
$bModeration = true;
$need_copy = true;
}
// Добавляем файл
$cFile = new CFile($file['id']);
$cFile->proportional = 1;
$cFile->table = self::FILE_TABLE;
$ext = $cFile->getext();
if ($need_copy) {
$tmp_dir = "users/" . substr($login, 0, 2) . "/" . $login . "/upload/";
$tmp_name = $cFile->secure_tmpname($tmp_dir, '.' . $ext);
$tmp_name = substr_replace($tmp_name, "", 0, strlen($tmp_dir));
$cFile->_remoteCopy($tmp_dir . $tmp_name, true);
}
if (in_array($ext, $GLOBALS['graf_array'])) {
$is_image = TRUE;
} else {
$is_image = FALSE;
}
if ($is_image && $ext != 'swf' && $ext != 'flv') {
if ($cFile->image_size['width'] > $max_image_size['width'] || $cFile->image_size['height'] > $max_image_size['height']) {
if ($need_copy) {
if ($cFile->resizeImage($cFile->path . 'sm_' . $cFile->name, $max_image_size['width'], $cFile->image_size['height'], 'landscape')) {
$cFile->small = true;
}
} else {
$cFile->small = true;
}
} else {
$cFile->small = false;
//.........这里部分代码省略.........
示例12: addAttachedFiles
/**
* Связывает файлы загруженные ассинхронно с комментарием
*
* @param array $files Список загруженных файлов @see attachedfiles::getFiles
* @param string $login Логин пользователя
* @param integer $msg_id ID комментария
* @return bool
*/
function addAttachedFiles($files = array(), $msg_id = 0, $login = '')
{
global $DB;
$model = $this->model();
if (!isset($model['attaches'])) {
return false;
}
if (!$login) {
$login = $_SESSION['login'];
}
$sql = 'SELECT ' . $model['attaches']['fields']['file'] . ' AS fid FROM ' . $model['attaches']['table'] . ' WHERE ' . $model['attaches']['fields']['comment'] . ' = ?i AND ' . $model['attaches']['fields']['inline'] . ' != TRUE';
$attaches = $DB->rows($sql, $msg_id);
$old_files = array();
if ($attaches) {
foreach ($attaches as $f) {
array_push($old_files, $f['fid']);
}
}
$max_image_size = array('width' => 390, 'height' => 1000, 'less' => 0);
if ($files) {
$num = 0;
foreach ($files as $file) {
switch ($file['status']) {
case 4:
// Удаляем файл
$cFile = new CFile($file['id']);
$cFile->table = $model['attaches']['file_table'];
if ($cFile->id) {
$sql = 'DELETE FROM ' . $model['attaches']['table'] . ' WHERE ' . $model['attaches']['fields']['file'] . ' = ?i';
$DB->query($sql, $cFile->id);
$cFile->Delete($cFile->id);
}
break;
case 1:
$num++;
if (in_array($file['id'], $old_files)) {
$need_copy = false;
} else {
$need_copy = true;
}
// Добавляем файл
$cFile = new CFile($file['id']);
$cFile->proportional = 1;
$cFile->table = $model['attaches']['file_table'];
$ext = $cFile->getext();
if ($need_copy) {
$tmp_dir = 'users/' . substr($login, 0, 2) . '/' . $login . '/upload/';
$tmp_name = $cFile->secure_tmpname($tmp_dir, '.' . $ext);
$tmp_name = substr_replace($tmp_name, '', 0, strlen($tmp_dir));
$cFile->_remoteCopy($tmp_dir . $tmp_name, true);
}
if (in_array($ext, $GLOBALS['graf_array'])) {
$is_image = TRUE;
} else {
$is_image = FALSE;
}
if ($is_image && $ext != 'swf' && $ext != 'flv') {
if ($cFile->image_size['width'] > $max_image_size['width'] || $cFile->image_size['height'] > $max_image_size['height']) {
if ($need_copy) {
if ($cFile->resizeImage($cFile->path . 'sm_' . $cFile->name, $max_image_size['width'], $cFile->image_size['height'], 'landscape')) {
$cFile->small = true;
}
} else {
$cFile->small = true;
}
} else {
$cFile->small = false;
}
} else {
$cFile->small = false;
}
$aData = array($model['attaches']['fields']['comment'] => $msg_id, $model['attaches']['fields']['file'] => $cFile->id);
if (isset($model['attaches']['fields']['small'])) {
$aData[$model['attaches']['fields']['small']] = $cFile->small;
}
if (isset($model['attaches']['fields']['sort'])) {
$aData[$model['attaches']['fields']['sort']] = $num;
}
$DB->insert($model['attaches']['table'], $aData);
break;
}
}
}
return true;
}
示例13: remoteCopy
/**
* Перемещаем файл куда надо
*
* @param integer $id_file ИД файла который нужно переместить
* @param string $copy_table Таблица в которую перемещаем
* @param string $dir Директория в которую копируем
* @return \CFile
*/
function remoteCopy($id_file, $copy_table, $dir, $new_name = true, $prefix = 'f_')
{
$CFile = new CFile($id_file);
$CFile->table = $copy_table;
if ($new_name) {
$tmp_name = $CFile->secure_tmpname($dir, '.' . $CFile->getext(), $prefix);
$tmp_name = substr_replace($tmp_name, "", 0, strlen($dir));
} else {
$tmp_name = $prefix . str_replace(array("f_", "sm_"), "", $CFile->name);
}
$CFile->_remoteCopy($dir . $tmp_name);
return $CFile;
}