Index: branches/RC/admin/install/upgrades/inportal_upgrade_v4.2.0.php =================================================================== diff -u --- branches/RC/admin/install/upgrades/inportal_upgrade_v4.2.0.php (revision 0) +++ branches/RC/admin/install/upgrades/inportal_upgrade_v4.2.0.php (revision 9121) @@ -0,0 +1,8 @@ +Upgrade_4_2_0('after'); +?> \ No newline at end of file Index: branches/RC/core/kernel/db/db_event_handler.php =================================================================== diff -u -r9043 -r9121 --- branches/RC/core/kernel/db/db_event_handler.php (.../db_event_handler.php) (revision 9043) +++ branches/RC/core/kernel/db/db_event_handler.php (.../db_event_handler.php) (revision 9121) @@ -411,10 +411,12 @@ $perm_status = true; $user_id = $this->Application->RecallVar('user_id'); $event->setEventParam('top_prefix', $this->Application->GetTopmostPrefix($event->Prefix, true)); + $status_checked = false; if ($user_id == -1 || $this->CheckPermission($event)) { // don't autoload item, when user doesn't have view permission $this->LoadItem($event); + $status_checked = true; if ($user_id != -1 && !$this->checkItemStatus($event)) { $perm_status = false; } @@ -428,7 +430,7 @@ if ($this->Application->isDebugMode()) { $this->Application->Debugger->appendTrace(); } - trigger_error('ItemLoad Permission Failed for prefix ['.$event->getPrefixSpecial().']', E_USER_WARNING); + trigger_error('ItemLoad Permission Failed for prefix ['.$event->getPrefixSpecial().'] in '.($status_checked ? 'checkItemStatus' : 'CheckPermission').'', E_USER_WARNING); $next_template = $this->Application->IsAdmin() ? 'no_permission' : $this->Application->ConfigValue('NoPermissionTemplate'); $this->Application->Redirect($next_template, Array('next_template' => $this->Application->GetVar('t'))); } Index: branches/RC/core/units/email_events/email_events_event_handler.php =================================================================== diff -u -r8929 -r9121 --- branches/RC/core/units/email_events/email_events_event_handler.php (.../email_events_event_handler.php) (revision 8929) +++ branches/RC/core/units/email_events/email_events_event_handler.php (.../email_events_event_handler.php) (revision 9121) @@ -1,12 +1,5 @@ "") AND (LanguageId = 1)'; $replacement_tags = $this->Conn->GetCol($sql, 'EventId'); - + foreach ($replacement_tags as $event_id => $replacement_tag) { $sql = 'UPDATE '.TABLE_PREFIX.'Events SET ReplacementTags = '.$this->Conn->qstr($replacement_tag).' WHERE EventId = '.$event_id; $this->Conn->Query($sql); } - + // drop moved field from source table $sql = 'ALTER TABLE '.TABLE_PREFIX.'EmailMessage DROP `ReplacementTags`'; $this->Conn->Query($sql); } } - + /** * Callback function, that makes all ml fields of text type null with same default value * @@ -115,6 +115,48 @@ return true; } + /** + * Replaces In-Portal tags in Forgot Password related email events to K4 ones + * + * @param string $mode when called mode {before, after) + */ + function Upgrade_4_2_0($mode) + { + if ($mode == 'after') { + // 1. get event ids based on their name and type combination + $event_names = Array ( + 'USER.PSWD_'.EVENT_TYPE_ADMIN, + 'USER.PSWD_'.EVENT_TYPE_FRONTEND, + 'USER.PSWDC_'.EVENT_TYPE_FRONTEND, + ); + + $event_sql = Array (); + foreach ($event_names as $mixed_event) { + list ($event_name, $event_type) = explode('_', $mixed_event, 2); + $event_sql[] = 'Event = "'.$event_name.'" AND Type = '.$event_type; + } + + $sql = 'SELECT EventId + FROM '.TABLE_PREFIX.'Events + WHERE ('.implode(') OR (', $event_sql).')'; + $event_ids = implode(',', $this->Conn->GetCol($sql)); + + // 2. replace In-Portal tags to K4 tags + $replacements = Array ( + '' => '', + '' => '', + ); + + foreach ($replacements as $old_tag => $new_tag) { + $sql = 'UPDATE '.TABLE_PREFIX.'EmailMessage + SET Template = REPLACE(Template, '.$this->Conn->qstr($old_tag).', '.$this->Conn->qstr($new_tag).') + WHERE EventId IN ('.$event_ids.')'; + $this->Conn->Query($sql); + } + + } + } + } ?> \ No newline at end of file Index: branches/RC/core/kernel/constants.php =================================================================== diff -u -r8929 -r9121 --- branches/RC/core/kernel/constants.php (.../constants.php) (revision 8929) +++ branches/RC/core/kernel/constants.php (.../constants.php) (revision 9121) @@ -11,11 +11,11 @@ define('FLT_SEARCH', 3); // User "Search" Having/Where filter [OR] define('FLT_VIEW', 4); // User "View Menu" Having/Where filter [AND] define('FLT_CUSTOM', 5); // Custom fields (above) grid columns [AND] - + // kMultipleFilter types define('FLT_TYPE_AND', 'AND'); define('FLT_TYPE_OR', 'OR'); - + // item statuses safeDefine('STATUS_DISABLED', 0); safeDefine('STATUS_ACTIVE', 1); @@ -37,8 +37,16 @@ define('ptCATEGORY', 0); define('ptSYSTEM', 1); + // email event statuses & types + define('EVENT_TYPE_FRONTEND', 0); + define('EVENT_TYPE_ADMIN', 1); + + define('EVENT_STATUS_DISABLED', 0); + define('EVENT_STATUS_ENABLED', 1); + define('EVENT_STATUS_FRONTEND', 2); + define('EDIT_MARK', '&|edit|&'); // replace this sequence inside filters to SID[_main_wid] - + $application =& kApplication::Instance(); $spacer_url = $application->BaseURL().'core/admin_templates/img/spacer.gif'; define('SPACER_URL', $spacer_url); @@ -47,10 +55,10 @@ // don't show debugger buttons on front (if not overrided in "debug.php") safeDefine('DBG_TOOLBAR_BUTTONS', 0); } - + define('smDEBUG', 2); // show section in debug mode only define('smSUPER_ADMIN', 4); // show section in super admin & debug mode - + // common usage regular expressions define('REGEX_EMAIL_USER', '[-a-zA-Z0-9!\#$%&*+\/=?^_`{|}~.]+'); define('REGEX_EMAIL_DOMAIN', '[a-zA-Z0-9]{1}[-.a-zA-Z0-9_]*\.[a-zA-Z]{2,6}');