view->setTemplateAfter('common'); } function indexAction($id){ if($id){ $this->session->set("project-id", $id); } $model_sections = \parserSections::query() ->where("project_id = {$this->session->get('project-id')}") ->execute()->toArray(); foreach($model_sections as $k => $v){ $model_section[$v['id']] = $v; } $sections_id = implode("','",$this->common->array_column( $model_sections, 'id' )); if($sections_id) { $model_items = \parserItems::query() ->where("section_id IN ('$sections_id')") ->execute()->toArray(); $items_id = implode("','", $this->common->array_column($model_items, 'id')); $model_competitors = \parserCompetitors::query() ->where("project_id = {$this->session->get('project-id')}") ->execute()->toArray(); foreach($model_competitors as $competitors){ $model_competitors_items = \parserCompetitorsItems::find("item_id IN ('$items_id') AND competitor_id = {$competitors['id']} AND status = 1 AND link_status = 'ok' AND exist = ''")->toArray(); if($model_competitors_items) { foreach($model_competitors_items as $item_data){ $competitor_item[$competitors['id']][$item_data['item_id']] = $item_data; } } } $model_competitors = \parserCompetitors::query() ->where(!empty($competitors_id) ? "id IN ('$competitors_id')" : '1=1') ->execute()->toArray(); $this->view->setVars([ 'model_sections' => $model_section, 'model_items' => $model_items, 'model_competitors_items' => $model_competitors_items, 'model_competitors' => $model_competitors, 'controller' => $this, 'competitor_item' => $competitor_item ]); } else { die('

Активных разделов не найдено

'); } } function checkRegAction(){ $this->view->disableLevel(\Phalcon\Mvc\View::LEVEL_MAIN_LAYOUT); $site_url = $this->request->get('site_url'); $regex_h1 = $this->request->get('regex_h1'); $regex_price = $this->request->get('regex_price'); $exist_regexr = $this->request->get('regex_exist'); $exist[1] = ''; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $site_url); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_USERAGENT , "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"); $headers = array ( 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*;q=0.8', 'Accept-Language: ru,en-us;q=0.7,en;q=0.3', 'Accept-Encoding: utf-8', 'Accept-Charset: utf-8;q=0.7,*;q=0.7' ); curl_setopt($ch, CURLOPT_HTTPHEADER,$headers); $page = curl_exec($ch); $header = curl_getinfo($ch); curl_close($ch); if(preg_match('/windows/i',$header['content_type'])) { $page = iconv("windows-1251", "utf-8", $page); } preg_match($regex_price, $page, $price); preg_match($regex_h1, $page, $h1); if($exist_regexr) { preg_match($exist_regexr, $page, $exist); } $price = preg_replace("/[^0-9]/", '', $price[1]); $result = array( 'price' => $price, 'h1' => $h1[1], 'exist' => $exist[1] ); die(json_encode($result)); } function parseAction(){ $this->view->disableLevel(\Phalcon\Mvc\View::LEVEL_MAIN_LAYOUT); $competitors = \parserCompetitors::find(); $i=0; $parser_data = array(); foreach($competitors as $competitor){ $model_sections = \parserSections::query() ->where("id IN ('".str_replace(",","','",$competitor->sections_id)."')") ->execute(); foreach($model_sections as $items) { foreach($items->parserItems as $item){ $parser_data[$i] = $this->a_parser->parseLinks($competitor->url, $item->item_name, $competitor->h1_regexr, $competitor->price_regexr, $competitor->exist_regexr); if($parser_data[$i]) { $parser_data[$i]['competitor_id'] = $competitor->id; $parser_data[$i]['item_id'] = $item->id; $i++; } } } } foreach($parser_data as $data) { if($parser_data) { $model_competitors_items = \parserCompetitorsItems::checkSection($data['item_id'], $data['competitor_id']); if(!$model_competitors_items){ $model_competitors_items = new \parserCompetitorsItems(); $model_competitors_items->price = $data['price']; $model_competitors_items->h1 = $data['h1']; $model_competitors_items->item_url = $data['link']; $model_competitors_items->competitor_id = $data['competitor_id']; $model_competitors_items->item_id = $data['item_id']; $model_competitors_items->status = 0; $model_competitors_items->save(); } else { $model_competitors_items->price = $data['price']; $model_competitors_items->h1 = $data['h1']; $model_competitors_items->item_url = $data['link']; $model_competitors_items->competitor_id = $data['competitor_id']; $model_competitors_items->item_id = $data['item_id']; $model_competitors_items->item_id = 0; $model_competitors_items->save(); } } } } function sectionsAction(){ $user_id = $this->session->get('user-id'); $project_id = $this->session->get('project-id'); //Check if the user has uploaded files if ($this->request->hasFiles() == true) { //Print the real file names and their sizes foreach ($this->request->getUploadedFiles() as $file){ //Move the file into the application $route = STORAGE_PATH.'temp/'.$file->getName(); $file->moveTo($route); } $this->ServiceExcel->addFile($route); $result = $this->ServiceExcel->getRows(); $data = new \parserItems(); // $data->updateStatus($this->modelsManager); /*foreach($result as $row){ $model_sections = \parserSections::checkSection($project_id, $row[0]); if(!$model_sections){ $model_sections = new \parserSections(); $model_sections->project_id = $project_id; $model_sections->section_name = $row[1]; $model_sections->section_user_id = $row[0]; $model_sections->save(); } else { $model_sections->project_id = $project_id; $model_sections->section_name = $row[1]; $model_sections->section_user_id = $row[0]; $model_sections->save(); } $model_items = \parserItems::checkSection($model_sections->id, $row[2]); if(!$model_items){ $model_items = new \parserItems(); $model_items->item_name = $row[3]; $model_items->item_users_id = $row[2]; $model_items->price = $row[4]; $model_items->status = 1; $model_items->url = $row[5]; $model_items->section_id = $model_sections->id; $model_items->save(); } else { $model_items->item_name = $row[3]; $model_items->item_users_id = $row[2]; $model_items->price = $row[4]; $model_items->status = 1; $model_items->url = $row[5]; $model_items->section_id = $model_sections->id; $model_items->save(); } }*/ $data->DeleteNonActive($this->modelsManager); return $this->response->redirect([ 'for' => 'price_parser_sections' ]); } $model = new \parserSections(); $data = $model->getData($this->modelsManager,$project_id); $this->view->setVars([ 'data' => $data, ]); } function sectionsIndexAction(){ $params = $this->dispatcher->getParams(); $currentPage = $this->request->get('page', 'int', 1); // Набор данных для разбивки на страницы $data = \parserSections::find(array("project_id = {$this->session->get('project-id')}")); $this->view->setVars([ 'data' => $data ]); } function sectionsAddAction(){ } function competitorsRelAction($id){ $model_competitors = \parserCompetitors::query() ->where("id = $id") ->execute()->toArray(); $sections_id = str_replace(",","','",$model_competitors[0]['sections_id']); $model = new \parserCompetitors; $data = $model->getData($this->modelsManager,$sections_id, $id); $this->view->setVars([ 'data' => $data, 'controller' => $this ]); } function competitorsAction(){ $params = $this->dispatcher->getParams(); $currentPage = $this->request->get('page', 'int', 1); // Набор данных для разбивки на страницы $data = \parserCompetitors::find(array("project_id = {$this->session->get('project-id')}")); $sections = \parserSections::find(array("project_id = {$this->session->get('project-id')}")); // Создаём пагинатор, отображаются 10 элементов на странице, начиная с текущей - $currentPage // Получение результатов работы ппагинатора $this->view->setVars([ 'data' => $data, 'sections' => $sections ]); } function competitorsAddAction(){ if( $this->request->isPost() ) { $data['project_id'] = $this->session->get('project-id'); $data['name'] = $this->request->getPost('name', 'string', NULL ); $data['url'] = $this->request->getPost('url', 'string', NULL ); $data['price_regexr'] = $this->request->getPost('price_regexr'); $data['h1_regexr'] = $this->request->getPost('h1_regexr'); $data['exist_regexr'] = $this->request->getPost('exist_regexr'); $data['section'] = $this->request->getPost('section'); $data['email'] = $this->request->getPost('email'); if($data['section']){ $data['sections_id'] = implode(',',$data['section'] ); } $model = new \parserCompetitors(); if( !empty( $data['name'] ) && !empty( $data['url'])) { if( $model->save( $data ) ) { $this->flash->success( 'Сохранение прошло успешно' ); return $this->response->redirect([ 'for' => 'price_parser_competitors' ]); } else { $this->flash->error( 'Произошла ошибка во время добавления.' ); } } } $sections = \parserSections::find(array("project_id = {$this->session->get('project-id')}")); $this->view->setVars([ 'sections' => $sections ]); } function competitorsUpdateAction($id){ $model = \parserCompetitors::findFirst("id = '$id' AND project_id = {$this->session->get('project-id')}"); if( $this->request->isPost() ) { $data['project_id'] = $this->session->get('project-id'); $data['name'] = $this->request->getPost('name', 'string', NULL ); $data['url'] = $this->request->getPost('url', 'string', NULL ); $data['price_regexr'] = $this->request->getPost('price_regexr' ); $data['h1_regexr'] = $this->request->getPost('h1_regexr'); $data['exist_regexr'] = $this->request->getPost('exist_regexr'); $data['section'] = $this->request->getPost('section'); $data['email'] = $this->request->getPost('email'); if($data['section']){ $data['sections_id'] = implode(',',$data['section'] ); } if( !empty( $data['name'] ) && !empty( $data['url'])) { if( $model->save( $data ) ) { $this->flash->success( 'Сохранение прошло успешно' ); return $this->response->redirect([ 'for' => 'price_parser_competitors' ]); } else { $this->flash->error( 'Произошла ошибка во время добавления.' ); } } } $sections_model = new \parserSections(); $sections = \parserSections::find(array("project_id = {$this->session->get('project-id')}")); $this->view->pick( 'price_parser/competitorsAdd' ); $this->view->setVars([ 'page' => $model, 'sections' => $sections, 'sections_model' => $sections_model ]); } function competitorsDeleteAction($id){ $model = \parserCompetitors::query() ->where("id = $id") ->andWhere("project_id = {$this->session->get('project-id')}") ->execute(); if($model->toArray()){ $model->delete(); $this->flash->error( 'Данные успешно удалены' ); return $this->response->redirect([ 'for' => 'price_parser_competitors' ]); } else { $this->flash->error( 'Произошла ошибка при попытке удаления' ); return $this->response->redirect([ 'for' => 'price_parser_competitors' ]); } } function updateParserAction() { $data = $this->request->getPost('data'); $id = $this->request->getPost('id'); $data = json_decode($data); $model = \parserCompetitorsItems::findFirst(array("id = '$id'")); foreach(get_object_vars($data) as $key=>$value) { $array[$key] = $value; } $model->save($array); } public function sortAction() { $section = ''; $competitor = ''; $order = $this->request->getPost('data', 'string', NULL ); if($this->session->get('section')){ $section = $this->session->get('section'); } if($this->session->get('competitors')){ $competitor = $this->session->get('competitor'); } $model_sections = \parserSections::query() ->where("project_id = {$this->session->get('project-id')}") ->execute()->toArray(); if(!$section) { $sections_id = implode("','",$this->common->array_column( $model_sections, 'id' )); $active_sections = ''; } else { $sections_id =implode("','",$section); $active_sections = $section; } $model_items = \parserItems::query() ->where(!empty($sections_id) ? "section_id IN ('$sections_id')" : '1=1') ->order(!empty($order) ? $order : "price") ->execute()->toArray(); $items_id = implode("','",$this->common->array_column( $model_items, 'id' )); $model_competitors_items = \parserCompetitorsItems::query() ->where(!empty($items_id) ? "item_id IN ('$items_id')" : '1=1') ->andWhere("status = 1") ->execute()->toArray(); if(!$competitor) { $competitors_id = implode("','",array_unique($this->common->array_column( $model_competitors_items, 'competitor_id' ))); $active_competitors = ''; } else { $competitors_id =implode("','",$competitor); $active_competitors = $competitor; } $model_competitors = \parserCompetitors::query() ->where(!empty($competitors_id) ? "id IN ('$competitors_id')" : '1=1') ->execute()->toArray(); $this->view->disableLevel(\Phalcon\Mvc\View::LEVEL_MAIN_LAYOUT); $this->view->setVars([ 'active_sections' => $active_sections, 'active_competitors' => $active_competitors, 'model_sections' => $model_sections, 'model_items' => $model_items, 'model_competitors_items' => $model_competitors_items, 'model_competitors' => $model_competitors, 'controller' => $this ]); } function test($uip, $cip){ if(!$cip || !$uip ){ return 'ffffff'; } if($uip > $cip){ $proc = ($uip - $cip)/$cip *100; if($proc < 10 ){ return 'rgb(237, 203, 202)'; } if($proc < 25 ){ return 'rgb(215, 95, 89)'; } if($proc < 50 ){ return 'rgb(222, 50, 42)'; } if($proc < 100 ){ return 'rgb(255, 12, 0)'; } if($proc >= 100 ){ return 'rgb(255, 12, 0)'; } } else { $proc = ($cip - $uip)/$uip *100; if($proc < 10 ){ return 'rgb(0, 0, 0)'; } if($proc < 25 ){ return 'rgb(207, 255, 199)'; } if($proc < 50 ){ return 'rgb(116, 205, 101)'; } if($proc < 100 ){ return 'rgb(55, 147, 40)'; } if($proc >= 100 ){ return 'rgb(55, 147, 40)'; } } } function approveLinkAction($id) { $model = \parserCompetitorsItems::findFirst("id = '$id'"); $model->link_status = 'ok'; $model->save(); } function deleteLinkAction($id) { $model = \parserCompetitorsItems::findFirst("id = '$id'"); $model->status = 0; $model->h1 = 'Товар не найден'; $model->price = ''; $model->link_status = 'delete'; $model->save(); return $this->response->redirect([ 'for' => 'price_parser_competitors' ]); } function updateLinkAction() { $this->view->setTemplateAfter('none'); $this->view->disableLevel(\Phalcon\Mvc\View::LEVEL_MAIN_LAYOUT); $data['new_link'] = $this->request->get('new_link', 'string', NULL ); $id = $this->request->get('id'); $model = \parserCompetitorsItems::findFirst("id = '$id'"); $modelComp = \parserCompetitors::findFirst("id = '$model->competitor_id'"); $parser_data_arr = $this->a_parser->parseExistLink(array( 'link' => $data['new_link'], 'google_link' => $model->google_link), $modelComp->h1_regexr, $modelComp->price_regexr, $modelComp->exist_regexr); $model->price = $parser_data_arr['price']; $model->h1 = $parser_data_arr['h1']; $model->exist = $parser_data_arr['exist']; $model->item_url = $data['new_link']; $model->status = 1; $model->link_status = 'ok'; $model->save(); echo json_encode($parser_data_arr ); } function sectionsChooseAction() { $this->view->disableLevel(\Phalcon\Mvc\View::LEVEL_MAIN_LAYOUT); $name = $this->request->getQuery('term'); $model = new \parserSections(); $modelsManager = $this->modelsManager; $projectId = $this->session->get('project-id'); $result = $model->getDistinct("section_name",$name,$modelsManager, $projectId); echo json_encode( array_reduce( $result, function($return, $elem) { $return[] = array( "label" => $elem['section_name'], "value" => $elem['id'] ); return $return; } ) ); } function competitorsChooseAction() { $this->view->disableLevel(\Phalcon\Mvc\View::LEVEL_MAIN_LAYOUT); $name = $this->request->getQuery('term'); $model = new \parserCompetitors(); $modelsManager = $this->modelsManager; $projectId = $this->session->get('project-id'); $result = $model->getDistinct("name",$name,$modelsManager, $projectId); echo json_encode( array_reduce( $result, function($return, $elem) { $return[] = array( "label" => $elem['name'], "value" => $elem['id'] ); return $return; } ) ); } function selectAllRowsAction(){ $this->view->disableLevel(\Phalcon\Mvc\View::LEVEL_MAIN_LAYOUT); $model = $this->request->getQuery('model'); switch ($model) { case 'sections': $model = \parserSections::query() ->where("project_id = {$this->session->get('project-id')}") ->execute()->toArray(); break; case 'competitors': $model = \parserCompetitors::query() ->where("project_id = {$this->session->get('project-id')}") ->execute()->toArray(); break; } die(json_encode($model)); } function forIframeAction($id){ $this->view->setTemplateAfter('none'); $this->view->disableLevel(\Phalcon\Mvc\View::LEVEL_MAIN_LAYOUT); $section = ''; $competitor = ''; $projectData = \projects::findFirst("key_name = '$id'")->toArray(); $this->session->set('project-id', $projectData['id']); /*$salt1 = "qm&h*"; $salt2 = "pg!@"; $token = md5("$salt1$id$salt2"); die($token);*/ $model_sections = \parserSections::query() ->where("project_id = {$this->session->get('project-id')}") ->execute()->toArray(); foreach($model_sections as $k => $v){ $model_section[$v['id']] = $v; } $sections_id = implode("','",$this->common->array_column( $model_sections, 'id' )); $model_items = \parserItems::query() ->where("section_id IN ('$sections_id')") ->execute()->toArray(); $items_id = implode("','", $this->common->array_column($model_items, 'id')); $model_competitors = \parserCompetitors::query() ->where("project_id = {$this->session->get('project-id')}") ->execute()->toArray(); foreach ($model_competitors as $competitors) { $model_competitors_items = \parserCompetitorsItems::find("item_id IN ('$items_id') AND competitor_id = {$competitors['id']} AND status = 1 AND link_status = 'ok' AND exist = ''")->toArray(); if ($model_competitors_items) { foreach ($model_competitors_items as $item_data) { $competitor_item[$competitors['id']][$item_data['item_id']] = $item_data; } } } $model_competitors = \parserCompetitors::query() ->where(!empty($competitors_id) ? "id IN ('$competitors_id')" : '1=1') ->execute()->toArray(); $this->view->setVars([ 'model_sections' => $model_section, 'model_items' => $model_items, 'model_competitors_items' => $model_competitors_items, 'model_competitors' => $model_competitors, 'controller' => $this, 'competitor_item' => $competitor_item ]); } function addBrandManagersAction() { $this->view->disableLevel(\Phalcon\Mvc\View::LEVEL_MAIN_LAYOUT); $data['new_link'] = $this->request->get('new_link'); $data['new_link'] = json_decode($data['new_link']); $data['id'] = $this->request->get('id' ); foreach($data['new_link'] as $email) { $model = new \brandManagers(); $model->email = $email; $model->brand_id = $data['id']; $model->project_id = $this->session->get('project-id'); $model->save(); $id = $model->id; } die($id); } function deleteBrandManagersAction() { $id = $this->request->get('id'); $model = \brandManagers::findFirst("id = '$id'"); $model->delete(); } function sendEmailReportAction(){ $id = $this->request->get('id'); $rowData = json_decode($this->request->get('rowData')); $managers = \brandManagers::find(); $data = $this->prepareEmailData($rowData, $managers); foreach($data as $one){ $this->view->disableLevel(\Phalcon\Mvc\View::LEVEL_MAIN_LAYOUT); $filename = ROOT_PATH."app/frontend/views/price_parser/forEmail.php"; $model = \parserCompetitors::findFirst("id = '$id'"); ob_start(); require( $filename); $text = ob_get_contents(); ob_get_clean(); $this->sendData('test@test.ua', $text, $model, $one); } } function prepareEmailData($rowData, $managers){ $send_sector = array('rgb(237, 203, 202)', 'rgb(215, 95, 89)', 'rgb(222, 50, 42)', 'rgb(255, 12, 0)', 'rgb(255, 12, 0)' ); $result = array(); foreach($rowData as $row){ if(in_array($row->sector_color, $send_sector) ){ if(!in_array($row->section_id, $result)) { $result[$row->section_id]['id'] = $row->section_id; foreach($managers as $manager){ if($manager->brand_id == $row->section_id) { $result[$row->section_id]['email'][] = $manager->email; } } } $result[$row->section_id]['items'][] = $row->item_id; } } return $result; } function sendData($email, $text,$model, $one) { require_once ROOT_PATH."lib/PHPMailer_5.2.4/class.phpmailer.php"; $mail = new \PHPMailer; $mail->IsSMTP(); $mail->CharSet = 'UTF-8'; $mail->Username = "seodevartweb@gmail.com"; $mail->Password = "respublika2014"; $mail->SetFrom($email, 'ArtWeb'); $mail->Subject = '[AtrWeb]'.$email; $mail->MsgHTML($text); $address = "dockdep@gmail.com"; $mail->AddAddress($address); foreach($one['email'] as $email){ $mail->AddAddress($email); } $mail->Send(); } }