Skip to content
Snippets Groups Projects
ApprovalActionSubjectRouterModel.php 1.83 KiB
Newer Older
<?php

class Courses_ApprovalActionsSubjectRouterModel extends Requests_ApprovalActionModel
{
    public static function find($id)
    {
        $db = Zend_Registry::get('db');

        $select = new Zend_Db_Select($db);
        $select->from(array('a' => 'creqApprovalActions'));
        $select->join(array('d' => 'creqApprovalActionsSubjectRouter'), 'a.approvalActionId = d.approvalActionId');
        if (Unl_Util::isArray($id)) {
            $select->where('a.approvalActionId IN(?)', $id);
        } else {
            $select->where('a.approvalActionId = ?', $id);
        }

        $records = $db->query($select)->fetchAll();
        $objects = new Unl_Model_Collection(__CLASS__);
        foreach ($records as $record) {
            $object = Unl_Model_Registry::getInstance()->getOrAdd(new self($record));
            $objectId = $object->getId();
            $objects[$objectId] = $object;
        }

        if (Unl_Util::isArray($objects)) {
            return $objects;
        } else {
            return array_pop($objects);
        }

    }

    public function consider($requests)
    {
        $requestParentCourses = Courses_CourseModel::findParentOfRequest($requests);
        $requestCurrentCourses = Courses_CourseModel::findLatestOfRequest($requests);
        foreach ($requests as $request) {
            $course = $requestParentCourses[$request->getId()];
            if (!$course) {
                $course = $requestCurrentCourses[$request->getId()];
            }
            $subject = $course->getSubject();
            $request->setState($subject);
        }
        Requests_RequestModel::save($requests);
        Requests_ApprovalChainModel::advance($requests);
        return $requests;
    }

    public function userMadeDecisions($requests, $requestDecisions)
    {
        // Don't do anything here, this is an automated action.
    }
}