Page MenuHomeIn-Portal Phabricator

D269.id725.diff
No OneTemporary

File Metadata

Created
Fri, Sep 26, 7:55 AM

D269.id725.diff

Index: core/units/categories/categories_event_handler.php
===================================================================
--- core/units/categories/categories_event_handler.php
+++ core/units/categories/categories_event_handler.php
@@ -2359,6 +2359,7 @@
return;
}
+ $files = $this->sortByDependencies($files);
kUtil::setResourceLimit();
/** @var CategoriesItem $dummy */
@@ -2388,6 +2389,40 @@
}
/**
+ * Sort structure files array by dependencies.
+ *
+ * @param array $files Files.
+ *
+ * @return array
+ */
+ protected function sortByDependencies(array $files)
+ {
+ foreach ( $files as $template => $data ) {
+ $meta = unserialize($data['FileMetaInfo']);
+ $section = isset($meta['section']) ? $meta['section'] : '';
+ $page_name = isset($meta['name']) ? $meta['name'] : '_Auto: ' . $template;
+ $files[$template]['sort_key'] = $section . '||' . $page_name;
+ }
+
+ uasort($files, array($this, 'compareSMSTemplates'));
+
+ return $files;
+ }
+
+ /**
+ * Files array comparing.
+ *
+ * @param array $sms_template_a First item.
+ * @param array $sms_template_b Second item.
+ *
+ * @return integer
+ */
+ public function compareSMSTemplates(array $sms_template_a, array $sms_template_b)
+ {
+ return strcmp($sms_template_a['sort_key'], $sms_template_b['sort_key']);
+ }
+
+ /**
* Processes OnMassMoveUp, OnMassMoveDown events
*
* @param kEvent $event

Event Timeline