/** * Редактирование клиента. * * @param string $name Название клиента * @param string $link Ссылка на сайт клиента * @param object $logo Логотип клиента * @param string $error Возвращает сообщение об ошибке если она есть */ public function editClient($name, $link, $logo, $id, &$error) { global $DB; if (!$id) { $error = 'Ошибка'; return false; } if ($logo) { $logo->max_size = 100000; $logo->max_image_size = array('width' => 140, 'height' => 100); $logo->resize = 1; $logo->topfill = 1; $logo->server_root = 1; $logo_client = $logo->MoveUploadedFile('clients/'); $error = $logo->StrError('<br />'); } if (!$error) { if ($logo) { $logo_client = ", logo = '{$logo_client}'"; } $sql = "UPDATE clients SET name_client = ?, link_client = ? {$logo_client} WHERE id = ?i;"; $ret = $DB->query($sql, $name, $link, $id); if ($ret == null) { $error = 'Ошибка обработки информации'; } } }
/** * Обновить фотографию пользователя. * * @param object $foto Фотография * * @return boolean true - фото обновилось, false - ошибка */ public function UpdateFoto($foto) { $error = 0; if ($foto) { $foto->max_size = 100000; $foto->max_image_size = array('width' => 150, 'height' => 200); $foto->resize = 1; $foto->proportional = 1; $foto->topfill = 1; $foto->server_root = 1; $photo = $foto->MoveUploadedFile('team/'); if ($foto->StrError()) { $error = 1; } } return array('error' => $error, 'foto' => $photo); }
/** * Обновление логотипа пользователя. * * @param integer $fid ИД пользователя * @param object $logo CFile, @see class CFile(); * @param integer $del Удалить либо обновить (1,0) * * @return string $error Сообщение об ошибке */ public function UpdateLogo($fid, $logo, $del) { // если юзер меняет логотип пока предыдущий еще не отмодерирован - будет история изменений $aChange = $GLOBALS['DB']->row("SELECT id, old_val, new_val FROM users_change WHERE user_id = ?i AND ucolumn = 'logo'", $fid); $aDelFile = array(); // файлы которые нужно будет удалять сразу $dir = get_login($fid); $err = ''; if (!$dir) { $error = 'Имя пользователя не определено'; } $this->logo = $this->GetField($fid, $err, 'logo'); $old_logo = $this->logo; $error .= $err; if ($del == 1) { $this->logo = ''; } else { if ($logo && !$error) { $logo->max_size = 50000; $logo->max_image_size = array('width' => 150, 'height' => 100); $logo->resize = 0; $logo->proportional = 1; $logo->topfill = 1; $logo->allowed_ext = $GLOBALS['graf_array']; $this->logo = $logo->MoveUploadedFile($dir . '/logo'); $error .= $logo->StrError('<br />'); if (!$error && !$logo->img_to_small('sm_' . $this->logo, array('width' => 50, 'height' => 50))) { $error .= 'Невозможно уменьшить картинку.'; } } } if (!$error) { $error .= $this->Update($fid, $res); // определяемся какие файлы нужно удалить if ($del == 1) { // удаляем логотип if ($aChange) { // если хранили версии логотипа на случай возврата - то грохаем обе if ($aChange['old_val']) { $aDelFile[] = $aChange['old_val']; } $aDelFile[] = $aChange['new_val']; } else { // иначе просто грохаем логотип $aDelFile[] = $old_logo; } } elseif ($logo) { // меняем логотип if ($aChange && $aChange['new_val']) { // грохаем только промежуточную версию, если была $aDelFile[] = $aChange['new_val']; } } } // удаление не нужных файлов (если нет ошибок при сохранении разумеется) if ($aDelFile && !$error) { foreach ($aDelFile as $file) { $logo->Delete(0, 'users/' . substr($dir, 0, 2) . '/' . $dir . '/logo/', $file); $logo->Delete(0, 'users/' . substr($dir, 0, 2) . '/' . $dir . '/logo/', 'sm_' . $file); } } return $error; }
/** * Изменить отзыв * * @param string $msg Текст отзыва * @param string $sign Подпись * @param object $file CFile файл с логотипом * @param string $link Ссылка на сайт того кто оставил отзыв * @param string $from_ip IP адрес того кто писал отзыв * @param int $msgid ID отзыва * @return array сообщения об ошибках (файл, база) */ function Edit($msg, $sign, $file, $link, $from_ip, $msgid) { if ($file) { $file->max_size = 1048576; $file->proportional = 1; $file->max_image_size = array('width' => 120, 'height' => 120, 'less' => 1); $file->resize = 1; $file->proportional = 1; $file->topfill = 1; $file->server_root = 1; $f_name = $file->MoveUploadedFile("about/opinions/"); if (!isNulArray($file->error)) { $alert[3] = "Файл не удовлетворяет условиям загрузки"; $error_flag = 1; } if (!$error_flag) { $GLOBALS['DB']->query("UPDATE sopinions SET msgtext = ?, sign = ?, logo = ?, link = ?, from_ip = ?, modified = NOW() WHERE id = ?", $msg, $sign, $f_name, $link, $from_id, $msgid); } } else { $GLOBALS['DB']->query("UPDATE sopinions SET msgtext = ?, sign = ?, link = ?, from_ip = ?, modified = NOW() WHERE id=?", $msg, $sign, $link, $from_id, $msgid); } return array($alert, $DB->error); }
/** * Закачка файлов прикрепленных к сообщению. * * @param object $file Вложенные файлы @link class CFile(); * @param array $max_image_size Максимальный размер изображения [height=>1111, width=>1111] * * @return array [object CFile, предупреждение, флаги ошибок] */ public function UploadFiles($file, $max_image_size) { if ($file) { if (!$this instanceof blogs_norisk) { $file->max_size = 2097152; } $file->proportional = 1; $f_name = $file->MoveUploadedFile($_SESSION['login'] . '/upload'); $ext = $file->getext(); if (in_array($ext, $GLOBALS['graf_array'])) { $is_image = TRUE; } else { $is_image = FALSE; } $p_name = ''; if (!isNulArray($file->error)) { $error_flag = 1; $alert[3] = 'Файл не удовлетворяет условиям загрузки.'; } else { if ($is_image && $ext != 'swf' && $ext != 'flv') { if (!$file->image_size['width'] || !$file->image_size['height']) { $error_flag = 1; $alert[3] = 'Невозможно уменьшить картинку'; } if (!$error_flag && ($file->image_size['width'] > $max_image_size['width'] || $file->image_size['height'] > $max_image_size['height'])) { if (!$file->img_to_small('sm_' . $f_name, $max_image_size)) { $error_flag = 1; $alert[3] = 'Невозможно уменьшить картинку.'; } else { $tn = 2; $p_name = "sm_{$f_name}"; } } else { $tn = 1; } } else { if ($ext == 'flv') { $tn = 2; } else { $tn = 0; } } } $files['f_name'] = $f_name; $files['p_name'] = $p_name; $files['tn'] = $tn; } return array($files, $alert, $error_flag); }
/** * Редактирование фотографий * * @param integer $id Ид * @param object $attach Приложеные файлы (см. класс CFile) * @param array $photo Фотки (см. класс CFile) * @return integer */ function EditPhotos($id, $attach, $photo) { if (!$id) { return 0; } // Проверяем приложены ли файлы и обрабатываем их если они есть if ($attach->size > 0) { $fn = 0; $attach->proportional = 1; $f_name = $attach->MoveUploadedFile($_SESSION['login'] . "/upload"); if (!isNulArray($attach->error)) { $error_flag = 1; $alert[2] = "Файл не удовлетворяет условиям загрузки"; } else { $ext = $attach->getext(); if (in_array($ext, $GLOBALS['graf_array']) && $ext != "swf") { if (!$attach->image_size['width'] || !$attach->image_size['height']) { $error_flag = 1; $alert[2] = "Невозможно уменьшить картинку."; } if ($attach->image_size['width'] > 200 || $attach->image_size['height'] > 1000) { if (!$attach->img_to_small("sm_" . $f_name, array('width' => 200, 'height' => 1000, 'less' => 0))) { $error_flag = 1; $alert[2] = "Невозможно уменьшить картинку."; } else { $fn = 2; } } else { $fn = 1; } } } } // Если есть фотки if ($photo) { // Обратобка фоток foreach ($photo as $ikey => $wrk) { $tn = 0; $w_name = $wrk->MoveUploadedFile($_SESSION['login'] . "/upload"); if (!isNulArray($wrk->error)) { $error_flag = 1; $alert[2] = "Файл не удовлетворяет условиям загрузки"; } else { $ext = $wrk->getext(); $wrk->proportional = 1; if (in_array($ext, $GLOBALS['graf_array']) && $ext != "swf") { if (!$wrk->image_size['width'] || !$wrk->image_size['height']) { $error_flag = 1; $alert[2] = "Невозможно уменьшить картинку."; } if ($wrk->image_size['width'] > 200 || $wrk->image_size['height'] > 1000) { if (!$wrk->img_to_small("sm_" . $w_name, array('width' => 200, 'height' => 1000, 'less' => 0))) { $error_flag = 1; $alert[2] = "Невозможно уменьшить картинку."; } else { $tn = 2; } } else { $tn = 1; } } } if (!$error_flag) { $qstn[] = "file" . ($ikey + 1) . "='{$w_name}'"; $qstv[$ikey] = "file" . ($ikey + 1); $qsts[$ikey] = "pt" . ($ikey + 1); $qstp[] = "pt" . ($ikey + 1) . "='" . $tn . "'"; } $w_name = ""; } } // Сохранение всего обработанного добра if ($id && ($qstn || $f_name)) { global $DB; $sql = "SELECT ft, foto" . (isset($qstv) ? "," . implode(", ", $qstv) . ", " . implode(", ", $qsts) : "") . " FROM interview WHERE id=?"; $ret = $DB->row($sql, $id); if ($ret['foto'] && $f_name) { $file = new CFile(); $file->Delete(0, "users/" . substr($_SESSION['login'], 0, 2) . "/" . $_SESSION['login'] . "/upload/", $ret['foto']); if ($ret['ft'] == 2) { $file->Delete(0, "users/" . substr($_SESSION['login'], 0, 2) . "/" . $_SESSION['login'] . "/upload/", "sm_" . $ret['foto']); } } if ($f_name) { $af = "foto = '{$f_name}', ft = '{$fn}'"; } if ($qstn) { foreach ($qstv as $ikey => $value) { if ($ret[$value] && $qstn[$ikey]) { $file = new CFile(); $file->Delete(0, "users/" . substr($_SESSION['login'], 0, 2) . "/" . $_SESSION['login'] . "/upload/", $ret[$value]); if ($ret[$qsts[$ikey]] == 2) { $file->Delete(0, "users/" . substr($_SESSION['login'], 0, 2) . "/" . $_SESSION['login'] . "/upload/", "sm_" . $ret[$value]); } } } $af .= (isset($af) ? "," : "") . implode(", ", $qstn) . ", " . implode(", ", $qstp); } $sql = "UPDATE interview SET " . $af . " WHERE id=?"; $res = $DB->query($sql, $id); } return 0; }
/** * Обновляет фото пользователя * * @param integer $fid id пользователя * @param object $foto файл фотографии * @param integer $del флаг удаления фото (1 - удалить, 0 - перезакачаь) * @return string текст ошибки в случае неуспеха */ function UpdateFoto($fid, $foto, $del) { // если юзер меняет аватар пока предыдущий еще не отмодерирован - будет история изменений $aChange = $GLOBALS['DB']->row("SELECT id, old_val, new_val FROM users_change WHERE user_id = ?i AND ucolumn = 'photo'", $fid); $aDelFile = array(); // файлы которые нужно будет удалять сразу $dir = get_login($fid); $err = ""; if (!$dir) { $error = "Имя пользователя не определено"; } $this->photo = $this->GetField($fid, $err, "photo"); $old_foto = $this->photo; $error .= $err; if ($del == 1) { $this->photo = ""; } else { if ($foto && !$error) { $foto->max_size = 102400000; $foto->max_image_size = array('width' => 100, 'height' => 100, 'less' => 0); $foto->resize = 1; $foto->proportional = 1; $foto->topfill = 1; $cFile->crop = 1; $foto->allowed_ext = array_diff($GLOBALS['graf_array'], array('swf', 'gif')); $this->photo = $foto->MoveUploadedFile($dir . "/foto"); $error .= $foto->StrError('<br />'); if (!$error && !$foto->img_to_small("sm_" . $this->photo, array('width' => 50, 'height' => 50))) { $error .= "Невозможно уменьшить картинку."; } } } if (!$error) { $error .= $this->Update($fid, $res); // определяемся какие файлы нужно удалить if ($del == 1) { // удаляем аватар if ($aChange) { // если хранили версии аватара на случай возврата - то грохаем обе if ($aChange['old_val']) { $aDelFile[] = $aChange['old_val']; } $aDelFile[] = $aChange['new_val']; } else { // иначе просто грохаем аватар $aDelFile[] = $old_foto; } } elseif ($foto) { // меняем аватар if ($aChange && $aChange['new_val']) { // грохаем только промежуточную версию, если была $aDelFile[] = $aChange['new_val']; } } } // удаление не нужных файлов (если нет ошибок при сохранении разумеется) if ($aDelFile && !$error) { foreach ($aDelFile as $file) { $foto->Delete(0, "users/" . substr($dir, 0, 2) . "/" . $dir . "/foto/", $file); $foto->Delete(0, "users/" . substr($dir, 0, 2) . "/" . $dir . "/foto/", "sm_" . $file); } } return $error; }