tra('Perspective'), 'documentation' => 'PluginPerspective', 'description' => tra('Display content based on the user\'s current perspective'), 'prefs' => [ 'feature_perspective', 'wikiplugin_perspective' ], 'body' => tr('Wiki text to display if conditions are met. The body may contain %0{ELSE}%1. Text after the marker will be displayed to users not matching the condition.', '', ''), 'filter' => 'wikicontent', 'iconname' => 'view', 'introduced' => 7.1, 'params' => [ 'perspectives' => [ 'required' => false, 'name' => tra('Allowed Perspectives'), 'description' => tra('Pipe-separated list of identifiers of perspectives in which the block is shown.') . tra('Example value:') . ' 2|3|5', 'since' => '7.1', 'filter' => 'digits', 'separator' => '|', 'default' => '', 'profile_reference' => 'perspective', ], 'notperspectives' => [ 'required' => false, 'name' => tra('Denied Perspectives'), 'description' => tra('Pipe-separated list of identifiers of perspectives in which the block is not shown.') . tra('Example value:') . ' 3|5|8', 'since' => '7.1', 'filter' => 'digits', 'separator' => '|', 'default' => '', 'profile_reference' => 'perspective', ], ], ]; } function wikiplugin_perspective($data, $params) { global $prefs; $dataelse = ''; if (strpos($data, '{ELSE}')) { $dataelse = substr($data, strpos($data, '{ELSE}') + 6); $data = substr($data, 0, strpos($data, '{ELSE}')); } if (! empty($params['perspectives'])) { $perspectives = $params['perspectives']; } if (! empty($params['notperspectives'])) { $notperspectives = $params['notperspectives']; } if (empty($perspectives) && empty($notperspectives)) { return ''; } $perspectivelib = TikiLib::lib('perspective'); $currentPerspective = $perspectivelib->get_current_perspective($prefs); // if the current perspective is not an allowed perspective, return the content after the "{ELSE}" if (! empty($perspectives) && ! in_array($currentPerspective, $perspectives)) { return $dataelse; } // if the current perspective is a denied perspective, return the content after the "{ELSE}" if (! empty($notperspectives) && in_array($currentPerspective, $notperspectives)) { return $dataelse; } return $data; }