Exemplo n.º 1
0
 public function productsAction()
 {
     $request = $this->request;
     $persistent = $this->persistent;
     // Reset
     $reset = $this->request->getQuery('reset', 'int');
     if (isset($reset)) {
         $persistent->productsParams = null;
     }
     // Persistent parameters
     if (!is_array($persistent->productsParams)) {
         $persistent->productsParams = ['qry' => ['conditions' => "id IS NOT NULL", 'order' => 'id ASC'], 'sort' => ['page' => 1, 'perpage' => 50]];
     }
     $parameters = $persistent->productsParams;
     $parameters['sort']['perpage'] = 50;
     $parameters['sort']['page'] = 1;
     if ($request->getQuery('page', 'int')) {
         $parameters['sort']['page'] = $request->getQuery('page', 'int');
     }
     if ($request->getQuery('perpage', 'int')) {
         $parameters['sort']['perpage'] = $request->getQuery('perpage', 'int');
     }
     // ----------------------------------------
     // Search
     if ($request->isPost()) {
         $parameters['search_cat'] = null;
         $parameters['search_virtcat'] = null;
         $parameters['search_maker'] = null;
         $parameters['search_material'] = null;
         $parameters['search_hold'] = null;
         $parameters['search_id'] = null;
         // Category
         if (!empty($_POST['search_cat'])) {
             $search_cat_get = $request->getPost('search_cat', 'int');
             $parameters['search_cat'] = $search_cat_get;
             $search_cats = PCategory::getCatTree($search_cat_get);
             $search_cat = " AND category_id IN ({$search_cats})";
         } else {
             $search_cat = null;
         }
         // Virtual category
         if (!empty($_POST['search_virtcat'])) {
             $search_virtcat_get = $request->getPost('search_virtcat', 'int');
             $parameters['search_virtcat'] = $search_virtcat_get;
             $search_virtcat = " AND tmaterial_id = {$search_virtcat_get}";
         } else {
             $search_virtcat = null;
         }
         // Maker
         if (!empty($_POST['search_maker'])) {
             $search_maker_get = $request->getPost('search_maker', 'int');
             $parameters['search_maker'] = $search_maker_get;
             $search_maker = " AND maker_id = {$search_maker_get}";
         } else {
             $search_maker = null;
         }
         // Material
         if (!empty($_POST['search_material'])) {
             $search_material_get = $request->getPost('search_material', 'int');
             $parameters['search_material'] = $search_material_get;
             $search_material = " AND cmaterial_id = {$search_material_get}";
         } else {
             $search_material = null;
         }
         // Hold
         if (!empty($_POST['search_hold'])) {
             $search_hold_get = $request->getPost('search_hold', 'int');
             $parameters['search_hold'] = $search_hold_get;
             $search_hold = $search_hold_get == 1 ? " AND hold = 1" : " AND hold = 0";
         } else {
             $search_hold = null;
         }
         // ID
         if (!empty($_POST['search_id'])) {
             $parameters['search_id'] = $request->getPost('search_id', 'string');
             $search_id_get = preg_split('/[,\\s]/', $request->getPost('search_id', 'string'), null, PREG_SPLIT_NO_EMPTY);
             $search_id = join(', ', $search_id_get);
             $search_id = " AND id IN ({$search_id})";
         } else {
             $search_id = null;
         }
         // Search parameters
         $parameters['qry'] = ['conditions' => "id IS NOT NULL\n                    {$search_cat}\n                    {$search_virtcat}\n                    {$search_maker}\n                    {$search_material}\n                    {$search_hold}\n                    {$search_id}"];
     }
     // Other parameters
     $parameters['query_count'] = PProductMain::count($parameters['qry']);
     $parameters['qry']['order'] = "id ASC";
     $parameters['qry']['limit'] = 10000;
     $persistent->productsParams = $parameters;
     //        var_dump($parameters);
     // Find all placements that correspond to set parameters
     $products = PProductMain::find($parameters['qry']);
     // Paginator
     $paginator = new Paginator(["data" => $products, "limit" => $parameters['sort']['perpage'], "page" => $parameters['sort']['page']]);
     $this->view->page = $paginator->getPaginate();
     // Set selected search values
     $this->view->selected_cat = isset($parameters['search_cat']) && !empty($parameters['search_cat']) ? $parameters['search_cat'] : null;
     $this->view->selected_virtcat = isset($parameters['search_virtcat']) && !empty($parameters['search_virtcat']) ? $parameters['search_virtcat'] : null;
     $this->view->selected_maker = isset($parameters['search_maker']) && !empty($parameters['search_maker']) ? $parameters['search_maker'] : null;
     $this->view->selected_material = isset($parameters['search_material']) && !empty($parameters['search_material']) ? $parameters['search_material'] : null;
     $this->view->selected_hold = isset($parameters['search_hold']) && !empty($parameters['search_hold']) ? $parameters['search_hold'] : null;
     $this->view->selected_id = isset($parameters['search_id']) && !empty($parameters['search_id']) ? $parameters['search_id'] : null;
     // Products count (overall or filtered)
     $this->view->products_count = $parameters['query_count'];
     // All categories
     $this->view->cats_list = PCategory::getCatList();
     // All virtual categories
     $virtcats = PCategoryGroup::find(['order' => 'title ASC']);
     foreach ($virtcats as $virtcat) {
         $virtcats_array[$virtcat->id] = $virtcat->title;
     }
     $this->view->virtcats_list = $virtcats_array;
     // All makers
     //        $makers = PMaker::find(["name IS NOT NULL AND isseller=1 AND approved=1 AND banned=0", 'order' => 'name ASC']);
     $makers = PMaker::find(["name IS NOT NULL AND isseller=1", 'order' => 'name ASC']);
     foreach ($makers as $maker) {
         $makers_array[$maker->id] = $maker->name;
     }
     $this->view->makers_list = $makers_array;
     // All materials
     $materials = PProdMaterial::find(['order' => 'title ASC']);
     foreach ($materials as $material) {
         $materials_array[$material->id] = $material->title;
     }
     $this->view->materials_list = $materials_array;
     // Langs stat
     $langs = PProdInfo::count(["coder_status = 5", 'group' => 'lang', 'order' => 'id']);
     foreach ($langs as $lang) {
         $langs_stat[$lang->lang] = $lang->rowcount;
     }
     $this->view->langs_stat = $langs_stat;
     // Check if user can put products on hold
     $this->view->can_hold = AccRoles::findFirst("user_id={$this->auth->id} AND (role_id=5 OR role_id=1000)");
 }
Exemplo n.º 2
0
 /**
  * Table of moderated products grouped by languages and statuses
  */
 public function moderatedAction()
 {
     $stats['done'] = PProdInfo::count(["coder_status = 5", 'group' => 'lang', 'order' => 'id'])->toArray();
     $stats['done_hold'] = PStats::count(["coder_status = 5 AND hold = 1", 'group' => 'lang', 'order' => 'id'])->toArray();
     $stats['inmoder'] = PProdInfo::count(["coder_status = 3", 'group' => 'lang', 'order' => 'id'])->toArray();
     $stats['inmoder_hold'] = PStats::count(["coder_status = 3 AND hold = 1", 'group' => 'lang', 'order' => 'id'])->toArray();
     $stats['returned'] = PProdInfo::count(["coder_status = 6", 'group' => 'lang', 'order' => 'id'])->toArray();
     $stats['returned_hold'] = PStats::count(["coder_status = 6 AND hold = 1", 'group' => 'lang', 'order' => 'id'])->toArray();
     $stats['todo_hold'] = PStats::count(["coder_status < 3 AND hold = 1", 'group' => 'lang', 'order' => 'id'])->toArray();
     $stats['translator'] = PProdInfo::count(["coder_status = 1", 'group' => 'lang', 'order' => 'id'])->toArray();
     $stats['translator_hold'] = PStats::count(["coder_status = 1 AND hold = 1", 'group' => 'lang', 'order' => 'id'])->toArray();
     $stats['hold_total'] = PStats::count(["hold = 1", 'group' => 'lang', 'order' => 'id'])->toArray();
     $stats['langs'] = PProdInfo::count(['group' => 'lang', 'order' => 'id'])->toArray();
     $this->view->total_ru = PStats::count("coder_status = 5 AND lang = 'ru'");
     $this->view->total = PProductMain::count();
     $this->view->total_hold = PProductMain::count("hold=1");
     $this->view->total_hold_photocoder = PProductMain::count("hold=1 AND status<4");
     $this->view->stats = $stats;
     $this->view->current_date = date('H:i:s d.m.Y');
 }
Exemplo n.º 3
0
 public function listoflangsAction()
 {
     $this->view->disable();
     // List of all available languages for categories
     //        $langs = PCategory::count(['group' => 'lang', 'order' => 'id']);
     $langs = PProdInfo::count(['group' => 'lang', 'order' => 'id']);
     foreach ($langs as $lang) {
         $listoflangs[] = $lang->lang;
     }
     //        var_dump($listoflangs);
     echo json_encode($listoflangs, JSON_FORCE_OBJECT);
 }
Exemplo n.º 4
0
    public function moderAction()
    {
        $stats = [];
        $stats['done'] = PProdInfo::count(["coder_status = 5", 'group' => 'lang', 'order' => 'id']);
        $stats['done_hold'] = PStats::count(["coder_status = 5 AND hold = 1", 'group' => 'lang', 'order' => 'id']);
        $stats['inmoder'] = PProdInfo::count(["coder_status = 3", 'group' => 'lang', 'order' => 'id']);
        $stats['inmoder_hold'] = PStats::count(["coder_status = 3 AND hold = 1", 'group' => 'lang', 'order' => 'id']);
        $stats['returned'] = PProdInfo::count(["coder_status = 6", 'group' => 'lang', 'order' => 'id']);
        $stats['returned_hold'] = PStats::count(["coder_status = 6 AND hold = 1", 'group' => 'lang', 'order' => 'id']);
        $stats['todo_hold'] = PStats::count(["coder_status < 3 AND hold = 1", 'group' => 'lang', 'order' => 'id']);
        $stats['hold_total'] = PStats::count(["hold = 1", 'group' => 'lang', 'order' => 'id']);
        $langs = PProdInfo::count(['group' => 'lang', 'order' => 'id']);
        $total_ru = PStats::count("coder_status = 5 AND lang = 'ru'");
        $total = PProductMain::count();
        $date = date('d.m.Y');
        $titles = ["Сделано (5) (из них на холде)", "На модерации (3) (из них на холде)", "Возвращено (6) (из них на холде)", "Не обработано еще (0) (из них на холде)", "Замороженые товары (hold), всего"];
        $stat_titles = ["done", "inmoder", "returned"];
        $text = <<<TEXT
<p style="margin-bottom: 20px">Всего товаров: <span id="total">{$total}</span></p>
<p style="margin-bottom: 20px">Отчет на {$date}</p>
<table border='1'>
<tr>
<th></th>
TEXT;
        foreach ($langs as $lang => $stat) {
            $text .= "<th width='110px'>{$stat['lang']}</th>";
        }
        $text .= "</tr>";
        for ($i = 0; $i < 3; $i++) {
            $text .= "<tr><td>{$titles[$i]}</td>";
            foreach ($langs as $lang => $stat) {
                $text .= "<td>";
                foreach ($stats[$stat_titles[$i]] as $lang_total => $stat_total) {
                    if ($stat_total['lang'] == $stat['lang']) {
                        $text .= $stat_total['rowcount'] . " ";
                        foreach ($stats[$stat_titles[$i] . '_hold'] as $lang_hold => $stat_hold) {
                            if ($stat_hold['lang'] == $stat['lang']) {
                                $text .= "({$stat_hold['rowcount']})";
                            }
                        }
                    }
                }
                $text .= "</td>";
            }
            $text .= "</tr>";
        }
        $text .= "<tr><td>{$titles[3]}</td>";
        foreach ($langs as $lang => $stat) {
            $text .= "<td>";
            if ($stat['lang'] == 'ru') {
                $text .= $total - $stat['rowcount'];
            } else {
                $text .= $total_ru - $stat['rowcount'];
            }
            foreach ($stats['todo_hold'] as $lang_hold => $stat_hold) {
                if ($stat_hold['lang'] == $stat['lang']) {
                    $text .= "({$stat_hold['rowcount']})";
                }
            }
            $text .= "</td>";
        }
        $text .= "</tr>";
        $text .= "<tr><td>{$titles[4]}</td>";
        foreach ($langs as $lang => $stat) {
            $text .= "<td>";
            foreach ($stats['hold_total'] as $lang_hold => $stat_hold) {
                if ($stat_hold['lang'] == $stat['lang']) {
                    $text .= "{$stat_hold['rowcount']}";
                }
            }
            $text .= "</td>";
        }
        $text .= "</tr></table>";
        $text .= <<<TEXT
<br><br><b>Описание</b>
<p>Сделано (5) - товары со статусом перевода на данный язык == 5 ( в случае с RU статус копирайта == 5)</p>
<p>На модерации (3) - товары со статусом перевода на данный язык == 3 ( в случае с RU статус копирайта == 3)</p>
<p>Возвращено (6) - товары со статусом перевода на данный язык == 6 ( в случае с RU статус копирайта == 6)</p>
<p>Не обработано еще (0) - товары со статусом перевода на данный язык == 0 ( в случае с RU статус копирайта == 0)</p>
<p>Замороженые товары (hold) - товары со статусом hold == Да</p>
TEXT;
        $message[] = ['To' => '*****@*****.**', 'From' => POSTMARK_FROM, 'Subject' => "Количество отмодерированных товаров. Отчет за {$date}", 'HtmlBody' => $text];
        $client = new PostmarkClient(POSTMARK_API);
        //        var_dump($message);
        $send = $client->sendEmailBatch($message);
    }