function getExpr(&$rubrics) { $expr = ""; if (!StrUtils::isEmpty($_REQUEST["rubricsIds"])) { $rubs = explode(",", $_REQUEST["rubricsIds"]); $tmpRubrics = array(); foreach ($rubs as $r) { $tmpRubrics = array_merge($tmpRubrics, $rubrics->getNoParentRubrics(trim($r))); } if (sizeof($tmpRubrics) == 0) { return new PEAR_Error("Empty subrubrics id for rubric"); } $expr .= " AND rubrics.id IN (" . implode(", ", $tmpRubrics) . ") \n"; } if (isset($_REQUEST["useParams"]) && $_REQUEST["useParams"] == "1") { if (isset($_REQUEST["status"])) { if (!in_array("all", $_REQUEST["status"]) && sizeof($_REQUEST["status"]) > 0) { $expr .= " AND (status LIKE '" . implode("' OR status LIKE '", $_REQUEST["status"]) . "') "; } } if (!StrUtils::isEmpty($_REQUEST["begdate"]) && trim($_REQUEST["begdate"]) !== "дд/мм/гггг" && !StrUtils::isEmpty($_REQUEST["enddate"]) && trim($_REQUEST["enddate"]) !== "дд/мм/гггг") { $begdate = split("/", $_REQUEST["begdate"]); $begdate = $begdate[2] . "-" . $begdate[1] . "-" . $begdate[0]; $enddate = split("/", $_REQUEST["enddate"]); $enddate = $enddate[2] . "-" . $enddate[1] . "-" . $enddate[0]; $expr .= " AND (lastdate >= '" . $begdate . "' AND lastdate <= '" . $enddate . "') \n"; } if (!StrUtils::isEmpty($_REQUEST["city"]) && trim($_REQUEST["city"]) !== "город") { $expr .= " AND address LIKE '%" . trim($_REQUEST["city"]) . "%' \n"; } if (!StrUtils::isEmpty($_REQUEST["keyword"]) && trim($_REQUEST["keyword"]) !== "ключевое слово") { $val = trim($_REQUEST["keyword"]); $expr .= " AND (address LIKE '%{$val}%' OR phone LIKE '%{$val}%'\n\t\t\t\tOR site LIKE '%{$val}%' OR items.name LIKE '%{$val}%'\n\t\t\t\tOR emailtext LIKE '%{$val}%' OR fax LIKE '%{$val}%') "; } } if (isset($_REQUEST["region"]) && (int) $_REQUEST["region"] > 0) { $expr .= " AND street_id IN (\n\t\t\tSELECT id FROM streets WHERE region_id = " . $_REQUEST["region"] . ") "; } $expr .= " AND level = 2 "; if (!StrUtils::isEmpty($_REQUEST["listType"]) && strcmp($_REQUEST["listType"], "uniques") == 0) { $expr .= " GROUP BY items.address, items.name "; } $expr .= " ORDER BY rubrics.id "; return $expr; }
function parseItems() { $items = array(); $pagesNum = 0; $sitesNum = 0; $pattern = <<<PATTERN {<div class="refblock">(.+?)</div>}s PATTERN; $pattern = preg_replace("{\\s+}", "\\s*", $pattern); if (!preg_match($pattern, $this->pageContent, $matches)) { return new PEAR_Error("Items not found"); } $pattern = "{<b>(.+?)</b>.+?<b>(.+?)</b>}si"; if (preg_match($pattern, $matches[1], $m)) { $pagesNum = (int) StrUtils::cleanString($m[1], true); $sitesNum = (int) StrUtils::cleanString($m[2], true); } $items[] = array("pages" => $pagesNum, "sites" => $sitesNum, "url" => $this->url); return $items; }
function getSiteRubrics2($url, $parentId = 0, $parserId = 0) { $logger =& Log::singleton("file", "results.log", __FUNCTION__); $contents = $this->loadPage($url); $pattern = '{ <div class="blocklist"> <a href="http://navigator.yp.ru/rusn/.+? </div> }si'; $pattern = preg_replace("{\\s+}", "\\s*", $pattern); if (!preg_match($pattern, $contents, $matches)) { $logger->log("Rubrics2 for {$url} not found."); return new PEAR_Error("Rubrics2 for {$url} not found."); } $pattern = '{ <a href="(http://navigator.yp.ru/rusn/[^"]+)"> (.+?) </a> }si'; $pattern = preg_replace("{\\s+}", "\\s*", $pattern); if (preg_match_all($pattern, $matches[0], $matches, PREG_SET_ORDER)) { $res = array(); foreach ($matches as $m) { $url = StrUtils::cleanString($m[1]); $id = $this->rubricsData->addRubric($url, StrUtils::cleanString($m[2]), -1, $parserId, true, $parentId, 2); if (!PEAR::isError($id)) { $res[] = array("id" => $id, "url" => $url); } } $logger->log(print_r($res, true)); return $res; } else { $logger->log("Rubrics2 for {$url} not found."); return new PEAR_Error("Rubrics2 for {$url} not found."); } }
function HandleShowProcesses() { session_start(); require_once "Pager.php"; require_once "RubricsData.php"; require_once "StrUtils.php"; $procNum = -1; if (!StrUtils::isEmpty($_REQUEST["procType"]) && $_REQUEST["procType"] == "all") { $_GLOBAL["procType"]["all"] = "selected"; $_SESSION["procType"] = "all"; $procNum = -1; } else { if (!StrUtils::isEmpty($_REQUEST["procType"]) && $_REQUEST["procType"] == "usual") { $_GLOBAL["procType"]["usual"] = "selected"; $_SESSION["procType"] = "usual"; $procNum = 0; } else { if (!StrUtils::isEmpty($_REQUEST["procType"]) && $_REQUEST["procType"] == "test") { $_GLOBAL["procType"]["test"] = "selected"; $_SESSION["procType"] = "test"; $procNum = 1; } else { if (!StrUtils::isEmpty($_REQUEST["procType"]) && $_REQUEST["procType"] == "spec") { $_GLOBAL["procType"]["spec"] = "selected"; $_SESSION["procType"] = "spec"; $procNum = 2; } else { if ($_SESSION["procType"] == "all") { $_GLOBAL["procType"]["all"] = "selected"; $procNum = -1; } else { if ($_SESSION["procType"] == "usual") { $_GLOBAL["procType"]["usual"] = "selected"; $procNum = 0; } else { if ($_SESSION["procType"] == "test") { $_GLOBAL["procType"]["test"] = "selected"; $procNum = 1; } else { if ($_SESSION["procType"] == "spec") { $_GLOBAL["procType"]["spec"] = "selected"; $procNum = 2; } } } } } } } } if (isset($_REQUEST["bSelProcType"])) { $_REQUEST["pageID"] = 0; } header("Content-type: text/html; charset=windows-1251"); print " "; $header = array("Дата", "Время начала", "Время окончания", "Название процесса", "Cтатус", "Очередь"); $rubricsData = new RubricsData(); $data = array(); $navContent = getPagesHtml($rubricsData, $data, $procNum); print <<<HTML <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd"> <html><head><title>Журнал текущего состояния</title> <meta http-equiv="content-type" content="text/html; charset=windows-1251"> <meta name="description" content=""> <meta name="keywords" content=""> <link type="text/css" rel="stylesheet" href="styles/style.css"> <script src="scripts/jquery.js"></script> </head> <body><div id="container" class="stats"><div id="page"> <div id="content"><div id="header"> <a href="./categs.html">Категории</a> | <a href="./tasks.html"><b>Журнал обновлений</b></a> | <a href="./stat.html">Статистика скачиваний</a></div> <div id="main_content"> <h1>Журнал обновлений</h1> <strong style="font-size: 11px;">Обновление статистики производится ежедневно после 06.00, 12.00, 16.00, 20.00, 00.00 часов.</strong> <p> </p> <form id="selProc" name="selProc" action="" method="POST"> <input type="hidden" name="action" value="ShowProcesses"> <select name="procType" style="width: 150pt;"> <option value="all" {$_GLOBAL['procType']['all']}>Все</option> <option value="usual" {$_GLOBAL['procType']['usual']}>Обычная очередь</option> <option value="test" {$_GLOBAL['procType']['test']}>Тестовая очередь</option> <option value="spec" {$_GLOBAL['procType']['spec']}>Специальная очередь</option> </select> <input name="bSelProcType" type="submit" value="Выбрать"> </form> <br><br><br> <p> {$navContent} <p> <br> <table border=0 cellspacing=1 cellpadding=3> HTML; print "<thead><tr><th>" . implode("<th>", $header) . "</tr></thead>\n"; $empty = " "; $even = true; if ($procNum >= 0) { $expr = " AND processes.rprocess_num = {$procNum} "; } else { $expr = ""; } $ids = ""; if (sizeof($data) > 0) { foreach ($data as $r) { $ids .= $r[0] . ","; } $ids = substr($ids, 0, -1); $res =& $rubricsData->getProcesses(" WHERE processes.id IN ({$ids}) {$expr}", true); if (PEAR::isError($res)) { print $res->getMessage() . "<br>"; print $res->getuserInfo() . "<br>"; exit; } foreach ($res as $row) { //while ($row = &$res->fetchRow(DB_FETCHMODE_ASSOC)) { $row["name"] = $rubricsData->getPath($row["rubric_id"]) . " / " . $row["name"]; unset($row["rubric_id"]); $row["adddate"] = date("d.m.Y H:i", strtotime($row["adddate"])); $row["startdate"] = $row["startdate"] == 0 ? $empty : date("d.m.Y H:i", strtotime($row["startdate"])); $row["enddate"] = $row["enddate"] == 0 ? $empty : date("d.m.Y H:i", strtotime($row["enddate"])); if ($row["loaded"] == 0 && $row["startdate"] === $empty) { $row["loaded"] = "Поставлено в очередь"; } else { $row["loaded"] = $row["loaded"] == 1 ? "Обновлено" : "Идет обновление"; } if ($row["rprocess_num"] == 0) { $row["rprocess_num"] = "Основная"; } else { if ($row["rprocess_num"] == 1) { $row["rprocess_num"] = "Тестовая"; } else { if ($row["rprocess_num"] == 2) { $row["rprocess_num"] = "Специальная"; } } } if ($even) { $evenClass = ' class="even" '; } else { $evenClass = ''; } $even = !$even; print "<tr {$evenClass}><th>" . implode("<th>", $row) . "</tr>\n"; } } print <<<HTML </table> <br> <p> {$navContent} <p> </div> </div></div></div><div id="footer"></div> </body></html> HTML; }
function findUrl($url, $link) { $filtered = ""; $link = strtolower(UrlUtils::removeWWW(str_replace("http://", "", $link))); $contents = $this->loadPage($url); $pattern = "{<a[^>]+?(href=\".+?\"|href='.+?'|href=.+?\\s)[^>]*>(.+?)</a>}si"; if (!preg_match_all($pattern, $contents, $matches, PREG_SET_ORDER)) { return $filtered; } foreach ($matches as $match) { $src = strtolower(StrUtils::removeQuotes(substr($match[1], 5))); $src = parse_url($src); $src = UrlUtils::removeWWW($src["host"]); if (strcmp($src, $link) == 0) { $filtered = StrUtils::cleanString($match[2]); break; } else { if (strpos($src, $link) !== false) { $filtered = StrUtils::cleanString($match[2]); } } } return $filtered; }
function HandleStoreItemChanges() { header("Location: ItemInfo.php"); require_once "StrUtils.php"; define("CMD_COPY_ITEM", <<<SQL \t\tINSERT INTO our_items ( \t\t\titem_id, art, url, name, price, descr, image_large, \t\t\timage_small, size, material, drawing, minnum, \t\t\tcolors, brandname, country, descr_other) \t\tSELECT id AS item_id, art, url, name, price, descr, image_large, \t\t\timage_small, size, material, drawing, minnum, \t\t\tcolors, brandname, country, descr_other \t\t\tFROM items WHERE items.id = ? SQL ); define("CMD_SET_STAT", <<<SQL \t\tUPDATE items SET status = ? WHERE id = ? SQL ); global $db; if (strcmp($_REQUEST["infoType"], "item") == 0) { require_once "../parsers/ContentGrabber.php"; $parser =& new ContentGrabber(); // Получить поля для обновления $fields = array(); $fieldsNames = array_intersect(array_keys($parser->getAllFields()), array_keys($_REQUEST)); foreach ($fieldsNames as $field) { $fields[$field] = StrUtils::removeMagicQuotes($_REQUEST[$field]); } $fields["viewmode"] = isset($_REQUEST["viewmode"]) ? 1 : 0; if (sizeof($fields) > 0) { if ($_REQUEST["newItem"]) { $sql = getUpdateSQL("our_items", $fields, "id = " . $_REQUEST["itemId"]); $res =& $db->query($sql, array_values($fields)); if (PEAR::isError($res)) { $_SESSION["statusMsg"] = "Ошибка при сохранении данных"; exit; } } else { // Получить id измененых данных $idChanged =& $db->getOne(CMD_SEL_CHANGED_ID, array($_REQUEST["itemId"])); if (PEAR::isError($idChanged)) { $_SESSION["statusMsg"] = "Ошибка при сохранении данных"; exit; } // Есть изменения if (isset($idChanged)) { // Обновить изменения $sql = getUpdateSQL("our_items", $fields, "id = " . $idChanged); } else { // Добавить изменения // Cкопировать данные из items $res =& $db->query(CMD_COPY_ITEM, $_REQUEST["itemId"]); if (PEAR::isError($res)) { $_SESSION["statusMsg"] = "Ошибка при сохранении данных"; exit; } $idChanged =& $db->getOne(CMD_SEL_CHANGED_ID, array($_REQUEST["itemId"])); if (PEAR::isError($idChanged) || !isset($idChanged)) { $_SESSION["statusMsg"] = "Ошибка при сохранении данных"; exit; } $sql = getUpdateSQL("our_items", $fields, "id = " . $idChanged); } $res =& $db->query($sql, array_values($fields)); if (PEAR::isError($res)) { $_SESSION["statusMsg"] = "Ошибка при сохранении данных"; exit; } // Установить флаг изменения записи $res =& $db->query("UPDATE items SET existence = 'changed' WHERE id = ?", array($_REQUEST["itemId"])); } } } else { if (strcmp($_REQUEST["infoType"], "ourcategory") == 0) { $fields = array(); if (isset($_REQUEST["descr"])) { $fields["descr"] = $_REQUEST["descr"]; } if (isset($_REQUEST["dirname"])) { $fields["dirname"] = $_REQUEST["dirname"]; } $fields["viewmode"] = isset($_REQUEST["viewmode"]) ? 1 : 0; $fields["colorsheme"] = isset($_REQUEST["colorsheme"]) ? 1 : 0; $sql = getUpdateSQL("our_categories", $fields, "id = " . $_REQUEST["itemId"]); $res =& $db->query($sql, array_values($fields)); if (PEAR::isError($res)) { $_SESSION["statusMsg"] = "Ошибка при сохранении данных"; exit; } } } $_SESSION["statusMsg"] = "Изменения сохранены"; }