diff --git a/app/config.php b/app/config.php deleted file mode 100644 index e1c31d3..0000000 --- a/app/config.php +++ /dev/null @@ -1,43 +0,0 @@ -index(); - } else { - ViewController::singleViewByDirectory('messages'); - } - } - - protected abstract function form(); - - protected abstract function filterInputs(); -} diff --git a/app/controllers/ControllerAbstract.php b/app/controllers/ControllerAbstract.php deleted file mode 100644 index 80af313..0000000 --- a/app/controllers/ControllerAbstract.php +++ /dev/null @@ -1,56 +0,0 @@ -read(); - ViewController::view('index'); - } - - protected abstract function read(); - - public function reloadAJAX() { - $this->read(); - ViewController::singleView('data'); - } - - protected function pagination($count) { - $optionsManager = new OptionsManager(); - $optionPaged = $optionsManager->searchByName(OptionConstants::PAGED); - $siteUrl = $optionsManager->getSiteUrl(); - $paged = InputIntegerBuilder::init('paged') - ->setMethod($_GET) - ->build(); - $pagedNow = $paged->filter(); - $rowCount = 0; - - if ($optionPaged !== FALSE) { - $rowCount = $optionPaged->getOptionValue(); - } - - $pagination = new Pagination($pagedNow, $count, $rowCount, $siteUrl); - - if ($pagination->isShowPagination()) { - ViewController::sendViewData('pagination', $pagination); - - return $pagination->getBeginRow() . ',' . $pagination->getRowCount(); - } - - return FALSE; - } - -} diff --git a/app/controllers/Template.php b/app/controllers/Template.php deleted file mode 100644 index bc30ca7..0000000 --- a/app/controllers/Template.php +++ /dev/null @@ -1,33 +0,0 @@ -siteUrl = Router::getSiteURL(); - } - - /** - * @return string - */ - public function getSiteUrl() { - return $this->siteUrl; - } - - public abstract function initRelationship(); -} diff --git a/app/controllers/ThemeControllerAbstract.php b/app/controllers/ThemeControllerAbstract.php deleted file mode 100644 index c941cdf..0000000 --- a/app/controllers/ThemeControllerAbstract.php +++ /dev/null @@ -1,50 +0,0 @@ -read($id); - ViewController::view('index'); - } - - protected abstract function read($id); - - protected function pagination($count) { - $optionsManager = new OptionsManager(); - $optionPaged = $optionsManager->searchByName(OptionConstants::PAGED); - $siteUrl = $optionsManager->getSiteUrl(); - $paged = InputIntegerBuilder::init('paged') - ->setMethod($_GET) - ->build(); - $pagedNow = $paged->filter(); - $rowCount = 0; - - if ($optionPaged !== FALSE) { - $rowCount = $optionPaged->getOptionValue(); - } - - $pagination = new Pagination($pagedNow, $count, $rowCount, $siteUrl); - - if ($pagination->isShowPagination()) { - ViewController::sendViewData('pagination', $pagination); - - return $pagination->getBeginRow() . ',' . $pagination->getRowCount(); - } - - return FALSE; - } -} diff --git a/app/controllers/ViewController.php b/app/controllers/ViewController.php index aa02849..13bb265 100644 --- a/app/controllers/ViewController.php +++ b/app/controllers/ViewController.php @@ -6,7 +6,6 @@ namespace SoftnCMS\controllers; use SoftnCMS\route\Route; -use SoftnCMS\rute\Router; use SoftnCMS\util\Arrays; use SoftnCMS\util\Logger; @@ -40,6 +39,12 @@ class ViewController { /** @var \Closure */ private static $VIEW_DATA_BASE_CLOSURE; + /** @var string */ + private static $SITE_URL; + + /** @var string Directorio del controlador actual. */ + private static $CURRENT_DIRECTORY; + /** * @param string $viewPath */ @@ -47,6 +52,20 @@ public static function setViewPath($viewPath) { self::$VIEW_PATH = $viewPath; } + /** + * @param string $siteUrl + */ + public static function setSiteUrl($siteUrl) { + self::$SITE_URL = $siteUrl; + } + + /** + * @param string $currentDirectory + */ + public static function setCurrentDirectory($currentDirectory) { + self::$CURRENT_DIRECTORY = $currentDirectory; + } + /** * @param string $directoryViews */ @@ -75,6 +94,16 @@ public static function view($fileName) { self::$VIEW_DATA = []; } + private static function callViewDataBase() { + if (is_callable(self::$VIEW_DATA_BASE_CLOSURE)) { + $data = call_user_func(self::$VIEW_DATA_BASE_CLOSURE); + + if (is_array($data)) { + self::$VIEW_DATA = array_merge($data, self::$VIEW_DATA); + } + } + } + private static function getControllerViewPath($fileName) { return self::getPath($fileName, self::$DIRECTORY_VIEWS, self::$DIRECTORY_VIEWS_CONTROLLER); } @@ -216,7 +245,7 @@ public static function registerScript($scriptName) { } public static function registerScriptRoute($scriptRute) { - $scriptRute = Router::getSiteURL() . $scriptRute; + $scriptRute = self::$SITE_URL . $scriptRute; if (Arrays::valueExists(self::$VIEW_SCRIPTS, $scriptRute) === FALSE) { self::$VIEW_SCRIPTS[] = $scriptRute; @@ -231,7 +260,7 @@ private static function getPathResources($type, $fileName) { } private static function getPathTheme() { - if (Router::getCurrentDirectory() == Route::CONTROLLER_DIRECTORY_NAME_THEME) { + if (self::$CURRENT_DIRECTORY == Route::CONTROLLER_DIRECTORY_NAME_THEME) { //$DIRECTORY_VIEWS contiene el nombre del tema. return '/themes/' . self::$DIRECTORY_VIEWS; } @@ -244,7 +273,7 @@ public static function registerStyle($styleName) { } public static function registerStyleRoute($styleRute) { - $styleRute = Router::getSiteURL() . $styleRute; + $styleRute = self::$SITE_URL . $styleRute; if (Arrays::valueExists(self::$VIEW_STYLES, $styleRute) === FALSE) { self::$VIEW_STYLES[] = $styleRute; @@ -260,14 +289,4 @@ public static function registerStyleRoute($styleRute) { public static function setViewDataBase($closure) { self::$VIEW_DATA_BASE_CLOSURE = $closure; } - - private static function callViewDataBase() { - if (is_callable(self::$VIEW_DATA_BASE_CLOSURE)) { - $data = call_user_func(self::$VIEW_DATA_BASE_CLOSURE); - - if (is_array($data)) { - self::$VIEW_DATA = array_merge($data, self::$VIEW_DATA); - } - } - } } diff --git a/app/controllers/admin/CategoryController.php b/app/controllers/admin/CategoryController.php index 721814a..db76b1c 100644 --- a/app/controllers/admin/CategoryController.php +++ b/app/controllers/admin/CategoryController.php @@ -6,130 +6,125 @@ namespace SoftnCMS\controllers\admin; use SoftnCMS\classes\constants\Constants; -use SoftnCMS\controllers\CUDControllerAbstract; -use SoftnCMS\controllers\ViewController; use SoftnCMS\models\managers\CategoriesManager; use SoftnCMS\models\tables\Category; -use SoftnCMS\rute\Router; -use SoftnCMS\util\Arrays; +use SoftnCMS\util\controller\ControllerAbstract; use SoftnCMS\util\form\builders\InputAlphanumericBuilder; use SoftnCMS\util\form\builders\InputIntegerBuilder; -use SoftnCMS\util\form\Form; use SoftnCMS\util\Messages; -use SoftnCMS\util\Util; +use SoftnCMS\util\Token; /** * Class CategoryController * @author Nicolás Marulanda P. */ -class CategoryController extends CUDControllerAbstract { +class CategoryController extends ControllerAbstract { public function create() { - if (Form::submit(Constants::FORM_CREATE)) { - $form = $this->form(); - - if (!empty($form)) { - $categoriesManager = new CategoriesManager(); - $category = Arrays::get($form, 'category'); + if ($this->checkSubmit(Constants::FORM_CREATE)) { + if ($this->isValidForm()) { + $categoriesManager = new CategoriesManager($this->getConnectionDB()); + $category = $this->getForm('category'); if ($categoriesManager->create($category)) { Messages::addSuccess(__('Categoría publicada correctamente.'), TRUE); - Util::redirect(Router::getSiteURL() . 'admin/category'); + $this->redirectToAction('index'); } } Messages::addDanger(__('Error al publicar la categoría.')); } - ViewController::sendViewData('isUpdate', FALSE); - ViewController::sendViewData('category', new Category()); - ViewController::sendViewData('title', __('Publicar nueva categoría')); - ViewController::view('form'); - } - - protected function form() { - $inputs = $this->filterInputs(); - - if (empty($inputs)) { - return FALSE; - } - - $category = new Category(); - $category->setId(Arrays::get($inputs, CategoriesManager::COLUMN_ID)); - $category->setCategoryName(Arrays::get($inputs, CategoriesManager::CATEGORY_NAME)); - $category->setCategoryDescription(Arrays::get($inputs, CategoriesManager::CATEGORY_DESCRIPTION)); - $category->setCategoryPostCount(NULL); - - if (Form::submit(Constants::FORM_CREATE)) { - $category->setCategoryPostCount(0); - } - - return ['category' => $category]; - } - - protected function filterInputs() { - Form::setInput([ - InputIntegerBuilder::init(CategoriesManager::COLUMN_ID) - ->build(), - InputAlphanumericBuilder::init(CategoriesManager::CATEGORY_NAME) - ->build(), - InputAlphanumericBuilder::init(CategoriesManager::CATEGORY_DESCRIPTION) - ->setRequire(FALSE) - ->build(), + $this->sendDataView([ + 'isUpdate' => FALSE, + 'category' => new Category(), + 'title' => __('Publicar nueva categoría'), ]); - return Form::inputFilter(); + $this->view('form'); } public function update($id) { - $categoriesManager = new CategoriesManager(); + $categoriesManager = new CategoriesManager($this->getConnectionDB()); $category = $categoriesManager->searchById($id); if (empty($category)) { Messages::addDanger(__('La categoría no existe.'), TRUE); - Util::redirect(Router::getSiteURL(), 'admin/category'); - } else { - if (Form::submit(Constants::FORM_UPDATE)) { - $form = $this->form(); + $this->redirectToAction('index'); + } elseif ($this->checkSubmit(Constants::FORM_UPDATE)) { + if ($this->isValidForm()) { + $category = $this->getForm('category'); - if (empty($form)) { - Messages::addDanger(__('Error en los campos de la categoría.')); + if ($categoriesManager->update($category)) { + Messages::addSuccess(__('Categoría actualizada correctamente.')); } else { - $category = Arrays::get($form, 'category'); - - if ($categoriesManager->update($category)) { - Messages::addSuccess(__('Categoría actualizada correctamente.')); - } else { - Messages::addDanger(__('Error al actualizar la categoría.')); - } + Messages::addDanger(__('Error al actualizar la categoría.')); } + } else { + Messages::addDanger(__('Error en los campos de la categoría.')); } - - ViewController::sendViewData('isUpdate', TRUE); - ViewController::sendViewData('category', $category); - ViewController::sendViewData('title', __('Actualizar categoría')); - ViewController::view('form'); } + + $this->sendDataView([ + 'isUpdate' => TRUE, + 'category' => $category, + 'title' => __('Actualizar categoría'), + ]); + $this->view('form'); } public function delete($id) { - $categoriesManager = new CategoriesManager(); - - if (empty($categoriesManager->deleteById($id))) { - Messages::addDanger(__('Error al borrar la categoría.')); - } else { - Messages::addSuccess(__('Categoría borrada correctamente.')); + if (Token::check()) { + $categoriesManager = new CategoriesManager($this->getConnectionDB()); + $result = $categoriesManager->deleteById($id); + $rowCount = $categoriesManager->getRowCount(); + + if ($rowCount == 0) { + Messages::addWarning(__('La categoría no existe.'), TRUE); + } elseif ($result) { + Messages::addSuccess(__('Categoría borrada correctamente.'), TRUE); + } else { + Messages::addDanger(__('Error al borrar la categoría.'), TRUE); + } } - parent::delete($id); + $this->redirectToAction('index'); } - protected function read() { - $categoriesManager = new CategoriesManager(); + public function index() { + $categoriesManager = new CategoriesManager($this->getConnectionDB()); $count = $categoriesManager->count(); - $limit = parent::pagination($count); - ViewController::sendViewData('categories', $categoriesManager->searchAll($limit)); + $this->sendDataView([ + 'categories' => $categoriesManager->searchAll($this->rowsPages($count)), + ]); + $this->view(); + } + + protected function formToObject() { + $category = new Category(); + $category->setId($this->getInput(CategoriesManager::COLUMN_ID)); + $category->setCategoryName($this->getInput(CategoriesManager::CATEGORY_NAME)); + $category->setCategoryDescription($this->getInput(CategoriesManager::CATEGORY_DESCRIPTION)); + $category->setCategoryPostCount(NULL); + + if ($this->checkSubmit(Constants::FORM_CREATE)) { + $category->setCategoryPostCount(0); + } + + return ['category' => $category]; + } + + protected function formInputsBuilders() { + return [ + InputIntegerBuilder::init(CategoriesManager::COLUMN_ID) + ->build(), + InputAlphanumericBuilder::init(CategoriesManager::CATEGORY_NAME) + ->build(), + InputAlphanumericBuilder::init(CategoriesManager::CATEGORY_DESCRIPTION) + ->setRequire(FALSE) + ->build(), + ]; } } diff --git a/app/controllers/admin/CommentController.php b/app/controllers/admin/CommentController.php index ccb7ce4..4c28c9a 100644 --- a/app/controllers/admin/CommentController.php +++ b/app/controllers/admin/CommentController.php @@ -6,41 +6,35 @@ namespace SoftnCMS\controllers\admin; use SoftnCMS\classes\constants\Constants; -use SoftnCMS\controllers\CUDControllerAbstract; -use SoftnCMS\controllers\ViewController; use SoftnCMS\models\managers\CommentsManager; use SoftnCMS\models\managers\LoginManager; -use SoftnCMS\models\managers\OptionsManager; use SoftnCMS\models\managers\UsersManager; use SoftnCMS\models\tables\Comment; -use SoftnCMS\util\Arrays; +use SoftnCMS\util\controller\ControllerAbstract; use SoftnCMS\util\form\builders\InputAlphanumericBuilder; use SoftnCMS\util\form\builders\InputBooleanBuilder; use SoftnCMS\util\form\builders\InputEmailBuilder; use SoftnCMS\util\form\builders\InputHtmlBuilder; use SoftnCMS\util\form\builders\InputIntegerBuilder; -use SoftnCMS\util\form\Form; use SoftnCMS\util\Messages; +use SoftnCMS\util\Token; use SoftnCMS\util\Util; /** * Class CommentController * @author Nicolás Marulanda P. */ -class CommentController extends CUDControllerAbstract { +class CommentController extends ControllerAbstract { public function create() { - if (Form::submit(Constants::FORM_CREATE)) { - $form = $this->form(); - - if (!empty($form)) { - $commentsManager = new CommentsManager(); - $comment = Arrays::get($form, 'comment'); + if ($this->checkSubmit(Constants::FORM_CREATE)) { + if ($this->isValidForm()) { + $commentsManager = new CommentsManager($this->getConnectionDB()); + $comment = $this->getForm('comment'); if ($commentsManager->create($comment)) { Messages::addSuccess(__('Comentario publicado correctamente.'), TRUE); - $optionsManager = new OptionsManager(); - Util::redirect($optionsManager->getSiteUrl() . 'admin/comment'); + $this->redirectToAction('index'); } } @@ -48,25 +42,79 @@ public function create() { } $comment = new Comment(); - $comment->setCommentUserId(LoginManager::getSession()); - ViewController::sendViewData('isUpdate', FALSE); - ViewController::sendViewData('comment', $comment); - ViewController::sendViewData('title', __('Publicar nuevo comentario')); - ViewController::view('form'); + $comment->setCommentUserId(LoginManager::getUserId()); + $this->sendDataView([ + 'isUpdate' => FALSE, + 'comment' => $comment, + 'title' => __('Publicar nuevo comentario'), + ]); + $this->view('form'); } - protected function form() { - $inputs = $this->filterInputs(); + public function update($id) { + $commentsManager = new CommentsManager($this->getConnectionDB()); + $comment = $commentsManager->searchById($id); - if (empty($inputs)) { - return FALSE; + if (empty($comment)) { + Messages::addDanger(__('El comentario no existe.'), TRUE); + $this->redirectToAction('index'); + } elseif ($this->checkSubmit(Constants::FORM_UPDATE)) { + if ($this->isValidForm()) { + $comment = $this->getForm('comment'); + + if ($commentsManager->updateByColumnId($comment)) { + Messages::addSuccess(__('Comentario actualizado correctamente.')); + $comment = $commentsManager->searchById($comment->getId()); + } else { + Messages::addDanger(__('Error al actualizar el comentario.')); + } + } else { + Messages::addDanger(__('Error en los campos del comentario.')); + } } - $userId = Arrays::get($inputs, CommentsManager::COMMENT_USER_ID); + $this->sendDataView([ + 'isUpdate' => TRUE, + 'comment' => $comment, + 'title' => __('Actualizar comentario'), + ]); + $this->view('form'); + } + + public function delete($id) { + if (Token::check()) { + $commentsManager = new CommentsManager($this->getConnectionDB()); + $result = $commentsManager->deleteById($id); + $rowCount = $commentsManager->getRowCount(); + + if ($rowCount === 0) { + Messages::addWarning(__("El comentario no existe."), TRUE); + } elseif ($result) { + Messages::addSuccess(__('Comentario borrado correctamente.'), TRUE); + } else { + Messages::addDanger(__('Error al borrar el comentario.'), TRUE); + } + } + + $this->redirectToAction('index'); + } + + public function index() { + $commentsManager = new CommentsManager($this->getConnectionDB()); + $count = $commentsManager->count(); + + $this->sendDataView([ + 'comments' => $commentsManager->searchAll($this->rowsPages($count)), + ]); + $this->view(); + } + + protected function formToObject() { + $userId = $this->getInput(CommentsManager::COMMENT_USER_ID); $comment = new Comment(); - $comment->setId(Arrays::get($inputs, CommentsManager::COLUMN_ID)); - $comment->setCommentStatus(Arrays::get($inputs, CommentsManager::COMMENT_STATUS)); - $comment->setCommentContents(Arrays::get($inputs, CommentsManager::COMMENT_CONTENTS)); + $comment->setId($this->getInput(CommentsManager::COLUMN_ID)); + $comment->setCommentStatus($this->getInput(CommentsManager::COMMENT_STATUS)); + $comment->setCommentContents($this->getInput(CommentsManager::COMMENT_CONTENTS)); $comment->setPostId(NULL); $comment->setCommentAuthor(NULL); $comment->setCommentAuthorEmail(NULL); @@ -74,25 +122,25 @@ protected function form() { $comment->setCommentUserId(NULL); if (empty($userId)) { - $comment->setCommentAuthor(Arrays::get($inputs, CommentsManager::COMMENT_AUTHOR)); - $comment->setCommentAuthorEmail(Arrays::get($inputs, CommentsManager::COMMENT_AUTHOR_EMAIL)); + $comment->setCommentAuthor($this->getInput(CommentsManager::COMMENT_AUTHOR)); + $comment->setCommentAuthorEmail($this->getInput(CommentsManager::COMMENT_AUTHOR_EMAIL)); } - if (Form::submit(Constants::FORM_CREATE)) { - $usersManager = new UsersManager(); - $user = $usersManager->searchById(LoginManager::getSession()); + if ($this->checkSubmit(Constants::FORM_CREATE)) { + $usersManager = new UsersManager($this->getConnectionDB()); + $user = $usersManager->searchById(LoginManager::getUserId()); $comment->setCommentAuthor($user->getUserName()); $comment->setCommentAuthorEmail($user->getUserEmail()); $comment->setCommentUserId($user->getId()); $comment->setCommentDate(Util::dateNow()); - $comment->setPostId(Arrays::get($inputs, CommentsManager::POST_ID)); + $comment->setPostId($this->getInput(CommentsManager::POST_ID)); } return ['comment' => $comment]; } - protected function filterInputs() { - Form::setInput([ + protected function formInputsBuilders() { + return [ InputAlphanumericBuilder::init(CommentsManager::COMMENT_AUTHOR) ->setRequire(FALSE) ->build(), @@ -109,62 +157,7 @@ protected function filterInputs() { ->build(), InputHtmlBuilder::init(CommentsManager::COMMENT_CONTENTS) ->build(), - ]); - - return Form::inputFilter(); - } - - public function update($id) { - $commentsManager = new CommentsManager(); - $comment = $commentsManager->searchById($id); - - if (empty($comment)) { - $optionsManager = new OptionsManager(); - Messages::addDanger(__('El comentario no existe.'), TRUE); - Util::redirect($optionsManager->getSiteUrl() . 'admin/comment'); - } else { - if (Form::submit(Constants::FORM_UPDATE)) { - $form = $this->form(); - - if (empty($form)) { - Messages::addDanger(__('Error en los campos del comentario.')); - } else { - $comment = Arrays::get($form, 'comment'); - - if ($commentsManager->updateByColumnId($comment)) { - Messages::addSuccess(__('Comentario actualizado correctamente.')); - $comment = $commentsManager->searchById($comment->getId()); - } else { - Messages::addDanger(__('Error al actualizar el comentario.')); - } - } - } - - ViewController::sendViewData('isUpdate', TRUE); - ViewController::sendViewData('comment', $comment); - ViewController::sendViewData('title', __('Actualizar comentario')); - ViewController::view('form'); - } - } - - public function delete($id) { - $commentsManager = new CommentsManager(); - - if (empty($commentsManager->deleteById($id))) { - Messages::addDanger(__('Error al borrar el comentario.')); - } else { - Messages::addSuccess(__('Comentario borrado correctamente.')); - } - - parent::delete($id); - } - - protected function read() { - $commentsManager = new CommentsManager(); - $count = $commentsManager->count(); - $limit = parent::pagination($count); - - ViewController::sendViewData('comments', $commentsManager->searchAll($limit)); + ]; } } diff --git a/app/controllers/admin/IndexController.php b/app/controllers/admin/IndexController.php index e4fefff..7ae86be 100644 --- a/app/controllers/admin/IndexController.php +++ b/app/controllers/admin/IndexController.php @@ -5,8 +5,6 @@ namespace SoftnCMS\controllers\admin; -use SoftnCMS\controllers\ControllerAbstract; -use SoftnCMS\controllers\ViewController; use SoftnCMS\models\managers\CategoriesManager; use SoftnCMS\models\managers\CommentsManager; use SoftnCMS\models\managers\PagesManager; @@ -16,6 +14,7 @@ use SoftnCMS\models\tables\Comment; use SoftnCMS\models\tables\Post; use SoftnCMS\util\Arrays; +use SoftnCMS\util\controller\ControllerAbstract; use SoftnCMS\util\Sanitize; use SoftnCMS\util\Util; @@ -26,17 +25,12 @@ class IndexController extends ControllerAbstract { public function index() { - $this->read(); - ViewController::view('index'); - } - - protected function read() { - $postsManager = new PostsManager(); - $commentsManager = new CommentsManager(); - $categoriesManager = new CategoriesManager(); - $termsManager = new TermsManager(); - $usersManager = new UsersManager(); - $pagesManager = new PagesManager(); + $postsManager = new PostsManager($this->getConnectionDB()); + $commentsManager = new CommentsManager($this->getConnectionDB()); + $categoriesManager = new CategoriesManager($this->getConnectionDB()); + $termsManager = new TermsManager($this->getConnectionDB()); + $usersManager = new UsersManager($this->getConnectionDB()); + $pagesManager = new PagesManager($this->getConnectionDB()); $posts = $postsManager->searchAll(5); $comments = $commentsManager->searchAll(5); @@ -64,14 +58,17 @@ protected function read() { return $comment; }, $comments); - ViewController::sendViewData('posts', $posts); - ViewController::sendViewData('comments', $comments); - ViewController::sendViewData('countPosts', $postsManager->count()); - ViewController::sendViewData('countComments', $commentsManager->count()); - ViewController::sendViewData('countCategories', $categoriesManager->count()); - ViewController::sendViewData('countTerms', $termsManager->count()); - ViewController::sendViewData('countUsers', $usersManager->count()); - ViewController::sendViewData('countPages', $pagesManager->count()); + $this->sendDataView([ + 'posts' => $posts, + 'comments' => $comments, + 'countPosts' => $postsManager->count(), + 'countComments' => $commentsManager->count(), + 'countCategories' => $categoriesManager->count(), + 'countTerms' => $termsManager->count(), + 'countUsers' => $usersManager->count(), + 'countPages' => $pagesManager->count(), + ]); + $this->view('index'); } public function apiGitHub() { @@ -89,11 +86,13 @@ public function apiGitHub() { return $value['commitDate']; }, $commitsDevelop); - ViewController::sendViewData('lastUpdateMaster', array_shift($lastUpdateMaster)); - ViewController::sendViewData('lastUpdateDevelop', array_shift($lastUpdateDevelop)); - ViewController::sendViewData('master', $commitsMaster); - ViewController::sendViewData('develop', $commitsDevelop); - ViewController::singleView('apigithub'); + $this->sendDataView([ + 'lastUpdateMaster' => array_shift($lastUpdateMaster), + 'lastUpdateDevelop' => array_shift($lastUpdateDevelop), + 'master' => $commitsMaster, + 'develop' => $commitsDevelop, + ]); + $this->singleView('apigithub'); } } diff --git a/app/controllers/admin/LicenseController.php b/app/controllers/admin/LicenseController.php index 236bbd8..c966034 100644 --- a/app/controllers/admin/LicenseController.php +++ b/app/controllers/admin/LicenseController.php @@ -6,41 +6,36 @@ namespace SoftnCMS\controllers\admin; use SoftnCMS\classes\constants\Constants; -use SoftnCMS\controllers\CUDControllerAbstract; -use SoftnCMS\controllers\ViewController; use SoftnCMS\models\managers\LicensesManager; use SoftnCMS\models\managers\ProfilesLicensesManager; use SoftnCMS\models\managers\ProfilesManager; use SoftnCMS\models\tables\License; use SoftnCMS\models\tables\ProfileLicense; -use SoftnCMS\rute\Router; use SoftnCMS\util\Arrays; +use SoftnCMS\util\controller\ControllerAbstract; use SoftnCMS\util\form\builders\InputAlphanumericBuilder; use SoftnCMS\util\form\builders\InputIntegerBuilder; use SoftnCMS\util\form\builders\InputListIntegerBuilder; -use SoftnCMS\util\form\Form; use SoftnCMS\util\Messages; -use SoftnCMS\util\Util; +use SoftnCMS\util\Token; /** * Class LicenseController * @author Nicolás Marulanda P. */ -class LicenseController extends CUDControllerAbstract { +class LicenseController extends ControllerAbstract { public function create() { - if (Form::submit(Constants::FORM_CREATE)) { - $form = $this->form(); - - if (!empty($form)) { - $licensesManager = new LicensesManager(); - $license = Arrays::get($form, 'license'); + if ($this->checkSubmit(Constants::FORM_CREATE)) { + if ($this->isValidForm()) { + $licensesManager = new LicensesManager($this->getConnectionDB()); + $license = $this->getForm('license'); if ($licensesManager->create($license)) { - $profiles = Arrays::get($form, 'profiles'); + $profiles = $this->getForm('profiles'); $this->createOrDeleteProfiles($profiles, $licensesManager->getLastInsertId()); Messages::addSuccess(__('Permiso creado correctamente.')); - Util::redirect(Router::getSiteURL() . 'admin/license'); + $this->redirectToAction('index'); } } @@ -48,50 +43,16 @@ public function create() { } $this->sendViewProfiles(); - ViewController::sendViewData('isUpdate', FALSE); - ViewController::sendViewData('license', new License()); - ViewController::sendViewData('title', __('Crear nuevo permiso')); - ViewController::view('form'); - } - - protected function form() { - $inputs = $this->filterInputs(); - - if (empty($inputs)) { - return FALSE; - } - - $license = new License(); - $profiles = Arrays::get($inputs, ProfilesLicensesManager::PROFILE_ID); - $license->setId(Arrays::get($inputs, LicensesManager::COLUMN_ID)); - $license->setLicenseName(Arrays::get($inputs, LicensesManager::LICENSE_NAME)); - $license->setLicenseDescription(Arrays::get($inputs, LicensesManager::LICENSE_DESCRIPTION)); - - return [ - 'license' => $license, - 'profiles' => $profiles, - ]; - } - - protected function filterInputs() { - Form::setInput([ - InputIntegerBuilder::init(LicensesManager::COLUMN_ID) - ->build(), - InputAlphanumericBuilder::init(LicensesManager::LICENSE_NAME) - ->setSpecialChar(TRUE) - ->build(), - InputAlphanumericBuilder::init(LicensesManager::LICENSE_DESCRIPTION) - ->setRequire(FALSE) - ->build(), - InputListIntegerBuilder::init(ProfilesLicensesManager::PROFILE_ID) - ->build(), + $this->sendDataView([ + 'isUpdate' => FALSE, + 'license' => new License(), + 'title' => __('Crear nuevo permiso'), ]); - - return Form::inputFilter(); + $this->view('form'); } private function createOrDeleteProfiles($profilesId, $licenseId) { - $profilesLicensesManager = new ProfilesLicensesManager(); + $profilesLicensesManager = new ProfilesLicensesManager($this->getConnectionDB()); if (empty($profilesId)) { if ($profilesLicensesManager->deleteAllByLicenseId($licenseId) === FALSE) { @@ -134,7 +95,7 @@ private function createOrDeleteProfiles($profilesId, $licenseId) { } private function getProfilesIdByLicenseId($licenseId) { - $licensesProfilesManager = new ProfilesLicensesManager(); + $licensesProfilesManager = new ProfilesLicensesManager($this->getConnectionDB()); $licenseProfiles = $licensesProfilesManager->searchAllByLicenseId($licenseId); return array_map(function(ProfileLicense $profileLicense) { @@ -143,61 +104,98 @@ private function getProfilesIdByLicenseId($licenseId) { } private function sendViewProfiles() { - $profilesManager = new ProfilesManager(); - ViewController::sendViewData('profiles', $profilesManager->searchAll()); + $profilesManager = new ProfilesManager($this->getConnectionDB()); + $this->sendDataView(['profiles' => $profilesManager->searchAll()]); } public function update($id) { - $licensesManager = new LicensesManager(); + $licensesManager = new LicensesManager($this->getConnectionDB()); $license = $licensesManager->searchById($id); if (empty($license)) { Messages::addDanger(__('El permiso no existe.'), TRUE); - Util::redirect(Router::getSiteURL() . 'admin/license'); - } elseif (Form::submit(Constants::FORM_UPDATE)) { - $form = $this->form(); - - if (empty($form)) { - Messages::addDanger(__('Error en los campos del permiso.')); - } else { - $license = Arrays::get($form, 'license'); + $this->redirectToAction('index'); + } elseif ($this->checkSubmit(Constants::FORM_UPDATE)) { + if ($this->isValidForm()) { + $license = $this->getForm('license'); - if ($licensesManager->updateByColumnId($license)) { + if ($licensesManager->update($license)) { $license = $licensesManager->searchById($id); - $profiles = Arrays::get($form, 'profiles'); + $profiles = $this->getForm('profiles'); $this->createOrDeleteProfiles($profiles, $id); Messages::addSuccess(__('Permiso actualizado correctamente.')); } else { Messages::addDanger(__('Error al actualizar el permiso.')); } + } else { + Messages::addDanger(__('Error en los campos del permiso.')); } } $this->sendViewProfiles(); - ViewController::sendViewData('isUpdate', TRUE); - ViewController::sendViewData('selectedProfilesId', $this->getProfilesIdByLicenseId($id)); - ViewController::sendViewData('license', $license); - ViewController::sendViewData('title', __('Actualizar permiso')); - ViewController::view('form'); + $this->sendDataView([ + 'isUpdate' => TRUE, + 'selectedProfilesId' => $this->getProfilesIdByLicenseId($id), + 'license' => $license, + 'title' => __('Actualizar permiso'), + ]); + $this->view('form'); } public function delete($id) { - $licensesManager = new LicensesManager(); - - if (empty($licensesManager->deleteById($id))) { - Messages::addDanger(__('Error al borrar el permiso.')); - } else { - Messages::addSuccess(__('Permiso borrado correctamente.')); + if (Token::check()) { + $licensesManager = new LicensesManager($this->getConnectionDB()); + $result = $licensesManager->deleteById($id); + $rowCount = $licensesManager->getRowCount(); + + if ($rowCount === 0) { + Messages::addWarning(__('El permiso no existe.'), TRUE); + } elseif ($result) { + Messages::addSuccess(__('Permiso borrado correctamente.'), TRUE); + } else { + Messages::addDanger(__('Error al borrar el permiso.'), TRUE); + } } - parent::delete($id); + $this->redirectToAction('index'); } - protected function read() { - $licensesManager = new LicensesManager(); + public function index() { + $licensesManager = new LicensesManager($this->getConnectionDB()); $count = $licensesManager->count(); - $limit = parent::pagination($count); - ViewController::sendViewData('licenses', $licensesManager->searchAll($limit)); + $this->sendDataView([ + 'licenses' => $licensesManager->searchAll($this->rowsPages($count)), + ]); + $this->view(); + } + + protected function formToObject() { + $license = new License(); + $profiles = $this->getInput(ProfilesLicensesManager::PROFILE_ID); + $license->setId($this->getInput(LicensesManager::COLUMN_ID)); + $license->setLicenseName($this->getInput(LicensesManager::LICENSE_NAME)); + $license->setLicenseDescription($this->getInput(LicensesManager::LICENSE_DESCRIPTION)); + + return [ + 'license' => $license, + 'profiles' => $profiles, + ]; + } + + protected function formInputsBuilders() { + return [ + InputIntegerBuilder::init(LicensesManager::COLUMN_ID) + ->build(), + InputAlphanumericBuilder::init(LicensesManager::LICENSE_NAME) + ->setSpecialChar(TRUE) + ->build(), + InputAlphanumericBuilder::init(LicensesManager::LICENSE_DESCRIPTION) + ->setRequire(FALSE) + ->build(), + InputListIntegerBuilder::init(ProfilesLicensesManager::PROFILE_ID) + ->build(), + ]; + } } diff --git a/app/controllers/admin/MenuController.php b/app/controllers/admin/MenuController.php index fb24e1d..3618082 100644 --- a/app/controllers/admin/MenuController.php +++ b/app/controllers/admin/MenuController.php @@ -6,131 +6,100 @@ namespace SoftnCMS\controllers\admin; use SoftnCMS\classes\constants\Constants; -use SoftnCMS\controllers\CUDControllerAbstract; -use SoftnCMS\controllers\ViewController; use SoftnCMS\models\managers\MenusManager; use SoftnCMS\models\managers\OptionsManager; use SoftnCMS\models\tables\Menu; -use SoftnCMS\rute\Router; -use SoftnCMS\util\Arrays; +use SoftnCMS\util\controller\ControllerAbstract; use SoftnCMS\util\form\builders\InputAlphanumericBuilder; use SoftnCMS\util\form\builders\InputIntegerBuilder; use SoftnCMS\util\form\builders\InputUrlBuilder; -use SoftnCMS\util\form\Form; use SoftnCMS\util\Messages; -use SoftnCMS\util\Util; +use SoftnCMS\util\Token; /** * Class MenuController * @author Nicolás Marulanda P. */ -class MenuController extends CUDControllerAbstract { +class MenuController extends ControllerAbstract { + + public function index() { + $menusManager = new MenusManager($this->getConnectionDB()); + $count = $menusManager->count(); + + $this->sendDataView([ + 'menus' => $menusManager->searchAllParent($this->rowsPages($count)), + ]); + $this->view('index'); + } public function create() { - $menusManager = new MenusManager(); - $parentMenuId = Arrays::get($_GET, 'parentMenu'); + $menusManager = new MenusManager($this->getConnectionDB()); + $parentMenuId = InputIntegerBuilder::init('parentMenu') + ->setRequire(FALSE) + ->setMethod($_GET) + ->build() + ->filter(); - if (Form::submit(Constants::FORM_CREATE)) { - $form = $this->form(); + if (empty($parentMenuId)) { + $this->sendDataView(['parentMenus' => $menusManager->searchAllParent()]); + } else { + if (empty($menusManager->searchById($parentMenuId))) { + Messages::addDanger(__('El menu padre no existe.'), TRUE); + $this->redirectToAction('index'); + } - if (!empty($form)) { - $menu = Arrays::get($form, 'menu'); + $this->sendDataView(['parentMenuId' => $parentMenuId]); + } + + if ($this->checkSubmit(Constants::FORM_CREATE)) { + if ($this->isValidForm()) { + $menu = $this->getForm('menu'); if ($menusManager->create($menu)) { - $optionsManager = new OptionsManager(); Messages::addSuccess(__('Menu publicado correctamente.'), TRUE); - $siteUrlRedirect = $optionsManager->getSiteUrl() . 'admin/menu'; - $parentMenuId = $menu->getMenuSub(); + $parentMenuId = $menu->getMenuSub(); if ($parentMenuId != MenusManager::MENU_SUB_PARENT) { $parentMenu = $menusManager->searchParent($parentMenuId); if (!empty($parentMenu)) { - $siteUrlRedirect .= '/edit/' . $parentMenu->getId(); + $this->redirectToAction('edit/' . $parentMenu->getId()); } } - Util::redirect($siteUrlRedirect); + $this->redirectToAction('index'); } } Messages::addDanger(__('Error al publicar el menu.')); } - if (empty($parentMenuId)) { - ViewController::sendViewData('parentMenus', $menusManager->searchAllParent()); - } else { - if (empty($menusManager->searchById($parentMenuId))) { - $optionsManager = new OptionsManager(); - Messages::addDanger(__('El menu padre no existe.'), TRUE); - Util::redirect($optionsManager->getSiteUrl() . 'admin/menu'); - } - - ViewController::sendViewData('parentMenuId', $parentMenuId); - } - - ViewController::sendViewData('isUpdate', FALSE); - ViewController::sendViewData('menu', new Menu()); - ViewController::sendViewData('title', __('Publicar nuevo menu')); - ViewController::view('form'); - } - - protected function form() { - $inputs = $this->filterInputs(); - - if (empty($inputs)) { - return FALSE; - } - - $menu = new Menu(); - $menu->setId(Arrays::get($inputs, MenusManager::COLUMN_ID)); - $menu->setMenuTitle(Arrays::get($inputs, MenusManager::MENU_TITLE)); - $menu->setMenuUrl(Arrays::get($inputs, MenusManager::MENU_URL)); - $menu->setMenuSub(Arrays::get($inputs, MenusManager::MENU_SUB)); - $menu->setMenuPosition(NULL); - $menu->setMenuTotalChildren(NULL); - - return ['menu' => $menu]; - } - - protected function filterInputs() { - Form::setInput([ - InputIntegerBuilder::init(MenusManager::COLUMN_ID) - ->build(), - InputAlphanumericBuilder::init(MenusManager::MENU_TITLE) - ->build(), - InputUrlBuilder::init(MenusManager::MENU_URL) - ->setRequire(FALSE) - ->build(), - InputIntegerBuilder::init(MenusManager::MENU_SUB) - ->build(), + $this->sendDataView([ + 'isUpdate' => FALSE, + 'menu' => new Menu(), + 'title' => __('Publicar nuevo menu'), ]); - - return Form::inputFilter(); + $this->view('form'); } public function update($id) { - $menusManager = new MenusManager(); + $menusManager = new MenusManager($this->getConnectionDB()); $menu = $menusManager->searchById($id); if (empty($menu)) { Messages::addDanger(__('El menu no existe.'), TRUE); - Util::redirect(Router::getSiteURL(), 'admin/menu'); - } else { - if (Form::submit(Constants::FORM_UPDATE)) { - $form = $this->form(); + $this->redirectToAction('index'); + } elseif ($this->checkSubmit(Constants::FORM_UPDATE)) { + if ($this->isValidForm()) { + $menu = $this->getForm('menu'); - if (empty($form)) { - Messages::addDanger(__('Error en los campos del menu.')); + if ($menusManager->updateByColumnId($menu)) { + Messages::addSuccess(__('Menu actualizado correctamente.')); } else { - $menu = Arrays::get($form, 'menu'); - - if ($menusManager->updateByColumnId($menu)) { - Messages::addSuccess(__('Menu actualizado correctamente.')); - } else { - Messages::addDanger(__('Error al actualizar el menu.')); - } + Messages::addDanger(__('Error al actualizar el menu.')); } + } else { + Messages::addDanger(__('Error en los campos del menu.')); } } @@ -141,73 +110,86 @@ public function update($id) { $parentMenus = array_filter($parentMenus, function(Menu $menu) use ($id) { return !($menu->getId() == $id); }); - ViewController::sendViewData('parentMenus', $parentMenus); + $this->sendDataView(['parentMenus' => $parentMenus]); } else { - ViewController::sendViewData('parentMenuId', $parentMenuId); + $this->sendDataView(['parentMenuId' => $parentMenuId]); $parentMenu = $menusManager->searchParent($parentMenuId); if (!empty($parentMenu)) { - $optionsManager = new OptionsManager(); + $optionsManager = new OptionsManager($this->getConnectionDB()); $siteUrlEditParentMenu = $optionsManager->getSiteUrl() . 'admin/menu/edit/'; $siteUrlEditParentMenu .= $parentMenu->getId(); - ViewController::sendViewData('siteUrlEditParentMenu', $siteUrlEditParentMenu); + $this->sendDataView(['siteUrlEditParentMenu' => $siteUrlEditParentMenu]); } } - ViewController::sendViewData('isUpdate', TRUE); - ViewController::sendViewData('menu', $menu); - ViewController::sendViewData('title', __('Actualizar menu')); - ViewController::view('form'); + $this->sendDataView([ + 'isUpdate' => TRUE, + 'menu' => $menu, + 'title' => __('Actualizar menu'), + ]); + $this->view('form'); } public function edit($id) { - $menusManager = new MenusManager(); + $menusManager = new MenusManager($this->getConnectionDB()); $menu = $menusManager->searchById($id); if (empty($menu)) { Messages::addDanger(__('El menu no existe.'), TRUE); - Util::redirect(Router::getSiteURL(), 'admin/menu'); + $this->redirectToAction('index'); } - ViewController::sendViewData('menu', $menu); - ViewController::sendViewData('subMenus', $menusManager->searchByMenuSub($id)); - ViewController::view('edit'); + $this->sendDataView([ + 'menusManager' => $menusManager, + 'menu' => $menu, + 'subMenus' => $menusManager->searchByMenuSub($id), + ]); + $this->view(); } public function delete($id) { - $menusManager = new MenusManager(); - - if (empty($menusManager->deleteById($id))) { - Messages::addDanger(__('Error al borrar el menu.')); - } else { - Messages::addSuccess(__('Menu borrado correctamente.')); + if (Token::check()) { + $menusManager = new MenusManager($this->getConnectionDB()); + $result = $menusManager->deleteById($id); + $rowCount = $menusManager->getRowCountDelete(); + + if ($rowCount === 0) { + Messages::addWarning(__('El menu no existe.'), TRUE); + } elseif ($result) { + Messages::addSuccess(__('Menu borrado correctamente.'), TRUE); + } else { + Messages::addDanger(__('Error al borrar el menu.'), TRUE); + } } - parent::delete($id); + $this->redirectToAction('index'); } - public function reloadAJAX() { - $input = InputIntegerBuilder::init('edit') - ->setMethod($_GET) - ->build(); - $id = $input->filter(); - - if (empty($id)) { - parent::reloadAJAX(); - } else { - $menusManager = new MenusManager(); - ViewController::sendViewData('subMenus', $menusManager->searchByMenuSub($id)); - ViewController::singleView('dataedit'); - } + protected function formToObject() { + $menu = new Menu(); + $menu->setId($this->getInput(MenusManager::COLUMN_ID)); + $menu->setMenuTitle($this->getInput(MenusManager::MENU_TITLE)); + $menu->setMenuUrl($this->getInput(MenusManager::MENU_URL)); + $menu->setMenuSub($this->getInput(MenusManager::MENU_SUB)); + $menu->setMenuPosition(NULL); + $menu->setMenuTotalChildren(NULL); + return ['menu' => $menu]; } - protected function read() { - $menusManager = new MenusManager(); - $count = $menusManager->count(); - $limit = parent::pagination($count); - - ViewController::sendViewData('menus', $menusManager->searchAllParent($limit)); + protected function formInputsBuilders() { + return [ + InputIntegerBuilder::init(MenusManager::COLUMN_ID) + ->build(), + InputAlphanumericBuilder::init(MenusManager::MENU_TITLE) + ->build(), + InputUrlBuilder::init(MenusManager::MENU_URL) + ->setRequire(FALSE) + ->build(), + InputIntegerBuilder::init(MenusManager::MENU_SUB) + ->build(), + ]; } } diff --git a/app/controllers/admin/OptionController.php b/app/controllers/admin/OptionController.php index 90d8ec9..5a2f172 100644 --- a/app/controllers/admin/OptionController.php +++ b/app/controllers/admin/OptionController.php @@ -7,20 +7,18 @@ use SoftnCMS\classes\constants\Constants; use SoftnCMS\classes\constants\OptionConstants; -use SoftnCMS\controllers\ControllerAbstract; -use SoftnCMS\controllers\ViewController; use SoftnCMS\models\managers\MenusManager; use SoftnCMS\models\managers\OptionsManager; use SoftnCMS\models\managers\ProfilesManager; use SoftnCMS\models\tables\Option; use SoftnCMS\util\Arrays; +use SoftnCMS\util\controller\ControllerAbstract; use SoftnCMS\util\form\builders\InputAlphabeticBuilder; use SoftnCMS\util\form\builders\InputAlphanumericBuilder; use SoftnCMS\util\form\builders\InputBooleanBuilder; use SoftnCMS\util\form\builders\InputEmailBuilder; use SoftnCMS\util\form\builders\InputIntegerBuilder; use SoftnCMS\util\form\builders\InputUrlBuilder; -use SoftnCMS\util\form\Form; use SoftnCMS\util\Gravatar; use SoftnCMS\util\Messages; use SoftnCMS\util\Util; @@ -32,19 +30,47 @@ class OptionController extends ControllerAbstract { public function index() { - $this->update(); - parent::index(); + $optionsManager = new OptionsManager($this->getConnectionDB()); + $this->update($optionsManager); + $profilesManager = new ProfilesManager($this->getConnectionDB()); + $menusManager = new MenusManager($this->getConnectionDB()); + $optionComment = $optionsManager->searchByName(OptionConstants::COMMENT); + $optionTitle = $optionsManager->searchByName(OptionConstants::SITE_TITLE); + $optionDescription = $optionsManager->searchByName(OptionConstants::SITE_DESCRIPTION); + $optionPaged = $optionsManager->searchByName(OptionConstants::PAGED); + $optionSiteUrl = $optionsManager->searchByName(OptionConstants::SITE_URL); + $optionTheme = $optionsManager->searchByName(OptionConstants::THEME); + $optionMenu = $optionsManager->searchByName(OptionConstants::MENU); + $optionEmailAdmin = $optionsManager->searchByName(OptionConstants::EMAIL_ADMIN); + $optionLanguage = $optionsManager->searchByName(OptionConstants::LANGUAGE); + $optionDefaultProfile = $optionsManager->searchByName(OptionConstants::DEFAULT_PROFILE); + $profilesList = $profilesManager->searchAll(); + $menuList = $menusManager->searchAllParent(); + + $this->sendViewOptionLanguage(); + $this->sendViewOptionGravatar($optionsManager); + $this->sendDataView([ + 'optionComment' => $optionComment, + 'optionLanguage' => $optionLanguage, + 'menuList' => $menuList, + 'optionMenu' => $optionMenu, + 'listThemes' => Util::getFilesAndDirectories(THEMES), + 'optionTitle' => $optionTitle, + 'optionDescription' => $optionDescription, + 'optionPaged' => $optionPaged, + 'optionSiteUrl' => $optionSiteUrl, + 'optionTheme' => $optionTheme, + 'optionEmailAdmin' => $optionEmailAdmin, + 'optionDefaultProfile' => $optionDefaultProfile, + 'profilesList' => $profilesList, + ]); + $this->view(); } - private function update() { - if (Form::submit(Constants::FORM_UPDATE)) { - $optionsManager = new OptionsManager(); - $form = $this->form(); - - if (empty($form)) { - Messages::addDanger(__('Error en los campos de las opciones.')); - } else { - $options = Arrays::get($form, 'options'); + private function update(OptionsManager $optionsManager) { + if ($this->checkSubmit(Constants::FORM_UPDATE)) { + if ($this->isValidForm()) { + $options = $this->getForm('options'); $notError = TRUE; $len = count($options); @@ -57,137 +83,33 @@ private function update() { } else { Messages::addDanger(__('Error al actualizar.')); } + } else { + Messages::addDanger(__('Error en los campos de las opciones.')); } } } - protected function form() { - $inputs = $this->filterInputs(); - - if (empty($inputs)) { - return FALSE; - } - - $inputKeys = array_keys($inputs); - $options = array_map(function($key, $value) { - $option = new Option(); - $option->setOptionName($key); - $option->setOptionValue($value); - - return $option; - }, $inputKeys, $inputs); - $options[] = $this->formGravatar($inputs); - - return ['options' => $options]; - } - - protected function filterInputs() { - Form::setInput([ - InputAlphabeticBuilder::init(OptionConstants::SITE_TITLE) - ->build(), - InputAlphabeticBuilder::init(OptionConstants::SITE_DESCRIPTION) - ->setRequire(FALSE) - ->build(), - InputEmailBuilder::init(OptionConstants::EMAIL_ADMIN) - ->build(), - InputUrlBuilder::init(OptionConstants::SITE_URL) - ->build(), - InputIntegerBuilder::init(OptionConstants::PAGED) - ->build(), - InputAlphanumericBuilder::init(OptionConstants::THEME) - ->build(), - InputIntegerBuilder::init(OptionConstants::MENU) - ->build(), - InputAlphabeticBuilder::init(OptionConstants::LANGUAGE) - ->setAccents(FALSE) - ->setSpecialChar(TRUE) - ->build(), - InputIntegerBuilder::init(OptionConstants::DEFAULT_PROFILE) - ->build(), - InputIntegerBuilder::init(OptionConstants::GRAVATAR_SIZE) - ->build(), - InputAlphabeticBuilder::init(OptionConstants::GRAVATAR_RATING) - ->build(), - InputAlphabeticBuilder::init(OptionConstants::GRAVATAR_DEFAULT_IMAGE) - ->build(), - InputBooleanBuilder::init(OptionConstants::GRAVATAR_FORCE_DEFAULT) - ->build(), - InputBooleanBuilder::init(OptionConstants::COMMENT) - ->build(), - ]); - - return Form::inputFilter(); - } - - private function formGravatar($inputs) { - $gravatar = new Gravatar(); - $gravatar->setSize(Arrays::get($inputs, OptionConstants::GRAVATAR_SIZE)); - $gravatar->setForceDefault(Arrays::get($inputs, OptionConstants::GRAVATAR_FORCE_DEFAULT)); - $gravatar->setDefaultImage(Arrays::get($inputs, OptionConstants::GRAVATAR_DEFAULT_IMAGE)); - $gravatar->setRating(Arrays::get($inputs, OptionConstants::GRAVATAR_RATING)); - $gravatarOption = new Option(); - $gravatarOption->setOptionName(OptionConstants::GRAVATAR); - $gravatarOption->setOptionValue(serialize($gravatar)); - - return $gravatarOption; - } - - protected function read() { - $profilesManager = new ProfilesManager(); - $menusManager = new MenusManager(); - $optionsManager = new OptionsManager(); - $optionComment = $optionsManager->searchByName(OptionConstants::COMMENT); - $optionTitle = $optionsManager->searchByName(OptionConstants::SITE_TITLE); - $optionDescription = $optionsManager->searchByName(OptionConstants::SITE_DESCRIPTION); - $optionPaged = $optionsManager->searchByName(OptionConstants::PAGED); - $optionSiteUrl = $optionsManager->searchByName(OptionConstants::SITE_URL); - $optionTheme = $optionsManager->searchByName(OptionConstants::THEME); - $optionMenu = $optionsManager->searchByName(OptionConstants::MENU); - $optionEmailAdmin = $optionsManager->searchByName(OptionConstants::EMAIL_ADMIN); - $optionLanguage = $optionsManager->searchByName(OptionConstants::LANGUAGE); - $optionDefaultProfile = $optionsManager->searchByName(OptionConstants::DEFAULT_PROFILE); - $profilesList = $profilesManager->searchAll(); - $menuList = $menusManager->searchAllParent(); - - $this->sendViewOptionLanguage(); - $this->sendViewOptionGravatar(); - ViewController::sendViewData('optionComment', $optionComment); - ViewController::sendViewData('optionLanguage', $optionLanguage); - ViewController::sendViewData('menuList', $menuList); - ViewController::sendViewData('optionMenu', $optionMenu); - ViewController::sendViewData('listThemes', Util::getFilesAndDirectories(THEMES)); - ViewController::sendViewData('optionTitle', $optionTitle); - ViewController::sendViewData('optionDescription', $optionDescription); - ViewController::sendViewData('optionPaged', $optionPaged); - ViewController::sendViewData('optionSiteUrl', $optionSiteUrl); - ViewController::sendViewData('optionTheme', $optionTheme); - ViewController::sendViewData('optionEmailAdmin', $optionEmailAdmin); - ViewController::sendViewData('optionDefaultProfile', $optionDefaultProfile); - ViewController::sendViewData('profilesList', $profilesList); - - } - private function sendViewOptionLanguage() { $listLanguages = Util::getFilesAndDirectories(LANGUAGES); $listLanguages = array_filter($listLanguages, function($language) { - $aux = explode('.', $language); - $lastPosition = count($aux) - 1; + $explodeLanguage = explode('.', $language); + $lastPosition = count($explodeLanguage) - 1; - if (Arrays::get($aux, $lastPosition) === FALSE || Arrays::get($aux, 0) === FALSE) { + if (Arrays::get($explodeLanguage, $lastPosition) === FALSE || Arrays::get($explodeLanguage, 0) === FALSE) { return FALSE; } - return Arrays::get($aux, $lastPosition) == 'mo' && Arrays::get($aux, 0) != 'softncms'; + //TODO: + return Arrays::get($explodeLanguage, $lastPosition) == 'mo' && Arrays::get($explodeLanguage, 0) != 'softncms'; }); $listLanguages = array_map(function($language) { return Arrays::get(explode('.', $language), 0); }, $listLanguages); - ViewController::sendViewData('listLanguages', $listLanguages); + $this->sendDataView(['listLanguages' => $listLanguages]); } - private function sendViewOptionGravatar() { - $optionsManager = new OptionsManager(); + private function sendViewOptionGravatar(OptionsManager $optionsManager) { $optionGravatar = $optionsManager->searchByName(OptionConstants::GRAVATAR); $gravatar = unserialize($optionGravatar->getOptionValue()); @@ -219,14 +141,80 @@ private function sendViewOptionGravatar() { Gravatar::RATING_R, Gravatar::RATING_X, ]; - ViewController::sendViewData('gravatarSizeList', $sizeList); - ViewController::sendViewData('gravatarDefaultImageList', $defaultImageList); - ViewController::sendViewData('gravatarRatingList', $ratingList); - ViewController::sendViewData('gravatar', $gravatar); + $this->sendDataView([ + 'gravatarSizeList' => $sizeList, + 'gravatarDefaultImageList' => $defaultImageList, + 'gravatarRatingList' => $ratingList, + 'gravatar' => $gravatar, + + ]); } private function getDataGravatar($string) { return Arrays::get(explode('=', $string), 1); } + protected function formToObject() { + $inputKeys = array_keys($this->getInputs()); + $options = array_map(function($key, $value) { + $option = new Option(); + $option->setOptionName($key); + $option->setOptionValue($value); + + return $option; + }, $inputKeys, $this->getInputs()); + $options[] = $this->formGravatar(); + + return ['options' => $options]; + } + + private function formGravatar() { + $gravatar = new Gravatar(); + $gravatar->setSize($this->getInput(OptionConstants::GRAVATAR_SIZE)); + $gravatar->setForceDefault($this->getInput(OptionConstants::GRAVATAR_FORCE_DEFAULT)); + $gravatar->setDefaultImage($this->getInput(OptionConstants::GRAVATAR_DEFAULT_IMAGE)); + $gravatar->setRating($this->getInput(OptionConstants::GRAVATAR_RATING)); + $gravatarOption = new Option(); + $gravatarOption->setOptionName(OptionConstants::GRAVATAR); + $gravatarOption->setOptionValue(serialize($gravatar)); + + return $gravatarOption; + } + + protected function formInputsBuilders() { + return [ + InputAlphabeticBuilder::init(OptionConstants::SITE_TITLE) + ->build(), + InputAlphabeticBuilder::init(OptionConstants::SITE_DESCRIPTION) + ->setRequire(FALSE) + ->build(), + InputEmailBuilder::init(OptionConstants::EMAIL_ADMIN) + ->build(), + InputUrlBuilder::init(OptionConstants::SITE_URL) + ->build(), + InputIntegerBuilder::init(OptionConstants::PAGED) + ->build(), + InputAlphanumericBuilder::init(OptionConstants::THEME) + ->build(), + InputIntegerBuilder::init(OptionConstants::MENU) + ->build(), + InputAlphabeticBuilder::init(OptionConstants::LANGUAGE) + ->setAccents(FALSE) + ->setSpecialChar(TRUE) + ->build(), + InputIntegerBuilder::init(OptionConstants::DEFAULT_PROFILE) + ->build(), + InputIntegerBuilder::init(OptionConstants::GRAVATAR_SIZE) + ->build(), + InputAlphabeticBuilder::init(OptionConstants::GRAVATAR_RATING) + ->build(), + InputAlphabeticBuilder::init(OptionConstants::GRAVATAR_DEFAULT_IMAGE) + ->build(), + InputBooleanBuilder::init(OptionConstants::GRAVATAR_FORCE_DEFAULT) + ->build(), + InputBooleanBuilder::init(OptionConstants::COMMENT) + ->build(), + ]; + } + } diff --git a/app/controllers/admin/OptionLicenseController.php b/app/controllers/admin/OptionLicenseController.php index e38c9e7..31446ac 100644 --- a/app/controllers/admin/OptionLicenseController.php +++ b/app/controllers/admin/OptionLicenseController.php @@ -6,47 +6,53 @@ namespace SoftnCMS\controllers\admin; use SoftnCMS\classes\constants\Constants; -use SoftnCMS\controllers\CUDControllerAbstract; -use SoftnCMS\controllers\ViewController; use SoftnCMS\models\managers\LicensesManager; use SoftnCMS\models\managers\OptionsLicensesManager; use SoftnCMS\models\tables\License; use SoftnCMS\models\tables\OptionLicense; use SoftnCMS\route\Route; -use SoftnCMS\rute\Router; use SoftnCMS\util\Arrays; +use SoftnCMS\util\controller\ControllerAbstract; use SoftnCMS\util\form\builders\InputBooleanBuilder; use SoftnCMS\util\form\builders\InputIntegerBuilder; -use SoftnCMS\util\form\Form; use SoftnCMS\util\Messages; +use SoftnCMS\util\Token; use SoftnCMS\util\Util; /** * Class OptionLicenseController * @author Nicolás Marulanda P. */ -class OptionLicenseController extends CUDControllerAbstract { +class OptionLicenseController extends ControllerAbstract { /** @var array */ private $inputNames; + public function index() { + $licensesManager = new LicensesManager($this->getConnectionDB()); + $count = $licensesManager->configuredCount(); + + $this->sendDataView([ + 'licenses' => $licensesManager->searchAllConfigured($this->rowsPages($count)), + ]); + $this->view(); + } + public function create() { - $licensesManager = new LicensesManager(); + $licensesManager = new LicensesManager($this->getConnectionDB()); $licenses = $licensesManager->searchAllWithoutConfigured(); if (empty($licenses)) { Messages::addWarning(__('No hay permisos para configurar.'), TRUE); - Util::redirect(Router::getSiteURL() . 'admin/optionlicense'); + $this->redirectToAction('index'); } - if (Form::submit(Constants::FORM_CREATE)) { - $optionsLicenseManager = new OptionsLicensesManager(); - $form = $this->form(); - - if (!empty($form)) { - $optionsLicenses = Arrays::get($form, 'optionsLicenses'); - $len = count($optionsLicenses); - $notError = TRUE; + if ($this->checkSubmit(Constants::FORM_CREATE)) { + if ($this->isValidForm()) { + $optionsLicenseManager = new OptionsLicensesManager($this->getConnectionDB()); + $optionsLicenses = $this->getForm('optionsLicenses'); + $len = count($optionsLicenses); + $notError = TRUE; for ($i = 0; $i < $len && $notError; ++$i) { $notError = $optionsLicenseManager->create(Arrays::get($optionsLicenses, $i)); @@ -54,43 +60,181 @@ public function create() { if ($notError) { Messages::addSuccess(__('Permiso configurado correctamente.'), TRUE); - Util::redirect(Router::getSiteURL() . 'admin/optionlicense'); + $this->redirectToAction('index'); } } Messages::addDanger(__('Error al crear la configuración del permiso.')); } - ViewController::sendViewData('isUpdate', FALSE); - ViewController::sendViewData('license', new License()); - ViewController::sendViewData('licenses', $licenses); - ViewController::sendViewData('optionsLicenses', []); - ViewController::sendViewData('dataList', $this->getViewData()); - ViewController::sendViewData('title', __('Nueva configuración de permisos')); - ViewController::view('form'); + $this->sendDataView([ + 'isUpdate' => FALSE, + 'license' => new License(), + 'licenses' => $licenses, + 'optionsLicenses' => [], + 'dataList' => $this->getViewData(), + 'title' => __('Nueva configuración de permisos'), + ]); + $this->view('form'); } - protected function form() { - $filterInputs = $this->filterInputs(); + private function getViewData() { + $nameSpaceControllerAdmin = NAMESPACE_CONTROLLERS . Route::CONTROLLER_DIRECTORY_NAME_ADMIN . '\\'; + $licensesFiles = Util::getFilesAndDirectories(LICENSES); - if (empty($filterInputs)) { - return FALSE; - } + $dataList = array_map(function($licenseFileName) use ($nameSpaceControllerAdmin) { + $licenseClassName = Util::removeExtension($licenseFileName); + $className = substr($licenseClassName, 0, strrpos($licenseClassName, 'License')); + $nameSpaceManager = call_user_func(NAMESPACES_LICENSES . $licenseClassName . '::getManagerClass'); + $nameSpaceController = $nameSpaceControllerAdmin . $className . 'Controller'; + $managerConstants = $this->getManagerConstants($nameSpaceManager); + + return [ + 'className' => strtoupper($className), + 'controllerMethods' => $this->getControllerMethods($nameSpaceController), + 'managerConstants' => Arrays::get($managerConstants, 'columnNames'), + ]; + }, $licensesFiles); + + return array_merge($dataList); + } + + private function getManagerConstants($nameSpaceManager) { + $reflectionManagerAbstractClass = new \ReflectionClass(NAMESPACE_MANAGER_ABSTRACT); + $reflectionManagerClass = new \ReflectionClass($nameSpaceManager); + $constantsIgnore = $reflectionManagerAbstractClass->getConstants(); + $managerConstants = $reflectionManagerClass->getConstants(); + $constantsIgnore['MENU_SUB_PARENT'] = 0; + $constantsIgnore['TABLE'] = ''; - $licenseId = Arrays::get($filterInputs, OptionsLicensesManager::LICENSE_ID); + return [ + 'columnNames' => array_diff_key($managerConstants, $constantsIgnore), + 'table' => $managerConstants['TABLE'], + ]; + } + + private function getControllerMethods($nameSpaceController) { + $reflectionClass = new \ReflectionClass($nameSpaceController); + $reflectionMethods = $reflectionClass->getMethods(\ReflectionMethod::IS_PUBLIC); + $reflectionMethods = array_filter($reflectionMethods, function(\ReflectionMethod $reflectionMethod) { + return $reflectionMethod->name != '__construct'; + }); + return array_map(function(\ReflectionMethod $reflectionMethod) { + return strtoupper($reflectionMethod->name); + }, $reflectionMethods); + } + + public function update($id) { /* - * $filterInputs => - * CATEGORY_UPDATE - * CATEGORY_INSERT - * CATEGORY_DELETE - * CATEGORY_INDEX_category_name - * CATEGORY_INDEX_category_description + * NOTA: el parámetro ID sera el identificador del permisos. + * Esto se debe, por que, las pagina de configurar de los permisos + * se manejan todas las paginas al vez, en este caso no me sirve el ID de la tabla + * ya que el ID del permisos es único dato común para esa configuración. + */ + + $optionsLicensesManager = new OptionsLicensesManager($this->getConnectionDB()); + $optionsLicenses = $optionsLicensesManager->searchAllByLicenseId($id); + + if (empty($optionsLicenses)) { + Messages::addDanger(__('La configuración del permiso no existe.'), TRUE); + $this->redirectToAction('index'); + } elseif ($this->checkSubmit(Constants::FORM_UPDATE)) { + if ($this->isValidForm()) { + $optionsLicenses = $this->getForm('optionsLicenses'); + $len = count($optionsLicenses); + $notError = TRUE; + + for ($i = 0; $i < $len && $notError; ++$i) { + $optionLicense = Arrays::get($optionsLicenses, $i); + + if (empty($optionLicense) || empty($optionLicense->getId())) { + $notError = $optionsLicensesManager->create($optionLicense); + } elseif (empty($optionLicense->getOptionLicenseFieldsName())) { + $notError = $optionsLicensesManager->deleteById($optionLicense->getId()); + } else { + $notError = $optionsLicensesManager->updateByColumnId($optionLicense); + } + } + + if ($notError) { + //En caso de que el Id del permiso cambie. + $id = $this->getForm('licenseId'); + $optionsLicenses = $optionsLicensesManager->searchAllByLicenseId($id); + + if (empty($optionsLicenses)) { + Messages::addWarning(__('La configuración del permiso fue borrada al no tener asignado ningún campo.'), TRUE); + $this->redirectToAction('index'); + } + + Messages::addSuccess(__('Configuración del permiso actualizado correctamente.'), TRUE); + $this->redirectToAction("update/$id"); + } else { + Messages::addDanger(__('Error al actualizar la configuración del permiso.')); + } + } else { + Messages::addDanger(__('Error en los campos de la configuración del permiso.')); + } + } + + $optionsLicensesList = []; + array_walk($optionsLicenses, function(OptionLicense $optionLicense) use (&$optionsLicensesList) { + $methodName = $optionLicense->getOptionLicenseMethodName(); + $controllerName = $optionLicense->getOptionLicenseControllerName(); + $optionsLicensesList[$controllerName][$methodName] = [ + 'fields' => $optionLicense->getOptionLicenseFieldsName(), + 'object' => $optionLicense, + ]; + $optionsLicensesList[$controllerName]['insert'] = $optionLicense->getOptionLicenseCanInsert(); + $optionsLicensesList[$controllerName]['update'] = $optionLicense->getOptionLicenseCanUpdate(); + $optionsLicensesList[$controllerName]['delete'] = $optionLicense->getOptionLicenseCanDelete(); + }); + + $licensesManager = new LicensesManager($this->getConnectionDB()); + $this->sendDataView([ + 'isUpdate' => TRUE, + 'optionsLicenses' => $optionsLicensesList, + 'license' => $licensesManager->searchById($id), + 'licenses' => $licensesManager->searchAllWithoutConfigured(), + 'dataList' => $this->getViewData(), + 'title' => __('Actualizar configuración del permiso'), + ]); + $this->view('form'); + } + + public function delete($id) { + if (Token::check()) { + $optionsLicenses = new OptionsLicensesManager($this->getConnectionDB()); + $result = $optionsLicenses->deleteByLicenseId($id); + $rowCount = $optionsLicenses->getRowCount(); + + if ($rowCount === 0) { + Messages::addWarning(__('La configuración del permiso no existe.'), TRUE); + } elseif ($result) { + Messages::addSuccess(__('Configuración del permiso borrado correctamente.'), TRUE); + } else { + Messages::addDanger(__('Error al borrar la configuración del permiso.'), TRUE); + } + } + + $this->redirectToAction('index'); + } + + protected function formToObject() { + $licenseId = $this->getInput(OptionsLicensesManager::LICENSE_ID); + + /* EJ: + * $this->inputs => + * CATEGORY_UPDATE + * CATEGORY_INSERT + * CATEGORY_DELETE + * CATEGORY_INDEX_category_name + * CATEGORY_INDEX_category_description */ $optionsLicenses = []; - $filterInputsKeys = array_keys($filterInputs); + $filterInputsKeys = array_keys($this->getInputs()); - array_walk($this->inputNames, function($inputName) use ($filterInputsKeys, $filterInputs, $licenseId, &$optionsLicenses) { + array_walk($this->inputNames, function($inputName) use ($filterInputsKeys, $licenseId, &$optionsLicenses) { $pageName = Arrays::get($inputName, 'pageName'); $capacities = Arrays::get($inputName, 'capacities'); $capacities = array_filter($capacities, function($capacity) use ($filterInputsKeys) { @@ -101,14 +245,15 @@ protected function form() { }, $capacities); $methods = Arrays::get($inputName, 'methods'); - $methods = array_filter($methods, function($method) use ($filterInputsKeys, $pageName, $filterInputs) { + $methods = array_filter($methods, function($method) use ($filterInputsKeys, $pageName) { $methodName = Arrays::get($method, 'methodName'); $fields = Arrays::get($method, 'fields'); $filter = array_filter($fields, function($field) use ($filterInputsKeys) { return array_search($field, $filterInputsKeys) !== FALSE; }); - $id = Arrays::get($filterInputs, sprintf('%1$s_%2$s_ID', $pageName, $methodName)); + $id = $this->getInput(sprintf('%1$s_%2$s_id', $pageName, $methodName)); + //Si el ID esta vació, se esta creando una nueva configuración del permiso. return !empty($filter) || !empty($id); }); $methods = array_map(function($method) use ($pageName, $filterInputsKeys) { @@ -125,10 +270,10 @@ protected function form() { return $method; }, $methods); - array_walk($methods, function($method) use ($pageName, $filterInputs, $capacities, $licenseId, &$optionsLicenses) { + array_walk($methods, function($method) use ($pageName, $capacities, $licenseId, &$optionsLicenses) { $methodName = Arrays::get($method, 'methodName'); $fields = Arrays::get($method, 'fields'); - $id = Arrays::get($filterInputs, sprintf('%1$s_%2$s_ID', $pageName, $methodName)); + $id = $this->getInput(sprintf('%1$s_%2$s_id', $pageName, $methodName)); $optionLicense = new OptionLicense(); $optionLicense->setId($id); $optionLicense->setOptionLicenseControllerName($pageName); @@ -148,16 +293,17 @@ protected function form() { ]; } - protected function filterInputs() { + protected function formInputsBuilders() { $this->inputNames = $this->getInputNames(); - array_walk($this->inputNames, function($inputName) { - $this->setCapacities($inputName); - $this->setFields($inputName); + $output = []; + array_walk($this->inputNames, function($inputName) use (&$output) { + $this->setCapacities($inputName, $output); + $this->setFields($inputName, $output); }); - Form::addInput(InputIntegerBuilder::init(OptionsLicensesManager::LICENSE_ID) - ->build()); + $output[] = InputIntegerBuilder::init(OptionsLicensesManager::LICENSE_ID) + ->build(); - return Form::inputFilter(); + return $output; } private function getInputNames() { @@ -191,182 +337,42 @@ private function getInputNames() { return $inputNames; } - private function getViewData() { - $nameSpaceControllerAdmin = NAMESPACE_CONTROLLERS . Route::CONTROLLER_DIRECTORY_NAME_ADMIN . '\\'; - $licensesFiles = Util::getFilesAndDirectories(LICENSES); - - $dataList = array_map(function($licenseFileName) use ($nameSpaceControllerAdmin) { - $licenseClassName = Util::removeExtension($licenseFileName); - $className = substr($licenseClassName, 0, strrpos($licenseClassName, 'License')); - $nameSpaceManager = call_user_func(NAMESPACES_LICENSES . $licenseClassName . '::getManagerClass'); - $nameSpaceController = $nameSpaceControllerAdmin . $className . 'Controller'; - $managerConstants = $this->getManagerConstants($nameSpaceManager); - - return [ - 'className' => strtoupper($className), - 'controllerMethods' => $this->getControllerMethods($nameSpaceController), - 'managerConstants' => Arrays::get($managerConstants, 'columnNames'), - ]; - }, $licensesFiles); - - return array_merge($dataList); - } - - private function getManagerConstants($nameSpaceManager) { - $reflectionManagerAbstractClass = new \ReflectionClass(NAMESPACE_MODELS . 'CRUDManagerAbstract'); - $reflectionManagerClass = new \ReflectionClass($nameSpaceManager); - $constantsIgnore = $reflectionManagerAbstractClass->getConstants(); - $managerConstants = $reflectionManagerClass->getConstants(); - $constantsIgnore['MENU_SUB_PARENT'] = 0; - $constantsIgnore['TABLE'] = ''; - - return [ - 'columnNames' => array_diff_key($managerConstants, $constantsIgnore), - 'table' => $managerConstants['TABLE'], - ]; - } - - private function getControllerMethods($nameSpaceController) { - $reflectionClass = new \ReflectionClass($nameSpaceController); - $reflectionMethods = $reflectionClass->getMethods(\ReflectionMethod::IS_PUBLIC); - - return array_map(function(\ReflectionMethod $reflectionMethod) { - return strtoupper($reflectionMethod->name); - }, $reflectionMethods); - } - - private function setCapacities($inputName) { + private function setCapacities($inputName, &$output) { $capacities = Arrays::get($inputName, 'capacities'); if (!empty($capacities)) { - array_walk($capacities, function($capacity) { + array_walk($capacities, function($capacity) use (&$output) { if (Arrays::keyExists($_POST, $capacity)) { - Form::addInput(InputBooleanBuilder::init($capacity) - ->build()); + $output[] = InputBooleanBuilder::init($capacity) + ->build(); } }); } } - private function setFields($inputName) { + private function setFields($inputName, &$output) { $methods = Arrays::get($inputName, 'methods'); $pageName = Arrays::get($inputName, 'pageName'); if (!empty($methods)) { - array_walk($methods, function($method) use ($pageName) { + array_walk($methods, function($method) use ($pageName, &$output) { $methodName = Arrays::get($method, 'methodName'); $fields = Arrays::get($method, 'fields'); if (!empty($fields)) { $addInputPageMethodId = FALSE; - array_walk($fields, function($field) use ($pageName, $methodName, &$addInputPageMethodId) { + array_walk($fields, function($field) use ($pageName, $methodName, &$addInputPageMethodId, &$output) { if (Arrays::keyExists($_POST, $field)) { - Form::addInput(InputBooleanBuilder::init($field) - ->build()); + $output[] = InputBooleanBuilder::init($field) + ->build(); } }); - Form::addInput(InputIntegerBuilder::init(sprintf('%1$s_%2$s_ID', $pageName, $methodName)) - ->build()); + $output[] = InputIntegerBuilder::init(sprintf('%1$s_%2$s_id', $pageName, $methodName)) + ->build(); } }); } } - public function update($id) { - /* - * NOTA: el parámetro ID sera el identificador del permisos. - * Esto se debe, por que, las pagina de configurar de los permisos - * se manejan todas las paginas al vez, en este caso no me sirve el ID de la tabla - * ya que el ID del permisos es único dato común para esa configuración. - */ - - $optionsLicensesManager = new OptionsLicensesManager(); - $optionsLicenses = $optionsLicensesManager->searchAllByLicenseId($id); - - if (empty($optionsLicenses)) { - Messages::addDanger(__('La configuración del permiso no existe.'), TRUE); - Util::redirect(Router::getSiteURL() . 'admin/optionlicense'); - } elseif (Form::submit(Constants::FORM_UPDATE)) { - $form = $this->form(); - - if (empty($form)) { - Messages::addDanger(__('Error en los campos de la configuración del permiso.')); - } else { - $optionsLicenses = Arrays::get($form, 'optionsLicenses'); - $len = count($optionsLicenses); - $notError = TRUE; - - for ($i = 0; $i < $len && $notError; ++$i) { - $optionLicense = Arrays::get($optionsLicenses, $i); - - if (empty($optionLicense->getId())) { - $notError = $optionsLicensesManager->create($optionLicense); - } elseif (empty($optionLicense->getOptionLicenseFieldsName())) { - $notError = $optionsLicensesManager->deleteById($optionLicense->getId()); - } else { - $notError = $optionsLicensesManager->updateByColumnId($optionLicense); - } - } - - if ($notError) { - //En caso de que el Id del permiso cambie. - $id = Arrays::get($form, 'licenseId'); - $optionsLicenses = $optionsLicensesManager->searchAllByLicenseId($id); - - if (empty($optionsLicenses)) { - Messages::addWarning(__('La configuración del permiso fue borrada al no tener asignado ningún campo.'), TRUE); - Util::redirect(Router::getSiteURL() . 'admin/optionlicense'); - } - - Messages::addSuccess(__('Configuración del permiso actualizado correctamente.'), TRUE); - Util::redirect(Router::getSiteURL() . "admin/optionlicense/update/$id"); - } else { - Messages::addDanger(__('Error al actualizar la configuración del permiso.')); - } - } - } - - $optionsLicensesList = []; - array_walk($optionsLicenses, function(OptionLicense $optionLicense) use (&$optionsLicensesList) { - $controllerName = $optionLicense->getOptionLicenseControllerName(); - $optionsLicensesList[$controllerName][$optionLicense->getOptionLicenseMethodName()] = [ - 'fields' => $optionLicense->getOptionLicenseFieldsName(), - 'object' => $optionLicense, - ]; - $optionsLicensesList[$controllerName]['insert'] = $optionLicense->getOptionLicenseCanInsert(); - $optionsLicensesList[$controllerName]['update'] = $optionLicense->getOptionLicenseCanUpdate(); - $optionsLicensesList[$controllerName]['delete'] = $optionLicense->getOptionLicenseCanDelete(); - }); - - $licensesManager = new LicensesManager(); - ViewController::sendViewData('isUpdate', TRUE); - ViewController::sendViewData('optionsLicenses', $optionsLicensesList); - ViewController::sendViewData('license', $licensesManager->searchById($id)); - ViewController::sendViewData('licenses', $licensesManager->searchAllWithoutConfigured()); - ViewController::sendViewData('dataList', $this->getViewData()); - ViewController::sendViewData('title', __('Actualizar configuración del permiso')); - ViewController::view('form'); - } - - public function delete($id) { - $optionsLicenses = new OptionsLicensesManager(); - - if (empty($optionsLicenses->deleteByLicenseId($id))) { - Messages::addDanger(__('Error al borrar la configuración del permiso.')); - } else { - Messages::addSuccess(__('Configuración del permiso borrado correctamente.')); - } - - parent::delete($id); - } - - protected function read() { - $licensesManager = new LicensesManager(); - $count = $licensesManager->configuredCount(); - $limit = parent::pagination($count); - - ViewController::sendViewData('licenses', $licensesManager->searchAllConfigured($limit)); - } - } diff --git a/app/controllers/admin/PageController.php b/app/controllers/admin/PageController.php index 30cecf3..52e5be0 100644 --- a/app/controllers/admin/PageController.php +++ b/app/controllers/admin/PageController.php @@ -6,66 +6,116 @@ namespace SoftnCMS\controllers\admin; use SoftnCMS\classes\constants\Constants; -use SoftnCMS\controllers\CUDControllerAbstract; -use SoftnCMS\controllers\ViewController; use SoftnCMS\models\managers\PagesManager; use SoftnCMS\models\tables\Page; -use SoftnCMS\rute\Router; -use SoftnCMS\util\Arrays; +use SoftnCMS\util\controller\ControllerAbstract; use SoftnCMS\util\form\builders\InputAlphanumericBuilder; use SoftnCMS\util\form\builders\InputBooleanBuilder; use SoftnCMS\util\form\builders\InputHtmlBuilder; use SoftnCMS\util\form\builders\InputIntegerBuilder; -use SoftnCMS\util\form\Form; use SoftnCMS\util\Messages; +use SoftnCMS\util\Token; use SoftnCMS\util\Util; /** * Class PageController * @author Nicolás Marulanda P. */ -class PageController extends CUDControllerAbstract { +class PageController extends ControllerAbstract { + + public function index() { + $pagesManager = new PagesManager($this->getConnectionDB()); + $count = $pagesManager->count(); + + $this->sendDataView([ + 'pages' => $pagesManager->searchAll($this->rowsPages($count)), + ]); + $this->view(); + } public function create() { - if (Form::submit(Constants::FORM_CREATE)) { - $form = $this->form(); - - if (!empty($form)) { - $pagesManager = new PagesManager(); - $page = Arrays::get($form, 'page'); + if ($this->checkSubmit(Constants::FORM_CREATE)) { + if ($this->isValidForm()) { + $pagesManager = new PagesManager($this->getConnectionDB()); + $page = $this->getForm('page'); if ($pagesManager->create($page)) { Messages::addSuccess(__('Pagina creada correctamente.'), TRUE); - Util::redirect(Router::getSiteURL() . 'admin/page'); + $this->redirectToAction('index'); } } Messages::addDanger(__('Error al publicar la pagina.')); } - ViewController::sendViewData('isUpdate', FALSE); - ViewController::sendViewData('page', new Page()); - ViewController::sendViewData('title', __('Publicar nueva pagina')); - ViewController::view('form'); + $this->sendDataView([ + 'isUpdate' => FALSE, + 'page' => new Page(), + 'title' => __('Publicar nueva pagina'), + ]); + $this->view('form'); } - protected function form() { - $inputs = $this->filterInputs(); + public function update($id) { + $pagesManager = new PagesManager($this->getConnectionDB()); + $page = $pagesManager->searchById($id); + + if (empty($page)) { + Messages::addDanger(__('La pagina no existe.'), TRUE); + $this->redirectToAction('index'); + } elseif ($this->checkSubmit(Constants::FORM_UPDATE)) { + if ($this->isValidForm()) { + $page = $this->getForm('page'); + + if ($pagesManager->updateByColumnId($page)) { + Messages::addSuccess(__('Pagina actualizada correctamente.')); + } else { + Messages::addDanger(__('Error al actualizar la pagina.')); + } + } else { + Messages::addDanger(__('Error en los campos de la pagina.')); + } + } - if (empty($inputs)) { - return FALSE; + $this->sendDataView([ + 'isUpdate' => TRUE, + 'linkPage' => $this->getRequest() + ->getSiteUrl() . 'page/' . $page->getId(), + 'page' => $page, + 'title' => __('Actualizar pagina'), + ]); + $this->view('form'); + } + + public function delete($id) { + if (Token::check()) { + $pagesManager = new PagesManager($this->getConnectionDB()); + $result = $pagesManager->deleteById($id); + $rowCount = $pagesManager->getRowCount(); + + if ($rowCount === 0) { + Messages::addWarning(__('La pagina no existe.'), TRUE); + } elseif ($result) { + Messages::addSuccess(__('Pagina borrada correctamente.'), TRUE); + } else { + Messages::addDanger(__('Error al borrar la pagina.'), TRUE); + } } + $this->redirectToAction('index'); + } + + protected function formToObject() { $page = new Page(); - $page->setId(Arrays::get($inputs, PagesManager::COLUMN_ID)); - $page->setPageTitle(Arrays::get($inputs, PagesManager::PAGE_TITLE)); - $page->setPageContents(Arrays::get($inputs, PagesManager::PAGE_CONTENTS)); - $page->setPageStatus(Arrays::get($inputs, PagesManager::PAGE_STATUS)); - $page->setPageCommentStatus(Arrays::get($inputs, PagesManager::PAGE_COMMENT_STATUS)); + $page->setId($this->getInput(PagesManager::COLUMN_ID)); + $page->setPageTitle($this->getInput(PagesManager::PAGE_TITLE)); + $page->setPageContents($this->getInput(PagesManager::PAGE_CONTENTS)); + $page->setPageStatus($this->getInput(PagesManager::PAGE_STATUS)); + $page->setPageCommentStatus($this->getInput(PagesManager::PAGE_COMMENT_STATUS)); $page->setPageDate(NULL); $page->setPageCommentCount(NULL); - if (Form::submit(Constants::FORM_CREATE)) { + if ($this->checkSubmit(Constants::FORM_CREATE)) { $page->setPageDate(Util::dateNow()); $page->setPageCommentCount(0); } @@ -73,8 +123,8 @@ protected function form() { return ['page' => $page]; } - protected function filterInputs() { - Form::setInput([ + protected function formInputsBuilders() { + return [ InputIntegerBuilder::init(PagesManager::COLUMN_ID) ->build(), InputAlphanumericBuilder::init(PagesManager::PAGE_TITLE) @@ -85,62 +135,7 @@ protected function filterInputs() { ->build(), InputBooleanBuilder::init(PagesManager::PAGE_COMMENT_STATUS) ->build(), - ]); - - return Form::inputFilter(); - } - - public function update($id) { - $pagesManager = new PagesManager(); - $page = $pagesManager->searchById($id); - - if (empty($page)) { - Messages::addDanger(__('La pagina no existe.'), TRUE); - Util::redirect(Router::getSiteURL() . 'admin/page'); - } - - if (Form::submit(Constants::FORM_UPDATE)) { - $form = $this->form(); - - if (empty($form)) { - Messages::addDanger(__('Error en los campos de la pagina.')); - } else { - $page = Arrays::get($form, 'page'); - - if ($pagesManager->updateByColumnId($page)) { - Messages::addSuccess(__('Pagina actualizada correctamente.')); - } else { - Messages::addDanger(__('Error al actualizar la pagina.')); - } - } - } - - ViewController::sendViewData('isUpdate', TRUE); - $linkPage = Router::getSiteURL() . 'page/' . $page->getId(); - ViewController::sendViewData('linkPage', $linkPage); - ViewController::sendViewData('page', $page); - ViewController::sendViewData('title', __('Actualizar pagina')); - ViewController::view('form'); - } - - public function delete($id) { - $pagesManager = new PagesManager(); - - if (empty($pagesManager->deleteById($id))) { - Messages::addDanger(__('Error al borrar la pagina.')); - } else { - Messages::addSuccess(__('Pagina borrada correctamente.')); - } - - parent::delete($id); - } - - protected function read() { - $pagesManager = new PagesManager(); - $count = $pagesManager->count(); - $limit = parent::pagination($count); - - ViewController::sendViewData('pages', $pagesManager->searchAll($limit)); + ]; } } diff --git a/app/controllers/admin/PostController.php b/app/controllers/admin/PostController.php index 65eb89e..0ca98b2 100644 --- a/app/controllers/admin/PostController.php +++ b/app/controllers/admin/PostController.php @@ -6,11 +6,8 @@ namespace SoftnCMS\controllers\admin; use SoftnCMS\classes\constants\Constants; -use SoftnCMS\controllers\CUDControllerAbstract; -use SoftnCMS\controllers\ViewController; use SoftnCMS\models\managers\CategoriesManager; use SoftnCMS\models\managers\LoginManager; -use SoftnCMS\models\managers\OptionsManager; use SoftnCMS\models\managers\PostsCategoriesManager; use SoftnCMS\models\managers\PostsManager; use SoftnCMS\models\managers\PostsTermsManager; @@ -19,42 +16,49 @@ use SoftnCMS\models\tables\Post; use SoftnCMS\models\tables\PostCategory; use SoftnCMS\models\tables\PostTerm; -use SoftnCMS\rute\Router; use SoftnCMS\util\Arrays; +use SoftnCMS\util\controller\ControllerAbstract; use SoftnCMS\util\form\builders\InputAlphanumericBuilder; use SoftnCMS\util\form\builders\InputBooleanBuilder; use SoftnCMS\util\form\builders\InputHtmlBuilder; use SoftnCMS\util\form\builders\InputIntegerBuilder; use SoftnCMS\util\form\builders\InputListIntegerBuilder; -use SoftnCMS\util\form\Form; use SoftnCMS\util\Messages; +use SoftnCMS\util\Token; use SoftnCMS\util\Util; /** * Class PostController * @author Nicolás Marulanda P. */ -class PostController extends CUDControllerAbstract { +class PostController extends ControllerAbstract { + + public function index() { + $postsManager = new PostsManager($this->getConnectionDB()); + $count = $postsManager->count(); + + $this->sendDataView([ + 'posts' => $postsManager->searchAll($this->rowsPages($count)), + ]); + $this->view(); + } public function create() { - if (Form::submit(Constants::FORM_CREATE)) { - $postsManager = new PostsManager(); - $form = $this->form(); - - if (!empty($form)) { - $post = Arrays::get($form, 'post'); + if ($this->checkSubmit(Constants::FORM_CREATE)) { + if ($this->isValidForm()) { + $postsManager = new PostsManager($this->getConnectionDB()); + $post = $this->getForm('post'); if ($postsManager->create($post)) { - $usersManager = new UsersManager(); - $optionsManager = new OptionsManager(); - $postId = $postsManager->getLastInsertId(); - $terms = Arrays::get($form, 'terms'); //Etiquetas nuevas - $categories = Arrays::get($form, 'categories'); //Categorías nuevas + $usersManager = new UsersManager($this->getConnectionDB()); + $postId = $postsManager->getLastInsertId(); + $terms = $this->getForm('terms'); //Etiquetas nuevas + $categories = $this->getForm('categories'); //Categorías nuevas $usersManager->updatePostCount($post->getUserId(), 1); $this->createOrDeleteTerms($terms, $postId); $this->createOrDeleteCategories($categories, $postId); Messages::addSuccess(__('Entrada publicada correctamente.'), TRUE); - Util::redirect($optionsManager->getSiteUrl() . 'admin/post'); + $this->redirectToAction('index'); } } @@ -63,74 +67,17 @@ public function create() { $this->sendViewCategoriesAndTerms(); $this->sendViewUsers(); - ViewController::sendViewData('isUpdate', FALSE); - ViewController::sendViewData('selectedUserId', LoginManager::getSession()); - ViewController::sendViewData('post', new Post()); - ViewController::sendViewData('title', __('Publicar nueva entrada')); - ViewController::view('form'); - } - - protected function form() { - $inputs = $this->filterInputs(); - - if (empty($inputs)) { - return FALSE; - } - - $post = new Post(); - $date = Util::dateNow(); - $terms = Arrays::get($inputs, PostsTermsManager::TERM_ID); - $categories = Arrays::get($inputs, PostsCategoriesManager::CATEGORY_ID); - $post->setId(Arrays::get($inputs, PostsManager::COLUMN_ID)); - $post->setPostCommentCount(NULL); - $post->setPostDate(NULL); - $post->setPostUpdate($date); - $post->setPostTitle(Arrays::get($inputs, PostsManager::POST_TITLE)); - $post->setPostStatus(Arrays::get($inputs, PostsManager::POST_STATUS)); - $post->setPostCommentStatus(Arrays::get($inputs, PostsManager::POST_COMMENT_STATUS)); - $post->setPostContents(Arrays::get($inputs, PostsManager::POST_CONTENTS)); - $post->setUserId(Arrays::get($inputs, PostsManager::USER_ID)); - - if (Form::submit(Constants::FORM_CREATE)) { - $post->setPostCommentCount(0); - $post->setPostDate($date); - } - - return [ - 'post' => $post, - 'categories' => $categories, - 'terms' => $terms, - ]; - } - - protected function filterInputs() { - Form::setInput([ - InputIntegerBuilder::init(PostsManager::COLUMN_ID) - ->build(), - InputAlphanumericBuilder::init(PostsManager::POST_TITLE) - ->setSpecialChar(TRUE) - ->build(), - InputHtmlBuilder::init(PostsManager::POST_CONTENTS) - ->build(), - InputBooleanBuilder::init(PostsManager::POST_COMMENT_STATUS) - ->build(), - InputBooleanBuilder::init(PostsManager::POST_STATUS) - ->build(), - InputListIntegerBuilder::init(PostsCategoriesManager::CATEGORY_ID) - ->setRequire(FALSE) - ->build(), - InputListIntegerBuilder::init(PostsTermsManager::TERM_ID) - ->setRequire(FALSE) - ->build(), - InputIntegerBuilder::init(PostsManager::USER_ID) - ->build(), + $this->sendDataView([ + 'isUpdate' => FALSE, + 'selectedUserId' => LoginManager::getUserId(), + 'post' => new Post(), + 'title' => __('Publicar nueva entrada'), ]); - - return Form::inputFilter(); + $this->view('form'); } private function createOrDeleteTerms($termsId, $postId) { - $postsTermsManager = new PostsTermsManager(); + $postsTermsManager = new PostsTermsManager($this->getConnectionDB()); $currentTermsId = $this->getCurrentTermsId($postId); if (empty($termsId)) { @@ -175,7 +122,7 @@ private function createOrDeleteTerms($termsId, $postId) { } private function getCurrentTermsId($postId) { - $postsTermsManager = new PostsTermsManager(); + $postsTermsManager = new PostsTermsManager($this->getConnectionDB()); $postTerms = $postsTermsManager->searchAllByPostId($postId); //Etiquetas actuales $currentTermsId = array_map(function(PostTerm $value) { return $value->getTermId(); @@ -185,7 +132,7 @@ private function getCurrentTermsId($postId) { } private function createOrDeleteCategories($categoriesId, $postId) { - $postsCategoriesManager = new PostsCategoriesManager(); + $postsCategoriesManager = new PostsCategoriesManager($this->getConnectionDB()); $currentCategoriesId = $this->getCurrentCategoriesId($postId); if (empty($categoriesId)) { @@ -230,7 +177,7 @@ private function createOrDeleteCategories($categoriesId, $postId) { } private function getCurrentCategoriesId($postId) { - $postsCategoriesManager = new PostsCategoriesManager(); + $postsCategoriesManager = new PostsCategoriesManager($this->getConnectionDB()); $postCategories = $postsCategoriesManager->searchAllByPostId($postId); //Categorías actuales $CurrentCategoriesId = array_map(function(PostCategory $value) { return $value->getCategoryId(); @@ -240,85 +187,130 @@ private function getCurrentCategoriesId($postId) { } private function sendViewCategoriesAndTerms() { - $termsManager = new TermsManager(); - $categoriesManager = new CategoriesManager(); + $termsManager = new TermsManager($this->getConnectionDB()); + $categoriesManager = new CategoriesManager($this->getConnectionDB()); $categories = $categoriesManager->searchAll(); $terms = $termsManager->searchAll(); - ViewController::sendViewData('categories', $categories); - ViewController::sendViewData('terms', $terms); + $this->sendDataView([ + 'categories' => $categories, + 'terms' => $terms, + ]); } private function sendViewUsers() { - $usersManager = new UsersManager(); - ViewController::sendViewData('usersList', $usersManager->searchAll()); + $usersManager = new UsersManager($this->getConnectionDB()); + $this->sendDataView(['usersList' => $usersManager->searchAll()]); } public function update($id) { - $postsManager = new PostsManager(); + $postsManager = new PostsManager($this->getConnectionDB()); $post = $postsManager->searchById($id); if (empty($post)) { - $optionsManager = new OptionsManager(); - Messages::addDanger(__('La entrada no existe.'), TRUE); - Util::redirect($optionsManager->getSiteUrl() . 'admin/post'); - } else { - if (Form::submit(Constants::FORM_UPDATE)) { - $form = $this->form(); + Messages::addDanger(__('La publicación no existe.'), TRUE); + $this->redirectToAction('index'); + } elseif ($this->checkSubmit(Constants::FORM_UPDATE)) { + if ($this->isValidForm()) { + $post = $this->getForm('post'); - if (empty($form)) { - Messages::addDanger(__('Error en los campos de la entrada.')); + if ($postsManager->update($post)) { + $post = $postsManager->searchById($id); + $terms = $this->getForm('terms'); //Etiquetas nuevas + $categories = $this->getForm('categories'); //Categorías nuevas + $this->createOrDeleteTerms($terms, $id); + $this->createOrDeleteCategories($categories, $id); + Messages::addSuccess(__('Entrada actualizada correctamente.')); } else { - $post = Arrays::get($form, 'post'); - - if ($postsManager->update($post)) { - $post = $postsManager->searchById($id); - $terms = Arrays::get($form, 'terms'); //Etiquetas nuevas - $categories = Arrays::get($form, 'categories'); //Categorías nuevas - $this->createOrDeleteTerms($terms, $id); - $this->createOrDeleteCategories($categories, $id); - Messages::addSuccess(__('Entrada actualizada correctamente.')); - } else { - Messages::addDanger(__('Error al actualizar la entrada.')); - } + Messages::addDanger(__('Error al actualizar la entrada.')); } - + } else { + Messages::addDanger(__('Error en los campos de la entrada.')); } - - $linkPost = Router::getSiteURL() . 'post/' . $id; - $selectedCategoriesId = $this->getCurrentCategoriesId($id); - $selectedTermsId = $this->getCurrentTermsId($id); - $this->sendViewCategoriesAndTerms(); - $this->sendViewUsers(); - ViewController::sendViewData('isUpdate', TRUE); - ViewController::sendViewData('selectedUserId', $post->getUserId()); - ViewController::sendViewData('linkPost', $linkPost); - ViewController::sendViewData('selectedCategoriesId', $selectedCategoriesId); - ViewController::sendViewData('selectedTermsId', $selectedTermsId); - ViewController::sendViewData('post', $post); - ViewController::sendViewData('title', __('Actualizar entrada')); - ViewController::view('form'); } + + $this->sendViewCategoriesAndTerms(); + $this->sendViewUsers(); + $this->sendDataView([ + 'isUpdate' => TRUE, + 'selectedUserId' => $post->getUserId(), + 'linkPost' => $this->getRequest() + ->getSiteUrl() . "post/$id", + 'selectedCategoriesId' => $this->getCurrentCategoriesId($id), + 'selectedTermsId' => $this->getCurrentTermsId($id), + 'post' => $post, + 'title' => __('Actualizar entrada'), + ]); + $this->view('form'); } public function delete($id) { - $postsManager = new PostsManager(); - - if (empty($postsManager->deleteById($id))) { - Messages::addSuccess(__('Error al borrar la entrada.')); - } else { - Messages::addSuccess(__('Entrada borrada correctamente.')); + if (Token::check()) { + $postsManager = new PostsManager($this->getConnectionDB()); + $result = $postsManager->deleteById($id); + $rowCount = $postsManager->getRowCount(); + + if ($rowCount === 0) { + Messages::addWarning(__('La publicación no existe.'), TRUE); + } elseif ($result) { + Messages::addSuccess(__('Entrada borrada correctamente.'), TRUE); + } else { + Messages::addDanger(__('Error al borrar la entrada.'), TRUE); + } } - parent::delete($id); + $this->redirectToAction('index'); } - protected function read() { - $postsManager = new PostsManager(); - $count = $postsManager->count(); - $limit = parent::pagination($count); + protected function formToObject() { + $post = new Post(); + $date = Util::dateNow(); + $terms = $this->getInput(PostsTermsManager::TERM_ID); + $categories = $this->getInput(PostsCategoriesManager::CATEGORY_ID); + $post->setId($this->getInput(PostsManager::COLUMN_ID)); + $post->setPostCommentCount(NULL); + $post->setPostDate(NULL); + $post->setPostUpdate($date); + $post->setPostTitle($this->getInput(PostsManager::POST_TITLE)); + $post->setPostStatus($this->getInput(PostsManager::POST_STATUS)); + $post->setPostCommentStatus($this->getInput(PostsManager::POST_COMMENT_STATUS)); + $post->setPostContents($this->getInput(PostsManager::POST_CONTENTS)); + $post->setUserId($this->getInput(PostsManager::USER_ID)); + + if ($this->checkSubmit(Constants::FORM_CREATE)) { + $post->setPostCommentCount(0); + $post->setPostDate($date); + } - ViewController::sendViewData('posts', $postsManager->searchAll($limit)); + return [ + 'post' => $post, + 'categories' => $categories, + 'terms' => $terms, + ]; + } + + protected function formInputsBuilders() { + return [ + InputIntegerBuilder::init(PostsManager::COLUMN_ID) + ->build(), + InputAlphanumericBuilder::init(PostsManager::POST_TITLE) + ->setSpecialChar(TRUE) + ->build(), + InputHtmlBuilder::init(PostsManager::POST_CONTENTS) + ->build(), + InputBooleanBuilder::init(PostsManager::POST_COMMENT_STATUS) + ->build(), + InputBooleanBuilder::init(PostsManager::POST_STATUS) + ->build(), + InputListIntegerBuilder::init(PostsCategoriesManager::CATEGORY_ID) + ->setRequire(FALSE) + ->build(), + InputListIntegerBuilder::init(PostsTermsManager::TERM_ID) + ->setRequire(FALSE) + ->build(), + InputIntegerBuilder::init(PostsManager::USER_ID) + ->build(), + ]; } } diff --git a/app/controllers/admin/ProfileController.php b/app/controllers/admin/ProfileController.php index 88268f4..486e793 100644 --- a/app/controllers/admin/ProfileController.php +++ b/app/controllers/admin/ProfileController.php @@ -6,41 +6,46 @@ namespace SoftnCMS\controllers\admin; use SoftnCMS\classes\constants\Constants; -use SoftnCMS\controllers\CUDControllerAbstract; -use SoftnCMS\controllers\ViewController; use SoftnCMS\models\managers\LicensesManager; use SoftnCMS\models\managers\ProfilesLicensesManager; use SoftnCMS\models\managers\ProfilesManager; use SoftnCMS\models\tables\Profile; use SoftnCMS\models\tables\ProfileLicense; -use SoftnCMS\rute\Router; use SoftnCMS\util\Arrays; +use SoftnCMS\util\controller\ControllerAbstract; use SoftnCMS\util\form\builders\InputAlphanumericBuilder; use SoftnCMS\util\form\builders\InputIntegerBuilder; use SoftnCMS\util\form\builders\InputListIntegerBuilder; -use SoftnCMS\util\form\Form; use SoftnCMS\util\Messages; -use SoftnCMS\util\Util; +use SoftnCMS\util\Token; /** * Class ProfileController * @author Nicolás Marulanda P. */ -class ProfileController extends CUDControllerAbstract { +class ProfileController extends ControllerAbstract { + + public function index() { + $profilesManager = new ProfilesManager($this->getConnectionDB()); + $count = $profilesManager->count(); + + $this->sendDataView([ + 'profiles' => $profilesManager->searchAll($this->rowsPages($count)), + ]); + $this->view(); + } public function create() { - if (Form::submit(Constants::FORM_CREATE)) { - $form = $this->form(); - - if (!empty($form)) { - $profilesManager = new ProfilesManager(); - $profile = Arrays::get($form, 'profile'); + if ($this->checkSubmit(Constants::FORM_CREATE)) { + if ($this->isValidForm()) { + $profilesManager = new ProfilesManager($this->getConnectionDB()); + $profile = $this->getForm('profile'); if ($profilesManager->create($profile)) { - $licenses = Arrays::get($form, 'licenses'); + $licenses = $this->getForm('licenses'); $this->createOrDeleteLicenses($licenses, $profilesManager->getLastInsertId()); - Messages::addSuccess(__('Perfil creado correctamente.')); - Util::redirect(Router::getSiteURL() . 'admin/profile'); + Messages::addSuccess(__('Perfil creado correctamente.'), TRUE); + $this->redirectToAction('index'); } } @@ -48,50 +53,16 @@ public function create() { } $this->sendViewLicenses(); - ViewController::sendViewData('isUpdate', FALSE); - ViewController::sendViewData('profile', new Profile()); - ViewController::sendViewData('title', __('Crear nuevo perfil')); - ViewController::view('form'); - } - - protected function form() { - $inputs = $this->filterInputs(); - - if (empty($inputs)) { - return FALSE; - } - - $profile = new Profile(); - $licenses = Arrays::get($inputs, ProfilesLicensesManager::LICENSE_ID); - $profile->setId(Arrays::get($inputs, ProfilesManager::COLUMN_ID)); - $profile->setProfileName(Arrays::get($inputs, ProfilesManager::PROFILE_NAME)); - $profile->setProfileDescription(Arrays::get($inputs, ProfilesManager::PROFILE_DESCRIPTION)); - - return [ - 'profile' => $profile, - 'licenses' => $licenses, - ]; - } - - protected function filterInputs() { - Form::setInput([ - InputIntegerBuilder::init(ProfilesManager::COLUMN_ID) - ->build(), - InputAlphanumericBuilder::init(ProfilesManager::PROFILE_NAME) - ->setSpecialChar(TRUE) - ->build(), - InputAlphanumericBuilder::init(ProfilesManager::PROFILE_DESCRIPTION) - ->setRequire(FALSE) - ->build(), - InputListIntegerBuilder::init(ProfilesLicensesManager::LICENSE_ID) - ->build(), + $this->sendDataView([ + 'isUpdate' => FALSE, + 'profile' => new Profile(), + 'title' => __('Crear nuevo perfil'), ]); - - return Form::inputFilter(); + $this->view('form'); } private function createOrDeleteLicenses($licensesId, $profileId) { - $licensesProfilesManager = new ProfilesLicensesManager(); + $licensesProfilesManager = new ProfilesLicensesManager($this->getConnectionDB()); if (empty($licensesId)) { if ($licensesProfilesManager->deleteAllByProfileId($profileId) === FALSE) { @@ -134,7 +105,7 @@ private function createOrDeleteLicenses($licensesId, $profileId) { } private function getLicensesIdByProfileId($profileId) { - $licensesProfilesManager = new ProfilesLicensesManager(); + $licensesProfilesManager = new ProfilesLicensesManager($this->getConnectionDB()); $licensesProfile = $licensesProfilesManager->searchAllByProfileId($profileId); return array_map(function(ProfileLicense $licenseProfile) { @@ -143,62 +114,88 @@ private function getLicensesIdByProfileId($profileId) { } private function sendViewLicenses() { - $licensesManager = new LicensesManager(); - ViewController::sendViewData('licenses', $licensesManager->searchAll()); + $licensesManager = new LicensesManager($this->getConnectionDB()); + $this->sendDataView(['licenses' => $licensesManager->searchAll()]); } public function update($id) { - $profilesManager = new ProfilesManager(); + $profilesManager = new ProfilesManager($this->getConnectionDB()); $profile = $profilesManager->searchById($id); if (empty($profile)) { Messages::addDanger(__('El perfil no existe.'), TRUE); - Util::redirect(Router::getSiteURL() . 'admin/profile'); - } elseif (Form::submit(Constants::FORM_UPDATE)) { - $form = $this->form(); - - if (empty($form)) { - Messages::addDanger(__('Error en los campos del perfil.')); - } else { - $profile = Arrays::get($form, 'profile'); + $this->redirectToAction('index'); + } elseif ($this->checkSubmit(Constants::FORM_UPDATE)) { + if ($this->isValidForm()) { + $profile = $this->getForm('profile'); - if ($profilesManager->updateByColumnId($profile)) { + if ($profilesManager->update($profile)) { $profile = $profilesManager->searchById($id); - $licenses = Arrays::get($form, 'licenses'); + $licenses = $this->getForm('licenses'); $this->createOrDeleteLicenses($licenses, $id); Messages::addSuccess(__('Perfil actualizado correctamente.')); } else { Messages::addDanger(__('Error al actualizar el perfil.')); } + } else { + Messages::addDanger(__('Error en los campos del perfil.')); } } $this->sendViewLicenses(); - ViewController::sendViewData('isUpdate', TRUE); - ViewController::sendViewData('selectedLicensesId', $this->getLicensesIdByProfileId($id)); - ViewController::sendViewData('profile', $profile); - ViewController::sendViewData('title', __('Actualizar perfil')); - ViewController::view('form'); + $this->sendDataView([ + 'isUpdate' => TRUE, + 'selectedLicensesId' => $this->getLicensesIdByProfileId($id), + 'profile' => $profile, + 'title' => __('Actualizar perfil'), + ]); + $this->view('form'); } public function delete($id) { - $profilesManager = new ProfilesManager(); - - if (empty($profilesManager->deleteById($id))) { - Messages::addDanger(__('Error al borrar el perfil.')); - } else { - Messages::addSuccess(__('Perfil borrado correctamente.')); + if (Token::check()) { + $profilesManager = new ProfilesManager($this->getConnectionDB()); + $result = $profilesManager->deleteById($id); + $rowCount = $profilesManager->getRowCount(); + + if ($result === FALSE) { + Messages::addDanger(__('No puedes borrar un perfil con usuarios asociados.'), TRUE); + } elseif ($rowCount === 0) { + Messages::addDanger(__('El perfil no existe.'), TRUE); + } else { + Messages::addSuccess(__('Perfil borrado correctamente.'), TRUE); + } } - parent::delete($id); + $this->redirectToAction('index'); } - protected function read() { - $profilesManager = new ProfilesManager(); - $count = $profilesManager->count(); - $limit = parent::pagination($count); + protected function formToObject() { + $profile = new Profile(); + $licenses = $this->getInput(ProfilesLicensesManager::LICENSE_ID); + $profile->setId($this->getInput(ProfilesManager::COLUMN_ID)); + $profile->setProfileName($this->getInput(ProfilesManager::PROFILE_NAME)); + $profile->setProfileDescription($this->getInput(ProfilesManager::PROFILE_DESCRIPTION)); - ViewController::sendViewData('profiles', $profilesManager->searchAll($limit)); + return [ + 'profile' => $profile, + 'licenses' => $licenses, + ]; + } + + protected function formInputsBuilders() { + return [ + InputIntegerBuilder::init(ProfilesManager::COLUMN_ID) + ->build(), + InputAlphanumericBuilder::init(ProfilesManager::PROFILE_NAME) + ->setSpecialChar(TRUE) + ->build(), + InputAlphanumericBuilder::init(ProfilesManager::PROFILE_DESCRIPTION) + ->setRequire(FALSE) + ->build(), + InputListIntegerBuilder::init(ProfilesLicensesManager::LICENSE_ID) + ->build(), + ]; } } diff --git a/app/controllers/admin/SidebarController.php b/app/controllers/admin/SidebarController.php index c55bdde..7de755b 100644 --- a/app/controllers/admin/SidebarController.php +++ b/app/controllers/admin/SidebarController.php @@ -6,124 +6,119 @@ namespace SoftnCMS\controllers\admin; use SoftnCMS\classes\constants\Constants; -use SoftnCMS\controllers\CUDControllerAbstract; -use SoftnCMS\controllers\ViewController; use SoftnCMS\models\managers\SidebarsManager; use SoftnCMS\models\tables\Sidebar; -use SoftnCMS\rute\Router; -use SoftnCMS\util\Arrays; +use SoftnCMS\util\controller\ControllerAbstract; use SoftnCMS\util\form\builders\InputAlphanumericBuilder; use SoftnCMS\util\form\builders\InputIntegerBuilder; -use SoftnCMS\util\form\Form; use SoftnCMS\util\Messages; -use SoftnCMS\util\Util; +use SoftnCMS\util\Token; /** * Class SidebarController * @author Nicolás Marulanda P. */ -class SidebarController extends CUDControllerAbstract { +class SidebarController extends ControllerAbstract { + + public function index() { + $sidebarsManager = new SidebarsManager($this->getConnectionDB()); + //No necesita paginación, por el momento. + $this->sendDataView(['sidebars' => $sidebarsManager->searchAll()]); + $this->view(); + } public function create() { - if (Form::submit(Constants::FORM_CREATE)) { - $form = $this->form(); - - if (!empty($form)) { - $sidebarsManager = new SidebarsManager(); - $sidebar = Arrays::get($form, 'sidebar'); + if ($this->checkSubmit(Constants::FORM_CREATE)) { + if ($this->isValidForm()) { + $sidebarsManager = new SidebarsManager($this->getConnectionDB()); + $sidebar = $this->getForm('sidebar'); if ($sidebarsManager->create($sidebar)) { Messages::addSuccess(__('Barra lateral creado correctamente.'), TRUE); - Util::redirect(Router::getSiteURL() . 'admin/sidebar'); + $this->redirectToAction('index'); } } Messages::addDanger(__('Error al crear el sidebar.')); } - ViewController::sendViewData('isUpdate', FALSE); - ViewController::sendViewData('sidebar', new Sidebar()); - ViewController::sendViewData('title', __('Crear nuevo')); - ViewController::view('form'); - } - - protected function form() { - $inputs = $this->filterInputs(); - - if (empty($inputs)) { - return FALSE; - } - - $sidebar = new Sidebar(); - $sidebar->setId(Arrays::get($inputs, SidebarsManager::COLUMN_ID)); - $sidebar->setSidebarTitle(Arrays::get($inputs, SidebarsManager::SIDEBAR_TITLE)); - $sidebar->setSidebarContents(Arrays::get($inputs, SidebarsManager::SIDEBAR_CONTENTS)); - $sidebar->setSidebarPosition(NULL); - - return ['sidebar' => $sidebar]; - } - - protected function filterInputs() { - Form::setInput([ - InputIntegerBuilder::init(SidebarsManager::COLUMN_ID) - ->build(), - InputAlphanumericBuilder::init(SidebarsManager::SIDEBAR_TITLE) - ->setRequire(FALSE) - ->build(), - InputAlphanumericBuilder::init(SidebarsManager::SIDEBAR_CONTENTS) - ->setRequire(FALSE) - ->build(), + $this->sendDataView([ + 'isUpdate' => FALSE, + 'sidebar' => new Sidebar(), + 'title' => __('Crear nuevo'), ]); - - return Form::inputFilter(); + $this->view('form'); } public function update($id) { - $sidebarsManager = new SidebarsManager(); + $sidebarsManager = new SidebarsManager($this->getConnectionDB()); $sidebar = $sidebarsManager->searchById($id); if (empty($sidebar)) { Messages::addDanger(__('La barra lateral no existe.'), TRUE); - Util::redirect(Router::getSiteURL() . 'admin/sidebar'); + $this->redirectToAction('index'); } else { - if (Form::submit(Constants::FORM_UPDATE)) { - $form = $this->form(); - - if (empty($form)) { - Messages::addDanger(__('Error en los campos del a barra lateral.')); - } else { - $sidebar = Arrays::get($form, 'sidebar'); + if ($this->checkSubmit(Constants::FORM_UPDATE)) { + if ($this->isValidForm()) { + $sidebar = $this->getForm('sidebar'); if ($sidebarsManager->updateByColumnId($sidebar)) { Messages::addSuccess(__('Barra lateral actualizada correctamente.')); } else { Messages::addDanger(__('Error al actualizar la barra lateral.')); } + } else { + Messages::addDanger(__('Error en los campos del a barra lateral.')); } } - ViewController::sendViewData('isUpdate', TRUE); - ViewController::sendViewData('sidebar', $sidebar); - ViewController::sendViewData('title', __('Actualizar')); - ViewController::view('form'); + $this->sendDataView([ + 'isUpdate' => TRUE, + 'sidebar' => $sidebar, + 'title' => __('Actualizar'), + ]); + $this->view('form'); } } public function delete($id) { - $sidebarsManager = new SidebarsManager(); - - if (empty($sidebarsManager->deleteById($id))) { - Messages::addDanger(__('Error al borrar la barra lateral.')); - } else { - Messages::addSuccess(__('Barra lateral borrada correctamente.')); + if (Token::check()) { + $sidebarsManager = new SidebarsManager($this->getConnectionDB()); + $result = $sidebarsManager->deleteById($id); + $rowCount = $sidebarsManager->getRowCount(); + + if ($rowCount === 0) { + Messages::addWarning(__('La barra lateral no existe.'), TRUE); + } elseif ($result) { + Messages::addSuccess(__('Barra lateral borrada correctamente.'), TRUE); + } else { + Messages::addDanger(__('Error al borrar la barra lateral.'), TRUE); + } } - parent::delete($id); + $this->redirectToAction('index'); } - protected function read() { - $sidebarsManager = new SidebarsManager(); - ViewController::sendViewData('sidebars', $sidebarsManager->searchAll()); + protected function formToObject() { + $sidebar = new Sidebar(); + $sidebar->setId($this->getInput(SidebarsManager::COLUMN_ID)); + $sidebar->setSidebarTitle($this->getInput(SidebarsManager::SIDEBAR_TITLE)); + $sidebar->setSidebarContents($this->getInput(SidebarsManager::SIDEBAR_CONTENTS)); + $sidebar->setSidebarPosition(NULL); + + return ['sidebar' => $sidebar]; } + protected function formInputsBuilders() { + return [ + InputIntegerBuilder::init(SidebarsManager::COLUMN_ID) + ->build(), + InputAlphanumericBuilder::init(SidebarsManager::SIDEBAR_TITLE) + ->setRequire(FALSE) + ->build(), + InputAlphanumericBuilder::init(SidebarsManager::SIDEBAR_CONTENTS) + ->setRequire(FALSE) + ->build(), + ]; + } } diff --git a/app/controllers/admin/TermController.php b/app/controllers/admin/TermController.php index 361306c..c4200d9 100644 --- a/app/controllers/admin/TermController.php +++ b/app/controllers/admin/TermController.php @@ -6,130 +6,124 @@ namespace SoftnCMS\controllers\admin; use SoftnCMS\classes\constants\Constants; -use SoftnCMS\controllers\CUDControllerAbstract; -use SoftnCMS\controllers\ViewController; use SoftnCMS\models\managers\TermsManager; use SoftnCMS\models\tables\Term; -use SoftnCMS\rute\Router; -use SoftnCMS\util\Arrays; +use SoftnCMS\util\controller\ControllerAbstract; use SoftnCMS\util\form\builders\InputAlphanumericBuilder; use SoftnCMS\util\form\builders\InputIntegerBuilder; -use SoftnCMS\util\form\Form; use SoftnCMS\util\Messages; -use SoftnCMS\util\Util; +use SoftnCMS\util\Token; /** * Class TermController * @author Nicolás Marulanda P. */ -class TermController extends CUDControllerAbstract { +class TermController extends ControllerAbstract { + + public function index() { + $termsManager = new TermsManager($this->getConnectionDB()); + $count = $termsManager->count(); + + $this->sendDataView([ + 'terms' => $termsManager->searchAll($this->rowsPages($count)), + ]); + $this->view(); + } public function create() { - if (Form::submit(Constants::FORM_CREATE)) { - $form = $this->form(); - - if (!empty($form)) { - $termsManager = new TermsManager(); - $term = Arrays::get($form, 'term'); + if ($this->checkSubmit(Constants::FORM_CREATE)) { + if ($this->isValidForm()) { + $termsManager = new TermsManager($this->getConnectionDB()); + $term = $this->getForm('term'); if ($termsManager->create($term)) { Messages::addSuccess(__('Etiqueta publicada correctamente.'), TRUE); - Util::redirect(Router::getSiteURL(), 'admin/term'); + $this->redirectToAction('index'); } } Messages::addDanger(__('Error al publicar la etiqueta.')); } - ViewController::sendViewData('isUpdate', FALSE); - ViewController::sendViewData('term', new Term()); - ViewController::sendViewData('title', __('Publicar nueva etiqueta')); - ViewController::view('form'); - } - - protected function form() { - $inputs = $this->filterInputs(); - - if (empty($inputs)) { - return FALSE; - } - - $term = new Term(); - $term->setId(Arrays::get($inputs, TermsManager::COLUMN_ID)); - $term->setTermPostCount(NULL); - $term->setTermDescription(Arrays::get($inputs, TermsManager::TERM_DESCRIPTION)); - $term->setTermName(Arrays::get($inputs, TermsManager::TERM_NAME)); - - if (Form::submit(Constants::FORM_CREATE)) { - $term->setTermPostCount(0); - } - - return ['term' => $term]; - } - - protected function filterInputs() { - Form::setInput([ - InputIntegerBuilder::init(TermsManager::COLUMN_ID) - ->build(), - InputAlphanumericBuilder::init(TermsManager::TERM_NAME) - ->build(), - InputAlphanumericBuilder::init(TermsManager::TERM_DESCRIPTION) - ->setRequire(FALSE) - ->build(), + $this->sendDataView([ + 'isUpdate' => FALSE, + 'term' => new Term(), + 'title' => __('Publicar nueva etiqueta'), ]); - - return Form::inputFilter(); + $this->view('form'); } public function update($id) { - $termsManager = new TermsManager(); + $termsManager = new TermsManager($this->getConnectionDB()); $term = $termsManager->searchById($id); if (empty($term)) { Messages::addDanger(__('La etiqueta no existe.'), TRUE); - Util::redirect(Router::getSiteURL(), 'admin/term'); - } else { - if (Form::submit(Constants::FORM_UPDATE)) { - $form = $this->form(); + $this->redirectToAction('index'); + } elseif ($this->checkSubmit(Constants::FORM_UPDATE)) { + if ($this->isValidForm()) { + $term = $this->getForm('term'); - if (empty($form)) { - Messages::addDanger(__('Error en los campos de la etiqueta.')); + if ($termsManager->update($term)) { + Messages::addSuccess(__('Etiqueta actualizada correctamente.')); } else { - $term = Arrays::get($form, 'term'); - - if ($termsManager->update($term)) { - Messages::addSuccess(__('Etiqueta actualizada correctamente.')); - } else { - Messages::addDanger(__('Error al actualizar la etiqueta.')); - } + Messages::addDanger(__('Error al actualizar la etiqueta.')); } - + } else { + Messages::addDanger(__('Error en los campos de la etiqueta.')); } - ViewController::sendViewData('isUpdate', TRUE); - ViewController::sendViewData('term', $term); - ViewController::sendViewData('title', __('Actualizar etiqueta')); - ViewController::view('form'); } + + $this->sendDataView([ + 'isUpdate' => TRUE, + 'term' => $term, + 'title' => __('Actualizar etiqueta'), + ]); + $this->view('form'); } public function delete($id) { - $termsManager = new TermsManager(); - - if (empty($termsManager->deleteById($id))) { - Messages::addDanger(__('Error al borrar la etiqueta.')); - } else { - Messages::addSuccess(__('Etiqueta borrada correctamente.')); + if (Token::check()) { + $termsManager = new TermsManager($this->getConnectionDB()); + $result = $termsManager->deleteById($id); + $rowCount = $termsManager->getRowCount(); + + if ($rowCount === 0) { + Messages::addWarning(__('La etiqueta no existe.'), TRUE); + } elseif ($result) { + Messages::addSuccess(__('Etiqueta borrada correctamente.'), TRUE); + } else { + Messages::addDanger(__('Error al borrar la etiqueta.'), TRUE); + } } - parent::delete($id); + $this->redirectToAction('index'); } - protected function read() { - $termsManager = new TermsManager(); - $count = $termsManager->count(); - $limit = parent::pagination($count); + protected function formToObject() { + $term = new Term(); + $term->setId($this->getInput(TermsManager::COLUMN_ID)); + $term->setTermPostCount(NULL); + $term->setTermDescription($this->getInput(TermsManager::TERM_DESCRIPTION)); + $term->setTermName($this->getInput(TermsManager::TERM_NAME)); - ViewController::sendViewData('terms', $termsManager->searchAll($limit)); + if ($this->checkSubmit(Constants::FORM_CREATE)) { + $term->setTermPostCount(0); + } + + return ['term' => $term]; + } + + protected function formInputsBuilders() { + return [ + InputIntegerBuilder::init(TermsManager::COLUMN_ID) + ->build(), + InputAlphanumericBuilder::init(TermsManager::TERM_NAME) + ->build(), + InputAlphanumericBuilder::init(TermsManager::TERM_DESCRIPTION) + ->setRequire(FALSE) + ->build(), + ]; } } diff --git a/app/controllers/admin/UserController.php b/app/controllers/admin/UserController.php index 0249e4d..012b257 100644 --- a/app/controllers/admin/UserController.php +++ b/app/controllers/admin/UserController.php @@ -7,41 +7,46 @@ use SoftnCMS\classes\constants\Constants; use SoftnCMS\classes\constants\OptionConstants; -use SoftnCMS\controllers\CUDControllerAbstract; -use SoftnCMS\controllers\ViewController; use SoftnCMS\models\managers\LoginManager; use SoftnCMS\models\managers\OptionsManager; use SoftnCMS\models\managers\ProfilesManager; use SoftnCMS\models\managers\UsersManager; use SoftnCMS\models\tables\User; -use SoftnCMS\rute\Router; -use SoftnCMS\util\Arrays; +use SoftnCMS\util\controller\ControllerAbstract; use SoftnCMS\util\form\builders\InputAlphanumericBuilder; use SoftnCMS\util\form\builders\InputEmailBuilder; use SoftnCMS\util\form\builders\InputIntegerBuilder; use SoftnCMS\util\form\builders\InputUrlBuilder; -use SoftnCMS\util\form\Form; use SoftnCMS\util\Gravatar; use SoftnCMS\util\Messages; +use SoftnCMS\util\Token; use SoftnCMS\util\Util; /** * Class UserController * @author Nicolás Marulanda P. */ -class UserController extends CUDControllerAbstract { +class UserController extends ControllerAbstract { + + public function index() { + $usersManager = new UsersManager($this->getConnectionDB()); + $count = $usersManager->count(); + + $this->sendDataView([ + 'users' => $usersManager->searchAll($this->rowsPages($count)), + ]); + $this->view(); + } public function create() { - if (Form::submit(Constants::FORM_CREATE)) { - $form = $this->form(); - - if (!empty($form)) { - $usersManager = new UsersManager(); - $user = Arrays::get($form, 'user'); + if ($this->checkSubmit(Constants::FORM_CREATE)) { + if ($this->isValidForm()) { + $usersManager = new UsersManager($this->getConnectionDB()); + $user = $this->getForm('user'); if ($usersManager->create($user)) { Messages::addSuccess(__('Usuario creado correctamente.'), TRUE); - Util::redirect(Router::getSiteURL() . 'admin/user'); + $this->redirectToAction('index'); } } @@ -54,21 +59,94 @@ public function create() { //En el panel de administración el tamaño sera 128px $gravatar->setSize(128); $user->setUserUrlImage($gravatar->get()); - ViewController::sendViewData('isUpdate', FALSE); - ViewController::sendViewData('user', $user); - ViewController::sendViewData('title', __('Publicar nuevo usuario')); - ViewController::view('form'); + $this->sendDataView([ + 'isUpdate' => FALSE, + 'user' => $user, + 'title' => __('Publicar nuevo usuario'), + ]); + $this->view('form'); + } + + private function sendViewProfiles() { + $profilesManager = new ProfilesManager($this->getConnectionDB()); + $this->sendDataView(['profiles' => $profilesManager->searchAll()]); + } + + private function getGravatar() { + $optionsManager = new OptionsManager($this->getConnectionDB()); + $gravatarOption = $optionsManager->searchByName(OptionConstants::GRAVATAR); + + if (empty($gravatarOption->getOptionValue())) { + $gravatar = new Gravatar(); + } else { + $gravatar = unserialize($gravatarOption->getOptionValue()); + } + + return $gravatar; } - protected function form() { - $inputs = $this->filterInputs(); + public function update($id) { + $usersManager = new UsersManager($this->getConnectionDB()); + $user = $usersManager->searchById($id); + + if (empty($user)) { + Messages::addDanger(__('El usuario no existe.'), TRUE); + $this->redirectToAction('index'); + } elseif ($this->checkSubmit(Constants::FORM_UPDATE)) { + if ($this->isValidForm()) { + $userForm = $this->getForm('user'); + + if ($usersManager->updateByColumnId($userForm)) { + $user = $usersManager->searchById($id); + Messages::addSuccess(__('Usuario actualizado correctamente.')); + } else { + Messages::addDanger(__('Error al actualizar el usuario.')); + } + } else { + Messages::addDanger(__('Error en los campos del usuario.')); + } + } - if (empty($inputs)) { - return FALSE; + $this->sendViewProfiles(); + $gravatar = $this->getGravatar(); + //En el panel de administración el tamaño sera 128px + $gravatar->setSize(128); + $gravatar->setEmail($user->getUserEmail()); + $user->setUserUrlImage($gravatar->get()); + $this->sendDataView([ + 'isUpdate' => TRUE, + 'selectedProfileId' => $user->getProfileId(), + 'user' => $user, + 'title' => __('Actualizar usuario'), + ]); + $this->view('form'); + } + + public function delete($id) { + if (Token::check()) { + if ($id == LoginManager::getUserId()) { + Messages::addDanger(__('No puedes eliminar este usuario.'), TRUE); + } else { + $usersManager = new UsersManager($this->getConnectionDB()); + $result = $usersManager->deleteById($id); + $rowCount = $usersManager->getRowCount(); + + if ($result === FALSE) { + Messages::addDanger(__('No se puede borrar un usuario con entradas publicadas.'), TRUE); + } elseif ($rowCount === 0) { + Messages::addDanger(__('Error al borrar el usuario.'), TRUE); + } else { + Messages::addSuccess(__('Usuario borrado correctamente.'), TRUE); + } + } } - $pass = Arrays::get($inputs, UsersManager::USER_PASSWORD); - $passR = Arrays::get($inputs, UsersManager::USER_PASSWORD_REWRITE); + $this->redirectToAction('index'); + } + + protected function formToObject() { + $pass = $this->getInput(UsersManager::USER_PASSWORD); + $passR = $this->getInput(UsersManager::USER_PASSWORD_REWRITE); if (empty($pass) || empty($passR)) { $pass = NULL; @@ -82,19 +160,19 @@ protected function form() { $gravatar = $this->getGravatar(); $user = new User(); - $user->setId(Arrays::get($inputs, UsersManager::COLUMN_ID)); - $user->setUserEmail(Arrays::get($inputs, UsersManager::USER_EMAIL)); - $user->setUserLogin(Arrays::get($inputs, UsersManager::USER_LOGIN)); - $user->setUserName(Arrays::get($inputs, UsersManager::USER_NAME)); + $user->setId($this->getInput(UsersManager::COLUMN_ID)); + $user->setUserEmail($this->getInput(UsersManager::USER_EMAIL)); + $user->setUserLogin($this->getInput(UsersManager::USER_LOGIN)); + $user->setUserName($this->getInput(UsersManager::USER_NAME)); $user->setUserRegistered(NULL); - $user->setUserUrl(Arrays::get($inputs, UsersManager::USER_URL)); + $user->setUserUrl($this->getInput(UsersManager::USER_URL)); $user->setUserPassword($pass); $user->setUserPostCount(NULL); - $user->setProfileId(Arrays::get($inputs, UsersManager::PROFILE_ID)); + $user->setProfileId($this->getInput(UsersManager::PROFILE_ID)); $gravatar->setEmail($user->getUserEmail()); $user->setUserUrlImage($gravatar->get()); - if (Form::submit(Constants::FORM_CREATE)) { + if ($this->checkSubmit(Constants::FORM_CREATE)) { $user->setUserRegistered(Util::dateNow()); $user->setUserPostCount(0); } @@ -104,10 +182,10 @@ protected function form() { ]; } - protected function filterInputs() { - $isCreate = Form::submit(Constants::FORM_CREATE); + protected function formInputsBuilders() { + $isCreate = $this->checkSubmit(Constants::FORM_CREATE); - Form::setInput([ + return [ InputIntegerBuilder::init(UsersManager::COLUMN_ID) ->build(), InputEmailBuilder::init(UsersManager::USER_EMAIL) @@ -130,91 +208,7 @@ protected function filterInputs() { ->build(), InputIntegerBuilder::init(UsersManager::PROFILE_ID) ->build(), - ]); - - return Form::inputFilter(); - } - - private function getGravatar() { - $optionsManager = new OptionsManager(); - $gravatarOption = $optionsManager->searchByName(OptionConstants::GRAVATAR); - - if (empty($gravatarOption->getOptionValue())) { - $gravatar = new Gravatar(); - } else { - $gravatar = unserialize($gravatarOption->getOptionValue()); - } - - return $gravatar; - } - - private function sendViewProfiles() { - $profilesManager = new ProfilesManager(); - ViewController::sendViewData('profiles', $profilesManager->searchAll()); - } - - public function update($id) { - $usersManager = new UsersManager(); - $user = $usersManager->searchById($id); - - if (empty($user)) { - Messages::addDanger(__('El usuario no existe.'), TRUE); - Util::redirect(Router::getSiteURL() . 'admin/user'); - } elseif (Form::submit(Constants::FORM_UPDATE)) { - $form = $this->form(); - - if (empty($form)) { - Messages::addDanger(__('Error en los campos del usuario.')); - } else { - $userForm = Arrays::get($form, 'user'); - - if ($usersManager->updateByColumnId($userForm)) { - $user = $usersManager->searchById($id); - Messages::addSuccess(__('Usuario actualizado correctamente.')); - } else { - Messages::addDanger(__('Error al actualizar el usuario.')); - } - } - } - - $this->sendViewProfiles(); - $gravatar = $this->getGravatar(); - //En el panel de administración el tamaño sera 128px - $gravatar->setSize(128); - $gravatar->setEmail($user->getUserEmail()); - $user->setUserUrlImage($gravatar->get()); - ViewController::sendViewData('isUpdate', TRUE); - ViewController::sendViewData('selectedProfileId', $user->getProfileId()); - ViewController::sendViewData('user', $user); - ViewController::sendViewData('title', __('Actualizar usuario')); - ViewController::view('form'); - } - - public function delete($id) { - if ($id == LoginManager::getSession()) { - Messages::addDanger(__('No puedes eliminar este usuario.')); - } else { - $usersManager = new UsersManager(); - $result = $usersManager->deleteById($id); - $rowCount = $usersManager->getRowCount(); - - if ($result === FALSE) { - Messages::addDanger(__('No se puede borrar un usuario con entradas publicadas.')); - } elseif ($rowCount == 0) { - Messages::addDanger(__('Error al borrar el usuario.')); - } elseif ($rowCount > 0) { - Messages::addSuccess(__('Usuario borrado correctamente.')); - } - } - - parent::delete($id); + ]; } - protected function read() { - $usersManager = new UsersManager(); - $count = $usersManager->count(); - $limit = parent::pagination($count); - - ViewController::sendViewData('users', $usersManager->searchAll($limit)); - } } diff --git a/app/controllers/install/IndexController.php b/app/controllers/install/IndexController.php index 9c9dd61..1337ee0 100644 --- a/app/controllers/install/IndexController.php +++ b/app/controllers/install/IndexController.php @@ -6,60 +6,62 @@ namespace SoftnCMS\controllers\install; use SoftnCMS\classes\constants\Constants; -use SoftnCMS\controllers\ViewController; use SoftnCMS\models\managers\InstallManager; -use SoftnCMS\models\managers\OptionsManager; -use SoftnCMS\util\Arrays; +use SoftnCMS\util\controller\ControllerAbstract; use SoftnCMS\util\form\builders\InputAlphanumericBuilder; use SoftnCMS\util\form\builders\InputUrlBuilder; -use SoftnCMS\util\form\Form; use SoftnCMS\util\Messages; -use SoftnCMS\util\Util; /** * Class IndexController * @author Nicolás Marulanda P. */ -class IndexController { +class IndexController extends ControllerAbstract { public function index() { - if (Form::submit(Constants::FORM_SUBMIT)) { - $form = $this->form(); - - if (!empty($form)) { - $installManager = new InstallManager(); - - if ($installManager->checkConnection($form) && $installManager->createFileConfig($form)) { - if ($installManager->createTables()) { - Messages::addSuccess(__('El proceso de instalación se completo correctamente.'), TRUE); - Util::redirect(Arrays::get($form, InstallManager::INSTALL_SITE_URL) . 'login'); - } else { - Messages::addDanger(__('Error al crear las tablas de la base de datos.')); - } - } - } + if ($this->checkSubmit(Constants::FORM_SUBMIT) && $this->isValidForm() && $this->check()) { + Messages::addSuccess(__('El proceso de instalación se completo correctamente.'), TRUE); + $this->redirectRoute('login', 'register', 'index'); } - $optionsManager = new OptionsManager(); - ViewController::sendViewData('siteUrl', $optionsManager->getSiteUrl()); - ViewController::sendViewData('charset', 'utf8'); - ViewController::sendViewData('prefix', 'sn_'); - ViewController::sendViewData('host', 'localhost'); - ViewController::view('index'); + $this->sendDataView([ + 'charset' => 'utf8', + 'prefix' => 'sn_', + 'host' => 'localhost', + ]); + $this->view(); } - private function form() { - $inputs = $this->filterInputs(); + private function check() { + $installManager = new InstallManager(); + + if (!$installManager->checkConnection($this->getInputs())) { + Messages::addDanger(__('Error al establecer la conexión con la base de datos.')); + + return FALSE; + } - if (empty($inputs)) { + if (!$installManager->createFileConfig($this->getInputs())) { + return FALSE; } - return $inputs; + if (!$installManager->createTables()) { + Messages::addDanger(__('Error al crear las tablas de la base de datos.')); + + return FALSE; + } + + return TRUE; } - private function filterInputs() { - Form::setInput([ + protected function formToObject() { + //Se devuelve true para que pase la validación del formulario. + return TRUE; + } + + protected function formInputsBuilders() { + return [ InputUrlBuilder::init(InstallManager::INSTALL_SITE_URL) ->build(), InputAlphanumericBuilder::init(InstallManager::INSTALL_DB_NAME) @@ -85,9 +87,7 @@ private function filterInputs() { InputAlphanumericBuilder::init(InstallManager::INSTALL_CHARSET) ->setWithoutSpace(TRUE) ->build(), - ]); - - return Form::inputFilter(); + ]; } } diff --git a/app/controllers/login/IndexController.php b/app/controllers/login/IndexController.php index 97dd79e..82a9086 100644 --- a/app/controllers/login/IndexController.php +++ b/app/controllers/login/IndexController.php @@ -6,16 +6,12 @@ namespace SoftnCMS\controllers\login; use SoftnCMS\classes\constants\Constants; -use SoftnCMS\controllers\ControllerAbstract; -use SoftnCMS\controllers\ViewController; use SoftnCMS\models\managers\LoginManager; -use SoftnCMS\models\managers\OptionsManager; use SoftnCMS\models\managers\UsersManager; use SoftnCMS\models\tables\User; -use SoftnCMS\util\Arrays; +use SoftnCMS\util\controller\ControllerAbstract; use SoftnCMS\util\form\builders\InputAlphanumericBuilder; use SoftnCMS\util\form\builders\InputBooleanBuilder; -use SoftnCMS\util\form\Form; use SoftnCMS\util\Messages; use SoftnCMS\util\Util; @@ -27,22 +23,22 @@ class IndexController extends ControllerAbstract { public function index() { $this->login(); - $this->read(); - ViewController::view('index'); + $this->sendDataView([ + 'urlRegister' => $this->getRequest() + ->getSiteUrl() . 'login/register', + ]); + $this->view(); } private function login() { - if (Form::submit(Constants::FORM_SUBMIT)) { - $form = $this->form(); - - if (!empty($form)) { - $user = Arrays::get($form, 'user'); - $rememberMe = Arrays::get($form, 'rememberMe'); + if ($this->checkSubmit(Constants::FORM_SUBMIT)) { + if ($this->isValidForm()) { + $user = $this->getForm('user'); + $rememberMe = $this->getForm('rememberMe'); - if (LoginManager::login($user, $rememberMe)) { - $optionsManager = new OptionsManager(); + if (LoginManager::login($user, $rememberMe, $this->getConnectionDB())) { Messages::addSuccess(__('Inicio de sesión correcto.'), TRUE); - Util::redirect($optionsManager->getSiteUrl(), 'admin'); + $this->redirect('admin'); } } @@ -50,27 +46,20 @@ private function login() { } } - protected function form() { - $inputs = $this->filterInputs(); - - if ($inputs === FALSE) { - return FALSE; - } - - $rememberMe = Arrays::get($inputs, UsersManager::USER_REMEMBER_ME); - $pass = Arrays::get($inputs, UsersManager::USER_PASSWORD); - $user = new User(); - $user->setUserLogin(Arrays::get($inputs, UsersManager::USER_LOGIN)); + protected function formToObject() { + $pass = $this->getInput(UsersManager::USER_PASSWORD); + $user = new User(); + $user->setUserLogin($this->getInput(UsersManager::USER_LOGIN)); $user->setUserPassword(Util::encrypt($pass, LOGGED_KEY)); return [ 'user' => $user, - 'rememberMe' => $rememberMe, + 'rememberMe' => $this->getInput(UsersManager::USER_REMEMBER_ME), ]; } - protected function filterInputs() { - Form::setInput([ + protected function formInputsBuilders() { + return [ InputAlphanumericBuilder::init(UsersManager::USER_LOGIN) ->setAccents(FALSE) ->setWithoutSpace(TRUE) @@ -81,17 +70,7 @@ protected function filterInputs() { InputBooleanBuilder::init(UsersManager::USER_REMEMBER_ME) ->setRequire(FALSE) ->build(), - ]); - - return Form::inputFilter(); - } - - protected function read() { - $optionsManager = new OptionsManager(); - $siteUrl = $optionsManager->getSiteUrl(); - $urlRegister = $siteUrl . 'login/register'; - ViewController::sendViewData('siteUrl', $siteUrl); - ViewController::sendViewData('urlRegister', $urlRegister); + ]; } } diff --git a/app/controllers/login/LogoutController.php b/app/controllers/login/LogoutController.php index 7d15c36..0bbcb4e 100644 --- a/app/controllers/login/LogoutController.php +++ b/app/controllers/login/LogoutController.php @@ -6,15 +6,14 @@ namespace SoftnCMS\controllers\login; use SoftnCMS\models\managers\LoginManager; -use SoftnCMS\models\managers\OptionsManager; +use SoftnCMS\util\controller\ControllerAbstract; use SoftnCMS\util\Messages; -use SoftnCMS\util\Util; /** * Class LogoutController * @author Nicolás Marulanda P. */ -class LogoutController { +class LogoutController extends ControllerAbstract { public function index() { if (LoginManager::isLogin()) { @@ -28,7 +27,6 @@ public function index() { } Messages::addSuccess(__('Cierre de sesión correcto.'), TRUE); - $optionsManager = new OptionsManager(); - Util::redirect($optionsManager->getSiteUrl(), 'login'); + $this->redirect('login'); } } diff --git a/app/controllers/login/RegisterController.php b/app/controllers/login/RegisterController.php index 73e7a4d..928bddd 100644 --- a/app/controllers/login/RegisterController.php +++ b/app/controllers/login/RegisterController.php @@ -7,15 +7,12 @@ use SoftnCMS\classes\constants\Constants; use SoftnCMS\classes\constants\OptionConstants; -use SoftnCMS\controllers\ControllerAbstract; -use SoftnCMS\controllers\ViewController; use SoftnCMS\models\managers\OptionsManager; use SoftnCMS\models\managers\UsersManager; use SoftnCMS\models\tables\User; -use SoftnCMS\util\Arrays; +use SoftnCMS\util\controller\ControllerAbstract; use SoftnCMS\util\form\builders\InputAlphanumericBuilder; use SoftnCMS\util\form\builders\InputEmailBuilder; -use SoftnCMS\util\form\Form; use SoftnCMS\util\Messages; use SoftnCMS\util\Util; @@ -27,22 +24,22 @@ class RegisterController extends ControllerAbstract { public function index() { $this->register(); - $this->read(); - ViewController::view('index'); + $this->sendDataView([ + 'urlLogin' => $this->getRequest() + ->getSiteUrl() . 'login', + ]); + $this->view(); } private function register() { - if (Form::submit(Constants::FORM_SUBMIT)) { - $form = $this->form(); - - if (!empty($form)) { - $usersManager = new UsersManager(); - $user = Arrays::get($form, 'user'); + if ($this->checkSubmit(Constants::FORM_SUBMIT)) { + if ($this->isValidForm()) { + $usersManager = new UsersManager($this->getConnectionDB()); + $user = $this->getForm('user'); if ($usersManager->create($user)) { - $optionsManager = new OptionsManager(); Messages::addSuccess(__('Usuario registrado correctamente.'), TRUE); - Util::redirect($optionsManager->getSiteUrl(), 'login'); + $this->redirect('login'); } } @@ -50,26 +47,20 @@ private function register() { } } - protected function form() { - $inputs = $this->filterInputs(); - - if (empty($inputs)) { - return FALSE; - } - - $pass = Arrays::get($inputs, UsersManager::USER_PASSWORD); - $passR = Arrays::get($inputs, UsersManager::USER_PASSWORD_REWRITE); + protected function formToObject() { + $pass = $this->getInput(UsersManager::USER_PASSWORD); + $passR = $this->getInput(UsersManager::USER_PASSWORD_REWRITE); if ($pass != $passR) { return FALSE; } - $optionsManager = new OptionsManager(); + $optionsManager = new OptionsManager($this->getConnectionDB()); $pass = Util::encrypt($pass, LOGGED_KEY); $user = new User(); $user->setUserPassword($pass); - $user->setUserLogin(Arrays::get($inputs, UsersManager::USER_LOGIN)); - $user->setUserEmail(Arrays::get($inputs, UsersManager::USER_EMAIL)); + $user->setUserLogin($this->getInput(UsersManager::USER_LOGIN)); + $user->setUserEmail($this->getInput(UsersManager::USER_EMAIL)); $user->setUserRegistered(Util::dateNow()); $user->setUserName($user->getUserLogin()); $user->setUserPostCount(0); @@ -79,8 +70,8 @@ protected function form() { return ['user' => $user]; } - protected function filterInputs() { - Form::setInput([ + protected function formInputsBuilders() { + return [ InputAlphanumericBuilder::init(UsersManager::USER_LOGIN) ->setAccents(FALSE) ->setWithoutSpace(TRUE) @@ -92,17 +83,7 @@ protected function filterInputs() { ->build(), InputEmailBuilder::init(UsersManager::USER_EMAIL) ->build(), - ]); - - return Form::inputFilter(); - } - - protected function read() { - $optionsManager = new OptionsManager(); - $siteUrl = $optionsManager->getSiteUrl(); - $urlLogin = $siteUrl . 'login'; - ViewController::sendViewData('siteUrl', $siteUrl); - ViewController::sendViewData('urlLogin', $urlLogin); + ]; } } diff --git a/app/controllers/theme/CategoryController.php b/app/controllers/theme/CategoryController.php index f832337..bb6c466 100644 --- a/app/controllers/theme/CategoryController.php +++ b/app/controllers/theme/CategoryController.php @@ -5,15 +5,12 @@ namespace SoftnCMS\controllers\theme; -use SoftnCMS\controllers\template\PostTemplate; -use SoftnCMS\controllers\ThemeControllerAbstract; -use SoftnCMS\controllers\ViewController; +use SoftnCMS\models\template\PostTemplate; use SoftnCMS\models\managers\CategoriesManager; use SoftnCMS\models\managers\PostsCategoriesManager; use SoftnCMS\models\managers\PostsManager; use SoftnCMS\models\tables\Post; -use SoftnCMS\rute\Router; -use SoftnCMS\util\Util; +use SoftnCMS\util\controller\ThemeControllerAbstract; /** * Class CategoryController @@ -21,28 +18,30 @@ */ class CategoryController extends ThemeControllerAbstract { - protected function read($id) { - $categoriesManager = new CategoriesManager(); + public function index($id) { + $categoriesManager = new CategoriesManager($this->getConnectionDB()); $category = $categoriesManager->searchById($id); if (empty($category)) { - Util::redirect(Router::getSiteURL()); + $this->redirect(); } - $postStatus = TRUE; - $postsManager = new PostsManager(); - $postsCategoriesManager = new PostsCategoriesManager(); - $count = $postsCategoriesManager->countPostsByCategoryIdAndPostStatus($id, $postStatus); - $limit = parent::pagination($count); - - - $posts = $postsManager->searchAllByCategoryIdAndStatus($category->getId(), $postStatus, $limit); - $postsTemplate = array_map(function(Post $post) { - return new PostTemplate($post, TRUE); + $postStatus = TRUE; + $postsManager = new PostsManager($this->getConnectionDB()); + $postsCategoriesManager = new PostsCategoriesManager($this->getConnectionDB()); + $count = $postsCategoriesManager->countPostsByCategoryIdAndPostStatus($id, $postStatus); + $limit = $this->rowsPages($count); + $posts = $postsManager->searchAllByCategoryIdAndStatus($category->getId(), $postStatus, $limit); + $postsTemplate = array_map(function(Post $post) { + return new PostTemplate($post, TRUE, $this->getRequest() + ->getSiteUrl(), $this->getConnectionDB()); }, $posts); - ViewController::sendViewData('posts', $postsTemplate); - ViewController::sendViewData('category', $category); + $this->sendDataView([ + 'posts' => $postsTemplate, + 'category' => $category, + ]); + $this->view(); } } diff --git a/app/controllers/theme/IndexController.php b/app/controllers/theme/IndexController.php index b0f6b0d..0c8660a 100644 --- a/app/controllers/theme/IndexController.php +++ b/app/controllers/theme/IndexController.php @@ -5,35 +5,27 @@ namespace SoftnCMS\controllers\theme; -use SoftnCMS\controllers\ControllerAbstract; -use SoftnCMS\controllers\template\PostTemplate; -use SoftnCMS\controllers\ViewController; +use SoftnCMS\models\template\PostTemplate; use SoftnCMS\models\managers\PostsManager; use SoftnCMS\models\tables\Post; +use SoftnCMS\util\controller\ThemeControllerAbstract; /** * Class IndexController * @author Nicolás Marulanda P. */ -class IndexController extends ControllerAbstract { +class IndexController extends ThemeControllerAbstract { public function index() { - $this->read(); - ViewController::view('index'); - } - - protected function read() { - $postStatus = TRUE; - $postsManager = new PostsManager(); - $count = $postsManager->countByStatus($postStatus); - $limit = parent::pagination($count); - - $posts = $postsManager->searchAllByStatus($postStatus, $limit); + $postStatus = TRUE; + $postsManager = new PostsManager($this->getConnectionDB()); + $count = $postsManager->countByStatus($postStatus); + $posts = $postsManager->searchAllByStatus($postStatus, $this->rowsPages($count)); $postsTemplate = array_map(function(Post $post) { - return new PostTemplate($post, TRUE); + return new PostTemplate($post, TRUE, $this->getRequest()->getSiteUrl(), $this->getConnectionDB()); }, $posts); - - ViewController::sendViewData('posts', $postsTemplate); + $this->sendDataView(['posts' => $postsTemplate]); + $this->view(); } } diff --git a/app/controllers/theme/PageController.php b/app/controllers/theme/PageController.php index 349c63d..793934c 100644 --- a/app/controllers/theme/PageController.php +++ b/app/controllers/theme/PageController.php @@ -6,20 +6,16 @@ namespace SoftnCMS\controllers\theme; use SoftnCMS\classes\constants\Constants; -use SoftnCMS\controllers\template\PageTemplate; -use SoftnCMS\controllers\ThemeControllerAbstract; -use SoftnCMS\controllers\ViewController; +use SoftnCMS\models\template\PageTemplate; use SoftnCMS\models\managers\CommentsManager; use SoftnCMS\models\managers\LoginManager; use SoftnCMS\models\managers\PagesManager; use SoftnCMS\models\managers\UsersManager; use SoftnCMS\models\tables\Comment; -use SoftnCMS\rute\Router; -use SoftnCMS\util\Arrays; +use SoftnCMS\util\controller\ThemeControllerAbstract; use SoftnCMS\util\form\builders\InputAlphanumericBuilder; use SoftnCMS\util\form\builders\InputEmailBuilder; use SoftnCMS\util\form\builders\InputIntegerBuilder; -use SoftnCMS\util\form\Form; use SoftnCMS\util\Util; /** @@ -29,44 +25,45 @@ class PageController extends ThemeControllerAbstract { public function index($id) { + $pagesManager = new PagesManager($this->getConnectionDB()); + $page = $pagesManager->searchByIdAndStatus($id, TRUE); + + if (empty($page)) { + $this->redirect(); + } + $this->comment(); - parent::index($id); + $this->sendDataView([ + 'page' => new PageTemplate($page, TRUE, $this->getRequest() + ->getSiteUrl(), $this->getConnectionDB()), + ]); + $this->view(); } private function comment() { - if (Form::submit(Constants::FORM_SUBMIT)) { - $form = $this->form(); + if ($this->checkSubmit(Constants::FORM_SUBMIT) && $this->isValidForm()) { + $commentsManager = new CommentsManager($this->getConnectionDB()); + $comment = $this->getForm('comment'); - if (!empty($form)) { - $commentsManager = new CommentsManager(); - $comment = Arrays::get($form, 'comment'); - - if ($commentsManager->create($comment)) { - //TODO: mensaje - } + if ($commentsManager->create($comment)) { + //TODO: mensaje } } } - private function form() { - $inputs = $this->filterInputs(); - - if (empty($inputs)) { - return FALSE; - } - + protected function formToObject() { $comment = new Comment(); - $comment->setCommentContents(Arrays::get($inputs, CommentsManager::COMMENT_CONTENTS)); - $comment->setCommentAuthorEmail(Arrays::get($inputs, CommentsManager::COMMENT_AUTHOR_EMAIL)); - $comment->setCommentAuthor(Arrays::get($inputs, CommentsManager::COMMENT_AUTHOR)); - $comment->setCommentUserId(Arrays::get($inputs, CommentsManager::COMMENT_USER_ID)); + $comment->setCommentContents($this->getInput(CommentsManager::COMMENT_CONTENTS)); + $comment->setCommentAuthorEmail($this->getInput(CommentsManager::COMMENT_AUTHOR_EMAIL)); + $comment->setCommentAuthor($this->getInput(CommentsManager::COMMENT_AUTHOR)); + $comment->setCommentUserId($this->getInput(CommentsManager::COMMENT_USER_ID)); $comment->setCommentStatus(0); $comment->setCommentDate(Util::dateNow()); - $comment->setPostId(Arrays::get($inputs, CommentsManager::POST_ID)); + $comment->setPostId($this->getInput(CommentsManager::POST_ID)); if (LoginManager::isLogin()) { - $usersManager = new UsersManager(); - $user = $usersManager->searchById(LoginManager::getSession()); + $usersManager = new UsersManager($this->getConnectionDB()); + $user = $usersManager->searchById(LoginManager::getUserId()); $comment->setCommentAuthorEmail($user->getUserEmail()); $comment->setCommentAuthor($user->getUserName()); } @@ -74,10 +71,10 @@ private function form() { return ['comment' => $comment]; } - private function filterInputs() { + protected function formInputsBuilders() { $isRequire = !LoginManager::isLogin(); - Form::setInput([ + return [ InputAlphanumericBuilder::init(CommentsManager::COMMENT_AUTHOR) ->setRequire($isRequire) ->build(), @@ -92,21 +89,7 @@ private function filterInputs() { ->build(), InputIntegerBuilder::init(CommentsManager::POST_ID) ->build(), - ]); - - return Form::inputFilter(); - } - - protected function read($id) { - $pageStatus = TRUE; - $pagesManager = new PagesManager(); - $page = $pagesManager->searchByIdAndStatus($id, $pageStatus); - - if (empty($page)) { - Util::redirect(Router::getSiteURL()); - } - - ViewController::sendViewData('page', new PageTemplate($page, TRUE)); + ]; } } diff --git a/app/controllers/theme/PostController.php b/app/controllers/theme/PostController.php index b47d7d1..a821f1a 100644 --- a/app/controllers/theme/PostController.php +++ b/app/controllers/theme/PostController.php @@ -6,20 +6,16 @@ namespace SoftnCMS\controllers\theme; use SoftnCMS\classes\constants\Constants; -use SoftnCMS\controllers\template\PostTemplate; -use SoftnCMS\controllers\ThemeControllerAbstract; -use SoftnCMS\controllers\ViewController; use SoftnCMS\models\managers\CommentsManager; use SoftnCMS\models\managers\LoginManager; use SoftnCMS\models\managers\PostsManager; use SoftnCMS\models\managers\UsersManager; use SoftnCMS\models\tables\Comment; -use SoftnCMS\rute\Router; -use SoftnCMS\util\Arrays; +use SoftnCMS\models\template\PostTemplate; +use SoftnCMS\util\controller\ThemeControllerAbstract; use SoftnCMS\util\form\builders\InputAlphanumericBuilder; use SoftnCMS\util\form\builders\InputEmailBuilder; use SoftnCMS\util\form\builders\InputIntegerBuilder; -use SoftnCMS\util\form\Form; use SoftnCMS\util\Util; /** @@ -29,44 +25,45 @@ class PostController extends ThemeControllerAbstract { public function index($id) { + $postsManager = new PostsManager($this->getConnectionDB()); + $post = $postsManager->searchByIdAndStatus($id, TRUE); + + if (empty($post)) { + $this->redirect(); + } + $this->comment(); - parent::index($id); + $this->sendDataView([ + 'post' => new PostTemplate($post, TRUE, $this->getRequest() + ->getSiteUrl(), $this->getConnectionDB()), + ]); + $this->view(); } private function comment() { - if (Form::submit(Constants::FORM_SUBMIT)) { - $form = $this->form(); + if ($this->checkSubmit(Constants::FORM_SUBMIT) && $this->isValidForm()) { + $commentsManager = new CommentsManager($this->getConnectionDB()); + $comment = $this->getForm('comment'); - if (!empty($form)) { - $commentsManager = new CommentsManager(); - $comment = Arrays::get($form, 'comment'); - - if ($commentsManager->create($comment)) { - //TODO: mensaje - } + if ($commentsManager->create($comment)) { + //TODO: mensaje } } } - private function form() { - $inputs = $this->filterInputs(); - - if (empty($inputs)) { - return FALSE; - } - + protected function formToObject() { $comment = new Comment(); - $comment->setCommentContents(Arrays::get($inputs, CommentsManager::COMMENT_CONTENTS)); - $comment->setCommentAuthorEmail(Arrays::get($inputs, CommentsManager::COMMENT_AUTHOR_EMAIL)); - $comment->setCommentAuthor(Arrays::get($inputs, CommentsManager::COMMENT_AUTHOR)); - $comment->setCommentUserId(Arrays::get($inputs, CommentsManager::COMMENT_USER_ID)); + $comment->setCommentContents($this->getInput(CommentsManager::COMMENT_CONTENTS)); + $comment->setCommentAuthorEmail($this->getInput(CommentsManager::COMMENT_AUTHOR_EMAIL)); + $comment->setCommentAuthor($this->getInput(CommentsManager::COMMENT_AUTHOR)); + $comment->setCommentUserId($this->getInput(CommentsManager::COMMENT_USER_ID)); $comment->setCommentStatus(0); $comment->setCommentDate(Util::dateNow()); - $comment->setPostId(Arrays::get($inputs, CommentsManager::POST_ID)); + $comment->setPostId($this->getInput(CommentsManager::POST_ID)); if (LoginManager::isLogin()) { - $usersManager = new UsersManager(); - $user = $usersManager->searchById(LoginManager::getSession()); + $usersManager = new UsersManager($this->getConnectionDB()); + $user = $usersManager->searchById(LoginManager::getUserId()); $comment->setCommentAuthorEmail($user->getUserEmail()); $comment->setCommentAuthor($user->getUserName()); $comment->setCommentStatus(1); @@ -75,10 +72,10 @@ private function form() { return ['comment' => $comment]; } - private function filterInputs() { + protected function formInputsBuilders() { $isRequire = !LoginManager::isLogin(); - Form::setInput([ + return [ InputAlphanumericBuilder::init(CommentsManager::COMMENT_AUTHOR) ->setRequire($isRequire) ->build(), @@ -93,21 +90,7 @@ private function filterInputs() { ->build(), InputIntegerBuilder::init(CommentsManager::POST_ID) ->build(), - ]); - - return Form::inputFilter(); - } - - protected function read($id) { - $postStatus = TRUE; - $postsManager = new PostsManager(); - $post = $postsManager->searchByIdAndStatus($id, $postStatus); - - if (empty($post)) { - Util::redirect(Router::getSiteURL()); - } - - ViewController::sendViewData('post', new PostTemplate($post, TRUE)); + ]; } } diff --git a/app/controllers/theme/TermController.php b/app/controllers/theme/TermController.php index db77f69..0a572c4 100644 --- a/app/controllers/theme/TermController.php +++ b/app/controllers/theme/TermController.php @@ -5,15 +5,12 @@ namespace SoftnCMS\controllers\theme; -use SoftnCMS\controllers\template\PostTemplate; -use SoftnCMS\controllers\ThemeControllerAbstract; -use SoftnCMS\controllers\ViewController; +use SoftnCMS\models\template\PostTemplate; use SoftnCMS\models\managers\PostsManager; use SoftnCMS\models\managers\PostsTermsManager; use SoftnCMS\models\managers\TermsManager; use SoftnCMS\models\tables\Post; -use SoftnCMS\rute\Router; -use SoftnCMS\util\Util; +use SoftnCMS\util\controller\ThemeControllerAbstract; /** * Class TermController @@ -21,27 +18,30 @@ */ class TermController extends ThemeControllerAbstract { - protected function read($id) { - $termsManager = new TermsManager(); + public function index($id) { + $termsManager = new TermsManager($this->getConnectionDB()); $term = $termsManager->searchById($id); if (empty($term)) { - Util::redirect(Router::getSiteURL()); + $this->redirect(); } $postStatus = TRUE; - $postsManager = new PostsManager(); - $postsTermsManager = new PostsTermsManager(); + $postsManager = new PostsManager($this->getConnectionDB()); + $postsTermsManager = new PostsTermsManager($this->getConnectionDB()); $count = $postsTermsManager->countPostsByTermIdAndPostStatus($id, $postStatus); - $limit = parent::pagination($count); - - $posts = $postsManager->searchAllByTermIdAndStatus($term->getId(), $postStatus, $limit); - $postsTemplate = array_map(function(Post $post) { - return new PostTemplate($post, TRUE); + $limit = $this->rowsPages($count); + $posts = $postsManager->searchAllByTermIdAndStatus($term->getId(), $postStatus, $limit); + $postsTemplate = array_map(function(Post $post) { + return new PostTemplate($post, TRUE, $this->getRequest() + ->getSiteUrl(), $this->getConnectionDB()); }, $posts); - ViewController::sendViewData('posts', $postsTemplate); - ViewController::sendViewData('term', $term); + $this->sendDataView([ + 'posts' => $postsTemplate, + 'term' => $term, + ]); + $this->view(); } } diff --git a/app/controllers/theme/UserController.php b/app/controllers/theme/UserController.php index f5aa555..10aab68 100644 --- a/app/controllers/theme/UserController.php +++ b/app/controllers/theme/UserController.php @@ -5,14 +5,11 @@ namespace SoftnCMS\controllers\theme; -use SoftnCMS\controllers\template\PostTemplate; -use SoftnCMS\controllers\ThemeControllerAbstract; -use SoftnCMS\controllers\ViewController; use SoftnCMS\models\managers\PostsManager; use SoftnCMS\models\managers\UsersManager; use SoftnCMS\models\tables\Post; -use SoftnCMS\rute\Router; -use SoftnCMS\util\Util; +use SoftnCMS\models\template\PostTemplate; +use SoftnCMS\util\controller\ThemeControllerAbstract; /** * Class UserController @@ -20,26 +17,29 @@ */ class UserController extends ThemeControllerAbstract { - protected function read($id) { - $usersManager = new UsersManager(); + public function index($id) { + $usersManager = new UsersManager($this->getConnectionDB()); $user = $usersManager->searchById($id); if (empty($user)) { - Util::redirect(Router::getSiteURL()); + $this->redirect(); } - $postStatus = TRUE; - $postsManager = new PostsManager(); - $count = $postsManager->countByUserIdAndStatus($id, $postStatus); - $limit = parent::pagination($count); - + $postStatus = TRUE; + $postsManager = new PostsManager($this->getConnectionDB()); + $count = $postsManager->countByUserIdAndStatus($id, $postStatus); + $limit = $this->rowsPages($count); $posts = $postsManager->searchByUserIdAndStatus($user->getId(), $postStatus, $limit); $postsTemplate = array_map(function(Post $post) { - return new PostTemplate($post, TRUE); + return new PostTemplate($post, TRUE, $this->getRequest() + ->getSiteUrl(), $this->getConnectionDB()); }, $posts); - ViewController::sendViewData('posts', $postsTemplate); - ViewController::sendViewData('user', $user); + $this->sendDataView([ + 'posts' => $postsTemplate, + 'user' => $user, + ]); + $this->view(); } } diff --git a/app/define.php b/app/define.php index 3f60a19..45810ae 100644 --- a/app/define.php +++ b/app/define.php @@ -25,6 +25,8 @@ /** Espacio de nombre de la aplicación. */ define('APP_NAMESPACE', 'SoftnCMS\\'); +define('NAMESPACE_MANAGER_ABSTRACT', APP_NAMESPACE . 'util\\database\\ManagerAbstract'); + /** Espacio de nombre de los controladores. */ define('NAMESPACE_CONTROLLERS', APP_NAMESPACE . 'controllers\\'); @@ -61,4 +63,4 @@ define('REPLACE_SQL_SITE_URL', '#{SITE_URL}'); define('REPLACE_SQL_PREFIX', '#{PREFIX}'); /** Nombre del parámetro enviado por url para establecer el idioma de la web. */ -define('PARAM_LANGUAGE', 'lan'); +define('PARAM_LANGUAGE', 'lang'); diff --git a/app/load.php b/app/load.php index b2c18ed..cdb9784 100644 --- a/app/load.php +++ b/app/load.php @@ -9,35 +9,63 @@ require ABSPATH . 'vendor/autoload.php'; use SoftnCMS\classes\constants\OptionConstants; -use SoftnCMS\controllers\template\MenuTemplate; use SoftnCMS\controllers\ViewController; +use SoftnCMS\models\LicenseAbstract; +use SoftnCMS\models\managers\LoginManager; use SoftnCMS\models\managers\MenusManager; +use SoftnCMS\models\managers\OptionsManager; use SoftnCMS\models\managers\SidebarsManager; use SoftnCMS\models\managers\UsersManager; -use SoftnCMS\rute\Router; -use SoftnCMS\models\managers\LoginManager; -use SoftnCMS\util\Util; -use SoftnCMS\models\managers\OptionsManager; -use SoftnCMS\util\Messages; +use SoftnCMS\models\template\MenuTemplate; use SoftnCMS\route\Route; -use SoftnCMS\models\LicenseAbstract; +use SoftnCMS\rute\Router; use SoftnCMS\util\Logger; +use SoftnCMS\util\Messages; +use SoftnCMS\util\Util; session_start(); -Logger::getInstance() - ->debug('Inicio de la aplicación.'); $router = new Router(); -$router->setEvent(Router::EVENT_ERROR, function() { - Util::redirect(Router::getSiteURL()); +$router->setFuncSiteUrl(function() use ($router) { + $optionsManager = new OptionsManager($router->getConnectionDB()); + $optionSiteUrl = $optionsManager->searchByName(OptionConstants::SITE_URL); + + if (empty($optionSiteUrl)) { + return ""; + } + + return $optionSiteUrl->getOptionValue(); +}); +$router->setFuncCheckViewTheme(function() use (&$router) { + $controllerDirectoryName = $router->getRoute() + ->getControllerDirectoryName(); + + if ($controllerDirectoryName == Route::CONTROLLER_DIRECTORY_NAME_THEME) { + + if (!defined('INSTALL')) { + $optionsManager = new OptionsManager($router->getConnectionDB()); + $controllerDirectoryName = $optionsManager->searchByName(OptionConstants::THEME) + ->getOptionValue(); + } + + $router->getRoute() + ->setViewDirectoryName($controllerDirectoryName); + $router->getRoute() + ->setViewPath(THEMES); + } +}); +$router->setEvent(Router::EVENT_ERROR, function() use ($router) { + Util::redirect($router->getRequest() + ->getSiteUrl()); }); $router->setEvent(Router::EVENT_INIT_LOAD, function() use ($router) { - \SoftnCMS\util\Language::load(); $route = $router->getRoute(); $directoryController = $route->getControllerDirectoryName(); $directoryView = $route->getDirectoryNameViewController(); - $siteUrl = Router::getSiteURL(); + $siteUrl = $router->getRequest() + ->getSiteUrl(); $isInstall = defined('INSTALL') || $directoryController == 'install'; + $language = NULL; if ($isInstall) { if (file_exists(ABSPATH . 'config.php')) { @@ -48,14 +76,25 @@ ->debug('Redireccionando a la pagina de instalación.'); Util::redirect($siteUrl . 'install'); } - } elseif ($directoryController == Route::CONTROLLER_DIRECTORY_NAME_ADMIN && !LoginManager::isLogin()) { + } else { + $optionsManager = new OptionsManager($router->getConnectionDB()); + $optionLanguage = $optionsManager->searchByName(OptionConstants::LANGUAGE); + + if (!empty($optionLanguage)) { + $language = $optionLanguage->getOptionValue(); + } + } + + \SoftnCMS\util\Language::load($language); + + if ($directoryController == Route::CONTROLLER_DIRECTORY_NAME_ADMIN && !LoginManager::isLogin()) { Messages::addWarning(__('Debes iniciar sesión.'), TRUE); Util::redirect($siteUrl, 'login'); } elseif ($directoryController == Route::CONTROLLER_DIRECTORY_NAME_LOGIN && $directoryView == 'index' && LoginManager::isLogin()) { Util::redirect($siteUrl, 'admin'); } - ViewController::setViewDataBase(function() use ($directoryController, $isInstall, $siteUrl) { + ViewController::setViewDataBase(function() use ($directoryController, $isInstall, $siteUrl, $router) { if ($isInstall) { return [ 'siteUrl' => $siteUrl, @@ -63,24 +102,28 @@ ]; } - $optionsManager = new OptionsManager(); + $optionsManager = new OptionsManager($router->getConnectionDB()); $user = NULL; $menuList = []; $sidebars = []; if ($directoryController == Route::CONTROLLER_DIRECTORY_NAME_THEME) { - $menusManager = new MenusManager(); + $menusManager = new MenusManager($router->getConnectionDB()); $optionMenu = $optionsManager->searchByName(OptionConstants::MENU); $menu = $menusManager->searchById($optionMenu->getOptionValue()); - $menuTemplate = new MenuTemplate($menu, TRUE); + $menuTemplate = new MenuTemplate($menu, TRUE, $siteUrl, $router->getConnectionDB()); $menuList = $menuTemplate->getSubMenuList(); - $sidebarsManager = new SidebarsManager(); + $sidebarsManager = new SidebarsManager($router->getConnectionDB()); $sidebars = $sidebarsManager->searchAll(); } if (LoginManager::checkSession()) { - $usersManager = new UsersManager(); - $user = $usersManager->searchById(LoginManager::getSession()); + $usersManager = new UsersManager($router->getConnectionDB()); + $user = $usersManager->searchById(LoginManager::getUserId()); + + if (empty($user)) { + Util::redirect($siteUrl, 'login/logout'); + } } return [ @@ -97,13 +140,15 @@ $route = $router->getRoute(); if ($route->getControllerDirectoryName() == Route::CONTROLLER_DIRECTORY_NAME_ADMIN) { - $canCallUserFun = LicenseAbstract::initCheck($route, LoginManager::getSession()); + $canCallUserFun = LicenseAbstract::initCheck($router, LoginManager::getUserId()); $router->setCanCallUserFunc($canCallUserFun); + //TODO: Crear una implementación que permita saber cuando se realiza una llamada desde AJAX. //No redirecciona al borrar, porque este método ejecuta mediante AJAX. - if (!$canCallUserFun && $route->getMethodName() != 'delete' && $route->getMethodName() != 'reloadAJAX') { + if (!$canCallUserFun && $route->getMethodName() != 'delete' && $route->getMethodName() != 'reload') { Messages::addDanger(__('No tienes permisos para visualizar esta pagina.'), TRUE); - Util::redirect(Router::getSiteURL() . 'admin'); + Util::redirect($router->getRequest() + ->getSiteUrl(), 'admin'); } } }); diff --git a/app/models/LicenseAbstract.php b/app/models/LicenseAbstract.php index 5cd676d..ee8d8a1 100644 --- a/app/models/LicenseAbstract.php +++ b/app/models/LicenseAbstract.php @@ -9,7 +9,7 @@ use SoftnCMS\models\managers\ProfilesLicensesManager; use SoftnCMS\models\tables\OptionLicense; use SoftnCMS\models\tables\ProfileLicense; -use SoftnCMS\route\Route; +use SoftnCMS\rute\Router; use SoftnCMS\util\Arrays; /** @@ -21,8 +21,8 @@ abstract class LicenseAbstract implements LicenseInterface { /** @var LicenseAbstract */ private static $INSTANCE; - /** @var Route */ - protected $route; + /** @var Router */ + protected $router; /** @var int */ protected $userId; @@ -42,11 +42,11 @@ abstract class LicenseAbstract implements LicenseInterface { /** * License constructor. * - * @param Route $route - * @param int $userId + * @param Router $router + * @param int $userId */ - public function __construct($route, $userId) { - $this->route = $route; + public function __construct($router, $userId) { + $this->router = $router; $this->userId = $userId; $this->currentOptionLicense = NULL; $this->optionsLicenses = []; @@ -61,18 +61,19 @@ public static function getInstance() { } /** - * @param Route $route - * @param int $userId + * @param Router $router + * @param int $userId * * @return bool True, si tiene algún permiso mayor o igual que 'LICENSE_READ_CODE' * o True en caso de no encontrar la clase 'xLicense' correspondiente. */ - public static function initCheck($route, $userId) { - $controllerName = $route->getControllerName(); + public static function initCheck($router, $userId) { + $controllerName = $router->getRoute() + ->getControllerName(); $nameSpaceLicense = NAMESPACES_LICENSES . $controllerName . 'License'; if (class_exists($nameSpaceLicense)) { - self::$INSTANCE = new $nameSpaceLicense($route, $userId); + self::$INSTANCE = new $nameSpaceLicense($router, $userId); return self::$INSTANCE->check(); } @@ -81,7 +82,7 @@ public static function initCheck($route, $userId) { } public function check() { - $this->setOptionsLicenses($this->getLicensesByUserId($this->userId), $this->route); + $this->setOptionsLicenses($this->getLicensesByUserId($this->userId)); //Si no existe configurado ningún permiso, se permite el acceso total return $this->noLicenseConfigured || !empty($this->currentOptionLicense); @@ -89,12 +90,13 @@ public function check() { /** * @param array $licensesId - * @param Route $route */ - private function setOptionsLicenses($licensesId, $route) { - $pageName = $route->getControllerName(); - $methodName = $route->getMethodName(); - $optionsLicensesManager = new OptionsLicensesManager(); + private function setOptionsLicenses($licensesId) { + $pageName = $this->router->getRoute() + ->getControllerName(); + $methodName = $this->router->getRoute() + ->getMethodName(); + $optionsLicensesManager = new OptionsLicensesManager($this->router->getConnectionDB()); $this->noLicenseConfigured = $optionsLicensesManager->count() == 0; $this->optionsLicenses = $optionsLicensesManager->searchAllByLicensesId($licensesId); $currentOptionLicense = array_filter($this->optionsLicenses, function(OptionLicense $optionLicense) use ($pageName, $methodName) { @@ -104,7 +106,7 @@ private function setOptionsLicenses($licensesId, $route) { } private function getLicensesByUserId($userId) { - $profilesLicensesManager = new ProfilesLicensesManager(); + $profilesLicensesManager = new ProfilesLicensesManager($this->router->getConnectionDB()); $UserLicenses = $profilesLicensesManager->searchAllByUserId($userId); return array_map(function(ProfileLicense $userLicense) { diff --git a/app/models/TemplateAbstract.php b/app/models/TemplateAbstract.php new file mode 100644 index 0000000..8c2c285 --- /dev/null +++ b/app/models/TemplateAbstract.php @@ -0,0 +1,61 @@ +siteUrl = $siteUrl; + $this->connectionDB = $connectionDB; + } + + /** + * @return string + */ + public function getSiteUrl() { + return $this->siteUrl; + } + + /** + * @param string $siteUrl + */ + public function setSiteUrl($siteUrl) { + $this->siteUrl = $siteUrl; + } + + public abstract function initRelationship(); + + /** + * @return mixed + */ + public function getConnectionDB() { + return $this->connectionDB; + } + + /** + * @param mixed $connectionDB + */ + public function setConnectionDB($connectionDB) { + $this->connectionDB = $connectionDB; + } + +} diff --git a/app/models/managers/CategoriesManager.php b/app/models/managers/CategoriesManager.php index a34ee09..be52dd9 100644 --- a/app/models/managers/CategoriesManager.php +++ b/app/models/managers/CategoriesManager.php @@ -8,6 +8,7 @@ use SoftnCMS\models\tables\Category; use SoftnCMS\models\tables\Post; use SoftnCMS\util\Arrays; +use SoftnCMS\util\database\DBInterface; use SoftnCMS\util\database\ManagerAbstract; /** @@ -24,6 +25,10 @@ class CategoriesManager extends ManagerAbstract { const CATEGORY_POST_COUNT = 'category_post_count'; + public function __construct(DBInterface $connection = NULL) { + parent::__construct($connection); + } + public function searchByPostId($postId) { $columnPostId = PostsCategoriesManager::POST_ID; $tablePostsCategories = parent::getTableWithPrefix(PostsCategoriesManager::TABLE); diff --git a/app/models/managers/CommentsManager.php b/app/models/managers/CommentsManager.php index 6a5e534..a87c63e 100644 --- a/app/models/managers/CommentsManager.php +++ b/app/models/managers/CommentsManager.php @@ -7,6 +7,7 @@ use SoftnCMS\models\tables\Comment; use SoftnCMS\util\Arrays; +use SoftnCMS\util\database\DBInterface; use SoftnCMS\util\database\ManagerAbstract; /** @@ -45,7 +46,7 @@ public function searchByPostIdAndStatus($postId, $status) { } public function delete($id) { - $postsManager = new PostsManager(); + $postsManager = new PostsManager($this->getConnection()); $post = $postsManager->searchByCommentId($id); $result = parent::deleteById($id); @@ -65,7 +66,7 @@ public function create($object) { $result = parent::create($object); if ($result) { - $postsManager = new PostsManager(); + $postsManager = new PostsManager($this->getConnection()); $postsManager->updateCommentCount($object->getPostId(), 1); } diff --git a/app/models/managers/InstallManager.php b/app/models/managers/InstallManager.php index f1f86ad..7da5982 100644 --- a/app/models/managers/InstallManager.php +++ b/app/models/managers/InstallManager.php @@ -44,7 +44,6 @@ public function checkConnection($dataInput) { try { $this->connection = new \PDO($dsn, $dbUser, $dbPass); } catch (\PDOException $pdoEx) { - Messages::addDanger(__('Error al establecer la conexión con la base de datos.')); Logger::getInstance() ->withName('INSTALL') ->error($pdoEx->getMessage()); @@ -57,7 +56,7 @@ public function checkConnection($dataInput) { public function createFileConfig($dataInput) { //Compruebo si puedo escribir en la carpeta donde están los archivo if (!is_writable(ABSPATH)) { - Messages::addDanger(__('No es posible escribir en el directorio %1$s.', ABSPATH)); + Messages::addDanger(__('No es posible escribir en el directorio de la aplicación.', ABSPATH)); Logger::getInstance() ->withName('INSTALL') ->debug('No es posible escribir en el directorio.', ['directory' => ABSPATH]); @@ -65,21 +64,65 @@ public function createFileConfig($dataInput) { return FALSE; } - $configFile = $this->getDataFileConfig($dataInput); - $configFile_path = ABSPATH . 'config.php'; - $handle = fopen($configFile_path, 'w'); - foreach ($configFile as $line) { - fwrite($handle, $line); + $dataConfigSample = $this->getDataFileConfig($dataInput); + $pathConfig = ABSPATH . 'config.php'; + $handle = fopen($pathConfig, 'w'); + $notError = TRUE; + $len = count($dataConfigSample); + + if ($handle === FALSE) { + Messages::addDanger(__('Error al abrir el archivo de configuración en modo escritura.')); + Logger::getInstance() + ->withName('INSTALL') + ->error(__('Error al abrir el archivo de configuración en modo escritura.'), ['pathConfig' => $pathConfig]); + + return FALSE; } - fclose($handle); - chmod($configFile_path, 0666); - return TRUE; + for ($i = 0; $i < $len && $notError; ++$i) { + if (fwrite($handle, $dataConfigSample[$i]) === FALSE) { + $notError = FALSE; + Logger::getInstance() + ->withName('INSTALL') + ->error('Error al escribir en el archivo de configuración.', ['line' => $dataConfigSample[$i]]); + } + } + + if (fclose($handle) === FALSE) { + Logger::getInstance() + ->withName('INSTALL') + ->error('Error al cerrar el archivo de configuración.'); + $notError = FALSE; + } + + if ($notError && chmod($pathConfig, 0666) === FALSE) { + Logger::getInstance() + ->withName('INSTALL') + ->error('Error al establecer los permisos del archivo de configuración.'); + $notError = FALSE; + } + + return $notError; } + /** + * @param $dataInput + * + * @return array|bool + */ private function getDataFileConfig($dataInput) { $this->createConstants($dataInput); - $configFile = file(ABSPATH . 'config-sample.php'); + $pathConfigSample = ABSPATH . 'config-sample.php'; + $configFile = file($pathConfigSample); + + if ($configFile === FALSE) { + Logger::getInstance() + ->withName('INSTALL') + ->error(__('Error al abrir el archivo base de configuración.'), ['pathConfigSample' => $pathConfigSample]); + Messages::addDanger(__('Error al abrir el archivo base de configuración.')); + + return []; + } foreach ($configFile as $num => $line) { //Si no encuentra la excreción regular en la linea, pasa a la siguiente iteración @@ -137,16 +180,42 @@ private function generateKey($len = 64) { } public function createTables() { - $fileScriptSQL = ABSPATH . '../softn_cms.sql'; + $pathScriptSQL = sprintf('%1$s%2$s%3$s%4$s', ABSPATH, '..', DIRECTORY_SEPARATOR, 'softn_cms.sql'); - if (!is_readable($fileScriptSQL)) { + if (!is_readable($pathScriptSQL)) { + Messages::addDanger(__('No se puede leer el script de instalación SQL.')); + Logger::getInstance() + ->withName('INSTALL') + ->error(__('No se puede leer el script de instalación SQL.'), ['pathScriptSQL' => $pathScriptSQL]); + + return FALSE; + } + + $scriptSQL = file_get_contents($pathScriptSQL); + + if ($scriptSQL === FALSE) { + Messages::addDanger(__('Error al obtener el contenido del script de instalación SQL.')); + Logger::getInstance() + ->withName('INSTALL') + ->error('Error al obtener el contenido del script de instalación SQL.', ['pathScriptSQL' => $pathScriptSQL]); + return FALSE; } - $scriptSQL = file_get_contents($fileScriptSQL); $scriptSQL = str_replace(REPLACE_SQL_SITE_URL, URL_WEB, $scriptSQL); $scriptSQL = str_replace(REPLACE_SQL_PREFIX, DB_PREFIX, $scriptSQL); - return $this->connection->exec($scriptSQL) !== FALSE; + if ($this->connection->exec($scriptSQL) === FALSE) { + Logger::getInstance() + ->withName('INSTALL') + ->error(__('Error al ejecutar el script de instalación SQL.'), [ + 'errorInfo' => $this->connection->errorInfo(), + 'errorCode' => $this->connection->errorCode(), + ]); + + return FALSE; + } + + return TRUE; } } diff --git a/app/models/managers/LicensesManager.php b/app/models/managers/LicensesManager.php index 7d6b8f0..a3134a8 100644 --- a/app/models/managers/LicensesManager.php +++ b/app/models/managers/LicensesManager.php @@ -43,7 +43,7 @@ public function configuredCount() { $tableOptionLicense = parent::getTableWithPrefix(OptionsLicensesManager::TABLE); $query = 'SELECT COUNT(*) AS COUNT FROM %1$s WHERE %2$s IN (SELECT %3$s FROM %4$s)'; $query = sprintf($query, $this->getTableWithPrefix(), self::COLUMN_ID, OptionsLicensesManager::LICENSE_ID, $tableOptionLicense); - $result = Arrays::findFirst(parent::getDB() + $result = Arrays::findFirst(parent::getConnection() ->select($query)); return empty($result) ? 0 : $result; @@ -83,6 +83,12 @@ private function nameExists($name, $id) { return !empty($result) && $result->getId() != $id; } + public function update($object) { + $object = $this->checkName($object); + + return parent::updateByColumnId($object); + } + /** * @param License $object */ diff --git a/app/models/managers/LoginManager.php b/app/models/managers/LoginManager.php index e4c2bd4..dd748f9 100644 --- a/app/models/managers/LoginManager.php +++ b/app/models/managers/LoginManager.php @@ -6,6 +6,10 @@ namespace SoftnCMS\models\managers; use SoftnCMS\models\tables\User; +use SoftnCMS\util\Arrays; +use SoftnCMS\util\database\DBInterface; +use SoftnCMS\util\Logger; +use SoftnCMS\util\Token; /** * Class LoginManager @@ -13,29 +17,73 @@ */ class LoginManager { + const TOKEN_DATA_USER_ID = 'userId'; + /** - * @param User $user - * @param bool $rememberMe + * @param User $user + * @param bool $rememberMe + * @param DBInterface $connectionDB * * @return bool */ - public static function login($user, $rememberMe) { - $usersManager = new UsersManager(); - $searchUser = $usersManager->searchByLogin($user->getUserLogin()); + public static function login($user, $rememberMe, DBInterface $connectionDB) { + $usersManager = new UsersManager($connectionDB); + $searchUser = $usersManager->searchByLoginAndPassword($user->getUserLogin(), $user->getUserPassword()); - if ($searchUser === FALSE || $user->getUserPassword() != $searchUser->getUserPassword()) { + if (empty($searchUser)) { return FALSE; } - $_SESSION[SESSION_USER] = $searchUser->getId(); + $sessionToken = Token::generateNewToken(self::dataToken($searchUser->getId())); + $_SESSION[SESSION_USER] = $sessionToken; if ($rememberMe) { - setcookie(COOKIE_USER_REMEMBER, $searchUser->getID(), COOKIE_EXPIRE, '/'); + setcookie(COOKIE_USER_REMEMBER, $sessionToken, COOKIE_EXPIRE, '/'); } return TRUE; } + /** + * @param string|int $userId + * + * @return array + */ + public static function dataToken($userId = NULL) { + if (empty($userId) && !empty(self::getSession())) { + $userId = self::getUserId(); + } + + return [self::TOKEN_DATA_USER_ID => $userId]; + } + + /** + * Método que obtiene el identificador del usuario en sesión. + * @return string + */ + public static function getSession() { + if (defined('INSTALL') && isset($_SESSION[SESSION_USER])) { + unset($_SESSION[SESSION_USER]); + } + + return isset($_SESSION[SESSION_USER]) ? $_SESSION[SESSION_USER] : ""; + } + + /** + * @return int + */ + public static function getUserId() { + $data = Token::getData(self::getSession()); + $user = Arrays::get($data, self::TOKEN_DATA_USER_ID); + + if (empty($user)) { + Logger::getInstance() + ->error(__('No se encontró el usuario de la sesión.'), ['data' => $data]); + } + + return $user; + } + /** * Método que comprueba si ha iniciado sesión. * @return bool Si es FALSE, el usuario no tiene un sesión activa @@ -59,23 +107,12 @@ public static function isLogin() { * @return bool */ public static function checkSession() { - $usersManager = new UsersManager(); - $session = self::getSession(); + $output = FALSE; - if ($session == 0 || $usersManager->searchById($session) === FALSE) { - unset($_SESSION[SESSION_USER]); - - return FALSE; + if (!empty($session = self::getSession())) { + $output = !empty(Arrays::get(Token::getData($session), self::TOKEN_DATA_USER_ID)); } - return TRUE; - } - - /** - * Método que obtiene el identificador del usuario en sesión. - * @return int - */ - public static function getSession() { - return isset($_SESSION[SESSION_USER]) ? $_SESSION[SESSION_USER] : 0; + return $output; } } diff --git a/app/models/managers/MenusManager.php b/app/models/managers/MenusManager.php index 5c2ede9..47d99c6 100644 --- a/app/models/managers/MenusManager.php +++ b/app/models/managers/MenusManager.php @@ -7,6 +7,7 @@ use SoftnCMS\models\tables\Menu; use SoftnCMS\util\Arrays; +use SoftnCMS\util\database\DBInterface; use SoftnCMS\util\database\ManagerAbstract; use SoftnCMS\util\Messages; @@ -30,6 +31,20 @@ class MenusManager extends ManagerAbstract { const MENU_SUB_PARENT = 0; + private $rowCountDelete; + + public function __construct(DBInterface $connection = NULL) { + parent::__construct($connection); + $this->rowCountDelete = 0; + } + + /** + * @return int + */ + public function getRowCountDelete() { + return $this->rowCountDelete; + } + /** * @param string $limit * @@ -69,7 +84,8 @@ public function searchByMenuSub($menuSub, $limit = '') { * @return bool */ public function deleteById($id) { - $menu = $this->searchById($id); + $this->rowCountDelete = 0; + $menu = $this->searchById($id); if (empty($menu)) { return FALSE; @@ -85,7 +101,12 @@ public function deleteById($id) { return FALSE; } - $parentMenuId = $menu->getMenuSub(); + /* + * Guardo el numero de filas afectadas por la consulta "DELETE", + * porque, se pierde su valor al usar "updateParentsChildren" y "updatePositions". + */ + $this->rowCountDelete = $this->getRowCount(); + $parentMenuId = $menu->getMenuSub(); if ($parentMenuId != self::MENU_SUB_PARENT) { if (!$this->updateParentsChildren($parentMenuId, -count($menuIdList))) { @@ -234,7 +255,7 @@ public function count() { $columnMenuSub = self::MENU_SUB; parent::addPrepareStatement($columnMenuSub, self::MENU_SUB_PARENT, \PDO::PARAM_INT); $query = sprintf('SELECT COUNT(*) AS COUNT FROM %1$s WHERE %2$s = :%2$s', parent::getTableWithPrefix(), $columnMenuSub); - $result = Arrays::findFirst(parent::getDB() + $result = Arrays::findFirst(parent::getConnection() ->select($query)); return empty($result) ? 0 : $result; diff --git a/app/models/managers/PostsCategoriesManager.php b/app/models/managers/PostsCategoriesManager.php index 2138f90..3f876a4 100644 --- a/app/models/managers/PostsCategoriesManager.php +++ b/app/models/managers/PostsCategoriesManager.php @@ -27,7 +27,7 @@ public function countPostsByCategoryIdAndPostStatus($categoryId, $postStatus) { $query = sprintf('SELECT COUNT(*) AS COUNT FROM %1$s WHERE %2$s = :%2$s AND %3$s IN (SELECT %4$s FROM %5$s WHERE %6$s = :%6$s)', $table, self::CATEGORY_ID, self::POST_ID, PostsManager::COLUMN_ID, $tablePosts, PostsManager::POST_STATUS); parent::addPrepareStatement(self::CATEGORY_ID, $categoryId, \PDO::PARAM_INT); parent::addPrepareStatement(PostsManager::POST_STATUS, $postStatus, \PDO::PARAM_INT); - $result = Arrays::findFirst(parent::getDB() + $result = Arrays::findFirst(parent::getConnection() ->select($query)); return empty($result) ? 0 : $result; @@ -39,9 +39,10 @@ public function countPostsByCategoryIdAndPostStatus($categoryId, $postStatus) { * @return bool */ public function create($object) { + //"Create" retorna el id, pero, "posts_categories" no tiene "id" y retorna "0". $result = parent::create($object); - if (!empty($result)) { + if (!empty($result) || $result == 0) { $this->updateCategoryPostCount($object->getCategoryId(), 1); } @@ -49,7 +50,7 @@ public function create($object) { } private function updateCategoryPostCount($categoryId, $num) { - $categoriesManager = new CategoriesManager(); + $categoriesManager = new CategoriesManager($this->getConnection()); return $categoriesManager->updatePostCount($categoryId, $num); } diff --git a/app/models/managers/PostsManager.php b/app/models/managers/PostsManager.php index 03e49a9..cae537c 100644 --- a/app/models/managers/PostsManager.php +++ b/app/models/managers/PostsManager.php @@ -35,13 +35,6 @@ class PostsManager extends ManagerAbstract { const USER_ID = 'user_id'; - /** - * PostsManager constructor. - */ - public function __construct() { - parent::__construct(); - } - public function searchByIdAndStatus($id, $status) { parent::addPrepareStatement(self::COLUMN_ID, $id, \PDO::PARAM_INT); parent::addPrepareStatement(self::POST_STATUS, $status, \PDO::PARAM_INT); @@ -55,7 +48,7 @@ public function countByStatus($status) { $table = parent::getTableWithPrefix(); $query = sprintf('SELECT COUNT(*) AS COUNT FROM %1$s WHERE %2$s = :%2$s', $table, self::POST_STATUS); parent::addPrepareStatement(self::POST_STATUS, $status, \PDO::PARAM_INT); - $result = Arrays::findFirst(parent::getDB() + $result = Arrays::findFirst(parent::getConnection() ->select($query)); return empty($result) ? 0 : $result; @@ -66,7 +59,7 @@ public function countByUserIdAndStatus($userId, $status) { $query = sprintf('SELECT COUNT(*) AS COUNT FROM %1$s WHERE %2$s = :%2$s AND %3$s = :%3$s', $table, self::POST_STATUS, self::USER_ID); parent::addPrepareStatement(self::POST_STATUS, $status, \PDO::PARAM_INT); parent::addPrepareStatement(self::USER_ID, $userId, \PDO::PARAM_INT); - $result = Arrays::findFirst(parent::getDB() + $result = Arrays::findFirst(parent::getConnection() ->select($query)); return empty($result) ? 0 : $result; @@ -83,9 +76,9 @@ public function searchAllByStatus($status, $limit = '') { } public function deleteById($id) { - $usersManager = new UsersManager(); - $postsCategoriesManager = new PostsCategoriesManager(); - $postsTermsManager = new PostsTermsManager(); + $usersManager = new UsersManager($this->getConnection()); + $postsCategoriesManager = new PostsCategoriesManager($this->getConnection()); + $postsTermsManager = new PostsTermsManager($this->getConnection()); $postsCategories = $postsCategoriesManager->searchAllByPostId($id); $postsTerms = $postsTermsManager->searchAllByPostId($id); $user = $usersManager->searchByPostId($id); @@ -211,7 +204,7 @@ private function checkUpdateUser($currentPost) { $currentUserId = $currentPost->getUserId(); if ($userId != $currentUserId) { - $userManager = new UsersManager(); + $userManager = new UsersManager($this->getConnection()); $userManager->updatePostCount($userId, -1); $userManager->updatePostCount($currentUserId, 1); } diff --git a/app/models/managers/PostsTermsManager.php b/app/models/managers/PostsTermsManager.php index f21c33c..9c5c739 100644 --- a/app/models/managers/PostsTermsManager.php +++ b/app/models/managers/PostsTermsManager.php @@ -27,7 +27,7 @@ public function countPostsByTermIdAndPostStatus($termId, $postStatus) { $query = sprintf('SELECT COUNT(*) AS COUNT FROM %1$s WHERE %2$s = :%2$s AND %3$s IN (SELECT %4$s FROM %5$s WHERE %6$s = :%6$s)', $table, self::TERM_ID, self::POST_ID, PostsManager::COLUMN_ID, $tablePosts, PostsManager::POST_STATUS); parent::addPrepareStatement(self::TERM_ID, $termId, \PDO::PARAM_INT); parent::addPrepareStatement(PostsManager::POST_STATUS, $postStatus, \PDO::PARAM_INT); - $result = Arrays::findFirst(parent::getDB() + $result = Arrays::findFirst(parent::getConnection() ->select($query)); return empty($result) ? 0 : $result; @@ -55,7 +55,7 @@ public function searchAllByPostId($postId) { } private function updateTermPostCount($termId, $num) { - $termsManager = new TermsManager(); + $termsManager = new TermsManager($this->getConnection()); return $termsManager->updatePostCount($termId, $num); } @@ -76,9 +76,10 @@ public function deleteAllByTermId($termId) { * @return bool */ public function create($object) { + //"Create" retorna el id, pero, "posts_terms" no tiene "id" y retorna "0". $result = parent::create($object); - if (!empty($result)) { + if (!empty($result) || $result == 0) { $this->updateTermPostCount($object->getTermId(), 1); } diff --git a/app/models/managers/ProfilesManager.php b/app/models/managers/ProfilesManager.php index 46926b9..10b3a61 100644 --- a/app/models/managers/ProfilesManager.php +++ b/app/models/managers/ProfilesManager.php @@ -55,6 +55,12 @@ private function nameExists($name, $id) { return !empty($result) && $result->getId() != $id; } + public function update($object) { + $object = $this->checkName($object); + + return parent::updateByColumnId($object); + } + /** * @param Profile $object */ diff --git a/app/models/managers/SidebarsManager.php b/app/models/managers/SidebarsManager.php index babae6c..b8a9aff 100644 --- a/app/models/managers/SidebarsManager.php +++ b/app/models/managers/SidebarsManager.php @@ -72,7 +72,11 @@ private function updatePositions() { } public function searchAll($limit = '', $orderBy = '') { - return parent::searchAll('', self::SIDEBAR_POSITION . ' ASC'); + if (empty($orderBy)) { + $orderBy = self::SIDEBAR_POSITION . ' ASC'; + } + + return parent::searchAll($limit, $orderBy); } /** diff --git a/app/models/managers/UsersManager.php b/app/models/managers/UsersManager.php index f19fc65..030a558 100644 --- a/app/models/managers/UsersManager.php +++ b/app/models/managers/UsersManager.php @@ -114,6 +114,14 @@ public function searchByLogin($userLogin) { return Arrays::findFirst($result); } + public function searchByLoginAndPassword($userLogin, $userPassword) { + parent::addPrepareStatement(self::USER_LOGIN, $userLogin, \PDO::PARAM_STR); + parent::addPrepareStatement(self::USER_PASSWORD, $userPassword, \PDO::PARAM_STR); + $query = sprintf('SELECT * FROM %1$s WHERE %2$s = :%2$s AND %3$s = :%3$s', parent::getTableWithPrefix(), self::USER_LOGIN, self::USER_PASSWORD); + + return Arrays::findFirst(parent::search($query)); + } + /** * @param string $userEmail * @@ -166,7 +174,7 @@ public function updateByColumnId($object) { $result = parent::updateByColumnId($object); if ($result) { - $commentsManager = new CommentsManager(); + $commentsManager = new CommentsManager($this->getConnection()); $comments = $commentsManager->searchByUserId($object->getId()); //TODO: Una mejor opción seria solo guardar los datos para usuario no registrados, y asi no tener que actualizar los datos de los usuarios registrados. array_walk($comments, function(Comment $comment) use ($commentsManager, $object) { diff --git a/app/controllers/template/CategoryTemplate.php b/app/models/template/CategoryTemplate.php similarity index 71% rename from app/controllers/template/CategoryTemplate.php rename to app/models/template/CategoryTemplate.php index e939fbf..e962a76 100644 --- a/app/controllers/template/CategoryTemplate.php +++ b/app/models/template/CategoryTemplate.php @@ -3,20 +3,21 @@ * CategoryTemplate.php */ -namespace SoftnCMS\controllers\template; +namespace SoftnCMS\models\template; -use SoftnCMS\controllers\Template; use SoftnCMS\models\managers\CategoriesManager; use SoftnCMS\models\managers\PostsManager; use SoftnCMS\models\tables\Category; use SoftnCMS\models\tables\Post; +use SoftnCMS\models\TemplateAbstract; +use SoftnCMS\util\database\DBInterface; use SoftnCMS\util\Logger; /** * Class CategoryTemplate * @author Nicolás Marulanda P. */ -class CategoryTemplate extends Template { +class CategoryTemplate extends TemplateAbstract { /** @var Category */ private $category; @@ -27,11 +28,13 @@ class CategoryTemplate extends Template { /** * CategoryTemplate constructor. * - * @param Category $category - * @param bool $initRelationShip + * @param Category $category + * @param bool $initRelationShip + * @param string $siteUrl + * @param DBInterface $connectionDB */ - public function __construct(Category $category = NULL, $initRelationShip = FALSE) { - parent::__construct(); + public function __construct(Category $category = NULL, $initRelationShip = FALSE, $siteUrl = '', DBInterface $connectionDB = NULL) { + parent::__construct($siteUrl, $connectionDB); $this->category = $category; $this->posts = []; @@ -45,15 +48,15 @@ public function initRelationship() { } public function initPosts() { - $postsManager = new PostsManager(); + $postsManager = new PostsManager($this->getConnectionDB()); $this->posts = $postsManager->searchAllByCategoryId($this->category->getId()); $this->posts = array_map(function(Post $post) { - return new PostTemplate($post); + return new PostTemplate($post, FALSE, $this->getSiteUrl(), $this->getConnectionDB()); }, $this->posts); } public function initCategory($categoryId) { - $categoriesManager = new CategoriesManager(); + $categoriesManager = new CategoriesManager($this->getConnectionDB()); $this->category = $categoriesManager->searchById($categoryId); if (empty($this->category)) { diff --git a/app/controllers/template/CommentTemplate.php b/app/models/template/CommentTemplate.php similarity index 78% rename from app/controllers/template/CommentTemplate.php rename to app/models/template/CommentTemplate.php index 335dcb0..bb04be8 100644 --- a/app/controllers/template/CommentTemplate.php +++ b/app/models/template/CommentTemplate.php @@ -3,15 +3,16 @@ * CommentTemplate.php */ -namespace SoftnCMS\controllers\template; +namespace SoftnCMS\models\template; use SoftnCMS\classes\constants\OptionConstants; -use SoftnCMS\controllers\Template; use SoftnCMS\models\managers\CommentsManager; use SoftnCMS\models\managers\OptionsManager; use SoftnCMS\models\managers\PostsManager; use SoftnCMS\models\managers\UsersManager; use SoftnCMS\models\tables\Comment; +use SoftnCMS\models\TemplateAbstract; +use SoftnCMS\util\database\DBInterface; use SoftnCMS\util\Escape; use SoftnCMS\util\Logger; @@ -19,7 +20,7 @@ * Class CommentTemplate * @author Nicolás Marulanda P. */ -class CommentTemplate extends Template { +class CommentTemplate extends TemplateAbstract { /** @var Comment */ private $comment; @@ -36,16 +37,18 @@ class CommentTemplate extends Template { /** * CommentTemplate constructor. * - * @param Comment $comment - * @param bool $initRelationship + * @param Comment $comment + * @param bool $initRelationship + * @param string $siteUrl + * @param DBInterface $connectionDB */ - public function __construct(Comment $comment = NULL, $initRelationship = FALSE) { - parent::__construct(); + public function __construct(Comment $comment = NULL, $initRelationship = FALSE, $siteUrl = '', DBInterface $connectionDB = NULL) { + parent::__construct($siteUrl, $connectionDB); $comment->setCommentContents(Escape::htmlDecode($comment->getCommentContents())); $this->comment = $comment; $this->post = NULL; $this->userTemplate = NULL; - $optionsManager = new OptionsManager(); + $optionsManager = new OptionsManager($this->getConnectionDB()); $optionGravatar = $optionsManager->searchByName(OptionConstants::GRAVATAR); $gravatar = unserialize($optionGravatar->getOptionValue()); $this->defaultUserImage = $gravatar->get(); @@ -61,7 +64,7 @@ public function initRelationship() { } public function initPost() { - $postsManager = new PostsManager(); + $postsManager = new PostsManager($this->getConnectionDB()); $post = $postsManager->searchByCommentId($this->comment->getId()); if (empty($post)) { @@ -74,13 +77,13 @@ public function initPost() { } public function initUser() { - $usersManager = new UsersManager(); + $usersManager = new UsersManager($this->getConnectionDB()); $user = $usersManager->searchById($this->comment->getCommentUserId()); //No lanza exception ya que un usuario no registrado puede comentar. //TODO: agregar a la pagina de opciones si un usuario no registrado puede comentar. if (!empty($user)) { - $this->userTemplate = new UserTemplate($user); + $this->userTemplate = new UserTemplate($user, FALSE, $this->getSiteUrl(), $this->getConnectionDB()); } } @@ -97,7 +100,7 @@ public function getUserTemplate() { * @throws \Exception */ public function initComment($commentId) { - $commentsManager = new CommentsManager(); + $commentsManager = new CommentsManager($this->getConnectionDB()); $this->comment = $commentsManager->searchById($commentId); if (empty($this->comment)) { diff --git a/app/controllers/template/MenuTemplate.php b/app/models/template/MenuTemplate.php similarity index 71% rename from app/controllers/template/MenuTemplate.php rename to app/models/template/MenuTemplate.php index cbca013..8988bec 100644 --- a/app/controllers/template/MenuTemplate.php +++ b/app/models/template/MenuTemplate.php @@ -3,18 +3,19 @@ * MenuTemplate.php */ -namespace SoftnCMS\controllers\template; +namespace SoftnCMS\models\template; -use SoftnCMS\controllers\Template; use SoftnCMS\models\managers\MenusManager; use SoftnCMS\models\tables\Menu; +use SoftnCMS\models\TemplateAbstract; +use SoftnCMS\util\database\DBInterface; use SoftnCMS\util\Logger; /** * Class MenuTemplate * @author Nicolás Marulanda P. */ -class MenuTemplate extends Template { +class MenuTemplate extends TemplateAbstract { /** @var array */ private $subMenuList; @@ -25,11 +26,13 @@ class MenuTemplate extends Template { /** * MenuTemplate constructor. * - * @param Menu $menu - * @param bool $initRelationShip + * @param Menu $menu + * @param bool $initRelationShip + * @param string $siteUrl + * @param DBInterface $connectionDB */ - public function __construct(Menu $menu = NULL, $initRelationShip = FALSE) { - parent::__construct(); + public function __construct(Menu $menu = NULL, $initRelationShip = FALSE, $siteUrl = '', DBInterface $connectionDB = NULL) { + parent::__construct($siteUrl, $connectionDB); $this->menu = $menu; $this->subMenuList = []; @@ -44,17 +47,17 @@ public function initRelationship() { public function initSubMenuList() { if (!empty($this->menu)) { - $menusManager = new MenusManager(); + $menusManager = new MenusManager($this->getConnectionDB()); $menuList = $menusManager->searchByMenuSub($this->menu->getId()); $this->subMenuList = array_map(function(Menu $menu) { - return new MenuTemplate($menu, TRUE); + return new MenuTemplate($menu, TRUE, $this->getSiteUrl(), $this->getConnectionDB()); }, $menuList); } } public function initMenu($menuId) { - $menusManager = new MenusManager(); + $menusManager = new MenusManager($this->getConnectionDB()); $this->menu = $menusManager->searchById($menuId); if (empty($this->menu)) { diff --git a/app/controllers/template/PageTemplate.php b/app/models/template/PageTemplate.php similarity index 71% rename from app/controllers/template/PageTemplate.php rename to app/models/template/PageTemplate.php index 699bfc1..154e50c 100644 --- a/app/controllers/template/PageTemplate.php +++ b/app/models/template/PageTemplate.php @@ -3,11 +3,12 @@ * PageTemplate.php */ -namespace SoftnCMS\controllers\template; +namespace SoftnCMS\models\template; -use SoftnCMS\controllers\Template; use SoftnCMS\models\managers\PagesManager; use SoftnCMS\models\tables\Page; +use SoftnCMS\models\TemplateAbstract; +use SoftnCMS\util\database\DBInterface; use SoftnCMS\util\Escape; use SoftnCMS\util\Logger; @@ -15,7 +16,7 @@ * Class PageTemplate * @author Nicolás Marulanda P. */ -class PageTemplate extends Template { +class PageTemplate extends TemplateAbstract { /** @var Page */ private $page; @@ -23,11 +24,13 @@ class PageTemplate extends Template { /** * PageTemplate constructor. * - * @param Page $page - * @param bool $initRelationShip + * @param Page $page + * @param bool $initRelationShip + * @param string $siteUrl + * @param DBInterface $connectionDB */ - public function __construct(Page $page = NULL, $initRelationShip = FALSE) { - parent::__construct(); + public function __construct(Page $page = NULL, $initRelationShip = FALSE, $siteUrl = '', DBInterface $connectionDB = NULL) { + parent::__construct($siteUrl, $connectionDB); $page->setPageContents(Escape::htmlDecode($page->getPageContents())); $this->page = $page; @@ -40,7 +43,7 @@ public function initRelationship() { } public function initPage($pageId) { - $pagesManager = new PagesManager(); + $pagesManager = new PagesManager($this->getConnectionDB()); $this->page = $pagesManager->searchById($pageId); if ($this->page === FALSE) { diff --git a/app/controllers/template/PostTemplate.php b/app/models/template/PostTemplate.php similarity index 76% rename from app/controllers/template/PostTemplate.php rename to app/models/template/PostTemplate.php index 1df323e..0a83e36 100644 --- a/app/controllers/template/PostTemplate.php +++ b/app/models/template/PostTemplate.php @@ -3,10 +3,10 @@ * PostTemplate.php */ -namespace SoftnCMS\controllers\template; +namespace SoftnCMS\models\template; use SoftnCMS\classes\constants\OptionConstants; -use SoftnCMS\controllers\Template; +use SoftnCMS\models\TemplateAbstract; use SoftnCMS\models\managers\CategoriesManager; use SoftnCMS\models\managers\CommentsManager; use SoftnCMS\models\managers\OptionsManager; @@ -17,6 +17,7 @@ use SoftnCMS\models\tables\Comment; use SoftnCMS\models\tables\Post; use SoftnCMS\models\tables\Term; +use SoftnCMS\util\database\DBInterface; use SoftnCMS\util\Escape; use SoftnCMS\util\Logger; @@ -24,7 +25,7 @@ * Class PostTemplate * @author Nicolás Marulanda P. */ -class PostTemplate extends Template { +class PostTemplate extends TemplateAbstract { /** @var Post */ private $post; @@ -47,17 +48,19 @@ class PostTemplate extends Template { /** * PostTemplate constructor. * - * @param Post $post - * @param bool $initRelationship + * @param Post $post + * @param bool $initRelationship + * @param string $siteUrl + * @param DBInterface $connectionDB */ - public function __construct(Post $post = NULL, $initRelationship = FALSE) { - parent::__construct(); + public function __construct(Post $post = NULL, $initRelationship = FALSE, $siteUrl = '', DBInterface $connectionDB = NULL) { + parent::__construct($siteUrl, $connectionDB); $post->setPostContents(Escape::htmlDecode($post->getPostContents())); $this->post = $post; $this->categoriesTemplate = []; $this->termsTemplate = []; $this->userTemplate = NULL; - $optionsManager = new OptionsManager(); + $optionsManager = new OptionsManager($this->getConnectionDB()); $optionComment = $optionsManager->searchByName(OptionConstants::COMMENT); $this->canCommentAnyUser = !empty($optionComment->getOptionValue()); @@ -74,7 +77,7 @@ public function initRelationship() { } public function initUser() { - $usersManager = new UsersManager(); + $usersManager = new UsersManager($this->getConnectionDB()); $user = $usersManager->searchById($this->post->getUserId()); if (empty($user)) { @@ -83,31 +86,31 @@ public function initUser() { throw new \Exception("El usuario no existe."); } - $this->userTemplate = new UserTemplate($user); + $this->userTemplate = new UserTemplate($user, FALSE, $this->getSiteUrl(), $this->getConnectionDB()); } public function initCategories() { - $categoriesManager = new CategoriesManager(); + $categoriesManager = new CategoriesManager($this->getConnectionDB()); $this->categoriesTemplate = $categoriesManager->searchByPostId($this->post->getId()); $this->categoriesTemplate = array_map(function(Category $category) { - return new CategoryTemplate($category); + return new CategoryTemplate($category, FALSE, $this->getSiteUrl(), $this->getConnectionDB()); }, $this->categoriesTemplate); } public function initTerms() { - $termsManager = new TermsManager(); + $termsManager = new TermsManager($this->getConnectionDB()); $this->termsTemplate = $termsManager->searchByPostId($this->post->getId()); $this->termsTemplate = array_map(function(Term $term) { - return new TermTemplate($term); + return new TermTemplate($term, FALSE, $this->getSiteUrl(), $this->getConnectionDB()); }, $this->termsTemplate); } public function initComments() { $commentStatus = TRUE; - $commentsManager = new CommentsManager(); + $commentsManager = new CommentsManager($this->getConnectionDB()); $this->commentsTemplate = $commentsManager->searchByPostIdAndStatus($this->post->getId(), $commentStatus); $this->commentsTemplate = array_map(function(Comment $comment) { - return new CommentTemplate($comment); + return new CommentTemplate($comment, FALSE, $this->getSiteUrl(), $this->getConnectionDB()); }, $this->commentsTemplate); $this->post->setPostCommentCount(count($this->commentsTemplate)); @@ -119,7 +122,7 @@ public function initComments() { * @throws \Exception */ public function initPost($postId) { - $postsManager = new PostsManager(); + $postsManager = new PostsManager($this->getConnectionDB()); $this->post = $postsManager->searchById($postId); if ($this->post === FALSE) { diff --git a/app/controllers/template/SidebarTemplate.php b/app/models/template/SidebarTemplate.php similarity index 64% rename from app/controllers/template/SidebarTemplate.php rename to app/models/template/SidebarTemplate.php index abb2eb6..24b1f4e 100644 --- a/app/controllers/template/SidebarTemplate.php +++ b/app/models/template/SidebarTemplate.php @@ -3,28 +3,32 @@ * SidebarTemplate.php */ -namespace SoftnCMS\controllers\template; +namespace SoftnCMS\models\template; -use SoftnCMS\controllers\Template; use SoftnCMS\models\managers\SidebarsManager; use SoftnCMS\models\tables\Sidebar; +use SoftnCMS\models\TemplateAbstract; +use SoftnCMS\util\database\DBInterface; use SoftnCMS\util\Logger; /** * Class SidebarTemplate * @author Nicolás Marulanda P. */ -class SidebarTemplate extends Template { +class SidebarTemplate extends TemplateAbstract { private $sidebar; /** * SidebarTemplate constructor. * - * @param Sidebar $sidebar + * @param Sidebar $sidebar + * @param bool $initRelationShip + * @param string $siteUrl + * @param DBInterface $connectionDB */ - public function __construct($sidebar = NULL) { - parent::__construct(); + public function __construct($sidebar = NULL, $initRelationShip = FALSE, $siteUrl = '', DBInterface $connectionDB = NULL) { + parent::__construct($siteUrl, $connectionDB); $this->sidebar = $sidebar; } @@ -32,7 +36,7 @@ public function initRelationship() { } public function initSidebar($sidebarId) { - $sidebarsManager = new SidebarsManager(); + $sidebarsManager = new SidebarsManager($this->getConnectionDB()); $this->sidebar = $sidebarsManager->searchById($sidebarId); if (empty($this->sidebar)) { diff --git a/app/controllers/template/TermTemplate.php b/app/models/template/TermTemplate.php similarity index 70% rename from app/controllers/template/TermTemplate.php rename to app/models/template/TermTemplate.php index 1887732..5a2fcc1 100644 --- a/app/controllers/template/TermTemplate.php +++ b/app/models/template/TermTemplate.php @@ -3,20 +3,21 @@ * TermTemplate.php */ -namespace SoftnCMS\controllers\template; +namespace SoftnCMS\models\template; -use SoftnCMS\controllers\Template; use SoftnCMS\models\managers\PostsManager; use SoftnCMS\models\managers\TermsManager; use SoftnCMS\models\tables\Post; use SoftnCMS\models\tables\Term; +use SoftnCMS\models\TemplateAbstract; +use SoftnCMS\util\database\DBInterface; use SoftnCMS\util\Logger; /** * Class TermTemplate * @author Nicolás Marulanda P. */ -class TermTemplate extends Template { +class TermTemplate extends TemplateAbstract { /** @var Term */ private $term; @@ -27,11 +28,13 @@ class TermTemplate extends Template { /** * CategoryTemplate constructor. * - * @param Term $term - * @param bool $initRelationShip + * @param Term $term + * @param bool $initRelationShip + * @param string $siteUrl + * @param DBInterface $connectionDB */ - public function __construct(Term $term = NULL, $initRelationShip = FALSE) { - parent::__construct(); + public function __construct(Term $term = NULL, $initRelationShip = FALSE, $siteUrl = '', DBInterface $connectionDB = NULL) { + parent::__construct($siteUrl, $connectionDB); $this->term = $term; $this->posts = []; @@ -45,15 +48,15 @@ public function initRelationship() { } public function initPosts() { - $postsManager = new PostsManager(); + $postsManager = new PostsManager($this->getConnectionDB()); $this->posts = $postsManager->searchAllByTermId($this->term->getId()); $this->posts = array_map(function(Post $post) { - return new PostTemplate($post); + return new PostTemplate($post, FALSE, $this->getSiteUrl(), $this->getConnectionDB()); }, $this->posts); } public function initTerm($termId) { - $termsManager = new TermsManager(); + $termsManager = new TermsManager($this->getConnectionDB()); $this->term = $termsManager->searchById($termId); if (empty($this->term)) { diff --git a/app/controllers/template/UserTemplate.php b/app/models/template/UserTemplate.php similarity index 70% rename from app/controllers/template/UserTemplate.php rename to app/models/template/UserTemplate.php index c0212a8..ac16d33 100644 --- a/app/controllers/template/UserTemplate.php +++ b/app/models/template/UserTemplate.php @@ -3,20 +3,21 @@ * UserTemplate.php */ -namespace SoftnCMS\controllers\template; +namespace SoftnCMS\models\template; -use SoftnCMS\controllers\Template; +use SoftnCMS\models\TemplateAbstract; use SoftnCMS\models\managers\PostsManager; use SoftnCMS\models\managers\UsersManager; use SoftnCMS\models\tables\Post; use SoftnCMS\models\tables\User; +use SoftnCMS\util\database\DBInterface; use SoftnCMS\util\Logger; /** * Class UserTemplate * @author Nicolás Marulanda P. */ -class UserTemplate extends Template { +class UserTemplate extends TemplateAbstract { /** @var User */ private $user; @@ -27,11 +28,13 @@ class UserTemplate extends Template { /** * UserTemplate constructor. * - * @param User $user - * @param bool $initRelationship + * @param User $user + * @param bool $initRelationship + * @param string $siteUrl + * @param DBInterface $connectionDB */ - public function __construct(User $user = NULL, $initRelationship = FALSE) { - parent::__construct(); + public function __construct(User $user = NULL, $initRelationship = FALSE, $siteUrl = '', DBInterface $connectionDB = NULL) { + parent::__construct($siteUrl, $connectionDB); $this->user = $user; $this->post = []; @@ -45,15 +48,15 @@ public function initRelationship() { } public function initPosts() { - $postsManager = new PostsManager(); + $postsManager = new PostsManager($this->getConnectionDB()); $this->post = $postsManager->searchAllByUserId($this->user->getId()); $this->post = array_map(function(Post $post) { - return new PostTemplate($post); + return new PostTemplate($post, FALSE, $this->getSiteUrl(), $this->getConnectionDB()); }, $this->post); } public function initUser($userId) { - $usersManager = new UsersManager(); + $usersManager = new UsersManager($this->getConnectionDB()); $this->user = $usersManager->searchById($userId); if (empty($this->user)) { diff --git a/app/resources/css/style.css b/app/resources/css/style.css index ff54455..4520498 100644 --- a/app/resources/css/style.css +++ b/app/resources/css/style.css @@ -1,15 +1,23 @@ /* BOOTSTRAP ================================= */ +.pagination > li > a, +.modal-content, .alert, .panel, .list-group-item { border: 0; } +.modal-content, .panel, .dropdown-menu { box-shadow: none; } +.pagination > li:first-child > a, +.pagination > li:first-child > span, +.pagination > li:last-child > a, +.pagination > li:last-child > span, +.modal-content, .input-group-addon, .btn, .input-lg, @@ -26,8 +34,6 @@ padding: 20px 30px; } -.pagination > li > a, -.pagination > li > span, .form-control, .input-group-addon { border: 1px solid #DDDDDD; @@ -37,6 +43,11 @@ ul.list-unstyled > li > ul.list-unstyled { padding-left: 50px; } +.pagination > li > a, +.pagination > li > span { + margin-left: 1px; +} + /* COMÚN ================================= */ body { -moz-white-space: pre-wrap; /* css-3 */ @@ -286,7 +297,7 @@ ul.list-group li {list-style: none;} -ms-user-select: none; user-select: none; background-color: transparent; - border: 0px solid transparent; + border: 0 solid transparent; } .btn-nostyle.disabled { @@ -322,6 +333,6 @@ ul.list-untyped:first-child { } #option-license .panel-default.form-input-checkboxes > .panel-heading:hover { - background-color: #3f454c; + background-color: #3F454C; color: #FFFFFF; } diff --git a/app/resources/js/common.js b/app/resources/js/common.js index e07ea84..d750cde 100644 --- a/app/resources/js/common.js +++ b/app/resources/js/common.js @@ -123,7 +123,15 @@ function reloadData(url, data) { $('#data-container').html(data); }; - callAjax(url + 'reloadAJAX', 'GET', data, callback); + callAjax(url + 'reload', 'GET', data, callback); return true; } + +function reloadDataContainer(pageContainer, dataPaged) { + var url = pageContainer.data('url'); + var reloadView = '&view=' + pageContainer.data('reload-view'); + var reloadAction = '&action=' + pageContainer.data('reload-action'); + var reloadParam = '¶m=' + pageContainer.data('reload-param'); + reloadData(url, dataPaged + reloadView + reloadAction + reloadParam); +} diff --git a/app/resources/js/delete-data.js b/app/resources/js/delete-data.js index daeba91..ceae7fe 100644 --- a/app/resources/js/delete-data.js +++ b/app/resources/js/delete-data.js @@ -1,31 +1,33 @@ (function () { + var btnElement; + $(document).on('click', 'button.btn-danger', function (event) { event.preventDefault(); - deleteData(this); - }) + btnElement = $(this); + }); + + $('#btn-modal-delete-confirm').on('click', function () { + deleteData(btnElement, $(this)); + }); })(); -function deleteData(element) { - var url = $(element).closest('.page-container').data('url'); - var id = $(element).data('id'); - var data = 'deleteAJAX=true'; - var callback = function (dataMessages) { - var data = ''; - var dataPaged = $(document).find('.pagination > li.active > a').data('paged'); - var dataAdd = $(document).find('.page-container').data('add-url'); +function deleteData(btnDelete, btnModal) { + var pageContainer = btnDelete.closest('.page-container'); + var url = pageContainer.data('url'); + var id = btnDelete.data('id'); + var data = btnModal.data('token') + '&redirect=false'; + var callback = function (data) { + var pagination = $(document).find('.pagination > li.active > a'); + var dataPaged = ''; - if (dataPaged !== undefined) { - data = dataPaged; - - if (dataAdd !== undefined) { - data += '&' + dataAdd; - } - } else if (dataAdd !== undefined) { - data = dataAdd; + if (pagination.length > 0) { + dataPaged = pagination.data('paged'); } - reloadData(url, data); - includeMessages(dataMessages); + reloadDataContainer(pageContainer, dataPaged); + callAjax(url + 'messages', 'GET', '', function (dataMessages) { + includeMessages(dataMessages); + }); }; callAjax(url + 'delete/' + id, 'POST', data, callback); } diff --git a/app/resources/js/pagination.js b/app/resources/js/pagination.js index e46d8e9..bd5907e 100644 --- a/app/resources/js/pagination.js +++ b/app/resources/js/pagination.js @@ -7,19 +7,12 @@ return false; } - var url = element.closest('.page-container').data('url'); - var dataPaged = element.data('paged'); - - reloadData(url, dataPaged); + reloadDataContainer(element.closest('.page-container'), element.data('paged')); }); $(document).on('keyup', 'input.search-paged', function (event) { if (event.keyCode === 13) { - var element = $(this); - var url = element.closest('.page-container').data('url'); - var dataPaged = 'paged=' + element.val(); - - reloadData(url, dataPaged); + reloadDataContainer($(this).closest('.page-container'), 'paged=' + $(this).val()) } }); })(); diff --git a/app/route/Request.php b/app/route/Request.php index c91a580..7dd6a57 100644 --- a/app/route/Request.php +++ b/app/route/Request.php @@ -10,6 +10,7 @@ use SoftnCMS\route\Route; use SoftnCMS\util\Arrays; use SoftnCMS\util\Sanitize; +use SoftnCMS\util\Util; /** * Class Request @@ -26,6 +27,8 @@ class Request { /** @var array */ private $urlExplode; + private $siteUrl; + /** * Request constructor. */ @@ -33,6 +36,7 @@ public function __construct() { $this->route = new Route(); $this->urlGet = ''; $this->urlExplode = []; + $this->siteUrl = ''; $this->setUrl(); $this->setRoute(); } @@ -115,22 +119,28 @@ private function setDirectoryView() { */ $directoryNameViewController = strtolower($this->route->getControllerName()); $controllerDirectoryName = $this->route->getControllerDirectoryName(); - - if ($controllerDirectoryName == Route::CONTROLLER_DIRECTORY_NAME_THEME) { - $optionsManager = new OptionsManager(); - - if (!defined('INSTALL')) { - $controllerDirectoryName = $optionsManager->searchByName(OptionConstants::THEME) - ->getOptionValue(); - } - - $this->route->setViewPath(THEMES); - } - $this->route->setViewDirectoryName($controllerDirectoryName); $this->route->setDirectoryNameViewController($directoryNameViewController); } + /** + * @return string + */ + public function getSiteUrl() { + return $this->siteUrl; + } + + /** + * @param string $siteUrl + */ + public function setSiteUrl($siteUrl) { + if (empty($siteUrl)) { + $siteUrl = Util::getUrl($this->getUrlGet()); + } + + $this->siteUrl = $siteUrl; + } + /** * @return string */ diff --git a/app/route/Router.php b/app/route/Router.php index 6b14dae..676b908 100644 --- a/app/route/Router.php +++ b/app/route/Router.php @@ -6,9 +6,11 @@ namespace SoftnCMS\rute; use SoftnCMS\controllers\ViewController; -use SoftnCMS\models\managers\OptionsManager; use SoftnCMS\route\Route; use SoftnCMS\util\Arrays; +use SoftnCMS\util\controller\ControllerInterface; +use SoftnCMS\util\database\DBAbstract; +use SoftnCMS\util\database\DBInterface; use SoftnCMS\util\Logger; use SoftnCMS\util\Util; @@ -26,12 +28,6 @@ class Router { const EVENT_ERROR = 4; - /** @var string */ - private static $SITE_URL; - - /** @var string Directorio del controlador actual. */ - private static $CURRENT_DIRECTORY; - /** @var string Nombre del controlador actual. */ private static $CURRENT_NAME_CONTROLLER; @@ -47,41 +43,50 @@ class Router { /** @var bool */ private $canCallUserFunc; + /** @var DBInterface */ + private $connectionDB; + + /** @var string */ + private $siteUrl; + + /** @var \Closure */ + private $funcCheckViewTheme; + + /** @var \Closure */ + private $funcSiteUrl; + /** * Router constructor. */ public function __construct() { - $this->canCallUserFunc = TRUE; - $this->request = new Request(); - $this->route = $this->request->getRoute(); - $this->events = [ + Logger::getInstance() + ->debug('Inicio de la aplicación.'); + $this->connectionDB = DBAbstract::getNewInstance(); + $this->canCallUserFunc = TRUE; + $this->request = new Request(); + $this->route = $this->request->getRoute(); + $this->funcCheckViewTheme = NULL; + $this->funcSiteUrl = NULL; + $this->siteUrl = ""; + $this->events = [ self::EVENT_ERROR => function() { throw new \Exception('Error'); }, ]; - $optionsManager = new OptionsManager(); - self::$SITE_URL = $optionsManager->getSiteUrl($this); - } - - /** - * @return string - */ - public static function getSiteURL() { - return self::$SITE_URL; } /** * @return string */ - public static function getCurrentDirectory() { - return self::$CURRENT_DIRECTORY; + public static function getCurrentNameController() { + return self::$CURRENT_NAME_CONTROLLER; } /** - * @return string + * @param \Closure $closure */ - public static function getCurrentNameController() { - return self::$CURRENT_NAME_CONTROLLER; + public function setFuncSiteUrl($closure) { + $this->funcSiteUrl = $closure; } /** @@ -110,6 +115,8 @@ public function setCanCallUserFunc($canCallUserFunc) { } public function load() { + $this->initSiteUrl(); + $this->checkViewTheme(); $this->events(self::EVENT_INIT_LOAD); $instanceController = $this->instanceController(); @@ -121,6 +128,9 @@ public function load() { $this->events(self::EVENT_BEFORE_CALL_METHOD); if ($this->canCallUserFunc) { + $instanceController->setConnectionDB($this->connectionDB); + $instanceController->setRequest($this->request); + $instanceController->setRouter($this); call_user_func_array([ $instanceController, $method, @@ -130,6 +140,23 @@ public function load() { $this->events(self::EVENT_AFTER_CALL_METHOD); } + private function initSiteUrl() { + $siteUrl = ''; + + if (!defined('INSTALL') && is_callable($this->funcSiteUrl)) { + $siteUrl = call_user_func($this->funcSiteUrl); + } + + $this->request->setSiteUrl($siteUrl); + ViewController::setSiteUrl($this->request->getSiteUrl()); + } + + private function checkViewTheme() { + if (is_callable($this->funcCheckViewTheme)) { + call_user_func($this->funcCheckViewTheme); + } + } + private function events($event) { $callback = FALSE; @@ -163,7 +190,7 @@ private function events($event) { } /** - * @return mixed + * @return ControllerInterface */ private function instanceController() { $controllerName = $this->route->getControllerName() . 'Controller'; @@ -232,9 +259,31 @@ private function getParameter() { } private function setDirectoryView() { - self::$CURRENT_DIRECTORY = $this->route->getControllerDirectoryName(); + ViewController::setCurrentDirectory($this->route->getControllerDirectoryName()); ViewController::setDirectoryViews($this->route->getViewDirectoryName()); ViewController::setDirectoryViewsController($this->route->getDirectoryNameViewController()); ViewController::setViewPath($this->route->getViewPath()); } + + /** + * @return DBInterface + */ + public function getConnectionDB() { + return $this->connectionDB; + } + + /** + * @param DBInterface $connectionDB + */ + public function setConnectionDB($connectionDB) { + $this->connectionDB = $connectionDB; + } + + /** + * @param \Closure $closure + */ + public function setFuncCheckViewTheme($closure) { + $this->funcCheckViewTheme = $closure; + } + } diff --git a/app/themes/softncmsv1/category/index.php b/app/themes/softncmsv1/category/index.php index e4cb2a5..eeea6a8 100644 --- a/app/themes/softncmsv1/category/index.php +++ b/app/themes/softncmsv1/category/index.php @@ -1,8 +1,8 @@ diff --git a/app/themes/softncmsv1/menu.php b/app/themes/softncmsv1/menu.php index 85f5ff7..266b3bf 100644 --- a/app/themes/softncmsv1/menu.php +++ b/app/themes/softncmsv1/menu.php @@ -1,6 +1,6 @@ getSiteUrl(); diff --git a/app/themes/softncmsv1/term/index.php b/app/themes/softncmsv1/term/index.php index efc75a6..e834d28 100644 --- a/app/themes/softncmsv1/term/index.php +++ b/app/themes/softncmsv1/term/index.php @@ -1,9 +1,9 @@ setMethod($_GET) + ->setSpecialChar(TRUE) + ->build() + ->filter(); $translator = new Translator(); $translator->register(); - if (!defined('INSTALL') && empty($paramLan)) { - $optionsManager = new OptionsManager(); - $optionLanguage = $optionsManager->searchByName(OptionConstants::LANGUAGE); - - if ($optionLanguage) { - $language = $optionLanguage->getOptionValue(); - } + if (empty($language) && empty($paramLang)) { + $language = self::getDefaultLan(); + } elseif (empty($language)) { + $language = $paramLang; } - $pathMoFile = ABSPATH . "util/languages/$language.mo"; + $pathMoFile = LANGUAGES . "$language.mo"; if (file_exists($pathMoFile)) { $translator->loadTranslations(Translations::fromMoFile($pathMoFile)); diff --git a/app/util/Logger.php b/app/util/Logger.php index 795f5f5..f7c34c5 100644 --- a/app/util/Logger.php +++ b/app/util/Logger.php @@ -80,7 +80,11 @@ public function emergency($message, array $context = []) { } private function canWriteLog() { - return (defined('LOGGER') && LOGGER); + return (defined('LOGGER') && LOGGER) || $this->isInstall(); + } + + private function isInstall() { + return $this->logger->getName() == 'INSTALL' || defined('INSTALL'); } private function addBackTrace($message) { @@ -124,11 +128,15 @@ public function info($message, array $context = []) { } public function debug($message, array $context = []) { - if (($this->canWriteLog() && defined('FULL_LOGGER') && FULL_LOGGER) || $this->logger->getName() == 'INSTALL') { + if (($this->canWriteLog() && $this->isFullLogger()) || $this->isInstall()) { $this->logger->debug($this->addBackTrace($message), $context); } } + private function isFullLogger() { + return defined('FULL_LOGGER') && FULL_LOGGER; + } + public function log($level, $message, array $context = []) { if ($this->canWriteLog()) { $this->logger->log($level, $this->addBackTrace($message), $context); diff --git a/app/util/MySQL.php b/app/util/MySQL.php deleted file mode 100644 index 396b584..0000000 --- a/app/util/MySQL.php +++ /dev/null @@ -1,291 +0,0 @@ -connection = new \PDO($strConnection, DB_USER, DB_PASSWORD); - $this->connection->setAttribute(\PDO::ATTR_EMULATE_PREPARES, FALSE); - $this->connection->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION); - } catch (\PDOException $ex) { - die('Error al intentar establecer la conexión con la base de datos.' . $ex->getMessage()); - } - } - - /** - * Método que obtiene los indices a reemplazar en la consulta. - * EJ: [ - * [ - * 'parameter' => ':id', - * 'value' => 1, - * 'dataType' => PDO::PARAM_INT, - * ], - * [ - * 'parameter' => ':nombre', - * 'value' => 'nicolas', - * 'dataType' => PDO::PARAM_STR, - * ], - * ] - * - * @param string $parameter Indice a buscar. EJ: ":ID" - * @param string|int $value Valor del indice. - * @param int $dataType Tipo de dato. EJ: \PDO::PARAM_* - * - * @return array - */ - public static function prepareStatement($parameter, $value, $dataType, $column = '') { - return [ - 'parameter' => $parameter, - 'value' => $value, - 'dataType' => $dataType, - 'column' => $column, - ]; - } - - /** - * Método que ejecuta una consulta. - * - * @param string $query Consulta SQL. - * @param array $parameterQuery [Opcional] Lista de indices a reemplazar en la consulta. - * Usar prepareStatement(). - * - * @return array|bool|mixed|\PDOStatement - */ - public function select($query, $parameterQuery = []) { - $output = FALSE; - $this->query = $query; - - if ($this->execute($query, $parameterQuery)) { - $output = $this->prepareObject->fetchAll(); - } - - return $output; - } - - /** - * Método que ejecuta la consulta. - * - * @param string $query Consulta SQL. - * @param array $parameterQuery Lista de indices a reemplazar en la consulta. - * - * @return bool Si es TRUE, la consulta se ejecuto correctamente. - */ - private function execute($query, $parameterQuery) { - $this->prepareObject = $this->connection->prepare($query); - - if (!$this->bindValue($parameterQuery)) { - return FALSE; - } - - $output = false; - - try { - $output = $this->prepareObject->execute(); - - if (!$output) { - Logger::getInstance() - ->error('No se logro ejecutar la consulta.'); - } - } catch (\PDOException $ex) { - if (DEBUG) { - Messages::addDanger($ex->getMessage()); - } - - Logger::getInstance() - ->error($ex->getMessage()); - } - - return $output; - } - - /** - * Método que comprueba los tipos de datos de los valores vinculados a un parámetro. - * - * @param array $parameterQuery Lista de indices a reemplazar en la consulta. - * - * @return bool Si es \TRUE la operación se realizado correctamente. - */ - private function bindValue($parameterQuery) { - $count = count($parameterQuery); - $error = FALSE; - - for ($i = 0; $i < $count && !$error; ++$i) { - $value = $parameterQuery[$i]; - $parameter = ':' . $value['parameter']; - $parameterValue = $value['value']; - - try { - if (!$this->prepareObject->bindValue($parameter, $parameterValue, $value['dataType'])) { - $error = TRUE; - } - } catch (\PDOException $ex) { - if (DEBUG) { - Messages::addDanger($ex->getMessage()); - } - - $error = TRUE; - Logger::getInstance() - ->error($ex->getMessage()); - } - - if (!is_numeric($parameterValue)) { - $parameterValue = "'$parameterValue'"; - } - //Reemplaza los parámetros con sus valores correspondientes. - $this->query = preg_replace("/$parameter/", $parameterValue, $this->query, 1); - } - - Logger::getInstance() - ->debug($this->query); - - if ($error) { - Logger::getInstance() - ->error('Error al establecer los tipos de datos de los valores vinculados a un parámetro', ['currentParam' => $parameterQuery]); - } - - return !$error; - } - - /** - * Método que ejecuta una consulta "INSERT". - * - * @param string $table Nombre de la tabla. - * @param array $parameterQuery Lista de indices a reemplazar en la consulta. - * Usar prepareStatement(). - * - * @return bool Si es \TRUE la consulta se ejecuto correctamente. - */ - public function insert($table, $parameterQuery) { - $fields = array_map(function($value) { - return $value['parameter']; - }, $parameterQuery); - - $values = array_map(function($value) { - return ':' . $value['parameter']; - }, $parameterQuery); - - $strFields = implode(', ', $fields); - $strValues = implode(', ', $values); - $query = sprintf('INSERT INTO %1$s (%2$s) VALUES (%3$s)', $table, $strFields, $strValues); - $this->query = $query; - - return $this->execute($query, $parameterQuery); - } - - /** - * Método que ejecuta una consulta "UPDATE". - * - * @param string $table Nombre de la tabla. - * @param array $parameterQuery Lista de indices a reemplazar en la consulta. - * Usar prepareStatement(). - * @param string $column Por ejemplo: Nombre de la columna "ID" en la tabla. - * - * @return bool Si es \TRUE la consulta se ejecuto correctamente. - */ - public function update($table, $parameterQuery, $column) { - $fields = array_filter($parameterQuery, function($value) use ($column) { - return $value['parameter'] != $column; - }); - $fields = array_map(function($value) { - return $value['parameter'] . ' = :' . $value['parameter']; - }, $fields); - - $strFields = implode(', ', $fields); - $query = sprintf('UPDATE %1$s SET %2$s WHERE %3$s = :%3$s', $table, $strFields, $column); - $this->query = $query; - - return $this->execute($query, $parameterQuery); - } - - /** - * Método que ejecuta una consulta "DELETE", - * si la lista "$parameterQuery" es mayor a 1, - * se concatenaran con el operador lógico "AND". - * - * @param string $table Nombre de la tabla. - * @param array $parameterQuery Lista de indices a reemplazar en la consulta. - * Usar prepareStatement(). - * - * @return bool Si es \TRUE la consulta se ejecuto correctamente. - */ - public function deleteConditional($table, $parameterQuery, $logicalOperator) { - $values = array_map(function($value) { - $column = Arrays::get($value, 'column'); - $param = Arrays::get($value, 'parameter'); - $column = empty($column) ? $param : $column; - - return $column . ' = :' . $param; - }, $parameterQuery); - - //En caso de enviar mas de un dato en el "$parameterQuery". - $strValues = implode(' ' . $logicalOperator . ' ', $values); - $query = sprintf('DELETE FROM %1$s WHERE %2$s', $table, $strValues); - - return $this->delete($query, $parameterQuery); - } - - public function delete($query, $parameterQuery) { - $this->query = $query; - - if ($this->execute($query, $parameterQuery)) { - return $this->prepareObject->rowCount(); - } - - return FALSE; - } - - /** - * Método que obtiene el ID del ultimo dato en la consulta INSERT. - * @return int - */ - public function lastInsertId() { - return $this->connection->lastInsertId(); - } - - /** - * Método que cierra la conexión actual. - */ - public function close() { - $this->connection = NULL; - } - - /** - * Método que obtiene la instancia de la conexión actual. - * @return \PDO - */ - public function getConnection() { - return $this->connection; - } - - /** - * Método que obtiene la sentencia SQL. - * @return string - */ - public function getQuery() { - return $this->query; - } -} diff --git a/app/util/Token.php b/app/util/Token.php index 42968e4..f1675a5 100644 --- a/app/util/Token.php +++ b/app/util/Token.php @@ -12,7 +12,7 @@ use SoftnCMS\models\managers\LoginManager; /** - * Clase Token para autentificar formularios. + * Class Token * @author Nicolás Marulanda P. */ class Token { @@ -26,14 +26,19 @@ class Token { /** * Método que comprueba el token. + * + * @param string $token + * * @return bool */ - public static function check() { - $token = Arrays::get($_POST, self::TOKEN_NAME); - $token = empty($token) ? Arrays::get($_GET, self::TOKEN_NAME) : $token; + public static function check($token = "") { + if (empty($token)) { + $token = Arrays::get($_POST, self::TOKEN_NAME); + $token = empty($token) ? Arrays::get($_GET, self::TOKEN_NAME) : $token; + } if (empty($token)) { - Messages::addDanger(__('Error. Token no encontrado.')); + Messages::addDanger(__('Error. Token no encontrado.'), TRUE); Logger::getInstance() ->debug('Token no encontrado.', [ 'post' => $_POST, @@ -54,23 +59,35 @@ public static function check() { * @return bool */ private static function validate($token) { - $output = FALSE; + $output = FALSE; + $tokenDecode = self::decode($token); + + if (self::checkAud($tokenDecode)) { + $output = TRUE; + } else { + Messages::addDanger(__('Error. El Token es invalido.'), TRUE); + Logger::getInstance() + ->debug('El Token es invalido.', [ + 'currentToken' => $tokenDecode, + 'dataCheck' => self::aud(), + ]); + } + + self::regenerate(); + + return $output; + } + + /** + * @param string $token + * + * @return array + */ + private static function decode($token) { + $decode = []; try { - $tokenDecode = (array)JWT::decode($token, self::getTokenKey(), ['HS256']); - $data = $tokenDecode['aud']; - - if ($data == self::aud()) { - $output = TRUE; - } else { - Messages::addDanger(__('Error. El Token es invalido.')); - Logger::getInstance() - ->debug('El Token es invalido.', [ - 'currentToken' => $tokenDecode, - 'dataCheck' => self::aud(), - ]); - } - + $decode = (array)JWT::decode($token, self::getTokenKey(), ['HS256']); } catch (ExpiredException $expiredException) { Messages::addDanger(__('Error. El Token a caducado.')); Logger::getInstance() @@ -93,9 +110,7 @@ private static function validate($token) { ->debug('Error desconocido en el Token.'); } - self::regenerate(); - - return $output; + return $decode; } private static function getTokenKey() { @@ -110,6 +125,17 @@ private static function getTokenKey() { return ''; } + /** + * @param array $tokenDecode + * + * @return bool + */ + private static function checkAud($tokenDecode) { + $aud = Arrays::get($tokenDecode, 'aud'); + + return !empty($aud) && $aud == self::aud(); + } + private static function aud() { if (!empty($_SERVER['HTTP_CLIENT_IP'])) { $aud = $_SERVER['HTTP_CLIENT_IP']; @@ -138,27 +164,47 @@ public static function regenerate() { */ public static function generate() { if (empty(self::$TOKEN)) { - $time = time(); - $token = [ - //Hora actual en segundos - "iat" => $time, - //La hora, en segundos, en que el token caduca. Puede ser como máximo 3600 segundos posterior a iat. - 'exp' => $time + (60 * 60), - 'nbf' => $time, - 'aud' => self::aud(), - 'data' => [ - 'user' => LoginManager::getSession(), - ], - ]; - - self::$TOKEN = JWT::encode($token, self::getTokenKey(), 'HS256'); + self::$TOKEN = self::generateNewToken(LoginManager::dataToken()); + } + } + + public static function generateNewToken($data = []) { + $time = time(); + $token = [ + //Hora actual en segundos + "iat" => $time, + //La hora, en segundos, en que el token caduca. Puede ser como máximo 3600 segundos posterior a iat. + 'exp' => $time + (60 * 60), + 'nbf' => $time, + 'aud' => self::aud(), + 'data' => $data, + ]; + + return JWT::encode($token, self::getTokenKey(), 'HS256'); + } + + /** + * @param string $token + * + * @return array + */ + public static function getData($token) { + $tokenDecode = self::decode($token); + $data = Arrays::get($tokenDecode, 'data'); + + if (empty($data) || !self::checkAud($tokenDecode)) { + return []; } + + return (array)$data; } /** * Método que obtiene el campo "input" con el TOKEN para agregar al formulario. */ public static function formField() { + Token::generate(); + echo sprintf('', self::TOKEN_NAME, self::$TOKEN); } @@ -171,7 +217,9 @@ public static function formField() { * @return string */ public static function urlParameters($concat = '?', $separator = '=') { - return sprintf('%1$s%2$s$3$s%4$s', $concat, self::TOKEN_NAME, $separator, self::$TOKEN); + Token::generate(); + + return sprintf('%1$s%2$s%3$s%4$s', $concat, self::TOKEN_NAME, $separator, self::$TOKEN); } } diff --git a/app/util/controller/ControllerAbstract.php b/app/util/controller/ControllerAbstract.php new file mode 100644 index 0000000..c49f996 --- /dev/null +++ b/app/util/controller/ControllerAbstract.php @@ -0,0 +1,331 @@ +formObjects = []; + $this->inputs = []; + $this->cancelView = FALSE; + $this->connectionDB = NULL; + $this->router = NULL; + $this->request = NULL; + } + + public function reload() { + $view = InputAlphabeticBuilder::init('view') + ->setMethod($_GET) + ->build() + ->filter(); + $action = InputAlphabeticBuilder::init('action') + ->setMethod($_GET) + ->build() + ->filter(); + $param = InputIntegerBuilder::init('param') + ->setMethod($_GET) + ->build() + ->filter(); + $this->cancelView = TRUE; + + if (method_exists($this, $action)) { + call_user_func([ + $this, + $action, + ], $param); + $this->singleView($view); + } else { + echo "ERROR"; + } + } + + /** + * @param string $viewName + */ + protected function singleView($viewName = '') { + ViewController::singleView($this->getViewName($viewName)); + } + + /** + * @param string $viewName + * + * @return string + */ + private function getViewName($viewName = '') { + if (empty($viewName)) { + //TODO: Buscar el primer método que este fuera del namespace "SoftnCMS\util\controller\ControllerAbstract" y quitar el "2". + $backtrace = Arrays::get(debug_backtrace(), 2); + $viewName = Arrays::get($backtrace, 'function'); + + if ($viewName === FALSE) { + $viewName = ''; + } + } + + return $viewName; + } + + public function messages() { + ViewController::singleViewByDirectory('messages'); + } + + /** + * @return DBInterface + */ + public function getConnectionDB() { + return $this->connectionDB; + } + + /** + * @param DBInterface $connectionDB + */ + public function setConnectionDB($connectionDB) { + $this->connectionDB = $connectionDB; + } + + /** + * @return Request + */ + public function getRequest() { + return $this->request; + } + + /** + * @param Request $request + */ + public function setRequest($request) { + $this->request = $request; + } + + /** + * @return Router + */ + public function getRouter() { + return $this->router; + } + + /** + * @param Router $router + */ + public function setRouter($router) { + $this->router = $router; + } + + /** + * @return array + */ + public function getInputs() { + return $this->inputs; + } + + /** + * @param string $actionName + * @param array $parametersValues + */ + protected function redirectToAction($actionName, $parametersValues = []) { + $this->redirectControllerToAction($this->request->getRoute() + ->getControllerName(), $actionName, $parametersValues); + } + + /** + * @param string $controllerName + * @param string $actionName + * @param array $parametersValues + */ + protected function redirectControllerToAction($controllerName, $actionName, $parametersValues = []) { + $this->redirectRoute($this->request->getRoute() + ->getControllerDirectoryName(), $controllerName, $actionName, $parametersValues); + } + + /** + * @param string $routeName + * @param string $controllerName + * @param string $actionName + * @param array $parametersValues + */ + protected function redirectRoute($routeName, $controllerName, $actionName, $parametersValues = []) { + $routeName .= empty($routeName) ? '' : '/'; + $this->redirect(sprintf('%1$s%2$s/%3$s', $routeName, $controllerName, $actionName), $parametersValues); + } + + /** + * @param string $route + * @param array $parametersValues + */ + protected function redirect($route = '', $parametersValues = []) { + if ($this->isCanRedirect()) { + $parameters = array_map(function($value, $key) { + return "$key=$value"; + }, $parametersValues, array_keys($parametersValues)); + $parameters = implode('&', $parameters); + $parameters = empty($parameters) ? '' : "?$parameters"; + Util::redirect($this->request->getSiteUrl(), sprintf('%1$s%2$s', $route, $parameters)); + } + } + + private function isCanRedirect() { + if (Arrays::keyExists([ + $_POST, + $_GET, + ], 'redirect', TRUE)) { + return InputBooleanBuilder::init('redirect') + ->build() + ->filter(); + } + + //Si "redirect" no existe, TRUE. + return TRUE; + } + + /** + * @param string $name + * + * @return bool + */ + protected function checkSubmit($name) { + return Form::submit($name); + } + + protected function view($viewName = '') { + if (!$this->cancelView) { + ViewController::view($this->getViewName($viewName)); + } + } + + /** + * @param array $data + */ + protected function sendDataView($data) { + array_walk($data, function($value, $key) { + ViewController::sendViewData($key, $value); + }); + } + + /** + * @param string $formDataName + * + * @return mixed|bool + */ + protected function getForm($formDataName) { + $this->inputFilter(); + + return Arrays::get($this->formObjects, $formDataName); + } + + private function inputFilter() { + if (empty($this->formObjects)) { + Form::setInput($this->formInputsBuilders()); + $this->inputs = Form::inputFilter(); + + if (!empty($this->inputs)) { + $this->formObjects = $this->formToObject(); + } + } + } + + /** + * @return array + */ + protected function formInputsBuilders() { + return []; + } + + /** + * @return array|bool + */ + protected function formToObject() { + return []; + } + + protected function isValidForm() { + $this->inputFilter(); + + return !empty($this->formObjects); + } + + /** + * @param string $name + * + * @return mixed|null + */ + protected function getInput($name) { + if (Arrays::keyExists($this->inputs, $name)) { + return Arrays::get($this->inputs, $name); + } + + return NULL; + } + + /** + * @param int $count + * + * @return string + */ + protected function rowsPages($count) { + $optionsManager = new OptionsManager($this->connectionDB); + $optionPaged = $optionsManager->searchByName(OptionConstants::PAGED); + $siteUrl = $optionsManager->getSiteUrl(); + $paged = InputIntegerBuilder::init('paged') + ->setMethod($_GET) + ->build() + ->filter(); + $rowCount = 0; + + if ($optionPaged !== FALSE) { + $rowCount = $optionPaged->getOptionValue(); + } + + $pagination = new Pagination($paged, $count, $rowCount, $siteUrl); + + if ($pagination->isShowPagination()) { + ViewController::sendViewData('pagination', $pagination); + + return $pagination->getBeginRow() . ',' . $pagination->getRowCount(); + } + + return ''; + } + +} diff --git a/app/util/controller/ControllerInterface.php b/app/util/controller/ControllerInterface.php new file mode 100644 index 0000000..4c92f05 --- /dev/null +++ b/app/util/controller/ControllerInterface.php @@ -0,0 +1,32 @@ +prepareStatement, $parameter, $value, $dataType, $column); + public static function getNewInstance() { + //TODO: Lista de tipos. + $connection = NULL; + + if (!defined('DB_TYPE')) { + return $connection; + } + + switch (DB_TYPE) { + case 'mysql': + $connection = new MySQL(); + break; + } + + return $connection; } /** - * @param array $array * @param string $parameter * @param mixed $value * @param string $dataType * @param string $column */ - public static function addPrepareStatement(&$array, $parameter, $value, $dataType = '', $column = '') { + public function addPrepareStatement($parameter, $value, $dataType = '', $column = '') { if (!is_null($value)) { if ($dataType === '') { $dataType = self::getDataType($value); @@ -67,7 +76,7 @@ public static function addPrepareStatement(&$array, $parameter, $value, $dataTyp $column = $parameter; } - $array[":$parameter"] = [ + $this->prepareStatement[":$parameter"] = [ 'value' => $value, 'dataType' => $dataType, 'column' => $column, @@ -97,13 +106,6 @@ private static function getDataType($value) { return $dataType; } - /** - * @param array $prepareStatement - */ - public function setPrepareStatement($prepareStatement) { - $this->prepareStatement = $prepareStatement; - } - /** * @param $query * @@ -117,7 +119,6 @@ public function select($query) { } $result = $prepareObject->fetchAll(); - $this->close(); return $result; } @@ -128,10 +129,11 @@ public function select($query) { * @return bool|\PDOStatement */ private function execute($query) { - $this->query = $query; - $prepareObject = $this->prepareStatementObject($query); + $this->query = $query; try { + $prepareObject = $this->prepareStatementObject($query); + if (!empty($prepareObject) && $prepareObject->execute()) { $this->rowCount = $prepareObject->rowCount(); @@ -143,6 +145,8 @@ private function execute($query) { } catch (\Exception $ex) { Logger::getInstance() ->error($ex->getMessage()); + } finally { + $this->close(); } return FALSE; @@ -167,7 +171,10 @@ private function prepareStatementObject($query) { ->error("Error al preparar la consulta."); } catch (\Exception $ex) { Logger::getInstance() - ->error($ex->getMessage()); + ->error($ex->getMessage(), [ + 'query' => $query, + 'prepareStatement' => $this->prepareStatement, + ]); } return FALSE; @@ -226,14 +233,8 @@ private function bindValue(&$prepare, $parameter, $value, $dataType) { public function close() { $this->prepareStatement = []; - $this->setConnection(NULL); } - /** - * @param \PDO $value - */ - protected abstract function setConnection($value); - public function updateByColumn($column) { $columns = array_filter($this->prepareStatement, function($value) use ($column) { return Arrays::get($value, 'column') != $column; @@ -270,11 +271,14 @@ public function update($query) { return FALSE; } - $this->close(); - return TRUE; } + /** + * @param string $allLogicalOperators + * + * @return bool + */ public function deleteByPrepareStatement($allLogicalOperators = 'AND') { $where = $this->getKeyValue($this->prepareStatement); $where = implode(" $allLogicalOperators ", $where); @@ -299,8 +303,6 @@ public function delete($query = '') { return FALSE; } - $this->close(); - return TRUE; } @@ -328,10 +330,8 @@ public function insert($query = '') { $this->lastInsertId = $this->getConnection() ->lastInsertId(); - $this->close(); return TRUE; - } /** @@ -362,4 +362,23 @@ public function setTable($table) { $this->table = $table; } + /** + * @return array + */ + public function getPrepareStatement() { + return $this->prepareStatement; + } + + /** + * @param array $prepareStatement + */ + public function setPrepareStatement($prepareStatement) { + $this->prepareStatement = $prepareStatement; + } + + /** + * @param \PDO $value + */ + protected abstract function setConnection($value); + } diff --git a/app/util/database/DBInterface.php b/app/util/database/DBInterface.php index a4bf9aa..06e6c64 100644 --- a/app/util/database/DBInterface.php +++ b/app/util/database/DBInterface.php @@ -7,7 +7,7 @@ /** * Interface DBInterface - * @author MaruloPC-Desk + * @author Nicolás Maruladan P. */ interface DBInterface { @@ -59,7 +59,12 @@ public function insert($query = ''); * @param string $dataType * @param string $column */ - public function prepareStatement($parameter, $value, $dataType = '', $column = ''); + public function addPrepareStatement($parameter, $value, $dataType = '', $column = ''); + + /** + * @return array + */ + public function getPrepareStatement(); /** * @param array $prepareStatement diff --git a/app/util/database/ManagerAbstract.php b/app/util/database/ManagerAbstract.php index e94d3f1..e0348ba 100644 --- a/app/util/database/ManagerAbstract.php +++ b/app/util/database/ManagerAbstract.php @@ -15,18 +15,16 @@ abstract class ManagerAbstract { const COLUMN_ID = 'id'; - /** @var array */ - private $prepareStatement; - - /** @var DBAbstract */ - private $db; + /** @var DBInterface */ + private $connection; /** * ManagerAbstract constructor. + * + * @param DBInterface $connection */ - public function __construct() { - $this->prepareStatement = []; - $this->db = NULL; + public function __construct(DBInterface $connection = NULL) { + $this->connection = $connection; } /** @@ -60,7 +58,7 @@ protected function searchAllByColumn($value, $column, $dataType, $addConditions } protected function addPrepareStatement($parameter, $value, $dataType, $column = '') { - DBAbstract::addPrepareStatement($this->prepareStatement, $parameter, $value, $dataType, $column); + $this->connection->addPrepareStatement($parameter, $value, $dataType, $column); } /** @@ -87,22 +85,7 @@ protected abstract function getTable(); * @return array|bool */ protected function search($query) { - $db = $this->getDB(); - - return $this->checkResult($db->select($query)); - } - - /** - * @return MySQL - */ - protected function getDB() { - $db = new MySQL(); - $db->setTable($this->getTableWithPrefix()); - $db->setPrepareStatement($this->prepareStatement); - $this->prepareStatement = []; - $this->db = $db; - - return $db; + return $this->checkResult($this->connection->select($query)); } /** @@ -133,8 +116,7 @@ protected abstract function buildObject($result); public function count() { $query = 'SELECT COUNT(*) AS COUNT FROM ' . $this->getTableWithPrefix(); - $db = $this->getDB(); - $result = $db->select($query); + $result = $this->connection->select($query); $result = Arrays::findFirst($result); return empty($result) ? 0 : $result; @@ -172,13 +154,14 @@ protected function searchAllByObject($object = NULL, $addConditions = []) { if (!empty($object)) { $this->prepareStatement($object); + $prepareStatement = $this->connection->getPrepareStatement(); - if (!empty($this->prepareStatement)) { + if (!empty($prepareStatement)) { $conditionsMap = array_map(function($key, $value) { $column = Arrays::get($value, 'column'); return "$column = $key"; - }, array_keys($this->prepareStatement), $this->prepareStatement); + }, array_keys($prepareStatement), $prepareStatement); $conditions = ' WHERE ' . implode(" AND ", $conditionsMap) . $conditions; } @@ -205,10 +188,10 @@ public function create($object) { } $this->prepareStatement($object); - $db = $this->getDB(); + $this->connection->setTable($this->getTableWithPrefix()); - if ($db->insert()) { - return $db->getLastInsetId(); + if ($this->connection->insert()) { + return $this->connection->getLastInsetId(); } return FALSE; @@ -229,9 +212,9 @@ protected function updateByColumn($object, $columnName) { } $this->prepareStatement($object); - $db = $this->getDB(); + $this->connection->setTable($this->getTableWithPrefix()); - return $db->updateByColumn($columnName); + return $this->connection->updateByColumn($columnName); } /** @@ -249,20 +232,25 @@ public function deleteByObject($object) { return $this->deleteByPrepareStatement(); } + /** + * @param string $allLogicalOperators + * + * @return bool + */ protected function deleteByPrepareStatement($allLogicalOperators = 'AND') { - if (empty($this->prepareStatement)) { + if (empty($this->connection->getPrepareStatement())) { return FALSE; } - $db = $this->getDB(); + $this->connection->setTable($this->getTableWithPrefix()); - return $db->deleteByPrepareStatement($allLogicalOperators); + return $this->connection->deleteByPrepareStatement($allLogicalOperators); } /** * @param int $id * - * @return int + * @return bool */ public function deleteById($id) { if (empty($id)) { @@ -278,7 +266,7 @@ public function deleteById($id) { * @return int */ public function getLastInsertId() { - return $this->db->getLastInsetId(); + return $this->connection->getLastInsetId(); } public function delete($query) { @@ -286,16 +274,30 @@ public function delete($query) { return FALSE; } - $db = $this->getDB(); + $this->connection->setTable($this->getTableWithPrefix()); - return $db->delete($query); + return $this->connection->delete($query); } /** * @return int */ public function getRowCount() { - return $this->db->getRowCount(); + return $this->connection->getRowCount(); + } + + /** + * @return DBInterface + */ + protected function getConnection() { + return $this->connection; + } + + /** + * @param DBAbstract $connection + */ + public function setConnection($connection) { + $this->connection = $connection; } protected function deleteByColumn($value, $column, $dataType) { @@ -312,6 +314,7 @@ protected function deleteByColumn($value, $column, $dataType) { * @return string */ protected function getQuery() { - return $this->db->getQuery(); + return $this->connection->getQuery(); } + } diff --git a/app/util/form/Form.php b/app/util/form/Form.php index ddcc0d0..385f47e 100644 --- a/app/util/form/Form.php +++ b/app/util/form/Form.php @@ -31,8 +31,6 @@ class Form { * @return bool */ public static function submit($name) { - Token::generate(); - return (isset($_POST[$name]) || isset($_GET[$name])) && (defined('INSTALL') || Token::check()); } diff --git a/app/util/languages/en.mo b/app/util/languages/en.mo index 9099cf5..5ff2e8c 100644 Binary files a/app/util/languages/en.mo and b/app/util/languages/en.mo differ diff --git a/app/util/languages/en.po b/app/util/languages/en.po index b0ed618..8a11aed 100644 --- a/app/util/languages/en.po +++ b/app/util/languages/en.po @@ -1,15 +1,15 @@ msgid "" msgstr "" "Project-Id-Version: SoftN-CMS v0.4-alpha\n" -"POT-Creation-Date: 2017-09-13 19:48+0200\n" -"PO-Revision-Date: 2017-09-13 19:49+0200\n" +"POT-Creation-Date: 2017-11-11 22:30+0100\n" +"PO-Revision-Date: 2017-11-11 22:30+0100\n" "Last-Translator: \n" "Language-Team: Nicolás Marulanda P.\n" "Language: en\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.0.3\n" +"X-Generator: Poedit 2.0.4\n" "X-Poedit-Basepath: ../..\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Poedit-SourceCharset: UTF-8\n" @@ -17,91 +17,93 @@ msgstr "" "X-Poedit-SearchPath-0: .\n" "X-Poedit-SearchPathExcluded-0: vendor\n" -#: controllers/admin/CategoryController.php:37 +#: controllers/admin/CategoryController.php:30 msgid "Categoría publicada correctamente." msgstr "Category published correctly." -#: controllers/admin/CategoryController.php:42 +#: controllers/admin/CategoryController.php:35 msgid "Error al publicar la categoría." msgstr "Failed to publish category." -#: controllers/admin/CategoryController.php:46 +#: controllers/admin/CategoryController.php:41 msgid "Publicar nueva categoría" msgstr "New category" -#: controllers/admin/CategoryController.php:90 +#: controllers/admin/CategoryController.php:52 +#: controllers/admin/CategoryController.php:83 msgid "La categoría no existe." msgstr "Category does not exist." -#: controllers/admin/CategoryController.php:97 -msgid "Error en los campos de la categoría." -msgstr "Error in category fields." - -#: controllers/admin/CategoryController.php:102 +#: controllers/admin/CategoryController.php:59 msgid "Categoría actualizada correctamente." msgstr "Category update correctly." -#: controllers/admin/CategoryController.php:104 +#: controllers/admin/CategoryController.php:61 msgid "Error al actualizar la categoría." msgstr "Failed to update category." -#: controllers/admin/CategoryController.php:110 +#: controllers/admin/CategoryController.php:64 +msgid "Error en los campos de la categoría." +msgstr "Error in category fields." + +#: controllers/admin/CategoryController.php:71 msgid "Actualizar categoría" msgstr "Update category" -#: controllers/admin/CategoryController.php:119 -msgid "Error al borrar la categoría." -msgstr "Error deleting category." - -#: controllers/admin/CategoryController.php:121 +#: controllers/admin/CategoryController.php:85 msgid "Categoría borrada correctamente." msgstr "Category deleted correctly." -#: controllers/admin/CommentController.php:41 +#: controllers/admin/CategoryController.php:87 +msgid "Error al borrar la categoría." +msgstr "Error deleting category." + +#: controllers/admin/CommentController.php:36 msgid "Comentario publicado correctamente." msgstr "Comment posted successfully." -#: controllers/admin/CommentController.php:47 +#: controllers/admin/CommentController.php:41 msgid "Error al publicar el comentario." msgstr "Error posting comment." -#: controllers/admin/CommentController.php:53 +#: controllers/admin/CommentController.php:49 msgid "Publicar nuevo comentario" msgstr "New comment" -#: controllers/admin/CommentController.php:122 +#: controllers/admin/CommentController.php:59 +#: controllers/admin/CommentController.php:91 msgid "El comentario no existe." msgstr "Comment does not exist." -#: controllers/admin/CommentController.php:129 -msgid "Error en los campos del comentario." -msgstr "Error in comment fields." - -#: controllers/admin/CommentController.php:134 +#: controllers/admin/CommentController.php:66 msgid "Comentario actualizado correctamente." msgstr "Comment successfully updated." -#: controllers/admin/CommentController.php:137 +#: controllers/admin/CommentController.php:69 msgid "Error al actualizar el comentario." msgstr "Error updating comment." -#: controllers/admin/CommentController.php:143 +#: controllers/admin/CommentController.php:72 +msgid "Error en los campos del comentario." +msgstr "Error in comment fields." + +#: controllers/admin/CommentController.php:79 msgid "Actualizar comentario" msgstr "Update comment" -#: controllers/admin/CommentController.php:152 -msgid "Error al borrar el comentario." -msgstr "Error deleting comment." - -#: controllers/admin/CommentController.php:154 +#: controllers/admin/CommentController.php:93 msgid "Comentario borrado correctamente." msgstr "Comment deleted correctly." -#: controllers/admin/LicenseController.php:42 +#: controllers/admin/CommentController.php:95 +msgid "Error al borrar el comentario." +msgstr "Error deleting comment." + +#: controllers/admin/LicenseController.php:39 msgid "Permiso creado correctamente." msgstr "License created successfully." -#: controllers/admin/LicenseController.php:47 +#: controllers/admin/LicenseController.php:45 msgid "Error al crear el permiso." msgstr "Failed to create license." @@ -109,480 +111,487 @@ msgstr "Failed to create license." msgid "Crear nuevo permiso" msgstr "New license" -#: controllers/admin/LicenseController.php:97 -#: controllers/admin/LicenseController.php:120 +#: controllers/admin/LicenseController.php:62 +#: controllers/admin/LicenseController.php:85 msgid "Error al borrar los perfiles." msgstr "Error while deleting profiles." -#: controllers/admin/LicenseController.php:130 +#: controllers/admin/LicenseController.php:95 msgid "Error al actualizar los perfiles." msgstr "Failed to update profiles." -#: controllers/admin/LicenseController.php:154 +#: controllers/admin/LicenseController.php:119 +#: controllers/admin/LicenseController.php:155 msgid "El permiso no existe." msgstr "The license does not exist." -#: controllers/admin/LicenseController.php:160 -msgid "Error en los campos del permiso." -msgstr "Error in license fields." - -#: controllers/admin/LicenseController.php:168 +#: controllers/admin/LicenseController.php:129 msgid "Permiso actualizado correctamente." msgstr "License updated successfully." -#: controllers/admin/LicenseController.php:170 +#: controllers/admin/LicenseController.php:131 msgid "Error al actualizar el permiso." msgstr "Failed to update license." -#: controllers/admin/LicenseController.php:178 +#: controllers/admin/LicenseController.php:134 +msgid "Error en los campos del permiso." +msgstr "Error in license fields." + +#: controllers/admin/LicenseController.php:143 msgid "Actualizar permiso" msgstr "Update license" -#: controllers/admin/LicenseController.php:186 +#: controllers/admin/LicenseController.php:157 +msgid "Permiso borrado correctamente." +msgstr "License deleted correctly." + +#: controllers/admin/LicenseController.php:159 msgid "Error al borrar el permiso." msgstr "Error deleting license." -#: controllers/admin/LicenseController.php:188 -msgid "Permiso borrado correctamente." -msgstr "License deleted correctly." +#: controllers/admin/MenuController.php:50 +msgid "El menu padre no existe." +msgstr "The parent menu does not exist." -#: controllers/admin/MenuController.php:40 +#: controllers/admin/MenuController.php:62 msgid "Menu publicado correctamente." msgstr "Menu published correctly." -#: controllers/admin/MenuController.php:56 +#: controllers/admin/MenuController.php:77 msgid "Error al publicar el menu." msgstr "Failed to publish menu." -#: controllers/admin/MenuController.php:64 -msgid "El menu padre no existe." -msgstr "The parent menu does not exist." - -#: controllers/admin/MenuController.php:72 +#: controllers/admin/MenuController.php:83 msgid "Publicar nuevo menu" msgstr "New menu" -#: controllers/admin/MenuController.php:116 -#: controllers/admin/MenuController.php:168 +#: controllers/admin/MenuController.php:93 +#: controllers/admin/MenuController.php:142 +#: controllers/admin/MenuController.php:160 msgid "El menu no existe." msgstr "The menu does not exist." -#: controllers/admin/MenuController.php:123 -msgid "Error en los campos del menu." -msgstr "Error in the menu fields." - -#: controllers/admin/MenuController.php:128 +#: controllers/admin/MenuController.php:100 msgid "Menu actualizado correctamente." msgstr "Menu updated correctly." -#: controllers/admin/MenuController.php:130 +#: controllers/admin/MenuController.php:102 msgid "Error al actualizar el menu." msgstr "Error updating the menu." -#: controllers/admin/MenuController.php:157 +#: controllers/admin/MenuController.php:105 +msgid "Error en los campos del menu." +msgstr "Error in the menu fields." + +#: controllers/admin/MenuController.php:132 msgid "Actualizar menu" msgstr "Update menu" -#: controllers/admin/MenuController.php:182 -msgid "Error al borrar el menu." -msgstr "Error deleting menu." - -#: controllers/admin/MenuController.php:184 +#: controllers/admin/MenuController.php:162 msgid "Menu borrado correctamente." msgstr "Menu deleting correctly." -#: controllers/admin/OptionController.php:44 -msgid "Error en los campos de las opciones." -msgstr "Error in options fields." +#: controllers/admin/MenuController.php:164 +msgid "Error al borrar el menu." +msgstr "Error deleting menu." -#: controllers/admin/OptionController.php:56 +#: controllers/admin/OptionController.php:84 msgid "Actualizado correctamente." msgstr "Updated successfully." -#: controllers/admin/OptionController.php:58 +#: controllers/admin/OptionController.php:86 msgid "Error al actualizar." msgstr "Failed to update." -#: controllers/admin/OptionLicenseController.php:38 +#: controllers/admin/OptionController.php:89 +msgid "Error en los campos de las opciones." +msgstr "Error in options fields." + +#: controllers/admin/OptionLicenseController.php:47 msgid "No hay permisos para configurar." msgstr "There aren`t licenses to configure." -#: controllers/admin/OptionLicenseController.php:56 +#: controllers/admin/OptionLicenseController.php:63 msgid "Permiso configurado correctamente." msgstr "License configured successfully." -#: controllers/admin/OptionLicenseController.php:61 +#: controllers/admin/OptionLicenseController.php:68 msgid "Error al crear la configuración del permiso." msgstr "Failed to create license configured." -#: controllers/admin/OptionLicenseController.php:68 +#: controllers/admin/OptionLicenseController.php:77 msgid "Nueva configuración de permisos" msgstr "New licenses configuration" -#: controllers/admin/OptionLicenseController.php:289 +#: controllers/admin/OptionLicenseController.php:141 +#: controllers/admin/OptionLicenseController.php:213 msgid "La configuración del permiso no existe." msgstr "The license configuration does not exist." -#: controllers/admin/OptionLicenseController.php:295 -msgid "Error en los campos de la configuración del permiso." -msgstr "Error in license configuration fields." - -#: controllers/admin/OptionLicenseController.php:319 +#: controllers/admin/OptionLicenseController.php:167 msgid "La configuración del permiso fue borrada al no tener asignado ningún campo." msgstr "License configuration was deleted because no fields where assigned." -#: controllers/admin/OptionLicenseController.php:323 +#: controllers/admin/OptionLicenseController.php:171 msgid "Configuración del permiso actualizado correctamente." msgstr "License configuration updated successfully." -#: controllers/admin/OptionLicenseController.php:326 +#: controllers/admin/OptionLicenseController.php:174 msgid "Error al actualizar la configuración del permiso." msgstr "Failed to update license configuration." -#: controllers/admin/OptionLicenseController.php:347 +#: controllers/admin/OptionLicenseController.php:177 +msgid "Error en los campos de la configuración del permiso." +msgstr "Error in license configuration fields." + +#: controllers/admin/OptionLicenseController.php:201 msgid "Actualizar configuración del permiso" msgstr "Update license configuration" -#: controllers/admin/OptionLicenseController.php:355 -msgid "Error al borrar la configuración del permiso." -msgstr "Error deleting license configuration." - -#: controllers/admin/OptionLicenseController.php:357 +#: controllers/admin/OptionLicenseController.php:215 msgid "Configuración del permiso borrado correctamente." msgstr "License configuration deleted correctly." -#: controllers/admin/PageController.php:39 +#: controllers/admin/OptionLicenseController.php:217 +msgid "Error al borrar la configuración del permiso." +msgstr "Error deleting license configuration." + +#: controllers/admin/PageController.php:44 msgid "Pagina creada correctamente." msgstr "Page created successfully." -#: controllers/admin/PageController.php:44 +#: controllers/admin/PageController.php:49 msgid "Error al publicar la pagina." msgstr "Failed to publish page." -#: controllers/admin/PageController.php:48 +#: controllers/admin/PageController.php:55 msgid "Publicar nueva pagina" msgstr "New page" -#: controllers/admin/PageController.php:98 -#: controllers/template/PageTemplate.php:46 +#: controllers/admin/PageController.php:65 +#: controllers/admin/PageController.php:97 models/template/PageTemplate.php:49 msgid "La pagina no existe." msgstr "Page does not exist." -#: controllers/admin/PageController.php:106 -msgid "Error en los campos de la pagina." -msgstr "Error in page fields." - -#: controllers/admin/PageController.php:111 +#: controllers/admin/PageController.php:72 msgid "Pagina actualizada correctamente." msgstr "Page updated successfully." -#: controllers/admin/PageController.php:113 +#: controllers/admin/PageController.php:74 msgid "Error al actualizar la pagina." msgstr "Failed to update page." -#: controllers/admin/PageController.php:121 +#: controllers/admin/PageController.php:77 +msgid "Error en los campos de la pagina." +msgstr "Error in page fields." + +#: controllers/admin/PageController.php:85 msgid "Actualizar pagina" msgstr "Update page" -#: controllers/admin/PageController.php:129 -msgid "Error al borrar la pagina." -msgstr "Error deleting the page." - -#: controllers/admin/PageController.php:131 +#: controllers/admin/PageController.php:99 msgid "Pagina borrada correctamente." msgstr "Page successfully deleting." -#: controllers/admin/PostController.php:56 +#: controllers/admin/PageController.php:101 +msgid "Error al borrar la pagina." +msgstr "Error deleting the page." + +#: controllers/admin/PostController.php:61 msgid "Entrada publicada correctamente." msgstr "Correctly published post." -#: controllers/admin/PostController.php:61 +#: controllers/admin/PostController.php:66 msgid "Error al publicar la entrada." msgstr "Failed to publish post." -#: controllers/admin/PostController.php:66 +#: controllers/admin/PostController.php:75 msgid "Publicar nueva entrada" msgstr "New post" -#: controllers/admin/PostController.php:134 +#: controllers/admin/PostController.php:86 msgid "Error al borrar las etiquetas." msgstr "Error while deleting tags." -#: controllers/admin/PostController.php:168 +#: controllers/admin/PostController.php:120 msgid "Error al actualizar las etiquetas." msgstr "Failed to update tags." -#: controllers/admin/PostController.php:189 +#: controllers/admin/PostController.php:141 msgid "Error al borrar las categorías." msgstr "Error deleting categories." -#: controllers/admin/PostController.php:223 +#: controllers/admin/PostController.php:175 msgid "Error al actualizar las categorías." msgstr "Failed to update categories." +#: controllers/admin/PostController.php:212 #: controllers/admin/PostController.php:254 -msgid "La entrada no existe." +msgid "La publicación no existe." msgstr "Post does not exist." -#: controllers/admin/PostController.php:261 -msgid "Error en los campos de la entrada." -msgstr "Error in post fields." - -#: controllers/admin/PostController.php:271 +#: controllers/admin/PostController.php:224 msgid "Entrada actualizada correctamente." msgstr "Post updated successfully." -#: controllers/admin/PostController.php:273 +#: controllers/admin/PostController.php:226 msgid "Error al actualizar la entrada." msgstr "Failed to update post." -#: controllers/admin/PostController.php:287 +#: controllers/admin/PostController.php:229 +msgid "Error en los campos de la entrada." +msgstr "Error in post fields." + +#: controllers/admin/PostController.php:242 msgid "Actualizar entrada" msgstr "Update post" -#: controllers/admin/PostController.php:296 -msgid "Error al borrar la entrada." -msgstr "Error deleting the post." - -#: controllers/admin/PostController.php:298 +#: controllers/admin/PostController.php:256 msgid "Entrada borrada correctamente." msgstr "Post successfully deleting." -#: controllers/admin/ProfileController.php:42 +#: controllers/admin/PostController.php:258 +msgid "Error al borrar la entrada." +msgstr "Error deleting the post." + +#: controllers/admin/ProfileController.php:47 msgid "Perfil creado correctamente." msgstr "Profile created successfully." -#: controllers/admin/ProfileController.php:47 +#: controllers/admin/ProfileController.php:52 msgid "Error al crear el perfil." msgstr "Failed to create profile." -#: controllers/admin/ProfileController.php:52 +#: controllers/admin/ProfileController.php:59 msgid "Crear nuevo perfil" msgstr "New profile" +#: controllers/admin/ProfileController.php:69 +#: controllers/admin/ProfileController.php:92 +msgid "Error al borrar los permisos." +msgstr "Error deleting licenses." + #: controllers/admin/ProfileController.php:102 +msgid "Error al actualizar los permisos." +msgstr "Failed to update licenses." + +#: controllers/admin/ProfileController.php:126 +#: controllers/admin/ProfileController.php:164 msgid "El perfil no existe." msgstr "The Profile does not exist." -#: controllers/admin/ProfileController.php:108 -msgid "Error en los campos del perfil." -msgstr "Error in the profile fields." - -#: controllers/admin/ProfileController.php:116 +#: controllers/admin/ProfileController.php:136 msgid "Perfil actualizado correctamente." msgstr "Profile updated correctly." -#: controllers/admin/ProfileController.php:118 +#: controllers/admin/ProfileController.php:138 msgid "Error al actualizar el perfil." msgstr "Error updating the profile." -#: controllers/admin/ProfileController.php:126 +#: controllers/admin/ProfileController.php:141 +msgid "Error en los campos del perfil." +msgstr "Error in the profile fields." + +#: controllers/admin/ProfileController.php:150 msgid "Actualizar perfil" msgstr "Update profile" -#: controllers/admin/ProfileController.php:135 -#: controllers/admin/ProfileController.php:158 -msgid "Error al borrar los permisos." -msgstr "Error deleting licenses." - -#: controllers/admin/ProfileController.php:168 -msgid "Error al actualizar los permisos." -msgstr "Failed to update licenses." - -#: controllers/admin/ProfileController.php:186 -msgid "Error al borrar el perfil." -msgstr "Error deleting profile." +#: controllers/admin/ProfileController.php:162 +msgid "No puedes borrar un perfil con usuarios asociados." +msgstr "You cannot delete a profile with associated users." -#: controllers/admin/ProfileController.php:188 +#: controllers/admin/ProfileController.php:166 msgid "Perfil borrado correctamente." msgstr "Profile deleting correctly." -#: controllers/admin/SidebarController.php:36 +#: controllers/admin/SidebarController.php:37 msgid "Barra lateral creado correctamente." msgstr "Sidebar created correctly." -#: controllers/admin/SidebarController.php:41 +#: controllers/admin/SidebarController.php:42 msgid "Error al crear el sidebar." msgstr "Failed to create sidebar." -#: controllers/admin/SidebarController.php:45 +#: controllers/admin/SidebarController.php:48 msgid "Crear nuevo" msgstr "New" -#: controllers/admin/SidebarController.php:85 +#: controllers/admin/SidebarController.php:58 +#: controllers/admin/SidebarController.php:91 msgid "La barra lateral no existe." msgstr "Sidebar does not exist." -#: controllers/admin/SidebarController.php:92 -msgid "Error en los campos del a barra lateral." -msgstr "Error in the fields of the sidebar." - -#: controllers/admin/SidebarController.php:97 +#: controllers/admin/SidebarController.php:66 msgid "Barra lateral actualizada correctamente." msgstr "Sidebar updated correctly." -#: controllers/admin/SidebarController.php:99 +#: controllers/admin/SidebarController.php:68 msgid "Error al actualizar la barra lateral." msgstr "Failed to update sidebar." -#: controllers/admin/SidebarController.php:105 views/admin/category/form.php:31 -#: views/admin/comment/form.php:63 views/admin/license/form.php:47 -#: views/admin/menu/form.php:69 views/admin/optionlicense/datapages.php:47 +#: controllers/admin/SidebarController.php:71 +msgid "Error en los campos del a barra lateral." +msgstr "Error in the fields of the sidebar." + +#: controllers/admin/SidebarController.php:78 views/admin/category/form.php:32 +#: views/admin/comment/form.php:64 views/admin/license/form.php:48 +#: views/admin/menu/form.php:70 views/admin/optionlicense/datapages.php:47 #: views/admin/optionlicense/datapages.php:114 -#: views/admin/optionlicense/form.php:51 views/admin/optionlicense/form.php:77 -#: views/admin/page/form.php:53 views/admin/post/form.php:66 -#: views/admin/profile/form.php:47 views/admin/sidebar/form.php:31 -#: views/admin/term/form.php:31 views/admin/user/form.php:72 +#: views/admin/optionlicense/form.php:52 views/admin/optionlicense/form.php:78 +#: views/admin/page/form.php:54 views/admin/post/form.php:85 +#: views/admin/profile/form.php:48 views/admin/sidebar/form.php:33 +#: views/admin/term/form.php:33 views/admin/user/form.php:73 msgid "Actualizar" msgstr "Update" -#: controllers/admin/SidebarController.php:114 -msgid "Error al borrar la barra lateral." -msgstr "Error while deleting sidebar." - -#: controllers/admin/SidebarController.php:116 +#: controllers/admin/SidebarController.php:93 msgid "Barra lateral borrada correctamente." msgstr "Sidebar deleted correctly." -#: controllers/admin/TermController.php:36 +#: controllers/admin/SidebarController.php:95 +msgid "Error al borrar la barra lateral." +msgstr "Error while deleting sidebar." + +#: controllers/admin/TermController.php:40 msgid "Etiqueta publicada correctamente." msgstr "Tag published correctly." -#: controllers/admin/TermController.php:42 +#: controllers/admin/TermController.php:45 msgid "Error al publicar la etiqueta." msgstr "Failed to publish tag." -#: controllers/admin/TermController.php:46 +#: controllers/admin/TermController.php:51 msgid "Publicar nueva etiqueta" msgstr "New tag" -#: controllers/admin/TermController.php:90 +#: controllers/admin/TermController.php:61 +#: controllers/admin/TermController.php:92 msgid "La etiqueta no existe." msgstr "The tag does not exist." -#: controllers/admin/TermController.php:97 -msgid "Error en los campos de la etiqueta." -msgstr "Error in the fields of the tag." - -#: controllers/admin/TermController.php:102 +#: controllers/admin/TermController.php:68 msgid "Etiqueta actualizada correctamente." msgstr "Tag updated correctly." -#: controllers/admin/TermController.php:104 +#: controllers/admin/TermController.php:70 msgid "Error al actualizar la etiqueta." msgstr "Failed to update tag." -#: controllers/admin/TermController.php:111 +#: controllers/admin/TermController.php:73 +msgid "Error en los campos de la etiqueta." +msgstr "Error in the fields of the tag." + +#: controllers/admin/TermController.php:80 msgid "Actualizar etiqueta" msgstr "Update tag" -#: controllers/admin/TermController.php:120 -msgid "Error al borrar la etiqueta." -msgstr "Failed to delete tag." - -#: controllers/admin/TermController.php:122 +#: controllers/admin/TermController.php:94 msgid "Etiqueta borrada correctamente." msgstr "Tag deleted correctly." -#: controllers/admin/UserController.php:42 +#: controllers/admin/TermController.php:96 +msgid "Error al borrar la etiqueta." +msgstr "Failed to delete tag." + +#: controllers/admin/UserController.php:48 msgid "Usuario creado correctamente." msgstr "User created successfully." -#: controllers/admin/UserController.php:47 +#: controllers/admin/UserController.php:53 msgid "Error al publicar el usuario." msgstr "Failed to publish the user." -#: controllers/admin/UserController.php:57 +#: controllers/admin/UserController.php:65 msgid "Publicar nuevo usuario" msgstr "New user" -#: controllers/admin/UserController.php:159 +#: controllers/admin/UserController.php:93 msgid "El usuario no existe." msgstr "The user does not exist." -#: controllers/admin/UserController.php:165 -msgid "Error en los campos del usuario." -msgstr "Error in user fields." - -#: controllers/admin/UserController.php:171 +#: controllers/admin/UserController.php:101 msgid "Usuario actualizado correctamente." msgstr "User updated successfully." -#: controllers/admin/UserController.php:173 +#: controllers/admin/UserController.php:103 msgid "Error al actualizar el usuario." msgstr "Failed to update user." -#: controllers/admin/UserController.php:186 +#: controllers/admin/UserController.php:106 +msgid "Error en los campos del usuario." +msgstr "Error in user fields." + +#: controllers/admin/UserController.php:120 msgid "Actualizar usuario" msgstr "Update user" -#: controllers/admin/UserController.php:192 +#: controllers/admin/UserController.php:128 msgid "No puedes eliminar este usuario." msgstr "You can not delete this user." -#: controllers/admin/UserController.php:198 +#: controllers/admin/UserController.php:135 msgid "No se puede borrar un usuario con entradas publicadas." msgstr "Can not delete a user with published posts." -#: controllers/admin/UserController.php:200 +#: controllers/admin/UserController.php:137 msgid "Error al borrar el usuario." msgstr "Error deleting user." -#: controllers/admin/UserController.php:202 +#: controllers/admin/UserController.php:139 msgid "Usuario borrado correctamente." msgstr "User deleted correctly." -#: controllers/install/IndexController.php:34 +#: controllers/install/IndexController.php:23 msgid "El proceso de instalación se completo correctamente." msgstr "The installation process completed successfully." -#: controllers/install/IndexController.php:37 +#: controllers/install/IndexController.php:39 +msgid "Error al establecer la conexión con la base de datos." +msgstr "Failed to establish connection to database." + +#: controllers/install/IndexController.php:45 +#, php-format +msgid "No es posible escribir en el directorio %1$s." +msgstr "Can not write to directory %1$s." + +#: controllers/install/IndexController.php:51 msgid "Error al crear las tablas de la base de datos." msgstr "Failed to create database tables." -#: controllers/login/IndexController.php:44 +#: controllers/login/IndexController.php:38 msgid "Inicio de sesión correcto." msgstr "Login is correct." -#: controllers/login/IndexController.php:49 +#: controllers/login/IndexController.php:43 msgid "Usuario o/y contraseña incorrecto(s)." msgstr "Incorrect user or/and password." -#: controllers/login/LogoutController.php:30 +#: controllers/login/LogoutController.php:29 msgid "Cierre de sesión correcto." msgstr "Logout is correct." -#: controllers/login/RegisterController.php:43 +#: controllers/login/RegisterController.php:40 msgid "Usuario registrado correctamente." msgstr "User successfully registered." -#: controllers/login/RegisterController.php:48 +#: controllers/login/RegisterController.php:45 msgid "Error al registrar el usuario." msgstr "Failed to register user." -#: load.php:38 +#: load.php:52 msgid "Debes iniciar sesión." msgstr "You must log in." -#: load.php:53 +#: load.php:110 msgid "No tienes permisos para visualizar esta pagina." msgstr "You can`t view this page." -#: models/managers/InstallManager.php:46 -msgid "Error al establecer la conexión con la base de datos." -msgstr "Failed to establish connection to database." - -#: models/managers/InstallManager.php:56 -#, php-format -msgid "No es posible escribir en el directorio %1$s." -msgstr "Can not write to directory %1$s." - -#: models/managers/MenusManager.php:90 models/managers/MenusManager.php:175 -#: models/managers/MenusManager.php:254 +#: models/managers/MenusManager.php:112 models/managers/MenusManager.php:197 +#: models/managers/MenusManager.php:275 msgid "Error al actualizar el numero de hijos de los menus." msgstr "An error occurred while updating the number of children in the menus." -#: models/managers/MenusManager.php:94 +#: models/managers/MenusManager.php:116 msgid "Error al actualizar las posiciones de los menus." msgstr "Error updating menu items." @@ -594,116 +603,112 @@ msgstr "Failed to update sidebar positions." msgid "Error. Token no encontrado." msgstr "Error. Token not found." -#: util/Token.php:61 +#: util/Token.php:68 util/Token.php:81 msgid "Error. El Token es invalido." msgstr "The Token is invalid." -#: util/Token.php:65 +#: util/Token.php:77 msgid "Error. El Token a caducado." msgstr "The Token has expired." -#: util/Token.php:67 -msgid "Error. El Token invalido." -msgstr "Error: The Token invalid." - -#: util/Token.php:69 +#: util/Token.php:85 msgid "Error. El Token no se puede usar." msgstr "The Token can not be used." -#: util/Token.php:71 -msgid "Error en el formato del Token." +#: util/Token.php:89 +msgid "Error. Formato del Token incorrecto." msgstr "Token format error." -#: util/Token.php:73 +#: util/Token.php:93 msgid "Error desconocido en el Token." msgstr "Unknown error in Token." -#: util/form/Form.php:72 +#: util/form/Form.php:71 #, php-format msgid "El campo \"%1$s\" es obligatorio." msgstr "The field \"%1$s\" is required." -#: views/admin/category/data.php:8 views/admin/category/form.php:18 -#: views/admin/license/data.php:8 views/admin/license/form.php:24 -#: views/admin/profile/data.php:8 views/admin/profile/form.php:24 -#: views/admin/term/data.php:10 views/admin/term/form.php:18 -#: views/admin/user/data.php:9 views/admin/user/form.php:28 +#: views/admin/category/data.php:8 views/admin/category/form.php:19 +#: views/admin/license/data.php:8 views/admin/license/form.php:25 +#: views/admin/profile/data.php:8 views/admin/profile/form.php:25 +#: views/admin/term/data.php:8 views/admin/term/form.php:20 +#: views/admin/user/data.php:9 views/admin/user/form.php:29 msgid "Nombre" msgstr "Name" #: views/admin/category/data.php:9 views/admin/index/index.php:17 #: views/admin/post/index.php:11 views/admin/sidebar.php:20 -#: views/admin/term/data.php:11 views/admin/user/data.php:12 +#: views/admin/term/data.php:9 views/admin/user/data.php:12 msgid "Entradas" msgstr "Posts" -#: views/admin/category/form.php:22 views/admin/license/form.php:28 -#: views/admin/profile/form.php:28 views/admin/sidebar/form.php:22 -#: views/admin/term/form.php:22 +#: views/admin/category/form.php:23 views/admin/license/form.php:29 +#: views/admin/profile/form.php:29 views/admin/sidebar/form.php:24 +#: views/admin/term/form.php:24 msgid "Descripción" msgstr "Description" -#: views/admin/category/form.php:28 views/admin/comment/form.php:60 -#: views/admin/license/form.php:44 views/admin/menu/form.php:66 -#: views/admin/page/form.php:45 views/admin/post/form.php:54 -#: views/admin/profile/form.php:44 views/admin/sidebar/form.php:28 -#: views/admin/term/form.php:28 +#: views/admin/category/form.php:29 views/admin/comment/form.php:61 +#: views/admin/license/form.php:45 views/admin/menu/form.php:67 +#: views/admin/page/form.php:46 views/admin/post/form.php:73 +#: views/admin/profile/form.php:45 views/admin/sidebar/form.php:30 +#: views/admin/term/form.php:30 msgid "Publicación" msgstr "Publication" -#: views/admin/category/form.php:33 views/admin/comment/form.php:65 -#: views/admin/header.php:39 views/admin/license/form.php:49 -#: views/admin/menu/form.php:71 views/admin/optionlicense/datapages.php:116 -#: views/admin/optionlicense/form.php:53 views/admin/optionlicense/form.php:79 -#: views/admin/page/form.php:55 views/admin/post/form.php:68 -#: views/admin/profile/form.php:49 views/admin/sidebar/form.php:33 -#: views/admin/term/form.php:33 +#: views/admin/category/form.php:34 views/admin/comment/form.php:66 +#: views/admin/header.php:32 views/admin/license/form.php:50 +#: views/admin/menu/form.php:72 views/admin/optionlicense/datapages.php:116 +#: views/admin/optionlicense/form.php:54 views/admin/optionlicense/form.php:80 +#: views/admin/page/form.php:56 views/admin/post/form.php:87 +#: views/admin/profile/form.php:50 views/admin/sidebar/form.php:35 +#: views/admin/term/form.php:35 msgid "Publicar" msgstr "Publish" #: views/admin/category/index.php:11 views/admin/index/index.php:44 -#: views/admin/post/form.php:73 views/admin/sidebar.php:49 +#: views/admin/post/form.php:92 views/admin/sidebar.php:49 msgid "Categorías" msgstr "Categories" -#: views/admin/comment/data.php:10 views/admin/comment/form.php:26 -#: views/admin/post/data.php:9 +#: views/admin/comment/data.php:8 views/admin/comment/form.php:27 +#: views/admin/post/data.php:9 views/admin/post/form.php:64 msgid "Autor" msgstr "Author" -#: views/admin/comment/data.php:11 +#: views/admin/comment/data.php:9 msgid "Comentario" msgstr "Comment" -#: views/admin/comment/data.php:12 views/admin/page/data.php:11 +#: views/admin/comment/data.php:10 views/admin/page/data.php:11 #: views/admin/post/data.php:12 msgid "Estado" msgstr "State" -#: views/admin/comment/data.php:13 views/admin/comment/form.php:42 -#: views/admin/header.php:43 +#: views/admin/comment/data.php:11 views/admin/comment/form.php:43 +#: views/admin/header.php:36 msgid "Entrada" msgstr "Post" -#: views/admin/comment/data.php:14 views/admin/page/data.php:10 +#: views/admin/comment/data.php:12 views/admin/page/data.php:10 #: views/admin/post/data.php:11 msgid "Fecha" msgstr "Date" -#: views/admin/comment/form.php:30 views/admin/user/data.php:10 -#: views/admin/user/form.php:34 views/login/register/index.php:30 +#: views/admin/comment/form.php:31 views/admin/user/data.php:10 +#: views/admin/user/form.php:35 views/login/register/index.php:31 msgid "Correo electrónico" msgstr "Email" -#: views/admin/comment/form.php:37 +#: views/admin/comment/form.php:38 msgid "Fecha de publicación" msgstr "Publication date" -#: views/admin/comment/form.php:48 +#: views/admin/comment/form.php:49 msgid "Comentario aprobado" msgstr "Approved comment" -#: views/admin/comment/form.php:54 +#: views/admin/comment/form.php:55 msgid "Contenido del comentario" msgstr "Content of the comment" @@ -718,32 +723,32 @@ msgstr "Comments" msgid "versión %1$s" msgstr "versión %1$s" -#: views/admin/header.php:44 views/pagination.php:27 +#: views/admin/header.php:37 views/pagination.php:27 msgid "Pagina" msgstr "Page" -#: views/admin/header.php:45 +#: views/admin/header.php:38 msgid "Categoría" msgstr "Category" -#: views/admin/header.php:46 +#: views/admin/header.php:39 msgid "Etiqueta" msgstr "Term" -#: views/admin/header.php:54 +#: views/admin/header.php:47 #, php-format msgid "Hola %1$s" msgstr "Hello %1$s" -#: views/admin/header.php:58 views/admin/user/form.php:58 +#: views/admin/header.php:51 views/admin/user/form.php:59 msgid "Perfil" msgstr "Profile" -#: views/admin/header.php:60 +#: views/admin/header.php:53 msgid "Cerrar sesión" msgstr "Logout" -#: views/admin/index/apigithub.php:9 views/admin/post/form.php:62 +#: views/admin/index/apigithub.php:9 views/admin/post/form.php:81 msgid "Ultima actualización" msgstr "Last update" @@ -764,7 +769,7 @@ msgstr "Statistics" msgid "Paginas" msgstr "Pages" -#: views/admin/index/index.php:48 views/admin/post/form.php:90 +#: views/admin/index/index.php:48 views/admin/post/form.php:109 #: views/admin/sidebar.php:54 views/admin/term/index.php:11 msgid "Etiquetas" msgstr "Terms" @@ -774,19 +779,19 @@ msgstr "Terms" msgid "Usuarios" msgstr "Users" -#: views/admin/license/form.php:32 views/admin/profile/index.php:11 +#: views/admin/license/form.php:33 views/admin/profile/index.php:11 #: views/admin/sidebar.php:97 msgid "Perfiles" msgstr "Profiles" -#: views/admin/license/index.php:11 views/admin/profile/form.php:32 +#: views/admin/license/index.php:11 views/admin/profile/form.php:33 #: views/admin/sidebar.php:102 views/admin/sidebar.php:120 msgid "Permisos" msgstr "Licenses" -#: views/admin/menu/data.php:10 views/admin/menu/form.php:31 +#: views/admin/menu/data.php:10 views/admin/menu/form.php:32 #: views/admin/page/data.php:8 views/admin/post/data.php:8 -#: views/admin/sidebar/data.php:8 views/admin/sidebar/form.php:18 +#: views/admin/sidebar/data.php:8 views/admin/sidebar/form.php:20 msgid "Título" msgstr "Title" @@ -798,16 +803,16 @@ msgstr "Elements" msgid "Menu" msgstr "Menu" -#: views/admin/menu/form.php:35 views/admin/page/form.php:26 -#: views/admin/post/form.php:35 +#: views/admin/menu/form.php:36 views/admin/page/form.php:27 +#: views/admin/post/form.php:40 msgid "Enlace" msgstr "Link" -#: views/admin/menu/form.php:42 +#: views/admin/menu/form.php:43 msgid "Seleccionar menu padre" msgstr "Select parent menu" -#: views/admin/menu/form.php:44 +#: views/admin/menu/form.php:45 msgid "Sin padre" msgstr "No father" @@ -815,63 +820,87 @@ msgstr "No father" msgid "Menus" msgstr "Menus" -#: views/admin/option/index.php:34 views/admin/sidebar.php:109 +#: views/admin/modaldelete.php:5 +msgid "Eliminar" +msgstr "Delete" + +#: views/admin/modaldelete.php:8 +msgid "¿Esta seguro que desea continuar?" +msgstr "Are you sure you want to continue?" + +#: views/admin/modaldelete.php:11 +msgid "No" +msgstr "No" + +#: views/admin/modaldelete.php:12 +msgid "Si" +msgstr "Yes" + +#: views/admin/option/index.php:37 views/admin/sidebar.php:109 msgid "Configuración" msgstr "Option" -#: views/admin/option/index.php:39 +#: views/admin/option/index.php:42 msgid "Título del sitio" msgstr "Site Title" -#: views/admin/option/index.php:45 +#: views/admin/option/index.php:48 msgid "Descripción corta" msgstr "Short description" -#: views/admin/option/index.php:51 +#: views/admin/option/index.php:54 msgid "Correo electrónico del administrador" msgstr "Administrator Email" -#: views/admin/option/index.php:57 +#: views/admin/option/index.php:60 msgid "Dirección del sitio web" msgstr "Website address" -#: views/admin/option/index.php:63 +#: views/admin/option/index.php:66 msgid "Menu actual" msgstr "Current Menu" -#: views/admin/option/index.php:80 +#: views/admin/option/index.php:83 msgid "Datos a mostrar por pagina" msgstr "Data to show per page" -#: views/admin/option/index.php:86 +#: views/admin/option/index.php:89 msgid "Seleccionar plantilla" msgstr "Select template" -#: views/admin/option/index.php:102 +#: views/admin/option/index.php:105 msgid "Seleccionar idioma" msgstr "Select language" -#: views/admin/option/index.php:119 +#: views/admin/option/index.php:122 msgid "Perfil por defecto" msgstr "Default profile" -#: views/admin/option/index.php:137 +#: views/admin/option/index.php:139 +msgid "Comentarios anónimos" +msgstr "Anonymous comments" + +#: views/admin/option/index.php:143 +msgid "Permitir comentarios de usuarios no registrados" +msgstr "Allow comments from unregistered users" + +#: views/admin/option/index.php:149 msgid "Tamaño" msgstr "Size" -#: views/admin/option/index.php:150 +#: views/admin/option/index.php:162 msgid "Imagen por defecto" msgstr "Default image" -#: views/admin/option/index.php:164 +#: views/admin/option/index.php:176 msgid "Calificación" msgstr "Rating" -#: views/admin/option/index.php:177 +#: views/admin/option/index.php:189 msgid "Forzar imagen por defecto" msgstr "Force Default" -#: views/admin/option/index.php:186 +#: views/admin/option/index.php:198 msgid "Guardar" msgstr "Update" @@ -887,15 +916,15 @@ msgstr "Delete" msgid "Campos a visualizar por pagina" msgstr "Data to show per page" -#: views/admin/optionlicense/form.php:25 +#: views/admin/optionlicense/form.php:26 msgid "Permiso" msgstr "License" -#: views/admin/optionlicense/form.php:43 +#: views/admin/optionlicense/form.php:44 msgid "Marcar todo" msgstr "Check All" -#: views/admin/optionlicense/form.php:47 +#: views/admin/optionlicense/form.php:48 msgid "Desmarcar todo" msgstr "Uncheck All" @@ -903,15 +932,15 @@ msgstr "Uncheck All" msgid "Configuración de Permisos" msgstr "Licenses configuration" -#: views/admin/page/form.php:30 views/admin/post/form.php:39 +#: views/admin/page/form.php:31 views/admin/post/form.php:44 msgid "Contenido" msgstr "Content" -#: views/admin/page/form.php:37 views/admin/post/form.php:46 +#: views/admin/page/form.php:38 views/admin/post/form.php:51 msgid "Habilitar comentarios" msgstr "Enable comments" -#: views/admin/page/form.php:49 views/admin/post/form.php:58 +#: views/admin/page/form.php:50 views/admin/post/form.php:77 msgid "Visible" msgstr "Visible" @@ -939,29 +968,29 @@ msgstr "General" msgid "Posición" msgstr "Position" -#: views/admin/user/data.php:8 views/admin/user/form.php:22 -#: views/login/index/index.php:18 views/login/register/index.php:18 +#: views/admin/user/data.php:8 views/admin/user/form.php:23 +#: views/login/index/index.php:19 views/login/register/index.php:19 msgid "Usuario" msgstr "User" -#: views/admin/user/data.php:11 views/login/index/index.php:39 +#: views/admin/user/data.php:11 views/login/index/index.php:40 msgid "Registro" msgstr "Registration" -#: views/admin/user/form.php:40 views/login/index/index.php:22 -#: views/login/register/index.php:22 +#: views/admin/user/form.php:41 views/login/index/index.php:23 +#: views/login/register/index.php:23 msgid "Contraseña" msgstr "Password" -#: views/admin/user/form.php:46 views/login/register/index.php:26 +#: views/admin/user/form.php:47 views/login/register/index.php:27 msgid "Repetir contraseña" msgstr "Repeat password" -#: views/admin/user/form.php:52 +#: views/admin/user/form.php:53 msgid "Sitio web" msgstr "Website" -#: views/admin/user/form.php:74 +#: views/admin/user/form.php:75 msgid "Agregar" msgstr "Add" @@ -1001,19 +1030,19 @@ msgstr "Charset" msgid "Siguiente" msgstr "Next" -#: views/login/index/index.php:29 +#: views/login/index/index.php:30 msgid "Mantener la sesión iniciada" msgstr "Keep the session started" -#: views/login/index/index.php:34 views/login/register/index.php:42 +#: views/login/index/index.php:35 views/login/register/index.php:43 msgid "Conectar" msgstr "Login" -#: views/login/index/index.php:44 +#: views/login/index/index.php:45 msgid "Volver a la pagina principal" msgstr "Back to home page" -#: views/login/register/index.php:34 +#: views/login/register/index.php:35 msgid "Registrar" msgstr "Register" @@ -1021,6 +1050,20 @@ msgstr "Register" msgid "Presione \"Enter\" para continuar." msgstr "Press \"Enter\" to continue." +#, fuzzy +#~| msgid "Contenido del comentario" +#~ msgid "No existe ningún comentario." +#~ msgstr "Content of the comment" + +#~ msgid "La entrada no existe." +#~ msgstr "Post does not exist." + +#~ msgid "Error al borrar el perfil." +#~ msgstr "Error deleting profile." + +#~ msgid "Error. El Token invalido." +#~ msgstr "Error: The Token invalid." + #~ msgid "Titulo" #~ msgstr "--> Borrar" diff --git a/app/views/admin/category/data.php b/app/views/admin/category/data.php index 73b9f80..48adcef 100644 --- a/app/views/admin/category/data.php +++ b/app/views/admin/category/data.php @@ -29,7 +29,9 @@ - + getCategoryName(); ?> getCategoryPostCount(); ?> diff --git a/app/views/admin/category/index.php b/app/views/admin/category/index.php index 0e68d21..0244311 100644 --- a/app/views/admin/category/index.php +++ b/app/views/admin/category/index.php @@ -6,11 +6,12 @@ ViewController::registerScript('delete-data'); $siteUrl = ViewController::getViewData('siteUrl') . "admin/category/"; ?> -
+

+
diff --git a/app/views/admin/comment/data.php b/app/views/admin/comment/data.php index 3c2591f..ead39d7 100644 --- a/app/views/admin/comment/data.php +++ b/app/views/admin/comment/data.php @@ -38,7 +38,9 @@ - + getCommentAuthor(); ?> getCommentContents(); ?> diff --git a/app/views/admin/comment/index.php b/app/views/admin/comment/index.php index 3bf6e8b..5acea93 100644 --- a/app/views/admin/comment/index.php +++ b/app/views/admin/comment/index.php @@ -6,11 +6,12 @@ ViewController::registerScript('delete-data'); $siteUrl = ViewController::getViewData('siteUrl') . "admin/comment/"; ?> -
+

+
diff --git a/app/views/admin/license/data.php b/app/views/admin/license/data.php index 3033ce3..f1078e7 100644 --- a/app/views/admin/license/data.php +++ b/app/views/admin/license/data.php @@ -26,7 +26,9 @@ - + getLicenseName(); ?> diff --git a/app/views/admin/license/index.php b/app/views/admin/license/index.php index d4f376d..227542d 100644 --- a/app/views/admin/license/index.php +++ b/app/views/admin/license/index.php @@ -6,11 +6,12 @@ ViewController::registerScript('delete-data'); $siteUrl = ViewController::getViewData('siteUrl') . "admin/license/"; ?> -
+

+
diff --git a/app/views/admin/menu/data.php b/app/views/admin/menu/data.php index 053109e..30e7ceb 100644 --- a/app/views/admin/menu/data.php +++ b/app/views/admin/menu/data.php @@ -32,7 +32,9 @@ - + getMenuTitle(); ?> getMenuTotalChildren(); ?> diff --git a/app/views/admin/menu/dataparentmenu.php b/app/views/admin/menu/dataparentmenu.php index 23d80cc..ffb14f3 100644 --- a/app/views/admin/menu/dataparentmenu.php +++ b/app/views/admin/menu/dataparentmenu.php @@ -1,9 +1,9 @@ ' title='Editar'> - getMenuTitle(); ?>
@@ -61,8 +61,7 @@ getMenuTotalChildren() > 0) { ?>