diff --git a/packages/Webkul/Core/src/Core.php b/packages/Webkul/Core/src/Core.php index db6edfe68..d39459dff 100755 --- a/packages/Webkul/Core/src/Core.php +++ b/packages/Webkul/Core/src/Core.php @@ -3,6 +3,7 @@ namespace Webkul\Core; use Carbon\Carbon; +use Webkul\Core\Models\Channel; use Webkul\Core\Repositories\CurrencyRepository; use Webkul\Core\Repositories\ExchangeRateRepository; use Webkul\Core\Repositories\CountryRepository; @@ -66,13 +67,14 @@ class Core /** * Create a new instance. * - * @param Webkul\Core\Repositories\ChannelRepository $channelRepository - * @param Webkul\Core\Repositories\CurrencyRepository $currencyRepository - * @param Webkul\Core\Repositories\ExchangeRateRepository $exchangeRateRepository - * @param Webkul\Core\Repositories\CountryRepository $countryRepository - * @param Webkul\Core\Repositories\CountryStateRepository $countryStateRepository - * @param Webkul\Core\Repositories\LocaleRepository $localeRepository - * @param Webkul\Core\Repositories\CoreConfigRepository $coreConfigRepository + * @param Webkul\Core\Repositories\ChannelRepository $channelRepository + * @param Webkul\Core\Repositories\CurrencyRepository $currencyRepository + * @param Webkul\Core\Repositories\ExchangeRateRepository $exchangeRateRepository + * @param Webkul\Core\Repositories\CountryRepository $countryRepository + * @param Webkul\Core\Repositories\CountryStateRepository $countryStateRepository + * @param Webkul\Core\Repositories\LocaleRepository $localeRepository + * @param Webkul\Core\Repositories\CoreConfigRepository $coreConfigRepository + * * @return void */ public function __construct( @@ -101,10 +103,10 @@ class Core } /** - * Returns all channels - * - * @return Collection - */ + * Returns all channels + * + * @return Collection + */ public function getAllChannels() { static $channels; @@ -116,10 +118,10 @@ class Core } /** - * Returns currenct channel models - * - * @return mixed - */ + * Returns currenct channel models + * + * @return mixed + */ public function getCurrentChannel() { static $channel; @@ -128,10 +130,10 @@ class Core return $channel; $channel = $this->channelRepository->findWhereIn('hostname', [ - request()->getHttpHost(), - 'http://' . request()->getHttpHost(), - 'https://' . request()->getHttpHost() - ])->first(); + request()->getHttpHost(), + 'http://' . request()->getHttpHost(), + 'https://' . request()->getHttpHost(), + ])->first(); if (! $channel) $channel = $this->channelRepository->first(); @@ -140,11 +142,11 @@ class Core } /** - * Returns currenct channel code - * - * @return string - */ - public function getCurrentChannelCode() + * Returns currenct channel code + * + * @return string + */ + public function getCurrentChannelCode(): string { static $channelCode; @@ -155,40 +157,48 @@ class Core } /** - * Returns default channel models - * - * @return mixed - */ - public function getDefaultChannel() + * Returns default channel models + * + * @return null or Channel + */ + public function getDefaultChannel(): ?Channel { static $channel; - if ($channel) + if ($channel) { return $channel; + } + + $channel = $this->channelRepository->findOneByField('code', config('app.channel')); + + if ($channel) { + return $channel; + } return $channel = $this->channelRepository->first(); } /** - * Returns default channel code - * - * @return string - */ - public function getDefaultChannelCode() + * Returns the default channel code configured in config/app.php + * + * @return string + */ + public function getDefaultChannelCode(): string { static $channelCode; - if ($channelCode) + if ($channelCode) { return $channelCode; + } return ($channel = $this->getDefaultChannel()) ? $channelCode = $channel->code : ''; } /** - * Returns all locales - * - * @return Collection - */ + * Returns all locales + * + * @return Collection + */ public function getAllLocales() { static $locales; @@ -200,20 +210,21 @@ class Core } /** - * Returns current locale - * - * @return Object - */ + * Returns current locale + * + * @return Object + */ public function getCurrentLocale() { static $locale; - if ($locale) + if ($locale) { return $locale; + } $locale = $this->localeRepository->findOneByField('code', app()->getLocale()); - if(!$locale) { + if (! $locale) { $locale = $this->localeRepository->findOneByField('code', config('app.fallback_locale')); } @@ -221,10 +232,10 @@ class Core } /** - * Returns all currencies - * - * @return Collection - */ + * Returns all currencies + * + * @return Collection + */ public function getAllCurrencies() { static $currencies; @@ -236,10 +247,10 @@ class Core } /** - * Returns base channel's currency model - * - * @return mixed - */ + * Returns base channel's currency model + * + * @return mixed + */ public function getBaseCurrency() { static $currency; @@ -256,10 +267,10 @@ class Core } /** - * Returns base channel's currency code - * - * @return string - */ + * Returns base channel's currency code + * + * @return string + */ public function getBaseCurrencyCode() { static $currencyCode; @@ -271,10 +282,10 @@ class Core } /** - * Returns base channel's currency model - * - * @return mixed - */ + * Returns base channel's currency model + * + * @return mixed + */ public function getChannelBaseCurrency() { static $currency; @@ -288,10 +299,10 @@ class Core } /** - * Returns base channel's currency code - * - * @return string - */ + * Returns base channel's currency code + * + * @return string + */ public function getChannelBaseCurrencyCode() { static $currencyCode; @@ -303,10 +314,10 @@ class Core } /** - * Returns current channel's currency model - * - * @return mixed - */ + * Returns current channel's currency model + * + * @return mixed + */ public function getCurrentCurrency() { static $currency; @@ -323,10 +334,10 @@ class Core } /** - * Returns current channel's currency code - * - * @return string - */ + * Returns current channel's currency code + * + * @return string + */ public function getCurrentCurrencyCode() { static $currencyCode; @@ -338,20 +349,21 @@ class Core } /** - * Converts price - * - * @param float $amount - * @param string $targetCurrencyCode - * @return string - */ + * Converts price + * + * @param float $amount + * @param string $targetCurrencyCode + * + * @return string + */ public function convertPrice($amount, $targetCurrencyCode = null) { - if (! isset($this->lastCurrencyCode)) - $this->lastCurrencyCode = $this->getBaseCurrency()->code ; + if (! isset($this->lastCurrencyCode)) + $this->lastCurrencyCode = $this->getBaseCurrency()->code; $targetCurrency = ! $targetCurrencyCode - ? $this->getCurrentCurrency() - : $this->currencyRepository->findOneByField('code', $targetCurrencyCode); + ? $this->getCurrentCurrency() + : $this->currencyRepository->findOneByField('code', $targetCurrencyCode); if (! $targetCurrency) return $amount; @@ -363,26 +375,27 @@ class Core if (null === $exchangeRate || ! $exchangeRate->rate) return $amount; - $result = (float) $amount * (float) ($this->lastCurrencyCode == $targetCurrency->code ? 1.0 : $exchangeRate->rate); + $result = (float)$amount * (float)($this->lastCurrencyCode == $targetCurrency->code ? 1.0 : $exchangeRate->rate); if ($this->lastCurrencyCode != $targetCurrency->code) - $this->lastCurrencyCode = $targetCurrency->code; + $this->lastCurrencyCode = $targetCurrency->code; return $result; } /** - * Converts to base price - * - * @param float $amount - * @param string $targetCurrencyCode - * @return string - */ + * Converts to base price + * + * @param float $amount + * @param string $targetCurrencyCode + * + * @return string + */ public function convertToBasePrice($amount, $targetCurrencyCode = null) { $targetCurrency = ! $targetCurrencyCode - ? $this->getCurrentCurrency() - : $this->currencyRepository->findOneByField('code', $targetCurrencyCode); + ? $this->getCurrentCurrency() + : $this->currencyRepository->findOneByField('code', $targetCurrencyCode); if (! $targetCurrency) return $amount; @@ -394,15 +407,16 @@ class Core if (null === $exchangeRate || ! $exchangeRate->rate) return $amount; - return (float) $amount / $exchangeRate->rate; + return (float)$amount / $exchangeRate->rate; } /** - * Format and convert price with currency symbol - * - * @param float $price - * @return string - */ + * Format and convert price with currency symbol + * + * @param float $price + * + * @return string + */ public function currency($amount = 0) { if (is_null($amount)) @@ -412,11 +426,12 @@ class Core } /** - * Return currency symbol from currency code - * - * @param float $price - * @return string - */ + * Return currency symbol from currency code + * + * @param float $price + * + * @return string + */ public function currencySymbol($code) { $formatter = new \NumberFormatter(app()->getLocale() . '@currency=' . $code, \NumberFormatter::CURRENCY); @@ -425,17 +440,18 @@ class Core } /** - * Format and convert price with currency symbol - * - * @param float $price - * @return string - */ + * Format and convert price with currency symbol + * + * @param float $price + * + * @return string + */ public function formatPrice($price, $currencyCode) { if (is_null($price)) $price = 0; - $formater = new \NumberFormatter( app()->getLocale(), \NumberFormatter::CURRENCY ); + $formater = new \NumberFormatter(app()->getLocale(), \NumberFormatter::CURRENCY); if ($symbol = $this->getCurrentCurrency()->symbol) { if ($this->currencySymbol($currencyCode) == $symbol) { @@ -451,13 +467,13 @@ class Core } /** - * Format and convert price with currency symbol - * - * @return array - */ + * Format and convert price with currency symbol + * + * @return array + */ public function getAccountJsSymbols() { - $formater = new \NumberFormatter( app()->getLocale(), \NumberFormatter::CURRENCY ); + $formater = new \NumberFormatter(app()->getLocale(), \NumberFormatter::CURRENCY); $pattern = $formater->getPattern(); @@ -466,24 +482,25 @@ class Core $pattern = str_replace("#,##0.00", "%v", $pattern); return [ - 'symbol' => core()->currencySymbol(core()->getCurrentCurrencyCode()), + 'symbol' => core()->currencySymbol(core()->getCurrentCurrencyCode()), 'decimal' => $formater->getSymbol(\NumberFormatter::DECIMAL_SEPARATOR_SYMBOL), - 'format' => $pattern + 'format' => $pattern, ]; } /** - * Format price with base currency symbol - * - * @param float $price - * @return string - */ + * Format price with base currency symbol + * + * @param float $price + * + * @return string + */ public function formatBasePrice($price) { if (is_null($price)) $price = 0; - $formater = new \NumberFormatter( app()->getLocale(), \NumberFormatter::CURRENCY ); + $formater = new \NumberFormatter(app()->getLocale(), \NumberFormatter::CURRENCY); if ($symbol = $this->getBaseCurrency()->symbol) { if ($this->currencySymbol($this->getBaseCurrencyCode()) == $symbol) { @@ -502,8 +519,9 @@ class Core * Checks if current date of the given channel (in the channel timezone) is within the range * * @param int|string|Channel $channel - * @param string|null $dateFrom - * @param string|null $dateTo + * @param string|null $dateFrom + * @param string|null $dateTo + * * @return bool */ public function isChannelDateInInterval($dateFrom = null, $dateTo = null) @@ -512,9 +530,9 @@ class Core $channelTimeStamp = $this->channelTimeStamp($channel); - $fromTimeStamp = strtotime($dateFrom); + $fromTimeStamp = strtotime($dateFrom); - $toTimeStamp = strtotime($dateTo); + $toTimeStamp = strtotime($dateTo); if ($dateTo) { $toTimeStamp += 86400; @@ -535,7 +553,8 @@ class Core * Get channel timestamp * Timstamp will be builded with channel timezone settings * - * @param mixed $channel + * @param mixed $channel + * * @return int */ public function channelTimeStamp($channel) @@ -554,11 +573,12 @@ class Core } /** - * Check whether sql date is empty - * - * @param string $date - * @return boolean - */ + * Check whether sql date is empty + * + * @param string $date + * + * @return boolean + */ function is_empty_date($date) { return preg_replace('#[ 0:-]#', '', $date) === ''; @@ -567,8 +587,9 @@ class Core /** * Format date using current channel. * - * @param date|null $date - * @param string $format + * @param date|null $date + * @param string $format + * * @return string */ public function formatDate($date = null, $format = 'd-m-Y H:i:s') @@ -587,7 +608,7 @@ class Core /** * Retrieve information from payment configuration * - * @param string $field + * @param string $field * @param int|string|null $channelId * * @return mixed @@ -618,25 +639,25 @@ class Core if (isset($fields['channel_based']) && $fields['channel_based']) { if (isset($fields['locale_based']) && $fields['locale_based']) { $coreConfigValue = $this->coreConfigRepository->findOneWhere([ - 'code' => $field, + 'code' => $field, 'channel_code' => $channel, - 'locale_code' => $locale + 'locale_code' => $locale, ]); } else { $coreConfigValue = $this->coreConfigRepository->findOneWhere([ - 'code' => $field, + 'code' => $field, 'channel_code' => $channel, ]); } } else { if (isset($fields['locale_based']) && $fields['locale_based']) { $coreConfigValue = $this->coreConfigRepository->findOneWhere([ - 'code' => $field, - 'locale_code' => $locale + 'code' => $field, + 'locale_code' => $locale, ]); } else { $coreConfigValue = $this->coreConfigRepository->findOneWhere([ - 'code' => $field + 'code' => $field, ]); } } @@ -676,6 +697,7 @@ class Core * Returns country name by code * * @param string $code + * * @return string */ public function country_name($code) @@ -734,7 +756,8 @@ class Core * * @return array */ - public function getTimeInterval($startDate, $endDate) { + public function getTimeInterval($startDate, $endDate) + { $timeIntervals = []; $totalDays = $startDate->diffInDays($endDate) + 1; @@ -750,9 +773,9 @@ class Core $date->addMonths($i); $start = Carbon::createFromTimeString($date->format('Y-m-d') . ' 00:00:01'); - $end = $totalMonths - 1 == $i - ? $endDate - : Carbon::createFromTimeString($date->format('Y-m-d') . ' 23:59:59'); + $end = $totalMonths - 1 == $i + ? $endDate + : Carbon::createFromTimeString($date->format('Y-m-d') . ' 23:59:59'); $timeIntervals[] = ['start' => $start, 'end' => $end, 'formatedDate' => $date->format('M')]; } @@ -762,11 +785,11 @@ class Core $date->addWeeks($i); $start = $i == 0 - ? $startDate - : Carbon::createFromTimeString($this->xWeekRange($date, 0) . ' 00:00:01'); + ? $startDate + : Carbon::createFromTimeString($this->xWeekRange($date, 0) . ' 00:00:01'); $end = $totalWeeks - 1 == $i - ? $endDate - : Carbon::createFromTimeString($this->xWeekRange($date, 1) . ' 23:59:59'); + ? $endDate + : Carbon::createFromTimeString($this->xWeekRange($date, 1) . ' 23:59:59'); $timeIntervals[] = ['start' => $start, 'end' => $end, 'formatedDate' => $date->format('d M')]; } @@ -788,7 +811,8 @@ class Core /** * @return string */ - public function xWeekRange($date, $day) { + public function xWeekRange($date, $day) + { $ts = strtotime($date); if (! $day) { @@ -802,40 +826,43 @@ class Core } } - /** - * Method to sort through the acl items and put them in order - * - * @return void - */ - public function sortItems($items) { - foreach ($items as &$item) { - if (count($item['children'])) { - $item['children'] = $this->sortItems($item['children']); - } - } + /** + * Method to sort through the acl items and put them in order + * + * @return void + */ + public function sortItems($items) + { + foreach ($items as &$item) { + if (count($item['children'])) { + $item['children'] = $this->sortItems($item['children']); + } + } - usort($items, function($a, $b) { - if ($a['sort'] == $b['sort']) { - return 0; - } + usort($items, function ($a, $b) { + if ($a['sort'] == $b['sort']) { + return 0; + } - return ($a['sort'] < $b['sort']) ? -1 : 1; - }); + return ($a['sort'] < $b['sort']) ? -1 : 1; + }); - return $this->convertToAssociativeArray($items); + return $this->convertToAssociativeArray($items); } /** * @param string $fieldName + * * @return array */ - public function getConfigField($fieldName) { + public function getConfigField($fieldName) + { foreach (config('core') as $coreData) { if (isset($coreData['fields'])) { foreach ($coreData['fields'] as $field) { $name = $coreData['key'] . '.' . $field['name']; - if ($name == $fieldName ) { + if ($name == $fieldName) { return $field; } } @@ -849,7 +876,7 @@ class Core unset($items[$key1]); $items[$level1['key']] = $level1; - if (count($level1['children'])) { + if (count($level1['children'])) { foreach ($level1['children'] as $key2 => $level2) { $temp2 = explode('.', $level2['key']); $finalKey2 = end($temp2); @@ -866,20 +893,20 @@ class Core } } - } - } + } + } - return $items; + return $items; } - public function array_set(&$array, $key, $value) + public function array_set(&$array, $key, $value) { if (is_null($key)) { return $array = $value; } $keys = explode('.', $key); - $count = count($keys); + $count = count($keys); while (count($keys) > 1) { $key = array_shift($keys); @@ -891,28 +918,28 @@ class Core $array = &$array[$key]; } - $finalKey = array_shift($keys); - if (isset($array[$finalKey])) { - $array[$finalKey] = $this->arrayMerge($array[$finalKey], $value); - } else { - $array[$finalKey] = $value; - } + $finalKey = array_shift($keys); + if (isset($array[$finalKey])) { + $array[$finalKey] = $this->arrayMerge($array[$finalKey], $value); + } else { + $array[$finalKey] = $value; + } return $array; } - protected function arrayMerge(array &$array1, array &$array2) - { - $merged = $array1; - foreach ($array2 as $key => &$value) { - if (is_array($value) && isset($merged[$key]) && is_array($merged[$key])) { - $merged[$key] = $this->arrayMerge($merged[$key], $value); - } else { - $merged[$key] = $value; - } - } + protected function arrayMerge(array &$array1, array &$array2) + { + $merged = $array1; + foreach ($array2 as $key => &$value) { + if (is_array($value) && isset($merged[$key]) && is_array($merged[$key])) { + $merged[$key] = $this->arrayMerge($merged[$key], $value); + } else { + $merged[$key] = $value; + } + } - return $merged; + return $merged; } public function convertEmptyStringsToNull($array) @@ -930,6 +957,7 @@ class Core * Create singletom object through single facade * * @param string $className + * * @return object */ public function getSingletonInstance($className) diff --git a/packages/Webkul/Product/src/Type/AbstractType.php b/packages/Webkul/Product/src/Type/AbstractType.php index 8a6466138..e23cc83ed 100644 --- a/packages/Webkul/Product/src/Type/AbstractType.php +++ b/packages/Webkul/Product/src/Type/AbstractType.php @@ -514,7 +514,7 @@ abstract class AbstractType return true; } else if ($rulePrice) { $this->product->special_price = $rulePrice->price; - + return true; } } diff --git a/packages/Webkul/Product/src/Type/Simple.php b/packages/Webkul/Product/src/Type/Simple.php index dddef73c3..f13c1c39a 100644 --- a/packages/Webkul/Product/src/Type/Simple.php +++ b/packages/Webkul/Product/src/Type/Simple.php @@ -19,7 +19,7 @@ class Simple extends AbstractType /** * These blade files will be included in product edit page - * + * * @var array */ protected $additionalViews = [ @@ -27,7 +27,7 @@ class Simple extends AbstractType 'admin::catalog.products.accordians.images', 'admin::catalog.products.accordians.categories', 'admin::catalog.products.accordians.channels', - 'admin::catalog.products.accordians.product-links' + 'admin::catalog.products.accordians.product-links', ]; /** @@ -60,6 +60,7 @@ class Simple extends AbstractType */ public function haveSufficientQuantity($qty) { - return $qty <= $this->totalQuantity() ? true : (core()->getConfigData('catalog.inventory.stock_options.backorders') ? true : false); + $backorders = core()->getConfigData('catalog.inventory.stock_options.backorders'); + return $qty <= $this->totalQuantity() ? true : $backorders; } } \ No newline at end of file