class GroupController extends AppController { public $uses = array('GroupGroup', 'GroupUser', 'GroupItem'); public $helpers = array(); public $components = array('Cookie', 'My', 'Access', 'Security', 'File', 'Image', 'Group', 'RequestHandler'); private $componentRight = array(); //De rechtgroepen binnen een groep die bij een component horen. private $userRights = false; // rechten van een user binnen een groep private $groupRights = false; // functies / settings die binnen een groep beschikbaar zijn public $showLeftSidebar = false; public $showRightSidebar = false; function beforeFilter() { if ($this->Cookie->read('localecode') && !$this->Session->check('Config.language')) { $this->Session->write('Config.language', $this->Cookie->read('localecode')); } parent::beforeFilter(); } function my() { $breadcrumbs[] = array('url' => '/group', 'name' => __('Groepen', true)); $breadcrumbs[] = array('url' => '/group/my', 'name' => __('Mijn Groepen', true)); $this->set('breadcrumbs', $breadcrumbs); $groupIds = $this->Group->getUserTypesIds(array('group_member')); $conditions = array('GroupUser.user_id' => $this->activeUser['UserUser']['id'], 'GroupUser.usertype_id' => $groupIds); $groups = $this->GroupUser->find('all', array('conditions' => $conditions, 'recursive' => 1, 'order' => array('users_amount' => 'DESC'))); $waitGroups = $this->Group->getUserTypesIds(array('user_needmoderation')); $conditions = array('GroupUser.user_id' => $this->activeUser['UserUser']['id'], 'GroupUser.usertype_id' => $waitGroups); $wait = $this->GroupUser->find('all', array('conditions' => $conditions, 'recursive' => 1, 'order' => array('users_amount' => 'DESC'))); $invitedGroups = $this->Group->getUserTypesIds(array('user_invited')); $conditions = array('GroupUser.user_id' => $this->activeUser['UserUser']['id'], 'GroupUser.usertype_id' => $invitedGroups); $invited = $this->GroupUser->find('all', array('conditions' => $conditions, 'recursive' => 1, 'order' => array('users_amount' => 'DESC'))); $private = $this->Group->getPrivateGroupGroupIds(); $groupTop = $this->GroupGroup->find('all', array('conditions' => array('NOT' => array('grouptype_id' => $private)),'order' => array('users_amount' => 'DESC'),'limit' => 10)); $this->set('groupTop', $groupTop); $this->pageTitle = __('Mijn groepen', true); $this->set('groups', $groups); $this->set('wait', $wait); $this->set('invited', $invited); } function index() { $breadcrumbs[] = array('url' => '/group', 'name' => __('Groepen', true)); $this->set('breadcrumbs', $breadcrumbs); $this->pageTitle = __('Publieke groepen', true); $private = $this->Group->getPrivateGroupGroupIds(); $groups = $this->GroupGroup->find('all', array('conditions' => array('NOT' => array('grouptype_id' => $private)))); $this->set('groups', $groups); } /*functie aanroepen op algemene bekijk pagina's, deze functie: * controleerd het bestaan van de groep * controleerd of de juiste rechten aanwezig zijn om de groep te bekijken *redirect bij geen rechten. */ private function start($id) { $this->Access->needRight('group_view', $this->activeUser); $group = $this->GroupGroup->find('first', array('conditions' => array('GroupGroup.id' => $id), 'recursive' => 0)); if($group) { if($this->Group->checkGroupRight($id, 'group', 'secret')) { if($this->Group->checkUserRight($id, 'group', 'access') === false) { $this->My->redirect(__('Geen toegang tot deze groep', true), '/group/index', 'notice'); } } } else { $this->My->redirect(__('De opgegeven groep is niet gevonden', true), '/group/index', 'notice'); } $this->pageTitle = $group['GroupGroup']['name']; $this->userRights = $this->Group->getUserRights($this->activeUser, $group['GroupGroup']['id']); $this->groupRights = $this->Group->getGroupRights($id); $this->set('groupRights', $this->groupRights); $this->set('userRights', $this->userRights); $this->set('group', $group); return $group; } function signup($group_id) { $this->Access->needRight('group_signup', $this->activeUser); $group = $this->GroupGroup->find('first', array('conditions' => array('id' => $group_id))); if($group) { $rights = $this->Group->getGroupCategoryRights($group['GroupGroup']['id'], 'signup'); // als het aanmelden open is if(isset($rights['public'])) { if($this->Group->saveGroupUserByRight($group_id, $this->activeUser['UserUser']['id'])) { $this->Group->updateUsersAmount($group_id); $this->My->redirect(__('U bent succesvol lid geworden', true), '/group/view/' . $group_id, 'success'); } } // als de aanmelding eerst gemodereerd moet worden elseif(isset($rights['moderate'])) { if($this->Group->saveGroupUserByRight($group_id, $this->activeUser['UserUser']['id'], 'user_needmoderation')) { $this->My->redirect(__('Als u goedgekeurd bent krijgt u toegang tot deze groep', true), '/group/view/' . $group_id, 'notice'); } } } $this->My->redirect(__('U kan geen lid worden van deze groep', true), '/group/view/' . $group_id, 'error'); } function signoff($group_id) { $this->Access->needRight('group_signoff', $this->activeUser); if($this->Group->checkUserRight($group_id, 'group', 'member')) { $this->Group->deleteGroupUser($group_id, $this->activeUser['UserUser']['id']); } } function view($id) { $group = $this->start($id); $breadcrumbs[] = array('url' => '/group', 'name' => __('Groepen', true)); $breadcrumbs[] = array('url' => '/group/view/' . $group['GroupGroup']['id'], 'name' => $group['GroupGroup']['name']); $this->set('breadcrumbs', $breadcrumbs); $forumMax = 10; $forumTopicModel = $this->import('Model', 'ForumTopic'); $forumSubgroupModel = $this->import('Model', 'ForumSubgroup'); $subgroup = $forumSubgroupModel->find('first', array('conditions' => array('group_id' => $id))); $topics = $forumTopicModel->find('all', array('conditions' => array('ForumTopic.subgroup_id' => $subgroup['ForumSubgroup']['id']), 'limit' => $forumMax, 'order' => array('ForumTopic.last_reaction' => 'DESC'))); $topicAmount = count($topics); if($topicAmount >= $forumMax) { $topicAmount = $forumTopicModel->find('count', array('conditions' => array('ForumTopic.subgroup_id' => $subgroup['ForumSubgroup']['id']))); } $this->set('subgroup', $subgroup); $this->set('topics', $topics); $this->set('topicAmount', $topicAmount); } function members($group_id) { $group = $this->start($group_id); $breadcrumbs[] = array('url' => '/group', 'name' => __('Groepen', true)); $breadcrumbs[] = array('url' => '/group/view/' . $group['GroupGroup']['id'], 'name' => $group['GroupGroup']['name']); $breadcrumbs[] = array('url' => '/group/members/' . $group['GroupGroup']['id'], 'name' => __('Leden', true)); $this->set('breadcrumbs', $breadcrumbs); $groupIds = $this->Group->getUserTypesIds(array('group_member')); $conditions = array('GroupUser.group_id' => $group_id, 'GroupUser.usertype_id' => $groupIds); $this->paginate = array('limit' => 12, 'order' => array('UserUser.online' => 'DESC'), 'recursive' => 1); $users = $this->paginate('GroupUser', $conditions); $rights = $this->Group->getUserCategoryRights($group_id, 'members'); $this->set('rights', $rights); $this->set('users', $users); $this->set('group_id', $group_id); } function addgroup() { $this->set('dealername', 'DealEr'); $this->Access->needRight('group_addgroup', $this->activeUser); $breadcrumbs[] = array('url' => '/group', 'name' => __('Groepen', true)); $breadcrumbs[] = array('url' => '/group/addgroup', 'name' => __('Toevoegen', true)); $this->set('breadcrumbs', $breadcrumbs); // groep toevoegen if(! empty($this->data)) { $this->import('Model', 'GroupUserright'); $type = $this->GroupUserright->find('all', array('conditions' => array('GroupUserright.name' => 'group_owner'), 'recursive' => 2)); $this->data['GroupGroup']['users_amount'] = 1; $this->data['GroupGroup']['theme_id'] = 'default'; if($this->GroupGroup->save($this->data)) { $group_id = $this->GroupGroup->getLastInsertId(); //CREATE FORUM $subgroupModel = $this->import('Model', 'ForumSubgroup'); $topgroupModel = $this->import('Model', 'ForumTopgroup'); $subgroup = $subgroupModel->find('first', array('conditions' => array('group_id' => $group_id))); if($subgroup === false) { $topgroup = $topgroupModel->find('first', array('conditions' => array('name' => __('Groepen', true)))); if($topgroup === false) { $topgroupModel->save(array('ForumTopgroup' => array('name' => __('Groepen', true), 'order' => 1000))); } $subgroupModel->save(array('ForumSubgroup' => array('topgroup_id' => $topgroup['ForumTopgroup']['id'], 'group_id' => $group_id, 'name' => $this->data['GroupGroup']['name'], 'description' => $this->data['GroupGroup']['description']))); } $this->data['GroupUser']['usertype_id'] = $type[0]['GroupUsertype'][0]['id']; $this->data['GroupUser']['user_id'] = $this->activeUser['UserUser']['id']; $this->data['GroupUser']['group_id'] = $group_id; if($this->GroupUser->save($this->data)) { $this->My->redirect(__('De groep is succesvol aangemaakt', true), '/group/view/' . $this->GroupGroup->getLastInsertId(), 'success'); } } } // pagina laten zien om groep toe te voegen $this->pageTitle = __('Nieuwe groep', true); $this->import('Model', 'GroupGrouptype'); $groupTypes = $this->GroupGrouptype->find('all'); $selectType = array(); foreach($groupTypes as $groupType) { $key = $groupType['GroupGrouptype']['id']; $value = $groupType['GroupGrouptype']['name']; $selectType[$key] = $value; } $this->set('selectType', $selectType); } //TODO verwijder winkel resten. function deletegroup($group_id) { $this->Access->needRight('group_deletegroup', $this->activeUser); if($this->Group->checkUserRight($group_id, 'group', 'delete')) { // de groep word tezamen met alle gebruikers verwijderd if($this->GroupGroup->del($group_id, true)) { $forumSubgroupModel = $this->import('Model','ForumSubgroup'); $forumSubgroupModel->query("DELETE forum_subgroups.*, forum_topics.*, forum_reactions.* FROM forum_subgroups LEFT JOIN forum_topics ON (forum_subgroups.id = forum_topics.subgroup_id) LEFT JOIN forum_reactions ON (forum_topics.id = forum_reactions.topic_id) WHERE forum_subgroups.group_id = {$group_id}"); $this->GroupItem->deleteAll(array('group_id' => $group_id)); $this->My->redirect('De groep is verwijderd', '/group/index/', 'success'); } } $this->My->redirect(__('De groep is niet gevonden of al verwijderd.', true), '/group/index/', 'notice'); } function editgroup($group_id) { $this->Access->needRight('group_editgroup', $this->activeUser); if($this->Group->checkUserRight($group_id, 'group', 'edit')) { if(! empty($this->data)) { $this->data['GroupGroup']['id'] = $group_id; $this->import('Component', 'Upload'); $continue = true; if($this->Upload->checkUpload('GroupGroup', 'image')) { $continue = false; $extension = $this->Upload->getFileType('GroupGroup', 'image'); if($extension) { if($extension == 'bmp') { $extension = 'jpeg'; $file = $this->data['GroupGroup']['image']['tmp_name']; exec("mogrify -format jpg {$file}"); //resize en convert naar jpg unlink($file); //verwijder oorspronkelijke bmp file $this->data['GroupGroup']['image']['tmp_name'] .= '.jpg'; $this->data['GroupGroup']['image']['type'] = 'image/jpg'; $this->data['GroupGroup']['image']['size'] = filesize($this->data['GroupGroup']['image']['tmp_name']); $_FILES['data']['tmp_name']['GroupGroup']['image'] .= '.jpg'; $_FILES['data']['type']['GroupGroup']['image'] = 'image/jpg'; $_FILES['data']['size']['GroupGroup']['image'] = filesize($_FILES['data']['tmp_name']['GroupGroup']['image']); } if(in_array($extension, array('png', 'gif', 'jpeg'))) { $oldwidth = $this->Upload->getFileWidth('GroupGroup', 'image'); $oldheight = $this->Upload->getFileHeight('GroupGroup', 'image'); require (CONFIGS . 'media.php'); $imageComponent = $this->import('Component', 'Image'); $widthheight = $imageComponent->_calcSize($oldwidth, $oldheight, $this->imagesizes['avatar']['width'], $this->imagesizes['avatar']['height']); $this->data['GroupGroup']['avatarinfo'] = substr(md5(rand()), 0, 5) . '_' . $widthheight['width'] . '_' . $widthheight['height'] . '.' . $extension; $imageinfo = $this->data['GroupGroup']['image']; unset($this->data['GroupGroup']['image']); if($this->GroupGroup->save($this->data, true, array('id', 'avatarinfo', 'modified'))) { $this->data['GroupGroup']['image'] = $imageinfo; $file = DATA_PATH . 'groupdata/' . $group_id . '/avatars/'; $this->File->removedir($file); $this->File->createdir($file); $file = DATA_PATH . 'groupdata/' . $group_id . '/avatars/' . $this->data['GroupGroup']['avatarinfo']; if($this->Upload->moveUpload('GroupGroup', 'image', $file)) { $bigavatar = DATA_PATH . 'groupdata/' . $group_id . '/avatars/big_' . $this->data['GroupGroup']['avatarinfo']; $microavatar = DATA_PATH . 'groupdata/' . $group_id . '/avatars/micro_' . $this->data['GroupGroup']['avatarinfo']; $this->File->copy($file, $bigavatar); $this->File->copy($file, $microavatar); $this->Image->resize($bigavatar, 'bigavatar'); $this->Image->resize($microavatar, 'micro'); $this->Image->resize($file, 'avatar'); $continue = true; } } } else { $this->CustomError->invalidate('UserUser', 'extension', 'error'); } } else { $this->CustomError->invalidate('UserUser', 'extension', 'error'); } } if($continue === true && $this->GroupGroup->save($this->data)) { $this->My->redirect(__('Groep aangepast', true), '/group/view/' . $group_id, 'success'); } } $this->pageTitle = __('Groep aanpassen', true); $this->GroupGroup->id = $group_id; $this->data = $this->GroupGroup->read(); $breadcrumbs[] = array('url' => '/group', 'name' => __('Groepen', true)); $breadcrumbs[] = array('url' => '/group/view/' . $this->data['GroupGroup']['id'], 'name' => $this->data['GroupGroup']['name']); $breadcrumbs[] = array('url' => '/group/editgroup/' . $this->data['GroupGroup']['id'], 'name' => __('Aanpassen', true)); $this->set('dealername', 'DealEr'); $this->set('breadcrumbs', $breadcrumbs); $this->import('Model', 'GroupGrouptype'); $groupTypes = $this->GroupGrouptype->find('all'); $selectType = array(); foreach($groupTypes as $groupType) { $key = $groupType['GroupGrouptype']['id']; $value = $groupType['GroupGrouptype']['name']; $selectType[$key] = $value; } $this->set('selectType', $selectType); $this->set('group_id', $group_id); } else { $this->My->redirect(__('Geen recht om de groep aan te passen', true), '/group/view/' . $group_id, 'notice'); } } function invite($group_id) { $this->Access->needRight('group_invite', $this->activeUser); $group = $this->GroupGroup->find('first', array('conditions' => array('GroupGroup.id' => $group_id))); if(empty($group)) { $this->My->redirect(__('Deze groep bestaat niet', true), '/group/index/', 'error'); } if($this->Group->checkUserRight($group_id, 'users', 'invite') || $this->Group->checkUserRight($group_id, 'users', 'add')) { $breadcrumbs[] = array('url' => '/group', 'name' => __('Groepen', true)); $breadcrumbs[] = array('url' => '/group/view/' . $group['GroupGroup']['id'], 'name' => $group['GroupGroup']['name']); $breadcrumbs[] = array('url' => '/group/invite/' . $group['GroupGroup']['id'], 'name' => __('Uitnodigen', true)); $this->set('breadcrumbs', $breadcrumbs); $userRights = $this->Group->getUserRights($this->activeUser, $group['GroupGroup']['id']); $this->pageTitle = __('Nodig mensen uit', true); $this->set('userRights', $userRights); $this->set('group_id', $group_id); } else { $this->My->redirect(__('U heeft geen recht om iemand uit te nodigen', true), '/group/view/' . $group_id, 'notice'); } } function search($group_id) { $this->Access->needRight('group_invite', $this->activeUser); $this->import('Model', 'UserUser'); $conditions = array(); $like = array(); $notArray = array(); $group = $this->GroupGroup->find('first', array('conditions' => array('GroupGroup.id' => $group_id), 'recursive' => 1)); if(empty($group)) { $this->My->redirect('Deze groep bestaat niet', '/group/index/', 'error'); } foreach($group['GroupUser'] as $user) { $notArray[] = $user['user_id']; } if(! empty($this->data['Group']['search'])) { $this->params['named']['search'] = $this->data['Group']['search']; } if(! empty($this->params['named']['search'])) { App::import('Sanitize'); $searchstring = Sanitize::paranoid($this->params['named']['search']); $like = array('UserUser.nick LIKE' => '%' . $searchstring . '%'); } if(! empty($this->data['Group']['NOT'])) { $this->params['named']['not'] = implode("_", $this->data['Group']['NOT']); } if(! empty($this->params['named']['not'])) { $notArray = array('NOT' => array('UserUser.id' => array_merge($notArray, explode('_', $this->params['named']['not'])))); } else { $notArray = array('NOT' => array('UserUser.id' => $notArray)); } $conditions = array_merge($like, $notArray); $this->paginate = array('limit' => 30, 'order' => array('UserUser.nick' => 'asc')); //TODO: search: Alleen échte users laten vinden, dus geen AI $users = $this->paginate('UserUser', $conditions); $this->set('users', $users); $this->set('group_id', $group_id); } function addmembers($group_id) { $this->Access->needRight('group_invite', $this->activeUser); if(empty($this->data['GroupInvite'])) { $this->My->redirect(__('Kies eerst de personen die je wilt toevoegen', true), '/group/invite/' . $group_id, 'notice'); } $this->import('Model', 'UserUser'); $saved = array(); foreach(array_keys($this->data['GroupInvite']) as $key) { $checkUser = $this->UserUser->find('first', array('conditions' => array('UserUser.id' => $key))); if($checkUser) { $this->Group->saveGroupUserByRight($group_id, $key, 'group_defaultmember'); $saved[] = $checkUser['UserUser']['nick']; } } $this->Group->updateUsersAmount($group_id); $this->pageTitle = __('Toegevoegde leden', true); $this->set('saved', $saved); $this->set('group_id', $group_id); } function invitemembers($group_id) { $this->Access->needRight('group_invite', $this->activeUser); if(empty($this->data['GroupInvite'])) { $this->My->redirect(__('Kies eerst de personen die je wilt toevoegen', true), '/group/invite/' . $group_id, 'notice'); } $this->import('Model', 'UserUser'); $this->import('Component', 'Email'); $saved = array(); $group = $this->GroupGroup->find('first', array('conditions' => array('GroupGroup.id' => $group_id))); if($group) { foreach(array_keys($this->data['GroupInvite']) as $key) { $checkUser = $this->UserUser->find('first', array('conditions' => array('UserUser.id' => $key))); if($checkUser) { if($this->Group->saveGroupUserByRight($group_id, $key, 'user_invited')) { $this->Email->sendMail($checkUser, $this->activeUser, 'groupinvite', array('replace' => array('url' => SITE_URL . '/group/acceptinvite/' . $group_id, 'group_name' => $group['GroupGroup']['name']))); $saved[] = $checkUser['UserUser']['nick']; } } } } $this->pageTitle = __('Uitgenodigde leden', true); $this->set('saved', $saved); $this->set('group_id', $group_id); } function acceptinvite($group_id) { $this->Access->needRight('group_invite', $this->activeUser); if($this->Group->checkUserRight($group_id, 'user', 'invited')) { if(! empty($this->data['GroupGroup']['accept'])) { if($this->Group->deleteGroupUser($group_id, $this->activeUser['UserUser']['id'], false)) { if($this->data['GroupGroup']['accept'] == true) { if($this->Group->saveGroupUserByRight($group_id, $this->activeUser['UserUser']['id'], 'group_defaultmember')) { $this->Group->updateUsersAmount($group_id); $this->My->redirect(__('U heeft de uitnodiging succesvol geaccepteerd', true), '/group/view/' . $group_id, 'success'); } } else { $this->My->redirect(__('U heeft de uitnodiging succesvol afgewezen', true), '/group/index', 'success'); } } } $group = $this->GroupGroup->find('first', array('conditions' => array('GroupGroup.id' => $group_id))); $this->pageTitle = __('U bent uitgenodigd voor de groep: ', true) . $group['GroupGroup']['name']; $this->set('group_id', $group_id); } else { $this->My->redirect(__('U bent niet uitgenodigd voor deze groep', true), '/group/index', 'notice'); } } function moderate($group_id) { $this->Access->needRight('group_moderate', $this->activeUser); $group = $this->GroupGroup->find('first', array('conditions' => array('GroupGroup.id' => $group_id))); if($group) { if($this->Group->checkUserRight($group_id, 'members', 'edit')) { if(! empty($this->data)) { foreach($this->data['GroupUser'] as $user_id => $type_id) { $this->Group->changeGroupUsertype($group_id, $user_id, $type_id); } $this->Group->updateUsersAmount($group_id); $this->My->redirect(__('De personen zijn geaccepteerd', true), '/group/view/' . $group_id, 'success'); } $this->import('Model', 'GroupUsertype'); // haal de wannabe leden op $remove = $this->Group->getUserTypesIds(array('group_member', 'user_invited')); $wannabeMembers = $this->GroupUser->find('all', array('conditions' => array('GroupUser.group_id' => $group_id, 'NOT' => array('GroupUser.usertype_id' => $remove)), 'recursive' => 1)); if(empty($wannabeMembers)) { $this->My->redirect(__('Er zijn geen leden die om acceptatie vragen', true), '/group/view/' . $group_id, 'notice'); } $wannabeNotList = $this->Group->getUserTypesIds(array('group_nomember', 'site_nomember', 'user_invited')); $wannabeGroupUsertypes = $this->GroupUsertype->find('list', array('conditions' => array('NOT' => array('GroupUsertype.id' => $wannabeNotList)))); $this->pageTitle = 'Leden die bij de groep willen'; $this->set('wannabeGroupUsertypes', $wannabeGroupUsertypes); $this->set('wannabeMembers', $wannabeMembers); $this->set('group_id', $group_id); } else { $this->My->redirect(__('Geen recht om leden te accepteren', true), '/group/view/' . $group_id, 'notice'); } } else { $this->My->redirect(__('De groep waarin u leden wilt accepteren bestaat niet', true), '/group/index', 'error'); } } function edituser($group_id, $user_id) { $this->Access->needRight('group_editusers', $this->activeUser); if($this->Group->checkUserRight($group_id, 'members', 'edit')) { if(! empty($this->data)) { $type_id = $this->data['GroupUser']['type_id']; $this->Group->changeGroupUsertype($group_id, $user_id, $type_id); $this->render(false); } // haal lid op $member = $this->GroupUser->find('all', array('conditions' => array('GroupUser.group_id' => $group_id, 'GroupUser.user_id' => $user_id), 'recursive' => 1)); $find = $this->Group->getUserTypesIds(array('group_member')); $this->import('Model', 'GroupUsertype'); $groupUsertypes = $this->GroupUsertype->find('list', array('conditions' => array('GroupUsertype.id' => $find))); $this->pageTitle = 'Pas de functies van leden aan'; $this->set('groupUsertypes', $groupUsertypes); $this->set('user_id', $user_id); $this->set('group_id', $group_id); $this->set('member', $member); } else { $this->My->redirect(__('U heeft geen recht om de gebruikers te bewerken', true), '/group/view/' . $group_id, 'notice'); } } function deleteuser($group_id, $user_id) { $this->Access->needRight('group_deleteusers', $this->activeUser); if($this->isAjax) { if($this->Group->checkUserRight($group_id, 'members', 'edit')) { $this->Group->deleteGroupUser($group_id, $user_id, true); $this->render(false, 'ajax'); } } else { $this->My->redirect(false, '/group/view/' . $group_id, 'notice'); } } function info($id) { $group = $this->GroupGroup->find('first', array('conditions' => array('GroupGroup.id' => $id), 'recursive' => 2)); if($group) { $users = $group['GroupUser']; $videos = array(); $this->set('member', $this->GroupUser->find('first', array('conditions' => array('GroupUser.group_id' => $id, 'user_id' => $this->activeUser['UserUser']['id'])))); $this->set('videos', $videos); $this->set('users', $users); $this->set('group', $group); } else { $this->My->redirect(__('Groep niet gevonden', true), '/group', 'error'); } } function deletecomponent($item_id) { //zoek item $item = $this->GroupItem->findById($item_id); if($item_id) { $rightToDelete = false; //Bepaal of je moderatie rechten hebt voor het component in de groep. if($this->Group->checkUserRight($item['GroupItem']['group_id'], $this->componentRight[$this->SiteComponents[$item['GroupItem']['component_id']]['name']], 'moderate')) { $rightToDelete = true; } else { //Bepaal of je de eigenaar bent van het item $itemModel = $this->import('Model', $this->SiteComponents[$item['GroupItem']['component_id']]['model']); $itemRecord = $itemModel->findById($item['GroupItem']['record_id']); if($itemRecord[$this->SiteComponents[$item['GroupItem']['component_id']]['model']]['user_id'] == $this->activeUser['UserUser']['id']) { $rightToDelete = true; } } if($rightToDelete) { if($this->GroupItem->delete($item_id)) { $this->My->redirect($this->SiteComponents[$item['GroupItem']['component_id']]['displayname'] . ' verwijderd uit de groep.', '/group/view/' . $item['GroupItem']['group_id'], 'success'); } else { $this->My->redirect($this->SiteComponents[$item['GroupItem']['component_id']]['displayname'] . ' niet verwijderd uit de groep.', '/group/view/' . $item['GroupItem']['group_id'], 'error'); } } else { $this->My->redirect(__('Je hebt geen rechten om ', true) . $this->SiteComponents[$item['GroupItem']['component_id']]['description'] . __(' te verwijderd uit deze groep.', true), '/group/view/' . $item['GroupItem']['group_id'], 'error'); } } else { $this->My->redirect(__('Het te verwijderen item is niet gevonden.', true), '/', 'error'); } } function addcomponent_forum($group_id) { $group = $this->GroupGroup->find('first', array('conditions' => array('id' => $group_id))); if($group) { $forumSubgroupModel = $this->import('Model', 'ForumSubgroup'); $subgroup = $forumSubgroupModel->findByGroupId($group['GroupGroup']['id']); if($subgroup !== false) { $this->Group->needForumAccess($subgroup); $this->Group->needUserRight($group['GroupGroup']['id'], 'forum', 'create'); $this->set('subgroup', $subgroup); $this->set('allowGeneral', $this->Access->checkRight('moderator_post_as_general', $this->activeUser)); return; } } $this->My->redirect(__('Groep niet gevonden', true), '/group', 'error'); } function addcomponent($group_id, $component_name, $item_id = null) { if(isset($item_id)) { return $this->addcomponentSave($group_id, $component_name, $item_id); } $group = $this->GroupGroup->find('first', array('conditions' => array('id' => $group_id))); if($group) { $this->My->redirect(__('Je hebt geen rechten om onderdelen toe te voegen', true), '/group/view/' . $group_id, 'error'); } else { $this->My->redirect(__('Groep niet gevonden', true), '/group', 'error'); } return false; } // function addforumtopic() function addcomponentSave($group_id, $component_name, $item_id, $redirect = false) { $group = $this->GroupGroup->find('first', array('conditions' => array('id' => $group_id))); if($group) { $noAccess = false; $saveNow = false; //ALS ITEM IS GEVONDEN EN RECHTEN ZIJN AANWEZIG VOEG ITEM TOE if($saveNow) { if(! $this->GroupItem->find('first', array('conditions' => $GroupItem))) { if($this->GroupItem->save($GroupItem)) { $message = __('Toegevoegd', true); } else { $message = __('Fout', true); } } else { $message = __('Al aanwezig', true); } } else { if($noAccess) { $message = __('Geen toegang', true); } else { $message = __('Geen ', true) . $component['SiteComponent']['displayname']; } } if($redirect === 'true') { $this->My->redirect($message, '/group/view/' . $group['GroupGroup']['id'], 'success'); } $this->set('redirect', $redirect); } else { $this->My->redirect(__('Groep niet gevonden', true), '/group', 'error'); } $this->set('group', $group); $this->set('message', $message); $this->render('message'); } function forum($group_id) { $group = $this->start($group_id); if($this->checkDisabled('Forum')) { $this->My->redirect(__('Ongeldige pagina', true), '/group/view/' . $group_id, 'error'); } $group = $this->start($group_id); $breadcrumbs[] = array('url' => '/group', 'name' => __('Groepen', true)); $breadcrumbs[] = array('url' => '/group/view/' . $group['GroupGroup']['id'], 'name' => $group['GroupGroup']['name']); $breadcrumbs[] = array('url' => '/group/forum/' . $group['GroupGroup']['id'], 'name' => __('Forum', true)); $this->set('breadcrumbs', $breadcrumbs); $subgroupModel = $this->import('Model', 'ForumSubgroup'); $subgroup = $subgroupModel->find('first', array('conditions' => array('group_id' => $group_id))); if(! $this->Group->checkForumAccess($subgroup)) { $this->My->redirect(__('Je hebt geen toegang tot het forum van ', true) . $group['GroupGroup']['name'], '/group/view/' . $group_id, 'error'); } $this->paginate['conditions'] = array('subgroup_id' => $subgroup['ForumSubgroup']['id']); $this->paginate['order'] = array('ForumTopic.status' => 'DESC', 'ForumTopic.last_reaction' => 'DESC'); $this->paginate['limit'] = 50; $topicModel = $this->import('Model', 'ForumTopic'); $topicModel->recursive = 0; $topicModel->unbindModel(array('belongsTo' => array('TopicStarter', 'LastPoster'))); $topics = $this->paginate('ForumTopic'); $topicModel->recursive = - 1; if(! $topics) { $topics = array(); } $breadcrumbs[] = array('url' => '/forum/index', 'name' => __('Forum', true)); $breadcrumbs[] = array('url' => '/forum/subgroup/' . $subgroup['ForumSubgroup']['id'], 'name' => $subgroup['ForumSubgroup']['name']); $this->pageTitle = $group['GroupGroup']['name']; $this->pageDescription = $group['GroupGroup']['name'] . ': ' . $this->buildDescription($group['GroupGroup']['description']); //aantal reacties per pagina binnen een topic $this->set('breadcrumbs', $breadcrumbs); $this->set('subgroup', $subgroup); $this->set('topics', $topics); //Mag je een nieuw topic maken in deze subgroep? $this->set('newAllowed', $this->Group->checkUserRight($group_id, 'forum', 'create')); if($subgroup['ForumSubgroup']['status'] == 'closed') { $this->set('newAllowed', $this->Group->checkUserRight($group_id, 'forum', 'edit')); } //Mag je topics verwijderen? $this->set('deleteAllowed', $this->Group->checkUserRight($group_id, 'forum', 'delete')); //Mag je topics wijzigen? $this->set('changeAllowed', $this->Group->checkUserRight($group_id, 'forum', 'edit')); } } ?>