Пример #1
0
 public function editAction()
 {
     $taskService = $this->getServiceLocator()->get('Console\\Service\\TaskService');
     $ObjectPropertyHydrator = new ObjectPropertyHydrator();
     $form = new TaskForm();
     $vars = array('form' => $form);
     $task_id = $this->params()->fromRoute('task_id', null);
     if (!empty($task_id)) {
         $task = $taskService->getTask($task_id);
         $task_data = $ObjectPropertyHydrator->extract($task);
         $form->setData($task_data);
     }
     $request = $this->getRequest();
     if ($request->isPost()) {
         $post_data = $request->getPost();
         $form->setData($post_data);
         if ($form->isValid()) {
             $task = new Task();
             $ObjectPropertyHydrator->hydrate($form->getData(), $task);
             $vars['saved_int'] = $taskService->saveTask($task);
         }
     }
     $view_page = new ViewModel($vars);
     //$view_page = $this->setChildViews($view_page);
     return $view_page;
 }
 public function update($id, $data)
 {
     $hydrator = new ObjectProperty();
     $data = $hydrator->extract($data);
     $this->tableGateway->update($data, array('id' => $id));
     return $data;
 }
Пример #3
0
 public function addJobAction()
 {
     if (!$this->getServiceLocator()->get('AuthStatus')->hasIdentity()) {
         return $this->redirect()->toRoute('login');
     }
     $form = new JobsForm();
     $form->get('submit')->setValue('Submit');
     /** @var \Zend\Http\PhpEnvironment\Request $request */
     $request = $this->getRequest();
     if ($request->isPost()) {
         $validate = new JobsFilter();
         $form->setInputFilter($validate->getInputFilter());
         $form->setData($request->getPost());
         if ($form->isValid()) {
             $validate->exchangeArray($form->getData());
             $hydrator = new Hydrator\ObjectProperty();
             $job = new Job();
             $data = $hydrator->extract($request->getPost());
             $hydrator->hydrate($data, $job);
             $auth = new AuthAccess();
             if ($this->getServiceLocator()->get('AuthStatus')->hasIdentity()) {
                 $job->author = $auth->getRealName();
                 $job->date_submitted = time();
                 $this->getJobsTable()->addJob($job);
                 $submission = (string) $this->getJobsTable()->getId();
                 return $this->redirect()->toRoute('showaddedjob', array('action' => 'showaddedjob', 'param' => $submission));
             } else {
                 $this->redirect()->toRoute('login');
             }
         }
     }
     return array('form' => $form);
 }
 public function update($id, $data)
 {
     $hydrator = new ObjectProperty();
     $orderData = $hydrator->extract($data);
     $items = $orderData['item'];
     unset($orderData['item']);
     try {
         $this->repository->beginTransaction();
         $this->repository->update($orderData, $id);
         $listItemsIds = [];
         foreach ($items as $item) {
             if (array_key_exists('id', $item)) {
                 $itemId = $item['id'];
                 $this->repository->updateItem($item, $itemId);
             } else {
                 $item['order_id'] = $id;
                 $itemId = $this->repository->insertItem($item);
             }
             $listItemsIds[] = $itemId;
         }
         $this->repository->deleteItemsNotInArray($id, $listItemsIds);
         $this->repository->commitTransaction();
     } catch (Exception $e) {
         $this->repository->rollbackTransaction();
         return false;
     }
     return $this->repository->find($id);
 }
Пример #5
0
 /**
  * Insert the order resource
  * @param stdClass $data
  * @return $order
  */
 public function insert($data)
 {
     $hydrate = new ObjectProperty();
     $data = $hydrate->extract($data);
     $orderData = $data;
     unset($orderData['item']);
     $items = $data['item'];
     $tableGateway = $this->repository->getTableGateway();
     /**
      * Watching transactions in orders
      */
     try {
         $tableGateway->getAdapter()->getDriver()->getConnection()->beginTransaction();
         $orderId = $this->repository->insert($orderData);
         foreach ($items as $item) {
             $item['order_id'] = $orderId;
             $this->insertItem($item);
         }
         $tableGateway->getAdapter()->getDriver()->getConnection()->commit();
         return ['order_id' => $orderId];
     } catch (\Exception $e) {
         $tableGateway->getAdapter()->getDriver()->getConnection()->rollback();
         return 'error';
     }
 }
Пример #6
0
 public function insert($data)
 {
     $hydrator = new ObjectProperty();
     //Hidrate StdClass to array
     $data->user_id = $this->usersRepository->getAuthenticated()->getId();
     $data->created_at = (new \DateTime())->format('Y-m-d');
     $data->total = 0;
     $items = $data->item;
     unset($data->item);
     $orderData = $hydrator->extract($data);
     $tableGateway = $this->repository->getTableGateway();
     try {
         $tableGateway->getAdapter()->getDriver()->getConnection()->beginTransaction();
         $order_id = $this->repository->insert($orderData);
         foreach ($items as $key => $item) {
             $product = $this->productsRepository->find($item['product_id']);
             $item['order_id'] = $order_id;
             $item['price'] = $product->getPrice();
             $item['total'] = $items[$key]['total'] = $item['quantity'] * $item['price'];
             $total += $item['total'];
             $this->repository->insertItem($item);
         }
         $this->repository->update(['total' => $total], $order_id);
         $tableGateway->getAdapter()->getDriver()->getConnection()->commit();
         return ['order_id' => $order_id];
     } catch (\Exception $e) {
         $tableGateway->getAdapter()->getDriver()->getConnection()->rollback();
         return 'error';
     }
 }
Пример #7
0
 public function update($id, $data)
 {
     $this->find($id);
     $hydrator = new ObjectProperty();
     $this->tableGateway->update($hydrator->extract($data), ['id' => (int) $id]);
     return $this->find($id);
 }
Пример #8
0
 public function create($data)
 {
     $mapper = new ObjectProperty();
     $data = $mapper->extract($data);
     $this->tableGateway->insert($data);
     $data['id'] = $this->tableGateway->getLastInsertValue();
     return $data;
 }
Пример #9
0
 /**
  * Fetch a resource
  *
  * @param mixed $ticket_id
  * @return ApiProblem|TicketEntity
  */
 public function fetch($ticket_id)
 {
     $hydrator = new ObjectProperty();
     $ticket = new TicketEntity();
     $response = $this->client->find($ticket_id);
     $ticket->exchangeArray($hydrator->extract($response->ticket));
     return $ticket;
 }
 public function update($data, $id)
 {
     $hydrator = new ObjectProperty();
     $data = $hydrator->extract($data);
     if (!empty($data['password'])) {
         $bcrypt = new Bcrypt();
         $data['password'] = $bcrypt->create($data['password']);
     }
     return $this->tableGateway->update($data, $id);
 }
Пример #11
0
 public function getDocument($id)
 {
     $documentTable = new TableGateway('document', $this->adapter);
     $rs = $documentTable->select(array('id' => intval($id)));
     if ($rs->count()) {
         $row = $rs->current();
         $ObjectPropertyHydrator = new ObjectPropertyHydrator();
         $document = new Document();
         $ObjectPropertyHydrator->hydrate($row->getArrayCopy(), $document);
         return $document;
     } else {
         throw new \Exception('data not exsist!');
     }
 }
Пример #12
0
 public function getTask($task_id)
 {
     $taskTable = new TableGateway('task', $this->adapter);
     $rs = $taskTable->select(array('id' => intval($task_id)));
     if ($rs->count()) {
         $row = $rs->current();
         $ObjectPropertyHydrator = new ObjectPropertyHydrator();
         $task = new Task();
         $ObjectPropertyHydrator->hydrate($row->getArrayCopy(), $task);
         return $task;
     } else {
         throw new \Exception('data not exsist!');
     }
 }
Пример #13
0
 public function saveAddress(Address $address)
 {
     if ($this->checkAddress($address->address)) {
         // Save now.
         $addressTable = new TableGateway('address', $this->adapter);
         $hydrator = new ObjectPropertyHydrator();
         $data = $hydrator->extract($address);
         $addressTable->insert($data);
         $id = $addressTable->lastInsertValue;
         return $id;
     } else {
         throw new AddressAlreadyExsistException('Address already exsist!');
     }
 }
Пример #14
0
 /**
  * Returns a collection of items for a page.
  *
  * @param  int $offset Page offset
  * @param  int $itemCountPerPage Number of items per page
  * @return array
  */
 public function getItems($offset, $itemCountPerPage)
 {
     $params = ['page' => $offset, 'per_page' => $itemCountPerPage];
     $result = $this->client->findAll($params);
     $this->count = $result->count;
     if (is_array($result->tickets)) {
         $hydrator = new ObjectProperty();
         $tickets = array_map(function ($ticket) use($hydrator) {
             $array = $hydrator->extract($ticket);
             $ticket = new TicketEntity();
             $ticket->exchangeArray($array);
             return $ticket;
         }, $result->tickets);
     } else {
         $tickets = [];
     }
     return $tickets;
 }
Пример #15
0
 /**
  * @param $reverseOauth
  */
 public function auth($reverseOauth)
 {
     if ($reverseOauth->getToken($this->request)) {
         $token = $reverseOauth->getSessionToken();
         // token in session
     } else {
         $token = $reverseOauth->getError();
         // last returned error (array)
     }
     $info = $reverseOauth->getInfo();
     if ($info) {
         $em = $this->getServiceLocator()->get('Doctrine\\ORM\\EntityManager');
         $user = $em->getRepository('Application\\Entity\\User')->findOneByEmail($info->email);
         if ($user) {
             $user->setLastLogin(time());
             $em->persist($user);
             $em->flush();
             $authService = $this->getServiceLocator()->get('Zend\\Authentication\\AuthenticationService');
             $authService->getStorage()->write($user);
             //if it come from other uri then redirect it
             $traject = new Container('traject');
             if ($traject->trajectData) {
                 return $this->redirect()->toRoute('traject/default', ['controller' => 'manage', 'action' => 'success']);
             }
             return $this->redirect()->toRoute('board');
         } else {
             $info->firstname = $info->first_name;
             //to make same name as form elements
             $info->lastname = $info->last_name;
             $hydrator = new ObjectProperty();
             $data = $hydrator->extract($info);
             $form = new RegisterForm();
             $form->setData($data);
             $view = new ViewModel(['registerForm' => $form]);
             $view->setTemplate('user/register/index');
             return $view;
         }
     }
 }
 public function insert($data)
 {
     $hydrator = new ObjectProperty();
     $data = $hydrator->extract($data);
     $order = $data;
     unset($order['items']);
     $items = $data['items'];
     $tableGateway = $this->ordersRepository->getTableGateway();
     try {
         $tableGateway->getAdapter()->getDriver()->getConnection()->beginTransaction();
         $orderId = $this->ordersRepository->insert($order);
         foreach ($items as $item) {
             $item['order_id'] = $orderId;
             $this->ordersRepository->insertItem($item);
         }
         $tableGateway->getAdapter()->getDriver()->getConnection()->commit();
         return ['order_id' => $orderId];
     } catch (\Exception $e) {
         $tableGateway->getAdapter()->getDriver()->getConnection()->rollback();
         throw new \Exception();
     }
 }
Пример #17
0
 public function update($id, $data)
 {
     $hydrator = new ObjectProperty();
     $array = $hydrator->extract($data);
     $orderData = $array;
     unset($orderData['item']);
     $items = $array['item'];
     $tableGateway = $this->repository->getTablegateway();
     try {
         $tableGateway->getAdapter()->getDriver()->getConnection()->beginTransaction();
         $itensAtuais = $this->repository->getOrderItems($id);
         foreach ($items as $item) {
             $item['order_id'] = $id;
             $buscaItem = $this->repository->getOrderItemTablegateway()->select(['order_id' => $item['order_id'], 'product_id' => $item['product_id']]);
             $idItem = 0;
             if (count($buscaItem) > 0) {
                 $idItem = (int) $buscaItem->current()->getId();
                 $this->repository->getOrderItemTablegateway()->update($item, ['id' => $idItem]);
             } else {
                 $this->repository->insertItem($item);
             }
             if (isset($itensAtuais[$idItem])) {
                 unset($itensAtuais[$idItem]);
             }
         }
         foreach ($itensAtuais as $itemExcluir) {
             $this->repository->getOrderItemTablegateway()->delete(['id' => $itemExcluir['id']]);
         }
         $this->repository->update($id, $orderData);
         $tableGateway->getAdapter()->getDriver()->getConnection()->commit();
         return ['order_id' => $id];
     } catch (\Exception $exc) {
         $tableGateway->getAdapter()->getDriver()->getConnection()->rollback();
         return 'error';
         //            echo $exc->getTraceAsString();
     }
 }
Пример #18
0
 public function testExtractDataHydratorStrategy()
 {
     $this->populateHydratorStrategyForm();
     $hydrator = new Hydrator\ObjectProperty();
     $hydrator->addStrategy('entities', new TestAsset\HydratorStrategy());
     $this->form->setHydrator($hydrator);
     $model = new TestAsset\HydratorStrategyEntityA();
     $this->form->bind($model);
     $validSet = array('entities' => array(111, 333));
     $this->form->setData($validSet);
     $this->form->isValid();
     $data = $this->form->getData(Form::VALUES_AS_ARRAY);
     $this->assertEquals($validSet, $data);
     $entities = $model->getEntities();
     $this->assertCount(2, $entities);
     $this->assertEquals(111, $entities[0]->getField1());
     $this->assertEquals(333, $entities[1]->getField1());
     $this->assertEquals('AAA', $entities[0]->getField2());
     $this->assertEquals('CCC', $entities[1]->getField2());
 }
Пример #19
0
 public function exchangeArray($data)
 {
     $hydrator = new ObjectProperty();
     $hydrator->hydrate($data, $this);
 }
Пример #20
0
 /**
  * @param array $item 
  * @return Entity
  */
 protected function createEntity(array $item)
 {
     return $this->hydrator->hydrate($item, $this->entityPrototype);
 }
 public function create($data)
 {
     $hydrator = new ObjectProperty();
     $data = $hydrator->extract($data);
     return $this->userService->save($data);
 }
Пример #22
0
 /**
  * bundle processing 2
  */
 public function storeAction()
 {
     $this->init();
     $success = true;
     if ($success) {
         $db = new WorkUserEntity();
         $row = $db->db()->getWork();
         if ($row && $row->create_user) {
             $success = false;
         }
     }
     $request = $this->getRequest();
     if (!$request->isPost()) {
         $success = false;
     }
     if (!$success) {
         $this->flashMessenger()->addMessage("No allowed");
         //            $this->flashMessenger()->addMessage("許可されていません。");
         return $this->redirect()->toRoute('app', array('controller' => 'failed', 'action' => 'forbidden'));
     }
     $form = new WorkUserForm();
     $form->startForm();
     $filter = new WorkUserFilter();
     $token_id = $this->container()->get('token_id');
     $this->container()->clear('token_id');
     $filter->setCreateToken($token_id);
     $filter->setStoreInputFilter();
     $hydrator = new ObjectProperty();
     $post = $request->getPost();
     $file = $request->getFiles();
     $hydrator->hydrate($file->toArray(), $post);
     $form->setInputFilter($filter->getInputFilter());
     $form->setData($post);
     $success = $form->isValid();
     if (!$success) {
         $msg = "";
         $tmpMsg = "";
         $messages = $form->getMessages();
         foreach ($messages as $key => $val) {
             $msg .= $msg ? "\n" : "";
             switch ($key) {
                 case 'upload_file':
                     $msg .= $this->translator()->translate("File Error") . "\n";
                     //                        $msg .= $this->translator()->translate("【ファイル エラー】") . "\n";
                     break;
                 case 'token_id':
                     $msg .= $this->translator()->translate("Operation Error") . "\n";
                     //                        $msg .= $this->translator()->translate("【操作 エラー】") . "\n";
                     break;
                 case 'charset':
                     $msg .= $this->translator()->translate("Character Setting Error") . "\n";
                     //                        $msg .= $this->translator()->translate("【文字セット 選択エラー】") . "\n";
                     break;
                 default:
                     $msg .= $this->translator()->translate("Error") . "\n";
                     //                        $msg .= $this->translator()->translate("【エラー】") . "\n";
                     break;
             }
             $tmp = current($val);
             do {
                 if ($tmpMsg == $tmp) {
                     continue;
                 }
                 $msg .= $tmp . "\n";
                 next($val);
                 $tmpMsg = $tmp;
             } while ($tmp = current($val));
         }
         $this->flashMessenger()->addMessage($msg);
         return $this->redirect()->toRoute('app', array('controller' => 'work-user', 'action' => 'start'));
     }
     $i = 0;
     $tmp_name = gv('tmp_name', $file->upload_file);
     $fp = fopen($tmp_name, 'r');
     $line = array();
     while ($res = fgetcsv($fp, 1024)) {
         if (!$success) {
             break;
         }
         // check template
         if (0 == $i) {
             ++$i;
             $success = 'login_id *' == gv('0', $res) && 'user_name *' == gv('1', $res) && 'email *' == gv('2', $res) && 'phone' == gv('3', $res);
             continue;
         }
         if ('utf-8' != $post->charset) {
             $user_name = mb_convert_encoding(gv('1', $res), 'utf-8', $post->charset);
         } else {
             $user_name = gv('1', $res);
         }
         $line[] = array('login_id' => gv('0', $res), 'user_name' => $user_name, 'email' => gv('2', $res), 'phone' => gv('3', $res));
     }
     fclose($fp);
     unlink($tmp_name);
     if ($success && $line) {
         $success = $db->insertWorkRecord($this->auth()->getUserInfo(), $line);
     } else {
         $this->flashMessenger()->addMessage("Data Error");
         //            $this->flashMessenger()->addMessage("登録データエラー");
         return $this->redirect()->toRoute('app', array('controller' => 'work-user', 'action' => 'start'));
     }
     // redirect to list page
     if ($success) {
         return $this->redirect()->toRoute('app', array('controller' => 'work-user', 'action' => 'list'));
     }
 }
 public function update($data, $id)
 {
     $hydrator = new ObjectProperty();
     $data = $hydrator->extract($data);
     return $this->tableGateway->update($data, $id);
 }
<?php

require __DIR__ . '/../vendor/autoload.php';
use FUnit as fu;
use Zend\Stdlib\Hydrator\ObjectProperty;
use Knlv\Zf2\Hydrator\Strategy\DateTimeStrategy;
fu::setup(function () {
    $hydrator = new ObjectProperty();
    $strategy = new DateTimeStrategy();
    $hydrator->addStrategy('created', $strategy);
    fu::fixture('strategy', $strategy);
    fu::fixture('hydrator', $hydrator);
});
fu::test('Testing hydrate/extract methods', function () {
    $hydrator = fu::fixture('hydrator');
    $object = new stdClass();
    $object->name = 'test';
    $object->data = array('data1', 'data2');
    $object->created = new DateTime('2015-01-02 10:10:10');
    $expected = array('name' => 'test', 'data' => array('data1', 'data2'), 'created' => '2015-01-02 10:10:10');
    fu::equal($expected, $hydrator->extract($object), 'Assert extract works');
    fu::equal($object, $hydrator->hydrate($expected, new stdClass()), 'Assert hydrate works');
});
fu::test('Test set/get format methods', function () {
    $strategy = fu::fixture('strategy');
    fu::equal($strategy::DEFAULT_FORMAT, $strategy->getFormat(), 'Assert default format if no other set');
    $strategy->setFormat(DateTime::ATOM);
    fu::equal(DateTime::ATOM, $strategy->getFormat(), 'Assert format changed');
});
fu::test('Test set/get timzone methods', function () {
    $strategy = fu::fixture('strategy');
Пример #25
0
 /**
  * Update a resource
  *
  * @param  mixed $id
  * @param  mixed $data
  * @return ApiProblem|mixed
  */
 public function update($id, $data)
 {
     $user = $this->usersRepository->findByUsername($this->getIdentity()->getRoleId());
     if ($user->getRole() != "admin") {
         return new ApiProblem(403, "Access denied for this user.");
     }
     $hydrator = new ObjectProperty();
     $data = $hydrator->extract($data);
     return $this->repository->update($data, ['id' => $id]);
 }
Пример #26
0
 /**
  * Maps a value to a DynamoDb attribute and returns the array
  *
  * @param mixed $value The Value to map to a DynamoDB Data Attribute
  *
  * @return array
  */
 protected function _formatValues($values)
 {
     foreach ($values as &$datapoint) {
         if (is_array($datapoint) || is_object($datapoint)) {
             // Get the properties of the class either from Array hydrator or public properties
             if (is_object($datapoint)) {
                 if ($datapoint instanceof ArraySerializableInterface) {
                     $hydrator = new ArraySerializable();
                 } else {
                     $hydrator = new ObjectProperty();
                 }
                 $datapoint = $hydrator->extract($datapoint);
             }
             $datapoint = ['M' => $datapoint];
         } elseif (is_numeric($datapoint)) {
             $datapoint = [Type::NUMBER => $datapoint];
         } elseif (is_bool($datapoint)) {
             $datapoint = [Type::BINARY => (bool) $datapoint];
         } else {
             $datapoint = [Type::STRING => (string) $datapoint];
         }
     }
     return $values;
 }
 /**
  * @iterations 20000
  * @group extraction
  */
 public function objectPropertyExtract()
 {
     $data = $this->objectPropertyHydrator->extract($this->hydratedObject);
 }
Пример #28
0
 /**
  * Update a resource
  *
  * @param  mixed $id
  * @param  mixed $data
  * @return ApiProblem|mixed
  */
 public function update($id, $data)
 {
     $hydrator = new ObjectProperty();
     $data = $hydrator->extract($data);
     return $this->repository->update($data, ['id' => $id]);
 }
<?php

require __DIR__ . '/../vendor/autoload.php';
use FUnit as fu;
use Zend\Stdlib\Hydrator\ObjectProperty;
use Knlv\Zf2\Hydrator\Strategy\MultilineTextStrategy;
fu::setup(function () {
    $hydrator = new ObjectProperty();
    $strategy = new MultilineTextStrategy();
    $hydrator->addStrategy('items', $strategy);
    fu::fixture('strategy', $strategy);
    fu::fixture('hydrator', $hydrator);
});
fu::test('Testing hydrate/extract methods', function () {
    $hydrator = fu::fixture('hydrator');
    $object = new stdClass();
    $object->name = 'test';
    $object->items = array('item1', 'item2', 'item3', 'item4', 'item5');
    $expected = array('name' => 'test', 'items' => <<<EOL
item1
item2
item3
item4
item5
EOL
);
    fu::equal($expected, $hydrator->extract($object), 'Assert extract works');
    fu::equal($object, $hydrator->hydrate($expected, new stdClass()), 'Assert hydrate works');
});
Пример #30
0
 /**
  * set translate file
  * @return ViewModel
  */
 public function fileStoreAction()
 {
     $this->init();
     $request = $this->getRequest();
     if (!$request->isPost() || 2 > $this->ctrlLv) {
         exit;
     }
     $form = new LanguageForm();
     $form->setFileUpForm();
     $filter = new LanguageFilter();
     $token_id = $this->container()->get('token_id');
     $this->container()->clear('token_id');
     $filter->setCreateToken($token_id);
     $filter->setStoreInputFilter();
     $hydrator = new ObjectProperty();
     $post = $request->getPost();
     $file = $request->getFiles();
     $hydrator->hydrate($file->toArray(), $post);
     $form->setInputFilter($filter->getInputFilter());
     $form->setData($post);
     $success = $form->isValid();
     if (!$success) {
         $token_id = make_token_id();
         $this->container()->set('token_id', $token_id);
         $form->get('token_id')->setAttribute('value', $token_id);
         $values = array('controller' => 'language', 'action' => 'file-store', 'form' => $form, 'label' => 'Translate File', 'max_size' => 524288);
         $view = new ViewModel($values);
         $view->setTemplate('/common/file-upload.phtml');
         $view->setTerminal(true);
         return $view;
     }
     // ***** save file
     $dir_name = APP_DIR . '/module/App/language/';
     $file_name = gv('name', $file->upload_file);
     $tmp_name = gv('tmp_name', $file->upload_file);
     // delete file in server
     if (file_exists($dir_name . $file_name)) {
         unlink($dir_name . $file_name);
     }
     // re-set file
     $success = move_uploaded_file($tmp_name, $dir_name . $file_name);
     if ($success) {
         $cmd = "msgfmt -o {$dir_name}" . str_replace('.po', '.mo', $file_name) . " " . $dir_name . $file_name;
         system($cmd, $success);
     }
     if (0 === $success) {
         $message = 'Completed';
         //            $message = '処理完了';
     } else {
         $message = 'Failed';
         //            $message = '処理失敗';
     }
     $view = new ViewModel(array('message' => $message));
     $view->setTemplate('/common/message.phtml');
     $view->setTerminal(true);
     return $view;
 }