Beispiel #1
0
 /**
  * Returns nested data set
  * 
  * @param int|null $rootNode Id of top item
  * @return array
  */
 public function generateNestedData($rootId = null)
 {
     $conditions = array();
     $fields = null;
     $order = $this->alias . '.lft ASC';
     $recursive = -1;
     $results = $this->find('all', compact('conditions', 'fields', 'order', 'recursive'));
     return Hash::nest($results, array('root' => $rootId));
 }
 public function dbFix()
 {
     $eTree = Hash::nest($this->Election->children('53c021ec-e11c-49be-b6c8-5c5aacb5b862', false, array('id', 'parent_id', 'name')));
     $elections = array();
     foreach ($eTree as $town) {
         foreach ($town['children'] as $cunli) {
             $elections[$cunli['Election']['id']] = "{$town['Election']['name']} > {$cunli['Election']['name']}";
         }
     }
     $bulletins = $this->Election->Bulletin->find('all', array('conditions' => array('count_elections' => 0, 'name like' => '%雲林縣 > 村里長%')));
     foreach ($bulletins as $bulletin) {
         $bulletinMatched = false;
         foreach ($elections as $electionId => $filter) {
             if (false === $bulletinMatched && false !== strpos($bulletin['Bulletin']['name'], $filter)) {
                 $bulletinMatched = true;
                 if ($this->Election->Bulletin->save(array('Bulletin' => array('id' => $bulletin['Bulletin']['id'], 'count_elections' => 1)))) {
                     $this->Election->save(array('Election' => array('id' => $electionId, 'bulletin_key' => $bulletin['Bulletin']['id'])));
                     $this->Election->BulletinsElection->create();
                     $this->Election->BulletinsElection->save(array('BulletinsElection' => array('Election_id' => $electionId, 'Bulletin_id' => $bulletin['Bulletin']['id'])));
                 }
             }
         }
     }
 }
Beispiel #3
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 string $state
  * @param mixed $query
  * @param array $results
  * @return array Threaded results
  */
 protected function _findThreaded($state, $query, $results = array())
 {
     if ($state === 'before') {
         return $query;
     }
     $parent = 'parent_id';
     if (isset($query['parent'])) {
         $parent = $query['parent'];
     }
     return Hash::nest($results, array('idPath' => '{n}.' . $this->alias . '.' . $this->primaryKey, 'parentPath' => '{n}.' . $this->alias . '.' . $parent));
 }
Beispiel #4
0
 /**
  * Tests that nest() throws an InvalidArgumentException when providing an invalid input.
  *
  * @expectedException InvalidArgumentException
  * @return void
  */
 public function testNestInvalid()
 {
     $input = array(array('ParentCategory' => array('id' => '1', 'name' => 'Lorem ipsum dolor sit amet', 'parent_id' => '1')));
     Hash::nest($input);
 }
Beispiel #5
0
 /**
  * test Hash 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 = Hash::nest($input, array('idPath' => '{n}.id', 'parentPath' => '{n}.parent_id'));
     foreach ($result as &$row) {
         if (empty($row['children'])) {
             unset($row['children']);
         }
     }
     $this->assertEquals($input, $result);
 }
Beispiel #6
0
 /**
  * Tests that nest() returns an empty array for invalid input instead of throwing notices.
  *
  * @return void
  */
 public function testNestInvalid()
 {
     $input = array(array('ParentCategory' => array('id' => '1', 'name' => 'Lorem ipsum dolor sit amet', 'parent_id' => '1')));
     $result = Hash::nest($input);
     $this->assertSame(array(), $result);
 }