Exemplo n.º 1
0
 public function cronUnpublishPage($oEvent)
 {
     $object_type = umiObjectTypesCollection::getInstance()->getTypeByGUID('root-pages-type');
     $field_id = $object_type->getFieldId("expiration_date");
     $sel = new umiSelection();
     $sel->addPropertyFilterLess($field_id, time());
     $sel->addPropertyFilterNotEqual($field_id, 0);
     $sel->addActiveFilter(true);
     $sel->forceHierarchyTable(true);
     $result = umiSelectionsParser::runSelection($sel);
     $res = array();
     foreach ($result as $key => $page_id) {
         $ePage = umiHierarchy::getInstance()->getElement($page_id, true);
         $ePage->setIsActive(false);
         $pageObject = $ePage->getObject();
         $pageObject->setValue("publish_status", $this->getPageStatusIdByStatusSid("page_status_unpublish"));
         $pageObject->commit();
         $ePage->commit();
         if (!($publishComments = $ePage->getValue("publish_comments"))) {
             $publishComments = "Отсутствуют.";
         }
         $user_id = $ePage->getObject()->getOwnerId();
         $oUser = umiObjectsCollection::getInstance()->getObject($user_id);
         if ($oUser instanceof umiObject && ($user_email = $oUser->getValue("e-mail"))) {
             //Составляем и посылаем сообщение пользователю
             $mail_message = new umiMail();
             $from = regedit::getInstance()->getVal("//settings/email_from");
             $mail_message->setFrom($from);
             $mail_message->setPriorityLevel("high");
             $mail_message->setSubject(getLabel('label-notification-expired-mail-header'));
             list($body) = def_module::loadTemplatesForMail("mail/expired", "body");
             $block['notify_header'] = getLabel('label-notification-expired-mail-header');
             $block['page_header'] = $ePage->getName();
             $block['publish_comments'] = $publishComments;
             $domain = domainsCollection::getInstance()->getDomain($ePage->getDomainId());
             $page_host = "http://" . $domain->getHost() . umiHierarchy::getInstance()->getPathById($page_id);
             $block['page_link'] = $page_host;
             $mail_html = def_module::parseTemplateForMail($body, $block, $page_id);
             $mail_message->addRecipient($user_email);
             $mail_message->setContent($mail_html);
             $mail_message->commit();
             $mail_message->send();
         }
     }
 }
Exemplo n.º 2
0
 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);
 }
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 systemUnlockAll()
 {
     $oUsersMdl = cmsController::getInstance()->getModule("users");
     if (!$oUsersMdl->isSv()) {
         throw new publicAdminException(getLabel('error-can-unlock-not-sv'));
     }
     $sel = new umiSelection();
     $sel->forceHierarchyTable(true);
     $result = umiSelectionsParser::runSelection($sel);
     foreach ($result as $page_id) {
         $ePage = umiHierarchy::getInstance()->getElement($page_id);
         $oPage = $ePage->getObject();
         $oPage->setValue("locktime", null);
         $oPage->setValue("lockuser", null);
         $oPage->commit();
         $ePage->commit();
     }
 }
Exemplo n.º 5
0
 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}\"");
     }
 }
 public function pages_mklist_by_tags($s_tags, $i_domain_id = NULL, $s_template = "tags", $i_per_page = false, $b_ignore_paging = false, $s_base_types = '')
 {
     /*
      */
     // init and context :
     $s_tpl_pages = "pages";
     $s_tpl_page = "page";
     $s_tpl_pages_empty = "pages_empty";
     // validate input :
     $i_per_page = intval($i_per_page);
     if (!$i_per_page) {
         $i_per_page = 10;
     }
     if ($i_per_page === -1) {
         $b_ignore_paging = true;
     }
     $s_template = strval($s_template);
     if (!strlen($s_template)) {
         $s_template = "tags";
     }
     $i_curr_page = intval(getRequest('p'));
     if ($b_ignore_paging) {
         $i_curr_page = 0;
     }
     $s_base_types = strval($s_base_types);
     // load templates :
     list($tpl_pages, $tpl_page, $tpl_pages_empty) = def_module::loadTemplates("content/" . $s_template, $s_tpl_pages, $s_tpl_page, $s_tpl_pages_empty);
     // process :
     $o_sel = new umiSelection();
     if ($i_domain_id) {
         $o_sel->setIsDomainIgnored(false);
     } else {
         $o_sel->setIsDomainIgnored(true);
     }
     if (strlen($s_base_types)) {
         $o_sel->setElementTypeFilter();
         $arr_base_types = preg_split("/\\s+/is", $s_base_types);
         foreach ($arr_base_types as $s_next_type) {
             $arr_next_type = explode('.', $s_next_type);
             if (count($arr_next_type) === 2) {
                 $o_hierarchy_type = umiHierarchyTypesCollection::getInstance()->getTypeByName($arr_next_type[0], $arr_next_type[1]);
                 if ($o_hierarchy_type instanceof umiHierarchyType) {
                     $i_hierarchy_type_id = $o_hierarchy_type->getId();
                     $o_sel->addElementType($i_hierarchy_type_id);
                 }
             }
         }
     }
     $o_sel->forceHierarchyTable();
     $o_object_type = umiObjectTypesCollection::getInstance()->getTypeByGUID('root-pages-type');
     $i_tags_field_id = $o_object_type->getFieldId('tags');
     $arr_tags = preg_split("/\\s*,\\s*/is", $s_tags);
     $o_sel->setPropertyFilter();
     $o_sel->addPropertyFilterEqual($i_tags_field_id, $arr_tags);
     $o_sel->setPermissionsFilter();
     $o_sel->addPermissions();
     if ($i_per_page !== -1) {
         $o_sel->setLimitFilter();
         $o_sel->addLimit($i_per_page, $i_curr_page);
     }
     $result = umiSelectionsParser::runSelection($o_sel);
     $total = umiSelectionsParser::runSelectionCounts($o_sel);
     $block_arr = array();
     if (($sz = sizeof($result)) > 0) {
         $arr_items = array();
         for ($i = 0; $i < $sz; $i++) {
             $line_arr = array();
             $element_id = intval($result[$i]);
             $element = umiHierarchy::getInstance()->getElement($element_id);
             if (!$element) {
                 continue;
             }
             $line_arr['attribute:id'] = $element_id;
             $line_arr['node:name'] = $element->getName();
             $line_arr['attribute:link'] = umiHierarchy::getInstance()->getPathById($element_id);
             $line_arr['void:header'] = $lines_arr['name'] = $element->getName();
             if ($publish_time = $element->getValue('publish_time')) {
                 $line_arr['attribute:publish_time'] = $publish_time->getFormattedDate("U");
             }
             $arr_items[] = def_module::parseTemplate($tpl_page, $line_arr, $element_id);
             umiHierarchy::getInstance()->unloadElement($element_id);
         }
         $block_arr['subnodes:items'] = $arr_items;
         $block_arr['tags'] = $s_tags;
         $block_arr['total'] = $total;
         $block_arr['per_page'] = $i_per_page;
         return def_module::parseTemplate($tpl_pages, $block_arr);
     } else {
         return def_module::parseTemplate($tpl_pages_empty, $block_arr);
     }
 }