Example #1
0
 public function indexAction()
 {
     if (($response = parent::indexAction()) instanceof Response) {
         return $response;
     }
     $form = new Form(package_path('Designs', 'Resources/forms/admin/index-filters.php'));
     $form->populate($this->view->filters);
     $this->view->assign('form', $form);
 }
Example #2
0
 public function getView()
 {
     if (\null === $this->view) {
         $this->view = new View();
         try {
             $this->view->injectPaths((array) package_path(current_package(), 'Resources/views'));
         } catch (\Exception $e) {
             app()->collectException($e);
         }
     }
     return $this->view;
 }
Example #3
0
 /**
  * @param EntityInterface $entity
  * @return \Micro\Http\Response\RedirectResponse|\Micro\Application\View
  */
 public function addAction(EntityInterface $entity = \null)
 {
     $package = $this->request->getParam('package');
     $controller = $this->request->getParam('controller');
     $model = $this->getModel();
     if ($entity === \null) {
         $entity = $model->createEntity();
     }
     $form = new Form(package_path(ucfirst(Utils::camelize($package)), '/Resources/forms/' . ($this->scope ? $this->scope . '/' : '') . $controller . '-add.php'));
     $form->populate($entity->toArray());
     $this->prepareForm($form, $entity);
     if ($this->request->isPost()) {
         $post = $this->request->getPost();
         if (isset($post['btnBack'])) {
             return new RedirectResponse(route(\null, ['action' => 'index', 'id' => \null]));
         }
         $post = Utils::arrayMapRecursive('trim', $post);
         $this->modifyPost($form, $entity, $post);
         $this->preValidate($form, $entity, $post);
         $form->isValid($post);
         $this->postValidate($form, $entity, $post);
         if (!$form->hasErrors()) {
             if (!isset($post['languageId']) && $this->container->has('language') && ($language = $this->container->get('language')) instanceof LanguageInterface) {
                 $post['languageId'] = $language->getId();
             }
             try {
                 $post = Utils::arrayMapRecursive('trim', $post, true);
                 $this->modifyData($post);
                 $entity->setFromArray($post);
                 $this->modifyEntity($entity);
                 $model->save($entity);
                 if (isset($post['btnApply'])) {
                     $redirectResponse = new RedirectResponse(route(\null, ['action' => 'edit', 'id' => $entity[$model->getIdentifier()]]));
                 } else {
                     $redirectResponse = new RedirectResponse(route(\null, ['action' => 'index', 'id' => \null]));
                 }
                 return $redirectResponse->withFlash('Информацията е записана');
             } catch (\Exception $e) {
                 if ($entity[$model->getIdentifier()]) {
                     $redirectResponse = new RedirectResponse(route(\null, ['action' => 'edit', 'id' => $entity[$model->getIdentifier()]]));
                 } else {
                     $redirectResponse = new RedirectResponse(route(\null, ['action' => 'add', 'id' => \null]));
                 }
                 return $redirectResponse->withFlash(env('development') ? $e->getMessage() : 'Възникна грешка. Опитайте по-късно', 'danger');
             }
         }
     }
     $this->view->setTemplate(($this->scope ? $this->scope . '/' : '') . $controller . '/add');
     return $this->view->addData(['form' => $form, 'item' => $entity]);
 }
Example #4
0
 public function wizzardAction()
 {
     $form = new Form(package_path('Brands', 'Resources/forms/admin/wizzard.php'));
     if ($this->request->isPost()) {
         $post = $this->request->getPost();
         $post = Utils::arrayMapRecursive('trim', $post);
         if (isset($post['btnBack'])) {
             return new RedirectResponse(route(\null, ['action' => 'index', 'id' => \null]));
         }
         $form->isValid($post);
         if (isset($post['name']) && $post['name'] && isset($post['countryId']) && $post['countryId']) {
             $m = new \Brands\Model\Table\Brands();
             foreach ($post['countryId'] as $countryId) {
                 $where = array('name = ?' => $post['name'], 'countryId = ?' => $countryId, 'typeId = ?' => $post['typeId']);
                 if ($m->fetchRow($where)) {
                     $form->countryId->addError('Тази марка и тип съществува за някои от избраните държави');
                     $form->markAsError();
                     break;
                 }
             }
         }
         if (!$form->hasErrors()) {
             $redirectResponse = new RedirectResponse(route(\null, ['action' => 'index', 'id' => \null]));
             try {
                 $post = Utils::arrayMapRecursive('trim', $post, true);
                 $this->getModel()->multipleInsert($post);
                 return $redirectResponse->withFlash('Информацията е записана');
             } catch (\Exception $e) {
                 return $redirectResponse->withFlash($e->getMessage(), 'danger');
             }
         }
     }
     $this->view->assign('form', $form);
 }
Example #5
0
 public function onApplicationStart(Message $message)
 {
     $this->view = new View('debug');
     $this->view->addPath(package_path('MicroDebug', 'Resources/views'));
 }
Example #6
0
 /**
  * @param string $package
  * @param Http\Request $request
  * @param Http\Response $response
  * @param bool $subRequest
  * @throws CoreException
  * @return \Micro\Http\Response
  */
 public function resolve($package, Http\Request $request, Http\Response $response, $subRequest = \false)
 {
     if (!is_string($package) || strpos($package, '@') === \false) {
         throw new CoreException('[' . __METHOD__ . '] Package must be in [Package\\Handler@action] format', 500);
     }
     list($package, $action) = explode('@', $package);
     if (!class_exists($package, \true)) {
         throw new CoreException('[' . __METHOD__ . '] Package class "' . $package . '" not found', 404);
     }
     $parts = explode('\\', $package);
     $packageParam = Utils::decamelize($parts[0]);
     $controllerParam = Utils::decamelize($parts[count($parts) - 1]);
     $actionParam = Utils::decamelize($action);
     $request->setParam('package', $packageParam);
     $request->setParam('controller', $controllerParam);
     $request->setParam('action', $actionParam);
     $packageInstance = new $package($request, $response);
     if ($packageInstance instanceof Controller) {
         $actionMethod = lcfirst(Utils::camelize($action)) . 'Action';
     } else {
         $actionMethod = lcfirst(Utils::camelize($action));
     }
     if (!method_exists($packageInstance, $actionMethod)) {
         throw new CoreException('[' . __METHOD__ . '] Method "' . $actionMethod . '" not found in "' . $package . '"', 404);
     }
     if ($packageInstance instanceof ContainerAwareInterface) {
         $packageInstance->setContainer($this);
     }
     $scope = '';
     if ($packageInstance instanceof Controller) {
         $packageInstance->init();
         $scope = $packageInstance->getScope();
     }
     if (($packageResponse = $packageInstance->{$actionMethod}()) instanceof Http\Response) {
         return $packageResponse;
     }
     if (is_object($packageResponse) && !$packageResponse instanceof View) {
         throw new CoreException('[' . __METHOD__ . '] Package response is object and must be instance of View', 500);
     }
     if ($packageResponse === \null || is_array($packageResponse)) {
         if ($packageInstance instanceof Controller) {
             $view = $packageInstance->getView();
         } else {
             $view = new View();
         }
         if (is_array($packageResponse)) {
             $view->addData($packageResponse);
         }
         $packageResponse = $view;
     }
     if ($packageResponse instanceof View) {
         if ($packageResponse->getTemplate() === \null) {
             $packageResponse->setTemplate(($scope ? $scope . '/' : '') . $controllerParam . '/' . $actionParam);
         }
         $packageResponse->injectPaths((array) package_path($parts[0], 'Resources/views'));
         if (($eventResponse = $this->get('event')->trigger('render.start', ['view' => $packageResponse])) instanceof Http\Response) {
             return $eventResponse;
         }
         if ($subRequest) {
             $packageResponse->setRenderParent(\false);
         }
         $response->setBody((string) $packageResponse->render());
     } else {
         $response->setBody((string) $packageResponse);
     }
     return $response;
 }
Example #7
0
 public function addItemAction()
 {
     $menuId = $this->request->getParam('menuId');
     $id = $this->request->getParam('id');
     $menu = $this->getModel()->find((int) $menuId);
     if ($menu === null) {
         return new RedirectResponse(route(\null, array('action' => 'index', 'menuId' => \null)));
     }
     $model = new Model\Items();
     if ($id) {
         $item = $model->find((int) $id);
         if ($item === null) {
             return new RedirectResponse(route(\null, array('action' => 'items', 'id' => \null)));
         }
     } else {
         $item = $model->createEntity();
     }
     if ($item instanceof Model\Entity\Item) {
     }
     $form = new Form(package_path('Navigation', 'Resources/forms/admin/index-add-item.php'));
     $tree = new Helper\Tree($menu->getAlias());
     $form->parentId->setMultiOptions($tree->flat($tree->getTree(null), '---', array((int) $id)));
     $form->populate($item->toArray());
     if ($this->request->isPost()) {
         $post = $this->request->getPost();
         if (isset($post['btnBack'])) {
             return new RedirectResponse(route(\null, array('action' => 'items', 'id' => \null)));
         }
         $form->isValid($post);
         if (isset($post['alias']) && $post['alias']) {
             $m = new Model\Table\Items();
             $where = array('alias = ?' => $post['alias']);
             if ($item->getId()) {
                 $where['id <> ?'] = $item->getId();
             }
             if ($m->fetchRow($where)) {
                 $form->alias->addError('Псевдонимът се използва');
                 $form->markAsError();
             }
         }
         if (!$form->hasErrors()) {
             if (isset($post['routeData'])) {
                 $routeData = $post['routeData'];
             } else {
                 $routeData = array();
             }
             foreach ($routeData as $k => $v) {
                 if (empty($v)) {
                     unset($routeData[$k]);
                 }
             }
             $post = Utils::arrayMapRecursive('trim', $post, true);
             $item->setFromArray($post);
             $item->setMenuId($menuId);
             if ($item->getRoute() === \null) {
                 if ($item->getUrl() === \null) {
                     $item->setUrl('#');
                 }
             } else {
                 $item->setUrl(\null);
             }
             if ($item->getRoute()) {
                 if (($navigationHelper = $this->getNavigationHelper($item->getRoute())) !== \null) {
                     if (method_exists($navigationHelper, 'decode')) {
                         $navigationHelper->decode($routeData, $item);
                     }
                 }
             }
             $item->setRouteData(empty($routeData) ? \null : json_encode($routeData));
             if ($item->getOrder() === \null) {
                 if ($item->getParentId()) {
                     $and = ' AND parentId = ' . (int) $item->getParentId();
                 } else {
                     $and = ' AND parentId IS NULL';
                 }
                 $item->setOrder($model->getTable()->getAdapter()->fetchOne('SELECT IFNULL(MAX(`order`), 0) + 1 FROM MenuItems WHERE menuId = ' . (int) $menuId . $and));
             }
             try {
                 $model->save($item);
                 if (isset($post['btnApply'])) {
                     $redirectResponse = new RedirectResponse(route(\null, ['action' => 'add-item', 'id' => $item->getId()]));
                 } else {
                     $redirectResponse = new RedirectResponse(route(\null, ['action' => 'items', 'id' => \null]));
                 }
                 return $redirectResponse->withFlash('Информацията е записана');
             } catch (\Exception $e) {
                 if ($item->getId()) {
                     $redirectResponse = new RedirectResponse(route(\null, ['action' => 'add-item', 'id' => $item->getId()]));
                 } else {
                     $redirectResponse = new RedirectResponse(route(\null, ['action' => 'items', 'id' => \null]));
                 }
                 return $redirectResponse->withFlash(env('development') ? $e->getMessage() : 'Възникна грешка. Опитайте по-късно', 'danger');
             }
         }
     }
     $this->view->assign('menu', $menu);
     $this->view->assign('item', $item);
     $this->view->assign('form', $form);
 }
Example #8
0
 public function brandsAction()
 {
     $filters = parent::handleFilters();
     if ($filters instanceof Response) {
         return $filters;
     }
     $form = new Form(package_path('Brands', 'Resources/forms/admin/reports-brands-filters.php'));
     $form->populate($filters);
     $brands = array();
     $brandImages = array();
     if (isset($filters['brandId'])) {
         $brandsModel = new Brands();
         $brandsModel->addWhere('name', $filters['brandId']);
         if (isset($filters['date']) && $filters['date']) {
             try {
                 $date = new \DateTime($filters['date']);
                 $statusDate = $date->format('Y-m-d');
                 //$brandsModel->addWhere(new Expr('statusDate <= "' . $brandsModel->getAdapter()->quote($statusDate) . '"'));
             } catch (\Exception $e) {
             }
         }
         $brandsRows = $brandsModel->getItems();
         foreach ($brandsRows as $brandRow) {
             if (!isset($brands[$brandRow['countryId']])) {
                 $brands[$brandRow['countryId']] = array();
             }
             $brands[$brandRow['countryId']][$brandRow['typeId']] = $brandRow;
             if (!isset($brandImages[$brandRow['typeId']])) {
                 if ($brandRow->getThumb()) {
                     $brandImages[$brandRow['typeId']] = array('path' => $brandRow->getThumb(), 'image' => 'uploads/brands/thumbs/' . $brandRow->getId() . '.' . pathinfo($brandRow->getImage(), PATHINFO_EXTENSION), 'real' => 'uploads/brands/' . $brandRow->getId() . '.' . pathinfo($brandRow->getImage(), PATHINFO_EXTENSION));
                 }
             }
         }
     }
     if (empty($brands)) {
         return ['form' => $form, 'brands' => $brands];
     }
     $currentCurrency = null;
     if (isset($filters['currency'])) {
         $currencyModel = new Currencies();
         $currentCurrency = $currencyModel->find((int) $filters['currency']);
     }
     $nomContinents = new Continents();
     $continents = $nomContinents->fetchCachedPairs(array('active' => 1), null, array('id' => 'ASC'));
     $nomTypes = new Types();
     $types = $nomTypes->fetchCachedPairs(['active' => 1], null, ['id' => 'ASC']);
     $nomCountries = new Countries();
     $nomCountries->addWhere('active', '1');
     $nomCountries->addOrder('name', 'ASC');
     $countriesRows = $nomCountries->getItems();
     $countries = array();
     $populations = array();
     foreach ($countriesRows as $countryRow) {
         if (empty($countryRow['continentId'])) {
             continue;
         }
         /**
          * Създаване на списъци от държави за континент
          */
         if (!isset($countries[$countryRow['continentId']])) {
             $countries[$countryRow['continentId']] = array();
         }
         $countries[$countryRow['continentId']][$countryRow['id']] = $countryRow;
         /**
          * Изчисляване на популацията за континент
          */
         if (!isset($populations[$countryRow['continentId']])) {
             $populations[$countryRow['continentId']] = 0;
         }
         $populations[$countryRow['continentId']] += $countryRow['population'];
     }
     $nomStatus = new Statuses();
     $statuses = $nomStatus->fetchCachedPairs();
     $nomStatus->resetSelect(true);
     $statusesColors = $nomStatus->fetchCachedPairs(null, array('id', 'color'));
     return ['form' => $form, 'continents' => $continents, 'populations' => $populations, 'types' => $types, 'countries' => $countries, 'brands' => $brands, 'brandImages' => $brandImages, 'statuses' => $statuses, 'statusesColors' => $statusesColors, 'filters' => $filters, 'currentCurrency' => $currentCurrency];
 }
Example #9
0
 public function loginAction()
 {
     if (identity()) {
         return new RedirectResponse(route('admin', [], \true));
     }
     $form = new Form(package_path('UserManagement', 'Resources/forms/admin/login.php'));
     if ($this->request->isPost()) {
         $data = $this->request->getPost();
         if ($form->isValid($data)) {
             $usersModel = new Users();
             if ($usersModel->login($data['username'], $data['password'])) {
                 if (($backTo = $this->request->getParam('backTo')) !== \null) {
                     return new RedirectResponse(urldecode($backTo));
                 } else {
                     return new RedirectResponse(route('admin', [], \true));
                 }
             } else {
                 $form->password->addError('Невалидни данни');
             }
         }
     }
     return ['form' => $form];
 }