739 lines
22 KiB
PHP
739 lines
22 KiB
PHP
<?php
|
|
/**
|
|
* $Id: UserController.php 969 2008-07-29 13:55:14Z pawy $
|
|
* Zarzadzanie uzytkownikami
|
|
*
|
|
*/
|
|
class UserController extends MainController implements ControllerInterface {
|
|
|
|
|
|
|
|
// cropper const
|
|
const PHOTO_ORG_SMALL_SIZE = 70; // minimalny wymiar oryginalnego obrazka
|
|
const MAX_PHOTO_ORG_FILE_SIZE = 5; // maksymalny rozmiar oryginalnego obrazka w mb
|
|
|
|
const CROPPER_MIN_SIZE = 70; // minimalny wymiar croppera
|
|
const CROPPER_MAX_SIZE = 300; // maksymalny wymiar dla croppera
|
|
|
|
const PHOTO_SESSION_NAME = '__avatar_photo_name__';
|
|
const PHOTO_SESSION_ID = '__avatar_photo_id__';
|
|
const SIZE_SESSION_NAME = '__avatar_photo_size__';
|
|
|
|
const AVATAR_DEST_DIR = 'images/upload/Avatar';
|
|
const AVATAR_TEMP_DIR = 'images/upload/temp/Avatar';
|
|
|
|
const GALLERY_DEST_DIR = 'images/upload/Avatar';
|
|
const GALLERY_TEMP_DIR = 'images/upload/temp/Avatar';
|
|
const NO_PHOTO_IMG_BIG = "image/Admin/cropperNoPhotoBig.gif";
|
|
const NO_PHOTO_IMG_SMALL = "image/Admin/cropperNoPhotoSmall.gif";
|
|
|
|
|
|
/**
|
|
* Strona glowna
|
|
*
|
|
*/
|
|
public function IndexAction($param) {
|
|
|
|
if(isset($param['sort']) && isset($param['direction']))
|
|
$this->smarty->assign($param['sort'],$param['direction']);
|
|
else {
|
|
$param['sort'] = "";
|
|
$param['direction'] = "";
|
|
}
|
|
|
|
if(isset($param['sort2']) && isset($param['direction2']))
|
|
$this->smarty->assign($param['sort2'],$param['direction2']);
|
|
else {
|
|
$param['sort2'] = "";
|
|
$param['direction2'] = "";
|
|
}
|
|
|
|
$this->smarty->assign('userList', AdminDAL::GetResult(array(),array(),null,$param['sort'] . " " . $param['direction']));
|
|
|
|
|
|
$this->smarty->assign('archiveUserList', AdminDAL::GetResult(array('archive' => 1),array(),null,$param['sort2'] . " " . $param['direction2']));
|
|
|
|
}
|
|
|
|
public function JoinAction($param)
|
|
{
|
|
if(isset($param['sort']) && isset($param['direction']))
|
|
$this->smarty->assign($param['sort'],$param['direction']);
|
|
else
|
|
{
|
|
$param['sort'] = "";
|
|
$param['direction'] = "";
|
|
}
|
|
$this->smarty->assign('type',$param['type']);
|
|
$this->smarty->assign('ids',Request::Get($param['type']));
|
|
$this->smarty->assign('UserList', AdminDAL::GetResult(array(),array(),null,$param['sort'] . " " . $param['direction']));
|
|
}
|
|
|
|
public function AjaxJoinAction($param)
|
|
{
|
|
|
|
foreach(Request::Get($param['type']) as $key2 => $value2)
|
|
{
|
|
MfLinkDAL::DeleteFromLink($value2, $param['type'], null , 'mf_admin');
|
|
$i = 0;
|
|
foreach(Request::Get('admin') as $key => $value)
|
|
{
|
|
//przypisujemy łączenia
|
|
$mfLinkObj = new MfLink();
|
|
$mfLinkObj->SetIdSource($value2);
|
|
$mfLinkObj->SetSourceType($param['type']);
|
|
$mfLinkObj->SetIdDestination($value);
|
|
$mfLinkObj->SetDestinationType('mf_admin');
|
|
|
|
MfLinkDAL::Insert($mfLinkObj);
|
|
$i++;
|
|
}
|
|
|
|
$className = str_replace('mf_','',$param['type']);
|
|
$className = ucfirst($className);
|
|
$obj = new $className();
|
|
$obj->setId($value2);
|
|
$obj->setAdminCount($i);
|
|
|
|
eval($className . 'DAL::Update($obj);');
|
|
}
|
|
|
|
$this->SetAjaxRender();
|
|
$param['hide']=false;
|
|
$this->content=$this->FormatAjaxOutput(array(),$param);
|
|
}
|
|
|
|
public function AjaxDeleteAction($param)
|
|
{
|
|
|
|
foreach(Request::Get($param['type']) as $key2 => $value2)
|
|
{
|
|
MfLinkDAL::DeleteFromLink($value2, $param['type'], $param['mf_admin'] , 'mf_admin');
|
|
|
|
$this->user->SetForumCount($this->user->GetForumCount()-1);
|
|
AdminDAL::Update($this->user);
|
|
|
|
$className = str_replace('mf_','',$param['type']);
|
|
$className = ucfirst($className);
|
|
$obj = null;
|
|
eval('$obj =' .$className . 'DAL::GetById($value2);');
|
|
$obj->SetAdminCount($obj->GetAdminCount() - 1);
|
|
|
|
eval($className . 'DAL::Update($obj);');
|
|
}
|
|
|
|
$this->SetAjaxRender();
|
|
$param['hide']=false;
|
|
$this->content=$this->FormatAjaxOutput(array(),$param);
|
|
}
|
|
|
|
/**
|
|
* Edycja uzytkownika
|
|
*
|
|
* @param array $param
|
|
*/
|
|
public function EditAction($param) {
|
|
|
|
$url = Router::GenerateUrl('UserList',array('User' => 'Index'));
|
|
|
|
if(Request::IsPost()) {
|
|
|
|
// [login] =>
|
|
// [password] =>
|
|
// [passwordconf] =>
|
|
// [firstName] =>
|
|
// [lastName] =>
|
|
// [email] =>
|
|
// [description] =>
|
|
// [role] => admin
|
|
|
|
$postData = Request::GetAllPost(false);
|
|
|
|
$user = AdminDAL::GetById($postData['id']);
|
|
$user->SetLogin(Request::RemoveXss($postData['login']));
|
|
$user->SetEmail(Request::RemoveXss($postData['email']));
|
|
$user->SetFirstName($postData['firstName']);
|
|
$user->SetLastName($postData['lastName']);
|
|
$user->SetRole($postData['role']);
|
|
$user->SetDescription($postData['description']);
|
|
$pass = trim($postData['password']);
|
|
|
|
|
|
|
|
//if(Request::GetPost('action') == 'submit' ) {
|
|
$validator = new Validator($postData);
|
|
$validator->IsEmpty('login','To pole nie może być puste');
|
|
|
|
|
|
// $validator->IsEmpty('firstName','To pole nie może być puste');
|
|
// $validator->IsEmpty('lastName', 'To pole nie może być puste');
|
|
//$validator->IsEmpty('email', 'To pole nie może być puste');
|
|
//$validator->IsEmpty('role', 'To pole nie może być puste');
|
|
if ($pass && md5($pass) != $user->GetPassword()) {
|
|
$validator->IsEmpty('password','To pole nie może być puste');
|
|
$validator->IsEmpty('passwordconf','To pole nie może być puste');
|
|
if(Request::GetPost('passwordconf') !== Request::GetPost('password')) {
|
|
$validator -> AddError('passwordconfDif', 'Hasła są różne');
|
|
}
|
|
}
|
|
$out = $validator->GetErrorList();
|
|
|
|
|
|
|
|
$user->SetPassword(md5($pass));
|
|
|
|
if(empty($out)) {
|
|
$postData = Request::GetAllPost(false);
|
|
|
|
$userId = AdminDAL::Save($user);
|
|
|
|
|
|
$this->AddRedirectInfo('Edycja przebiegła pomyślnie.');
|
|
|
|
Utils::Redirect($url);
|
|
|
|
|
|
|
|
}else {
|
|
//Utils::ArrayDisplay($out);
|
|
$this->smarty->assign('userData',$user);
|
|
foreach ($out as $item) {
|
|
$error[$item['field']] = $item['msg'];
|
|
}
|
|
$this->smarty->assign('error',$error);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
if(isset($param['id']) && is_numeric($param['id']) ) {
|
|
$user = AdminDAL::GetById($param['id']);
|
|
} else {
|
|
$user = new Admin();
|
|
}
|
|
|
|
$this->smarty->assign('userData', $user );
|
|
$this->smarty->assign('userRole', AdminDAL::GetArrayObjRoles());
|
|
|
|
}
|
|
|
|
public function AjaxEditFormAction($param) {
|
|
|
|
|
|
|
|
$this -> SetAjaxRender(true);
|
|
|
|
if(isset($param['id'])) {
|
|
$id = $param['id'];
|
|
SessionProxy::SetValue('editedUser', AdminDAL::GetById($id));
|
|
} else {
|
|
return;
|
|
}
|
|
|
|
|
|
$url = Router::GenerateUrl(array('_value' => 'user'));
|
|
|
|
if(Request::IsPost()) {
|
|
|
|
if(isset($param['field'])) {
|
|
$out = $this->ValidateEdit($param);
|
|
$param['msg'] = 'Pole zostało zwalidowane';
|
|
$this->content=$this->FormatAjaxOutput($out,$param);
|
|
return;
|
|
}
|
|
|
|
if(Request::GetPost('action') == 'submit' ) {
|
|
$out = $this -> ValidateEdit($param);
|
|
$param['msg'] = 'Twoje zgłoszenie zostało przyjęte';
|
|
|
|
if(empty($out) && Request::GetPost('action') == 'submit' ) {
|
|
$postData = Request::GetAllPost(false);
|
|
$mail = Request::RemoveXss($postData['email']);
|
|
|
|
|
|
$editedUser = AdminDAL::GetById($id);
|
|
|
|
$editedUser->SetEmail(Request::RemoveXss($postData['email']));
|
|
$editedUser->SetFirstName($postData['firstName']);
|
|
$editedUser->SetLastName($postData['lastName']);
|
|
$editedUser->SetRole($postData['role']);
|
|
$editedUser->SetDescription($postData['description']);
|
|
|
|
$photo = SessionProxy::GetValue(self::PHOTO_SESSION_ID);
|
|
if($photo) {
|
|
$obj->SetPhotoSrc($photo);
|
|
SessionProxy::ClearValue(self::PHOTO_SESSION_ID);
|
|
}
|
|
|
|
if(trim(Request::GetPost('password')) != '' && $editedUser->GetPassword() != md5(trim(Request::GetPost('password'))) ) {
|
|
$pass = trim($postData['password']);
|
|
$editedUser->SetPassword(md5($pass));
|
|
}
|
|
|
|
$userId = AdminDAL::Save($editedUser);
|
|
|
|
|
|
// $mailer = new Mailer();
|
|
// $mailer->SendEmail($this->smarty->fetch('partial/Mail/RegisterMail.tpl'), '', 'Rejestracja konta',$postData['email']);
|
|
|
|
$this->AddRedirectInfo('Dodawanie użytkownika przebiegło pomyślnie.');
|
|
|
|
$param['redirect'] = $url;
|
|
|
|
$this->content=$this->FormatAjaxOutput($out,$param);
|
|
|
|
}else {
|
|
$this->content=$this->FormatAjaxOutput($out,$param);
|
|
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
private function ValidateEdit($param) {
|
|
|
|
$validator = new Validator(Request::GetAllPost());
|
|
|
|
$user = SessionProxy::GetValue('editedUser');
|
|
|
|
if(isset($param['field']) && !Request::Check(ereg_replace('((\[)(.*)(\]))','',urldecode($param['field'])))) {
|
|
$validator -> AddError($param['field'], $this->GetDictionary('validator_field'));
|
|
}
|
|
|
|
//e-mail
|
|
if((isset($param['field']) && $param['field'] == 'email') || !isset($param['field']) ) {
|
|
if($user->GetEmail() != Request::GetPost('email') )
|
|
$validator -> IsNotInDatabase('email', $this->GetDictionary('validator_email_exist'), 'email');
|
|
$validator -> IsEmailAddress('email', $this->GetDictionary('validator_email_error'));
|
|
$validator -> IsEmpty('email',$this->GetDictionary('validator_email_empty'));
|
|
}
|
|
|
|
if((isset($param['field']) && $param['field'] == 'password') || !isset($param['field']) ) {
|
|
if(trim(Request::GetPost('password')) != '' ) {
|
|
SessionProxy::SetValue('password',Request::GetPost('password'));
|
|
$validator -> IsEmpty('password',$this->GetDictionary('validator_password_empty'));
|
|
}
|
|
}
|
|
|
|
//potwierdzenie hasła
|
|
if((isset($param['field']) && $param['field'] == 'passwordconf') || !isset($param['field']) ) {
|
|
if(trim(Request::GetPost('passwordconf')) != '' ) {
|
|
|
|
$password = SessionProxy::GetValue('password');
|
|
if(!is_null($password) && Request::GetPost('passwordconf') !== $password && strlen(Request::GetPost('passwordconf')) > 0) {
|
|
$validator -> AddError('passwordconf',$this->GetDictionary('validator_password_different'));
|
|
}
|
|
$validator -> IsEmpty('passwordconf',$this->GetDictionary('validator_password_empty'));
|
|
}
|
|
}
|
|
|
|
// if((isset($param['field']) && $param['field'] == 'education') || !isset($param['field']) ) {
|
|
// $validator -> IsEmpty('education','Nie wybrano wykształcenia','education');
|
|
// }
|
|
|
|
|
|
// $param['submitForm'] = 'walidacja';
|
|
return $validator->GetErrorList();
|
|
}
|
|
|
|
|
|
/**
|
|
* Dodawanie uzytkownika
|
|
*
|
|
* @param array $param
|
|
*/
|
|
public function AddAction($param) {
|
|
|
|
|
|
|
|
|
|
$url = Router::GenerateUrl('UserList',array('User' => 'Index'));
|
|
|
|
//Utils::ArrayDisplay($_POST);
|
|
|
|
if(Request::IsPost()) {
|
|
|
|
// [login] =>
|
|
// [password] =>
|
|
// [passwordconf] =>
|
|
// [firstName] =>
|
|
// [lastName] =>
|
|
// [email] =>
|
|
// [description] =>
|
|
// [role] => admin
|
|
|
|
$postData = Request::GetAllPost(false);
|
|
//if(Request::GetPost('action') == 'submit' ) {
|
|
$validator = new Validator($postData);
|
|
$validator->IsEmpty('login','To pole nie może być puste');
|
|
$validator->IsEmpty('password','To pole nie może być puste');
|
|
$validator->IsEmpty('passwordconf','To pole nie może być puste');
|
|
$validator->IsEmpty('firstName','To pole nie może być puste');
|
|
$validator->IsEmpty('lastName', 'To pole nie może być puste');
|
|
$validator->IsEmpty('email', 'To pole nie może być puste');
|
|
$validator->IsEmpty('role', 'To pole nie może być puste');
|
|
if(Request::GetPost('passwordconf') !== Request::GetPost('password')) {
|
|
$validator -> AddError('passwordconfDif', 'Hasła są róne');
|
|
}
|
|
$out = $validator->GetErrorList();
|
|
|
|
if(empty($out)) {
|
|
$postData = Request::GetAllPost(false);
|
|
$mail = Request::RemoveXss($postData['email']);
|
|
|
|
|
|
$newuser = new Admin();
|
|
$newuser->SetId(-1);
|
|
$newuser->SetLogin(Request::RemoveXss($postData['login']));
|
|
$newuser->SetEmail(Request::RemoveXss($postData['email']));
|
|
$newuser->SetFirstName($postData['firstName']);
|
|
$newuser->SetLastName($postData['lastName']);
|
|
$newuser->SetRole($postData['role']);
|
|
$newuser->SetDescription($postData['description']);
|
|
|
|
$pass = trim($postData['password']);
|
|
$newuser->SetPassword(md5($pass));
|
|
|
|
$userId = AdminDAL::Save($newuser);
|
|
|
|
|
|
$this->AddRedirectInfo('Dodawanie użytkownika przebiegło pomyślnie.');
|
|
|
|
Utils::Redirect($url);
|
|
|
|
|
|
|
|
}else {
|
|
//Utils::ArrayDisplay($out);
|
|
$this->smarty->assign('user',$postData);
|
|
foreach ($out as $item) {
|
|
$error[$item['field']] = $item['msg'];
|
|
}
|
|
$this->smarty->assign('error',$error);
|
|
|
|
}
|
|
|
|
//}
|
|
}
|
|
|
|
|
|
|
|
$this->smarty->assign('userRole', AdminDAL::GetArrayObjRoles());
|
|
|
|
}
|
|
|
|
public function AjaxAddFormAction($param) {
|
|
|
|
$this -> SetAjaxRender(true);
|
|
|
|
|
|
}
|
|
|
|
private function ValidateAdd($param) {
|
|
|
|
$validator = new Validator(Request::GetAllPost());
|
|
if(isset($param['field']) && !Request::Check(ereg_replace('((\[)(.*)(\]))','',urldecode($param['field'])))) {
|
|
$validator -> AddError($param['field'], $this->GetDictionary('validator_field'));
|
|
}
|
|
|
|
//e-mail
|
|
if((isset($param['field']) && $param['field'] == 'email') || !isset($param['field']) ) {
|
|
|
|
$validator -> IsNotInDatabase('email', $this->GetDictionary('validator_email_exist'), 'email');
|
|
$validator -> IsEmailAddress('email', $this->GetDictionary('validator_email_error'));
|
|
$validator -> IsEmpty('email',$this->GetDictionary('validator_email_empty'));
|
|
}
|
|
|
|
if((isset($param['field']) && $param['field'] == 'password') || !isset($param['field']) ) {
|
|
SessionProxy::SetValue('password',Request::GetPost('password'));
|
|
$validator -> IsEmpty('password',$this->GetDictionary('validator_password_empty'));
|
|
}
|
|
|
|
//potwierdzenie hasła
|
|
if((isset($param['field']) && $param['field'] == 'passwordconf') || !isset($param['field']) ) {
|
|
|
|
$password = SessionProxy::GetValue('password');
|
|
if(!is_null($password) && Request::GetPost('passwordconf') !== $password && strlen(Request::GetPost('passwordconf')) > 0) {
|
|
$validator -> AddError('passwordconf',$this->GetDictionary('validator_password_different'));
|
|
}
|
|
$validator -> IsEmpty('passwordconf',$this->GetDictionary('validator_password_empty'));
|
|
|
|
}
|
|
|
|
// if((isset($param['field']) && $param['field'] == 'education') || !isset($param['field']) ) {
|
|
// $validator -> IsEmpty('education','Nie wybrano wykształcenia','education');
|
|
// }
|
|
|
|
|
|
// $param['submitForm'] = 'walidacja';
|
|
return $validator->GetErrorList();
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* Usuwanie uzytkownika
|
|
*
|
|
* @param array $param
|
|
*/
|
|
public function DeleteAction($param) {
|
|
$this->SetAjaxRender(true);
|
|
if(isset($param['ok'])) {
|
|
|
|
$res = null;
|
|
if(isset($param['id'])) {
|
|
$res = AdminDAL::GetById($param['id']);
|
|
} else {
|
|
return;
|
|
}
|
|
|
|
if(is_object($res)) {
|
|
AdminDAL::Delete($res);
|
|
}
|
|
|
|
$this->AddRedirectInfo('Użytkownik został usunięty');
|
|
$this->AddRedirect(Router::GenerateUrl('userIndex', array('User'=>'Index')), 0);
|
|
|
|
} else {
|
|
$buttons = new HtmlButton();
|
|
$buttons->AddButton('popoverAbort', 'button anuluj lbAction', 'Anuluj', null, 'deactivate');
|
|
$buttons->AddButton('popoverOk', 'button zapisz', 'Ok', 'document.location.href=\''.Router::GenerateUrl(array('User'=>'Delete', 'id'=>$param['id'], 'ok'=>'1')).'\';', null);
|
|
$this->content = $this->GeneratePopover('Usuwanie użytkownika', 'usun.gif', 'Czy na pewno chcesz usunąć tego użytkownika?', $buttons->GetElements());
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
* Zmiana hasla
|
|
*
|
|
*/
|
|
public function ChangePasswordAction() {
|
|
$this->AddScript('prototype.js');
|
|
$this->AddScript('scriptaculous.js');
|
|
|
|
$this->partialTemplate = 'Password.tpl';
|
|
$this->smarty->assign('msg', '');
|
|
|
|
if(isset($_POST['oldPassword']) && isset($_POST['newPassword']) && isset($_POST['confirmPassword'])) {
|
|
$admin = AuthDAL::GetAdmin();
|
|
if(AdminDAL::CheckPassword($admin->GetId(), $_POST['oldPassword'])) {
|
|
AdminDAL::UpdatePassword($admin->GetId(), $_POST['newPassword'], $_POST['oldPassword']);
|
|
$this->smarty->assign('msg', 'Hasło zostało zmienione');
|
|
} else {
|
|
$this->smarty->assign('msg', 'Podano nieprawidłowe hasło. Spróbuj ponownie.');
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* Wspolna metoda
|
|
*
|
|
*/
|
|
public function preDispatch($param) {
|
|
$this->RunShared('Auth', $param);
|
|
$this->Run($param);
|
|
$admin = AuthDAL::GetAdmin();
|
|
$this->user = $admin;
|
|
|
|
$this->smarty->assign('titleAdmin', 'Administracja');
|
|
|
|
$panelMenu = ARRAY_PANEL_MENU;
|
|
$struct = $panelMenu['admin'];
|
|
|
|
$this->smarty->assign('structure',$this->renderStruct($struct));
|
|
|
|
}
|
|
|
|
private function renderStruct($struct){
|
|
$return = '';
|
|
|
|
foreach($struct AS $k => $row){
|
|
$return .= '<li><a href="' . Router::GenerateUrl('dictpig',$row).'">'.$k.'</a></li>';
|
|
}
|
|
|
|
$html = '<ul>';
|
|
$html .= $return;
|
|
$html .= '</ul>';
|
|
|
|
|
|
return $html;
|
|
}
|
|
|
|
public function postDispatch($param) {
|
|
|
|
}
|
|
|
|
// cropper
|
|
// cropper //
|
|
|
|
public function AjaxPhotoCropperAction($param) {
|
|
$this->SetAjaxRender();
|
|
|
|
$photoPath = Request::GetPost('photoPath');
|
|
$photoHeight = Request::GetPost('photoHeight');
|
|
$photoWidth = Request::GetPost('photoWidth');
|
|
|
|
$this->smarty->assign('photoWidth', $photoWidth);
|
|
$this->smarty->assign('photoHeight', $photoHeight);
|
|
|
|
$this->smarty->assign('minPhotoWidth', self::CROPPER_MIN_SIZE);
|
|
$this->smarty->assign('minPhotoHeight', self::CROPPER_MIN_SIZE);
|
|
|
|
$this->smarty->assign('noPhotoImgBig', URL_STATIC_CONTENT . URL_DELIMITER . self::NO_PHOTO_IMG_BIG);
|
|
$this->smarty->assign('noPhotoImgSmall', URL_STATIC_CONTENT . URL_DELIMITER . self::NO_PHOTO_IMG_SMALL);
|
|
|
|
$this->smarty->assign('photoPath', Request::GetPost('photoPath'));
|
|
if (isset($param['id'])) {
|
|
$this->smarty->assign('cutUrl', array('user' => 'AjaxPhotoCropped', 'id' => $param['id']));
|
|
} else {
|
|
$this->smarty->assign('cutUrl', array('user' => 'AjaxPhotoCropped'));
|
|
}
|
|
|
|
$this->smarty->assign('fields',
|
|
array(
|
|
0 => array('name'=>'colSize', 'type'=>'radio', 'value'=>1, 'label'=>'pół kolumny', 'options'=>'checked="checked"'),
|
|
1 => array('name'=>'colSize', 'type'=>'radio', 'value'=>2, 'label'=>'cała kolumna', 'options'=>''),
|
|
2 => array('name'=>'colSize', 'type'=>'radio', 'value'=>3, 'label'=>'bez skalowania', 'options'=>''),
|
|
)
|
|
);
|
|
|
|
$this->smarty->assign('uploadUrl', array('user' => 'AjaxPhotoUpload'));
|
|
}
|
|
|
|
public function AjaxPhotoCroppedAction($param) {
|
|
$upload = true;
|
|
$oldPhoto = null;
|
|
|
|
|
|
$redirect = 'self';
|
|
$this->SetAjaxRender();
|
|
|
|
$photoFile = SessionProxy::GetValue(self::PHOTO_SESSION_NAME);
|
|
SessionProxy::ClearValue(self::PHOTO_SESSION_NAME);
|
|
$tmpPhotoArray = array();
|
|
$tmpPhotoArray['name'] = $photoFile . '.' . PhotoDAL::PHOTO_NEW_EXT;
|
|
$tmpPhotoArray['tmp_name'] = Config::Get('PATH_STATIC_CONTENT') . self::GALLERY_TEMP_DIR . DIRECTORY_SEPARATOR . $tmpPhotoArray['name'];
|
|
|
|
$croppSize = SessionProxy::GetValue(self::SIZE_SESSION_NAME);
|
|
SessionProxy::ClearValue(self::SIZE_SESSION_NAME);
|
|
$orgSize = getimagesize($tmpPhotoArray['tmp_name']);
|
|
|
|
$sc = 1;
|
|
if($upload) {
|
|
if($orgSize[0] != $croppSize['w']) {
|
|
$sc = $orgSize[0]/$croppSize['w'];
|
|
}
|
|
} else {
|
|
$cs = getimagesize(Config::Get('PATH_STATIC_CONTENT') . self::GALLERY_TEMP_DIR . DIRECTORY_SEPARATOR . $oldPhoto[0]->GetPhoto('temp') . '.' . PhotoDAL::PHOTO_NEW_EXT);
|
|
if($orgSize[0] != $cs[0]) {
|
|
$sc = $orgSize[0] / $cs[0];
|
|
}
|
|
}
|
|
|
|
$croppArray = array(
|
|
'x' => Request::Get('x') * $sc,
|
|
'y' => Request::Get('y') * $sc,
|
|
'w' => Request::Get('w') * $sc,
|
|
'h' => Request::Get('h') * $sc
|
|
);
|
|
|
|
$destDir = self::GALLERY_DEST_DIR;
|
|
|
|
|
|
$photo = PhotoDAL::ExtSimplePhotoUpload($tmpPhotoArray, $destDir, 'user', null, null, $croppArray);
|
|
|
|
$id = null;
|
|
|
|
// $objPhoto = new Picture();
|
|
// $objPhoto->SetLink($photoFile);
|
|
// $idPhoto = PictureDAL::Insert($objPhoto);
|
|
if (isset($param['id'])) {
|
|
|
|
$admin = AdminDAL::GetById($param['id']);
|
|
$admin->SetPhotoSrc($photoFile);
|
|
AdminDAL::Save($admin);
|
|
|
|
// $articleObj = MfArticleDAL::GetById($param['id']);
|
|
// $articleObj->SetIdPicture($idPhoto);
|
|
// MfArticleDAL::Save($articleObj);
|
|
} else {
|
|
SessionProxy::SetValue(self::PHOTO_SESSION_ID, $photoFile);
|
|
}
|
|
|
|
if(isset($param['id'])) {
|
|
$redirect = Router::GenerateUrl(array('user'=>'Edit', 'id'=>$param['id']));
|
|
} else {
|
|
$redirect = Router::GenerateUrl(array('user'=>'Edit'));
|
|
}
|
|
$this->smarty->assign('photoPath', $photoFile);
|
|
$this->smarty->assign('redirect', null);
|
|
}
|
|
|
|
public function AjaxPhotoUploadAction($param) {
|
|
|
|
$this->SetAjaxRender();
|
|
$photoFile = $_FILES['photo']['tmp_name'];
|
|
$photoSize = getimagesize($photoFile);
|
|
|
|
if ($photoSize[0] < self::PHOTO_ORG_SMALL_SIZE) {
|
|
$error = "Szerokość zdjęcia jest zbyt mała.";
|
|
} else if($photoSize[1] < self::PHOTO_ORG_SMALL_SIZE) {
|
|
$error = "Wysokość zdjęcia jest zbyt mała.";
|
|
} else if (filesize($photoFile) > (self::MAX_PHOTO_ORG_FILE_SIZE*1048576)) {
|
|
$error = "Przekroczony rozmiar zdjęcia(max: " . self::MAX_PHOTO_ORG_FILE_SIZE . "MB).";
|
|
}
|
|
|
|
if (!MimeType::IsImage($_FILES['photo'])) {
|
|
$error = "Podany przez ciebie plik ma niepoprawny format.";
|
|
}
|
|
|
|
if (isset($error)) {
|
|
$this->smarty->assign('error', $error);
|
|
} else {
|
|
|
|
$photoProp = $photoSize[0] / $photoSize[1];
|
|
|
|
$photoWidth = $photoSize[0];
|
|
$photoHeight = $photoSize[1];
|
|
|
|
|
|
if ($photoWidth > self::CROPPER_MAX_SIZE) {
|
|
$photoHeight = self::CROPPER_MAX_SIZE / $photoProp;
|
|
$photoWidth = self::CROPPER_MAX_SIZE;
|
|
}
|
|
|
|
if ($photoHeight > self::CROPPER_MAX_SIZE) {
|
|
$photoWidth = self::CROPPER_MAX_SIZE * $photoProp;
|
|
$photoHeight = self::CROPPER_MAX_SIZE;
|
|
}
|
|
|
|
$newName = md5(time());
|
|
SessionProxy::SetValue(self::PHOTO_SESSION_NAME, $newName);
|
|
SessionProxy::SetValue(self::SIZE_SESSION_NAME, array('w' => $photoWidth, 'h' => $photoHeight));
|
|
|
|
$photoFile = PhotoDAL::ExtSimplePhotoUpload($_FILES['photo'], self::GALLERY_TEMP_DIR , 'gallery_cropp_temporary', $newName, 'temp');
|
|
$photoFile = self::GALLERY_TEMP_DIR . URL_DELIMITER . $photoFile;
|
|
|
|
$this->smarty->assign('page2load', Router::GenerateUrl(array('zdjecia' => 'edycja')));
|
|
$this->smarty->assign('photoFile', $photoFile);
|
|
$this->smarty->assign('photoWidth', (int)$photoWidth);
|
|
$this->smarty->assign('photoHeight', (int)$photoHeight);
|
|
$this->smarty->assign('onFly', (Request::Check('onFly') ? 'true' : 'false'));
|
|
$this->smarty->assign('cropPrefix', Request::GetPost('cropPrefix'));
|
|
}
|
|
}
|
|
|
|
|
|
|
|
}
|
|
?>
|