/**
 * Smarty plugin
 * @package Smarty
 * @subpackage plugins
 */
function smarty_function_EmbeddedAuthorizationList($params, &$smarty)
{
    global $current_company, $current_user;
    $object_type_id = $params['object_type_id'];
    $object_id = $params['object_id'];
    $ulf = new UserListFactory();
    $hlf = new HierarchyListFactory();
    $hotlf = new HierarchyObjectTypeListFactory();
    $alf = new AuthorizationListFactory();
    $alf->setObjectType($object_type_id);
    //$authorizing_obj = $alf->getObjectHandler()->getById( $object_id )->getCurrent();
    $tmp_authorizing_obj = $alf->getObjectHandler()->getById($object_id);
    if (is_object($tmp_authorizing_obj)) {
        $authorizing_obj = $tmp_authorizing_obj->getCurrent();
    } else {
        return FALSE;
    }
    //var_dump($authorizing_obj);
    unset($alf);
    $user_id = $authorizing_obj->getUserObject()->getId();
    $alf = new AuthorizationListFactory();
    $alf->getByObjectTypeAndObjectId($object_type_id, $object_id);
    foreach ($alf as $authorization_obj) {
        $authorization_data[] = array('id' => $authorization_obj->getId(), 'created_by_full_name' => $ulf->getById($authorization_obj->getCreatedBy())->getCurrent()->getFullName(), 'authorized' => $authorization_obj->getAuthorized(), 'created_date' => $authorization_obj->getCreatedDate(), 'created_by' => $authorization_obj->getCreatedBy(), 'updated_date' => $authorization_obj->getUpdatedDate(), 'updated_by' => $authorization_obj->getUpdatedBy(), 'deleted_date' => $authorization_obj->getDeletedDate(), 'deleted_by' => $authorization_obj->getDeletedBy());
        $user_id = $authorization_obj->getCreatedBy();
    }
    if ($authorizing_obj->getStatus() == 30) {
        //If the object is still pending authorization, display who its waiting on...
        $hierarchy_id = $hotlf->getByCompanyIdAndObjectTypeId($current_company->getId(), $object_type_id)->getCurrent()->getHierarchyControl();
        Debug::Text('Hierarchy ID: ' . $hierarchy_id, __FILE__, __LINE__, __METHOD__, 10);
        //Get Parents
        $parent_level_user_ids = $hlf->getParentLevelIdArrayByHierarchyControlIdAndUserId($hierarchy_id, $user_id);
        Debug::Arr($parent_level_user_ids, 'Parent Level Ids', __FILE__, __LINE__, __METHOD__, 10);
        if ($parent_level_user_ids !== FALSE and count($parent_level_user_ids) > 0) {
            Debug::Text('Adding Pending Line: ', __FILE__, __LINE__, __METHOD__, 10);
            foreach ($parent_level_user_ids as $parent_user_id) {
                $created_by_full_name[] = $ulf->getById($parent_user_id)->getCurrent()->getFullName();
            }
            $authorization_data[] = array('id' => NULL, 'created_by_full_name' => implode('<br>', $created_by_full_name), 'authorized' => NULL, 'created_date' => NULL, 'created_by' => NULL);
        }
    }
    $smarty->assign_by_ref('authorization_data', $authorization_data);
    $smarty->display('authorization/EmbeddedAuthorizationList.tpl');
}
 * $Id: AuthorizationNotify.php 1396 2007-11-07 16:49:35Z ipso $
 * $Date: 2007-11-07 08:49:35 -0800 (Wed, 07 Nov 2007) $
 */
require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'includes' . DIRECTORY_SEPARATOR . 'global.inc.php';
require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'includes' . DIRECTORY_SEPARATOR . 'CLI.inc.php';
$permission = new Permission();
$hlf = new HierarchyListFactory();
$hotlf = new HierarchyObjectTypeListFactory();
//Get all users
$ulf = new UserListFactory();
$ulf->getByStatus(10, NULL, array('company_id' => 'asc'));
foreach ($ulf as $user) {
    //Check authorize permissions for eact object type.
    if ($permission->Check('default_schedule', 'authorize', $user->getId(), $user->getCompany())) {
        //Get Hierarchy Control ID
        $default_schedule_hierarchy_id = $hotlf->getByCompanyIdAndObjectTypeId($user->getCompany(), 10)->getCurrent()->getHierarchyControl();
        Debug::Text('Default Schedule Hierarchy ID: ' . $default_schedule_hierarchy_id, __FILE__, __LINE__, __METHOD__, 10);
        //Get all levels below us.
        $default_schedule_levels = $hlf->getLevelsByHierarchyControlIdAndUserId($default_schedule_hierarchy_id, $user->getId());
        Debug::Arr($default_schedule_levels, 'Default Schedule Levels', __FILE__, __LINE__, __METHOD__, 10);
        $default_schedule_user_id = $user->getId();
        $default_schedule_node_data = $hlf->getByHierarchyControlIdAndUserId($default_schedule_hierarchy_id, $default_schedule_user_id);
        //Get current level IDs
        $default_schedule_current_level_user_ids = $hlf->getCurrentLevelIdArrayByHierarchyControlIdAndUserId($default_schedule_hierarchy_id, $default_schedule_user_id);
        Debug::Arr($default_schedule_current_level_user_ids, 'Default Schedule Current Level Ids', __FILE__, __LINE__, __METHOD__, 10);
        //Get Parents
        $default_schedule_parent_level_user_ids = $hlf->getParentLevelIdArrayByHierarchyControlIdAndUserId($default_schedule_hierarchy_id, $default_schedule_user_id);
        Debug::Arr($default_schedule_parent_level_user_ids, 'Default Schedule Parent Level Ids', __FILE__, __LINE__, __METHOD__, 10);
        //Get Children
        $default_schedule_child_level_user_ids = $hlf->getChildLevelIdArrayByHierarchyControlIdAndUserId($default_schedule_hierarchy_id, $default_schedule_user_id);
        Debug::Arr($default_schedule_child_level_user_ids, 'Default Schedule Child Level Ids', __FILE__, __LINE__, __METHOD__, 10);
 function getEmailMessageAddresses()
 {
     $olf = $this->getObjectHandler();
     if (is_object($olf)) {
         $olf->getById($this->getObject());
         if ($olf->getRecordCount() > 0) {
             $obj = $olf->getCurrent();
             switch ($this->getObjectType()) {
                 case 5:
                 case 100:
                     Debug::Text('Email Object Type... Parent ID: ' . $this->getParent(), __FILE__, __LINE__, __METHOD__, 10);
                     if ($this->getParent() == 0) {
                         $user_ids[] = $obj->getId();
                     } else {
                         $mlf = new MessageListFactory();
                         $mlf->getById($this->getParent());
                         if ($mlf->getRecordCount() > 0) {
                             $m_obj = $mlf->getCurrent();
                             $user_ids[] = $m_obj->getCreatedBy();
                         }
                         Debug::Text('cEmail Object Type... Parent ID: ' . $this->getParent(), __FILE__, __LINE__, __METHOD__, 10);
                     }
                     break;
                 case 40:
                     $user_ids[] = $obj->getId();
                     break;
                 case 50:
                     //Request
                     //Get all users who have contributed to the thread.
                     $mlf = new MessageListFactory();
                     $mlf->getMessagesInThreadById($this->getId());
                     Debug::Text(' Messages In Thread: ' . $mlf->getRecordCount(), __FILE__, __LINE__, __METHOD__, 10);
                     if ($mlf->getRecordCount() > 0) {
                         foreach ($mlf as $m_obj) {
                             $user_ids[] = $m_obj->getCreatedBy();
                         }
                     }
                     unset($mlf, $m_obj);
                     //Debug::Arr($user_ids, 'User IDs in Thread: ', __FILE__, __LINE__, __METHOD__,10);
                     //Only alert direct supervisor to request at this point. Because we need to take into account
                     //if the request was authorized or not to determine if we should email the next higher level in the hierarchy.
                     if ($this->getParent() == 0) {
                         //Get direct parent in hierarchy.
                         $u_obj = $obj->getUserObject();
                         //Find proper hierarchy to use for this object
                         $hotlf = new HierarchyObjectTypeListFactory();
                         $control_id = $hotlf->getByCompanyIdAndObjectTypeId($u_obj->getCompany(), $this->getObjectType())->getCurrent()->getHierarchyControl();
                         Debug::Text(' Hierarchy Control ID: ' . $control_id, __FILE__, __LINE__, __METHOD__, 10);
                         $hlf = new HierarchyListFactory();
                         $node_data = $hlf->getByHierarchyControlIdAndUserId($control_id, $u_obj->getId());
                         if ($node_data['parent_id'] != 0) {
                             $user_ids[] = $node_data['parent_id'];
                         }
                         unset($hotlf, $control_id, $hlf, $node_data);
                     }
                     global $current_user;
                     if (isset($current_user) and is_object($current_user) and isset($user_ids) and is_array($user_ids)) {
                         $user_ids = array_unique($user_ids);
                         $current_user_key = array_search($current_user->getId(), $user_ids);
                         Debug::Text(' Current User Key: ' . $current_user_key, __FILE__, __LINE__, __METHOD__, 10);
                         if ($current_user_key !== FALSE) {
                             Debug::Text(' Removing Current User From Recipient List...' . $current_user->getId(), __FILE__, __LINE__, __METHOD__, 10);
                             unset($user_ids[$current_user_key]);
                         }
                     } else {
                         Debug::Text(' Current User Object not available...', __FILE__, __LINE__, __METHOD__, 10);
                     }
                     unset($current_user, $current_user_key);
                     break;
                 case 90:
                     $user_ids[] = $obj->getUser();
                     break;
             }
         }
         if (isset($user_ids) and is_array($user_ids)) {
             //Get user preferences and determine if they accept email notifications.
             Debug::Arr($user_ids, 'Recipient User Ids: ', __FILE__, __LINE__, __METHOD__, 10);
             $uplf = new UserPreferenceListFactory();
             $uplf->getByUserId($user_ids);
             if ($uplf->getRecordCount() > 0) {
                 foreach ($uplf as $up_obj) {
                     if ($up_obj->getEnableEmailNotificationMessage() == TRUE and $up_obj->getUserObject()->getStatus() == 10) {
                         if ($up_obj->getUserObject()->getWorkEmail() != '') {
                             $retarr[] = $up_obj->getUserObject()->getWorkEmail();
                         }
                         if ($up_obj->getEnableEmailNotificationHome() and $up_obj->getUserObject()->getHomeEmail() != '') {
                             $retarr[] = $up_obj->getUserObject()->getHomeEmail();
                         }
                     }
                 }
                 if (isset($retarr)) {
                     Debug::Arr($retarr, 'Recipient Email Addresses: ', __FILE__, __LINE__, __METHOD__, 10);
                     return $retarr;
                 }
             }
         }
     }
     return FALSE;
 }