function smarty_modifier_addongroupname($token) { $api = new TikiAddons_Api_Group(); if ($ret = $api->getOrganicGroupName($token)) { return $ret; } else { return $token; } }
function groupnavloader($data, $params) { global $auto_query_args; $auto_query_args_local = array('organicgroup'); $auto_query_args = empty($auto_query_args) ? $auto_query_args_local : array_merge($auto_query_args, $auto_query_args_local); if (!isset($params['from'])) { return 'Please specify parameter: from'; } $app = \TikiAddons::get('syn_organicgrp'); $api = new \TikiAddons_Api_Group(); if (!isset($_REQUEST['organicgroup']) && !empty($_REQUEST['page'])) { $info = $api->getOrganicGroupInfoForItem('wiki page', $_REQUEST['page']); $cat = $info['cat']; $ogid = $info['organicgroup']; $app->smarty->assign('groupTrackerItemId', $ogid); $_REQUEST['organicgroup'] = $ogid; if (!isset($_REQUEST['cat'])) { $_REQUEST['cat'] = $cat; } } if (!isset($_REQUEST['organicgroup']) && !empty($_REQUEST['itemId'])) { $info = $api->getOrganicGroupInfoForItem('trackeritem', $_REQUEST['itemId']); $cat = $info['cat']; $ogid = $info['organicgroup']; $app->smarty->assign('groupTrackerItemId', $ogid); $_REQUEST['organicgroup'] = $ogid; if (!isset($_REQUEST['cat'])) { $_REQUEST['cat'] = $cat; } } if (!empty($_REQUEST['organicgroup']) && empty($_REQUEST['cat'])) { $ogname = 'syn_organicgrp_' . $_REQUEST['organicgroup']; $cat = \TikiLib::lib('categ')->get_category_id($ogname); $_REQUEST['cat'] = $cat; } // if og is private, always redirect to home page if (isset($_REQUEST['organicgroup'])) { $ogname = 'syn_organicgrp_' . $_REQUEST['organicgroup']; global $user; if ($_REQUEST['page'] != 'syn_organicgrp_grouphomepage' && $api->organicGroupIsPrivate($ogname) && !\TikiLib::lib('user')->user_is_in_group($user, $ogname)) { header('Location: tiki-index.php?page=syn_organicgrp_grouphomepage&itemId=' . $_REQUEST['organicgroup']); } } $userlib = \TikiLib::lib('user'); $approvalCount = $userlib->nb_users_in_group("syn_organicgrp_pending_" . $_REQUEST['organicgroup']); //get the number of pending users $app->smarty->assign('approvalcount', $approvalCount); $app->smarty->assign('groupnavfrom', $params['from']); return $app->smarty->fetch('syn-groupnavloader.tpl'); }
/** * Returns an array of users that will receive the activity notification * @param $userpath is used to identify how to retrieve a user who is getting the notification * @param $arguments are passed from the activity to help gather the information needed * @return array|string array of user names * @throws Exception if user not found */ function getUsers($userpath, $arguments) { $userarr = explode(":", $userpath); switch ($userarr[0]) { case "argument": break; case "object": $users[] = $arguments['object']; break; case "user": $users[] = $arguments['user']; break; case "parent_comment_user": $users[] = $arguments['parent_comment_user']; break; case "trackeritem": $lib = TikiLib::lib('trk'); //get tracker id $io = $lib->get_item_info($arguments['object']); $tracker_id = $io["trackerId"]; //get the second parameter in the user path and set as field $field_id = $lib->get_field_id($tracker_id, $userarr[1]); $result = $lib->get_tracker_item((string) $arguments['object']); $users[] = $result[$field_id]; break; case "groupmember": $userlib = TikiLib::lib('user'); $users = $userlib->get_members($arguments['groupname']); break; case "groupmanagers": $api = new TikiAddons_Api_Group(); $group = $arguments['groupname']; if ($api->isOrganicGroup($group)) { $users = $api->getOrganicGroupLeaders($group); } break; default: TikiLib::lib('errorreport')->report(tr('Problem finding the associated user. %0 is not recognized. See EventNotify.php', $userarr[0])); break; } return $users; }
private static function initializeGroupApi($package) { if (!empty(self::$installed[$package]->api->group)) { $tracker = self::$installed[$package]->api->group->tracker; $public_catroot = self::$installed[$package]->api->group->public_catroot; $private_catroot = self::$installed[$package]->api->group->private_catroot; $managementpage = self::$installed[$package]->api->group->managementpage; $homepage = self::$installed[$package]->api->group->homepage; TikiAddons_Api_Group::setTracker($package, $tracker); TikiAddons_Api_Group::setPublicCatroot($package, $public_catroot); TikiAddons_Api_Group::setPrivateCatroot($package, $private_catroot); TikiAddons_Api_Group::setManagementPage($package, $managementpage); TikiAddons_Api_Group::setHomePage($package, $homepage); } }
function getDocument($objectId, Search_Type_Factory_Interface $typeFactory) { $row = $this->db->table('users_groups')->fetchRow(['groupDesc'], array('groupName' => $objectId)); if (!$row) { return false; } $api = new TikiAddons_Api_Group(); $groupName = $objectId; $addongroup = false; $addonpendinggroup = false; $addonleadergroup = false; if ($ret = $api->getOrganicGroupName($objectId)) { $groupName = $ret; $addongroup = $api->isOrganicGroup($objectId); if ($addongroup == true && $api->getOrganicGroupPendingToken($objectId) == $objectId) { $addonpendinggroup = true; } if ($addongroup == true && $api->getOrganicGroupLeaderToken($objectId) == $objectId) { $addonleadergroup = true; } } $data = array('title' => $typeFactory->sortable($groupName), 'description' => $typeFactory->plaintext($row['groupDesc']), 'searchable' => $typeFactory->identifier('n'), 'view_permission' => $typeFactory->identifier('tiki_p_group_view'), 'addongroup' => $addongroup ? $typeFactory->identifier('y') : $typeFactory->identifier('n'), 'addonleadergroup' => $addonleadergroup ? $typeFactory->identifier('y') : $typeFactory->identifier('n'), 'addonpendinggroup' => $addonpendinggroup ? $typeFactory->identifier('y') : $typeFactory->identifier('n')); return $data; }
function wpquery_filter_personalize($query, $type, array $arguments) { global $user; $targetUser = $user; if (!$targetUser) { $targetUser = "******"; // Invalid user name, make sure nothing matches } $subquery = $query->getSubQuery('personalize'); $types = array_filter(array_map('trim', explode(',', $type))); if (in_array('self', $types)) { $subquery->filterContributors($targetUser); $subquery->filterContent($targetUser, 'user'); } if (in_array('groups', $types)) { $part = new Search_Expr_Or(array_map(function ($group) { return new Search_Expr_Token($group, 'multivalue', 'user_groups'); }, Perms::get()->getGroups())); $subquery->getExpr()->addPart(new Search_Expr_And(array($part, new Search_Expr_Not(new Search_Expr_Token($targetUser, 'identifier', 'user'))))); } if (in_array('addongroups', $types)) { $api = new TikiAddons_Api_Group(); $cats = $api->getOrganicGroupCatsForUser($targetUser); if (empty($cats)) { $subquery->filterCategory('impossible'); } else { $subquery->filterCategory(implode(' ', $cats)); } } if (in_array('follow', $types)) { $subquery->filterMultivalue($targetUser, 'user_followers'); } $userId = TikiLib::lib('tiki')->get_user_id($targetUser); if (in_array('stream_critical', $types)) { $subquery->filterMultivalue("critical{$userId}", 'stream'); } if (in_array('stream_high', $types)) { $subquery->filterMultivalue("high{$userId}", 'stream'); } if (in_array('stream_low', $types)) { $subquery->filterMultivalue("low{$userId}", 'stream'); } }
function assign_user_to_group($user, $group, $bulk = false) { if (!$this->group_exists($group)) { throw new Exception(tr('Cannot add user %0 to nonexistent group %1', $user, $group)); } if (!$this->user_exists($user)) { throw new Exception(tr('Cannot add nonexistent user %0 to group %1', $user, $group)); } global $prefs, $tiki_p_admin, $page; $cachelib = TikiLib::lib('cache'); $tikilib = TikiLib::lib('tiki'); $access = TikiLib::lib('access'); if ($this->is_user_banned_from_group($user, $group)) { $msg = tr('User "%0" is banned from the group "%1".', $user, $group); if ($tiki_p_admin === 'y') { $access->check_authenticity($msg . ' ' . tra('Do you want to unban them and continue?')); $this->unban_user_from_group($user, $group); } else { $access->display_error($page, $msg); } } $cachelib->invalidate('user_details_' . $user); $tikilib->invalidate_usergroups_cache($user); $this->invalidate_usergroups_cache($user); // this is needed as cache is present in this instance too $group_ret = false; $userid = $this->get_user_id($user); if ($userid > 0) { $query = "insert ignore into `users_usergroups`(`userId`,`groupName`, `created`) values(?,?,?)"; $result = $this->query($query, array($userid, $group, $tikilib->now), -1, -1, false); $group_ret = true; } $this->update_group_expiries(); if ($prefs['feature_community_send_mail_join'] == 'y') { $api = new TikiAddons_Api_Group(); if ($api->isOrganicGroup($group)) { $groupleaders = $api->getOrganicGroupLeaders($group); $groupleaders = array_combine($groupleaders, $groupleaders); unset($groupleaders[$user]); if (isset($groupleaders[$_SESSION['u_info']['login']])) { unset($groupleaders[$_SESSION['u_info']['login']]); } if (!empty($groupleaders)) { $par_data['gname'] = $group; $par_data['user'] = $user; if (strpos($group, 'pending')) { $mail_temp = 'user_joins_group_notification_to_leads_need_app.tpl'; } else { $mail_temp = 'user_joins_group_notification_to_leads.tpl'; } require_once "lib/notifications/notificationemaillib.php"; sendEmailNotification($groupleaders, 'group_lead_mail', 'user_joins_group_notification_to_leads_subject.tpl', $par_data, $mail_temp); } } } if ($group_ret) { $watches = $tikilib->get_event_watches('user_joins_group', $group); if (count($watches)) { require_once "lib/notifications/notificationemaillib.php"; $smarty = TikiLib::lib('smarty'); $smarty->assign('mail_user', $user); $smarty->assign('mail_group', $group); sendEmailNotification($watches, null, 'user_joins_group_notification_subject.tpl', null, 'user_joins_group_notification.tpl'); } $api = new TikiAddons_Api_Group(); TikiLib::events()->trigger('tiki.user.groupjoin', array('type' => 'user', 'object' => $user, 'group' => $group, 'addongroup' => $api->getOrganicGroupName($group), 'is_organic' => $api->isOrganicGroup($group) ? 1 : 0, 'is_private' => $api->organicGroupIsPrivate($group) ? 1 : 0, 'addongroupid' => $api->getItemIdFromToken($group), 'bulk_import' => $bulk)); } return $group_ret; }
/** *\brief Send email notification to a list of emails or a list of (email, user) in a charset+language associated with each email * \param $watches : bidimensional array of watches. Each watch has user, language, email and watchId keys. * \param $dummy: unused * \param $subjectTpl: subject template file or null (ex: "submission_notifcation.tpl") * \param $subjectParam: le param to be inserted in the subject or null * \param $txtTpl : texte template file (ex: "submission_notifcation.tpl") * \param $from email from to not the default one * \ $smarty is supposed to be already built to fit $txtTpl * \return the nb of sent emails */ function sendEmailNotification($watches, $dummy, $subjectTpl, $subjectParam, $txtTpl, $from = '') { global $prefs; $smarty = TikiLib::lib('smarty'); $tikilib = TikiLib::lib('tiki'); $userlib = TikiLib::lib('user'); include_once 'lib/webmail/tikimaillib.php'; $sent = 0; $smarty->assign('mail_date', $tikilib->now); $foo = parse_url($_SERVER["REQUEST_URI"]); $smarty->assign('mail_machine', $tikilib->httpPrefix(true) . $foo["path"]); $parts = explode('/', $foo['path']); if (count($parts) > 1) { unset($parts[count($parts) - 1]); } $smarty->assign('mail_machine_raw', $tikilib->httpPrefix(true) . implode('/', $parts)); // TODO: mail_machine_site may be required for some sef url with rewrite to sub-directory. To refine. (nkoth) $smarty->assign('mail_machine_site', $tikilib->httpPrefix(true)); if ($dummy == 'group_lead_mail' || $dummy == 'add_rem_mail') { $api = new TikiAddons_Api_Group(); $subjectParam['gname'] = trim($subjectParam['gname']); $smarty->assign('mail_appdata', $subjectParam['app_data']); $smarty->assign('mail_group', $api->getOrganicGroupName($subjectParam['gname'])); $url = ''; if ($dummy == 'group_lead_mail') { $url = $api->getGroupManagementPage($subjectParam['gname']) . "?itemId=" . $api->getItemIdFromToken($subjectParam['gname']); $smarty->assign('mail_user', $subjectParam['user']); $smarty->assign('mail_real', $tikilib->get_user_preference($subjectParam['user'], 'realName', '')); } elseif ($dummy == 'add_rem_mail') { $url = $api->getGroupHomePage($subjectParam['gname']) . "?itemId=" . $api->getItemIdFromToken($subjectParam['gname']); } foreach ($watches as $key => $value) { $lang = $tikilib->get_user_preference($key, "language", $prefs['site_language']); if ($dummy != 'group_lead_mail') { // group_lead_mail already sets this $smarty->assign('mail_user', $key); $smarty->assign('mail_real', $tikilib->get_user_preference($key, 'realName', '')); } $smarty->assign('mail_remuser', $tikilib->get_user_preference($value, 'realName', '')); $userid = "user" . TikiLib::lib('user')->get_user_id($value); $smarty->assign('mail_userid', $userid); $smarty->assign('mail_site', $_SERVER['SERVER_NAME']); $smarty->assign('mail_url', $url); $foo = parse_url($_SERVER["REQUEST_URI"]); $machine = $tikilib->httpPrefix(true) . dirname($foo["path"]); if (substr($machine, -1) == '/') { $machine = substr($machine, 0, -1); } $smarty->assign('mail_machine', $machine); $mail = new TikiMail(null, $from); if ($key) { $mail->setUser($key); } if ($subjectTpl) { $mail_data = $smarty->fetchLang($lang, "mail/" . $subjectTpl); if ($subjectParam) { $mail_data = sprintf($mail_data, $subjectParam); } $mail_data = preg_replace('/%[sd]/', '', $mail_data); // partial cleaning if param not supply and %s in text $mail->setSubject($mail_data); } else { $mail->setSubject($subjectParam); } $mail->setHtml($smarty->fetchLang($lang, "mail/" . $txtTpl)); if ($mail->send(array(TikiLib::lib('user')->get_user_email($key)))) { $sent++; } } } else { foreach ($watches as $watch) { $mail = new TikiMail(null, $from); $smarty->assign('watchId', $watch['watchId']); if ($watch['user']) { $mail->setUser($watch['user']); } if ($subjectTpl) { $mail_data = $smarty->fetchLang($watch['language'], "mail/" . $subjectTpl); if ($subjectParam) { $mail_data = sprintf($mail_data, $subjectParam); } $mail_data = preg_replace('/%[sd]/', '', $mail_data); // partial cleaning if param not supply and %s in text $mail->setSubject($mail_data); } else { $mail->setSubject($subjectParam); } $mail->setText($smarty->fetchLang($watch['language'], "mail/" . $txtTpl)); if ($mail->send(array($watch['email']))) { $sent++; } } } return $sent; }
function wikiplugin_memberlist($data, $params) { global $prefs, $user, $page; $mail = false; $tikilib = TikiLib::lib('tiki'); $userlib = TikiLib::lib('user'); $smarty = TikiLib::lib('smarty'); static $execution = 0; $exec_key = 'memberlist-execution-' . ++$execution; if (!isset($params['groups'])) { return "^Missing group list^"; } $groups = $params['groups']; $defaults = array(); $plugininfo = wikiplugin_memberlist_info(); foreach ($plugininfo['params'] as $key => $param) { $defaults["{$key}"] = $param['default']; } $params = array_merge($defaults, $params); if ($prefs['feature_user_watches'] == 'y') { if (!empty($user)) { if (isset($_REQUEST['watch'])) { $tikilib->add_user_watch($user, 'user_joins_group', $_REQUEST['watch'], 'group'); } else { if (isset($_REQUEST['unwatch'])) { $tikilib->remove_user_watch($user, 'user_joins_group', $_REQUEST['unwatch'], 'group'); } } } } if (count($groups) === 1 && $groups[0] === '*') { // all available $groups = $userlib->list_all_groups(); } if (!empty($params['membersOnly'])) { if ($params['membersOnly'] === '%user%') { $params['membersOnly'] = $GLOBALS['user']; } $usergroups = $userlib->get_user_groups($params['membersOnly']); $in_group = array(); foreach ($groups as $group) { if (in_array($group, $usergroups) && $group != 'Anonymous') { $in_group[] = $group; } } $groups = $in_group; unset($in_group); } if (!empty($params['including'])) { $includinggroups = $userlib->get_including_groups($params['including']); $in_group = array(); foreach ($groups as $group) { if (in_array($group, $includinggroups)) { $in_group[] = $group; } } $groups = $in_group; unset($in_group); } if ($params['addon_groups_approval_buttons'] == 'y') { $pageInfo = $tikilib->get_page_info($page); $pageLang = $pageInfo['lang']; $api = new TikiAddons_Api_Group(); $group_base = $api->getOrganicGroupBaseName($params['groups'][0]); $smarty->assign('mail_group', $group_base); $itemId = $api->getItemIdFromToken($params['groups'][0]); $smarty->assign('mail_organicgroup_id', $itemId); $userid = "user" . $userlib->get_user_id($user); $smarty->assign('mail_userid', $userid); $smarty->assign('mail_url', $api->getGroupHomePage($params['groups'][0]) . '?itemId=' . $itemId); $foo = parse_url($_SERVER["REQUEST_URI"]); $machine = $tikilib->httpPrefix(true) . dirname($foo["path"]); if (substr($machine, -1) == '/') { $machine = substr($machine, 0, -1); } $smarty->assign('mail_machine', $machine); $file_wel = $smarty->fetchLang($pageLang, "mail/admin_approval_user_joins_group_notification.tpl"); $file_rej = $smarty->fetchLang($pageLang, "mail/admin_rejection_user_group_notification.tpl"); $smarty->assign('welcome_content', $file_wel); $smarty->assign('reject_content', $file_rej); $smarty->assign('Need_app', $exec_key); } else { $smarty->assign('Need_app', ''); } Perms::bulk(array('type' => 'group'), 'object', $groups); if ($params['readOnly'] == 'y') { $readOnly = true; } else { $readOnly = false; } $validGroups = wikiplugin_memberlist_get_group_details($groups, $params['max'], $params['sort_mode'], $readOnly); if (isset($_POST[$exec_key])) { if (isset($_POST['join'])) { wikiplugin_memberlist_join($validGroups, $_POST['join']); } if (isset($_POST['leave'])) { wikiplugin_memberlist_leave($validGroups, $_POST['leave']); } if (isset($_POST['remove'])) { if (isset($params['email_to_removed_user']) && $params['email_to_removed_user'] == 'y' || isset($_POST['text_area'])) { $mail = 'true'; } wikiplugin_memberlist_remove($validGroups, $_POST['remove'], $mail, $params); } if (isset($_POST['add'])) { $addit = array(); foreach ($_POST['add'] as $key => $value) { if ($params['addon_groups_approval_buttons'] == 'y') { $basegroup = $api->getOrganicGroupBaseToken($key); $valgroup[] = $basegroup; $addit['add'][$basegroup] = $value; $removeit['add'][$api->getOrganicGroupPendingToken($key)][] = $value; } else { $valgroup[] = $key; $addit['add'][$key] = $value; } } if (isset($params['email_to_added_user']) && $params['email_to_added_user'] == 'y' || isset($_POST['text_area'])) { $mail = 'true'; } $validrem = wikiplugin_memberlist_get_group_details($valgroup, $params['max'], $params['sort_mode'], $readOnly); if ($params['addon_groups_approval_buttons'] == 'y' && isset($removeit['add'])) { wikiplugin_memberlist_remove($validGroups, $removeit['add'], 'false', $params); } wikiplugin_memberlist_add($validrem, $addit['add'], '', $mail, $params); } if (isset($_POST['defgroup'])) { wikiplugin_memberlist_add($validGroups, $_POST['defgroup'], true); } header('Location: ' . $_SERVER['REQUEST_URI']); exit; } if (isset($_REQUEST['transition'], $_REQUEST['member'])) { if ($prefs['feature_group_transition'] == 'y') { require_once 'lib/transitionlib.php'; $transitionlib = new TransitionLib('group'); $transitionlib->triggerTransition($_REQUEST['transition'], $_REQUEST['member']); $url = $_SERVER['REQUEST_URI']; $url = str_replace('transition=', 'x=', $url); $url = str_replace('member=', 'x=', $url); header('Location: ' . $url); exit; } } $canApply = false; foreach ($validGroups as $group) { if ($group['can_add'] || $group['can_remove'] || $group['can_join'] || $group['can_leave']) { $canApply = true; break; } } if ($params['showDescriptions'] === 'y') { foreach ($validGroups as $name => &$group) { $group['info'] = $userlib->get_group_info($name); } } $smarty = TikiLib::lib('smarty'); $smarty->assign('execution_key', $exec_key); $smarty->assign('can_apply', $canApply); $smarty->assign('defaultGroup', $params['defaultGroup']); $smarty->assign('memberlist_groups', $validGroups); $smarty->assign('displayMode', $params['displayMode']); // seems conditionally adding tabs in the tpl doesn't work (unclosed {tabset} errors etc) - a Smarty 3 change? if (empty($params['displayMode']) && $prefs['feature_tabs'] === 'y') { $oldTabs = $prefs['feature_tabs']; $prefs['feature_tabs'] = 'n'; // css workarounds for when in non tabs mode TikiLib::lib('header')->add_css('.memberlist > fieldset { border: none; margin: 0; padding: 0; } .memberlist > fieldset > legend { display: none; }'); } $out = '~np~' . $smarty->fetch('wiki-plugins/wikiplugin_memberlist.tpl') . '~/np~'; if (empty($params['displayMode']) && !empty($oldTabs)) { $prefs['feature_tabs'] = $oldTabs; } return $out; }