Uploaded image for project: 'Moodle'
  1. Moodle
  2. MDL-53383

navigation_node_collection -> remove function does not work without $type argument

    XMLWordPrintable

    Details

      Description

      This seems broken to me .... I think?

      > public function get($key, $type=null)

      This function will get the data by key, whatever the type is, if you pass null for $type. All great!

      > public function remove($key, $type=null) {

      If you pass null for $type, this will fail to remove the object!

      Worse, it will report the removal as a success by returning true! (I assume that's the point of the "return true"?)

      The culprit seems to be this line in the remove function.

      > if ($node->key === $key && $node->type == $type) {

      This forcibly checks the type, even if you passed null! Shouldn't it be something like:

      > if ($node->key === $key && (is_null($type) || $node->type == $type)) {

        Attachments

          Activity

            People

            Assignee:
            Unassigned
            Reporter:
            ShelterJames ShelterJames
            Peer reviewer:
            Andrew Nicols
            Integrator:
            Dan Poltawski
            Tester:
            CiBoT
            Participants:
            Component watchers:
            Adrian Greeve, Jake Dallimore, Mathew May, Mihail Geshoski, Peter Dias, Adrian Greeve, Jake Dallimore, Mathew May, Mihail Geshoski, Peter Dias, Bas Brands
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Dates

              Created:
              Updated:
              Resolved:
              Fix Release Date:
              9/May/16