コード例 #1
0
ファイル: treeentity.php プロジェクト: akniyev/arteva.ru
 public static function getDeepestCommonParent($nodeInfo = array(), $parameters = array())
 {
     Assert::expectNotEmptyArray($nodeInfo, 'nodeInfo');
     $filter = array();
     $msg = Loc::getMessage('SALE_LOCATION_TREE_ENTITY_BAD_ARGUMENT_NODEINFO_MISFORMED_EXCEPTION');
     $min = false;
     $max = false;
     foreach ($nodeInfo as $node) {
         //$node['ID'] = Assert::expectIntegerPositive($node['ID'], false, $msg);
         $node['LEFT_MARGIN'] = Assert::expectIntegerPositive($node['LEFT_MARGIN'], false, $msg);
         $node['RIGHT_MARGIN'] = Assert::expectIntegerPositive($node['RIGHT_MARGIN'], false, $msg);
         if ($min === false || $node['LEFT_MARGIN'] < $min) {
             $min = $node['LEFT_MARGIN'];
         }
         if ($max === false || $node['RIGHT_MARGIN'] > $max) {
             $max = $node['RIGHT_MARGIN'];
         }
     }
     if (empty($parameters)) {
         $parameters = array();
     }
     if (!is_array($parameters['order'])) {
         $parameters['order'] = array();
     }
     $parameters['filter']['<LEFT_MARGIN'] = $min;
     $parameters['filter']['>RIGHT_MARGIN'] = $max;
     $parameters['order'] = array_merge(array('LEFT_MARGIN' => 'desc', 'RIGHT_MARGIN' => 'asc'), $parameters['order']);
     $parameters['limit'] = 1;
     return static::getList($parameters);
 }
コード例 #2
0
ファイル: connector.php プロジェクト: akniyev/arteva.ru
 /**
  * Functions for massive check for link type
  * 
  * 
  */
 public static function getLinkStatusForMultipleNodes($nodeInfo = array(), $entityPrimary, $connectors = false)
 {
     $nodeInfo = Assert::expectNotEmptyArray($nodeInfo, '$nodeInfo');
     $entityPrimary = Assert::expectStringNotNull($entityPrimary, '$entityPrimary');
     $result = array();
     if (!static::checkLinkUsageAny($entityPrimary)) {
         foreach ($nodeInfo as $node) {
             $result[$node['ID']] = self::LSTAT_BELOW_CONNECTOR;
         }
         return $result;
     }
     if (!is_array($connectors)) {
         $connectors = static::getConnectedLocationsInfo($entityPrimary);
     }
     foreach ($nodeInfo as $node) {
         $node = Assert::expectNotEmptyArray($node, '$nodeInfo[]');
         $node['ID'] = Assert::expectIntegerPositive($node['ID'], '$nodeInfo[][ID]');
         $node['LEFT_MARGIN'] = Assert::expectIntegerPositive($node['LEFT_MARGIN'], '$nodeInfo[][LEFT_MARGIN]');
         $node['RIGHT_MARGIN'] = Assert::expectIntegerPositive($node['RIGHT_MARGIN'], '$nodeInfo[][RIGHT_MARGIN]');
         $result[$node['ID']] = false;
         foreach ($connectors as $connector) {
             if ($connector['ID'] == $node['ID']) {
                 $result[$node['ID']] = self::LSTAT_IS_CONNECTOR;
                 break;
             } elseif ($node['LEFT_MARGIN'] >= $connector['LEFT_MARGIN'] && $node['RIGHT_MARGIN'] <= $connector['RIGHT_MARGIN']) {
                 $result[$node['ID']] = self::LSTAT_BELOW_CONNECTOR;
                 break;
             } elseif ($node['LEFT_MARGIN'] <= $connector['LEFT_MARGIN'] && $node['RIGHT_MARGIN'] >= $connector['RIGHT_MARGIN']) {
                 $result[$node['ID']] = self::LSTAT_ABOVE_CONNECTOR;
                 break;
             }
         }
         if (!$result[$node['ID']]) {
             $result[$node['ID']] = self::LSTAT_IN_NOT_CONNECTED_BRANCH;
         }
     }
     return $result;
 }