Beispiel #1
0
 /**
  * test Set nest with no specified parent data.
  *
  * The result should be the same as the input.
  * For an easier comparison, unset all the empty children arrays from the result
  *
  * @return void
  */
 public function testMissingParent()
 {
     $input = array(array('id' => 1), array('id' => 2), array('id' => 3), array('id' => 4), array('id' => 5), array('id' => 6), array('id' => 7), array('id' => 8), array('id' => 9), array('id' => 10));
     $result = Set::nest($input, array('idPath' => '/id', 'parentPath' => '/parent_id'));
     foreach ($result as &$row) {
         if (empty($row['children'])) {
             unset($row['children']);
         }
     }
     $this->assertEquals($input, $result);
 }
Beispiel #2
0
 /**
  * In the event of ambiguous results returned (multiple top level results, with different parent_ids)
  * top level results with different parent_ids to the first result will be dropped
  *
  * @param mixed $state
  * @param mixed $query
  * @param array $results
  * @return array Threaded results
  */
 protected function _findThreaded($state, $query, $results = array())
 {
     if ($state === 'before') {
         return $query;
     } elseif ($state === 'after') {
         $parent = 'parent_id';
         if (isset($query['parent'])) {
             $parent = $query['parent'];
         }
         return Set::nest($results, array('idPath' => '/' . $this->alias . '/' . $this->primaryKey, 'parentPath' => '/' . $this->alias . '/' . $parent));
     }
 }