/** * Gets news with specified type. Uses paging. * * @param int $type Id of type (rubric) * @param int $limit Limit for output * @param int $page Current page for calculate offset * @return array */ public function getList($type, $limit, $page = 1) { $config = parse_ini_file("./config/config.ini", true); $page -= 1; $hierarchyTypeId = umiHierarchyTypesCollection::getInstance()->getTypeByName("news", "item")->getId(); $objectTypeId = umiObjectTypesCollection::getInstance()->getBaseType("news", "item"); $objectType = umiObjectTypesCollection::getInstance()->getType($objectTypeId); $publishTimeFieldId = $objectType->getFieldId('publish_time'); $publishToAppFieldId = $objectType->getFieldId('publish_to_app'); $sel = new umiSelection(); $sel->addElementType($hierarchyTypeId); $sel->addHierarchyFilter($type, 0, true); if ($config["umi"]["ignore-publish-flag"] != 1) { $sel->addPropertyFilterEqual($publishToAppFieldId, true); } $sel->setOrderByProperty($publishTimeFieldId, false); $sel->addLimit($limit, $page); $result = umiSelectionsParser::runSelection($sel); $items = array(); $size = sizeof($result); for ($i = 0; $i < $size; $i++) { $elementId = $result[$i]; $element = umiHierarchy::getInstance()->getElement($elementId); if (!$element) { continue; } $items[] = array("id" => $elementId, "header" => $element->getValue("h1"), "date" => $element->getValue("publish_time")->getFormattedDate("d.m.Y"), "image" => "http://" . $_SERVER['HTTP_HOST'] . $element->getValue("anons_pic"), "original_link" => "http://" . $_SERVER['HTTP_HOST'] . umiHierarchy::getInstance()->getPathById($elementId)); } return $items; }
public function related_links($elementPath = false, $template = "default", $limit = 3) { list($template_block, $template_block_empty, $template_line) = def_module::loadTemplates("news/" . $template, "related_block", "related_block_empty", "related_line"); $element_id = $this->analyzeRequiredPath($elementPath); if ($element_id === false) { throw new publicException(getLabel('error-page-does-not-exist', null, $elementPath)); } $element = umiHierarchy::getInstance()->getElement($element_id); if (!$element) { return $template_block_empty; } $subjects = $element->getValue("subjects"); $hierarchy_type_id = umiHierarchyTypesCollection::getInstance()->getTypeByName("news", "item")->getId(); if (sizeof($subjects)) { $sel = new umiSelection(); $sel->addElementType($hierarchy_type_id); $subjects_field_id = $element->getFieldId('subjects'); $sel->addPropertyFilterEqual($subjects_field_id, $subjects); $sel->setOrderByProperty($element->getFieldId('publish_time'), false); $sel->addPermissions(); $sel->addLimit($limit + 1); $result = umiSelectionsParser::runSelection($sel); } else { $result = array(); } if (($sz = sizeof($result)) > 0) { $block_arr = array(); $lines = array(); $sz--; for ($i = 0; $i < $sz; $i++) { $line_arr = array(); $rel_element_id = $result[$i]; if ($rel_element_id == $element_id) { $sz++; continue; } $rel_element = umiHierarchy::getInstance()->getElement($rel_element_id); $line_arr['attribute:id'] = $rel_element_id; $line_arr['attribute:link'] = umiHierarchy::getInstance()->getPathById($rel_element_id); $line_arr['xlink:href'] = "upage://" . $rel_element_id; $line_arr['node:name'] = $rel_element->getName(); $lines[] = self::parseTemplate($template_line, $line_arr, $rel_element_id); } if (!$lines) { return ""; } $block_arr['subnodes:items'] = $block_arr['void:lines'] = $block_arr['void:related_links'] = $lines; return self::parseTemplate($template_block, $block_arr); } else { return $template_block_empty; } }
public function getMessageLink($element_id = false) { $element_id = $this->analyzeRequiredPath($element_id); $per_page = $this->per_page; $curr_page = (int) getRequest('p'); $element = umiHierarchy::getInstance()->getElement($element_id, true); if (!$element) { throw new publicException(getLabel('error-page-does-not-exist', null, '')); } $parent_id = $element->getParentId(); $parent_element = umiHierarchy::getInstance()->getElement($parent_id); if (!$parent_element) { throw new publicException(getLabel('error-parent-does-not-exist', null, '')); } if ($element->getValue("publish_time")) { $publish_time = $element->getValue("publish_time")->getFormattedDate("U"); } $sel = new umiSelection(); $sel->setLimitFilter(); $sel->addLimit($per_page, $curr_page); $sel->setElementTypeFilter(); $topic_hierarchy_type_id = umiHierarchyTypesCollection::getInstance()->getTypeByName("forum", "message")->getId(); $sel->addElementType($topic_hierarchy_type_id); $sel->setHierarchyFilter(); $sel->addHierarchyFilter($parent_id); $object_type_id = umiObjectTypesCollection::getInstance()->getBaseType("forum", "message"); $object_type = umiObjectTypesCollection::getInstance()->getType($object_type_id); $publish_time_field_id = $object_type->getFieldId('publish_time'); $sel->setOrderFilter(); $sel->setOrderByProperty($publish_time_field_id, true); $sel->setPropertyFilter(); $sel->addPropertyFilterLess($publish_time_field_id, $publish_time); $sel->setPermissionsFilter(); $sel->addPermissions(); $total = umiSelectionsParser::runSelectionCounts($sel); $p = floor(($total - 1) / $this->per_page); if ($p < 0) { $p = 0; } return umiHierarchy::getInstance()->getPathById($parent_id) . "?p={$p}#" . $element_id; }
public function collectAllChanges($module, $method, $parentElementId = false) { $endTime = time(); $beginTime = $endTime - 3600 * 24 * 30; $hierarchy_type_id = umiHierarchyTypesCollection::getInstance()->getTypeByName($module, $method)->getId(); $object_type_id = umiObjectTypesCollection::getInstance()->getBaseType($module, $method); $object_type = umiObjectTypesCollection::getInstance()->getType($object_type_id); $publish_time_field_id = $object_type->getFieldId('publish_time'); $sel = new umiSelection(); $sel->setElementTypeFilter(); $sel->addElementType($hierarchy_type_id); $sel->setPermissionsFilter(); $sel->addPermissions(); $sel->setOrderFilter(); $sel->setOrderByProperty($publish_time_field_id, false); $sel->setPropertyFilter(); $sel->addPropertyFilterBetween($publish_time_field_id, $beginTime, $endTime); if ($parentElementId !== false) { if (!is_numeric($parentElementId)) { $parentElementId = umiHierarchy::getInstance()->getIdByPath($parentElementId); } $sel->setHierarchyFilter(); $sel->addHierarchyFilter($parentElementId); } $result = umiSelectionsParser::runSelection($sel); $total = umiSelectionsParser::runSelectionCounts($sel); $res = array(); foreach ($result as $elementId) { $childs = sizeof(umiHierarchy::getInstance()->getChilds($elementId)); $res[] = array("id" => $elementId, "childs" => $childs); } return array("result" => $res, "total" => $total); }
public function autoDetectOrders(umiSelection $sel, $object_type_id) { if (array_key_exists("order_filter", $_REQUEST)) { $sel->setOrderFilter(); $type = umiObjectTypesCollection::getInstance()->getType($object_type_id); $order_filter = getRequest('order_filter'); foreach ($order_filter as $field_name => $direction) { if ($direction === "asc") { $direction = true; } if ($direction === "desc") { $direction = false; } if ($field_name == "name") { $sel->setOrderByName((bool) $direction); continue; } if ($field_name == "ord") { $sel->setOrderByOrd((bool) $direction); continue; } if ($type) { if ($field_id = $type->getFieldId($field_name)) { $sel->setOrderByProperty($field_id, (bool) $direction); } else { continue; } } } } else { return false; } }
public function insertlast($template = "default") { if (!$template) { $template = "default"; } $type_id = umiObjectTypesCollection::getInstance()->getBaseType("vote", "poll"); $type = umiObjectTypesCollection::getInstance()->getType($type_id); $time_field_id = $type->getFieldId("publish_time"); $hierarchy_type_id = umiHierarchyTypesCollection::getInstance()->getTypeByName("vote", "poll")->getId(); $sel = new umiSelection(); $sel->setHierarchyFilter(); $sel->addElementType($hierarchy_type_id); $sel->setLimitFilter(); $sel->addLimit(1); $sel->setOrderFilter(); $sel->setOrderByProperty($time_field_id, false); $sel->addPermissions(); $sel->forceHierarchyTable(); $result = umiSelectionsParser::runSelection($sel); if (sizeof($result)) { list($element_id) = $result; } else { $element_id = false; } if ($element_id) { return $this->poll($element_id, $template); } }
public function getFilteredPages($v94757cae63fd3e398c0811a976dd6bbe, $vdfc394bd05a4b48161c790034af522a8, $v2063c1608d6e0baf80249c42e2be5804, $v9d85c254b5062e518a134a61950999c3 = 10, $v66f6181bcb4cff4cd38fbc804a036db6 = "default", $v126424c808da347218ba631a78feaf04 = false, $v3aabf39f2d943fa886d86dcbbee4d910 = false, $v375a52cb87b22005816fe7a418ec6660 = true) { $ve1ba980ce14a8c0d7e2779f895ab8695 = getRequest('p'); if ($v126424c808da347218ba631a78feaf04) { $ve1ba980ce14a8c0d7e2779f895ab8695 = 0; } list($v364f9b183bd2dd9e0beb45c754830a6c, $ve6a2fd7211958cfe50efa4d14bd332f5, $v28d65bb7a643774ada22f54ca0679289) = def_module::loadTemplates("filtered_pages/" . $v66f6181bcb4cff4cd38fbc804a036db6, "pages_block", "pages_block_line", "pages_block_empty"); $v599dcce2998a6b40b1e38e8c6006cb0a = umiObjectTypesCollection::getInstance()->getType($v94757cae63fd3e398c0811a976dd6bbe); if ($v599dcce2998a6b40b1e38e8c6006cb0a instanceof umiObjectType) { if ($vf8a30f899e9d691c760031d60ea0f3a2 = $v599dcce2998a6b40b1e38e8c6006cb0a->getFieldId($vdfc394bd05a4b48161c790034af522a8)) { $v8be74552df93e31bbdd6b36ed74bdb6a = new umiSelection(); $v8be74552df93e31bbdd6b36ed74bdb6a->forceHierarchyTable(true); $v8be74552df93e31bbdd6b36ed74bdb6a->addObjectType($v94757cae63fd3e398c0811a976dd6bbe); $v06e3d36fa30cea095545139854ad1fb9 = umiFieldsCollection::getInstance()->getField($vf8a30f899e9d691c760031d60ea0f3a2); if ($v051369818a8073bba5feeb0e957eb308 = $v06e3d36fa30cea095545139854ad1fb9->getGuideId()) { if (!is_numeric($v2063c1608d6e0baf80249c42e2be5804)) { $vd47c20d305d6a44856735d5fe5c086ca = umiObjectsCollection::getInstance()->getGuidedItems($v051369818a8073bba5feeb0e957eb308); $v2063c1608d6e0baf80249c42e2be5804 = array_search($v2063c1608d6e0baf80249c42e2be5804, $vd47c20d305d6a44856735d5fe5c086ca); } } $v8be74552df93e31bbdd6b36ed74bdb6a->addPropertyFilterEqual($vf8a30f899e9d691c760031d60ea0f3a2, $v2063c1608d6e0baf80249c42e2be5804); $v8be74552df93e31bbdd6b36ed74bdb6a->addPermissions(); $v8be74552df93e31bbdd6b36ed74bdb6a->addLimit($v9d85c254b5062e518a134a61950999c3, $ve1ba980ce14a8c0d7e2779f895ab8695); $v8be74552df93e31bbdd6b36ed74bdb6a->addActiveFilter(true); if ($v3aabf39f2d943fa886d86dcbbee4d910) { $v8be74552df93e31bbdd6b36ed74bdb6a->setOrderByProperty($v3aabf39f2d943fa886d86dcbbee4d910, $v375a52cb87b22005816fe7a418ec6660); } else { $v8be74552df93e31bbdd6b36ed74bdb6a->setOrderByObjectId($v375a52cb87b22005816fe7a418ec6660); } $result = umiSelectionsParser::runSelection($v8be74552df93e31bbdd6b36ed74bdb6a); $vfbb44b4487415b134bce9c790a27fe5e = umiSelectionsParser::runSelectionCounts($v8be74552df93e31bbdd6b36ed74bdb6a); $vfca1bff8ad8b3a8585abfb0ad523ba42 = array(); if ($vfbb44b4487415b134bce9c790a27fe5e > 0) { $v691d502cfd0e0626cd3b058e5682ad1c = array(); $v12a673c3eb40ea95d992c775443b8709 = umiHierarchy::getInstance(); foreach ($result as $v7057e8409c7c531a1a6e9ac3df4ed549) { $v8e2dcfd7e7e24b1ca76c1193f645902b = $v12a673c3eb40ea95d992c775443b8709->getElement($v7057e8409c7c531a1a6e9ac3df4ed549); if ($v8e2dcfd7e7e24b1ca76c1193f645902b instanceof umiHierarchyElement) { $v691d502cfd0e0626cd3b058e5682ad1c[] = def_module::parseTemplate($ve6a2fd7211958cfe50efa4d14bd332f5, array('attribute:id' => $v8e2dcfd7e7e24b1ca76c1193f645902b->id, 'attribute:link' => $v8e2dcfd7e7e24b1ca76c1193f645902b->link, 'node:name' => $v8e2dcfd7e7e24b1ca76c1193f645902b->name)); } } $vfca1bff8ad8b3a8585abfb0ad523ba42['subnodes:items'] = $v691d502cfd0e0626cd3b058e5682ad1c; $v66f6181bcb4cff4cd38fbc804a036db6 = $v364f9b183bd2dd9e0beb45c754830a6c; } else { $v66f6181bcb4cff4cd38fbc804a036db6 = $v28d65bb7a643774ada22f54ca0679289; } $vfca1bff8ad8b3a8585abfb0ad523ba42['total'] = $vfbb44b4487415b134bce9c790a27fe5e; $vfca1bff8ad8b3a8585abfb0ad523ba42['per_page'] = $v9d85c254b5062e518a134a61950999c3; return def_module::parseTemplate($v66f6181bcb4cff4cd38fbc804a036db6, $vfca1bff8ad8b3a8585abfb0ad523ba42); } else { throw new publicException("Type \"" . $v599dcce2998a6b40b1e38e8c6006cb0a->getName() . "\" doesn't have property \"{$vdfc394bd05a4b48161c790034af522a8}\""); } } else { throw new publicException("Wrong type id \"{$v94757cae63fd3e398c0811a976dd6bbe}\""); } }
/** * @desc Выводит список черновиков текущего пользователя * @param Int $blogId Идентификатор блога * @param String $template Имя файла шаблона для вывода * @return string|array */ public function draughtsList($blogId = false, $template = 'default', $limit = false) { list($sTemplateBlock, $sTemplateLine) = self::loadTemplates('blogs20/' . $template, 'posts_list_block', 'posts_list_line'); $page = (int) getRequest('p'); $oBlog = null; $oHierarchy = umiHierarchy::getInstance(); if ($blogId === false) { $iTmp = getRequest('param0'); if ($iTmp) { $blogId = (int) $iTmp; } } $hierarchyTypes = umiHierarchyTypesCollection::getInstance(); $blogHierachyTypeId = $hierarchyTypes->getTypeByName("blogs20", "blog")->getId(); $sel = new umiSelection(); $hierarchy_type_id = $hierarchyTypes->getTypeByName("blogs20", "post")->getId(); $sel->addElementType($hierarchy_type_id); $typesCollection = umiObjectTypesCollection::getInstance(); $typeId = $typesCollection->getTypeByHierarchyTypeId($hierarchy_type_id); $postType = $typesCollection->getType($typeId); $userId = cmsController::getInstance()->getModule('users')->user_id; $sel->addOwnerFilter(array($userId)); if ($blogId !== false) { $oBlog = $oHierarchy->getElement($blogId); if ($oBlog && $oBlog->getHierarchyType() == $blogHierachyTypeId) { $sel->addHierarchyFilter($blogId); } } $sel->addActiveFilter(false); $sel->setOrderByProperty($postType->getFieldId('publish_time'), false); $sel->addLimit($limit ? $limit : $this->posts_per_page, $page); self::applyTimeRange($sel, $postType); $result = umiSelectionsParser::runSelection($sel); $total = umiSelectionsParser::runSelectionCounts($sel); $aLines = array(); foreach ($result as $iPostId) { $oPost = $oHierarchy->getElement($iPostId); if (!$oPost) { continue; } if (!$oBlog) { $oBlog = $oHierarchy->getElement($oPost->getRel()); } if (!$oBlog) { continue; } $sPostLink = '/blogs20/postView/' . $iPostId . '/'; $sBlogLink = $oHierarchy->getPathById($oBlog->getId(), true); $aLineParam = array(); $aLineParam['attribute:id'] = $iPostId; $aLineParam['attribute:author_id'] = $oPost->getObject()->getOwnerId(); $aLineParam['node:name'] = $oPost->getName(); $aLineParam['post_link'] = $sPostLink; $aLineParam['blog_link'] = $sBlogLink; $aLineParam['bid'] = $oBlog->getId(); $aLineParam['blog_title'] = $oBlog->getValue('title'); $aLineParam['title'] = $oPost->getValue('title'); $aLineParam['content'] = $oPost->getValue('content'); $aLineParam['cut'] = $this->prepareCut($aLineParam['content'], $sPostLink, $template); $aLineParam['subnodes:tags'] = $this->prepareTags($oPost->getValue('tags')); $aLineParam['comments_count'] = $oHierarchy->getChildsCount($iPostId, false); $this->pushEditable("blogs20", "post", $iPostId); $aLines[] = self::parseTemplate($sTemplateLine, $aLineParam, $iPostId); } $aBlockParam = array(); $aBlockParam['void:lines'] = $aBlockParam['subnodes:items'] = $aLines; $aBlockParam['bid'] = $blogId; $aBlockParam['per_page'] = $limit ? $limit : $this->posts_per_page; $aBlockParam['total'] = $total; return self::parseTemplate($sTemplateBlock, $aBlockParam); }