Exemplo n.º 1
0
 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;
 }
Exemplo n.º 2
0
 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);
 }
Exemplo n.º 3
0
 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);
     }
 }
Exemplo n.º 4
0
 public function getObjectsList($template = "default", $path = false, $limit = false, $ignore_paging = false, $i_need_deep = -1, $field_id = false, $asc = true)
 {
     if (!$template) {
         $template = "default";
     }
     if (!$i_need_deep) {
         $i_need_deep = intval(getRequest('param4'));
     }
     if (!$i_need_deep) {
         $i_need_deep = 0;
     }
     $i_need_deep = intval($i_need_deep);
     if ($i_need_deep === -1) {
         $i_need_deep = 100;
     }
     $hierarchy = umiHierarchy::getInstance();
     list($template_block, $template_block_empty, $template_block_search_empty, $template_line) = def_module::loadTemplates("catalog/" . $template, "objects_block", "objects_block_empty", "objects_block_search_empty", "objects_block_line");
     $hierarchy_type_id = umiHierarchyTypesCollection::getInstance()->getTypeByName("catalog", "object")->getId();
     $category_id = $this->analyzeRequiredPath($path);
     if ($category_id === false && $path != KEYWORD_GRAB_ALL) {
         throw new publicException(getLabel('error-page-does-not-exist', null, $path));
     }
     $category_element = $hierarchy->getElement($category_id);
     $per_page = $limit ? $limit : $this->per_page;
     $curr_page = getRequest('p');
     if ($ignore_paging) {
         $curr_page = 0;
     }
     $sel = new umiSelection();
     $sel->setElementTypeFilter();
     $sel->addElementType($hierarchy_type_id);
     if ($path != KEYWORD_GRAB_ALL) {
         $sel->setHierarchyFilter();
         $sel->addHierarchyFilter($category_id, $i_need_deep);
     }
     $sel->setPermissionsFilter();
     $sel->addPermissions();
     $hierarchy_type = umiHierarchyTypesCollection::getInstance()->getType($hierarchy_type_id);
     $type_id = umiObjectTypesCollection::getInstance()->getBaseType($hierarchy_type->getName(), $hierarchy_type->getExt());
     if ($path === KEYWORD_GRAB_ALL) {
         $curr_category_id = cmsController::getInstance()->getCurrentElementId();
     } else {
         $curr_category_id = $category_id;
     }
     if ($path != KEYWORD_GRAB_ALL) {
         $type_id = $hierarchy->getDominantTypeId($curr_category_id, $i_need_deep, $hierarchy_type_id);
     }
     if (!$type_id) {
         $type_id = umiObjectTypesCollection::getInstance()->getBaseType($hierarchy_type->getName(), $hierarchy_type->getExt());
     }
     if ($type_id) {
         $this->autoDetectOrders($sel, $type_id);
         $this->autoDetectFilters($sel, $type_id);
         if ($this->isSelectionFiltered) {
             $template_block_empty = $template_block_search_empty;
             $this->isSelectionFiltered = false;
         }
     } else {
         $sel->setOrderFilter();
         $sel->setOrderByName();
     }
     if ($curr_page !== "all") {
         $curr_page = (int) $curr_page;
         $sel->setLimitFilter();
         $sel->addLimit($per_page, $curr_page);
     }
     if ($field_id) {
         if (is_numeric($field_id)) {
             $sel->setOrderByProperty($field_id, $asc);
         } else {
             if ($type_id) {
                 $field_id = umiObjectTypesCollection::getInstance()->getType($type_id)->getFieldId($field_id);
                 if ($field_id) {
                     $sel->setOrderByProperty($field_id, $asc);
                 } else {
                     $sel->setOrderByOrd($asc);
                 }
             } else {
                 $sel->setOrderByOrd($asc);
             }
         }
     } else {
         $sel->setOrderByOrd($asc);
     }
     $result = umiSelectionsParser::runSelection($sel);
     $total = umiSelectionsParser::runSelectionCounts($sel);
     if (($sz = sizeof($result)) > 0) {
         $block_arr = array();
         $lines = array();
         for ($i = 0; $i < $sz; $i++) {
             $element_id = $result[$i];
             $element = umiHierarchy::getInstance()->getElement($element_id);
             if (!$element) {
                 continue;
             }
             $line_arr = array();
             $line_arr['attribute:id'] = $element_id;
             $line_arr['attribute:alt_name'] = $element->getAltName();
             $line_arr['attribute:link'] = umiHierarchy::getInstance()->getPathById($element_id);
             $line_arr['xlink:href'] = "upage://" . $element_id;
             $line_arr['node:text'] = $element->getName();
             $lines[] = self::parseTemplate($template_line, $line_arr, $element_id);
             $this->pushEditable("catalog", "object", $element_id);
             umiHierarchy::getInstance()->unloadElement($element_id);
         }
         $block_arr['subnodes:lines'] = $lines;
         $block_arr['numpages'] = umiPagenum::generateNumPage($total, $per_page);
         $block_arr['total'] = $total;
         $block_arr['per_page'] = $per_page;
         $block_arr['category_id'] = $category_id;
         if ($type_id) {
             $block_arr['type_id'] = $type_id;
         }
         return self::parseTemplate($template_block, $block_arr, $category_id);
     } else {
         $block_arr['numpages'] = umiPagenum::generateNumPage(0, 0);
         $block_arr['lines'] = "";
         $block_arr['total'] = 0;
         $block_arr['per_page'] = 0;
         $block_arr['category_id'] = $category_id;
         return self::parseTemplate($template_block_empty, $block_arr, $category_id);
     }
 }
Exemplo n.º 5
0
 public function getSelectionObject()
 {
     $hierarchy_type_id = umiHierarchyTypesCollection::getInstance()->getTypeByName("catalog", "object")->getId();
     $sel = new umiSelection();
     $sel->setElementTypeFilter();
     $sel->addElementType($hierarchy_type_id);
     $sel->setHierarchyFilter();
     $sel->addHierarchyFilter($this->catalogId, 1);
     $sel->setPermissionsFilter();
     $sel->addPermissions();
     //add custom filters
     kFilters::getInstance($this->catalogId)->applyCustomCountFilters($sel);
     return $sel;
 }
Exemplo n.º 6
0
 public function getObjectsList($template = "default", $path = false, $limit = false, $ignore_paging = false, $i_need_deep = 0, $field_id = false, $asc = true)
 {
     // шаблон для tpl шаблонизатора
     if (!$template) {
         $template = "default";
     }
     // глубина поиска
     if (!$i_need_deep) {
         $i_need_deep = intval(getRequest('param4'));
     }
     if (!$i_need_deep) {
         $i_need_deep = 0;
     }
     $i_need_deep = intval($i_need_deep);
     if ($i_need_deep === -1) {
         $i_need_deep = 100;
     }
     $hierarchy = umiHierarchy::getInstance();
     list($template_block, $template_block_empty, $template_block_search_empty, $template_line) = def_module::loadTemplates("catalog/" . $template, "objects_block", "objects_block_empty", "objects_block_search_empty", "objects_block_line");
     // идентификатор объектов для поиска
     $hierarchy_type_id = umiHierarchyTypesCollection::getInstance()->getTypeByName("catalog", "object")->getId();
     // идшник каталога в котором производиться отбор
     $category_id = $this->analyzeRequiredPath($path);
     // не задан каталог или патс не задан исключение
     if ($category_id === false && $path != KEYWORD_GRAB_ALL) {
         throw new publicException(getLabel('error-page-does-not-exist', null, $path));
     }
     // получть каталог
     $category_element = $hierarchy->getElement($category_id);
     // количество для выбора
     $per_page = $limit ? $limit : $this->per_page;
     $curr_page = getRequest('p');
     if ($ignore_paging) {
         $curr_page = 0;
     }
     // задаёться выборка
     $sel = new umiSelection();
     $sel->setElementTypeFilter();
     $sel->addElementType($hierarchy_type_id);
     if ($path != KEYWORD_GRAB_ALL) {
         $sel->setHierarchyFilter();
         $sel->addHierarchyFilter($category_id, $i_need_deep);
     }
     $sel->setPermissionsFilter();
     $sel->addPermissions();
     // полуить тип по айд
     $hierarchy_type = umiHierarchyTypesCollection::getInstance()->getType($hierarchy_type_id);
     // Получить тип данных, связанный с базовым типом МОДУЛЬ МЕТОД
     $type_id = umiObjectTypesCollection::getInstance()->getBaseType($hierarchy_type->getName(), $hierarchy_type->getExt());
     if ($path === KEYWORD_GRAB_ALL) {
         $curr_category_id = cmsController::getInstance()->getCurrentElementId();
     } else {
         $curr_category_id = $category_id;
     }
     if ($path != KEYWORD_GRAB_ALL) {
         // Определить id типа данных, которому принадлежат больше всего дочерних страниц для указанной страницы
         $type_id = $hierarchy->getDominantTypeId($curr_category_id, $i_need_deep, $hierarchy_type_id);
     }
     if (!$type_id) {
         $type_id = umiObjectTypesCollection::getInstance()->getBaseType($hierarchy_type->getName(), $hierarchy_type->getExt());
     }
     if ($type_id) {
         $this->autoDetectOrders($sel, $type_id);
         $this->autoDetectFilters($sel, $type_id);
         if ($this->isSelectionFiltered) {
             $template_block_empty = $template_block_search_empty;
             $this->isSelectionFiltered = false;
         }
     } else {
         $sel->setOrderFilter();
         $sel->setOrderByName();
     }
     if ($curr_page !== "all") {
         $curr_page = (int) $curr_page;
         $sel->setLimitFilter();
         $sel->addLimit($per_page, $curr_page);
     }
     if ($field_id) {
         if (is_numeric($field_id)) {
             $sel->setOrderByProperty($field_id, $asc);
         } else {
             if ($type_id) {
                 $field_id = umiObjectTypesCollection::getInstance()->getType($type_id)->getFieldId($field_id);
                 if ($field_id) {
                     $sel->setOrderByProperty($field_id, $asc);
                 } else {
                     $sel->setOrderByOrd($asc);
                 }
             } else {
                 $sel->setOrderByOrd($asc);
             }
         }
     } else {
         $sel->setOrderByOrd($asc);
     }
     $result = umiSelectionsParser::runSelection($sel);
     $total = umiSelectionsParser::runSelectionCounts($sel);
     // формируется результат
     if (($sz = sizeof($result)) > 0) {
         $block_arr = array();
         $lines = array();
         for ($i = 0; $i < $sz; $i++) {
             $element_id = $result[$i];
             $element = umiHierarchy::getInstance()->getElement($element_id);
             if (!$element) {
                 continue;
             }
             $line_arr = array();
             $line_arr['attribute:id'] = $element_id;
             $line_arr['attribute:alt_name'] = $element->getAltName();
             $line_arr['attribute:link'] = umiHierarchy::getInstance()->getPathById($element_id);
             $line_arr['xlink:href'] = "upage://" . $element_id;
             $line_arr['node:text'] = $element->getName();
             $lines[] = self::parseTemplate($template_line, $line_arr, $element_id);
             $this->pushEditable("catalog", "object", $element_id);
             umiHierarchy::getInstance()->unloadElement($element_id);
         }
         $block_arr['subnodes:lines'] = $lines;
         $block_arr['numpages'] = umiPagenum::generateNumPage($total, $per_page);
         $block_arr['total'] = $total;
         $block_arr['per_page'] = $per_page;
         $block_arr['category_id'] = $category_id;
         if ($type_id) {
             $block_arr['type_id'] = $type_id;
         }
         return self::parseTemplate($template_block, $block_arr, $category_id);
     } else {
         $block_arr['numpages'] = umiPagenum::generateNumPage(0, 0);
         $block_arr['lines'] = "";
         $block_arr['total'] = 0;
         $block_arr['per_page'] = 0;
         $block_arr['category_id'] = $category_id;
         return self::parseTemplate($template_block_empty, $block_arr, $category_id);
     }
 }