/** * Creates a new client object. * * @param \Aimeos\MShop\Context\Item\Iface $context Shop context instance with necessary objects * @param array List of file system paths where the templates are stored * @param string $type Type of the client, e.g 'product' for \Aimeos\Admin\JQAdm\Product\Standard * @param string|null $name Admin name (default: "Standard") * @return \Aimeos\Admin\JQAdm\Iface admin client implementing \Aimeos\Admin\JQAdm\Iface * @throws \Aimeos\Admin\JQAdm\Exception If requested client implementation couldn't be found or initialisation fails */ public static function createClient(\Aimeos\MShop\Context\Item\Iface $context, array $templatePaths, $type, $name = null) { if (empty($type)) { throw new \Aimeos\Admin\JQAdm\Exception(sprintf('Admin JQAdm type is empty')); } if (ctype_alnum($type) === false) { throw new \Aimeos\Admin\JQAdm\Exception(sprintf('Invalid characters in client name "%1$s"', $type)); } $factory = '\\Aimeos\\Admin\\JQAdm\\' . ucwords($type) . '\\Factory'; if (class_exists($factory) === false) { throw new \Aimeos\Admin\JQAdm\Exception(sprintf('Class "%1$s" not available', $factory)); } $client = @call_user_func_array(array($factory, 'createClient'), array($context, $templatePaths, $name)); if ($client === false) { throw new \Aimeos\Admin\JQAdm\Exception(sprintf('Invalid factory "%1$s"', $factory)); } $client->setView($context->getView()); return $client; }
/** * Creates a new client specified by the given path of client names. * * @param \Aimeos\MShop\Context\Item\Iface $context Context object required by clients * @param array $templatePaths List of file system paths where the templates are stored * @param string $path Name of the client separated by slashes, e.g "product/stock" * @param string|null $name Name of the client implementation ("Standard" if null) * @return \Aimeos\Admin\JsonAdm\Iface JSON admin instance * @throws \Aimeos\Admin\JsonAdm\Exception If the given path is invalid */ protected static function createClientNew(\Aimeos\MShop\Context\Item\Iface $context, array $templatePaths, $path, $name) { $parts = explode('/', $path); foreach ($parts as $key => $part) { if (ctype_alnum($part) === false) { $msg = sprintf('Invalid client "%1$s" in "%2$s"', $part, $path); throw new \Aimeos\Admin\JsonAdm\Exception($msg, 400); } $parts[$key] = ucwords($part); } $view = $context->getView(); $factory = '\\Aimeos\\Admin\\JsonAdm\\' . join('\\', $parts) . '\\Factory'; if (class_exists($factory) === true) { $args = array($context, $view, $templatePaths, $path, $name); if (($client = @call_user_func_array(array($factory, 'createClient'), $args)) === false) { throw new \Aimeos\Admin\JsonAdm\Exception(sprintf('Invalid factory "%1$s"', $factory), 400); } } else { $client = self::createClientRoot($context, $view, $templatePaths, $path, $name); } return $client; }
/** * Sends the notification e-mail for the given customer address and products * * @param \Aimeos\MShop\Context\Item\Iface $context Context item object * @param \Aimeos\MShop\Common\Item\Address\Iface $address Payment address of the customer * @param array $products List of products a notification should be sent for */ protected function sendMail(\Aimeos\MShop\Context\Item\Iface $context, \Aimeos\MShop\Common\Item\Address\Iface $address, array $products) { $view = $context->getView(); $view->extProducts = $products; $view->extAddressItem = $address; $helper = new \Aimeos\MW\View\Helper\Translate\Standard($view, $context->getI18n($address->getLanguageId())); $view->addHelper('translate', $helper); $mailer = $context->getMail(); $message = $mailer->createMessage(); $helper = new \Aimeos\MW\View\Helper\Mail\Standard($view, $message); $view->addHelper('mail', $helper); $client = $this->getClient($context); $client->setView($view); $client->getHeader(); $client->getBody(); $mailer->send($message); }
/** * Sends the account creation e-mail to the e-mail address of the customer * * @param \Aimeos\MShop\Context\Item\Iface $context Context item object * @param \Aimeos\MShop\Customer\Item\Iface $item Customer item object * @param string $password Customer clear text password */ protected function sendEmail(\Aimeos\MShop\Context\Item\Iface $context, \Aimeos\MShop\Customer\Item\Iface $item, $password) { $address = $item->getPaymentAddress(); $view = $context->getView(); $view->extAddressItem = $address; $view->extAccountCode = $item->getCode(); $view->extAccountPassword = $password; $helper = new \Aimeos\MW\View\Helper\Translate\Standard($view, $context->getI18n($address->getLanguageId())); $view->addHelper('translate', $helper); $mailer = $context->getMail(); $message = $mailer->createMessage(); $helper = new \Aimeos\MW\View\Helper\Mail\Standard($view, $message); $view->addHelper('mail', $helper); $client = $this->getClient($context); $client->setView($view); $client->getHeader(); $client->getBody(); $mailer->send($message); }