Пример #1
0
 /**
  * Add new activity into stream
  * @param array|object $data
  * @return CActivity|boolean
  */
 public static function add($data)
 {
     $activity = new CActivity($data);
     /**
      * @todo We'll move all event trigger into this class not in table class or anywhere
      * @todo Anything else we want to include when posting please put here
      */
     /* Event trigger */
     $appsLib = CAppPlugins::getInstance();
     $appsLib->loadApplications();
     $params = array();
     $params[] =& $activity;
     /* We do raise event here that will allow user change $activity properties before save it */
     $appsLib->triggerEvent('onBeforeActivitySave', $params);
     if ($activity->get('cmd')) {
         /* Userpoints */
         $userPointModel = CFactory::getModel('Userpoints');
         $point = $userPointModel->getPointData($activity->get('cmd'));
         if ($point) {
             /**
              * @todo Need clearly about this !
              * for every unpublished user points the stream will be disabled for that item
              * but not sure if this for 3rd party API, this feature should be available or not?
              */
             if (!$point->published) {
                 //return;
             }
         }
     }
     if ($activity->save()) {
         $params = array();
         $params[] =& $activity;
         $appsLib->triggerEvent('onAfterActivitySave', $params);
         return $activity;
     }
     return false;
 }
Пример #2
0
 /**
  * Update or save all timesheet's activities
  * @param int $userId
  * @param array $dataActivities
  * @param int $timesheetId
  * @param array $projectLeaderTasksIdList (optionnal)
  * @return bool
  */
 public static function saveActivities($userId, $dataActivities, $timesheetId)
 {
     $q = new DBQuery();
     $q->addTable('task_timesheet');
     $q->addQuery('task_id');
     $q->addWhere('timesheet_id =' . $timesheetId);
     $q->addWhere('status = 0');
     //die($q->prepare());
     $psql = $q->prepare();
     $q->clear();
     $taskIdRows = db_exec($psql);
     $validatedTaskId = array();
     while ($row = db_fetch_assoc($taskIdRows)) {
         array_push($validatedTaskId, $row['task_id']);
     }
     //create activities where duration > 0
     foreach ($dataActivities as $dataActivity) {
         $dataActivityArray = explode('|', $dataActivity);
         /* $dataActivityArray[1]: TaskId
            $dataActivityArray[2]; date */
         $activity = new CActivity();
         $activity->setDuration($dataActivityArray[0]);
         $activity->setTaskId($dataActivityArray[1]);
         $activity->setADate($dataActivityArray[2]);
         $activity->setUserId($userId);
         $activity->setTimesheetId($timesheetId);
         //check if the task isn't already validate
         if (!in_array($dataActivityArray[1], $validatedTaskId)) {
             //if the activity exist
             if ($activity->loadActivityId()) {
                 $activity->update();
             } else {
                 if ($dataActivityArray[0] > 0) {
                     $activity->save();
                 }
             }
         }
     }
     return true;
 }