/**
  * @param \SplSubject|View $subject
  */
 public function update(\SplSubject $subject)
 {
     $viewConfig = $subject->getViewConfigVerify();
     $query = $subject->getQueryServiceVerify()->get($viewConfig->query)->setParams($subject->getParams())->process();
     $subject->setData($query->getData());
     $data = $subject->getData();
     foreach (['actions', 'links'] as $datapartam) {
         foreach ($data[$datapartam] as $key => $link) {
             foreach (['routeparams', 'queryparams'] as $keyparams) {
                 foreach ($link[$keyparams] as $paramkey => $param) {
                     if ($param[0] == ':') {
                         $data[$datapartam][$key][$keyparams][$paramkey] = $subject->getParam(substr($param, 1), '');
                     }
                 }
             }
         }
     }
     $subject->setData(['actions' => $data['actions'], 'links' => $data['links']]);
     $result['paginator'] = $subject->getGatewayVerify()->getPages([], $query->getWhere(), $query->getOrder());
     if ($result['paginator']->count() > 0) {
         $result['paginator']->setCurrentPageNumber($subject->getParam('page', 1))->setItemCountPerPage($viewConfig->rows);
     }
     $subject->getLogicServiceVerify()->get('prelist', $viewConfig->model)->trigger($result['paginator']->getCurrentItems());
     $subject->getLogicServiceVerify()->get('postlist', $viewConfig->model)->trigger($result['paginator']->getCurrentItems());
     $result['rows'] = [5, 10, 25, 50, 100];
     $result['params'] = ['data' => strtolower($viewConfig->model), 'view' => $viewConfig->mode];
     $subject->setData($result);
 }
 public function update(\SplSubject $subject)
 {
     $viewConfig = $subject->getViewConfigVerify();
     $query = $subject->getQueryServiceVerify()->get($viewConfig->query)->setParams($subject->getParams())->process();
     $models = $subject->getGateway()->find($query->getWhere());
     foreach ($models as $model) {
         $subject->getLogicServiceVerify()->get($viewConfig->mode, $viewConfig->model)->trigger($model->getDataModel());
     }
     $subject->setRedirect($subject->refresh($viewConfig->title . ' successfull', '/common/mail/index.html'));
 }
 /**
  * @param \SplSubject|View $subject
  */
 public function update(\SplSubject $subject)
 {
     $viewConfig = $subject->getViewConfigVerify();
     $query = $subject->getQueryServiceVerify()->get($viewConfig->query)->setParams($subject->getParams())->process();
     $subject->setData($query->getData());
     $model = $subject->getGatewayServiceVerify()->get($viewConfig->model)->find($query->getWhere());
     if (!$model->count()) {
         return;
     }
     foreach ($model as $row) {
         $result['selectlinks'][] = ['route' => 'common', 'label' => $row->title, 'routeparams' => ['view' => $viewConfig->params['view'], 'data' => $subject->getParams()->fromRoute('data')], 'queryparams' => ['id' => $subject->getParams()->fromRoute('id'), 'template' => $row->_id]];
     }
     $subject->setData($result);
 }
 /**
  * @param View|\SplSubject $subject
  */
 public function update(\SplSubject $subject)
 {
     $viewConfig = $subject->getConfigServiceVerify()->getByObject($subject->getName(), new ViewConfig());
     if ($viewConfig == null) {
         throw new \Exception('Please fill ViewConfig for the ' . $subject->getName() . '. I can\'t work on');
     }
     $result['rowcount'] = $subject->getParam('rowcount', $viewConfig->rows);
     if ($result['rowcount'] != $viewConfig->rows) {
         $viewConfig->rows = $result['rowcount'];
         $subject->getViewConfigVerify()->rows = $result['rowcount'];
         $subject->getConfigServiceVerify()->saveByObject($viewConfig);
     }
     $subject->setData($result);
 }
 public function update(\SplSubject $subject)
 {
     $viewConfig = $subject->getViewConfigVerify();
     $query = $subject->getQueryServiceVerify()->get($viewConfig->query)->setParams($subject->getParams())->process();
     $subject->setData($query->getData());
     $result = [];
     $model = $subject->getGatewayVerify()->findOne($query->getWhere());
     if (!$model) {
         $result['data'] = 'Sorry, some error occured. We can\'t display message. Ask administrator';
     } else {
         $result['data'] = $model->text;
     }
     //        $data = $subject->getData();
     $subject->setData($result);
 }
 public function update(\SplSubject $subject)
 {
     /**
      * @var View $subject
      */
     $result = [];
     $model = $subject->getUser();
     if (!$model) {
         throw new \Exception('User not found');
     }
     $result['model'] = $model;
     $result['title'] = $subject->getViewConfigVerify()->title . ' ' . $model->title;
     //        $this->widgets( $subject, $model );
     $subject->setData($result);
 }
 /**
  * @param \SplSubject|View $subject
  */
 public function update(\SplSubject $subject)
 {
     $viewConfig = $subject->getViewConfigVerify();
     $query = $subject->getQueryServiceVerify()->get($viewConfig->query)->setParams($subject->getParams())->process();
     $subject->setData($query->getData());
     $model = $subject->getGatewayServiceVerify()->get($viewConfig->model)->find($query->getWhere());
     if (!$model->count()) {
         return;
     }
     foreach ($model as $key => $row) {
         $result['selectlinks'][] = ['route' => 'common', 'label' => $row->title, 'folder_title' => $row->folder_title, 'routeparams' => ['view' => 'send', 'data' => 'mail'], 'queryparams' => ['recipient' => $subject->getParams()->fromRoute('id'), 'template' => $row->_id]];
     }
     usort($result['selectlinks'], function ($a, $b) {
         return strnatcmp($a['folder_title'], $b['folder_title']);
     });
     $subject->setData($result);
 }
 /**
  * @param \SplSubject|View $subject
  *
  * @throws \Exception
  */
 public function update(\SplSubject $subject)
 {
     $viewConfig = $subject->getViewConfigVerify();
     $modelRoute = strtolower($viewConfig->model);
     $request = $subject->getParams()->getController()->getRequest();
     $results = [];
     $results['view'] = $subject->getParam('view');
     $ids = $request->getPost('checkedid', null);
     if (!is_array($ids)) {
         $id = $subject->getParams()->fromRoute('id', 0);
         if ($id) {
             $ids = array($id);
         } else {
             $subject->setRedirect($subject->getParams()->getController()->redirect()->toRoute('common', ['data' => $modelRoute, 'view' => $results['view'] == 'delete' ? 'list' : 'recyclelist']));
             return;
         }
     }
     $results['ids'] = $ids;
     foreach ($ids as $id) {
         try {
             $results['items'][$id] = $subject->getGateway()->findOne(['_id' => $id]);
         } catch (\Exception $ex) {
             $subject->setRedirect($subject->refresh('Data is invalid ' . $ex->getMessage(), $this->url()->fromRoute('common', ['data' => $modelRoute, 'view' => 'list'])));
             return;
         }
     }
     if ($request->isPost()) {
         $delyes = $request->getPost('delyes', null);
         $delno = $request->getPost('delno', null);
         if ($delyes !== null) {
             $view = $subject->getViewConfigVerify()->mode;
             if (!in_array($view, ['delete', 'clean', 'restore'])) {
                 throw new \Exception('Action is not allowed');
             }
             $subject->getLogicServiceVerify()->get('pre' . $view, $viewConfig->model)->trigger($results['items']);
             $subject->getLogicServiceVerify()->get($view, $viewConfig->model)->trigger($results['items']);
             $subject->getLogicServiceVerify()->get('post' . $view, $viewConfig->model)->trigger($results['items']);
             $url = $subject->getParams()->fromPost('saurl')['back'];
             $output = null;
             if (isset($url['query'])) {
                 parse_str(parse_url($url)['query'], $output);
             }
             $temp = $subject->getGateway()->findOne(['_id' => $id]);
             if ($temp) {
                 if (isset($output['back']) && $temp->toArray()['status_id'] != Status::DELETED) {
                     $url = $subject->getSaUrlBack($output['back']);
                 }
             }
             if (!isset($url) || $view == 'clean') {
                 $url = $subject->getParams()->getController()->url()->fromRoute('common', ['data' => $modelRoute, 'view' => $results['view'] == 'delete' ? 'list' : 'recyclelist']);
             }
             $subject->setRedirect($subject->refresh(ucfirst($results['view']) . ' was successfull ', $url));
             return;
         }
         if ($delno !== null) {
             $subject->setRedirect($subject->getParams()->getController()->redirect()->toRoute('common', ['data' => $modelRoute, 'view' => $results['view'] == 'delete' ? 'list' : 'recyclelist']));
             return;
         }
     }
     $subject->setData($results);
 }
 /**
  * @param \SplSubject|View $subject
  *
  * @throws \Exception
  */
 public function update(\SplSubject $subject)
 {
     $viewConfig = $subject->getViewConfigVerify();
     $query = $subject->getQueryServiceVerify()->get($viewConfig->query)->setParams($subject->getParams())->process();
     $subject->setData($query->getData());
     $result = [];
     $model = $subject->getGatewayVerify()->findOne($query->getWhere());
     if (!$model) {
         throw new \Exception('Data not found');
     }
     $subject->setDataModel($model);
     $data = $subject->getData();
     foreach (['actions', 'links'] as $datapartam) {
         foreach ($data[$datapartam] as $key => $link) {
             foreach (['routeparams', 'queryparams'] as $keyparams) {
                 foreach ($link[$keyparams] as $paramkey => $param) {
                     if ($param[0] == ':') {
                         $_f = substr($param, 1);
                         $data[$datapartam][$key][$keyparams][$paramkey] = $model->{$_f};
                     }
                 }
             }
         }
     }
     $result['fieldsets'] = [];
     $aclData = $subject->getAclServiceVerify()->getAclConfig($viewConfig->model);
     $modelFields = $subject->getParsedModelConfigVerify()->fields;
     $usedGroups = [];
     foreach ($viewConfig->fields as $field) {
         if (!array_key_exists($field, $modelFields)) {
             continue;
         }
         $fConfig = $modelFields[$field];
         //check $field in acl
         if (!array_key_exists($field, $aclData->fields) || !in_array($aclData->fields[$field], ['read', 'write'])) {
             continue;
         }
         if ($fConfig['type'] == 'pk') {
             continue;
         }
         $usedGroups[$modelFields[$field]['group']][] = $field;
     }
     $chosenGroups = [];
     $fieldSet2Group = [];
     foreach ($viewConfig->groups as $grKey => $groupBlock) {
         if (is_array($groupBlock)) {
             foreach ($groupBlock as $group) {
                 if (array_key_exists($group, $usedGroups)) {
                     $chosenGroups[$group] = $usedGroups[$group];
                     $fieldSet2Group[$group] = $grKey;
                 }
             }
             continue;
         }
         if (array_key_exists($groupBlock, $usedGroups)) {
             $chosenGroups[$groupBlock] = $usedGroups[$groupBlock];
             $fieldSet2Group[$groupBlock] = $groupBlock;
         }
     }
     foreach ($chosenGroups as $group => $groupElements) {
         $fieldSet = $subject->getParsedModelConfigVerify()->fieldsets[$group];
         $elements = $fieldSet['elements'];
         $fieldSet['elements'] = [];
         foreach ($groupElements as $field) {
             $fieldSet['elements'][$field] = $elements[$field];
         }
         $fieldSet['group'] = $fieldSet2Group[$group];
         $chosenGroups[$group] = $fieldSet;
     }
     $result['fieldsets'] = $chosenGroups;
     $subject->getLogicServiceVerify()->get('preview', $viewConfig->model)->trigger($model);
     $result['model'] = $model;
     $result['title'] = $viewConfig->title . ': ' . $model->title;
     $result['actions'] = $data['actions'];
     $result['links'] = $data['links'];
     $subject->setData($result);
     $subject->getLogicServiceVerify()->get('postview', $viewConfig->model)->trigger($model);
 }