public static function unlink($dir, $deleteRootToo = true) { $dir = rtrim($dir, '/'); if (!($dh = @opendir($dir))) { return; } $model_images = new Model_Images(); while (false !== ($obj = readdir($dh))) { if ($obj == '.' || $obj == '..') { continue; } if (!@unlink($dir . '/' . $obj)) { if (is_file($dir . '/' . $obj)) { $model_images->deleteImages($dir . '/' . $obj, true); } self::unlink($dir . '/' . $obj, true); } } closedir($dh); if ($deleteRootToo) { @rmdir($dir); } return; }
public function deleteAction() { $json = array(); $pathp = $this->getRequest()->getPost('path'); if ($pathp !== null) { $path = rtrim($this->upload_folder . str_replace('../', '', $pathp), '/'); if (!file_exists($path)) { $json['error'] = $this->translate('Path not found'); } if (rtrim($path, '/') == rtrim($this->upload_folder, '/')) { $json['error'] = $this->translate('You can not delete the base path'); } } else { $json['error'] = $this->translate('No path is selected'); } if (!isset($json['error'])) { if (is_file($path)) { $images = new Model_Images(); $images->deleteImages($pathp); } elseif (is_dir($path)) { $this->recursiveDelete($path); $cache_folder = $this->upload_folder . DS . 'cache' . $pathp; $this->recursiveDelete($cache_folder); } $json['success'] = $this->translate('Deletion is successful'); } $response = $this->getResponse(); $response->addHeader('Cache-Control: no-cache, must-revalidate'); $response->addHeader('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); $response->addHeader('Content-type: application/json'); $this->setInvokeArg('noViewRenderer', true); echo JO_Json::encode($json); }
public function changeAction() { $request = $this->getRequest(); $collectionID = $request->getRequest('change'); if (!$collectionID || !is_numeric($collectionID)) { return $this->forward('error', 'error404'); } $referer = $request->getServer('HTTP_REFERER'); if ($collectionID) { $collection = Model_Collections::get($collectionID); if (!$collection) { return $this->forward('error', 'error404'); } if (JO_Session::get('user_id') == $collection['user_id']) { if ($request->isPost()) { $model_images = new Model_Images(); $image = $request->getFile('file_upload'); if ($image) { $users_path = '/collections/' . date('Y/m') . '/' . $id . '/'; $upload_folder = realpath(BASE_PATH . '/uploads'); $upload_folder .= $users_path; $upload = new JO_Upload(); $upload->setFile($image)->setExtension(array('.jpg', '.jpeg', '.png', '.gif'))->setUploadDir($upload_folder); $new_name = md5(time() . serialize($image)); if ($upload->upload($new_name)) { $info = $upload->getFileInfo(); if ($info) { $file_path = $users_path . $info['name']; Model_Collections::editImage($collection['id'], $file_path); $model_images->deleteImages($collection['photo']); } else { JO_Session::set('msg_error', $this->translate('There was an unexpected error with uploading the file')); } } } $collection['name'] = $request->getPost('name') ? $request->getPost('name') : $this->translate('Bookmark Collection'); $collection['description'] = $request->getPost('description'); $collection['public'] = $request->getPost('publically_visible') ? 'false' : 'true'; } Model_Collections::edit(array('collection_id' => $collectionID, 'name' => $collection['name'], 'description' => $collection['description'], 'publically_visible' => $collection['public'] == 'false' ? 'true' : 'false')); JO_Session::set('msg_success', 'You have successfully update this collection!'); } } $this->redirect($referer); }
public function editAction() { $request = $this->getRequest(); if (!JO_Session::get('user_id')) { JO_Session::set('msg_error', $this->translate('You must be logged to change your profile')); $redir = WM_Router::create($request->getBaseUrl() . '?controller=users&action=login'); if ($request->getRequest('tool') == 'change_avatar') { die(json_encode(array('logout' => WM_Router::create($request->getBaseUrl() . '?controller=users&action=login')))); } else { $this->redirect($redir); } } $this->getLayout()->meta_title = $this->translate('Edit settings'); $this->getLayout()->meta_description = $this->translate('Edit settings'); if (JO_Session::get('msg_success')) { $this->view->msg_success = JO_Session::get('msg_success'); JO_Session::clear('msg_success'); } elseif (JO_Session::get('msg_error')) { $this->view->error = JO_Session::get('msg_error'); JO_Session::clear('msg_error'); } $tool = $request->getRequest('tool'); $username = JO_Session::get('username'); $this->view->user = Model_Users::getByUserName($username); $this->view->author_header = Helper_Author::authorHeader($this->view->user); $this->view->settings_box = Helper_Author::getSettingsBox($tool); $this->view->crumbs = array(array('name' => $this->translate('Home'), 'href' => $request->getBaseUrl()), array('name' => $this->translate('Profile'), 'href' => WM_Router::create($request->getBaseUrl() . '?controller=users&username='******'name' => $this->translate('Settings'), 'href' => WM_Router::create($request->getBaseUrl() . '?controller=users&action=edit'))); switch ($tool) { case 'change_avatar': $image = $request->getFile('file'); if ($image) { $users_path = '/users/' . JO_Date::getInstance(JO_Session::get('register_datetime'), 'yy/mm') . '/' . JO_Session::get('user_id') . '/'; $upload_folder = realpath(BASE_PATH . '/uploads'); $upload_folder .= $users_path; $upload = new JO_Upload(); $upload->setFile($image)->setExtension(array('.jpg', '.jpeg', '.png', '.gif'))->setUploadDir($upload_folder); $new_name = md5(time() . serialize($image)); if ($upload->upload($new_name)) { $info = $upload->getFileInfo(); if ($info) { $file_path = $users_path . $info['name']; $model_images = new Model_Images(); if (JO_Session::get('avatar')) { $model_images->deleteImages(JO_Session::get('avatar'), true); } $thumb = $model_images->resize($file_path, JO_Registry::forceGet('user_avatar_width'), JO_Registry::forceGet('user_avatar_height'), true); Model_Users::editAvatar(JO_Session::get('user_id'), $file_path); die('{ "avatar": "' . $thumb . '", "msg_success": "' . $this->translate('You have successfully changed your avatar') . '"}'); } else { die('{ "msg_error": "' . $this->translate('There was an unexpected error with uploading the file') . '"}'); } } else { die('{ "msg_error": "' . $this->translate('The file must be valid image') . '" }'); } } break; case 'change_password': if ($request->isPost()) { $s = Model_Users::editPassword(JO_Session::get('user_id'), array('password' => $request->getPost('password'), 'new_password' => $request->getPost('new_password'), 'new_password_confirm' => $request->getPost('new_password_confirm'))); if ($s === true) { $this->session->set('msg_success', $this->translate('You have successfully updated your password')); } else { $this->session->set('msg_error', $s); } $this->redirect(WM_Router::create($this->getRequest()->getBaseUrl() . '?controller=users&action=edit&tool=change_password')); } $this->view->formtitle = $this->translate('Change your password'); $this->view->crumbs[] = array('name' => $this->view->formtitle); $this->view->author_form = $this->view->renderByModule('single_user/change_password', 'users', 'themes'); break; case 'exclusive_author': if ($request->isPost()) { $exclusive_author = $request->getPost('exclusive_author'); Model_Users::editExclusive(JO_Session::get('user_id'), $exclusive_author); if ($exclusive_author == 'true') { JO_Session::set('msg_success', $this->translate('You have successfully changed to exclusive author')); } else { JO_Session::set('msg_success', $this->translate('You have successfully changed to non exclusive author')); } $this->redirect(WM_Router::create($this->getRequest()->getBaseUrl() . '?controller=users&action=edit&tool=exclusive_author')); } if ($this->view->user['exclusive_author'] == 'true') { $this->view->formtitle = $this->translate('Exclusive Author'); $this->view->button = $this->translate('Unsubscribe me as exclusive author'); } else { $this->view->formtitle = $this->translate('Non-Exclusive Author'); $this->view->button = $this->translate('Subscribe me as exclusive author'); } $this->view->top_text = $this->translate('Agreeing to keep your portfolio of items for sale exclusive to the Marketplaces entitles you to a higher percentage of each sale - from 40% to 70%. You can still sell other items elsewhere (on other marketplaces, your own site) however any items you place on an Marketplace must be exclusively sold there.'); $this->view->bottom_text = $this->translate('You can opt-out of the exclusivity program by clicking the button below. You will be given a 30 day grace period wherein the agreement is still observed after which your payments will return to normal and you may commence selling your items elsewhere.'); $this->view->crumbs[] = array('name' => $this->view->formtitle); $this->view->author_form = $this->view->renderByModule('single_user/exclusive_author', 'users', 'themes'); break; case 'sale_license': if ($request->isPost()) { if ($request->getPost('license')) { Model_Users::editLicense(JO_Session::get('user_id'), $request->getPost('license')); JO_Session::set('msg_success', $this->translate('You have successfully changed the license types')); } else { JO_Session::set('msg_error', $this->translate('You have to choose your license')); } $this->redirect(WM_Router::create($this->getRequest()->getBaseUrl() . '?controller=users&action=edit&tool=sale_license')); } $this->view->formtitle = $this->translate('Sale License'); $this->view->crumbs[] = array('name' => $this->view->formtitle); $this->view->license = unserialize($this->view->user['license']); $this->view->author_form = $this->view->renderByModule('single_user/sale_license', 'users', 'themes'); break; case 'social': if ($request->issetParam('sn')) { $sn = (int) $request->getParam('sn'); unset($this->view->user['social'][$sn - 1]); $this->view->user['social'] = array_values($this->view->user['social']); Model_Users::editSocial(JO_Session::get('user_id'), $this->view->user['social']); $this->redirect(WM_Router::create($request->getBaseUrl() . '?controller=users&action=edit&tool=social')); } if ($request->isPost()) { $socials = array(); $errors = array(); $social_links = $request->getPost('social_link'); $social_names = $request->getPost('social_name'); $cnt = count($social_links) < count($social_names) ? count($social_names) : count($social_links); for ($i = 0; $i < $cnt; $i++) { $social_names[$i] = trim($social_names[$i]); $social_links[$i] = trim($social_links[$i]); if (empty($social_names[$i]) && empty($social_links[$i])) { break; } if (empty($social_names[$i])) { $errors[$i]['social_name'] = $this->translate('You must fill the name of the social media'); } if (empty($social_links[$i])) { $errors[$i]['social_link'] = $this->translate('You must fill valid link for your profile'); } $socials[] = array('name' => $social_names[$i], 'href' => $social_links[$i]); } if (empty($errors)) { Model_Users::editSocial(JO_Session::get('user_id'), $socials); JO_Session::set('msg_success', $this->translate('You have successfully changed your social media profiles')); } else { JO_Session::set('msg_error', $errors); $this->session->set('data', $socials); } $this->redirect(WM_Router::create($request->getBaseUrl() . '?controller=users&action=edit&tool=social')); } if ($this->session->issetKey('data')) { $social = $this->session->get('data'); $this->session->clear('data'); if (count($social) > count($this->view->user['social'])) { $last = end($social); $this->view->new_user = $last['name']; $this->view->new_href = $last['href']; } } $this->view->formtitle = $this->translate('Social Media profiles'); $this->view->crumbs[] = array('name' => $this->view->formtitle); $this->view->author_form = $this->view->renderByModule('single_user/social', 'users', 'themes'); break; default: if ($request->isPost()) { $firstname = trim($request->getPost('firstname')); $lastname = trim($request->getPost('lastname')); $email = trim($request->getPost('email')); if (empty($firstname)) { $error['firstname'] = $this->translate('You must fill your firstname'); } if (empty($lastname)) { $error['lastname'] = $this->translate('You must fill your lastname'); } if (empty($email)) { $error['email'] = $this->translate('You must fill your email'); } elseif (!Model_Users::ValidMail($email)) { $this->view->error['email'] = $this->translate('You must fill valid email'); } if ($request->getPost('facebook') == 1) { if ($this->view->user['fb_id'] == 0) { $facebook = new WM_Facebook_Api(array('appId' => JO_Registry::forceGet('facebook_appid'), 'secret' => JO_Registry::forceGet('facebook_secret'))); $fbData = $facebook->api('/me'); $request->setParams('fb_id', $fbData['id']); } else { $request->setParams('fb_id', $this->view->user['fb_id']); } } else { $request->setParams('fb_id', 0); } if (!count($error)) { Model_Users::editPersonal($this->view->user['user_id'], $request->getParams()); JO_Session::set('msg_success', $this->translate('Your personal data has been successfully saved')); } else { JO_Session::set('msg_error', $error); } $this->redirect(WM_Router::create($request->getBaseUrl() . '?controller=users&action=edit')); } $this->view->formtitle = $this->translate('Avatar and Personal Information'); $this->view->crumbs[] = array('name' => $this->view->formtitle); $model_images = new Helper_Images(); if ($this->view->user['avatar']) { $thumb = $model_images->resize($this->view->user['avatar'], JO_Registry::forceGet('user_avatar_width'), JO_Registry::forceGet('user_avatar_height'), true); } else { $this->view->user['avatar'] = 'data/themes/images/noavatar.png'; } $this->view->upl_form_action = WM_Router::create($request->getBaseUrl() . '?controller=users&action=edit&tool=change_avatar'); $this->view->countries = Model_Countries::getCountries(); $this->view->author_form = $this->view->renderByModule('single_user/avatar', 'users', 'themes'); } $this->view->children = array(); $this->view->children['header_part'] = 'layout/header_part'; $this->view->children['footer_part'] = 'layout/footer_part'; }