Ejemplo n.º 1
0
		/**
			* Слить все заказы покупателя в профиль пользователя.
			* Объект покупателя после этого будет уничтожен
		*/
		public function merge(umiObject $customer) {

			$cmsController = cmsController::getInstance();
			$domain = $cmsController->getCurrentDomain();
			$domainId = $domain->getId();

			$sel = new selector('objects');
			$sel->types('object-type')->name('emarket', 'order');
			$sel->where('customer_id')->equals($customer->id);
			$sel->where('domain_id')->equals($domainId);
			$sel->order('id')->desc();

			$permissions = permissionsCollection::getInstance();
			$userId = $permissions->getUserId();

			foreach($sel as $order) {
				if(!$order->status_id) {
					$this->mergeBasket($order);
					continue;
				}

				$order->customer_id = $userId;
				$order->commit();
			}
			if (!defined('UMICMS_CLI_MODE') || !UMICMS_CLI_MODE) {
				setcookie('customer-id', 0, 1, '/');
			}
			$customer->delete();
		}
Ejemplo n.º 2
0
 public function orders()
 {
     $this->setDataType("list");
     $this->setActionType("view");
     if ($this->ifNotXmlMode()) {
         return $this->doData();
     }
     $limit = getRequest('per_page_limit');
     $curr_page = (int) getRequest('p');
     $offset = $limit * $curr_page;
     $sel = new selector('objects');
     $sel->types('object-type')->name('emarket', 'order');
     $sel->where('status_id')->isNull(false);
     $sel->where('name')->notequals('dummy');
     $sel->limit($offset, $limit);
     if (!getRequest('order_filter')) {
         $sel->order('order_date')->desc();
     }
     selectorHelper::detectFilters($sel);
     $domains = getRequest('domain_id');
     if (is_array($domains) && sizeof($domains)) {
         $domainsCollection = domainsCollection::getInstance();
         if (sizeof($domainsCollection->getList()) > 1) {
             $sel->where('domain_id')->equals($domains[0]);
         }
     }
     $this->setDataRange($limit, $offset);
     $data = $this->prepareData($sel->result, "objects");
     $this->setData($data, $sel->length);
     return $this->doData();
 }
Ejemplo n.º 3
0
 public function view_comments()
 {
     $this->setDataType("list");
     $this->setActionType("view");
     if ($this->ifNotXmlMode()) {
         return $this->doData();
     }
     //Получение id родительской страницы. Если передан неверный id, будет выброшен exception
     $parent_id = $this->expectElementId('param0');
     $limit = getRequest('per_page_limit');
     $curr_page = (int) getRequest('p');
     $offset = $limit * $curr_page;
     if (!is_null($rel = getRequest('rel'))) {
         $rel = array_extract_values($rel);
         if (empty($rel)) {
             unset($_REQUEST['rel']);
         }
     }
     $sel = new selector('pages');
     $sel->types('hierarchy-type')->name('comments', 'comment');
     $sel->order('publish_time')->desc();
     $sel->limit($offset, $limit);
     selectorHelper::detectFilters($sel);
     $this->setDataRange($limit, $offset);
     $data = $this->prepareData($sel->result, "pages");
     $this->setData($data, $sel->length);
     return $this->doData();
 }
Ejemplo n.º 4
0
 public function number()
 {
     $sel = new selector('objects');
     $sel->types('object-type')->name('emarket', 'order');
     $sel->order('number')->desc();
     $sel->limit(0, 1);
     $number = $sel->first ? $sel->first->number + 1 : 1;
     $order = $this->order;
     $order->name = getLabel('order-name-prefix', 'emarket', $number);
     $order->number = $number;
     $order->commit();
     return $number;
 }
Ejemplo n.º 5
0
 public function last_messages()
 {
     $this->setDataType("list");
     $this->setActionType("view");
     if ($this->ifNotXmlMode()) {
         return $this->doData();
     }
     $limit = getRequest('per_page_limit');
     $curr_page = getRequest('p');
     $offset = $curr_page * $limit;
     $sel = new selector('pages');
     $sel->types('hierarchy-type')->name('forum', 'message');
     $sel->order('publish_time')->desc();
     $sel->limit($offset, $limit);
     selectorHelper::detectFilters($sel);
     $data = $this->prepareData($sel->result, "pages");
     $this->setData($data, $sel->length);
     $this->setDataRangeByPerPage($limit, $curr_page);
     return $this->doData();
 }
Ejemplo n.º 6
0
 public function albums($template = "default", $limit = false, $ignore_paging = false, $parentElementId = false, $order = 'asc')
 {
     list($template_block, $template_block_empty, $template_line) = def_module::loadTemplates("photoalbum/" . $template, "albums_list_block", "albums_list_block_empty", "albums_list_block_line");
     $block_arr = array();
     $curr_page = (int) getRequest('p');
     if ($ignore_paging) {
         $curr_page = 0;
     }
     $offset = $limit * $curr_page;
     $sel = new selector('pages');
     $sel->types('hierarchy-type')->name('photoalbum', 'album');
     $sel->where('permissions');
     if ($parentElementId) {
         $sel->where('hierarchy')->page($parentElementId)->childs(1);
     }
     if (in_array($order, array('asc', 'desc', 'rand'))) {
         $sel->order('ord')->{$order}();
     }
     $sel->limit($offset, $limit);
     $result = $sel->result;
     $total = $sel->length();
     $lines = array();
     if ($total > 0) {
         foreach ($result as $element) {
             $line_arr = array();
             $element_id = $element->getId();
             $line_arr['attribute:id'] = $element_id;
             $line_arr['attribute:link'] = umiHierarchy::getInstance()->getPathById($element_id);
             $line_arr['xlink:href'] = "upage://" . $element_id;
             $line_arr['node:name'] = $element->getName();
             $this->pushEditable("photoalbum", "album", $element_id);
             $lines[] = self::parseTemplate($template_line, $line_arr, $element_id);
         }
     } else {
         return self::parseTemplate($template_block_empty, $block_arr);
     }
     $block_arr['subnodes:items'] = $block_arr['void:lines'] = $lines;
     $block_arr['total'] = $total;
     $block_arr['per_page'] = $limit;
     return self::parseTemplate($template_block, $block_arr);
 }
Ejemplo n.º 7
0
<?php

//http://api.docs.umi-cms.ru/razrabotka_nestandartnogo_funkcionala/proizvolnye_vyborki/selector/
define("CURRENT_WORKING_DIR", str_replace("\\", "/", $_SERVER['DOCUMENT_ROOT']));
require CURRENT_WORKING_DIR . '/libs/config.php';
$reviews = new selector('pages');
$reviews->types('object-type')->id(69);
$reviews->where('lang')->equals(array(1, 2));
//it seems to be the only feasible way to select all languages (FALSE doesn't work)
if (!array_key_exists('sort', $_REQUEST)) {
    $reviews->order('publish_time')->desc();
} else {
    $sortBy = $_REQUEST['sort'];
    if (array_key_exists('dir', $_REQUEST) && $_REQUEST['dir'] == 'desc') {
        $reviews->order($sortBy)->desc();
    } else {
        $reviews->order($sortBy)->asc();
    }
}
$offset = array_key_exists('offset', $_REQUEST) ? $_REQUEST['offset'] : 0;
$limit = array_key_exists('limit', $_REQUEST) ? $_REQUEST['limit'] : 0;
if ($offset || $limit) {
    $reviews->limit($offset, $limit);
}
$res = array();
foreach ($reviews as $review) {
    $author = umiObjectsCollection::getInstance()->getObject($review->getObject()->author_id);
    $res[] = array('author_name' => $author->nickname, 'message' => $review->message, 'rating' => $review->rating, 'country' => $review->country, 'language' => $review->language, 'date' => explode('.', $review->publish_time->getFormattedDate('j.n.Y')));
}
echo json_encode(array('total' => $reviews->length, 'reviews' => $res));
/*
Ejemplo n.º 8
0
 /**
  * Возвращает страницу "Заказ оформлен/Неудалось оформить"
  * @param order $order
  * @param String $step - результат оформления заказа (успешно/нет)
  * @param $mode
  * @param String $template
  * @return Array
  */
 public function result(order $order, $step, $mode, $template)
 {
     list($tpl_successful, $tpl_failed) = def_module::loadTemplates("emarket/" . $template, 'purchase_successful', 'purchase_failed');
     $tpl_block = $step == 'successful' ? $tpl_successful : $tpl_failed;
     if ($order->isEmpty()) {
         $customer = customer::get();
         $domain = cmsController::getInstance()->getCurrentDomain();
         $domainId = $domain->getId();
         $sel = new selector('objects');
         $sel->types('object-type')->name('emarket', 'order');
         $sel->where('customer_id')->equals($customer->getId());
         $sel->where('domain_id')->equals($domainId);
         $sel->order('id')->desc();
         if ($sel->length()) {
             $orderId = $sel->first->id;
         }
     } else {
         $orderId = $order->getId();
     }
     $result = array('status' => $step, 'order' => array('attribute:id' => $orderId), 'void:order_id' => $orderId);
     return def_module::parseTemplate($tpl_block, $result);
 }
Ejemplo n.º 9
0
 public function frontendPanel()
 {
     $permissions = permissionsCollection::getInstance();
     $cmsController = cmsController::getInstance();
     $maxRecentPages = 5;
     $this->flushAsXml('frontendPanel');
     $modules = array();
     $modulesSortedPriorityList = $this->getSortedModulesList();
     foreach ($modulesSortedPriorityList as $moduleInfo) {
         $modules[] = array('attribute:label' => $moduleInfo['label'], 'attribute:type' => $moduleInfo['type'], 'node:name' => $moduleInfo['name']);
     }
     $hierarchy = umiHierarchy::getInstance();
     $key = md5(getServer('HTTP_REFERER'));
     $currentIds = is_array(getSession($key)) ? getSession($key) : array();
     foreach ($currentIds as $i => $id) {
         $currentIds[$i] = $id[2];
     }
     $currentIds = array_unique($currentIds);
     $current = array();
     foreach ($currentIds as $id) {
         $current[] = $hierarchy->getElement($id);
     }
     $recent = new selector('pages');
     $recent->where('is_deleted')->equals(0);
     $recent->where('is_active')->equals(1);
     $recent->where('lang')->equals(langsCollection::getInstance()->getList());
     $recent->order('updatetime')->desc();
     $recent->limit(0, $maxRecentPages);
     if (sizeof($currentIds) && $permissions->isAllowedModule($permissions->getUserId(), 'backup')) {
         $backup = $cmsController->getModule('backup');
         $changelog = $backup->backup_panel($currentIds[0]);
     } else {
         $changelog = null;
     }
     $user = selector::get('object')->id($permissions->getUserId());
     $referer = getRequest('referer') ? getRequest('referer') : getServer('HTTP_REFERER');
     $tickets = new selector('objects');
     $tickets->types('object-type')->name('content', 'ticket');
     $tickets->where('url')->equals($referer);
     $tickets->limit(0, 100);
     $ticketsResult = array();
     foreach ($tickets as $ticket) {
         $user = selector::get('object')->id($ticket->user_id);
         if (!$user) {
             continue;
         }
         $ticketsResult[] = array('attribute:id' => $ticket->id, 'author' => array('attribute:fname' => $user->fname, 'attribute:lname' => $user->lname, 'attribute:login' => $user->login), 'position' => array('attribute:x' => $ticket->x, 'attribute:y' => $ticket->y, 'attribute:width' => $ticket->width, 'attribute:height' => $ticket->height), 'message' => $ticket->message);
     }
     $result = array('user' => array('attribute:id' => $user->id, 'attribute:fname' => $user->fname, 'attribute:lname' => $user->lname, 'attribute:login' => $user->login), 'tickets' => array('nodes:ticket' => $ticketsResult), 'modules' => array('nodes:module' => $modules), 'documents' => array('editable' => array('nodes:page' => $current), 'recent' => array('nodes:page' => $recent->result())));
     if (!$permissions->isAllowedMethod($permissions->getUserId(), 'content', 'tickets')) {
         unset($result['tickets']);
     }
     if ($changelog && sizeof($changelog['nodes:revision'])) {
         $result['changelog'] = $changelog;
     }
     $event = new umiEventPoint('eipFrontendPanelGet');
     $event->setParam("id", getArrayKey($currentIds, 0));
     $event->addRef("result", $result);
     $event->setMode('after');
     $event->call();
     return $result;
 }
Ejemplo n.º 10
0
function catalog_objects($parentId, $properties = array(), $sortings = array())
{
    $objects = new \selector('pages');
    $objects->types('object-type')->name('catalog', 'object');
    $objects->where('hierarchy')->page($parentId);
    foreach ($sortings as $sort) {
        if ($sort) {
            $objects->order($sort)->asc();
        }
    }
    return select($objects, $properties);
}
 public function calculateLastMessageId(iUmiHierarchyElement $element)
 {
     $sel = new selector('pages');
     $sel->types('hierarchy-type')->name('forum', 'message');
     $sel->order('publish_time')->desc();
     $sel->limit(0, 1);
     if ($element->getMethod() == 'conf') {
         $lastTopics = new selector('pages');
         $lastTopics->types('hierarchy-type')->name('forum', 'topic');
         $lastTopics->where('hierarchy')->page($element->id)->childs(1);
         $lastTopics->order('last_post_time')->desc();
         $lastTopics->limit(0, 1);
         if ($lastTopics->first) {
             $sel->where('hierarchy')->page($lastTopics->first->id)->childs(1);
         } else {
             return null;
         }
     } else {
         $sel->where('hierarchy')->page($element->id)->childs(1);
     }
     return $sel->first;
 }
Ejemplo n.º 12
0
 static function detectOrderFilters(selector $v8be74552df93e31bbdd6b36ed74bdb6a)
 {
     $v12c500ed0b7879105fb46af0f246be87 = (array) getRequest('order_filter');
     foreach ($v12c500ed0b7879105fb46af0f246be87 as $v972bf3f05d14ffbdb817bef60638ff00 => $vef72c37be9d1b9e6e5bbd6ef09448abe) {
         $v7df4935f4a5a2865191ef74f64df8754 = strtolower($vef72c37be9d1b9e6e5bbd6ef09448abe) == 'desc' ? 'desc' : 'asc';
         try {
             $v8be74552df93e31bbdd6b36ed74bdb6a->order($v972bf3f05d14ffbdb817bef60638ff00)->{$v7df4935f4a5a2865191ef74f64df8754}();
         } catch (selectorException $ve1671797c52e15f763380b45e841ec32) {
             self::tryException($ve1671797c52e15f763380b45e841ec32);
         }
     }
 }
Ejemplo n.º 13
0
 public function generateFeed($elementId, $xslPath, $typeId = null)
 {
     $this->errorSetErrorPage('/');
     if ($elementId && (!umiHierarchy::getInstance()->isExists($elementId) || !umiHierarchy::getInstance()->getElement($elementId)->getIsActive())) {
         if (def_module::isXSLTResultMode()) {
             $result = array('error' => '%data_feed_nofeed%');
             return def_module::parseTemplate('', $result);
         } else {
             return '%data_feed_nofeed%';
         }
     }
     if ($typeId) {
         list($name, $ext) = explode('-', $typeId);
         $hierarchyType = umiHierarchyTypesCollection::getInstance()->getTypeByName($name, $ext);
         if ($hierarchyType) {
             $typeId = umiObjectTypesCollection::getInstance()->getTypeByHierarchyTypeId($hierarchyType->getId());
         }
     } elseif ($elementId) {
         $typeId = umiHierarchy::getInstance()->getDominantTypeId($elementId);
     } else {
         $typeId = umiObjectTypesCollection::getInstance()->getTypeIdByGUID('news-item');
     }
     $type = umiObjectTypesCollection::getInstance()->getType($typeId);
     if ($type instanceof umiObjectType) {
         $module = $type->getModule();
         $method = $type->getMethod();
     }
     if (!isset($module) && !isset($method)) {
         if (def_module::isXSLTResultMode()) {
             $result = array('error' => '%data_feed_nofeed%');
             return def_module::parseTemplate('', $result);
         } else {
             return '%data_feed_nofeed%';
         }
     }
     if (!$this->checkIfFeedable($module, $method)) {
         if (def_module::isXSLTResultMode()) {
             $result = array('error' => '%data_feed_wrong%');
             return def_module::parseTemplate('', $result);
         } else {
             return '%data_feed_wrong%';
         }
     }
     $rss_per_page = (int) regedit::getInstance()->getVal("//modules/news/rss_per_page");
     $rss_per_page = $rss_per_page > 0 ? $rss_per_page : 10;
     $sel = new selector('pages');
     $sel->option('return')->value('id');
     $sel->where('hierarchy')->page($elementId)->childs(100);
     $sel->types('hierarchy-type')->name($module, $method);
     if ($type->getFieldId('publish_time')) {
         $sel->order('publish_time')->desc();
     }
     $sel->limit(0, $rss_per_page);
     $result = array();
     foreach ($sel->result() as $res) {
         $result[] = $res['id'];
     }
     $exporter = new xmlExporter('rss');
     $exporter->addElements($result);
     $exporter->setIgnoreRelations();
     $umiDump = $exporter->execute();
     $styleFile = CURRENT_WORKING_DIR . "/" . $xslPath;
     if (!is_file($styleFile)) {
         throw new publicException("Can't load exporter {$styleFile}");
     }
     $doc = new DOMDocument("1.0", "utf-8");
     $doc->formatOutput = XML_FORMAT_OUTPUT;
     $doc->loadXML($umiDump->saveXML());
     if (!$elementId) {
         $elementId = umiHierarchy::getInstance()->getDefaultElementId();
     }
     $element = umiHierarchy::getInstance()->getElement($elementId);
     $language = langsCollection::getInstance()->getLang($element->getLangId())->getPrefix();
     $link = umiHierarchy::getInstance()->getPathById($elementId);
     $description = $element->getIsDefault() ? '' : $element->getName();
     $templater = umiTemplater::create('XSLT', $styleFile);
     $templater->setAdditionalVariables(array('link' => $link, 'description' => $description, 'language' => $language));
     $resultXml = $templater->parse($doc);
     $buffer = outputBuffer::current();
     $buffer->contentType('text/xml');
     $buffer->clear();
     $buffer->push($resultXml);
     $buffer->end();
 }