function getRubrics($str)
 {
     $res = array();
     $logger =& Log::singleton("null", "results.log", "getRubrics");
     $pattern = "{<a[^>]+href=\"(.+?)\"[^>]*>(.+?)</a>}si";
     if (preg_match_all($pattern, $str, $matches, PREG_SET_ORDER)) {
         $res = array();
         foreach ($matches as $m) {
             $res[] = array("url" => UrlUtils::removeQuery(UrlUtils::getRealUrl($this->url, $m[1])), "name" => StrUtils::cleanString($m[2]));
         }
     }
     $logger->log(StrUtils::hasEmpty($res) ? "Has empty" : "OK");
     $logger->log(print_r($res, true));
     return $res;
 }
 function setStatus($item)
 {
     $data = $item;
     unset($data["rubrics"]);
     $logger =& Log::singleton("null", "results.log", "setStatus");
     $id = $this->rubricsData->getItemId($data["name"], $data["address"]);
     if ($this->rubricsData->isDataChanged($id, $data)) {
         $stat = "changed";
         $this->rubricsData->sumNewItemsNum($this->id, 1);
     } else {
         $stat = "notchanged";
         $this->rubricsData->sumNewItemsNum($this->id, -1);
     }
     $data = array($data["name"], $data["address"], $data["phone"], $data["email"]);
     if (StrUtils::hasEmpty($data)) {
         $stat .= ",notfull";
     }
     $logger->log("Set status for {$id}: {$stat}");
     $this->rubricsData->setStatus($id, $stat);
     $this->rubricsData->addAddressLink($this->checkMoscow($item["address"]));
 }