コード例 #1
0
		public function import_feed($url, $type_id, $target, $source = false) {
			$typeObj = umiObjectsCollection::getInstance()->getObject($type_id);
			$typeName = $typeObj->getName();

			$feed = new RSSFeed($url);

			$feed->loadContent();

			switch($typeName) {
				case "RSS": {
					$feed->loadRSS();
					break;
				}

				case "ATOM": {
					$feed->loadAtom();
					break;
				}

				default: {
					return false;
				}
			}

			$relations = umiImportRelations::getInstance();

			$source_id = $relations->getSourceId($url);
			if($source_id === false) {
				$source_id = $relations->addNewSource($url);
			}

			$hierarchy_type = umiHierarchyTypesCollection::getInstance()->getTypeByName("news", "item");
			$hierarchy_type_id = $hierarchy_type->getId();

			$result = $feed->returnItems();

			foreach($result as $item) {
				$item_title = $item->getTitle();
				$item_url = $item->getUrl();

				if($relations->getNewIdRelation($source_id, $item_url)) {
					continue;
				}

				$item_content = $item->getContent();
				$item_date = $item->getDate();
				$item_date = strtotime($item_date);
				if(!isset($element_id) || $element_id === false) {
					if(!isset($target[0])) {
						continue;
					}
					$parents = umiHierarchy::getInstance()->getObjectInstances($target[0]);
					if(count($parents)) {
						list($parent_id) = $parents;
						$element_id = umiHierarchy::getInstance()->addElement($parent_id, $hierarchy_type_id, $item_title, $item_title);
						$relations->setIdRelation($source_id, $item_url, $element_id);

						permissionsCollection::getInstance()->setDefaultPermissions($element_id);
					} else {
						return false;
					}
				}

				if ($element = umiHierarchy::getInstance()->getElement($element_id, true)) {
					$element->getObject()->setName($item_title);
					$element->setAltName($item_title);
					$element->setIsActive(true);
					$element->setValue("title", $item_title);
					$element->setValue("h1", $item_title);
					$element->setValue("publish_time", $item_date);
					$element->setValue("anons", $item_content);
					$element->setValue("content", $item_content);
					$element->setValue("source", $source);
					$element->setValue("source_url", $item_url);
					$element->commit();
					$element_id = false;
				}
			}

			return true;
		}