Beispiel #1
0
 /**
  * Полученнияе статистики заказов за выбранный период. 
  * @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;
 }
Beispiel #2
0
 /**
  * Выгружает содержание всего каталога в 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;
 }
Beispiel #3
0
 /**
  * Получает данные об ошибке произошедшей в админке и отправляет на 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;
 }
Beispiel #4
0
}
$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'];