瀏覽代碼

Uniformation of integrate_modify_[board|category|event] allowing to directly interact with the queries

Signed-off-by: emanuele <[email protected]>
emanuele 12 年之前
父節點
當前提交
fe6af6cea3
共有 3 個文件被更改,包括 30 次插入15 次删除
  1. 3 1
      Sources/Subs-Boards.php
  2. 24 13
      Sources/Subs-Calendar.php
  3. 3 1
      Sources/Subs-Categories.php

+ 3 - 1
Sources/Subs-Boards.php

@@ -483,7 +483,7 @@ function modifyBoard($board_id, &$boardOptions)
 	if (!isset($boards[$board_id]) || (isset($boardOptions['target_board']) && !isset($boards[$boardOptions['target_board']])) || (isset($boardOptions['target_category']) && !isset($cat_tree[$boardOptions['target_category']])))
 		fatal_lang_error('no_board');
 
-	call_integration_hook('integrate_modify_board', array($board_id, &$boardOptions));
+	call_integration_hook('integrate_pre_modify_board', array($board_id, &$boardOptions));
 
 	// All things that will be updated in the database will be in $boardUpdates.
 	$boardUpdates = array();
@@ -662,6 +662,8 @@ function modifyBoard($board_id, &$boardOptions)
 		$boardUpdateParameters['num_posts'] = (int) $boardOptions['num_posts'];
 	}
 
+	call_integration_hook('integrate_modify_board', array($board_id, &$boardUpdates, &$boardUpdateParameters));
+
 	// Do the updates (if any).
 	if (!empty($boardUpdates))
 		$request = $smcFunc['db_query']('', '

+ 24 - 13
Sources/Subs-Calendar.php

@@ -916,25 +916,36 @@ function modifyEvent($event_id, &$eventOptions)
 	if (!isset($eventOptions['end_date']))
 		$eventOptions['end_date'] = strftime('%Y-%m-%d', mktime(0, 0, 0, $month, $day, $year) + $eventOptions['span'] * 86400);
 
+	$event_columns = array(
+		'start_date' = '{date:start_date}',
+		'end_date' = '{date:end_date}',
+		'title' = 'SUBSTRING({string:title}, 1, 60)',
+		'id_board' = '{int:id_board}',
+		'id_topic' = '{int:id_topic}'
+	);
+	$event_parameters = array(
+		'start_date' => $eventOptions['start_date'],
+		'end_date' => $eventOptions['end_date'],
+		'title' => $eventOptions['title'],
+		'id_board' => isset($eventOptions['board']) ? (int) $eventOptions['board'] : 0,
+		'id_topic' => isset($eventOptions['topic']) ? (int) $eventOptions['topic'] : 0,
+	);
 
-	call_integration_hook('integrate_modify_event', array($event_id, &$eventOptions));
+	// This is to prevent hooks to modify the id of the event
+	$real_event_id = $event_id;
+
+	call_integration_hook('integrate_modify_event', array($event_id, &$eventOptions, &$event_columns, &$event_parameters));
 
 	$smcFunc['db_query']('', '
 		UPDATE {db_prefix}calendar
 		SET
-			start_date = {date:start_date},
-			end_date = {date:end_date},
-			title = SUBSTRING({string:title}, 1, 60),
-			id_board = {int:id_board},
-			id_topic = {int:id_topic}
+			' . implode(', ', $event_columns) . '
 		WHERE id_event = {int:id_event}',
-		array(
-			'start_date' => $eventOptions['start_date'],
-			'end_date' => $eventOptions['end_date'],
-			'title' => $eventOptions['title'],
-			'id_board' => isset($eventOptions['board']) ? (int) $eventOptions['board'] : 0,
-			'id_topic' => isset($eventOptions['topic']) ? (int) $eventOptions['topic'] : 0,
-			'id_event' => $event_id,
+		array_merge(
+			$event_parameters,
+			array(
+				'id_event' => $real_event_id
+			)
 		)
 	);
 

+ 3 - 1
Sources/Subs-Categories.php

@@ -31,7 +31,7 @@ function modifyCategory($category_id, $catOptions)
 	$catUpdates = array();
 	$catParameters = array();
 
-	call_integration_hook('integrate_modify_category', array($category_id, &$catOptions));
+	call_integration_hook('integrate_pre_modify_category', array($category_id, &$catOptions));
 
 	// Wanna change the categories position?
 	if (isset($catOptions['move_after']))
@@ -93,6 +93,8 @@ function modifyCategory($category_id, $catOptions)
 		$catParameters['is_collapsible'] = $catOptions['is_collapsible'] ? 1 : 0;
 	}
 
+	call_integration_hook('integrate_modify_category', array($category_id, &$catUpdates, &$catParameters));
+
 	// Do the updates (if any).
 	if (!empty($catUpdates))
 	{