/**
 * OrangeHRM is a comprehensive Human Resource Management (HRM) System that captures
 * all the essential functionalities required for any enterprise.
 * Copyright (C) 2006 OrangeHRM Inc., http://www.orangehrm.com
 *
 * OrangeHRM is free software; you can redistribute it and/or modify it under the terms of
 * the GNU General Public License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * OrangeHRM is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
 * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 * See the GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License along with this program;
 * if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
 * Boston, MA  02110-1301, USA
 *
 */
function populateActivities($projectId)
{
    ob_clean();
    require ROOT_PATH . '/language/default/lang_default_full.php';
    $timeController = new TimeController();
    $projectActivities = $timeController->fetchProjectActivities($projectId);
    $objResponse = new xajaxResponse();
    $xajaxFiller = new xajaxElementFiller();
    $element = "cmbActivity";
    $objResponse = $xajaxFiller->cmbFillerById($objResponse, $projectActivities, 0, 'frmTimesheet', $element, 1);
    $objResponse->addScript('document.getElementById("' . $element . '").focus();');
    $objResponse->addAssign('status', 'innerHTML', '');
    return $objResponse->getXML();
}
function getDeletedProjects($val)
{
    $timeController = new TimeController();
    $objResponse = new xajaxResponse();
    $xajaxFiller = new xajaxElementFiller();
    $element = "cmbProject";
    if ($val == 1) {
        $projectList = $timeController->fetchIncludingDeletedProjects(1);
        $Response = $xajaxFiller->cmbFillerById($objResponse, $projectList, 0, 'frmReport', $element, 0);
    } else {
        $projectList = $timeController->fetchIncludingDeletedProjects(0);
        $Response = $xajaxFiller->cmbFillerById($objResponse, $projectList, 0, 'frmReport', $element, 0);
    }
    return $objResponse->getXML();
}
Example #3
0
 public function testTimeApi()
 {
     // Call API
     $response = TimeController::apiGet();
     // Validate result
     $time = time();
     $this->assertLessThanOrEqual($time, $response['time']);
 }
function populateActivities($projectId, $row, $activityId = null, $activityName = null)
{
    ob_clean();
    require ROOT_PATH . '/language/default/lang_default_full.php';
    $timeController = new TimeController();
    $projectActivities = $timeController->fetchProjectActivities($projectId);
    $objResponse = new xajaxResponse();
    $xajaxFiller = new xajaxElementFiller();
    $xajaxFiller->setDefaultOptionName($GLOBALS['lang_Common_Select']);
    $element = "cmbActivity[{$row}]";
    if (count($projectActivities) == 0) {
        $projectActivities[0][0] = -1;
        $projectActivities[0][1] = "- {$lang_Time_Timesheet_SelectProject} -";
        $objResponse = $xajaxFiller->cmbFillerById($objResponse, $projectActivities, 0, 'frmTimesheet', $element, 0);
    } else {
        if ($activityId != null) {
            $projectActivityObject = new ProjectActivity();
            if ($projectId == $projectActivityObject->retrieveActivityProjectId($activityId)) {
                $activityExists = false;
                $i = 0;
                foreach ($projectActivities as $activity) {
                    if ($activity[$i][0] == $activityId) {
                        $activityExists = true;
                    }
                    $i++;
                }
                if (!$activityExists) {
                    $count = count($projectActivities);
                    $projectActivities[$count][0] = $activityId;
                    $projectActivities[$count][1] = $activityName;
                }
            }
        }
        $objResponse->addScript("document.getElementById('" . $element . "').options.length = 0;");
        $objResponse->addScript("document.getElementById('" . $element . "').options[0] = new Option('- {$lang_Common_Select} -','-1');");
        $objResponse = $xajaxFiller->cmbFillerById($objResponse, $projectActivities, 0, 'frmTimesheet', $element, 1);
    }
    $objResponse->addScript('document.getElementById("' . $element . '").focus();');
    $objResponse->addAssign('status', 'innerHTML', '');
    return $objResponse->getXML();
}
                         trigger_error("Invalid Action " . $_GET['action'], E_USER_NOTICE);
                 }
             } else {
                 trigger_error("Invalid Action " . $_GET['action'], E_USER_NOTICE);
             }
             break;
         default:
             trigger_error("Invalid Command " . $_GET['leavecode'], E_USER_NOTICE);
             break;
     }
     break;
 case 'timeMod':
     switch ($_GET['timecode']) {
         case 'Time':
             if (isset($_GET['action'])) {
                 $timeController = new TimeController();
                 $timesheetExtractor = new EXTRACTOR_Timesheet();
                 $timeEventExtractor = new EXTRACTOR_TimeEvent();
                 $timesheetSubmissionPeriodExtractor = new EXTRACTOR_TimesheetSubmissionPeriod();
                 $workShiftExtractor = new EXTRACTOR_Workshift();
                 $current = false;
                 $useClientTime = false;
                 $clientTime = null;
                 $punchIn = false;
                 $new = false;
                 $return = null;
                 switch ($_GET['action']) {
                     case 'View_Current_Timesheet':
                         $current = true;
                         $clientTimezoneOffset = @$_GET['clientTimezoneOffset'];
                         settype($clientTimezoneOffset, 'integer');
Example #6
0
                         trigger_error("Invalid Action " . $_GET['action'], E_USER_NOTICE);
                 }
             } else {
                 trigger_error("Invalid Action " . $_GET['action'], E_USER_NOTICE);
             }
             break;
         default:
             trigger_error("Invalid Command " . $_GET['leavecode'], E_USER_NOTICE);
             break;
     }
     break;
 case 'timeMod':
     switch ($_GET['timecode']) {
         case 'Time':
             if (isset($_GET['action'])) {
                 $timeController = new TimeController();
                 $timesheetExtractor = new EXTRACTOR_Timesheet();
                 $timeEventExtractor = new EXTRACTOR_TimeEvent();
                 $timesheetSubmissionPeriodExtractor = new EXTRACTOR_TimesheetSubmissionPeriod();
                 $workShiftExtractor = new EXTRACTOR_Workshift();
                 $current = false;
                 $useClientTime = false;
                 $clientTime = null;
                 $punchIn = false;
                 $new = false;
                 $return = null;
                 switch ($_GET['action']) {
                     case 'View_Current_Timesheet':
                         $current = true;
                         $clientTimezoneOffset = @$_GET['clientTimezoneOffset'];
                         settype($clientTimezoneOffset, 'integer');
Example #7
0
 /**
  * Tests validateTimeEvent method.
  */
 public function testValidateTimeEvent()
 {
     $timeController = new TimeController();
     $timesheet1 = $this->_getTimesheet(11, 10, 10, '2007-05-14', '2007-05-20', 0);
     // Test time event within timesheet period
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '2007-05-14 12:00', '2007-05-14 15:00', '2007-07-07', 3 * 3600, "desc");
     $this->assertSame(true, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // Test time event out side timesheet period
     $timeEvent = $this->_getTimeEvent(2, 10, 10, 10, '2007-05-13 12:00', '2007-05-14 15:00', '2007-07-07', 3 * 3600, "desc");
     $this->assertSame(TimeController::EVENT_OUTSIDE_PERIOD_FAILURE, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     $timeEvent = $this->_getTimeEvent(3, 10, 10, 10, '2007-05-21 00:10', '2007-05-21 03:10', '2007-07-07', 3 * 3600, "desc");
     $this->assertSame(TimeController::EVENT_OUTSIDE_PERIOD_FAILURE, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     $timeEvent = $this->_getTimeEvent(4, 10, 10, 10, '2007-05-13 23:30', '2007-05-14 04:30', '2007-07-07', 5 * 3600, "desc");
     $this->assertSame(TimeController::EVENT_OUTSIDE_PERIOD_FAILURE, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     $timeEvent = $this->_getTimeEvent(5, 10, 10, 10, '2007-05-20 23:30', '2007-05-21 04:30', '2007-07-07', 5 * 3600, "desc");
     $this->assertSame(TimeController::EVENT_OUTSIDE_PERIOD_FAILURE, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     $timeEvent = $this->_getTimeEvent(5, 10, 10, 10, '2007-05-21 07:30', '2007-05-21 04:30', '2007-07-07', 5 * 3600, "desc");
     $this->assertSame(TimeController::ZeroOrNegativeIntervalSpecified_ERROR, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // Test invalid timesheet periods
     $timesheet2 = $this->_getTimesheet(11, 10, 10, '2007-05-14', '', 0);
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '2007-05-14 12:00', '2007-05-14 15:00', '2007-07-07', 3 * 3600, "desc");
     $this->assertSame(TimeController::INVALID_TIMESHEET_PERIOD_ERROR, $timeController->validateTimeEvent($timeEvent, $timesheet2));
     $timesheet2 = $this->_getTimesheet(11, 10, 10, '', '2007-05-14', 0);
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '2007-05-14 12:00', '2007-05-14 15:00', '2007-07-07', 3 * 3600, "desc");
     $this->assertSame(TimeController::INVALID_TIMESHEET_PERIOD_ERROR, $timeController->validateTimeEvent($timeEvent, $timesheet2));
     $timesheet2 = $this->_getTimesheet(11, 10, 10, '2007-05-15', '2007-05-14', 0);
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '2007-05-14 12:00', '2007-05-14 15:00', '2007-07-07', 3 * 3600, "desc");
     $this->assertSame(TimeController::INVALID_TIMESHEET_PERIOD_ERROR, $timeController->validateTimeEvent($timeEvent, $timesheet2));
     // Empty project Id
     $timeEvent = $this->_getTimeEvent(1, null, 10, 10, '2007-05-14 12:00', '2007-05-14 15:00', '2007-07-07', 3 * 3600, "desc");
     $this->assertSame(TimeController::ProjectNotSpecified_ERROR, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // Empty activity Id
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '2007-05-14 12:00', '2007-05-14 15:00', '2007-07-07', 3 * 3600, "desc", "");
     $this->assertSame(TimeController::ActivityNotSpecified_ERROR, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // invalid start time
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '2007-15-13 12:00', '2007-05-14 15:00', '2007-07-07', 3 * 3600, "desc");
     $this->assertSame(TimeController::InvalidStartTime_ERROR, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // Invalid end time
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '2007-05-14 12:00', 'xyz', '2007-07-07', 3 * 3600, "desc");
     $this->assertSame(TimeController::InvalidEndTime_ERROR, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // reported date not given
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '2007-05-14 12:00', '2007-05-14 15:00', '', 3 * 3600, "desc");
     $this->assertSame(TimeController::ReportedDateNotSpecified_ERROR, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // invalid reported date
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '2007-05-14 12:00', '2007-05-14 15:00', '929-19-191', 3 * 3600, "desc");
     $this->assertSame(TimeController::InvalidReportedDate_ERROR, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // Empty duration allowed
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '2007-05-14 12:00', '2007-05-14 15:00', '2007-07-07', "", "desc");
     $this->assertSame(true, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // 0 duration allowed for event with id
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '2007-05-14 12:00', '2007-05-14 15:00', '2007-07-07', "0", "desc");
     $this->assertSame(true, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // Invalid duration values
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '2007-05-14 12:00', '2007-05-14 15:00', '2007-07-07', "-1", "desc");
     $this->assertSame(TimeController::InvalidDuration_ERROR, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // 0 duration not allowed for new entry (without event id)
     $timeEvent = $this->_getTimeEvent("", 10, 10, 10, '2007-05-14 12:00', '2007-05-14 15:00', '2007-07-07', "0", "desc");
     $this->assertSame(TimeController::InvalidDuration_ERROR, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // Reported date and duration given
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '', '', '2007-05-14', 3 * 3600, "desc");
     $this->assertSame(true, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // Reported date outside period
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '', '', '2007-05-13', 3 * 3600, "desc");
     $this->assertSame(TimeController::EVENT_OUTSIDE_PERIOD_FAILURE, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '', '', '2007-05-21', 3 * 3600, "desc");
     $this->assertSame(TimeController::EVENT_OUTSIDE_PERIOD_FAILURE, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '', '', '2007-05-20', 25 * 3600, "desc");
     $this->assertSame(TimeController::EVENT_OUTSIDE_PERIOD_FAILURE, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // zero duration + reported date
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '', '', '2007-05-20', 0, "desc");
     $this->assertSame(TimeController::NoValidDurationOrInterval_ERROR, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // Reported date on period end date
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '', '', '2007-05-20', 10 * 3600, "desc");
     $this->assertSame(true, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // Only start time given
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '2007-05-14 12:00', '', '2007-05-20', "", "desc");
     $this->assertSame(true, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // start time outside timesheet period
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '2007-05-13 23:00', '', '2007-05-20', "", "desc");
     $this->assertSame(TimeController::EVENT_OUTSIDE_PERIOD_FAILURE, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '2007-05-21 12:00', '', '2007-05-20', "", "desc");
     $this->assertSame(TimeController::EVENT_OUTSIDE_PERIOD_FAILURE, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // start time and end time given
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '2007-05-14 12:00', '2007-05-14 13:00', '2007-05-20', "", "desc");
     $this->assertSame("", $timeEvent->getDuration());
     $this->assertSame(true, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // check duration is set
     $this->assertSame(3600, $timeEvent->getDuration());
     // start time == end time
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '2007-05-14 13:10', '2007-05-14 13:10', '2007-05-20', "", "desc");
     $this->assertSame(TimeController::ZeroOrNegativeIntervalSpecified_ERROR, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // start time == end time and duration == 0
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '2007-05-14 13:10', '2007-05-14 13:10', '2007-05-20', "", "desc");
     $this->assertSame(TimeController::ZeroOrNegativeIntervalSpecified_ERROR, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // start time > end time
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '2007-05-14 13:11', '2007-05-14 13:10', '2007-05-20', "", "desc");
     $this->assertSame(TimeController::ZeroOrNegativeIntervalSpecified_ERROR, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // start time outside timesheet period
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '2007-05-13 13:11', '2007-05-13 13:30', '2007-05-20', "", "desc");
     $this->assertSame(TimeController::EVENT_OUTSIDE_PERIOD_FAILURE, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // end time outside timesheet period
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '2007-05-13 21:11', '2007-05-21 13:30', '2007-05-20', "", "desc");
     $this->assertSame(TimeController::EVENT_OUTSIDE_PERIOD_FAILURE, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // start time and duration given
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '2007-05-14 12:00', '', '2007-07-07', 3 * 3600, "desc");
     $this->assertSame(true, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // end time set
     $this->assertSame("2007-05-14 15:00", $timeEvent->getEndTime());
     // start outside period
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '2007-05-13 12:00', '', '2007-07-07', 3 * 3600, "desc");
     $this->assertSame(TimeController::EVENT_OUTSIDE_PERIOD_FAILURE, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // End time outside period
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '2007-05-12 22:00', '', '2007-07-07', 5 * 3600, "desc");
     $this->assertSame(TimeController::EVENT_OUTSIDE_PERIOD_FAILURE, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // Start time and zero duration not allowed
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '2007-05-14 22:00', '', '2007-07-07', 0, "desc");
     $this->assertSame(TimeController::NoValidDurationOrInterval_ERROR, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // start, end and duration allowed for events with id
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '2007-05-14 12:00', '2007-05-14 15:00', '2007-07-07', 3 * 3600, "desc");
     $this->assertSame(true, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // start, end and duration not allowed for new events
     $timeEvent = $this->_getTimeEvent("", 10, 10, 10, '2007-05-14 12:00', '2007-05-14 15:00', '2007-07-07', 3 * 3600, "desc");
     $this->assertSame(TimeController::NotAllowedToSpecifyDurationAndInterval_ERROR, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // End time and duration not allowed
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '', '2007-05-14 15:00', '2007-07-07', 3 * 3600, "desc");
     $this->assertSame(TimeController::NoValidDurationOrInterval_ERROR, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // End time only not allowed
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '', '2007-05-14 15:00', '2007-07-07', "", "desc");
     $this->assertSame(TimeController::NoValidDurationOrInterval_ERROR, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, null, '2007-05-14 15:00', '2007-07-07', null, "desc");
     $this->assertSame(TimeController::NoValidDurationOrInterval_ERROR, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // just reported date not allowed
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '', '', '2007-07-07', "", "desc");
     $this->assertSame(TimeController::NoValidDurationOrInterval_ERROR, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     $timeEvent = $this->_getTimeEvent("", 10, 10, 10, '', '', '2007-07-07', "", "desc");
     $this->assertSame(TimeController::NoValidDurationOrInterval_ERROR, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     $timeEvent = $this->_getTimeEvent("", 10, 10, 10, null, null, '2007-07-07', null, "desc");
     $this->assertSame(TimeController::NoValidDurationOrInterval_ERROR, $timeController->validateTimeEvent($timeEvent, $timesheet1));
 }