From: <lph...@us...> - 2012-04-25 14:09:32
|
Revision: 41098 http://tikiwiki.svn.sourceforge.net/tikiwiki/?rev=41098&view=rev Author: lphuberdeau Date: 2012-04-25 14:09:22 +0000 (Wed, 25 Apr 2012) Log Message: ----------- Reset event bindings after changing preferences in profiles to make sure post-save behaviors on object creation are applied with the new settings Modified Paths: -------------- branches/9.x/lib/core/Event/Manager.php branches/9.x/lib/profilelib/installlib.php branches/9.x/lib/setup/events.php Modified: branches/9.x/lib/core/Event/Manager.php =================================================================== --- branches/9.x/lib/core/Event/Manager.php 2012-04-25 13:44:06 UTC (rev 41097) +++ branches/9.x/lib/core/Event/Manager.php 2012-04-25 14:09:22 UTC (rev 41098) @@ -9,6 +9,11 @@ { private $eventRegistry = array(); + function reset() + { + $this->eventRegistry = array(); + } + function bind($eventName, $callback, array $arguments = array()) { if (! is_callable($callback)) { Modified: branches/9.x/lib/profilelib/installlib.php =================================================================== --- branches/9.x/lib/profilelib/installlib.php 2012-04-25 13:44:06 UTC (rev 41097) +++ branches/9.x/lib/profilelib/installlib.php 2012-04-25 14:09:22 UTC (rev 41098) @@ -290,6 +290,9 @@ $tikilib->set_preference($pref, $value); } } + + tiki_setup_events(); + foreach ( $profile->getObjects() as $object ) { $this->getInstallHandler($object)->install(); $this->setFeedback(tra('Added (or modified)').': '.$object->getDescription()); @@ -303,6 +306,8 @@ $this->setFeedback(tra('Group changed (or modified)').': '.$groupName); $this->setupGroup($groupName, $info['general'], $info['permissions'], $info['objects'], $groupMap); } + + tiki_setup_events(); } // }}} private function setupGroup( $groupName, $info, $permissions, $objects, $groupMap ) // {{{ Modified: branches/9.x/lib/setup/events.php =================================================================== --- branches/9.x/lib/setup/events.php 2012-04-25 13:44:06 UTC (rev 41097) +++ branches/9.x/lib/setup/events.php 2012-04-25 14:09:22 UTC (rev 41098) @@ -5,102 +5,110 @@ // Licensed under the GNU LESSER GENERAL PUBLIC LICENSE. See license.txt for details. // $Id$ -$events = TikiLib::events(); +tiki_setup_events(); -if ($prefs['feature_wiki'] == 'y') { - if ( $prefs['quantify_changes'] == 'y' && $prefs['feature_multilingual'] == 'y' ) { - $events->bind('tiki.wiki.save', Event_Lib::defer('quantify', 'wiki_update')); - } -} +function tiki_setup_events() +{ + global $prefs; -if ($prefs['feature_trackers'] == 'y') { - $events->bind('tiki.trackeritem.save', Event_Lib::defer('trk', 'send_replace_item_notifications')); - $events->bind('tiki.trackeritem.save', Event_Lib::defer('trk', 'sync_item_geo')); + $events = TikiLib::events(); + $events->reset(); - if ($prefs['feature_categories'] == 'y') { - $events->bind('tiki.trackeritem.save', Event_Lib::defer('trk', 'sync_categories')); - $events->bind('tiki.trackeritem.save', Event_Lib::defer('trk', 'sync_item_auto_categories')); + if ($prefs['feature_wiki'] == 'y') { + if ( $prefs['quantify_changes'] == 'y' && $prefs['feature_multilingual'] == 'y' ) { + $events->bind('tiki.wiki.save', Event_Lib::defer('quantify', 'wiki_update')); + } } - - if (! empty($prefs['user_trackersync_realname'])) { - $events->bind('tiki.trackeritem.save', Event_Lib::defer('trk', 'sync_user_realname')); - } - if ($prefs['user_trackersync_groups'] == 'y') { - $events->bind('tiki.trackeritem.save', Event_Lib::defer('trk', 'sync_user_groups')); - } + if ($prefs['feature_trackers'] == 'y') { + $events->bind('tiki.trackeritem.save', Event_Lib::defer('trk', 'send_replace_item_notifications')); + $events->bind('tiki.trackeritem.save', Event_Lib::defer('trk', 'sync_item_geo')); - if ($prefs['user_trackersync_geo'] == 'y') { - $events->bind('tiki.trackeritem.save', Event_Lib::defer('trk', 'sync_user_geo')); + if ($prefs['feature_categories'] == 'y') { + $events->bind('tiki.trackeritem.save', Event_Lib::defer('trk', 'sync_categories')); + $events->bind('tiki.trackeritem.save', Event_Lib::defer('trk', 'sync_item_auto_categories')); + } + + if (! empty($prefs['user_trackersync_realname'])) { + $events->bind('tiki.trackeritem.save', Event_Lib::defer('trk', 'sync_user_realname')); + } + + if ($prefs['user_trackersync_groups'] == 'y') { + $events->bind('tiki.trackeritem.save', Event_Lib::defer('trk', 'sync_user_groups')); + } + + if ($prefs['user_trackersync_geo'] == 'y') { + $events->bind('tiki.trackeritem.save', Event_Lib::defer('trk', 'sync_user_geo')); + } + + if ($prefs['groupTracker'] == 'y') { + $events->bind('tiki.trackeritem.create', Event_Lib::defer('trk', 'group_tracker_create')); + } + + if ($prefs['feature_freetags'] == 'y') { + $events->bind('tiki.trackeritem.save', Event_Lib::defer('trk', 'sync_freetags')); + } + + $events->bind('tiki.trackeritem.save', Event_Lib::defer('trk', 'update_create_missing_pages')); + + if ($prefs['trackerfield_computed'] == 'y') { + $events->bind('tiki.trackeritem.save', array('Tracker_Field_Computed', 'computeFields')); + } + + if ($prefs['feature_multilingual'] == 'y') { + $events->bind('tiki.trackeritem.save', array('Tracker_Field_Language', 'update_language')); + } + + if ($prefs['trackerfield_icon'] == 'y') { + $events->bind('tiki.trackeritem.save', array('Tracker_Field_Icon', 'updateIcon')); + } + + $events->bind('tiki.trackeritem.save', Event_Lib::defer('trk', 'update_tracker_summary')); + $events->bind('tiki.trackeritem.save', Event_Lib::defer('trk', 'invalidate_item_cache')); } - if ($prefs['groupTracker'] == 'y') { - $events->bind('tiki.trackeritem.create', Event_Lib::defer('trk', 'group_tracker_create')); + if ($prefs['feature_search'] == 'y' && $prefs['unified_incremental_update'] == 'y') { + $events->bind('tiki.save', 'tiki_save_refresh_index'); } - if ($prefs['feature_freetags'] == 'y') { - $events->bind('tiki.trackeritem.save', Event_Lib::defer('trk', 'sync_freetags')); + if ($prefs['feature_file_galleries'] == 'y') { + $events->bind('tiki.save', Event_Lib::defer('filegal', 'save_sync_file_backlinks')); } - $events->bind('tiki.trackeritem.save', Event_Lib::defer('trk', 'update_create_missing_pages')); - - if ($prefs['trackerfield_computed'] == 'y') { - $events->bind('tiki.trackeritem.save', array('Tracker_Field_Computed', 'computeFields')); + if ($prefs['dailyreports_enabled_for_new_users'] == 'y') { + $events->bind('tiki.user.create', array(Reports_Factory::build('Reports_Users'), 'addUserToDailyReports')); } - if ($prefs['feature_multilingual'] == 'y') { - $events->bind('tiki.trackeritem.save', array('Tracker_Field_Language', 'update_language')); + if ($prefs['scorm_enabled'] == 'y') { + $events->bind('tiki.file.create', Event_Lib::defer('scorm', 'handle_file_creation')); + $events->bind('tiki.file.update', Event_Lib::defer('scorm', 'handle_file_update')); } - if ($prefs['trackerfield_icon'] == 'y') { - $events->bind('tiki.trackeritem.save', array('Tracker_Field_Icon', 'updateIcon')); + if ($prefs['feature_forwardlinkprotocol'] == 'y') { + $events->bind("tiki.wiki.view", 'tiki_wiki_view_forwardlink'); + $events->bind("tiki.wiki.save", 'tiki_wiki_save_forwardlink'); } - $events->bind('tiki.trackeritem.save', Event_Lib::defer('trk', 'update_tracker_summary')); - $events->bind('tiki.trackeritem.save', Event_Lib::defer('trk', 'invalidate_item_cache')); -} + $events->bind('tiki.save', Event_Lib::defer('tiki', 'plugin_post_save_actions')); -if ($prefs['feature_search'] == 'y' && $prefs['unified_incremental_update'] == 'y') { - $events->bind('tiki.save', 'tiki_save_refresh_index'); -} + // Chain events + $events->bind('tiki.wiki.update', 'tiki.wiki.save'); + $events->bind('tiki.wiki.create', 'tiki.wiki.save'); + $events->bind('tiki.wiki.save', 'tiki.save'); + $events->bind('tiki.wiki.view', 'tiki.view'); -if ($prefs['feature_file_galleries'] == 'y') { - $events->bind('tiki.save', Event_Lib::defer('filegal', 'save_sync_file_backlinks')); -} + $events->bind('tiki.trackeritem.update', 'tiki.trackeritem.save'); + $events->bind('tiki.trackeritem.create', 'tiki.trackeritem.save'); + $events->bind('tiki.trackeritem.save', 'tiki.save'); -if ($prefs['dailyreports_enabled_for_new_users'] == 'y') { - $events->bind('tiki.user.create', array(Reports_Factory::build('Reports_Users'), 'addUserToDailyReports')); -} + $events->bind('tiki.file.update', 'tiki.file.save'); + $events->bind('tiki.file.create', 'tiki.file.save'); + $events->bind('tiki.file.save', 'tiki.save'); -if ($prefs['scorm_enabled'] == 'y') { - $events->bind('tiki.file.create', Event_Lib::defer('scorm', 'handle_file_creation')); - $events->bind('tiki.file.update', Event_Lib::defer('scorm', 'handle_file_update')); + $events->bind('tiki.user.update', 'tiki.user.save'); + $events->bind('tiki.user.create', 'tiki.user.save'); } -if ($prefs['feature_forwardlinkprotocol'] == 'y') { - $events->bind("tiki.wiki.view", 'tiki_wiki_view_forwardlink'); - $events->bind("tiki.wiki.save", 'tiki_wiki_save_forwardlink'); -} - -$events->bind('tiki.save', Event_Lib::defer('tiki', 'plugin_post_save_actions')); - -// Chain events -$events->bind('tiki.wiki.update', 'tiki.wiki.save'); -$events->bind('tiki.wiki.create', 'tiki.wiki.save'); -$events->bind('tiki.wiki.save', 'tiki.save'); -$events->bind('tiki.wiki.view', 'tiki.view'); - -$events->bind('tiki.trackeritem.update', 'tiki.trackeritem.save'); -$events->bind('tiki.trackeritem.create', 'tiki.trackeritem.save'); -$events->bind('tiki.trackeritem.save', 'tiki.save'); - -$events->bind('tiki.file.update', 'tiki.file.save'); -$events->bind('tiki.file.create', 'tiki.file.save'); -$events->bind('tiki.file.save', 'tiki.save'); - -$events->bind('tiki.user.update', 'tiki.user.save'); -$events->bind('tiki.user.create', 'tiki.user.save'); - function tiki_save_refresh_index($args) { require_once('lib/search/refresh-functions.php'); @@ -120,4 +128,4 @@ function tiki_wiki_save_forwardlink($args) { Feed_ForwardLink::wikiSave($args); -} \ No newline at end of file +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |