Beispiel #1
0
 /**
  * Get all the values for the current project and sub-projects and return 3 array:
  * 1. With Projects names.
  * 2. With users names.
  * 3. Relations Projects-User-Bookings.
  *
  * @param string  $startDate Start date for make the query.
  * @param string  $endDate   End date for make the query.
  * @param integer $projectId Current Project ID.
  *
  * @return array Array with 'users', 'projects' and 'rows'.
  */
 public function getStatistics($startDate, $endDate, $projectId)
 {
     $data['data'] = array();
     $data['data']['users'] = array();
     $data['data']['projects'] = array();
     $data['data']['rows'] = array();
     // Get Sub-Projects
     $activeRecord = new Project_Models_Project();
     $tree = new Phprojekt_Tree_Node_Database($activeRecord, $projectId);
     $tree = $tree->setup();
     $projectsId = array(0);
     foreach ($tree as $node) {
         if ($node->id) {
             $projectsId[] = (int) $node->id;
             $data['data']['projects'][$node->id] = $node->getDepthDisplay('title');
         }
     }
     // Get Timecard
     $model = new Timecard_Models_Timecard();
     $where = sprintf('(DATE(start_datetime) >= %s AND DATE(start_datetime) <= %s AND project_id IN (%s))', $model->_db->quote($startDate), $model->_db->quote($endDate), implode(", ", $projectsId));
     $records = $model->fetchAll($where);
     $users = new Phprojekt_User_User();
     foreach ($records as $record) {
         if (!isset($data['data']['users'][$record->ownerId])) {
             $user = $users->findUserById($record->ownerId);
             $data['data']['users'][$record->ownerId] = $user->username;
         }
         if (!isset($data['data']['rows'][$record->projectId][$record->ownerId])) {
             $data['data']['rows'][$record->projectId][$record->ownerId] = 0;
         }
         $data['data']['rows'][$record->projectId][$record->ownerId] += $record->minutes;
     }
     return $data;
 }
 /**
  * Set some values deppend on the params
  *
  * Sanitize some values and calculate the minutes value.
  *
  * @return array
  */
 public function setParams()
 {
     $args = func_get_args();
     $params = $args[0];
     $model = $args[1];
     $params['startDatetime'] = Cleaner::sanitize('datetime', $params['startDatetime']);
     if (isset($params['endTime'])) {
         $params['endTime'] = Cleaner::sanitize('time', $params['endTime']);
         if ($params['endTime'] == '') {
             unset($params['endTime']);
         }
     }
     $params['projectId'] = (int) $params['projectId'];
     $params['notes'] = Cleaner::sanitize('string', $params['notes']);
     if (isset($params['endTime']) && isset($params['startDatetime'])) {
         $params['minutes'] = Timecard_Models_Timecard::getDiffTime($params['endTime'], substr($params['startDatetime'], 11));
     } else {
         if (!isset($params['endTime'])) {
             $params['minutes'] = 0;
         } else {
             $params['minutes'] = Timecard_Models_Timecard::getDiffTime($params['endTime'], substr($model->startDatetime, 11));
         }
     }
     return $params;
 }
Beispiel #3
0
 /**
  * Test getRights function
  */
 public function testGetUsersRights()
 {
     $module = new Project_Models_Project(array('db' => $this->sharedFixture));
     $module->find(2);
     $getRights = $module->getUsersRights();
     $this->assertTrue($getRights['currentUser']['admin']);
     $this->assertEquals($getRights['currentUser']['userId'], '1');
     $this->assertEquals($getRights['currentUser']['write'], true);
     $this->assertEquals($getRights[3]['itemId'], 2);
     $this->assertEquals($getRights[3]['write'], true);
     $module = new Timecard_Models_Timecard(array('db' => $this->sharedFixture));
     $this->assertEquals(array(), $module->getUsersRights());
 }