public function create($args) { $flags = array('concepts' => false, 'supply_sources' => false, 'day_parts' => false, 'target_dimensions' => false); if (isset($args['concepts'])) { $concepts = array(); $concepts = $args['concepts']; unset($args['concepts']); $flags['concepts'] = true; } $supply_sources = array(); if (isset($args['supply_sources'])) { $supply_sources = $args['supply_sources']; unset($args['supply_sources']); $flags['supply_sources'] = true; } $day_parts = array(); if (isset($args['day_parts'])) { $day_parts = $args['day_parts']; unset($args['day_parts']); $flags['day_parts'] = true; } $target_dimensions = array(); if (isset($args['target_dimensions'])) { $target_dimensions = $args['target_dimensions']; unset($args['target_dimensions']); $flags['target_dimensions'] = true; } $orig_response = array(); $orig_response = parent::create($args); if ($orig_response['status']['code'] == 'ok' && $orig_response['entity']['id']) { $strategy_id = $orig_response['entity']['id']; //Assign/unassign any concepts if ($flags['concepts']) { $C = new MediaMathAPI_Strategy_Concepts(); if (!empty($concepts)) { foreach ($concepts as $id => $c) { $c['strategy_id'] = $strategy_id; $response['concepts'][$id] = $C->create($c); } } else { //delete existing $existing = array(); $existing = $C->fetchAll(); foreach ($existing['entities'] as $id => $e) { $C->delete(array('id' => $id, 'version' => $e['entity']['detail']['version'])); } } } //Assign/unassign any supply_sources if ($flags['supply_sources']) { $C = new MediaMathAPI_Strategy_SupplySources(); if (!empty($supply_sources)) { foreach ($supply_sources as $id => $ss) { $ss['strategy_id'] = $strategy_id; $response['supply_sources'][$id] = $C->create($ss); } } else { //delete existing $existing = array(); $existing = $C->fetchAll(); foreach ($existing['entities'] as $id => $e) { $C->delete(array('id' => $id, 'version' => $e['entity']['detail']['version'])); } } } //Assign/unassign any day_parts if ($flags['day_parts']) { $C = new MediaMathAPI_Strategy_DayParts(); if (!empty($day_parts)) { foreach ($day_parts as $id => $dp) { $dp['strategy_id'] = $strategy_id; $response['day_parts'][$id] = $C->create($dp); } } else { //delete existing $existing = array(); $existing = $C->fetchAll(); foreach ($existing['entities'] as $id => $e) { $C->delete(array('id' => $id, 'version' => $e['entity']['detail']['version'])); } } } //Assign/unassign any target_dimensions if ($flags['target_dimensions']) { $C = new MediaMathAPI_TargetDimensions(); if (!empty($concepts)) { foreach ($concepts as $id => $c) { $c['strategy_id'] = $strategy_id; $response['concepts'][$id] = $C->create($c); } } else { //delete existing $existing = array(); $existing = $C->fetchAll(); foreach ($existing['entities'] as $id => $e) { $C->delete(array('id' => $id, 'version' => $e['entity']['detail']['version'])); } } } } return $orig_response; }