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; }
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); }
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()); }