Exemple #1
0
 public function getActivityGroups($filterEmpty = true)
 {
     $select = $this->_db->select()->from('activity_group', array('id'))->where('fk_initiative = ' . $this->_id)->order('rank ASC');
     $rows = $select->query()->fetchAll();
     $groups = array();
     foreach ($rows as $row) {
         $actGroup = new ActivityGroupModel($row['id']);
         if (!$filterEmpty || $actGroup->numberOfActivities() > 0) {
             $groups[] = $actGroup;
         }
     }
     return $groups;
 }
Exemple #2
0
 public static function updateActivitiesArray($activities, $initID = null)
 {
     if (!$initID || !$activities || !is_array($activities) || !is_numeric($initID)) {
         throw new Exception('Invalid data structure');
     }
     try {
         $db = Globals::getDBConn();
         $db->beginTransaction();
         foreach ($activities as $actGroupKey => $activityGroup) {
             if (isset($activityGroup['title']) && strlen($activityGroup['title']) > 0 && isset($activityGroup['id']) && isset($activityGroup['desc']) && isset($activityGroup['required']) && isset($activityGroup['allowMulti'])) {
                 $actGroupData = array('title' => $activityGroup['title'], 'desc' => $activityGroup['desc'], 'rank' => $actGroupKey, 'required' => (int) $activityGroup['required'], 'allowMulti' => (int) $activityGroup['allowMulti']);
                 if (is_numeric($activityGroup['id'])) {
                     $activityGroupObj = new ActivityGroupModel($activityGroup['id']);
                     if (!$activityGroupObj) {
                         throw new Exception('Failed to retrieve activity group');
                     }
                     $activityGroupObj->update($actGroupData);
                     $activityGroupID = $activityGroupObj->getMetadata('id');
                 } else {
                     if ('new-act-group' === $activityGroup['id']) {
                         $actGroupData['init'] = $initID;
                         $activityGroupID = ActivityGroupModel::create($actGroupData);
                         if (false === $activityGroupID) {
                             throw new Exception('Failed to create activity group');
                         }
                     } else {
                         throw new Exception('Invalid activity group ID');
                     }
                 }
                 foreach ($activityGroup['activities'] as $actKey => $activity) {
                     if (isset($activity['title']) && strlen($activity['title']) > 0 && isset($activity['id']) && isset($activity['desc']) && isset($activity['enabled'])) {
                         $actData = array('title' => $activity['title'], 'desc' => $activity['desc'], 'enabled' => (int) $activity['enabled'], 'group' => $activityGroupID, 'rank' => $actKey);
                         if (is_numeric($activity['id'])) {
                             $activityObj = new ActivityModel($activity['id']);
                             if (!$activityObj) {
                                 throw new Exception('Failed to retrieve activity');
                             }
                             $activityObj->update($actData);
                         } else {
                             if ('new-act' === $activity['id']) {
                                 //$actData['init'] = $initID;
                                 $activityID = self::create($actData);
                                 if (false === $activityID) {
                                     throw new Exception('Failed to create activity');
                                 }
                             } else {
                                 throw new Exception('Invalid activity ID');
                             }
                         }
                     } else {
                         throw new Exception('Missing required activity fields (title, ID, enabled, or desc)');
                     }
                 }
             } else {
                 throw new Exception('Missing required activity group fields (title, ID, required, allowMulti, or desc)');
             }
         }
         $db->commit();
     } catch (Exception $e) {
         $db->rollBack();
         throw $e;
     }
     return true;
 }