/** * render frontend category message * * @param cbgjCategory $row * @param array $input * @param moscomprofilerUser $user * @param object $plugin */ static function showCategoryMessage( $row, $input, $user, $plugin ) { $row->setPathway( CBTxt::P( 'Message [groups]', array( '[groups]' => cbgjClass::getOverride( 'group', true ) ) ), cbgjClass::getPluginURL( array( 'categories', 'message', (int) $row->get( 'id' ) ) ) ); $return = '<div class="gjCategoryMessage">' . '<form action="' . cbgjClass::getPluginURL( array( 'categories', 'send', (int) $row->get( 'id' ) ) ) . '" method="post" enctype="multipart/form-data" name="gjForm" id="gjForm" class="gjForm form-horizontal">' . '<legend class="gjEditTitle">' . CBTxt::Ph( 'Message [groups]', array( '[groups]' => cbgjClass::getOverride( 'group', true ) ) ) . '</legend>' . '<div class="gjEditContentInput control-group">' . '<label class="gjEditContentInputTitle control-label">' . CBTxt::Th( 'Subject' ) . '</label>' . '<div class="gjEditContentInputField controls">' . $input['subject'] . '<span class="gjEditContentInputIcon help-inline">' . cbgjClass::getIcon( null, CBTxt::T( 'Required' ), 'icon-star' ) . cbgjClass::getIcon( CBTxt::P( 'Input [groups] message subject.', array( '[groups]' => cbgjClass::getOverride( 'group', true ) ) ) ) . '</span>' . '</div>' . '</div>' . '<div class="gjEditContentInput control-group">' . '<label class="gjEditContentInputTitle control-label">' . CBTxt::Th( 'Body' ) . '</label>' . '<div class="gjEditContentInputField controls">' . $input['body'] . '<span class="gjEditContentInputIcon help-inline">' . cbgjClass::getIcon( null, CBTxt::T( 'Required' ), 'icon-star' ) . cbgjClass::getIcon( CBTxt::P( 'Input [groups] message body.', array( '[groups]' => cbgjClass::getOverride( 'group', true ) ) ) ) . '</span>' . '</div>' . '</div>'; if ( $input['captcha'] !== false ) { $return .= '<div class="gjEditContentInput control-group">' . '<label class="gjEditContentInputTitle control-label">' . CBTxt::Th( 'Captcha' ) . '</label>' . '<div class="gjEditContentInputField controls">' . '<div style="margin-bottom: 5px;">' . $input['captcha']['code'] . '</div>' . '<div>' . $input['captcha']['input'] . '</div>' . '<span class="gjEditContentInputIcon help-inline">' . cbgjClass::getIcon( null, CBTxt::T( 'Required' ), 'icon-star' ) . '</span>' . '</div>' . '</div>'; } $return .= '<div class="gjButtonWrapper form-actions">' . '<input type="submit" value="' . htmlspecialchars( CBTxt::T( 'Send Message' ) ) . '" class="gjButton gjButtonSubmit btn btn-primary" /> ' . '<input type="button" value="' . htmlspecialchars( CBTxt::T( 'Cancel' ) ) . '" class="gjButton gjButtonCancel btn btn-mini" onclick="' . cbgjClass::getPluginURL( array( 'categories', 'show', (int) $row->get( 'id' ) ), CBTxt::T( 'Are you sure you want to cancel? All unsaved data will be lost!' ) ) . '" />' . '</div>' . cbGetSpoofInputTag( 'plugin' ) . '</form>' . '</div>'; echo $return; }
/** * render frontend nested categories * * @param object $rows * @param object $pageNav * @param cbgjCategory $category * @param moscomprofilerUser $user * @param object $plugin * @return string */ static function showNested( $rows, $pageNav, $category, $user, $plugin ) { $categoryNestedSearch = $plugin->params->get( 'category_nested_search', 1 ); $categoryNestedPaging = $plugin->params->get( 'category_nested_paging', 1 ); $categoryNestedLimitbox = $plugin->params->get( 'category_nested_limitbox', 1 ); $categoryNestedDescLimit = (int) $plugin->params->get( 'category_nested_desc_limit', 150 ); $categoryApprove = $plugin->params->get( 'category_approve', 0 ); $return = '<form action="' . $category->getUrl() . '" method="post" name="gjForm" id="gjForm" class="gjForm">' . ( $categoryNestedSearch && ( $pageNav->searching || $pageNav->total ) ? '<div class="gjTop gjTopRight">' . $pageNav->search . '</div>' : null ); if ( $rows ) foreach ( $rows as $row ) { $authorized = cbgjClass::getAuthorization( $row, null, $user ); if ( $row->get( 'published' ) == 1 ) { $state = '<div><a href="javascript: void(0);" onclick="' . cbgjClass::getPluginURL( array( 'categories', 'unpublish', (int) $row->get( 'id' ) ), CBTxt::P( 'Are you sure you want to unpublish this [category]?', array( '[category]' => cbgjClass::getOverride( 'category' ) ) ), true, false, null, true ) . '"><i class="icon-ban-circle"></i> ' . CBTxt::Th( 'Unpublish' ) . '</a></div>'; } else { $state = '<div><a href="' . cbgjClass::getPluginURL( array( 'categories', 'publish', (int) $row->get( 'id' ) ), null, true, false, null, true ) . '"><i class="icon-ok"></i> ' . CBTxt::Th( 'Publish' ) . '</a></div>'; } $canApprove = ( $categoryApprove && ( $row->get( 'published' ) == -1 ) && cbgjClass::hasAccess( 'cat_can_publish', $authorized ) ); $beforeMenu = cbgjClass::getIntegrations( 'gj_onBeforeOverviewCategoryMenu', array( $row, $user, $plugin ) ); $afterMenu = cbgjClass::getIntegrations( 'gj_onAfterOverviewCategoryMenu', array( $row, $user, $plugin ) ); $return .= '<div class="gjContent row-fluid">' . '<div class="gjContentLogo span2">' . $row->getLogo( true, true, true ) . '</div>' . '<div class="gjContentBody mini-layout span10">' . '<div class="gjContentBodyHeader row-fluid">' . '<div class="gjContentBodyTitle span9"><h5>' . $row->getName( 0, true ) . '<small> ' . cbFormatDate( $row->get( 'date' ), 1, false ) . '</small></h5></div>' . '<div class="gjContentBodyMenu span3">'; if ( $canApprove ) { $return .= '<input type="button" value="' . htmlspecialchars( CBTxt::T( 'Approve' ) ) . '" class="gjButton btn btn-mini btn-success" onclick="' . cbgjClass::getPluginURL( array( 'categories', 'publish', (int) $row->get( 'id' ) ), true, true, false, null, true ) . '" />'; } else { if ( ( $row->get( 'published' ) == 0 ) || ( ( $row->get( 'published' ) == 1 ) && ( ! cbgjClass::hasAccess( 'cat_approved', $authorized ) ) ) ) { $return .= cbgjClass::getIcon( null, CBTxt::P( 'This [category] is currently unpublished.', array( '[category]' => cbgjClass::getOverride( 'category' ) ) ), 'icon-eye-close' ); } } if ( $beforeMenu || cbgjClass::hasAccess( array( 'mod_lvl1', 'cat_can_publish' ), $authorized ) || $afterMenu ) { $menuItems = $beforeMenu . ( cbgjClass::hasAccess( 'mod_lvl1', $authorized ) ? '<div><a href="' . cbgjClass::getPluginURL( array( 'categories', 'edit', (int) $row->get( 'id' ) ), null, true, false, null, true ) . '"><i class="icon-pencil"></i> ' . CBTxt::Th( 'Edit' ) . '</a></div>' : null ) . ( ( ! $canApprove ) && cbgjClass::hasAccess( 'cat_can_publish', $authorized ) ? $state : null ) . ( cbgjClass::hasAccess( 'mod_lvl1', $authorized ) ? '<div><a href="javascript: void(0);" onclick="' . cbgjClass::getPluginURL( array( 'categories', 'delete', (int) $row->get( 'id' ) ), CBTxt::P( 'Are you sure you want to delete this [category] and all its associated [groups]?', array( '[category]' => cbgjClass::getOverride( 'category' ), '[groups]' => cbgjClass::getOverride( 'group', true ) ) ), true, false, null, true ) . '"><i class="icon-remove"></i> ' . CBTxt::Th( 'Delete' ) . '</a></div>' : null ) . $afterMenu; $return .= cbgjClass::getDropdown( $menuItems, CBTxt::Th( 'Menu' ) ); } $return .= '</div>' . '</div>' . '<div class="gjContentBodyInfo">' . ( $row->getDescription( $categoryNestedDescLimit ) ? '<div class="well well-small">' . $row->getDescription( $categoryNestedDescLimit ) . '</div>' : null ) . '</div>' . '<div class="gjContentDivider"></div>' . '<div class="gjContentBodyFooter">' . cbgjClass::getIntegrations( 'gj_onBeforeOverviewCategoryInfo', array( $row, $user, $plugin ), null, 'span' ) . ( ( ( ( ! $row->get( 'nested' ) ) && cbgjClass::hasAccess( 'mod_lvl1', $authorized ) ) || $row->get( 'nested' ) ) && $row->nestedCount() ? cbgjClass::getOverride( 'category', $row->nestedCount() ) . ' | ' : null ) . ( $row->groupCount() ? cbgjClass::getOverride( 'group', $row->groupCount() ) . ' | ' : null ) . implode( ', ', $row->getTypes() ) . cbgjClass::getIntegrations( 'gj_onAfterOverviewCategoryInfo', array( $row, $user, $plugin ), null, 'span' ) . '</div>' . '</div>' . '</div>'; } else { $return .= '<div class="gjContent">'; if ( $categoryNestedSearch && $pageNav->searching ) { $return .= CBTxt::Ph( 'No [category] search results found.', array( '[category]' => cbgjClass::getOverride( 'category' ) ) ); } else { $return .= CBTxt::Ph( 'There are no [categories] available.', array( '[categories]' => cbgjClass::getOverride( 'category', true ) ) ); } $return .= '</div>'; } if ( $categoryNestedPaging ) { $return .= '<div class="gjPaging pagination pagination-centered">' . ( $pageNav->total > $pageNav->limit ? $pageNav->pagelinks : null ) . ( ! $categoryNestedLimitbox ? $pageNav->getLimitBox( false ) : ( $pageNav->total ? '<div class="gjPagingLimitbox">' . $pageNav->limitbox . '</div>' : null ) ) . '</div>'; } $return .= cbGetSpoofInputTag( 'plugin' ) . '</form>'; return $return; }
/** * render frontend invites list * * @param array $rows * @param cbgjCategory $category * @param cbgjGroup $group * @param moscomprofilerUser $user * @param object $plugin * @return mixed */ static function showInvitesList( $rows, $category, $group, $user, $plugin ) { $group->setPathway( CBTxt::T( 'Invites List' ), true ); $inviteBy = explode( '|*|', $plugin->params->get( 'group_invites_by', '1|*|2|*|3|*|4' ) ); $return = '<div class="gjInvitesList">' . '<form action="' . cbgjClass::getPluginURL( array( 'invites', 'send', (int) $category->get( 'id' ), (int) $group->get( 'id' ) ) ) . '" method="post" enctype="multipart/form-data" name="gjForm" id="gjForm" class="gjForm">' . '<legend class="gjEditTitle">' . cbgjClass::getOverride( 'user', true ) . '</legend>'; if ( $rows ) { $return .= '<div class="gjContent">'; foreach ( $rows as $row ) { $cbUser =& CBuser::getInstance( (int) $row->get( 'id' ) ); if ( ! $cbUser ) { $cbUser =& CBuser::getInstance( null ); } $recipient =& $cbUser->getUserData(); if ( in_array( 1, $inviteBy ) ) { $invite = (int) $recipient->id; } elseif ( in_array( 4, $inviteBy ) ) { $invite = $recipient->email; } elseif ( in_array( 2, $inviteBy ) ) { $invite = $recipient->username; } elseif ( in_array( 3, $inviteBy ) ) { $invite = $recipient->name; } if ( ! $invite ) { $invite = (int) $row->get( 'id' ); } $inviteUrl = "document.gjForm.invites_invite.value = '" . addslashes( $invite ) . "';" . "document.gjForm.submit();"; $return .= '<div class="gjContentBox mini-layout">' . '<div class="gjContentBoxRow">' . $cbUser->getField( 'formatname', null, 'html', 'none', 'list', 0, true ) . '</div>' . '<div class="gjContentBoxRow">' . $cbUser->getField( 'avatar', null, 'html', 'none', 'list', 0, true ) . '</div>' . '<div class="gjContentBoxRow">' . $cbUser->getField( 'onlinestatus', null, 'html', 'none', 'profile', 0, true ) . '</div>' . '<div class="gjContentBoxRow">' . '<input type="button" value="' . htmlspecialchars( CBTxt::Th( 'Invite' ) ) . '" class="gjButton btn btn-success" onclick="' . $inviteUrl . '" />' . '</div>' . '</div>'; } $return .= '</div>'; } else { $return .= '<div class="gjContent">' . CBTxt::Ph( 'There are no [users] available to invite.', array( '[users]' => cbgjClass::getOverride( 'user', true ) ) ) . '</div>'; } $return .= '<div class="gjButtonWrapper form-actions">' . '<input type="button" value="' . htmlspecialchars( CBTxt::T( 'Cancel' ) ) . '" class="gjButton gjButtonCancel btn" onclick="' . cbgjClass::getPluginURL( array( 'groups', 'show', (int) $category->get( 'id' ), (int) $group->get( 'id' ) ), CBTxt::T( 'Are you sure you want to cancel? All unsaved data will be lost!' ) ) . '" />' . '</div>' . '<input type="hidden" name="invites_invite" id="invites_invite" value="" />' . '<input type="hidden" name="invites_list" id="invites_list" value="1" />' . cbGetSpoofInputTag( 'plugin' ) . '</form>' . '</div>'; echo $return; }
/** * migrate old groupjive data * * @param moscomprofilerUser $user * @param object $plugin */ private function showMigrate( $user, $plugin ) { global $_CB_framework, $_CB_database; $gj_categories = $_CB_database->getTableStatus( '#__gj_grcategory' ); $gj_groups = $_CB_database->getTableStatus( '#__gj_groups' ); $gj_users = $_CB_database->getTableStatus( '#__gj_users' ); $gj_path = $_CB_framework->getCfg( 'absolute_path' ) . '/images/com_groupjive'; if ( $gj_categories ) { $query = 'SELECT *' . "\n FROM " . $_CB_database->NameQuote( '#__gj_grcategory' ); $_CB_database->setQuery( $query ); $categories = $_CB_database->loadObjectList(); if ( $categories ) foreach ( $categories as $category ) { $cat = new cbgjCategory( $_CB_database ); $types = array(); if ( $category->create_open ) { $types[] = 1; } if ( $category->create_closed ) { $types[] = 2; } if ( $category->create_invite ) { $types[] = 3; } $cat->set( 'user_id', (int) ( $category->admin ? $category->admin : $user->id ) ); $cat->set( 'name', trim( strip_tags( $category->catname ) ) ); if ( $plugin->params->get( 'category_editor', 1 ) >= 2 ) { $cat->set( 'description', cbgjClass::getFilteredText( $category->descr ) ); } else { $cat->set( 'description', trim( strip_tags( $category->descr ) ) ); } $cat->set( 'types', ( is_array( $types ) ? implode( '|*|', $types ) : null ) ); $cat->set( 'date', cbgjClass::getUTCDate() ); $cat->set( 'ordering', (int) $category->ordering ); $cat->set( 'published', (int) $category->published ); if ( $category->access == 2 ) { $cat->set( 'access', 30 ); } elseif ( $category->access == 1 ) { $cat->set( 'access', -1 ); } else { $cat->set( 'access', -2 ); } if ( ! $cat->store() ) { cbgjClass::getPluginURL( array( 'tools' ), CBTxt::P( 'Category failed to migrate! Error: [error]', array( '[error]' => $cat->getError() ) ), false, true, 'error' ); } $cat_path = $plugin->imgsAbs . '/' . (int) $cat->get( 'id' ); if ( $category->cat_image ) { $mode = cbgjClass::getFilePerms(); if ( ! is_dir( $cat_path ) ) { $oldmask = @umask( 0 ); if ( @mkdir( $cat_path, cbgjClass::getFolderPerms(), true ) ) { @umask( $oldmask ); if ( ! file_exists( $plugin->imgsAbs . '/index.html' ) ) { @copy( $plugin->absPath . '/images/index.html', $plugin->imgsAbs . '/index.html' ); @chmod( $plugin->imgsAbs . '/index.html', $mode ); } if ( ! file_exists( $cat_path . '/index.html' ) ) { @copy( $plugin->absPath . '/images/index.html', $cat_path . '/index.html' ); @chmod( $cat_path . '/index.html', $mode ); } } else { @umask( $oldmask ); } } if ( file_exists( $gj_path . '/' . $category->cat_image ) && ( ! file_exists( $cat_path . '/' . $category->cat_image ) ) ) { @copy( $gj_path . '/' . $category->cat_image, $cat_path . '/' . $category->cat_image ); @chmod( $cat_path . '/' . $category->cat_imag, $mode ); } if ( file_exists( $gj_path . '/tn' . $category->cat_image ) && ( ! file_exists( $cat_path . '/tn' . $category->cat_image ) ) ) { @copy( $gj_path . '/tn' . $category->cat_image, $cat_path . '/tn' . $category->cat_image ); @chmod( $cat_path . '/tn' . $category->cat_image, $mode ); } if ( file_exists( $cat_path . $category->cat_image ) && file_exists( $cat_path . 'tn' . $category->cat_image ) ) { $cat->set( 'logo', $category->cat_image ); } } if ( $gj_groups ) { $query = 'SELECT *' . "\n FROM " . $_CB_database->NameQuote( '#__gj_groups' ) . "\n WHERE " . $_CB_database->NameQuote( 'category' ) . " = " . (int) $cat->get( 'id' ); $_CB_database->setQuery( $query ); $groups = $_CB_database->loadObjectList(); if ( $groups ) foreach ( $groups as $group ) { $grp = new cbgjGroup( $_CB_database ); $grp->set( 'user_id', (int) ( $group->user_id ? $group->user_id : $user->id ) ); $grp->set( 'name', trim( strip_tags( $group->name ) ) ); if ( $plugin->params->get( 'group_editor', 1 ) >= 2 ) { $grp->set( 'description', cbgjClass::getFilteredText( $group->descr ) ); } else { $grp->set( 'description', trim( strip_tags( $group->descr ) ) ); } $grp->set( 'type', (int) $group->type ); $grp->set( 'date', $group->date_s ); $grp->set( 'category', $cat->get( 'id' ) ); $grp->set( 'published', (int) $group->active ); $grp->set( 'access', -2 ); if ( ! $grp->store() ) { cbgjClass::getPluginURL( array( 'tools' ), CBTxt::P( 'Group failed to migrate! Error: [error]', array( '[error]' => $grp->getError() ) ), false, true, 'error' ); } $grp_path = $plugin->imgsAbs . '/' . (int) $cat->get( 'id' ) . '/' . (int) $grp->get( 'id' ); if ( $group->logo ) { $mode = cbgjClass::getFilePerms(); if ( ! is_dir( $grp_path ) ) { $oldmask = @umask( 0 ); if ( @mkdir( $grp_path, cbgjClass::getFolderPerms(), true ) ) { @umask( $oldmask ); if ( ! file_exists( $plugin->imgsAbs . '/index.html' ) ) { @copy( $plugin->absPath . '/images/index.html', $plugin->imgsAbs . '/index.html' ); @chmod( $plugin->imgsAbs . '/index.html', $mode ); } if ( ! file_exists( $cat_path . '/index.html' ) ) { @copy( $plugin->absPath . '/images/index.html', $cat_path . '/index.html' ); @chmod( $cat_path . '/index.html', $mode ); } if ( ! file_exists( $grp_path . '/index.html' ) ) { @copy( $plugin->absPath . '/images/index.html', $grp_path . '/index.html' ); @chmod( $grp_path . '/index.html', $mode ); } } else { @umask( $oldmask ); } } if ( file_exists( $gj_path . '/' . $group->logo ) && ( ! file_exists( $grp_path . '/' . $group->logo ) ) ) { @copy( $gj_path . '/' . $group->logo, $grp_path . '/' . $group->logo ); @chmod( $grp_path . '/' . $group->logo, $mode ); } if ( file_exists( $gj_path . '/tn' . $group->logo ) && ( ! file_exists( $grp_path . '/tn' . $group->logo ) ) ) { @copy( $gj_path . '/tn' . $group->logo, $grp_path . '/tn' . $group->logo ); @chmod( $grp_path . '/tn' . $group->logo, $mode ); } if ( file_exists( $grp_path . $group->logo ) && file_exists( $grp_path . 'tn' . $group->logo ) ) { $grp->set( 'logo', $group->logo ); } } $owner = new cbgjUser( $_CB_database ); $owner->set( 'user_id', (int) $grp->get( 'user_id' ) ); $owner->set( 'group', (int) $grp->get( 'id' ) ); $owner->set( 'date', $grp->get( 'date' ) ); $owner->set( 'status', 4 ); if ( ! $owner->store() ) { cbgjClass::getPluginURL( array( 'tools' ), CBTxt::P( 'Owner failed to migrate! Error: [error]', array( '[error]' => $owner->getError() ) ), false, true, 'error' ); } if ( $gj_users ) { $query = 'SELECT *' . "\n FROM " . $_CB_database->NameQuote( '#__gj_users' ) . "\n WHERE " . $_CB_database->NameQuote( 'id_group' ) . " = " . (int) $grp->get( 'id' ) . "\n AND " . $_CB_database->NameQuote( 'id_user' ) . " != " . (int) $grp->get( 'user_id' ); $_CB_database->setQuery( $query ); $users = $_CB_database->loadObjectList(); if ( $users ) foreach ( $users as $u ) { $usr = new cbgjUser( $_CB_database ); $usr->set( 'user_id', (int) $u->id_user ); $usr->set( 'group', (int) $grp->get( 'id' ) ); $usr->set( 'date', $u->date ); $usr->set( 'status', ( $u->status == 'active' ? 1 : 0 ) ); if ( ! $usr->store() ) { cbgjClass::getPluginURL( array( 'tools' ), CBTxt::P( 'User failed to migrate! Error: [error]', array( '[error]' => $usr->getError() ) ), false, true, 'error' ); } } } } } } } else { cbgjClass::getPluginURL( array( 'tools' ), CBTxt::T( 'Nothing to migrate.' ), false, true, 'error' ); } cbgjClass::getPluginURL( array( 'tools' ), CBTxt::T( 'GroupJive migration successful.' ), false, true ); }