/fmake/modules/projects/seo/report.php

https://github.com/fmake/adv · PHP · 197 lines · 126 code · 20 blank · 51 comment · 15 complexity · 1d3561fabdc8b4bf43abcfcf11492706 MD5 · raw file

  1. <?php
  2. /**
  3. *
  4. * статусы отчета
  5. */
  6. define("REPORT_CREATE",1);
  7. define("REPORT_START",2);
  8. define("REPORT_LINK",10);
  9. define("REPORT_ANCHORS",20);
  10. define("REPORT_ADDQUERY",30);
  11. define("REPORT_CHECKQUERY",40);
  12. define("REPORT_ADDSITE",50);
  13. define("REPORT_DONE",100);
  14. /**
  15. *
  16. * отчеты для оптимизаторов
  17. */
  18. class projects_seo_report extends fmakeCore{
  19. public $table = "projects_seo_report";
  20. public $idField = "id_project_seo_report";
  21. public $order = "date";
  22. /**
  23. * Создать отчет для проекта
  24. */
  25. function createReport($id_project){
  26. $this -> addParam("id_project", $id_project);
  27. $this -> addParam("date", time());
  28. $this -> addParam("status", REPORT_CREATE);
  29. $this -> newItem();
  30. return $this -> id;
  31. }
  32. /**
  33. * Создать отчет для проекта
  34. */
  35. function getReport($id_project,$status){
  36. $where[] = "id_project = '{$id_project}'";
  37. $where[] = "status = '{$status}'";
  38. return $this -> getWhere($where);
  39. }
  40. /**
  41. * Получить все отчеты кроме данного
  42. */
  43. function getForeignReport($id_project, $status){
  44. $where[] = "id_project = '{$id_project}'";
  45. $where[] = "status != '{$status}'";
  46. return $this -> getWhere($where);
  47. }
  48. /**
  49. *
  50. * Получить сгруппированные данные тиц
  51. */
  52. function getCyData($id_project_seo_report){
  53. $reportLinks = new projects_seo_reportLinks();
  54. return $reportLinks -> getCyData($id_project_seo_report);
  55. }
  56. /**
  57. *
  58. * Получить сгруппированные данные тиц
  59. */
  60. function getPrData($id_project_seo_report){
  61. $reportLinks = new projects_seo_reportLinks();
  62. return $reportLinks -> getPrData($id_project_seo_report);
  63. }
  64. /**
  65. * Выполнение отчета
  66. */
  67. function makeReport($id_project_seo_report){
  68. $this -> setId($id_project_seo_report);
  69. $report = ($this -> getInfo());
  70. $projects = new projects($report['id_project']);
  71. $sapeProject = new sape_project();
  72. $reportLinks = new projects_seo_reportLinks();
  73. $project = ( $projects -> getProjectWithSeoParams() );
  74. $projectUrl = new projects_seo_url();
  75. $projectAnchors = new projects_seo_reportAnchors();
  76. $projectQuery = new projects_seo_query();
  77. $projectReportQuery = new projects_seo_reportQuerys();
  78. $wordstat = new yandex_wordstat();
  79. $yandex = new searchSystems_Yandex();
  80. if($report['status'] == REPORT_CREATE){
  81. $this -> addParam("status", REPORT_START);
  82. $this -> update();
  83. }
  84. /**
  85. * получаем ссылки
  86. */
  87. if($report['status'] < REPORT_LINK){
  88. $links = ($sapeProject -> getProjectsLinks($project['id_sape_project']));
  89. $sizeLinks = sizeof($links);
  90. //printAr($links);
  91. for ($i = 0; $i < $sizeLinks; $i++) {
  92. //printAr($links[$i]);
  93. $reportLinks -> addParam("id_project_seo_report",$id_project_seo_report);
  94. $reportLinks -> addParam("id_link",$links[$i]['id']);
  95. $reportLinks -> addParam("cy",$links[$i]['site_cy']);
  96. $reportLinks -> addParam("pr",$links[$i]['page_pr']);
  97. $reportLinks -> addParam("link", mysql_real_escape_string( $links[$i]['site_url'].$links[$i]['page_uri'] ) );
  98. preg_match_all("/#a#(.+)#\/a#/iU", $links[$i]['txt'], $anchor);
  99. $reportLinks -> addParam("anchor",mysql_real_escape_string($anchor[1][0]));
  100. $reportLinks -> addParam("txt",$links[$i]['txt']);
  101. $reportLinks -> addParam("page_level",$links[$i]['page_level']);
  102. $reportLinks -> newItem();
  103. }
  104. $this -> addParam("status", REPORT_LINK);
  105. $this -> update();
  106. }
  107. /**
  108. *
  109. * формирование приведенного анкор файла
  110. */
  111. if($report['status'] < REPORT_ANCHORS){
  112. $links = $reportLinks -> getLinks($id_project_seo_report);
  113. $sizeLinks = sizeof($links);
  114. //printAr($links);
  115. for ($i = 0; $i < $sizeLinks; $i++) {
  116. $arr = ( explode(" ", $links[$i]['anchor'] ) );
  117. for ($j = 0; $j < sizeof($arr); $j++) {
  118. $projectAnchors -> addWord($id_project_seo_report,$arr[$j]);
  119. }
  120. }
  121. $this -> addParam("status", REPORT_ANCHORS);
  122. $this -> update();
  123. }
  124. /**
  125. *
  126. * добавление запросов
  127. */
  128. if($report['status'] < REPORT_ADDQUERY){
  129. $urls = ( $projectUrl -> getUrlProject($report['id_project']) );
  130. $sizeUrl = sizeof($urls);
  131. for ($i = 0; $i < $sizeUrl; $i++) {
  132. $query = ( $projectQuery -> getQueryByUrl($report['id_project'], $urls[$i][$projectUrl -> idField]) );
  133. for ($j = 0; $j < sizeof($query); $j++) {
  134. //$query[$j][];
  135. $projectReportQuery -> addParam("id_project_seo_report",$id_project_seo_report);
  136. $projectReportQuery -> addParam("id_project_url",$query[$j]['id_project_url']);
  137. $projectReportQuery -> addParam("id_seo_query",$query[$j]['id_seo_query']);
  138. $projectReportQuery -> newItem();
  139. }
  140. }
  141. $this -> addParam("status", REPORT_ANCHORS);
  142. $this -> update();
  143. }
  144. /**
  145. *
  146. * проверка запросов
  147. */
  148. if($report['status'] < REPORT_CHECKQUERY){
  149. $query = ( $projectReportQuery -> getNonCheckQuery($id_project_seo_report) );
  150. for ($i = 0; $i < sizeof($query); $i++) {
  151. $projectReportQuery -> addParam("id_project_seo_report",$id_project_seo_report);
  152. $projectReportQuery -> addParam("id_seo_query",$query[$i]['id_seo_query']);
  153. $projectReportQuery -> addParam("wordstat",$wordstat -> getWordTotalCount($query[$i]['query']));
  154. $projectReportQuery -> addParam("check","1");
  155. $projectReportQuery -> update();
  156. }
  157. $this -> addParam("status", REPORT_CHECKQUERY);
  158. $this -> update();
  159. }
  160. /**
  161. *
  162. * Выбор конкурентов по запросам запросов
  163. */
  164. if($report['status'] < REPORT_ADDSITE){
  165. $urls = ( $projectUrl -> getUrlProject($report['id_project']) );
  166. $sizeUrl = sizeof($urls);
  167. for ($i = 0; $i < $sizeUrl; $i++) {
  168. $query = ( $projectReportQuery -> getPollQuery($id_project_seo_report, $urls[$i][$projectUrl -> idField]) );
  169. $projectQuery -> setId($query[0]['id_seo_query']);
  170. $query = ($projectQuery -> getInfo() );
  171. $yandex -> setData($query['query'], '');
  172. printAr($yandex->getNumSite(10));
  173. exit;
  174. }
  175. }
  176. }
  177. }