/** * Полученнияе статистики заказов за выбранный период. * @param $dateFrom дата "от". * @param $dateTo дата "До". * @return array */ public function getStatisticPeriod($dateFrom, $dateTo) { $dateFromRes = $dateFrom; $dateToRes = $dateTo; $dateFrom = date('Y-m-d', strtotime($dateFrom)); $dateTo = date('Y-m-d', strtotime($dateTo)); $period = "AND `add_date` >= " . DB::quote($dateFrom) . "\r\n AND `add_date` <= " . DB::quote($dateTo); // Количество закрытых заказов всего. $ordersCount = $this->getOrderCount('WHERE status_id = 5 ' . $period); $noclosed = $this->getOrderCount('WHERE status_id <> 5 ' . $period); // Cумма заработанная за все время работы магазина. $res = DB::query("\r\n SELECT sum(summ) as 'summ' FROM `" . PREFIX . "order`\r\n WHERE status_id = 5 " . $period); if ($row = DB::fetchAssoc($res)) { $summ = $row['summ']; } $product = new Models_Product(); $productsCount = $product->getProductsCount(); $res = DB::query("SELECT id FROM `" . PREFIX . "user`"); $usersCount = DB::numRows($res); $result = array('from_date_stat' => $dateFromRes, 'to_date_stat' => $dateToRes, "orders" => $ordersCount ? $ordersCount : "0", "noclosed" => $noclosed ? $noclosed : "0", "summ" => $summ ? $summ : "0", "users" => $usersCount ? $usersCount : "0", "products" => $productsCount ? $productsCount : "0"); return $result; }
/** * Выгружает содержание всего каталога в CSV файл. * $listProductId выгрузка выбранных товаров * @return array */ public function exportToCsv($listProductId = array()) { header("Content-Type: application/force-download"); header("Content-Type: application/octet-stream;"); header("Content-Type: application/download"); header("Content-Disposition: attachment;filename=data.csv"); header("Content-Transfer-Encoding: binary "); $csvText = ''; $csvText .= '"Категория";"URL категории";"Товар";"Вариант";"Описание";"Цена";"URL";"Изображение";"Артикул";"Количество";"Активность";"Заголовок [SEO]";"Ключевые слова [SEO]";"Описание [SEO]";"Старая цена";"Рекомендуемый";"Новый";"Сортировка";"Вес";"Связанные артикулы";"Смежные категории";"Ссылка на товар";"Валюта";"Свойства";' . "\n"; $import = new Import(); $product = new Models_Product(); $catalog = new Models_Catalog(); Storage::$noCache = true; $page = 1; // получаем максимальное количество заказов, если выгрузка всего ассортимента if (empty($listProductId)) { $maxCountPage = ceil($product->getProductsCount() / 500); } else { $maxCountPage = ceil(count($listProductId) / 500); } $catalog->categoryId = MG::get('category')->getCategoryList(0); $catalog->categoryId[] = 0; $listId = implode(',', $listProductId); for ($page = 1; $page <= $maxCountPage; $page++) { URL::setQueryParametr("page", $page); if (empty($listProductId)) { $catalog->getList(500, true); } else { $catalog->getListByUserFilter(500, ' p.id IN (' . DB::quote($listId, 1) . ')'); } foreach ($catalog->products as $row) { $parent = $row['category_url']; // Подставляем всесто URL названия разделов. $resultPath = ''; $resultPathUrl = ''; while ($parent) { $url = URL::parsePageUrl($parent); $parent = URL::parseParentUrl($parent); $parent = $parent != '/' ? $parent : ''; $alreadyParentCat = MG::get('category')->getCategoryByUrl($url, $parent); $resultPath = $alreadyParentCat['title'] . '/' . $resultPath; $resultPathUrl = $alreadyParentCat['url'] . '/' . $resultPathUrl; } $resultPath = trim($resultPath, '/'); $resultPathUrl = trim($resultPathUrl, '/'); $variants = $product->getVariants($row['id']); if (!empty($variants)) { foreach ($variants as $key => $variant) { foreach ($variant as $k => $v) { if ($k != 'sort') { $row[$k] = $v; } } $row['category_url'] = $resultPath; $row['category_full_url'] = $resultPathUrl; $csvText .= $this->addToCsvLine($row, 1); } } else { $row['category_url'] = $resultPath; $row['category_full_url'] = $resultPathUrl; $csvText .= $this->addToCsvLine($row); } } } $csvText = substr($csvText, 0, -2); // удаляем последний символ '\n' $csvText = mb_convert_encoding($csvText, "WINDOWS-1251", "UTF-8"); if (empty($listProductId)) { echo $csvText; exit; } else { $date = date('m_d_Y_h_i_s'); file_put_contents('data_csv_' . $date . '.csv', $csvText); $msg = 'data_csv_' . $date . '.csv'; } return $msg; }
/** * Получает данные об ошибке произошедшей в админке и отправляет на support@moguta.ru. * @return boolean */ public function sendBugReport() { $this->messageSucces = "Отчет отправлен"; $this->messageError = "Неудалось отправить отчет"; $body .= 'Непредвиденная ошибка на сайте ' . $_SERVER['SERVER_NAME']; $body .= '<br/><br/><br/><strong>Информация о системе</strong>'; $body .= '<br/>Версия Moguta.CMS: ' . VER; $body .= '<br/>Версия php: ' . phpversion(); $body .= '<br/>USER_AGENT: ' . $_SERVER['HTTP_USER_AGENT']; $body .= '<br/>IP: ' . $_SERVER['SERVER_ADDR']; $body .= '<br/><strong>Информация о магазине</strong>'; $product = new Models_Product(); $body .= '<br/>Количество товаров: ' . $product->getProductsCount(); $body .= '<br/>Количество категорий: ' . MG::get('category')->getCategoryCount(); $body .= '<br/>Шаблон: ' . MG::getSetting('templateName'); $body .= '<br/>E-mail администратора: ' . MG::getSetting('adminEmail'); $body .= '<br/><strong>Баг-репорт</strong>'; $body .= '<br/>' . $_POST['text']; $body .= '<br/><br/><img alt="Embedded Image" src="data:' . $_POST['screen'] . '" />'; Mailer::addHeaders(array("Reply-to" => MG::getSetting('adminEmail'))); Mailer::sendMimeMail(array('nameFrom' => MG::getSetting('adminEmail'), 'emailFrom' => MG::getSetting('adminEmail'), 'nameTo' => "*****@*****.**", 'emailTo' => "*****@*****.**", 'subject' => "Отчет об ошибке с сайта " . $_SERVER['SERVER_NAME'], 'body' => $body, 'html' => true)); return true; }
} $sorterData = explode('|', $_POST['sorter']); if ($sorterData[1] > 0) { $sorterData[3] = 'desc'; } else { $sorterData[3] = 'asc'; } $countPrintRowsProduct = MG::getSetting('countPrintRowsProduct'); if (!empty($userFilter)) { $catalog = $model->getListByUserFilter($countPrintRowsProduct, $userFilter, true); } else { $catalog = $model->getList($countPrintRowsProduct, true); } //категории: $listCategories = MG::get('category')->getCategoryTitleList(); $arrayCategories = $model->categoryId = MG::get('category')->getHierarchyCategory(0); $categoriesOptions = MG::get('category')->getTitleCategory($arrayCategories, URL::get('category_id')); $product = new Models_Product(); $this->productsCount = $product->getProductsCount(); $this->catalog = $catalog['catalogItems']; $this->listCategories = $listCategories; $this->categoriesOptions = $categoriesOptions; $this->countPrintRowsProduct = $countPrintRowsProduct; $this->pagination = $catalog['pager']; $this->displayFilter = $_POST['cat_id'] != "null" && !empty($_POST['cat_id']) || isset($_POST['displayFilter']); // так проверяем произошол ли запрос по фильтрам или нет $this->settings = MG::get('settings'); $this->sorterData = $sorterData; $exampleName = $product->getProductByUserFilter(' 1=1 LIMIT 0,1'); $ids = array_keys($exampleName); $this->exampleName = $exampleName[$ids[0]]['title'];