-chdir('..');
-require_once('../src/validate.php');
-require_once('../functions/page_header.php');
-require_once('../functions/imap.php');
-require_once('../src/load_prefs.php');
-require_once('../plugins/administrator/defines.php');
-require_once('../plugins/administrator/auth.php');
+ $new_path = '';
+ $rel_path = explode("../", $old_path);
+ if ( count($rel_path) > 2 ) {
+ // Since we're relative to the config dir,
+ // more than 1 ../ puts us OUTSIDE the SM tree.
+ // get full path to config.php, then pop the filename
+ $abs_path = explode('/', realpath (SM_PATH . 'config/config.php'));
+ array_pop ($abs_path);
+ foreach ( $rel_path as $subdir ) {
+ if ( $subdir === '' ) {
+ array_pop ($abs_path);
+ } else {
+ array_push($abs_path, $subdir);
+ }
+ }
+ foreach ($abs_path as $subdir) {
+ $new_path .= $subdir . '/';
+ }
+ $new_path = "'$new_path'";
+ } elseif ( count($rel_path) > 1 ) {
+ // we're within the SM tree, prepend SM_PATH
+ $new_path = str_replace('../',"SM_PATH . '", $old_path . "'");
+ } else {
+ // Last, if it's a relative path without a .. prefix,
+ // we're somewhere within the config dir, so prepend
+ // SM_PATH . 'config/
+ $new_path = "SM_PATH . 'config/" . $old_path . "'";
+ }
+ return $new_path;
+}