Problem with deleting a plan task

Bug #1850559 reported by Robert Lyon on 2019-10-29
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Mahara
Status tracked in 20.04
19.10
Medium
Unassigned
20.04
Medium
Unassigned

Bug Description

Error message when I wanted to delete a group plan that had 1 task

[WAR] 98 (artefact/plans/tools/PlansTools.php:691) Trying to get property 'plugin' of non-object
Call stack (most recent first):

    log_message("Trying to get property 'plugin' of non-object", 8, true, true, "/home/kristina/code/1910stable/htdocs/artefact/pla...", 691) at /home/kristina/code/1910stable/htdocs/lib/errors.php:521
    error(8, "Trying to get property 'plugin' of non-object", "/home/kristina/code/1910stable/htdocs/artefact/pla...", 691, array(size 8)) at /home/kristina/code/1910stable/htdocs/artefact/plans/tools/PlansTools.php:691
    artefact\plans\tools\PlansTools::deleteViewAndAssignedArtefacts(object(View)) at /home/kristina/code/1910stable/htdocs/artefact/plans/lib.php:1009
    ArtefactTypeTask->delete() at /home/kristina/code/1910stable/htdocs/artefact/lib.php:722
    ArtefactType->delete() at /home/kristina/code/1910stable/htdocs/artefact/plans/lib.php:319
    ArtefactTypePlan->delete() at /home/kristina/code/1910stable/htdocs/artefact/plans/plan/delete.php:94
    deleteplanform_submit(object(Pieform), array(size 2)) at /home/kristina/code/1910stable/htdocs/lib/pieforms/pieform.php:546
    Pieform->__construct(array(size 6)) at /home/kristina/code/1910stable/htdocs/lib/pieforms/pieform.php:168
    Pieform::process(array(size 6)) at /home/kristina/code/1910stable/htdocs/lib/mahara.php:5432
    pieform(array(size 6)) at /home/kristina/code/1910stable/htdocs/artefact/plans/plan/delete.php:80

[WAR] 98 (artefact/plans/tools/PlansTools.php:692) Trying to get property 'artefacttype' of non-object
Call stack (most recent first):

    log_message("Trying to get property 'artefacttype' of non-objec...", 8, true, true, "/home/kristina/code/1910stable/htdocs/artefact/pla...", 692) at /home/kristina/code/1910stable/htdocs/lib/errors.php:521
    error(8, "Trying to get property 'artefacttype' of non-objec...", "/home/kristina/code/1910stable/htdocs/artefact/pla...", 692, array(size 8)) at /home/kristina/code/1910stable/htdocs/artefact/plans/tools/PlansTools.php:692
    artefact\plans\tools\PlansTools::deleteViewAndAssignedArtefacts(object(View)) at /home/kristina/code/1910stable/htdocs/artefact/plans/lib.php:1009
    ArtefactTypeTask->delete() at /home/kristina/code/1910stable/htdocs/artefact/lib.php:722
    ArtefactType->delete() at /home/kristina/code/1910stable/htdocs/artefact/plans/lib.php:319
    ArtefactTypePlan->delete() at /home/kristina/code/1910stable/htdocs/artefact/plans/plan/delete.php:94
    deleteplanform_submit(object(Pieform), array(size 2)) at /home/kristina/code/1910stable/htdocs/lib/pieforms/pieform.php:546
    Pieform->__construct(array(size 6)) at /home/kristina/code/1910stable/htdocs/lib/pieforms/pieform.php:168
    Pieform::process(array(size 6)) at /home/kristina/code/1910stable/htdocs/lib/mahara.php:5432
    pieform(array(size 6)) at /home/kristina/code/1910stable/htdocs/artefact/plans/plan/delete.php:80

[WAR] 98 (lib/errors.php:536) [Error]: Cannot instantiate abstract class ArtefactType
Call stack (most recent first):

    exception(object(Error)) at Unknown:0

Robert Lyon (robertl-9) on 2019-10-29
Changed in mahara:
status: New → In Progress
importance: Undecided → Medium
milestone: none → 19.10.0
Changed in mahara:
milestone: 19.10.0 → 19.10.1
Robert Lyon (robertl-9) wrote :

Steps to reproduce:

1) new install then log in as admin user
2) Go to create -> files and create a folder called "Animals"
3) go into this folder and create a folder called "Cats"
4) go into that folder and add some images of cats (find some in the Internet)
5) Go to create -> pages and collections and create a page called "Test outcome"
6) Edit the page and add:
- a 'folder' block to the page and select the folder "Cats" to display
- an 'image' block to the page and select one of the images in the "cats" folder
7) Go to create -> Plans and create a plan called 'Test outcome plan' and have 'Template' and 'Assignment tasks' turned on (set to 'Yes')
8) Create a task called "Test outcome plan task" and under 'Assign portfolio' choose the page you created in step 5
9) Create a group called "Test group"
10) Choose 'Plans' in group's menu bar and click 'new plan'
11) Click the 'From template' button and choose the plan created in step 7 and save
12) You should see a page with title: Plan 'Test outcome plan' tasks | Test group
13) Delete the task - see the error

Robert Lyon (robertl-9) wrote :

I believe this is happening because in htdocs/artefact/plans/tools/PlansTools.php the function deleteViewAndAssignedArtefacts() sets up an array of artefacts to delete then loops thru them to see if they have a parent. If they have a parent then they go into a parentIdChildInstancesArray array and are deleted there. But if the artefacts parent also has a parent then we can end up in this situation:

Home
|_ Animals
   |_ Cats
      |_ tiger.jpg

Where the loop deletes the 'Cats' folder before trying to delete the 'tiger.jpg' but can't as the folder is gone already.

To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers