public function refreshTableData() { $refreshedCount = 0; $catInfo = $this->getItems(array("DetailLevel" => "ReturnAll")); $existCategoriesList = array(); $res = CategoryTable::getList(array("select" => array("ID", "CATEGORY_ID"))); while ($category = $res->fetch()) { $existCategoriesList[$category["CATEGORY_ID"]] = $category["ID"]; } if (isset($catInfo["CategoryArray"]["Category"])) { $categories = Xml2Array::normalize($catInfo["CategoryArray"]["Category"]); foreach ($categories as $category) { $fields = array("CATEGORY_ID" => $category["CategoryID"], "LEVEL" => $category["CategoryLevel"], "NAME" => $category["CategoryName"], "PARENT_ID" => $category["CategoryParentID"]); if (array_key_exists($category["CategoryID"], $existCategoriesList)) { $result = CategoryTable::update($existCategoriesList[$category["CategoryID"]], $fields); } else { $result = CategoryTable::add($fields); } if ($result > 0) { $refreshedCount++; } } } return $refreshedCount; }