/** * loops categories for display in dropdown lists * * @param string $access * @param int $parent * @param array $exclude * @param array $options * @param array $children * @return array */ static public function getCategoryOptions( $access = 'cat_grp_create', $parent = 0, $exclude = array(), &$options = array(), &$children = array() ) { static $categoryCache = null; if ( ! isset( $categoryCache ) ) { $categoryCache = cbgjData::getCategories( array( 'cat_access', 'mod_lvl1' ) ); } $categories = array(); if ( $categoryCache ) foreach ( $categoryCache as $cat ) { if ( $parent == $cat->get( 'parent' ) && ( ( ! $exclude ) || ( $exclude && ( ! in_array( $cat->get( 'id' ), $exclude ) ) ) ) ) { $categories[] = $cat; } } if ( $categories ) foreach ( $categories as $category ) { if ( $access ) { $authorized = cbgjClass::getAuthorization( $category ); } else { $authorized = array(); } $indent = null; if ( $parent ) { $depth = $category->getDepth( $parent ); if ( $depth ) { for ( $i = 0, $n = $depth; $i < $n; $i++ ) { $indent .= '- - '; } } $children[] = $category->get( 'id' ); } $optGroup = false; if ( ( ! $authorized ) || cbgjClass::hasAccess( $access, $authorized ) ) { $options[] = moscomprofilerHTML::makeOption( $category->get( 'id' ), $indent . $category->getName() ); } else { $optGroup = true; $options[] = moscomprofilerHTML::makeOptGroup( $indent . $category->getName() ); $options[] = moscomprofilerHTML::makeOptGroup( null ); $children = array(); } cbgjClass::getCategoryOptions( $access, $category->get( 'id' ), $exclude, $options, $children ); if ( $optGroup && ( ! $children ) ) { $options = array_slice( $options, 0, -2 ); } } return $options; }
/** * Function for the backend XML * * @param string $name Name of the control * @param string $value Current value * @param string $control_name Name of the controlling array (if any) * @return string HTML for the control data part or FALSE in case of error */ public function loadGJParentCategoryList( $name, $value, $control_name ) { global $_CB_framework; $api = $_CB_framework->getCfg( 'absolute_path' ) . '/components/com_comprofiler/plugin/user/plug_cbgroupjive/cbgroupjive.class.php'; if ( ! file_exists( $api ) ) { return CBPTXT::Th( 'GroupJive 2.x is not installed!' ); } /** @noinspection PhpIncludeInspection */ require_once( $api ); $gj_categories = cbgjClass::getCategoryOptions( null ); if ( $gj_categories ) { array_unshift( $gj_categories, moscomprofilerHTML::makeOption( '0', CBPTXT::T( 'No Parent' ) ) ); if ( isset( $value ) ) { $valAsObj = array_map( create_function( '$v', '$o=new stdClass(); $o->value=$v; return $o;' ), explode( '|*|', $value ) ); } else { $valAsObj = null; } $categories = moscomprofilerHTML::selectList( $gj_categories, $control_name ? $control_name .'['. $name .'][]' : $name, null, 'value', 'text', $valAsObj, 0, false, false ); } else { $categories = CBPTXT::T( 'No categories exist!' );; } return $categories; }
/** * prepare backend group edit render * * @param int $id * @param moscomprofilerUser $user * @param object $plugin * @param string $message */ private function showGroupEdit( $id, $user, $plugin, $message = null ) { global $_CB_framework; $groupEditor = $plugin->params->get( 'group_editor', 1 ); $row = cbgjData::getGroups( null, array( 'id', '=', (int) $id ), null, null, false ); $category = $row->getCategory(); $input = array(); $input['publish'] = moscomprofilerHTML::yesnoSelectList( 'published', null, (int) cbgjClass::getCleanParam( true, 'published', $row->get( 'published', ( $plugin->params->get( 'group_approve', 0 ) ? 0 : 1 ) ) ) ); $categories = cbgjClass::getCategoryOptions(); if ( $categories ) { $input['category'] = moscomprofilerHTML::selectList( $categories, 'category', null, 'value', 'text', (int) cbgjClass::getCleanParam( true, 'category', $row->get( 'category', $category->get( 'id' ) ) ), 1, false, false ); } else { $input['category'] = CBTxt::Th( 'There currently are no categories.' ); } if ( $row->get( 'id' ) ) { $groups = cbgjClass::getGroupOptions( null, $category->get( 'id' ), 0, array( $row->get( 'id' ) ) ); } else { $groups = cbgjClass::getGroupOptions( null, $category->get( 'id' ) ); } if ( $groups ) { array_unshift( $groups, moscomprofilerHTML::makeOption( '0', CBTxt::T( 'No Parent' ) ) ); $input['parent'] = moscomprofilerHTML::selectList( $groups, 'parent', null, 'value', 'text', (int) cbgjClass::getCleanParam( true, 'parent', $row->get( 'parent', 0 ) ), 1, false, false ); } else { if ( $category->get( 'id' ) ) { $input['parent'] = CBTxt::Th( 'There currently are no groups.' ); } else { $input['parent'] = CBTxt::Th( 'Please save group with category before selecting parent group.' ); } } $input['name'] = '<input type="text" id="name" name="name" value="' . htmlspecialchars( cbgjClass::getCleanParam( true, 'name', $row->get( 'name' ) ) ) . '" class="inputbox required" size="40" />'; if ( $groupEditor >= 2 ) { $description = cbgjClass::getHTMLCleanParam( true, 'description', $row->get( 'description' ) ); } else { $description = cbgjClass::getCleanParam( true, 'description', $row->get( 'description' ) ); } if ( $groupEditor == 3 ) { $input['description'] = $_CB_framework->displayCmsEditor( 'description', $description, 400, 200, 40, 5 ); } else { $input['description'] = '<textarea id="description" name="description" class="inputbox" cols="40" rows="5">' . htmlspecialchars( $description ) . '</textarea>'; } $input['file'] = '<input type="file" id="logo" name="logo" class="inputbox" size="40" />'; $input['del_logo'] = '<input type="checkbox" id="del_logo" name="del_logo" class="inputbox" value="1" /> <label for="del_logo">' . CBTxt::T( 'Delete logo?' ) . '</label>'; $listType = array(); $listType[] = moscomprofilerHTML::makeOption( '1', CBTxt::T( 'Open' ) ); $listType[] = moscomprofilerHTML::makeOption( '2', CBTxt::T( 'Approval' ) ); $listType[] = moscomprofilerHTML::makeOption( '3', CBTxt::T( 'Invite' ) ); $input['type'] = moscomprofilerHTML::selectList( $listType, 'type', 'class="inputbox required"', 'value', 'text', (int) cbgjClass::getCleanParam( true, 'type', $row->get( 'type', $plugin->params->get( 'group_type_default', 1 ) ) ), 1, false, false ); $listAccess = array(); $listAccess[] = moscomprofilerHTML::makeOption( '-2', CBTxt::T( '- Everybody' ) ); $listAccess[] = moscomprofilerHTML::makeOption( '-1', CBTxt::T( '- All Registered Users' ) ); $listAccess = array_merge( $listAccess, $_CB_framework->acl->get_group_children_tree( null, 'USERS', false ) ); $input['access'] = moscomprofilerHTML::selectList( $listAccess, 'access', 'class="inputbox required"', 'value', 'text', (int) cbgjClass::getCleanParam( true, 'access', $row->get( 'access', $plugin->params->get( 'group_access_default', -2 ) ) ), 1, false, false ); $listInvite = array(); $listInvite[] = moscomprofilerHTML::makeOption( '0', CBTxt::T( 'Group Users' ) ); $listInvite[] = moscomprofilerHTML::makeOption( '1', '. - ' . CBTxt::T( 'Group Moderators' ) ); $listInvite[] = moscomprofilerHTML::makeOption( '2', '. - ' . CBTxt::T( 'Group Admins' ) ); $listInvite[] = moscomprofilerHTML::makeOption( '3', '. - ' . CBTxt::T( 'Group Owner' ) ); $input['invite'] = moscomprofilerHTML::selectList( $listInvite, 'invite', 'class="inputbox required"', 'value', 'text', (int) cbgjClass::getCleanParam( true, 'invite', $row->get( 'invite', $plugin->params->get( 'group_invite_default', 0 ) ) ), 1, false, false ); $input['users'] = moscomprofilerHTML::yesnoSelectList( 'users', null, (int) cbgjClass::getCleanParam( true, 'users', $row->get( 'users', $plugin->params->get( 'group_users_default', 1 ) ) ) ); $input['nested'] = moscomprofilerHTML::yesnoSelectList( 'nested', null, (int) cbgjClass::getCleanParam( true, 'nested', $row->get( 'nested', $plugin->params->get( 'group_nested_default', 1 ) ) ), CBTxt::T( 'Enable' ), CBTxt::T( 'Disable' ) ); $input['nested_access'] = moscomprofilerHTML::selectList( $listInvite, 'nested_access', 'class="inputbox"', 'value', 'text', (int) cbgjClass::getCleanParam( true, 'nested_access', $row->get( 'nested_access', $plugin->params->get( 'group_nestedaccess_default', -1 ) ) ), 1, false, false ); $input['owner'] = '<input type="text" id="user_id" name="user_id" value="' . (int) cbgjClass::getCleanParam( true, 'user_id', $row->get( 'user_id', $user->id ) ) . '" class="inputbox required digits" size="6" />'; cbgjClass::displayMessage( $message ); HTML_cbgjAdmin::showGroupEdit( $row, $category, $input, $user, $plugin ); }