/**
  * 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);
 }
Exemple #3
0
 /**
  * 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));
    }
}
Exemple #11
0
        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']];