public function topic($template = "default", $per_page = false, $ignore_context = false) { if (!$template) { $template = "default"; } list($template_block, $template_line) = self::loadTemplates("forum/" . $template, "messages_block", "messages_block_line"); $element_id = cmsController::getInstance()->getCurrentElementId(); $element = umiHierarchy::getInstance()->getElement($element_id); $unsubscribe_user_id = (string) getRequest('unsubscribe'); if ($unsubscribe_user_id) { $unsubscribe_user_id = base64_decode($unsubscribe_user_id); $unsubscribe_user = umiObjectsCollection::getInstance()->getObject($unsubscribe_user_id); if ($unsubscribe_user instanceof umiObject) { $topic_id = cmsController::getInstance()->getCurrentElementId(); $subscribed_pages = $unsubscribe_user->getValue("subscribed_pages"); $tmp = array(); foreach ($subscribed_pages as $page) { if ($page->getId() != $topic_id) { $tmp[] = $page; } } $subscribed_pages = $tmp; unset($tmp); $unsubscribe_user->setValue("subscribed_pages", $subscribed_pages); $unsubscribe_user->commit(); } } $this->pushEditable("forum", "topic", $element_id); $per_page = $per_page ? $per_page : $this->per_page; $curr_page = getRequest('p'); $sel = new umiSelection(); $sel->setElementTypeFilter(); $topic_hierarchy_type_id = umiHierarchyTypesCollection::getInstance()->getTypeByName("forum", "message")->getId(); $sel->addElementType($topic_hierarchy_type_id); if (!$ignore_context) { $sel->setHierarchyFilter(); $sel->addHierarchyFilter($element_id); } else { $sel->forceHierarchyTable(); } $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'); if (getRequest('order_property')) { // == 'order by' requirements processing start $b_asc = false; $s_order_direction = getRequest('order_direction'); if (strtoupper($s_order_direction) === 'ASC') { $b_asc = true; } $s_order_property = getRequest('order_property'); if (!$s_order_property) { $s_order_property = 'publish_time'; } switch ($s_order_property) { /* Дата публикации - publish_time Автор - author_id sys::ord sys::rand sys::name sys::objectid */ case 'sys::ord': $sel->setOrderByOrd(); break; case 'sys::rand': $sel->setOrderByRand(); break; case 'sys::name': $sel->setOrderByName($b_asc); break; case 'sys::objectid': $sel->setOrderByObjectId($b_asc); break; default: $publish_time_field_id = $object_type->getFieldId($s_order_property); if (!$publish_time_field_id) { $publish_time_field_id = $object_type->getFieldId('publish_time'); } $sel->setOrderByProperty($publish_time_field_id, $b_asc); break; } // == 'order by' requirements processing fin } else { $sel->setOrderFilter(); $sel->setOrderByProperty($publish_time_field_id, true); } $sel->setPermissionsFilter(); $sel->addPermissions(); //$total = $element->getValue("messages_count"); //if($total === false) $total = umiSelectionsParser::runSelectionCounts($sel); $sel->setLimitFilter(); $sel->addLimit($per_page, $curr_page); $result = umiSelectionsParser::runSelection($sel); unset($sel); $lines = array(); $sz = sizeof($result); for ($i = 0; $i < $sz; $i++) { $message_element_id = $result[$i]; $message_element = umiHierarchy::getInstance()->getElement($message_element_id); if (!$message_element) { $total--; continue; } $line_arr = array(); $line_arr['attribute:id'] = $message_element_id; $line_arr['attribute:name'] = $message_element->getName(); $line_arr['attribute:num'] = $per_page * $curr_page + $i + 1; $line_arr['attribute:author_id'] = $author_id = $message_element->getValue("author_id"); $line_arr['xlink:href'] = "upage://" . $message_element_id; $line_arr['xlink:author-href'] = "udata://users/viewAuthor/" . $author_id; $message = $message_element->getValue("message"); $line_arr['node:message'] = self::formatMessage($message); $lines[] = self::parseTemplate($template_line, $line_arr, $message_element_id); $this->pushEditable("forum", "message", $message_element_id); umiHierarchy::getInstance()->unloadElement($element_id); } $block_arr = array(); $block_arr['attribute:id'] = $element_id; $block_arr['subnodes:lines'] = $lines; $block_arr['total'] = $total; $block_arr['per_page'] = $per_page; return self::parseTemplate($template_block, $block_arr, $element_id); }
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}\""); } }