diff options
Diffstat (limited to 'mod/tasks/actions/tasks/edit.php')
| -rw-r--r-- | mod/tasks/actions/tasks/edit.php | 110 | 
1 files changed, 110 insertions, 0 deletions
diff --git a/mod/tasks/actions/tasks/edit.php b/mod/tasks/actions/tasks/edit.php new file mode 100644 index 000000000..a69ddafe9 --- /dev/null +++ b/mod/tasks/actions/tasks/edit.php @@ -0,0 +1,110 @@ +<?php +/** + * Create or edit a task + * + * @package ElggTasks + */ + +$variables = elgg_get_config('tasks'); +$input = array(); +foreach ($variables as $name => $type) { +	$input[$name] = get_input($name); +	if ($name == 'title') { +		$input[$name] = strip_tags($input[$name]); +	} +	if ($type == 'tags') { +		$input[$name] = string_to_tag_array($input[$name]); +	} +} + +// Get guids +$task_guid = (int)get_input('task_guid'); +$container_guid = (int)get_input('container_guid'); +$referer_guid = (int)get_input('referer_guid'); + +$container = get_entity($container_guid); + +elgg_make_sticky_form('task'); + +if (!$input['title']) { +	register_error(elgg_echo('tasks:error:no_title')); +	forward(REFERER); +} + +if (!$container) { +	forward(REFERER); +} + +if ($input['priority'] == null) { +	$input['priority'] = '2'; // normal is default +} + +if ($task_guid) { +	$task = get_entity($task_guid); +	if (!$task || !$task->canEdit()) { +		register_error(elgg_echo('tasks:error:no_save')); +		forward(REFERER); +	} +	$new_task = false; +} else { +	$task = new ElggObject(); +	$task->subtype = 'task'; +	$task->status = 'new'; +	$task->time_status_changed = time(); +	$new_task = true; +} + +if (sizeof($input) > 0) { +	foreach ($input as $name => $value) { +		$task->$name = $value; +	} +} + +$list_guid = $input['list_guid']; + +if ($list_guid) { +	$task->list_guid = $list_guid; +} +else { +	$task->list_guid = 0; +} +$task->container_guid = $container_guid; + +if ($task->save()) { + +	elgg_clear_sticky_form('task'); + +	// Now save description as an annotation +	$task->annotate('task', $task->description, $task->access_id); + +	system_message(elgg_echo('tasks:saved')); + +	if ($new_task) { +		add_to_river('river/object/task/create', 'create', elgg_get_logged_in_user_guid(), $task->guid); +	} +	 +	if ($new_task && $referer_guid && ($referer_entity = get_entity($referer_guid))) { +		$link = elgg_view('output/url', array( +			'href' => $task->getURL(), +			'text' => $task->title, +		)); +		$annotation = create_annotation($referer_entity->guid, +										'generic_comment', +										elgg_echo('tasks:this:referer:comment', array($link)), +										"", +										elgg_get_logged_in_user_guid(), +										$referer_entity->access_id); +	} + +	$task_json = array(); +	foreach ($task->getExportableValues() as $v) { +		$task_json[$v] = $task->$v; +	} +	$task_json['list_guid'] = $task->list_guid; +	echo json_encode($task_json);  +	 +	forward($task->getURL()); +} else { +	register_error(elgg_echo('tasks:error:no_save')); +	forward(REFERER); +}  | 
