/**
  * Makers list
  */
 public function indexAction()
 {
     $request = $this->request;
     $persistent = $this->persistent;
     // Reset
     $reset = $this->request->getQuery('reset', 'int');
     if (isset($reset)) {
         $persistent->makersParams = null;
     }
     // Persistent parameters
     if (!is_array($persistent->makersParams)) {
         $persistent->makersParams = ['qry' => ['conditions' => "id IS NOT NULL", 'order' => 'updated DESC'], 'sort' => ['page' => 1, 'perpage' => 50]];
     }
     $parameters = $persistent->makersParams;
     $parameters['sort']['perpage'] = isset($parameters['sort']['perpage']) ? $parameters['sort']['perpage'] : 50;
     $parameters['sort']['page'] = isset($parameters['sort']['page']) ? $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_region'] = null;
         $parameters['search_approved'] = null;
         // Placer
         if (!empty($_POST['search_region'])) {
             $search_region_get = $request->getPost('search_region', 'int');
             $parameters['search_region'] = $search_region_get;
             $search_region = " AND geo_id = {$search_region_get}";
         } else {
             $search_region = null;
         }
         // Name or ID
         if (!empty($_POST['search_name'])) {
             $search_name_get = $request->getPost('search_name', 'string');
             if (preg_match('/^[0-9,\\s]+$/', $request->getPost('search_name', 'string'))) {
                 $search_split = preg_split('/[,\\s]/', $search_name_get, 0, PREG_SPLIT_NO_EMPTY);
                 $search_name = implode(', ', $search_split);
                 $search_name = " AND id IN ({$search_name})";
             } else {
                 $search_name = " AND name LIKE '%{$search_name_get}%'";
             }
         } else {
             $search_name_get = null;
             $search_name = null;
         }
         // Email
         if (!empty($_POST['search_email'])) {
             $search_email_get = $request->getPost('search_email', 'string');
             $search_email = " AND email LIKE '%{$search_email_get}%'";
         } else {
             $search_email_get = null;
             $search_email = null;
         }
         // Phone
         if (!empty($_POST['search_phone'])) {
             $search_phone_get = $request->getPost('search_phone', 'string');
             $search_phone = " AND phone LIKE '%{$search_phone_get}%' OR phone2 LIKE '%{$search_phone_get}%'";
         } else {
             $search_phone_get = null;
             $search_phone = null;
         }
         // Approved status
         if (!empty($_POST['search_approved'])) {
             $search_approved_get = $request->getPost('search_approved', 'int');
             $parameters['search_approved'] = $search_approved_get;
             $search_approved = " AND approved = {$search_approved_get}";
         } else {
             $search_approved = null;
         }
         // Search parameters
         $parameters['qry'] = ['conditions' => "id IS NOT NULL\n                    {$search_region}\n                    {$search_name}\n                    {$search_email}\n                    {$search_phone}\n                    {$search_approved}"];
     }
     // Other parameters
     $parameters['count'] = PMaker::count($parameters['qry']);
     $parameters['qry']['order'] = "updated DESC";
     $parameters['qry']['limit'] = 10000;
     $persistent->makersParams = $parameters;
     //        var_dump($parameters);
     $makers = PMaker::find($parameters['qry']);
     // Paginator
     $paginator = new Paginator(["data" => $makers, "limit" => $parameters['sort']['perpage'], "page" => $parameters['sort']['page']]);
     $this->view->page = $paginator->getPaginate();
     // Set selected search values
     $this->view->selected_region = isset($parameters['search_region']) && !empty($parameters['search_region']) ? $parameters['search_region'] : null;
     $this->view->selected_approved = isset($parameters['search_approved']) && !empty($parameters['search_approved']) ? $parameters['search_approved'] : null;
     $this->view->makers_count = $parameters['count'];
     // All regions
     $this->view->regions_list = array_column(Geo::find(['order' => 'title ASC'])->toArray(), 'title', 'id');
     // Currencies
     $currencies_array = array_column(PCrosscurrency::find()->toArray(), 'title', 'title');
     $this->view->currencies_list = ['UAH' => $currencies_array['UAH']] + $currencies_array;
     // Countries
     $countries_array = array_column(Countries::find("active=1")->toArray(), 'title', 'id');
     $ukraine = array_search('Украина', $countries_array);
     $this->view->countries_list = [$ukraine => $countries_array[$ukraine]] + $countries_array;
     $this->view->users_list = Accounts::getUsersByRole(['researcher', 'mobilegroup'], false, 'name ASC');
     $this->view->can_edit = AccRoles::findFirst("user_id={$this->auth->id} AND (role_id=991 OR role_id=5)");
 }
示例#2
0
 public function idAction($seller_id = null, $selected_lang = null)
 {
     // Access control with backdoor for admins
     if ($this->auth->id != Marketseller::findFirst("id={$seller_id} AND (active=1 OR active IS NULL)")->user_id && $this->auth->role_id != 5) {
         $this->flash->error("У вас нет доступа к этому виртуальному магазину!");
         return $this->response->redirect("seller/index");
     }
     // Find languages for a marketplace
     $seller = Marketseller::findFirst("id={$seller_id}");
     $langs = $seller->Marketplace->prefs;
     $langs = preg_split('/[,\\s]/', $langs, 0, PREG_SPLIT_NO_EMPTY);
     //        $list_of_langs = "'".join("', '", $langs)."'";
     $selected_lang = $selected_lang != null ? $selected_lang : $langs[0];
     $lng = $selected_lang == 'all' ? $langs : [$selected_lang];
     //        var_dump($lng);
     $tmaterial_id = Marketseller::findFirst($seller_id)->tmaterial_id;
     // Search by id
     $search_id = null;
     if ($this->request->isPost()) {
         $id = $this->request->getPost('search_id', 'int');
         $search_id = " AND info.product_id = {$id}";
     }
     $products_array = [];
     foreach ($lng as $l) {
         $table = new PProdInfo();
         $sql = "SELECT info.id, sel.*, cat.title AS category FROM p_prod_info AS info\n                LEFT JOIN p_product_main AS main\n                ON main.id = info.product_id\n                LEFT JOIN p_selection_seller AS sel\n                ON sel.id = info.product_id AND sel.lang = '{$l}'\n                LEFT JOIN p_category AS cat\n                ON main.category_id = cat.category_id\n                WHERE sel.hold = 0 AND sel.title IS NOT NULL AND info.lang = '{$l}' AND info.coder_status = 5 AND cat.lang = 'ru' AND main.tmaterial_id = {$tmaterial_id}{$search_id};";
         $selection = new Resultset(null, $table, $table->getReadConnection()->query($sql));
         $selection = $selection->toArray();
         $placement = MPlacement::find("marketseller_id = {$seller_id} AND langcode = '{$l}' AND (active=1 OR active IS NULL)")->toArray();
         for ($i = 0; $i < count($selection); $i++) {
             $products_array[$selection[$i]['id']] = $selection[$i];
         }
         foreach ($placement as $prod) {
             if (isset($products_array[$prod['product_id']])) {
                 unset($products_array[$prod['product_id']]);
             }
         }
     }
     // Paginator
     $perpage = $this->request->getQuery('perpage', 'int') ? $this->request->getQuery('perpage', 'int') : 10;
     $page = $this->request->getQuery('page', 'int') ? $this->request->getQuery('page', 'int') : 1;
     //        $paginator = new Paginator([
     $paginator = new PaginatorArray(["data" => $products_array, "limit" => (int) $perpage, "page" => (int) $page]);
     $this->view->products = $paginator->getPaginate();
     //        $this->view->products_count = $products;
     $this->view->products_count = $products_array;
     $this->view->seller_id = $seller_id;
     $this->view->seller = $seller;
     $this->view->langs = $langs;
     $this->view->selected_lang = $selected_lang;
     $this->view->placed_today = $this->modelService->getStat('done', 'seller', 'all', 'day');
     $this->view->placed_month = $this->modelService->getStat('done', 'seller', 'all', 'month');
     // Check if a user is an autoplacer
     $this->view->is_autoplacer = AccRoles::findFirst("user_id={$this->auth->id} AND (role_id=5 OR role_id=2000)");
 }