/** * details der bestellung anzeigen */ public function detailAction() { // init $order = Object_OnlineShopOrder::getById($this->getParam('id')); /* @var OnlineShop_Framework_AbstractOrder $order */ $orderAgent = $this->view->orderAgent = $this->orderManager->createOrderAgent($order); /** * @param array $address * * @return string */ $geoPoint = function (array $address) { # https://developers.google.com/maps/documentation/geocoding/index?hl=de#JSON $url = sprintf('http://maps.googleapis.com/maps/api/geocode/json?address=%1$s&sensor=false', urlencode($address[0] . ' ' . $address[1] . ' ' . $address[2] . ' ' . $address[3])); $json = json_decode(file_get_contents($url)); return $json->results[0]->geometry->location; }; // get geo point $this->view->geoAddressInvoice = $geoPoint([$order->getCustomerStreet(), $order->getCustomerZip(), $order->getCustomerCity(), $order->getCustomerCountry()]); if ($order->getDeliveryStreet() && $order->getDeliveryZip()) { $this->view->geoAddressDelivery = $geoPoint([$order->getDeliveryStreet(), $order->getDeliveryZip(), $order->getDeliveryCity(), $order->getDeliveryCountry()]); } // get customer info if ($order->getCustomer()) { // init $arrCustomerAccount = []; $customer = $order->getCustomer(); // register $register = new Zend_Date($order->getCreationDate()); $arrCustomerAccount['created'] = $register->get(Zend_Date::DATE_MEDIUM); // mail if (method_exists($customer, 'getEMail')) { $arrCustomerAccount['email'] = $customer->getEMail(); } // order count $addOrderCount = function () use($customer, $arrCustomerAccount) { $order = new Object_OnlineShopOrder(); $field = $order->getClass()->getFieldDefinition('customer'); if ($field instanceof \Pimcore\Model\Object\ClassDefinition\Data\Href) { if (count($field->getClasses()) == 1) { $class = 'Pimcore\\Model\\Object\\' . reset($field->getClasses())['classes']; /* @var \Pimcore\Model\Object\Concrete $class */ $orderList = $this->orderManager->createOrderList(); $orderList->joinCustomer($class::classId()); $orderList->getQuery()->where('customer.o_id = ?', $customer->getId()); $arrCustomerAccount['orderCount'] = $orderList->count(); } } }; $addOrderCount(); $this->view->arrCustomerAccount = $arrCustomerAccount; } // create timeline $arrIcons = ['itemChangeAmount' => 'glyphicon glyphicon-pencil', 'itemCancel' => 'glyphicon glyphicon-remove', 'itemComplaint' => 'glyphicon glyphicon-alert']; $arrContext = ['itemChangeAmount' => 'default', 'itemCancel' => 'danger', 'itemComplaint' => 'warning']; $arrTimeline = []; $date = new Zend_Date(); foreach ($orderAgent->getFullChangeLog() as $note) { /* @var \Pimcore\Model\Element\Note $note */ // get avatar $user = Pimcore_Model_User::getById($note->getUser()); /* @var \Pimcore\Model\User $user */ $avatar = sprintf('/admin/user/get-image?id=%d', $user->getId()); // group events $group = $date->setTimestamp($note->getDate())->get(Zend_Date::DATE_MEDIUM); // load reference $reference = Pimcore\Model\Object\Concrete::getById($note->getCid()); $title = $reference instanceof OnlineShop_Framework_AbstractOrderItem ? $reference->getProduct()->getOSName() : null; // add $arrTimeline[$group][] = ['icon' => $arrIcons[$note->getTitle()], 'context' => $arrContext[$note->getTitle()] ?: 'default', 'type' => $note->getTitle(), 'date' => $date->setTimestamp($note->getDate())->get(Zend_Date::DATETIME_MEDIUM), 'avatar' => $avatar, 'user' => $user->getName(), 'message' => $note->getData()['message']['data'], 'title' => $title ?: $note->getTitle()]; } $this->view->timeLine = $arrTimeline; }
/** * @param \Pimcore\Model\Object\Concrete $object * @param string $method * @return bool */ private function isUsingI18n(Pimcore\Model\Object\Concrete $object, $method) { $modelId = $object->getClassId(); // Stolen from Object_Class_Resource - it's protected there. $file = PIMCORE_CLASS_DIRECTORY . "/definition_" . $modelId . ".psf"; if (!is_file($file)) { return false; } $tree = unserialize(file_get_contents($file)); $definition = $this->parse_tree($tree, array()); return $definition[$method]; }