function __construct() { // adatbáziskapcsolat létrehozása $this->connect = DI::get('connect'); // request objektum $this->request = DI::get('request'); // hozzárendeljük a query tulajdonsághoz a Query objektumot // ez a query tulajdonság a gyerek model-ek bármelyik metódusában elérhető // megkapja paraméterként az adatbáziskapcsolatot $this->query = new Query($this->connect); //default tábla beállítása $this->query->set_default_table($this->table); }
/** * Kijelentkezés */ public function logout() { DI::get('auth')->logout(); // átirányítás a front-oldalra $this->response->redirect(); }
/** * A felhasználó képét tölti fel a szerverre, és készít egy kisebb méretű képet is. * * Ez a metódus kettő XHR kérést dolgoz fel. * Meghívásakor kap egy id nevű paramétert melynek értékei upload vagy crop * upload paraméterrel meghívva: feltölti a kiválasztott képet * crop paraméterrel meghívva: megvágja az eredeti képet és feltölti */ public function client_img_upload() { if ($this->request->is_ajax()) { // feltöltés helye $upload_path = Config::get('clientphoto.upload_path'); if ($this->request->has_params('upload')) { //képkezelő objektum létrehozása (a kép a szerveren a tmp könyvtárba kerül) $image = new Uploader($this->request->getFiles('img')); $tempfilename = 'temp_' . uniqid(); $width = Config::get('clientphoto.width', 150); $image->allowed(array('image/*')); $image->resize($width, null); $image->save($upload_path, $tempfilename); if ($image->checkError()) { $this->response->json(array("status" => 'error', "message" => $image->getError())); } else { $this->response->json(array("status" => 'success', "url" => $upload_path . $image->getDest('filename'), "width" => $image->getDest('width'), "height" => $image->getDest('height'))); } } else { if ($this->request->has_params('crop')) { // a croppic js küldi ezeket a POST adatokat $imgUrl = $this->request->get_post('imgUrl'); // original sizes $imgInitW = $this->request->get_post('imgInitW'); $imgInitH = $this->request->get_post('imgInitH'); // resized sizes //kerekítjük az értéket, mert lebegőpotos számot is kaphatunk és ez hibát okozna a kép generálásakor $imgW = round($this->request->get_post('imgW')); $imgH = round($this->request->get_post('imgH')); // offsets // megadja, hogy mennyit kell vágni a kép felső oldalából $top_crop = $this->request->get_post('imgY1'); // megadja, hogy mennyit kell vágni a kép bal oldalából $left_crop = $this->request->get_post('imgX1'); // crop box $cropW = $this->request->get_post('cropW'); $cropH = $this->request->get_post('cropH'); // rotation angle //$angle = $this->request->get_post('rotation']; //a $right_crop megadja, hogy mennyit kell vágni a kép jobb oldalából $right_crop = $imgW - $left_crop - $cropW; //a $bottom_crop megadja, hogy mennyit kell vágni a kép aljából $bottom_crop = $imgH - $top_crop - $cropH; //képkezelő objektum létrehozása (a feltöltött kép elérése a paraméter) $image = new Uploader($imgUrl); $newfilename = 'client_' . md5(uniqid()); $image->resize($imgW, null); $image->crop(array($top_crop, $right_crop, $bottom_crop, $left_crop)); $image->save($upload_path, $newfilename); if ($image->checkError()) { $this->response->json(array("status" => 'error', "message" => $image->getError())); } else { // temp kép törlése DI::get('file_helper')->delete($imgUrl); $this->response->json(array("status" => 'success', "url" => $upload_path . $image->getDest('filename'))); } } } } //is_ajax }
function __construct() { Session::init(); $this->request = DI::get('request'); $this->response = DI::get('response'); }
/** * Kategória törlése (AJAX) */ public function category_delete() { if ($this->request->is_ajax()) { if (1) { $id = $this->request->get_post('item_id', 'integer'); // a sikeres törlések számát tárolja $success_counter = 0; // a sikertelen törlések számát tárolja $fail_counter = 0; // lekérdezzük a törlendő képek nevét $photo_names_temp = $this->blog_model->selectPictureWhereCategory($id); $photo_names = array(); foreach ($photo_names_temp as $key => $value) { $photo_names[] = $value['picture']; } unset($photo_names_temp); // blogbejegyzések törlése, amik a törlendő kategóriához tartoznak $result = $this->blog_model->deleteWhereCategory($id); // képek törlése if ($result !== false) { if ($result > 0) { // helperek példányosítása $file_helper = DI::get('file_helper'); $url_helper = DI::get('url_helper'); foreach ($photo_names as $value) { $picture_path = Config::get('blogphoto.upload_path') . $value; $thumb_picture_path = $url_helper->thumbPath($picture_path); //képek file törlése $file_helper->delete(array($picture_path, $thumb_picture_path)); } } } // kategória törlése a blog_category táblából $result = $this->blogcategory_model->deleteCategory($id); if ($result !== false) { // ha a törlési sql parancsban nincs hiba if ($result > 0) { $success_counter += $result; } else { //sikertelen törlés $fail_counter++; } } else { // ha a törlési sql parancsban hiba van $this->response->json(array('status' => 'error', 'message_error' => 'Hibas sql parancs: nem sikerult a DELETE lekerdezes az adatbazisbol!')); } // üzenetek visszaadása $respond = array(); $respond['status'] = 'success'; if ($success_counter > 0) { $respond['message_success'] = 'Kategória törölve.'; } if ($fail_counter > 0) { $respond['message_error'] = 'A kategóriát már törölték!'; } // respond tömb visszaadása $this->response->json($respond); } else { $this->response->json(array('status' => 'error', 'message' => 'Nincs engedélye a művelet végrehajtásához!')); } } }
return new \System\Libs\Router(); }); DI::set('request', function ($c) { return new \System\Libs\Request($c['uri'], $c['router']); }); DI::set('response', function () { return new \System\Libs\Response(); }); DI::set('auth', function () { return new \System\Libs\Auth(); }); // helpers --------------- DI::set('file_helper', function () { return new \System\Helper\File(); }); DI::set('str_helper', function () { return new \System\Helper\Str(); }); DI::set('url_helper', function () { return new \System\Helper\Url(); }); DI::set('arr_helper', function () { return new \System\Helper\Arr(); }); /* DI::factory('query', function($c){ return new \System\Libs\Query($c['connect']); }); */ // application objektum példányosítása $application = new Application();
/** * Helperek példányosítása * @param array $helpers */ public function setHelper(array $helpers) { foreach ($helpers as $helper) { if (!isset($this->{$helper})) { $this->{$helper} = DI::get($helper); } } }
private function _loadController() { $router = DI::get('router'); /* **************************************************** */ /* *************** SITE ******************************* */ /* **************************************************** */ if (AREA == 'site') { $router->get('/', 'home@index'); $router->set404('error@index'); } elseif (AREA == 'admin') { $router->mount('/admin', function () use($router) { $router->before('GET|POST', '/?((?!login).)*', function () { if (!Auth::check()) { $response = DI::get('response'); $response->redirect('admin/login'); } }); $router->get('/', 'home@index'); $router->get('/home', 'home@index'); // login logout $router->match('GET|POST', '/login', 'login@index'); $router->get('/login/logout', 'login@logout'); // pages $router->get('/pages', 'pages@index'); $router->match('GET|POST', '/pages/update/:id', 'pages@update', array('id')); // content $router->get('/content', 'content@index'); $router->match('GET|POST', '/content/edit/:id', 'content@edit', array('id')); // user $router->get('/user', 'user@index'); $router->match('GET|POST', '/user/insert', 'user@insert'); $router->match('GET|POST', '/user/profile/:id', 'user@profile', array('id')); $router->post('/user/delete', 'user@delete'); $router->post('/user/change_status', 'user@change_status'); $router->post('/user/user_img_upload/(upload)', 'user@user_img_upload', array('upload')); $router->post('/user/user_img_upload/(crop)', 'user@user_img_upload', array('crop')); $router->match('GET|POST', '/user/user_roles', 'user@user_roles'); $router->match('GET|POST', '/user/edit_roles/:id', 'user@edit_roles', array('id')); // photo gallery $router->get('/photo-gallery', 'photo_gallery@index'); $router->post('/photo-gallery/delete_photo', 'photo_gallery@delete_photo'); $router->post('/photo-gallery/delete_category', 'photo_gallery@delete_category'); $router->match('GET|POST', '/photo-gallery/insert', 'photo_gallery@insert'); $router->match('GET|POST', '/photo-gallery/update/:id', 'photo_gallery@update', array('id')); $router->get('/photo-gallery/category', 'photo_gallery@category'); // slider $router->get('/slider', 'slider@index'); $router->post('/slider/delete', 'slider@delete'); $router->match('GET|POST', '/slider/insert', 'slider@insert'); $router->match('GET|POST', '/slider/update/:id', 'slider@update', array('id')); $router->post('/slider/order', 'slider@order'); // testimonials $router->get('/testimonials', 'testimonials@index'); $router->match('GET|POST', '/testimonials/insert', 'testimonials@insert'); $router->match('GET|POST', '/testimonials/update/:id', 'testimonials@update', array('id')); $router->get('/testimonials/delete/:id', 'testimonials@delete', array('id')); // clients $router->get('/clients', 'clients@index'); $router->post('/clients/client_img_upload/(upload)', 'clients@client_img_upload', array('upload')); $router->post('/clients/client_img_upload/(crop)', 'clients@client_img_upload', array('crop')); $router->post('/clients/delete', 'clients@delete'); $router->match('GET|POST', '/clients/insert', 'clients@insert'); $router->match('GET|POST', '/clients/update/:id', 'clients@update', array('id')); $router->post('/clients/order', 'clients@order'); // file manager $router->get('/file_manager', 'file_manager@index'); // settings $router->match('GET|POST', '/settings', 'settings@index'); // user manual $router->get('/user-manual', 'user_manual@index'); // languages $router->get('/languages', 'languages@index'); $router->post('/languages/save', 'languages@save'); // newsletter $router->get('/newsletter', 'newsletter@index'); $router->get('/newsletter/newsletter_stats', 'newsletter@newsletter_stats'); $router->post('/newsletter/delete', 'newsletter@delete'); $router->match('GET|POST', '/newsletter/insert', 'newsletter@insert'); $router->match('GET|POST', '/newsletter/update/:id', 'newsletter@update', array('id')); // blog $router->get('/blog', 'blog@index'); $router->post('/blog/delete', 'blog@delete'); $router->match('GET|POST', '/blog/insert', 'blog@insert'); $router->match('GET|POST', '/blog/update/:id', 'blog@update', array('id')); $router->get('/blog/category', 'blog@category'); $router->post('/blog/category_insert_update', 'blog@category_insert_update'); $router->post('/blog/category_delete', 'blog@category_delete'); // error $router->set404('error@index'); }); } // dispatcher objektum példányosítása $dispatcher = new \System\Libs\Dispatcher(); // controller névtérének beállítása $dispatcher->setControllerNamespace('System\\' . ucfirst(AREA) . '\\Controller\\'); // before útvonalak bejárása, a megadott elemek futtatása $before_callbacks = $router->runBefore(); $dispatcher->dispatch($before_callbacks); // útvonalak bejárása, controller példányosítása, action indítása $callback = $router->run(); $dispatcher->dispatch($callback); }
/** * Felhasználó engedélyének ellenőrzése a megadott művlethez * * @param string $permission egy művelet neve pl.: delete_user * @param string $target_url egy átirányítási hely, ha nincs engedély * @return void */ public static function hasAccess($permission, $target_url = null) { //$instance = self::instance(); $instance = DI::get('auth'); // !!!! ha nincs a permissions táblában a megadott permission, akkor automatikusan engedélyezve lesz /* if (!$instance->checkPermission($permission)) { return true; } */ // ha még nincsenek lekérdezve a felhasználó permission-jai if (is_null($instance->permissions)) { if (Auth::isUserLoggedIn()) { $role_id = $instance->getRoleId(); $instance->permissions = $role_id == 1 ? '*' : $instance->getRolePerms($role_id); //$instance->permissions = $instance->getRolePerms($role_id); } else { $instance->permissions = array(); } } if ($instance->_checkAccess($permission)) { return true; } else { if (!is_null($target_url)) { $instance->_accessDenied($permission, $target_url); } return false; } }
/** * Slider törlése AJAX-al */ public function delete() { if ($this->request->is_ajax()) { if (Auth::hasAccess('slider.delete')) { // a POST-ban kapott item_id egy tömb $id_arr = $this->request->get_post('item_id'); // a sikeres törlések számát tárolja $success_counter = 0; // a sikeresen törölt id-ket tartalmazó tömb $success_id = array(); // a sikertelen törlések számát tárolja $fail_counter = 0; $file_helper = DI::get('file_helper'); $url_helper = DI::get('url_helper'); // bejárjuk a $id_arr tömböt és minden elemen végrehajtjuk a törlést foreach ($id_arr as $id) { //átalakítjuk a integer-ré a kapott adatot $id = (int) $id; //lekérdezzük a törlendő blog képének a nevét, hogy törölhessük a szerverről $photo_name = $this->slider_model->selectPicture($id); //blog törlése $result = $this->slider_model->delete($id); if ($result !== false) { // ha a törlési sql parancsban nincs hiba if ($result > 0) { //ha van feltöltött képe a bloghoz (az adatbázisban szerepel a file-név) if (!empty($photo_name)) { $picture_path = Config::get('slider.upload_path') . $photo_name; $thumb_picture_path = $url_helper->thumbPath($picture_path); $file_helper->delete(array($picture_path, $thumb_picture_path)); } //sikeres törlés $success_counter += $result; $success_id[] = $id; } else { //sikertelen törlés $fail_counter += 1; } } else { // ha a törlési sql parancsban hiba van $this->response->json(array('status' => 'error', 'message_error' => 'Hibas sql parancs: nem sikerult a DELETE lekerdezes az adatbazisbol!')); } } // üzenetek visszaadása $respond = array(); $respond['status'] = 'success'; if ($success_counter > 0) { $respond['message_success'] = 'A slide törölve.'; } if ($fail_counter > 0) { $respond['message_error'] = 'A slide-ot már töröltek!'; } // respond tömb visszaadása $this->response->json($respond); } else { $this->response->json(array('status' => 'error', 'message' => 'Nincs engedélye a művelet végrehajtásához!')); } } }