/** * Recursive template of branch of menu * * @param array $row * * @return mixed|string */ public function templateBranch($row = array()) { $children = ''; $row['level'] = $this->level; if (!empty($row['children']) && ($this->isHere($row['id']) || empty($this->pdoTools->config['hideSubMenus'])) && $this->checkResource($row['id'])) { $idx = 1; $this->level++; $count = count($row['children']); foreach ($row['children'] as $v) { $v['idx'] = $idx++; $v['last'] = (int) $v['idx'] == $count; $children .= $this->templateBranch($v); } $this->level--; $row['children'] = $count; } else { $row['children'] = isset($row['children']) ? count($row['children']) : 0; } if (!empty($this->pdoTools->config['countChildren'])) { if ($ids = $this->modx->getChildIds($row['id'])) { $tstart = microtime(true); $count = $this->modx->getCount('modResource', array('id:IN' => $ids, 'published' => true, 'deleted' => false)); $this->modx->queryTime += microtime(true) - $tstart; $this->modx->executedQueries++; $this->pdoTools->addTime('Got the number of active children for resource "' . $row['id'] . '": ' . $count); } else { $count = 0; } $row['children'] = $count; } if (!empty($children)) { $pls = $this->addWayFinderPlaceholders(array('wrapper' => $children, 'classes' => ' class="' . $this->pdoTools->config['innerClass'] . '"', 'classNames' => $this->pdoTools->config['innerClass'], 'classnames' => $this->pdoTools->config['innerClass'], 'level' => $this->level)); $row['wrapper'] = $this->pdoTools->parseChunk($this->pdoTools->config['tplInner'], $pls); } else { $row['wrapper'] = ''; } if (empty($row['menutitle']) && !empty($row['pagetitle'])) { $row['menutitle'] = $row['pagetitle']; } $classes = $this->getClasses($row); if (!empty($classes)) { $row['classNames'] = $row['classnames'] = $classes; $row['classes'] = ' class="' . $classes . '"'; } else { $row['classNames'] = $row['classnames'] = $row['classes'] = ''; } if (!empty($this->pdoTools->config['useWeblinkUrl']) && $row['class_key'] == 'modWebLink') { $row['link'] = is_numeric(trim($row['content'], '[]~ ')) ? $this->modx->makeUrl(intval(trim($row['content'], '[]~ ')), '', '', $this->pdoTools->config['scheme']) : $row['content']; } else { $row['link'] = $this->modx->makeUrl($row['id'], $row['context_key'], '', $this->pdoTools->config['scheme']); } $row['title'] = !empty($this->pdoTools->config['titleOfLinks']) ? $row[$this->pdoTools->config['titleOfLinks']] : ''; $tpl = $this->getTpl($row); $row = $this->addWayFinderPlaceholders($row); return $this->pdoTools->getChunk($tpl, $row, $this->pdoTools->config['fastMode']); }
public function process() { $result = array(); $result['all'] = array(); $config = array('hideUnsearchable' => '1', 'parents' => $this->config['parents'], 'resources' => $this->config['resources'], 'includeTVs' => $this->config['parentsIncludeTVs'], 'sortby' => $this->config['parentsSortby'], 'sortdir' => $this->config['parentsSortdir'], 'return' => 'data'); $msCategories = $this->pdoFetch->getCollection($this->classKey, array('class_key' => $this->classKey), $config); $result['all'] = array_map(function ($msCategory) { return array('id' => $msCategory['id'], 'text' => $this->pdoFetch->getChunk($this->config['tplSectionRow'], $msCategory, false)); }, $msCategories); if ($this->pid !== '0') { $categoryMembers = array_map(function ($msMember) { return $msMember['category_id']; }, $this->pdoFetch->getCollection('msCategoryMember', array('product_id' => $this->pid))); $msCategoriesIds = array_map(function ($msCategory) { return $msCategory['id']; }, $msCategories); $result['product'] = array_values(array_filter($categoryMembers, function ($categoryMember) use($msCategoriesIds) { if (in_array($categoryMember, $msCategoriesIds)) { return true; } })); } return $this->success('', $result); }
/** * Recursive template of branch of menu * * @param array $row * * @return mixed|string */ public function templateBranch($row = array()) { $children = ''; $row['level'] = $this->level; if (!empty($row['children']) && ($this->isHere($row['id']) || empty($this->pdoTools->config['hideSubMenus'])) && $this->checkResource($row['id'])) { $idx = 1; $this->level++; $count = count($row['children']); foreach ($row['children'] as $v) { $v['idx'] = $idx++; $v['last'] = (int) $v['idx'] == $count; $children .= $this->templateBranch($v); } $this->level--; $row['children'] = $count; } else { $row['children'] = 0; } if (!empty($children)) { $pls = $this->addWayFinderPlaceholders(array('wrapper' => $children, 'classes' => ' class="' . $this->pdoTools->config['innerClass'] . '"', 'classNames' => $this->pdoTools->config['innerClass'], 'classnames' => $this->pdoTools->config['innerClass'])); $row['wrapper'] = $this->pdoTools->parseChunk($this->pdoTools->config['tplInner'], $pls); } else { $row['wrapper'] = ''; } if (empty($row['menutitle']) && !empty($row['pagetitle'])) { $row['menutitle'] = $row['pagetitle']; } $classes = $this->getClasses($row); if (!empty($classes)) { $row['classNames'] = $row['classnames'] = $classes; $row['classes'] = ' class="' . $classes . '"'; } else { $row['classNames'] = $row['classnames'] = $row['classes'] = ''; } if (!empty($this->pdoTools->config['useWeblinkUrl']) && $row['class_key'] == 'modWebLink') { $row['link'] = is_numeric(trim($row['content'], '[]~ ')) ? $this->modx->makeUrl(intval(trim($row['content'], '[]~ ')), $row['context_key'], '', $this->pdoTools->config['scheme']) : $row['content']; } else { $row['link'] = $this->modx->makeUrl($row['id'], $row['context_key'], '', $this->pdoTools->config['scheme']); } $row['title'] = !empty($this->pdoTools->config['titleOfLinks']) ? $row[$this->pdoTools->config['titleOfLinks']] : ''; $tpl = $this->getTpl($row); $row = $this->addWayFinderPlaceholders($row); return $this->pdoTools->getChunk($tpl, $row, $this->pdoTools->config['fastMode']); }
} /* @var array $scriptProperties */ /* @var miniShop2 $miniShop2 */ $miniShop2 = $modx->getService('minishop2'); $miniShop2->initialize($modx->context->key); /* @var pdoFetch $pdoFetch */ if (!$modx->loadClass('pdofetch', MODX_CORE_PATH . 'components/pdotools/model/pdotools/', false, true)) { return false; } $pdoFetch = new pdoFetch($modx, $scriptProperties); /* @var msOrder $order */ if (!($order = $modx->getObject('msOrder', $id))) { return $modx->lexicon('ms2_err_order_nf'); } if ((empty($_SESSION['minishop2']['orders']) || !in_array($id, $_SESSION['minishop2']['orders'])) && $order->get('user_id') != $modx->user->id && $modx->context->key != 'mgr') { return !empty($tplEmpty) ? $pdoFetch->getChunk($tplEmpty) : ''; } $pls_order = $order->toArray(); $pls_user = $order->getOne('User')->getOne('Profile')->toArray('user.'); $pls_address = $order->getOne('Address')->toArray('address.'); $pls_delivery = $order->getOne('Delivery')->toArray('delivery.'); $pls_payment = $order->getOne('Payment')->toArray('payment.'); $outer = array_merge($pls_order, $pls_user, $pls_address, $pls_delivery, $pls_payment); $outer['goods'] = ''; $outer['cart_count'] = 0; $outer['cost'] = $miniShop2->formatPrice($outer['cost']); $outer['cart_cost'] = $miniShop2->formatPrice($outer['cart_cost']); $outer['delivery_cost'] = $miniShop2->formatPrice($outer['delivery_cost']); $outer['weight'] = $miniShop2->formatWeight($outer['weight']); // Include Thumbnails $thumbsLeftJoin = '';
$q->select('tag'); $tstart = microtime(true); if ($q->prepare() && $q->stmt->execute()) { $modx->queryTime += microtime(true) - $tstart; $modx->executedQueries++; $row['tags'] = implode($tagsSeparator, $q->stmt->fetchAll(PDO::FETCH_COLUMN)); } } $images[] = $row; } $pdoFetch->addTime(!empty($getTags) ? 'Thumbnails and tags was retrieved' : 'Thumbnails was retrieved'); // Processing chunks $output = array(); foreach ($images as $row) { $tpl = $pdoFetch->defineChunk($row); $output[] = empty($tpl) ? '<pre>' . $pdoFetch->getChunk('', $row) . '</pre>' : $pdoFetch->getChunk($tpl, $row, $pdoFetch->config['fastMode']); } $pdoFetch->addTime('Rows was templated'); // Return output $log = ''; if ($modx->user->hasSessionContext('mgr') && !empty($showLog)) { $log .= '<pre class="ms2GalleryLog">' . print_r($pdoFetch->getTime(), 1) . '</pre>'; } if (!empty($toSeparatePlaceholders)) { $output['log'] = $log; $modx->setPlaceholders($output, $toSeparatePlaceholders); } else { if (count($output) === 1 && !empty($tplSingle)) { $output = $pdoFetch->getChunk($tplSingle, array_shift($images)); } else { $output = implode($outputSeparator, $output);
/* @var miniShop2 $miniShop2 */ $miniShop2 = $modx->getService('minishop2'); $miniShop2->initialize($modx->context->key); /* @var pdoFetch $pdoFetch */ if (!$modx->loadClass('pdofetch', MODX_CORE_PATH . 'components/pdotools/model/pdotools/', false, true)) { return false; } $pdoFetch = new pdoFetch($modx, $scriptProperties); $pdoFetch->addTime('pdoTools loaded.'); if (!empty($_GET['msorder'])) { if ($order = $modx->getObject('msOrder', $_GET['msorder'])) { if (!empty($_SESSION['minishop2']['orders']) && in_array($_GET['msorder'], $_SESSION['minishop2']['orders']) || $order->get('user_id') == $modx->user->id || $modx->context->key == 'mgr') { if (empty($tplSuccess)) { $tplSuccess = 'tpl.msOrder.success'; } return $pdoFetch->getChunk($tplSuccess, array('id' => $_GET['msorder'])); } } } $cart = $miniShop2->cart->get(); $status = $miniShop2->cart->status(); $order = $miniShop2->order->get(); if (empty($status['total_count'])) { return !empty($tplEmpty) ? $pdoFetch->getChunk($tplEmpty) : ''; } $deliveryColumns = $modx->getSelectColumns('msDelivery', 'msDelivery', 'delivery_'); $paymentColumns = $modx->getSelectColumns('msPayment', 'msPayment', 'payment_'); // Default parameters $default = array('class' => 'msDelivery', 'where' => '{"active":1}', 'select' => '{"msDelivery":"all"}', 'sortby' => 'rank', 'sortdir' => 'ASC', 'return' => 'data', 'fastMode' => false, 'nestedChunkPrefix' => 'minishop2_'); // Merge all properties and run! $pdoFetch->addTime('Query parameters are prepared.');
$row['price'] = $product->getPrice($row); $row['weight'] = $product->getWeight($row); if ($row['price'] != $tmp) { $row['old_price'] = $tmp; } } $row['price'] = $miniShop2->formatPrice($row['price']); $row['old_price'] = $miniShop2->formatPrice($row['old_price']); $row['weight'] = $miniShop2->formatWeight($row['weight']); $row['idx'] = $pdoFetch->idx++; $opt_time_start = microtime(true); $options = $modx->call('msProductData', 'loadOptions', array(&$modx, $row['id'])); $row = array_merge($row, $options); $opt_time += microtime(true) - $opt_time_start; $tpl = $pdoFetch->defineChunk($row); $output[] .= empty($tpl) ? $pdoFetch->getChunk('', $row) : $pdoFetch->getChunk($tpl, $row, $pdoFetch->config['fastMode']); } $pdoFetch->addTime('Loaded options for products', $opt_time); $pdoFetch->addTime('Returning processed chunks'); } $log = ''; if ($modx->user->hasSessionContext('mgr') && !empty($showLog)) { $log .= '<pre class="msProductsLog">' . print_r($pdoFetch->getTime(), 1) . '</pre>'; } // Return output if (!empty($toSeparatePlaceholders)) { $modx->setPlaceholders($output, $toSeparatePlaceholders); $modx->setPlaceholder($log, $toSeparatePlaceholders . 'log'); } else { if (empty($outputSeparator)) { $outputSeparator = "\n";
if ($dataKey[0] == $key && count($dataKey) > 1) { $productOption[$dataKey[1]] = $dataValue; } } // Пропускаем, если характеристика группы не указана в параметре &groups if (!empty($groups) && !in_array($productOption['category'], $groups) && !in_array($productOption['category_name'], $groups)) { continue; } if (isset($groups[0]) && $groups[0] == 0 && $productOption['category'] != 0) { continue; } if (is_array($productData[$key])) { $values = array(); foreach ($productData[$key] as $value) { $params = array_merge($productData, $productOption, array('value' => $value)); $values[] = $pdoFetch->getChunk($tplValue, $params); } $productOption['value'] = implode($valuesSeparator, $values); } else { $productOption['value'] = $productData[$key]; } // Пропускаем, если значение пустое if ($hideEmpty && empty($productOption['value'])) { continue; } $rows[] = $pdoFetch->getChunk($tplRow, array_merge($productData, $productOption)); } $rows = implode($outputSeparator, $rows); $output = empty($tplOuter) ? $pdoFetch->getChunk('', array_merge($productData, array('rows' => $rows))) : $pdoFetch->getChunk($tplOuter, array_merge($scriptProperties, $productData, array('rows' => $rows))); } else { $output = !empty($tplEmpty) ? $pdoFetch->getChunk($tplEmpty, array_merge($scriptProperties, $productData)) : '';
$pdoFetch = new pdoFetch($modx, $scriptProperties); if (empty($product) && !empty($input)) { $product = $input; } if (empty($selected)) { $selected = ''; } if (empty($outputSeparator)) { $outputSeparator = "\n"; } if ((empty($name) || $name == 'id') && !empty($options)) { $name = $options; } $output = ''; $product = !empty($product) ? $modx->getObject('msProduct', $product) : ($product = $modx->resource); if (!$product instanceof msProduct) { $output = 'This resource is not instance of msProduct class.'; } elseif (!empty($name) && ($options = $product->get($name))) { if (!is_array($options) || $options[0] == '') { $output = !empty($tplEmpty) ? $pdoFetch->getChunk($tplEmpty, $scriptProperties) : ''; } else { $rows = array(); foreach ($options as $value) { $pls = array('value' => $value, 'selected' => $value == $selected ? 'selected' : ''); $rows[] = empty($tplRow) ? $value : $pdoFetch->getChunk($tplRow, $pls); } $rows = implode($outputSeparator, $rows); $output = empty($tplOuter) ? $pdoFetch->getChunk('', array('name' => $name, 'rows' => $rows)) : $pdoFetch->getChunk($tplOuter, array_merge($scriptProperties, array('name' => $name, 'rows' => $rows))); } } return $output;
$query = htmlspecialchars(strip_tags(trim($query))); $modx->setPlaceholder($plPrefix . $queryVar, $query); } } } if (!empty($query)) { $found = $mSearch2->Search($query); $ids = array_keys($found); $resources = implode(',', $ids); } if (empty($found)) { if (!empty($query)) { $output = $modx->lexicon('mse2_err_no_results'); } if (!empty($tplWrapper) && !empty($wrapIfEmpty)) { $output = $pdoFetch->getChunk($tplWrapper, array('output' => $output, 'total' => 0, 'query' => $query, 'parents' => $modx->getPlaceholder($plPrefix . $parentsVar)), $fastMode); } if (!empty($toPlaceholder)) { $modx->setPlaceholder($toPlaceholder, $output); } else { return $output; } } elseif ($returnIds) { return !empty($resources) ? $resources : '0'; } } else { if (strpos($resources, '{') === 0) { $found = $modx->fromJSON($resources); $resources = implode(',', array_keys($found)); } }
if ($source = $modx->getObject('sources.modMediaSource', $source)) { $source->initialize($modx->context->key); } $sources[$row['source']] = $source; } else { $source = $sources[$row['source']]; } if (!empty($source) && $source instanceof modMediaSource && !empty($row['image'])) { $row['image'] = $source->getObjectUrl($row['image']); } $row['idx'] = $pdoFetch->idx++; $tpl = $pdoFetch->defineChunk($row); if (!empty($additionalPlaceholders)) { $row = array_merge($additionalPlaceholders, $row); } $output[] = !empty($tpl) ? $pdoFetch->getChunk($tpl, $row, $pdoFetch->config['fastMode']) : '<pre>' . $pdoFetch->getChunk('', $row) . '</pre>'; } if ($modx->user->hasSessionContext('mgr') && !empty($showLog)) { $output['log'] = '<pre class="pdoUsersLog">' . print_r($pdoFetch->getTime(), 1) . '</pre>'; } // Return output if (!empty($toSeparatePlaceholders)) { $modx->setPlaceholders($output, $toSeparatePlaceholders); } else { $output = implode($outputSeparator, $output); if (!empty($tplWrapper) && (!empty($wrapIfEmpty) || !empty($output))) { $output = $pdoFetch->getChunk($tplWrapper, array('output' => $output), $pdoFetch->config['fastMode']); } if (!empty($toPlaceholder)) { $modx->setPlaceholder($toPlaceholder, $output); } else {
$ePochta->initialize($modx->context->key, $scriptProperties); if (!$ePochta instanceof ePochta) { return ''; } /* @var pdoFetch $pdoFetch */ if (!$modx->loadClass('pdofetch', MODX_CORE_PATH . 'components/pdotools/model/pdotools/', false, true)) { return false; } $pdoFetch = new pdoFetch($modx, $scriptProperties); $pdoFetch->addTime('pdoTools loaded.'); /* prepare settings */ if (!isset($tplCheck)) { $tplCheck = 'tpl.epPhone.check'; } if (!isset($tplExists)) { $tplExists = 'tpl.epPhone.exists'; } /* If user already have phone nothing to do */ $profile = $modx->user->getOne('Profile'); $userPhone = $profile->get('mobilephone'); if (!empty($userPhone)) { $output = $pdoFetch->getChunk($tplExists, array('mobilephone' => $userPhone)); } else { $output = $pdoFetch->getChunk($tplCheck); } if ($modx->user->hasSessionContext('mgr') && !empty($showLog)) { $output .= '<pre class="msOrderLog">' . print_r($pdoFetch->getTime(), 1) . '</pre>'; } } } return $output;
} } else { $pdoFetch->addTime('Filters retrieved'); $request = array(); foreach ($_GET as $k => $v) { $request[$k] = explode($mSearch2->config['values_delimeter'], $v); } foreach ($filters as $filter => $data) { if (empty($data)) { continue; } $tplOuter = !empty($scriptProperties['tplFilter.outer.' . $filter]) ? $scriptProperties['tplFilter.outer.' . $filter] : $scriptProperties['tplFilter.outer.default']; $tplRow = !empty($scriptProperties['tplFilter.row.' . $filter]) ? $scriptProperties['tplFilter.row.' . $filter] : $scriptProperties['tplFilter.row.default']; $tplEmpty = !empty($scriptProperties['tplFilter.empty.' . $filter]) ? $scriptProperties['tplFilter.empty.' . $filter] : ''; // Caching chunk for quick placeholders $pdoFetch->getChunk($tplRow); $rows = $has_active = ''; list($table, $filter2) = explode($mSearch2->config['filter_delimeter'], $filter); $idx = 0; foreach ($data as $v) { if (empty($v)) { continue; } $checked = isset($request[$filter]) && in_array($v['value'], $request[$filter]) && isset($v['type']) && $v['type'] != 'number'; if ($scriptProperties['suggestions']) { if ($checked) { $num = ''; $has_active = 'has_active'; } else { if (isset($suggestions[$filter][$v['value']])) { $num = $suggestions[$filter][$v['value']];