public function editTaskProperties($sTaskUID = '', $iForm = 1, $iIndex = 0)

    {

        $sw_template = false;

        try {

            switch ($iForm) {

                case 1:

                    $sFilename = 'tasks/tasks_Definition.xml';

                    break;

                case 2:

                    $sFilename = 'tasks/tasks_AssignmentRules.xml';

                    break;

                case 3:

                    $sFilename = 'tasks/tasks_TimingControl.xml';

                    break;

                case 4:

                    $sFilename = 'tasks/tasks_Owner.xml';

                    break;

                case 5:

                    $sFilename = 'tasks/tasks_Permissions.xml';

                    break;

                case 6:

                    $sFilename = 'tasks/tasks_Labels.xml';

                    break;

                case 7:

                    $sFilename = 'tasks/tasks_Notifications.xml';

                    break;

                case 8:

                    $sFilename = 'tasks/tasks_Consolidated.xml';

                    break;

                default:

                    //if the $iForm is not one of the defaults then search under Plugins for an extended property. By JHL Jan 18, 2011

                    $oPluginRegistry = & PMPluginRegistry::getSingleton();

                    $activePluginsForTaskProperties = $oPluginRegistry->getTaskExtendedProperties();

                    foreach ($activePluginsForTaskProperties as $key => $taskPropertiesInfo) {

                        $id = $taskPropertiesInfo->sNamespace . "--" . $taskPropertiesInfo->sName;

                        if ($id == $iForm) {

                            $sFilename = $taskPropertiesInfo->sPage;

                            $sw_template = true;

                        }

                    }



                    //$sFilename = 'tasks/tasks_Owner.xml';

                    break;

            }

            $oTask = new Task();

            $aFields = $oTask->load($sTaskUID);

            $aFields['INDEX'] = $iIndex;

            $aFields['IFORM'] = $iForm;

            $aFields['LANG'] = SYS_LANG;



            /**

             * Task Notifications *

             */

            if ($iForm == 7 || $iForm == 1) {

                G::loadClass('processes');

                $files = Processes::getProcessFiles($aFields['PRO_UID'], 'mail');



                $templates = array();

                $templates[] = 'dummy';



                foreach ($files as $file) {

                    $templates[] = array('FILE' => $file['filename'], 'NAME' => $file['filename'] );

                }



                global $_DBArray;

                $_DBArray['_TEMPLATES1'] = $templates;

                $_SESSION['_DBArray'] = $_DBArray;



                if ($iForm == 7) {

                    // Additional configuration

                    G::loadClass('configuration');

                    $oConf = new Configurations();

                    $oConf->loadConfig($x, 'TAS_EXTRA_PROPERTIES', $aFields['TAS_UID'], '', '');

                    $conf = $oConf->aConfig;

                    if (isset($conf['TAS_DEF_MESSAGE_TYPE']) && isset($conf['TAS_DEF_MESSAGE_TYPE'])) {

                        $aFields['TAS_DEF_MESSAGE_TYPE'] = $conf['TAS_DEF_MESSAGE_TYPE'];

                        $aFields['TAS_DEF_MESSAGE_TEMPLATE'] = $conf['TAS_DEF_MESSAGE_TEMPLATE'];

                    }

                }

            }



            if ($iForm == 3) {

                //Load Calendar Information

                $calendar = new Calendar();

                $calendarObj = $calendar->getCalendarList(true, true);



                global $_DBArray;



                $_DBArray['availableCalendars'] = $calendarObj['array'];



                $_SESSION['_DBArray'] = $_DBArray;



                $calendarInfo = $calendar->getCalendarFor($sTaskUID, $sTaskUID, $sTaskUID);



                //If the function returns a DEFAULT calendar it means that this object doesn't have assigned any calendar

                $aFields['TAS_CALENDAR'] = $calendarInfo['CALENDAR_APPLIED'] != 'DEFAULT' ? $calendarInfo['CALENDAR_UID'] : "";

            }



            if ($iForm == 2) {

                switch ($aFields["TAS_ASSIGN_TYPE"]) {

                    case "SELF_SERVICE":

                        $aFields["TAS_ASSIGN_TYPE"] = (!empty($aFields["TAS_GROUP_VARIABLE"])) ? "SELF_SERVICE_EVALUATE" : $aFields["TAS_ASSIGN_TYPE"];

                        break;

                }

            }



            if ($iForm == 8) {

                $oCaseConsolidated = CaseConsolidatedCorePeer::retrieveByPK($_SESSION["cDhTajE2T2lxSkhqMzZUTXVacWYyNcKwV3A4eWYybDdyb1p3"]["TAS_UID"]);

                if ((is_object($oCaseConsolidated)) && get_class($oCaseConsolidated) == "CaseConsolidated") {

                    require_once ("classes/model/ReportTable.php");



                    $aFields["CON_STATUS"]  = $oCaseConsolidated->getConStatus();

                    $aFields["DYN_UID"]     = $oCaseConsolidated->getDynUid();

                    $aFields["REP_TAB_UID"] = $oCaseConsolidated->getRepTabUid();



                    $oReportTables = new ReportTable();

                    $oReportTables = $oReportTables->load($aFields["REP_TAB_UID"]);

                    if (count($oReportTables)>0) {

                        if ($oReportTables['REP_TAB_STATUS'] == 'ACTIVE') {

                            $aFields["TABLE_NAME"] = $oReportTables['REP_TAB_NAME'];

                            $aFields["TITLE"] = $oReportTables['REP_TAB_TITLE'];

                        }

                    }

                }

                $aFields["PRO_UID"]  = $_SESSION["PROCESS"];

                $aFields["TAS_UID"]  = $_SESSION["cDhTajE2T2lxSkhqMzZUTXVacWYyNcKwV3A4eWYybDdyb1p3"]["TAS_UID"];

                $aFields["SYS_LANG"] = SYS_LANG;

                $aFields['INDEX']    = 0;

                $aFields["TABLE_NAME_DEFAULT"] = "__" . $aFields["TAS_UID"];



                $oCriteria = new Criteria("workflow");

                $del = DBAdapter::getStringDelimiter();



                $oCriteria->setDistinct();

                $oCriteria->addSelectColumn(DynaformPeer::DYN_UID);

                $oCriteria->addSelectColumn(ContentPeer::CON_VALUE);

                

                $aConditions   = array();

                $aConditions[] = array(DynaformPeer::DYN_UID, ContentPeer::CON_ID);

                $aConditions[] = array(ContentPeer::CON_CATEGORY, $del . "DYN_TITLE" . $del);

                $aConditions[] = array(ContentPeer::CON_LANG, $del . "en" . $del);

                $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN);

                

                $oCriteria->add(DynaformPeer::PRO_UID, $_SESSION["PROCESS"]);

                $oCriteria->add(DynaformPeer::DYN_TYPE, "grid");

                

                $oCriteria->addAscendingOrderByColumn(ContentPeer::CON_VALUE);



                $numRows = DynaformPeer::doCount($oCriteria);

                if ($numRows == 0) {

                    $aFields['TITLE_ALERT'] = G::LoadTranslation('ID_ALERT');

                    $aFields['SUBTITLE_MESSAGE'] = G::LoadTranslation('ID_CONSOLIDATED_DYNAFORM_REQUIRED');

                    $sFilename = 'tasks/tasks_Consolidated_Error.xml';

                }

            }



            global $G_PUBLISH;

            G::LoadClass('xmlfield_InputPM');

            $G_PUBLISH = new Publisher();

            if ($sw_template) {

                $G_PUBLISH->AddContent('view', $sFilename);

            } else {

                $G_PUBLISH->AddContent('xmlform', 'xmlform', $sFilename, '', $aFields);

            }



            G::RenderPage('publish', 'raw');

            return true;

        } catch (Exception $oError) {

            throw ($oError);

        }

    }