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; }
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; }