コード例 #1
0
 public static function cmp($a, $b)
 {
     if (Specimen::$SORT_PRIORITIES_FOR_LINK_TO_TYPES[$a->link_to_type] == Specimen::$SORT_PRIORITIES_FOR_LINK_TO_TYPES[$b->link_to_type]) {
         if ($a->user_id == $b->user_id) {
             if ($a->link_to_id == $b->link_to_id) {
                 if ($a->ordering == $b->ordering) {
                     if ($a->name == $b->name) {
                         if ($a->catalog_identifier == $b->catalog_identifier) {
                             return 0;
                         }
                         return $a->catalog_identifier < $b->catalog_identifier ? -1 : 1;
                     }
                     return $a->name < $b->name ? -1 : 1;
                 }
                 return $a->ordering < $b->ordering ? -1 : 1;
             }
             if ($a->link_to_type == 'authoritative_plant') {
                 return Authoritative_Plant::cmp($a->getLinked(), $b->getLinked());
             }
             if ($a->link_to_type == 'notebook_page') {
                 return Notebook_Page::cmp($a->getLinked(), $b->getLinked());
             }
             return 0;
         }
         return User::cmp($a->getUser(), $b->getUser());
     }
     return Specimen::$SORT_PRIORITIES_FOR_LINK_TO_TYPES[$a->link_to_type] < Specimen::$SORT_PRIORITIES_FOR_LINK_TO_TYPES[$b->link_to_type] ? -1 : 1;
 }
コード例 #2
0
 function testCmp()
 {
     $n1 = Notebook_Page::getOneFromDb(['notebook_page_id' => 1101], $this->DB);
     $n2 = Notebook_Page::getOneFromDb(['notebook_page_id' => 1102], $this->DB);
     //            util_prePrintR($n1);
     //            util_prePrintR($n2);
     $this->assertEqual(Notebook_Page::cmp($n1, $n2), -1);
     $this->assertEqual(Notebook_Page::cmp($n1, $n1), 0);
     $this->assertEqual(Notebook_Page::cmp($n2, $n1), 1);
     $nps = Notebook_Page::getAllFromDb([], $this->DB);
     usort($nps, 'Notebook_Page::cmp');
     $this->assertEqual(1101, $nps[0]->notebook_page_id);
     $this->assertEqual(1102, $nps[1]->notebook_page_id);
     $this->assertEqual(1103, $nps[2]->notebook_page_id);
     $this->assertEqual(1104, $nps[3]->notebook_page_id);
 }
コード例 #3
0
 public static function cmp($a, $b)
 {
     if ($a->notebook_page_id == $b->notebook_page_id) {
         if ($a->label_metadata_structure_id == $b->label_metadata_structure_id) {
             if ($a->value_metadata_term_value_id == 0 && $b->value_metadata_term_value_id == 0) {
                 return strcmp($a->value_open, $b->value_open);
             }
             if ($a->value_metadata_term_value_id == 0) {
                 return 1;
             }
             if ($b->value_metadata_term_value_id == 0) {
                 return -1;
             }
             return Metadata_Structure::cmp($a->getMetadataTermValue(), $b->getMetadataTermValue());
         }
         return Metadata_Structure::cmp($a->getMetadataStructure(), $b->getMetadataStructure());
     }
     return Notebook_Page::cmp($a->getNotebookPage(), $b->getNotebookPage());
 }