Не работат Sections в Tickets.Расследование

Собственно, проблема массовая, и затрагивает не только меня и вот этого товарища, который написал вот этот пост:
modx.pro/help/384/#comment-4101
Возможно еще кого-нибудь.
Впереди ждет очень много букв, можно в прицнипе прочесть с конца…
— Расскажу о своем случае ну и о том что я сделал в целях диагностики.
Имеем VMWare на локалхосте с Ubuntu 12 server настроенной по статье Васи.
Управляется все под NGinx+php frm+mysql соответственно.

Сайты и гранты добавляю скриптами, но правда чуть видоизмененными.
Но суть в том что все работает исправно.
— Не много предисловия…
С ModX знаком не давно, буквально пару недель — из разных вариантов на кандидата в CMS для сайтов подошел именно он, в силу своей гибкости, ну и отсутствия извращенных шаблонизаторов серии джумлы и пр. Ну и много еще почему.

Сам являюсь WEB разработчиком на Java2EE, из СУБД работаю с Oracle 11g под него и кодю.
С MySql и PHP разумеется знаком, но серьезные проекты делал давно, когда еще PHP был не объектным, ухх…
— Так вот, сутки борюсь с проблемой что пакет Tickets из коробки, на локалхосте работает не верно — а именно не отрабатывает вызов [[+sections]] и возвращает Null, вне зависимости от данных в tickets_threads (они там есть)

Соответственно, первым делом проверил на modx-test --там все работает.
Потом почесал репу, предположил что возможно что-то не доставилось на локалхосте в силу например канала интернета (большие потери до репозитория), или наличия грантов.
Взял и полностью залил архив в modx-test себе на хост. Сначала только файлы, а базу указал свою, которая была ранее (и где были произведены настройки и была та же проблема) — результата не дало, форма есть, а [[+sections]] в Null.
Затем взял и залил дамп базы в ModX-test и подключился туда.
И каково же было мое удивление, что и там не заработало…

В итоге я решил попытаться понять на уровне чего идет сбой, и включил лог MySql запросов в my.cnf:
general_log_file        = /var/log/mysql/mysql.log
general_log             = 1

Ну и перезапустив Mysql и удалив кэш, запустил страничку с выводом [[!TicketForm?]]…
В итоге как и было, все по старому, но теперь я могу посмотреть в логе запрос, который сгенерила ОРМ.

Всего на эту операцию по обновлению странички xPDO загенерило 31 запрос в MySql.А именно:
SELECT `modSession`.`id` AS `modSession_id`, `modSession`.`access` AS `modSession_access`, `modSession`.`data` AS `modSession_data` FROM `modx_session` AS `modSession` WHERE `modSession`.`id` = 'auiniaopmpm8ut2l810tqh96s4'
	 SELECT `modUser`.`id` AS `modUser_id`, `modUser`.`username` AS `modUser_username`, `modUser`.`password` AS `modUser_password`, `modUser`.`cachepwd` AS `modUser_cachepwd`, `modUser`.`class_key` AS `modUser_class_key`, `modUser`.`active` AS `modUser_active`, `modUser`.`remote_key` AS `modUser_remote_key`, `modUser`.`remote_data` AS `modUser_remote_data`, `modUser`.`hash_class` AS `modUser_hash_class`, `modUser`.`salt` AS `modUser_salt`, `modUser`.`primary_group` AS `modUser_primary_group`, `modUser`.`session_stale` AS `modUser_session_stale`, `modUser`.`sudo` AS `modUser_sudo` FROM `modx_users` AS `modUser` WHERE `modUser`.`id` = 3;
	 SELECT `modUserSetting`.`user` AS `modUserSetting_user`, `modUserSetting`.`key` AS `modUserSetting_key`, `modUserSetting`.`value` AS `modUserSetting_value`, `modUserSetting`.`xtype` AS `modUserSetting_xtype`, `modUserSetting`.`namespace` AS `modUserSetting_namespace`, `modUserSetting`.`area` AS `modUserSetting_area`, `modUserSetting`.`editedon` AS `modUserSetting_editedon` FROM `modx_user_settings` AS `modUserSetting` WHERE `modUserSetting`.`user` = 3;
	 SELECT `modUserProfile`.`id` AS `modUserProfile_id`, `modUserProfile`.`internalKey` AS `modUserProfile_internalKey`, `modUserProfile`.`fullname` AS `modUserProfile_fullname`, `modUserProfile`.`email` AS `modUserProfile_email`, `modUserProfile`.`phone` AS `modUserProfile_phone`, `modUserProfile`.`mobilephone` AS `modUserProfile_mobilephone`, `modUserProfile`.`blocked` AS `modUserProfile_blocked`, `modUserProfile`.`blockeduntil` AS `modUserProfile_blockeduntil`, `modUserProfile`.`blockedafter` AS `modUserProfile_blockedafter`, `modUserProfile`.`logincount` AS `modUserProfile_logincount`, `modUserProfile`.`lastlogin` AS `modUserProfile_lastlogin`, `modUserProfile`.`thislogin` AS `modUserProfile_thislogin`, `modUserProfile`.`failedlogincount` AS `modUserProfile_failedlogincount`, `modUserProfile`.`sessionid` AS `modUserProfile_sessionid`, `modUserProfile`.`dob` AS `modUserProfile_dob`, `modUserProfile`.`gender` AS `modUserProfile_gender`, `modUserProfile`.`address` AS `modUserProfile_address`, `modUserProfile`.`country` AS `modUserProfile_country`, `modUserProfile`.`city` AS `modUserProfile_city`, `modUserProfile`.`state` AS `modUserProfile_state`, `modUserProfile`.`zip` AS `modUserProfile_zip`, `modUserProfile`.`fax` AS `modUserProfile_fax`, `modUserProfile`.`photo` AS `modUserProfile_photo`, `modUserProfile`.`comment` AS `modUserProfile_comment`, `modUserProfile`.`website` AS `modUserProfile_website`, `modUserProfile`.`extended` AS `modUserProfile_extended` FROM `modx_user_attributes` AS `modUserProfile` WHERE `modUserProfile`.`internalKey` = 3;
	 SELECT modAccessContext.id, modAccessContext.target, modAccessContext.principal, modAccessContext.authority, modAccessContext.policy, Policy.data FROM `modx_access_context` AS `modAccessContext` LEFT JOIN `modx_access_policies` `Policy` ON `modAccessContext`.`policy` =  `Policy`.`id` WHERE  ( `modAccessContext`.`principal_class` = 'modUserGroup' AND `modAccessContext`.`target` = 'web' )  ORDER BY modAccessContext.target,modAccessContext.principal,modAccessContext.authority,modAccessContext.policy ASC;
	 SELECT `modContext`.`key` AS `modContext_key`, `modContext`.`description` AS `modContext_description`, `modContext`.`rank` AS `modContext_rank` FROM `modx_context` AS `modContext` WHERE `modContext`.`key` = 'web';
	 SELECT modAccessContext.id, modAccessContext.target, modAccessContext.principal, modAccessContext.authority, modAccessContext.policy, Policy.data FROM `modx_access_context` AS `modAccessContext` LEFT JOIN `modx_access_policies` `Policy` ON `modAccessContext`.`policy` =  `Policy`.`id` WHERE  ( `modAccessContext`.`principal_class` = 'modUserGroup' AND `modAccessContext`.`target` = 'web' )  ORDER BY modAccessContext.target,modAccessContext.principal,modAccessContext.authority,modAccessContext.policy ASC;
	 SELECT COUNT(DISTINCT `TicketsSection`.`id`) FROM `modx_site_content` AS `TicketsSection` WHERE  ( `TicketsSection`.`class_key` = 'TicketsSection' AND `TicketsSection`.`published` = 1 AND `TicketsSection`.`deleted` = 0 );
	 SELECT `TicketsSection`.`id` AS `TicketsSection_id`, `TicketsSection`.`type` AS `TicketsSection_type`, `TicketsSection`.`contentType` AS `TicketsSection_contentType`, `TicketsSection`.`pagetitle` AS `TicketsSection_pagetitle`, `TicketsSection`.`longtitle` AS `TicketsSection_longtitle`, `TicketsSection`.`description` AS `TicketsSection_description`, `TicketsSection`.`alias` AS `TicketsSection_alias`, `TicketsSection`.`link_attributes` AS `TicketsSection_link_attributes`, `TicketsSection`.`published` AS `TicketsSection_published`, `TicketsSection`.`pub_date` AS `TicketsSection_pub_date`, `TicketsSection`.`unpub_date` AS `TicketsSection_unpub_date`, `TicketsSection`.`parent` AS `TicketsSection_parent`, `TicketsSection`.`isfolder` AS `TicketsSection_isfolder`, `TicketsSection`.`introtext` AS `TicketsSection_introtext`, `TicketsSection`.`content` AS `TicketsSection_content`, `TicketsSection`.`richtext` AS `TicketsSection_richtext`, `TicketsSection`.`template` AS `TicketsSection_template`, `TicketsSection`.`menuindex` AS `TicketsSection_menuindex`, `TicketsSection`.`searchable` AS `TicketsSection_searchable`, `TicketsSection`.`cacheable` AS `TicketsSection_cacheable`, `TicketsSection`.`createdby` AS `TicketsSection_createdby`, `TicketsSection`.`createdon` AS `TicketsSection_createdon`, `TicketsSection`.`editedby` AS `TicketsSection_editedby`, `TicketsSection`.`editedon` AS `TicketsSection_editedon`, `TicketsSection`.`deleted` AS `TicketsSection_deleted`, `TicketsSection`.`deletedon` AS `TicketsSection_deletedon`, `TicketsSection`.`deletedby` AS `TicketsSection_deletedby`, `TicketsSection`.`publishedon` AS `TicketsSection_publishedon`, `TicketsSection`.`publishedby` AS `TicketsSection_publishedby`, `TicketsSection`.`menutitle` AS `TicketsSection_menutitle`, `TicketsSection`.`donthit` AS `TicketsSection_donthit`, `TicketsSection`.`privateweb` AS `TicketsSection_privateweb`, `TicketsSection`.`privatemgr` AS `TicketsSection_privatemgr`, `TicketsSection`.`content_dispo` AS `TicketsSection_content_dispo`, `TicketsSection`.`hidemenu` AS `TicketsSection_hidemenu`, `TicketsSection`.`class_key` AS `TicketsSection_class_key`, `TicketsSection`.`context_key` AS `TicketsSection_context_key`, `TicketsSection`.`content_type` AS `TicketsSection_content_type`, `TicketsSection`.`uri` AS `TicketsSection_uri`, `TicketsSection`.`uri_override` AS `TicketsSection_uri_override`, `TicketsSection`.`hide_children_in_tree` AS `TicketsSection_hide_children_in_tree`, `TicketsSection`.`show_in_tree` AS `TicketsSection_show_in_tree`, `TicketsSection`.`properties` AS `TicketsSection_properties` FROM `modx_site_content` AS `TicketsSection` WHERE  ( `TicketsSection`.`class_key` = 'TicketsSection' AND `TicketsSection`.`published` = 1 AND `TicketsSection`.`deleted` = 0 )  ORDER BY `TicketsSection`.`pagetitle` ASC LIMIT 20;
	 SELECT Acl.target, Acl.principal, Acl.authority, Acl.policy, Policy.data FROM `modx_access_resource_groups` Acl LEFT JOIN `modx_access_policies` Policy ON Policy.id = Acl.policy JOIN `modx_document_groups` ResourceGroup ON Acl.principal_class = 'modUserGroup' AND (Acl.context_key = 'web' OR Acl.context_key IS NULL OR Acl.context_key = '') AND ResourceGroup.document = '2' AND ResourceGroup.document_group = Acl.target GROUP BY Acl.target, Acl.principal, Acl.authority, Acl.policy;
	 SELECT Acl.target, Acl.principal, Acl.authority, Acl.policy, Policy.data FROM `modx_access_resource_groups` Acl LEFT JOIN `modx_access_policies` Policy ON Policy.id = Acl.policy JOIN `modx_document_groups` ResourceGroup ON Acl.principal_class = 'modUserGroup' AND (Acl.context_key = 'web' OR Acl.context_key IS NULL OR Acl.context_key = '') AND ResourceGroup.document = '4' AND ResourceGroup.document_group = Acl.target GROUP BY Acl.target, Acl.principal, Acl.authority, Acl.policy;
	 SELECT COUNT(`TicketComment`.`id`) as `comments` FROM `modx_site_content` AS `Ticket` LEFT JOIN `modx_tickets_threads` `TicketThread` ON `TicketThread`.`resource` = `Ticket`.`id` LEFT JOIN `modx_tickets_comments` `TicketComment` ON `TicketThread`.`id` = `TicketComment`.`thread` WHERE  ( `Ticket`.`parent` = 2 AND `Ticket`.`published` = 1 AND `Ticket`.`deleted` = 0 );
	 SELECT COUNT(`TicketView`.`parent`) as `views` FROM `modx_site_content` AS `Ticket` LEFT JOIN `modx_tickets_views` `TicketView` ON `TicketView`.`parent` = `Ticket`.`id` WHERE  ( `Ticket`.`parent` = 2 AND `Ticket`.`published` = 1 AND `Ticket`.`deleted` = 0 );
	 SELECT SUM(`TicketVote`.`value`) as `votes` FROM `modx_site_content` AS `Ticket` LEFT JOIN `modx_tickets_votes` `TicketVote` ON `TicketVote`.`parent` = `Ticket`.`id` AND `TicketVote`.`class` = 'Ticket' WHERE  ( `Ticket`.`parent` = 2 AND `Ticket`.`published` = 1 AND `Ticket`.`deleted` = 0 );
	 SELECT COUNT(DISTINCT `Ticket`.`id`) FROM `modx_site_content` AS `Ticket` WHERE  ( `Ticket`.`parent` = 2 AND `Ticket`.`published` = 1 AND `Ticket`.`deleted` = 0 );
	 SELECT COUNT(`TicketComment`.`id`) as `comments` FROM `modx_site_content` AS `Ticket` LEFT JOIN `modx_tickets_threads` `TicketThread` ON `TicketThread`.`resource` = `Ticket`.`id` LEFT JOIN `modx_tickets_comments` `TicketComment` ON `TicketThread`.`id` = `TicketComment`.`thread` WHERE  ( `Ticket`.`parent` = 2 AND `Ticket`.`published` = 1 AND `Ticket`.`deleted` = 0 );
	 SELECT COUNT(`TicketView`.`parent`) as `views` FROM `modx_site_content` AS `Ticket` LEFT JOIN `modx_tickets_views` `TicketView` ON `TicketView`.`parent` = `Ticket`.`id` WHERE  ( `Ticket`.`parent` = 2 AND `Ticket`.`published` = 1 AND `Ticket`.`deleted` = 0 );
	 SELECT SUM(`TicketVote`.`value`) as `votes` FROM `modx_site_content` AS `Ticket` LEFT JOIN `modx_tickets_votes` `TicketVote` ON `TicketVote`.`parent` = `Ticket`.`id` AND `TicketVote`.`class` = 'Ticket' WHERE  ( `Ticket`.`parent` = 2 AND `Ticket`.`published` = 1 AND `Ticket`.`deleted` = 0 );
	 SELECT COUNT(DISTINCT `Ticket`.`id`) FROM `modx_site_content` AS `Ticket` WHERE  ( `Ticket`.`parent` = 2 AND `Ticket`.`published` = 1 AND `Ticket`.`deleted` = 0 );
	 SELECT COUNT(`TicketComment`.`id`) as `comments` FROM `modx_site_content` AS `Ticket` LEFT JOIN `modx_tickets_threads` `TicketThread` ON `TicketThread`.`resource` = `Ticket`.`id` LEFT JOIN `modx_tickets_comments` `TicketComment` ON `TicketThread`.`id` = `TicketComment`.`thread` WHERE  ( `Ticket`.`parent` = 4 AND `Ticket`.`published` = 1 AND `Ticket`.`deleted` = 0 );
	 SELECT COUNT(`TicketView`.`parent`) as `views` FROM `modx_site_content` AS `Ticket` LEFT JOIN `modx_tickets_views` `TicketView` ON `TicketView`.`parent` = `Ticket`.`id` WHERE  ( `Ticket`.`parent` = 4 AND `Ticket`.`published` = 1 AND `Ticket`.`deleted` = 0 );
	 SELECT SUM(`TicketVote`.`value`) as `votes` FROM `modx_site_content` AS `Ticket` LEFT JOIN `modx_tickets_votes` `TicketVote` ON `TicketVote`.`parent` = `Ticket`.`id` AND `TicketVote`.`class` = 'Ticket' WHERE  ( `Ticket`.`parent` = 4 AND `Ticket`.`published` = 1 AND `Ticket`.`deleted` = 0 );
	 SELECT COUNT(DISTINCT `Ticket`.`id`) FROM `modx_site_content` AS `Ticket` WHERE  ( `Ticket`.`parent` = 4 AND `Ticket`.`published` = 1 AND `Ticket`.`deleted` = 0 );
	 SELECT COUNT(`TicketComment`.`id`) as `comments` FROM `modx_site_content` AS `Ticket` LEFT JOIN `modx_tickets_threads` `TicketThread` ON `TicketThread`.`resource` = `Ticket`.`id` LEFT JOIN `modx_tickets_comments` `TicketComment` ON `TicketThread`.`id` = `TicketComment`.`thread` WHERE  ( `Ticket`.`parent` = 4 AND `Ticket`.`published` = 1 AND `Ticket`.`deleted` = 0 );
	 SELECT COUNT(`TicketView`.`parent`) as `views` FROM `modx_site_content` AS `Ticket` LEFT JOIN `modx_tickets_views` `TicketView` ON `TicketView`.`parent` = `Ticket`.`id` WHERE  ( `Ticket`.`parent` = 4 AND `Ticket`.`published` = 1 AND `Ticket`.`deleted` = 0 );
	 SELECT SUM(`TicketVote`.`value`) as `votes` FROM `modx_site_content` AS `Ticket` LEFT JOIN `modx_tickets_votes` `TicketVote` ON `TicketVote`.`parent` = `Ticket`.`id` AND `TicketVote`.`class` = 'Ticket' WHERE  ( `Ticket`.`parent` = 4 AND `Ticket`.`published` = 1 AND `Ticket`.`deleted` = 0 );
	 SELECT COUNT(DISTINCT `Ticket`.`id`) FROM `modx_site_content` AS `Ticket` WHERE  ( `Ticket`.`parent` = 4 AND `Ticket`.`published` = 1 AND `Ticket`.`deleted` = 0 );
	 SELECT `TicketThread`.`id` AS `TicketThread_id`, `TicketThread`.`resource` AS `TicketThread_resource`, `TicketThread`.`name` AS `TicketThread_name`, `TicketThread`.`subscribers` AS `TicketThread_subscribers`, `TicketThread`.`createdon` AS `TicketThread_createdon`, `TicketThread`.`createdby` AS `TicketThread_createdby`, `TicketThread`.`deleted` AS `TicketThread_deleted`, `TicketThread`.`deletedon` AS `TicketThread_deletedon`, `TicketThread`.`deletedby` AS `TicketThread_deletedby`, `TicketThread`.`comment_last` AS `TicketThread_comment_last`, `TicketThread`.`comment_time` AS `TicketThread_comment_time` FROM `modx_tickets_threads` AS `TicketThread` WHERE `TicketThread`.`name` = 'resource-1';
	 SELECT `TicketComment`.`id`, `TicketComment`.`thread`, `TicketComment`.`parent`, `TicketComment`.`text`, `TicketComment`.`raw`, `TicketComment`.`name`, `TicketComment`.`email`, `TicketComment`.`ip`, `TicketComment`.`createdon`, `TicketComment`.`createdby`, `TicketComment`.`editedon`, `TicketComment`.`editedby`, `TicketComment`.`deleted`, `TicketComment`.`deletedon`, `TicketComment`.`deletedby`, `modUserProfile`.`internalKey`, `modUserProfile`.`fullname`, `modUserProfile`.`email`, `modUserProfile`.`phone`, `modUserProfile`.`mobilephone`, `modUserProfile`.`blocked`, `modUserProfile`.`blockeduntil`, `modUserProfile`.`blockedafter`, `modUserProfile`.`logincount`, `modUserProfile`.`lastlogin`, `modUserProfile`.`thislogin`, `modUserProfile`.`failedlogincount`, `modUserProfile`.`sessionid`, `modUserProfile`.`dob`, `modUserProfile`.`gender`, `modUserProfile`.`address`, `modUserProfile`.`country`, `modUserProfile`.`city`, `modUserProfile`.`state`, `modUserProfile`.`zip`, `modUserProfile`.`fax`, `modUserProfile`.`photo`, `modUserProfile`.`comment`, `modUserProfile`.`website`, `modUserProfile`.`extended`, `TicketThread`.`resource`, `modUser`.`username` FROM `modx_tickets_comments` AS `TicketComment` LEFT JOIN `modx_users` `modUser` ON `TicketComment`.`createdby` = `modUser`.`id` LEFT JOIN `modx_user_attributes` `modUserProfile` ON `TicketComment`.`createdby` = `modUserProfile`.`internalKey` LEFT JOIN `modx_tickets_threads` `TicketThread` ON `TicketThread`.`id` = `TicketComment`.`thread` WHERE `TicketComment`.`thread` = 1 ORDER BY id ASC;
	 SELECT `modMediaSource`.`id` AS `modMediaSource_id`, `modMediaSource`.`name` AS `modMediaSource_name`, `modMediaSource`.`description` AS `modMediaSource_description`, `modMediaSource`.`class_key` AS `modMediaSource_class_key`, `modMediaSource`.`properties` AS `modMediaSource_properties`, `modMediaSource`.`is_stream` AS `modMediaSource_is_stream` FROM `modx_media_sources` AS `modMediaSource` WHERE `modMediaSource`.`id` = 1;
	 SELECT `modSession`.`id` AS `modSession_id`, `modSession`.`access` AS `modSession_access`, `modSession`.`data` AS `modSession_data` FROM `modx_session` AS `modSession` WHERE `modSession`.`id` = 'auiniaopmpm8ut2l810tqh96s4';

Согласитесь, не плохо… Но теперь нужно найти те, которые работают для показа в снипете и отвечают за Sections.
А это в общем -то 8 и 9 запросы:
SELECT COUNT(DISTINCT `TicketsSection`.`id`)
  FROM `modx_site_content` AS `TicketsSection`
 WHERE (    `TicketsSection`.`class_key` = 'TicketsSection'
        AND `TicketsSection`.`published` = 1
        AND `TicketsSection`.`deleted` = 0);

SELECT `TicketsSection`.`id` AS `TicketsSection_id`,
       `TicketsSection`.`type` AS `TicketsSection_type`,
       `TicketsSection`.`contentType` AS `TicketsSection_contentType`,
       `TicketsSection`.`pagetitle` AS `TicketsSection_pagetitle`,
       `TicketsSection`.`longtitle` AS `TicketsSection_longtitle`,
       `TicketsSection`.`description` AS `TicketsSection_description`,
       `TicketsSection`.`alias` AS `TicketsSection_alias`,
       `TicketsSection`.`link_attributes` AS `TicketsSection_link_attributes`,
       `TicketsSection`.`published` AS `TicketsSection_published`,
       `TicketsSection`.`pub_date` AS `TicketsSection_pub_date`,
       `TicketsSection`.`unpub_date` AS `TicketsSection_unpub_date`,
       `TicketsSection`.`parent` AS `TicketsSection_parent`,
       `TicketsSection`.`isfolder` AS `TicketsSection_isfolder`,
       `TicketsSection`.`introtext` AS `TicketsSection_introtext`,
       `TicketsSection`.`content` AS `TicketsSection_content`,
       `TicketsSection`.`richtext` AS `TicketsSection_richtext`,
       `TicketsSection`.`template` AS `TicketsSection_template`,
       `TicketsSection`.`menuindex` AS `TicketsSection_menuindex`,
       `TicketsSection`.`searchable` AS `TicketsSection_searchable`,
       `TicketsSection`.`cacheable` AS `TicketsSection_cacheable`,
       `TicketsSection`.`createdby` AS `TicketsSection_createdby`,
       `TicketsSection`.`createdon` AS `TicketsSection_createdon`,
       `TicketsSection`.`editedby` AS `TicketsSection_editedby`,
       `TicketsSection`.`editedon` AS `TicketsSection_editedon`,
       `TicketsSection`.`deleted` AS `TicketsSection_deleted`,
       `TicketsSection`.`deletedon` AS `TicketsSection_deletedon`,
       `TicketsSection`.`deletedby` AS `TicketsSection_deletedby`,
       `TicketsSection`.`publishedon` AS `TicketsSection_publishedon`,
       `TicketsSection`.`publishedby` AS `TicketsSection_publishedby`,
       `TicketsSection`.`menutitle` AS `TicketsSection_menutitle`,
       `TicketsSection`.`donthit` AS `TicketsSection_donthit`,
       `TicketsSection`.`privateweb` AS `TicketsSection_privateweb`,
       `TicketsSection`.`privatemgr` AS `TicketsSection_privatemgr`,
       `TicketsSection`.`content_dispo` AS `TicketsSection_content_dispo`,
       `TicketsSection`.`hidemenu` AS `TicketsSection_hidemenu`,
       `TicketsSection`.`class_key` AS `TicketsSection_class_key`,
       `TicketsSection`.`context_key` AS `TicketsSection_context_key`,
       `TicketsSection`.`content_type` AS `TicketsSection_content_type`,
       `TicketsSection`.`uri` AS `TicketsSection_uri`,
       `TicketsSection`.`uri_override` AS `TicketsSection_uri_override`,
       `TicketsSection`.`hide_children_in_tree`
          AS `TicketsSection_hide_children_in_tree`,
       `TicketsSection`.`show_in_tree` AS `TicketsSection_show_in_tree`,
       `TicketsSection`.`properties` AS `TicketsSection_properties`
  FROM `modx_site_content` AS `TicketsSection`
 WHERE (    `TicketsSection`.`class_key` = 'TicketsSection'
        AND `TicketsSection`.`published` = 1
        AND `TicketsSection`.`deleted` = 0)
ORDER BY `TicketsSection`.`pagetitle` ASC
 LIMIT 20;

Ну вот… Корень зла вроде -бы найден, подумал я… Но-прогнав их наживую, в базе, я получил выборки без каких-либо ошибок — первый вернул 2 — количество созданных в админке ресурсов под тикеты, а второй вернул нормальную выборку, подходящую под запрос.
В итоге как я понимаю, этого вполне хватит для вывода селектед-списка на странице.
Но что-то мешает… И что не понятно.
В исходниках класс, который отвечает за построение этого списка называется getlist.class.php
ну и собственно запрос он делает такой:
public function prepareQueryBeforeCount(xPDOQuery $c) {
		if ($parents = $this->getProperty('parents')) {
			if (!is_array($parents)) {
				$parents = explode(',', $parents);
			}
			$c->where(array('parent:IN' => $parents));
		}

		$c->where(array(
			'class_key' => 'Ticket'
			,'published' => 1
			,'deleted' => 0
		));
		return $c;
Голову сломал… Но почему там Null?

Понятное дело, что проблема судя по вышестоящему описанию не в хард-коде, не в базе, а в ПО сервера.
И кстати, на Denwer эта котовасия работает!!((

Вот что стоит у меня на моей Ubuntu где проблема:
root@ubuntu:~# nginx -v
nginx version: nginx/1.2.1

root@ubuntu:~# php5 -v
PHP 5.4.6-1ubuntu1.1 (cli) (built: Nov 15 2012 01:23:47) 
Copyright © 1997-2012 The PHP Group
Zend Engine v2.4.0, Copyright © 1998-2012 Zend Technologies


mysql> select version();
+-----------------------------+
| version()                   |
+-----------------------------+
| 5.5.28-0ubuntu0.12.10.2-log |
+-----------------------------+
1 row in set (0.00 sec)

Есть идеи? Прошу прощения за длинные тред, не нашел опции спойлера под плохочитабельные части..(
Clean
19 января 2013, 22:40
modx.pro
2 019
0

Комментарии: 7

Василий Наумкин
20 января 2013, 07:43
0
У меня на php 5.4 тоже не работает.

При работе с процессорами, $response->isError() возвращает true, при отсутствии ошибок. Разбирался полдня, так и не понял, почему. Стоит сменить версию на 5.3 — сразу всё хорошо.

Видимо, надо построить отдельный сервер с 5.4 и вдумчиво точить под него.

P.S. Спойлер есть, просто не вынесен в редактор.
    Василий Наумкин
    20 января 2013, 09:33
    0
    Раскопал, в чём дело — modx.pro/development/589/
      Clean
      20 января 2013, 15:25
      0
      Молодец! Я тоже пришел в выводу в итоге, что проблема именно в PHP=))
      Ну, посмотрим чем помогут товарищи с modx.com =)
      Ждем хот фикса =)
        Василий Наумкин
        20 января 2013, 16:01
        0
        Скорее всего, они ответят, что не надо проверять результат для getList процессоров. Я и сам не знаю, зачем я его проверяю? Что там может быть, какая ошибка?

        Но, с другой стороны, конечно, всё-равно это не правильное поведение функции.
          Clean
          20 января 2013, 20:05
          0
          Как по мне- все правильно сделал, что обрабатываешь потенциальные эксепшены, это правильная практика, и ее обязательно нужно использовать при построении любых систем, как самых маленьких, так и Enterprise уровня.
          Только здесь стоило еще мне кажется писать в лог- тогда бы не пришлось так долго расследовать случай.

          Скажем в рамках своей работы на Java, у меня есть один из серьезных проектов бизнес-критикал уровня, который внедрен в Альфа Банке — и если бы каждый динамический кусок кода не приводился бы к виду
          ($response->isError()) {
          $modx->log(modX::LOG_LEVEL_ERROR, 'Message: '.$response->getMessage());
          то было бы очень сложно искать узкие места…
            Василий Наумкин
            20 января 2013, 20:10
            0
            Согласен, но в данном конкретном случае $response->getMessage() пуст, иначе мы увидели бы его на странице.

            То есть, ошибки нет, сообщения о ней — тем более, а функция проверки ложно сигнализирует, что есть трабл.

            В общем, хорошо, что ты меня подопнул разобраться с этим вопросом. Хоть я и потратил на него всё воскресенье, зато теперь у нас есть новая версия Tickets =)
              Clean
              20 января 2013, 20:15
              0
              Рад стараться, сам потихонечку начинаю вливаться в ModX и PHP кодинг, все не привычно, но надеюсь натаскаюсь, по возможности буду помогать =)
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        7