public static function unapprove_plan($planorid) {
        static::require_enabled();
        $plan = $planorid;
        if (!is_object($plan)) {
            $plan = new plan($plan);
        }

        // We need to be able to view the plan at least.
        if (!$plan->can_read()) {
            throw new required_capability_exception($plan->get_context(), 'moodle/competency:planview', 'nopermissions', '');
        }

        if ($plan->is_based_on_template()) {
            throw new coding_exception('Template plans are always approved.');   // This should never happen.
        } else if ($plan->get('status') != plan::STATUS_ACTIVE) {
            throw new coding_exception('The plan cannot be sent back to draft at this stage.');
        } else if (!$plan->can_review()) {
            throw new required_capability_exception($plan->get_context(), 'moodle/competency:planmanage', 'nopermissions', '');
        }

        $plan->set('status', plan::STATUS_DRAFT);
        $result = $plan->update();

        // Trigger unapproved event.
        \core\event\competency_plan_unapproved::create_from_plan($plan)->trigger();

        return $result;
    }
public static function unapprove_plan($planorid) {
        static::require_enabled();
        $plan = $planorid;
        if (!is_object($plan)) {
            $plan = new plan($plan);
        }

        // We need to be able to view the plan at least.
        if (!$plan->can_read()) {
            throw new required_capability_exception($plan->get_context(), 'moodle/competency:planview', 'nopermissions', '');
        }

        if ($plan->is_based_on_template()) {
            throw new coding_exception('Template plans are always approved.');   // This should never happen.
        } else if ($plan->get('status') != plan::STATUS_ACTIVE) {
            throw new coding_exception('The plan cannot be sent back to draft at this stage.');
        } else if (!$plan->can_review()) {
            throw new required_capability_exception($plan->get_context(), 'moodle/competency:planmanage', 'nopermissions', '');
        }

        $plan->set('status', plan::STATUS_DRAFT);
        $result = $plan->update();

        // Trigger unapproved event.
        \core\event\competency_plan_unapproved::create_from_plan($plan)->trigger();

        return $result;
    }
public static function unapprove_plan ( $ planorid ) { static :: require_enabled ( ) ; $ plan = $ planorid ; if ( ! is_object ( $ plan ) ) { $ plan = new plan ( $ plan ) ; } // We need to be able to view the plan at least. if ( ! $ plan -> can_read ( ) ) { throw new required_capability_exception ( $ plan -> get_context ( ) , 'moodle/competency:planview' , 'nopermissions' , '' ) ; } if ( $ plan -> is_based_on_template ( ) ) { throw new coding_exception ( 'Template plans are always approved.' ) ; // This should never happen. } else if ( $ plan -> get ( 'status' ) != plan :: STATUS_ACTIVE ) { throw new coding_exception ( 'The plan cannot be sent back to draft at this stage.' ) ; } else if ( ! $ plan -> can_review ( ) ) { throw new required_capability_exception ( $ plan -> get_context ( ) , 'moodle/competency:planmanage' , 'nopermissions' , '' ) ; } $ plan -> set ( 'status' , plan :: STATUS_DRAFT ) ; $ result = $ plan -> update ( ) ; // Trigger unapproved event. \ core \ event \ competency_plan_unapproved :: create_from_plan ( $ plan ) -> trigger ( ) ; return $ result ; }
Unapprove a plan.

This means making the plan draft.

@param  int|plan $planorid The plan, or its ID.
@return bool
Unapprove a plan .