/** * Outputs legacy mass mailer display * * @deprecated 2.0 * * @param UserTable[] $rows * @param string $emailSubject * @param string $emailBody * @param string $emailAttach * @param string $emailFromName * @param string $emailFromAddr * @param string $emailReplyName * @param string $emailReplyAddr * @param int $emailsPerBatch * @param int $emailsBatch * @param int $emailPause * @param bool $simulationMode * @param array $pluginRows */ public function emailUsers($rows, $emailSubject, $emailBody, $emailAttach, $emailFromName, $emailFromAddr, $emailReplyName, $emailReplyAddr, $emailsPerBatch, $emailsBatch, $emailPause, $simulationMode, $pluginRows) { global $_CB_framework, $_CB_Backend_Title; _CBsecureAboveForm('showUsers'); cbimport('cb.validator'); outputCbTemplate(2); outputCbJs(2); $_CB_Backend_Title = array(0 => array('fa fa-envelope-o', CBTxt::T('Community Builder: Mass Mailer'))); $editorSave = $_CB_framework->saveCmsEditorJS('emailbody'); if ($editorSave) { $js = "\$( '.cbEmailUsersForm' ).submit( function() { " . $editorSave . "});"; } else { $js = null; } cbValidator::outputValidatorJs($js); $emailsList = array(); foreach (array_slice($rows, 0, 100) as $row) { $emailsList[] = htmlspecialchars($row->name) . ' <' . htmlspecialchars($row->email) . '>'; } $return = '<form action="' . $_CB_framework->backendUrl('index.php') . '" method="post" name="adminForm" class="cb_form form-auto cbEmailUsersForm">' . '<div class="form-group cb_form_line clearfix">' . '<label class="control-label col-sm-3">' . CBTxt::Th('SEND_EMAIL_TO_TOTAL_USERS', 'Send Email to [total] users', array('[total]' => (int) count($rows))) . '</label>' . '<div class="cb_field col-sm-9">' . '<div>' . implode(', ', $emailsList) . (count($rows) > 100 ? ' <strong>' . CBTxt::Th('AND_COUNT_MORE_USERS', 'and [count] more users.', array('[count]' => (int) (count($rows) - 100))) . '</strong>' : null) . '</div>' . '</div>' . '</div>' . '<div class="form-group cb_form_line clearfix">' . '<label class="control-label col-sm-3">' . CBTxt::Th('MASS_MAILER_SIMULATION_MODE_LABEL', 'Simulation Mode') . '</label>' . '<div class="cb_field col-sm-9">' . '<div>' . '<input type="checkbox" name="simulationmode" id="simulationmode"' . ($simulationMode ? ' checked="checked"' : null) . ' /> <label for="simulationmode">' . CBTxt::T('Do not send emails, just show me how it works') . '</label>' . getFieldIcons(2, false, false, CBTxt::T('MASS_MAILER_SIMULATION_MODE_TOOLTIP', 'Check this box to simulate email sending in a dry run mode. No emails are actually sent.'), CBTxt::T('MASS_MAILER_SIMULATION_MODE_LABEL', 'Simulation Mode'), false, 4) . '</div>' . '</div>' . '</div>' . '<div class="form-group cb_form_line clearfix">' . '<label class="control-label col-sm-3">' . CBTxt::Th('MASS_MAILER_SUBJECT_LABEL', 'Email Subject') . '</label>' . '<div class="cb_field col-sm-9">' . '<div>' . '<input type="text" name="emailsubject" value="' . htmlspecialchars($emailSubject) . '" class="form-control required" size="60" />' . getFieldIcons(2, false, false, CBTxt::T('MASS_MAILER_SUBJECT_TOOLTIP', 'Type in the subject of the mass mailing (CB field substitutions are supported).'), CBTxt::T('MASS_MAILER_SUBJECT_LABEL', 'Email Subject'), false, 4) . '</div>' . '</div>' . '</div>' . '<div class="form-group cb_form_line clearfix">' . '<label class="control-label col-sm-3">' . CBTxt::Th('MASS_MAILER_MESSAGE_LABEL', 'Email Message') . '</label>' . '<div class="cb_field col-sm-9">' . '<div>' . $_CB_framework->displayCmsEditor('emailbody', $emailBody, 600, 200, 50, 7) . getFieldIcons(2, false, false, CBTxt::T('MASS_MAILER_MESSAGE_TOOLTIP', 'Type in the main message body of your mass mailing (HTML editor and CB field substitutions are supported).'), CBTxt::T('MASS_MAILER_MESSAGE_LABEL', 'Email Message'), false, 4) . '</div>' . '</div>' . '</div>' . '<div class="form-group cb_form_line clearfix">' . '<label class="control-label col-sm-3">' . CBTxt::Th('MASS_MAILER_ATTACHMENTS_LABEL', 'Email Attachments') . '</label>' . '<div class="cb_field col-sm-9">' . '<div>' . '<input type="text" name="emailattach" value="' . htmlspecialchars($emailAttach) . '" class="form-control" size="80" />' . getFieldIcons(2, false, false, CBTxt::T('MASS_MAILER_ATTACHMENTS_TOOLTIP', 'Absolute server path to file that should be attached to each email. Multiple files can be specified using a comma separator.'), CBTxt::T('MASS_MAILER_ATTACHMENTS_LABEL', 'Email Attachments'), false, 4) . '</div>' . '</div>' . '</div>' . '<div class="form-group cb_form_line clearfix">' . '<label class="control-label col-sm-3">' . CBTxt::Th('Substitutions for Subject, Message, and Attachments') . '</label>' . '<div class="cb_field col-sm-9">' . '<div>' . CBTxt::T('You can use all CB substitutions as in most parts: e.g.: [cb:if team="winners"] Congratulations [cb:userfield field="name" /], you are in the winning team! [/cb:if]') . '</div>' . '</div>' . '</div>' . $this->_pluginRows($pluginRows) . '<div class="form-group cb_form_line clearfix">' . '<label class="control-label col-sm-3">' . CBTxt::Th('MASS_MAILER_FROM_NAME_LABEL', 'From Name') . '</label>' . '<div class="cb_field col-sm-9">' . '<div>' . '<input type="text" name="emailfromname" value="' . htmlspecialchars($emailFromName) . '" class="form-control" size="30" />' . getFieldIcons(2, false, false, CBTxt::T('MASS_MAILER_FROM_NAME_TOOLTIP', 'The name to be used in the From field of email. If left empty the CB and Joomla configuration defaults will be used.'), CBTxt::T('MASS_MAILER_FROM_NAME_LABEL', 'From Name'), false, 4) . '</div>' . '</div>' . '</div>' . '<div class="form-group cb_form_line clearfix">' . '<label class="control-label col-sm-3">' . CBTxt::Th('MASS_MAILER_FROM_ADDRESS_LABEL', 'From Email Address') . '</label>' . '<div class="cb_field col-sm-9">' . '<div>' . '<input type="text" name="emailfromaddr" value="' . htmlspecialchars($emailFromAddr) . '" class="form-control" size="40" />' . getFieldIcons(2, false, false, CBTxt::T('MASS_MAILER_FROM_ADDRESS_TOOLTIP', 'The email address to be user in the From field of email. If left empty the CB and Joomla settings will be used.'), CBTxt::T('MASS_MAILER_FROM_ADDRESS_LABEL', 'From Email Address'), false, 4) . '</div>' . '</div>' . '</div>' . '<div class="form-group cb_form_line clearfix">' . '<label class="control-label col-sm-3">' . CBTxt::Th('MASS_MAILER_REPLY_TO_NAME_LABEL', 'Reply-To Name') . '</label>' . '<div class="cb_field col-sm-9">' . '<div>' . '<input type="text" name="emailreplyname" value="' . htmlspecialchars($emailReplyName) . '" class="form-control" size="30" />' . getFieldIcons(2, false, false, CBTxt::T('MASS_MAILER_REPLY_TO_NAME_TOOLTIP', 'The Reply-To Name value to be used in the From field of email. If left empty the CB and Joomla settings will be used.'), CBTxt::T('MASS_MAILER_REPLY_TO_NAME_LABEL', 'Reply-To Name'), false, 4) . '</div>' . '</div>' . '</div>' . '<div class="form-group cb_form_line clearfix">' . '<label class="control-label col-sm-3">' . CBTxt::Th('MASS_MAILER_REPLY_TO_ADDRESS_LABEL', 'Reply-To Email Address') . '</label>' . '<div class="cb_field col-sm-9">' . '<div>' . '<input type="text" name="emailreplyaddr" value="' . htmlspecialchars($emailReplyAddr) . '" class="form-control" size="40" />' . getFieldIcons(2, false, false, CBTxt::T('MASS_MAILER_REPLY_TO_ADDRESS_TOOLTIP', 'The Reply-To Email address to be used in the email.'), CBTxt::T('MASS_MAILER_REPLY_TO_ADDRESS_LABEL', 'Reply-To Email Address'), false, 4) . '</div>' . '</div>' . '</div>' . '<div class="form-group cb_form_line clearfix">' . '<label class="control-label col-sm-3">' . CBTxt::Th('MASS_MAILER_EMAILS_PER_BATCH_LABEL', 'Emails per batch') . '</label>' . '<div class="cb_field col-sm-9">' . '<div>' . '<input type="text" name="emailsperbatch" value="' . htmlspecialchars($emailsPerBatch) . '" class="form-control required digits" size="12" />' . getFieldIcons(2, false, false, CBTxt::T('MASS_MAILER_EMAILS_PER_BATCH_TOOLTIP', 'The number of emails to be sent in each batch (default 50).'), CBTxt::T('MASS_MAILER_EMAILS_PER_BATCH_LABEL', 'Emails per batch'), false, 4) . '</div>' . '</div>' . '</div>' . '<div class="form-group cb_form_line clearfix">' . '<label class="control-label col-sm-3">' . CBTxt::Th('MASS_MAILER_SECONDS_BETWEEN_BATCHES_LABEL', 'Seconds of pause between batches') . '</label>' . '<div class="cb_field col-sm-9">' . '<div>' . '<input type="text" name="emailpause" value="' . htmlspecialchars($emailPause) . '" class="form-control required digits" size="12" />' . getFieldIcons(2, false, false, CBTxt::T('MASS_MAILER_SECONDS_BETWEEN_BATCHES_TOOLTIP', 'The number of seconds to pause between batch sending (default is 30 sec).'), CBTxt::T('MASS_MAILER_SECONDS_BETWEEN_BATCHES_LABEL', 'Seconds of pause between batches'), false, 4) . '</div>' . '</div>' . '</div>' . '<input type="hidden" name="option" value="com_comprofiler" />' . '<input type="hidden" name="view" value="emailusers" />' . '<input type="hidden" name="boxchecked" value="0" />'; foreach ($rows as $row) { $return .= '<input type="hidden" name="cid[]" value="' . (int) $row->id . '">'; } $return .= cbGetSpoofInputTag('user') . '</form>'; echo $return; }
/** * @param cbantispamWhitelistTable $row * @param array $input * @param string $type * @param int|string $tab * @param UserTable $user * @param cbPluginHandler $plugin */ static public function showWhitelist( $row, $input, $type, $tab, $user, $plugin ) { global $_CB_framework; cbValidator::loadValidation(); $name = CBuser::getInstance( (int) $user->get( 'id' ), false )->getField( 'formatname', null, 'html', 'none', 'profile', 0, true ); $pageTitle = CBTxt::T( 'WHITELIST_NAME', 'Whitelist [name]', array( '[name]' => $name ) ); $_CB_framework->setPageTitle( $pageTitle ); $_CB_framework->appendPathWay( htmlspecialchars( CBTxt::T( 'Whitelists' ) ), $_CB_framework->userProfileUrl( (int) $user->get( 'id' ), true, $tab ) ); $_CB_framework->appendPathWay( htmlspecialchars( $pageTitle ), $_CB_framework->pluginClassUrl( $plugin->element, true, ( $row->get( 'id' ) ? array( 'action' => 'whitelist', 'func' => ( $type ? $type : 'edit' ), 'id' => (int) $row->get( 'id' ), 'usr' => (int) $user->get( 'id' ) ) : array( 'action' => 'whitelist', 'func' => ( $type ? $type : 'new' ), 'usr' => (int) $user->get( 'id' ) ) ) ) ); $return = '<div class="whitelistEdit">' . '<form action="' . $_CB_framework->pluginClassUrl( $plugin->element, true, array( 'action' => 'whitelist', 'func' => 'save', 'id' => (int) $row->get( 'id' ), 'usr' => (int) $user->get( 'id' ) ) ) . '" method="post" enctype="multipart/form-data" name="whitelistForm" id="whitelistForm" class="cb_form whitelistForm form-auto cbValidation">' . ( $pageTitle ? '<div class="whitelistTitle page-header"><h3>' . $pageTitle . '</h3></div>' : null ) . '<div class="cbft_select cbtt_select form-group cb_form_line clearfix">' . '<label for="type" class="col-sm-3 control-label">' . CBTxt::T( 'Type' ) . '</label>' . '<div class="cb_field col-sm-9">' . $input['type'] . getFieldIcons( 1, 1, null, CBTxt::T( 'Select the whitelist type. Type determines what value should be supplied.' ) ) . '</div>' . '</div>' . '<div class="cbft_text cbtt_input form-group cb_form_line clearfix">' . '<label for="value" class="col-sm-3 control-label">' . CBTxt::T( 'Value' ) . '</label>' . '<div class="cb_field col-sm-9">' . $input['value'] . getFieldIcons( 1, 1, null, CBTxt::T( 'Input whitelist value in relation to the type. User type use the users user_id (e.g. 42). IP Address type use a full valid IP Address (e.g. 192.168.0.1). Email type use a fill valid email address (e.g. invalid@cb.invalid). Email Domain type use a full email address domain after @ (e.g. example.com).' ) ) . '</div>' . '</div>' . '<div class="cbft_textarea cbtt_textarea form-group cb_form_line clearfix">' . '<label for="reason" class="col-sm-3 control-label">' . CBTxt::T( 'Reason' ) . '</label>' . '<div class="cb_field col-sm-9">' . $input['reason'] . getFieldIcons( 1, 0, null, CBTxt::T( 'Optionally input whitelist reason. Note this is for administrative purposes only.' ) ) . '</div>' . '</div>' . '<div class="form-group cb_form_line clearfix">' . '<div class="col-sm-offset-3 col-sm-9">' . '<input type="submit" value="' . htmlspecialchars( ( $row->get( 'id' ) ? CBTxt::T( 'Update Whitelist' ) : CBTxt::T( 'Create Whitelist' ) ) ) . '" class="whitelistButton whitelistButtonSubmit btn btn-primary"' . cbValidator::getSubmitBtnHtmlAttributes() . ' /> ' . ' <input type="button" value="' . htmlspecialchars( CBTxt::T( 'Cancel' ) ) . '" class="whitelistButton whitelistButtonCancel btn btn-default" onclick="if ( confirm( \'' . addslashes( CBTxt::T( 'Are you sure you want to cancel? All unsaved data will be lost!' ) ) . '\' ) ) { location.href = \'' . $_CB_framework->userProfileUrl( (int) $user->get( 'id' ), false, $tab ) . '\'; }" />' . '</div>' . '</div>' . cbGetSpoofInputTag( 'plugin' ) . '</form>' . '</div>'; echo $return; }
/** * @param OrderedTable $row * @param string[] $input * @param UserTable $user * @param stdClass $model * @param PluginTable $plugin */ static function showBlogEdit($row, $input, $user, $model, $plugin) { global $_CB_framework, $_PLUGINS; cbValidator::loadValidation(); $blogMode = $plugin->params->get('blog_mode', 1); $pageTitle = $row->get('id') ? CBTxt::T('Edit Blog') : CBTxt::T('Create Blog'); $cbModerator = Application::User((int) $user->get('id'))->isGlobalModerator(); $_CB_framework->setPageTitle($pageTitle); $_CB_framework->appendPathWay(htmlspecialchars(CBTxt::T('Blogs')), $_CB_framework->userProfileUrl($row->get('user', $user->get('id')), true, 'cbblogsTab')); $_CB_framework->appendPathWay(htmlspecialchars($pageTitle), $_CB_framework->pluginClassUrl($plugin->element, true, $row->get('id') ? array('action' => 'blogs', 'func' => 'edit', 'id' => (int) $row->get('id')) : array('action' => 'blogs', 'func' => 'new'))); initToolTip(); $return = '<div class="blogEdit">' . '<form action="' . $_CB_framework->pluginClassUrl($plugin->element, true, array('action' => 'blogs', 'func' => 'save', 'id' => (int) $row->get('id'))) . '" method="post" enctype="multipart/form-data" name="blogForm" id="blogForm" class="cb_form blogForm form-auto cbValidation">' . ($pageTitle ? '<div class="blogsTitle page-header"><h3>' . $pageTitle . '</h3></div>' : null); if ($cbModerator || !$plugin->params->get('blog_approval', 0)) { $return .= '<div class="cbft_select cbtt_select form-group cb_form_line clearfix">' . '<label for="published" class="col-sm-3 control-label">' . CBTxt::Th('Published') . '</label>' . '<div class="cb_field col-sm-9">' . $input['published'] . getFieldIcons(1, 0, null, CBTxt::T('Select publish status of the blog. Unpublished blogs will not be visible to the public.')) . '</div>' . '</div>'; } if ($plugin->params->get('blog_category_config', 1) || $cbModerator) { $return .= '<div class="cbft_select cbtt_select form-group cb_form_line clearfix">' . '<label for="category" class="col-sm-3 control-label">' . CBTxt::Th('Category') . '</label>' . '<div class="cb_field col-sm-9">' . $input['category'] . getFieldIcons(1, 0, null, CBTxt::T('Select blog category. Select the category that best describes your blog.')) . '</div>' . '</div>'; } if ($plugin->params->get('blog_access_config', 1) || $cbModerator) { $return .= '<div class="cbft_select cbtt_select form-group cb_form_line clearfix">' . '<label for="access" class="col-sm-3 control-label">' . CBTxt::Th('Access') . '</label>' . '<div class="cb_field col-sm-9">' . $input['access'] . getFieldIcons(1, 0, null, CBTxt::T('Select access to blog; all groups above that level will also have access to the blog.')) . '</div>' . '</div>'; } $return .= '<div class="cbft_text cbtt_input form-group cb_form_line clearfix">' . '<label for="title" class="col-sm-3 control-label">' . CBTxt::Th('Title') . '</label>' . '<div class="cb_field col-sm-9">' . $input['title'] . getFieldIcons(1, 1, null, CBTxt::T('Input blog title. This is the title that will distinguish this blog from others. Suggested to input something unique and intuitive.')) . '</div>' . '</div>'; if (in_array($blogMode, array(1, 2))) { $return .= '<div class="cbft_textarea cbtt_textarea form-group cb_form_line clearfix">' . '<label for="blog_intro" class="col-sm-3 control-label">' . ($blogMode == 1 ? CBTxt::T('Blog Intro') : CBTxt::T('Blog')) . '</label>' . '<div class="cb_field col-sm-9">' . $input['blog_intro'] . getFieldIcons(1, 0, null, CBTxt::T('Input HTML supported blog intro contents. Suggested to use minimal but well formatting for easy readability.')) . '</div>' . '</div>'; } if (in_array($blogMode, array(1, 3))) { $return .= '<div class="cbft_textarea cbtt_textarea form-group cb_form_line clearfix">' . '<label for="blog_full" class="col-sm-3 control-label">' . ($blogMode == 1 ? CBTxt::T('Blog Full') : CBTxt::T('Blog')) . '</label>' . '<div class="cb_field col-sm-9">' . $input['blog_full'] . getFieldIcons(1, 0, null, CBTxt::T('Input HTML supported blog contents. Suggested to use minimal but well formatting for easy readability.')) . '</div>' . '</div>'; } if ($cbModerator) { $return .= '<div class="cbft_text cbtt_input form-group cb_form_line clearfix">' . '<label for="user" class="col-sm-3 control-label">' . CBTxt::T('Owner') . '</label>' . '<div class="cb_field col-sm-9">' . $input['user'] . getFieldIcons(1, 1, null, CBTxt::T('Input owner of blog as single integer user_id.')) . '</div>' . '</div>'; } if ($plugin->params->get('blog_captcha', 0) && !$cbModerator) { $_PLUGINS->loadPluginGroup('user'); $captcha = $_PLUGINS->trigger('onGetCaptchaHtmlElements', array(false)); if (!empty($captcha)) { $captcha = $captcha[0]; $return .= '<div class="form-group cb_form_line clearfix">' . '<label class="col-sm-3 control-label">' . CBTxt::Th('Captcha') . '</label>' . '<div class="cb_field col-sm-9">' . (isset($captcha[0]) ? $captcha[0] : null) . '</div>' . '</div>' . '<div class="form-group cb_form_line clearfix">' . '<div class="cb_field col-sm-offset-3 col-sm-9">' . str_replace('inputbox', 'form-control', isset($captcha[1]) ? $captcha[1] : null) . getFieldIcons(1, 1, null) . '</div>' . '</div>'; } } $return .= '<div class="form-group cb_form_line clearfix">' . '<div class="col-sm-offset-3 col-sm-9">' . '<input type="submit" value="' . htmlspecialchars($row->get('id') ? CBTxt::T('Update Blog') : CBTxt::T('Create Blog')) . '" class="blogsButton blogsButtonSubmit btn btn-primary"' . cbValidator::getSubmitBtnHtmlAttributes() . ' /> ' . ' <input type="button" value="' . htmlspecialchars(CBTxt::T('Cancel')) . '" class="blogsButton blogsButtonCancel btn btn-default" onclick="if ( confirm( \'' . addslashes(CBTxt::T('Are you sure you want to cancel? All unsaved data will be lost!')) . '\' ) ) { location.href = \'' . $_CB_framework->userProfileUrl($row->get('user', $user->get('id')), false, 'cbblogsTab') . '\'; }" />' . '</div>' . '</div>' . cbGetSpoofInputTag('plugin') . '</form>' . '</div>'; echo $return; }
/** * @param int $userId * @param UserTable $user * @param cbPluginHandler $plugin */ static public function showDisable( $userId, $user, $plugin ) { global $_CB_framework; cbValidator::loadValidation(); $profileUrl = $_CB_framework->userProfileUrl( $user->get( 'id' ) ); $pageTitle = CBTxt::T( 'Disable My Account' ); $_CB_framework->setPageTitle( $pageTitle ); $_CB_framework->appendPathWay( htmlspecialchars( $pageTitle ), $profileUrl ); initToolTip(); $tooltip = cbTooltip( null, CBTxt::T( 'Optionally input a reason for disabling your account.' ), null, null, null, null, null, 'data-hascbtooltip="true"' ); $return = '<div class="privacyDisableAccount">' . '<form action="' . $_CB_framework->pluginClassUrl( $plugin->element, true, array( 'action' => 'privacy', 'func' => 'disableuser', 'id' => (int) $userId ) ) . '" method="post" enctype="multipart/form-data" name="privacyForm" id="privacyForm" class="cb_form privacyForm form-auto cbValidation">' . ( $pageTitle ? '<div class="privacyTitle page-header"><h3>' . $pageTitle . '</h3></div>' : null ) . '<div class="cbft_textarea cbtt_textarea form-group cb_form_line clearfix">' . '<label for="reason" class="col-sm-3 control-label">' . CBTxt::T( 'Reason' ) . '</label>' . '<div class="cb_field col-sm-9">' . '<textarea id="reason" name="reason" class="form-control" cols="40" rows="5"' . ( $tooltip ? ' ' . $tooltip : null ) . '></textarea>' . getFieldIcons( 1, 0, null, CBTxt::T( 'Optionally input a reason for disabling your account.' ) ) . '</div>' . '</div>' . '<div class="form-group cb_form_line clearfix">' . '<div class="col-sm-offset-3 col-sm-9">' . '<input type="submit" value="' . htmlspecialchars( CBTxt::T( 'Disable Account' ) ) . '" class="privacyButton privacyButtonSubmit btn btn-primary"' . cbValidator::getSubmitBtnHtmlAttributes() . ' /> ' . ' <input type="button" value="' . htmlspecialchars( CBTxt::T( 'Cancel' ) ) . '" class="privacyButton privacyButtonCancel btn btn-default" onclick="location.href = \'' . $profileUrl . '\';" />' . '</div>' . '</div>' . cbGetSpoofInputTag( 'plugin' ) . '</form>' . '</div>'; echo $return; }
/** * Outputs legacy user edit display * * @deprecated 2.0 * * @param UserTable $user * @param string $option * @param int $newCBuser * @param array $postdata */ public function edituser($user, $option, $newCBuser, &$postdata) { global $_CB_framework, $_CB_Backend_Title, $_PLUGINS; $results = $_PLUGINS->trigger('onBeforeUserProfileEditDisplay', array(&$user, 2)); if ($_PLUGINS->is_errors()) { cbRedirect($_CB_framework->backendViewUrl('showusers'), $_PLUGINS->getErrorMSG(), 'error'); } _CBsecureAboveForm('edituser'); cbimport('cb.validator'); outputCbTemplate(2); initToolTip(2); outputCbJs(2); $tabs = new cbTabs($_CB_framework->getUi() == 2 && !isset($_REQUEST['tab']) ? 1 : 0, 2); // use cookies in backend to remember selected tab. $tabcontent = $tabs->getEditTabs($user, $postdata, 'htmledit', 'divs'); $_CB_Backend_Title = array(0 => array('fa fa-user', $user->id ? CBTxt::T('COMMUNITY_BUILDER_EDIT_USER_USERNAME', 'Community Builder: Edit User [[username]]', array('[username]' => $user->username)) : CBTxt::T('Community Builder: New User'))); cbValidator::loadValidation(); if (is_array($results)) { echo implode('', $results); } $return = '<form action="' . $_CB_framework->backendUrl('index.php') . '" method="post" name="adminForm" id="cbcheckedadminForm" enctype="multipart/form-data" autocomplete="off" class="cb_form form-auto cbValidation">' . $tabcontent . '<input type="hidden" name="id" value="' . (int) $user->id . '" />' . '<input type="hidden" name="newCBuser" value="' . (int) $newCBuser . '" />' . '<input type="hidden" name="option" value="com_comprofiler" />' . '<input type="hidden" name="view" value="save" />' . cbGetSpoofInputTag('user') . '<div class="cbIconsBottom">' . getFieldIcons(2, true, true, '', '', true) . '</div>' . '</form>'; echo $return; }
/** * prepare frontend file edit render * * @param int $id * @param UserTable $user */ private function showFileEdit( $id, $user ) { global $_CB_framework; $row = CBGroupJiveFile::getFile( (int) $id ); $isModerator = CBGroupJive::isModerator( $user->get( 'id' ) ); $groupId = $this->input( 'group', null, GetterInterface::INT ); if ( $groupId === null ) { $group = $row->group(); } else { $group = CBGroupJive::getGroup( $groupId ); } $returnUrl = $_CB_framework->pluginClassUrl( $this->_gjPlugin->element, false, array( 'action' => 'groups', 'func' => 'show', 'id' => (int) $group->get( 'id' ) ) ); if ( ! CBGroupJive::canAccessGroup( $group, $user ) ) { cbRedirect( $returnUrl, CBTxt::T( 'Group does not exist.' ), 'error' ); } elseif ( ! $isModerator ) { if ( ( ! $row->get( 'id' ) ) && ( ! CBGroupJive::canCreateGroupContent( $user, $group, 'file' ) ) ) { cbRedirect( $returnUrl, CBTxt::T( 'You do not have sufficient permissions to upload a file in this group.' ), 'error' ); } elseif ( $row->get( 'id' ) && ( $user->get( 'id' ) != $row->get( 'user_id' ) ) && ( CBGroupJive::getGroupStatus( $user, $group ) < 2 ) ) { cbRedirect( $returnUrl, CBTxt::T( 'You do not have sufficient permissions to edit this file.' ), 'error' ); } } CBGroupJive::getTemplate( 'file_edit', true, true, $this->element ); $minFileSize = $this->params->get( 'groups_file_min_size', 0 ); $maxFileSize = $this->params->get( 'groups_file_max_size', 1024 ); $extensions = explode( ',', $this->params->get( 'groups_file_extensions', 'zip,rar,doc,pdf,txt,xls' ) ); $fileValidation = array(); if ( $minFileSize || $maxFileSize ) { $fileValidation[] = cbValidator::getRuleHtmlAttributes( 'filesize', array( $minFileSize, $maxFileSize, 'KB' ) ); } if ( $extensions ) { $fileValidation[] = cbValidator::getRuleHtmlAttributes( 'extension', implode( ',', $extensions ) ); } $input = array(); $publishedTooltip = cbTooltip( null, CBTxt::T( 'Select publish state of this file. Unpublished files will not be visible to the public.' ), null, null, null, null, null, 'data-hascbtooltip="true"' ); $input['published'] = moscomprofilerHTML::yesnoSelectList( 'published', 'class="form-control"' . $publishedTooltip, (int) $this->input( 'post/published', $row->get( 'published', 1 ), GetterInterface::INT ) ); $titleTooltup = cbTooltip( null, CBTxt::T( 'Optionally input a file title to display instead of filename.' ), null, null, null, null, null, 'data-hascbtooltip="true"' ); $input['title'] = '<input type="text" id="title" name="title" value="' . htmlspecialchars( $this->input( 'post/title', $row->get( 'title' ), GetterInterface::STRING ) ) . '" class="form-control" size="35"' . $titleTooltup . ' />'; $fileTooltip = cbTooltip( null, CBTxt::T( 'Select the file to upload.' ), null, null, null, null, null, 'data-hascbtooltip="true"' ); $input['file'] = '<input type="file" id="file" name="file" value="" class="form-control' . ( ! $row->get( 'id' ) ? ' required' : null ) . '"' . ( $fileTooltip ? ' ' . $fileTooltip : null ) . ( $fileValidation ? implode( ' ', $fileValidation ) : null ) . ' />'; $input['file_limits'] = array(); if ( $extensions ) { $input['file_limits'][] = CBTxt::T( 'GROUP_FILE_LIMITS_EXT', 'Your file must be of [ext] type.', array( '[ext]' => implode( ', ', $extensions ) ) ); } if ( $minFileSize ) { $input['file_limits'][] = CBTxt::T( 'GROUP_FILE_LIMITS_MIN', 'Your file should exceed [size].', array( '[size]' => CBGroupJive::getFormattedFileSize( $minFileSize * 1024 ) ) ); } if ( $maxFileSize ) { $input['file_limits'][] = CBTxt::T( 'GROUP_FILE_LIMITS_MAX', 'Your file should not exceed [size].', array( '[size]' => CBGroupJive::getFormattedFileSize( $maxFileSize * 1024 ) ) ); } $descriptionTooltip = cbTooltip( null, CBTxt::T( 'Optionally input a file description.' ), null, null, null, null, null, 'data-hascbtooltip="true"' ); $input['description'] = '<textarea id="description" name="description" class="form-control" cols="40" rows="5"' . ( $descriptionTooltip ? ' ' . $descriptionTooltip : null ) . '>' . htmlspecialchars( $this->input( 'post/description', $row->get( 'description' ), GetterInterface::STRING ) ) . '</textarea>'; $ownerTooltip = cbTooltip( null, CBTxt::T( 'Input the file owner id. File owner determines the creator of the file specified as User ID.' ), null, null, null, null, null, 'data-hascbtooltip="true"' ); $input['user_id'] = '<input type="text" id="user_id" name="user_id" value="' . (int) $this->input( 'post/user_id', $this->input( 'user', $row->get( 'user_id', $user->get( 'id' ) ), GetterInterface::INT ), GetterInterface::INT ) . '" class="digits required form-control" size="6"' . $ownerTooltip . ' />'; HTML_groupjiveFileEdit::showFileEdit( $row, $input, $group, $user, $this ); }
/** * * * @param FieldTable $field * @param UserTable $user * @param string $output 'html', 'xml', 'json', 'php', 'csvheader', 'csv', 'rss', 'fieldslist', 'htmledit' * @param string $reason 'profile' for user profile view, 'edit' for profile edit, 'register' for registration, 'list' for user-lists * @param boolean $displayFieldIcons * @return string HTML: <tag type="$type" value="$value" xxxx="xxx" yy="y" /> */ function _htmlEditForm(&$field, &$user, $output, $reason, $displayFieldIcons = true) { global $_CB_framework; $fieldName = $field->get('name'); $value = $user->get($fieldName); $required = $this->_isRequired($field, $user, $reason); $uploadSizeLimitMax = $field->params->get('fieldValidateAudio_sizeMax', 1024); $uploadSizeLimitMin = $field->params->get('fieldValidateAudio_sizeMin', 0); $uploadExtensionLimit = $this->allowedExtensions(); $restrictions = array(); if ($uploadExtensionLimit) { $restrictions[] = CBTxt::Th('AUDIO_FILE_UPLOAD_LIMITS_EXT', 'Your audio file must be of [ext] type.', array('[ext]' => implode(', ', $uploadExtensionLimit))); } if ($uploadSizeLimitMin) { $restrictions[] = CBTxt::Th('AUDIO_FILE_UPLOAD_LIMITS_MIN', 'Your audio file should exceed [size].', array('[size]' => $this->formattedFileSize($uploadSizeLimitMin * 1024))); } if ($uploadSizeLimitMax) { $restrictions[] = CBTxt::Th('AUDIO_FILE_UPLOAD_LIMITS_MAX', 'Your audio file should not exceed [size].', array('[size]' => $this->formattedFileSize($uploadSizeLimitMax * 1024))); } $existingFile = $user->get('id') ? $value != null ? true : false : false; $choices = array(); if ($reason == 'register' || $reason == 'edit' && $user->id == 0) { if ($required == 0) { $choices[] = moscomprofilerHTML::makeOption('', CBTxt::T('No audio file')); } } else { if ($existingFile || $required == 0) { $choices[] = moscomprofilerHTML::makeOption('', CBTxt::T('No change of audio file')); } } $selected = null; if ($required == 1 && !$existingFile) { $selected = 'upload'; } if ($field->params->get('audio_allow_links', 1)) { $choices[] = moscomprofilerHTML::makeOption('link', $existingFile ? CBTxt::T('Link to new audio file') : CBTxt::T('Link to audio file')); } $choices[] = moscomprofilerHTML::makeOption('upload', $existingFile ? CBTxt::T('Upload new audio file') : CBTxt::T('Upload audio file')); if ($existingFile && $required == 0) { $choices[] = moscomprofilerHTML::makeOption('delete', CBTxt::T('Remove audio file')); } $return = null; if ($reason != 'register' && $user->id != 0 && $existingFile) { $return .= '<div class="form-group cb_form_line clearfix">' . $this->getEmbed($field, $user, $value, $reason) . '</div>'; } if (count($choices) > 1) { static $functOut = false; $additional = ' class="form-control"'; if ($_CB_framework->getUi() == 1 && $reason == 'edit' && $field->get('readonly')) { $additional .= ' disabled="disabled"'; } $translatedTitle = $this->getFieldTitle($field, $user, 'html', $reason); $htmlDescription = $this->getFieldDescription($field, $user, 'htmledit', $reason); $trimmedDescription = trim(strip_tags($htmlDescription)); $tooltip = $trimmedDescription ? cbTooltip($_CB_framework->getUi(), $htmlDescription, $translatedTitle, null, null, null, null, $additional) : $additional; $return .= '<div class="form-group cb_form_line clearfix">' . moscomprofilerHTML::selectList($choices, $fieldName . '__choice', $tooltip, 'value', 'text', $selected, $required, true, null, false) . $this->_fieldIconsHtml($field, $user, 'htmledit', $reason, 'select', '', null, '', array(), $displayFieldIcons, $required) . '</div>'; if (!$functOut) { $js = "function cbslideAudioFile( choice, name ) {" . "if ( ( choice == '' ) || ( choice == 'delete' ) ) {" . "\$( '#cbaudiofile_upload_' + name + ',#cbaudiofile_link_' + name ).slideUp( 'slow' );" . "\$( '#cbaudiofile_upload_' + name + ' input,#cbaudiofile_link_' + name + ' input' ).prop( 'readonly', true );" . "} else if ( choice == 'upload' ) {" . "\$( '#cbaudiofile_link_' + name ).slideUp( 'slow' );" . "\$( '#cbaudiofile_upload_' + name ).slideDown( 'slow' );" . "\$( '#cbaudiofile_link_' + name + ' input' ).prop( 'readonly', true );" . "\$( '#cbaudiofile_upload_' + name + ' input' ).prop( 'readonly', false );" . "} else if ( choice == 'link' ) {" . "\$( '#cbaudiofile_upload_' + name ).slideUp( 'slow' );" . "\$( '#cbaudiofile_link_' + name ).slideDown( 'slow' );" . "\$( '#cbaudiofile_upload_' + name + ' input' ).prop( 'readonly', true );" . "\$( '#cbaudiofile_link_' + name + ' input' ).prop( 'readonly', false );" . "}" . "}"; $_CB_framework->outputCbJQuery($js); $functOut = true; } $js = "\$( '#cbaudiofile_upload_" . addslashes($fieldName) . ",#cbaudiofile_link_" . addslashes($fieldName) . "' ).hide();" . "\$( '#cbaudiofile_upload_" . addslashes($fieldName) . " input,#cbaudiofile_link_" . addslashes($fieldName) . " input' ).prop( 'readonly', true );" . "\$( '#" . addslashes($fieldName) . "__choice' ).on( 'click change', function() {" . "cbslideAudioFile( \$( this ).val(), '" . addslashes($fieldName) . "' );" . "}).change();"; $_CB_framework->outputCbJQuery($js); } else { $return .= '<input type="hidden" name="' . htmlspecialchars($fieldName) . '__choice" value="' . htmlspecialchars($choices[0]->value) . '" />'; } $validationAttributes = array(); $validationAttributes[] = cbValidator::getRuleHtmlAttributes('extension', implode(',', $uploadExtensionLimit)); if ($uploadSizeLimitMin || $uploadSizeLimitMax) { $validationAttributes[] = cbValidator::getRuleHtmlAttributes('filesize', array($uploadSizeLimitMin, $uploadSizeLimitMax, 'KB')); } $return .= '<div id="cbaudiofile_upload_' . htmlspecialchars($fieldName) . '" class="form-group cb_form_line clearfix">' . ($restrictions ? '<div class="help-block">' . implode(' ', $restrictions) . '</div>' : null) . '<div>' . CBTxt::T('Select audio file') . ' <input type="file" name="' . htmlspecialchars($fieldName) . '__file" value="" class="form-control' . ($required == 1 ? ' required' : null) . '"' . implode(' ', $validationAttributes) . ' />' . (count($choices) <= 0 ? $this->_fieldIconsHtml($field, $user, 'htmledit', $reason, 'select', '', null, '', array(), $displayFieldIcons, $required) : null) . '</div>' . '<div class="help-block">'; if ($field->params->get('audio_terms', 0)) { $termsOutput = $field->params->get('terms_output', 'url'); $termsType = CBTxt::T($field->params->get('terms_type', null)); $termsDisplay = $field->params->get('terms_display', 'modal'); $termsURL = $field->params->get('terms_url', null); $termsText = $field->params->get('terms_text', null); $termsWidth = (int) $field->params->get('terms_width', 400); $termsHeight = (int) $field->params->get('terms_height', 200); if (!$termsType) { $termsType = CBTxt::T('TERMS_AND_CONDITIONS', 'Terms and Conditions'); } if (!$termsWidth) { $termsWidth = 400; } if (!$termsHeight) { $termsHeight = 200; } if ($termsOutput == 'url' && $termsURL || $termsOutput == 'text' && $termsText) { if ($termsDisplay == 'iframe') { if (is_numeric($termsHeight)) { $termsHeight .= 'px'; } if (is_numeric($termsWidth)) { $termsWidth .= 'px'; } if ($termsOutput == 'url') { $return .= '<div class="embed-responsive cbTermsFrameContainer" style="padding-bottom: ' . htmlspecialchars($termsHeight) . ';">' . '<iframe class="embed-responsive-item cbTermsFrameURL" style="width: ' . htmlspecialchars($termsWidth) . ';" src="' . htmlspecialchars($termsURL) . '"></iframe>' . '</div>'; } else { $return .= '<div class="cbTermsFrameText" style="height:' . htmlspecialchars($termsHeight) . ';width:' . htmlspecialchars($termsWidth) . ';overflow:auto;">' . $termsText . '</div>'; } $return .= CBTxt::Th('BY_UPLOADING_YOU_CERTIFY_THAT_YOU_HAVE_THE_RIGHT_TO_DISTRIBUTE_THIS_AUDIO_FILE_TERMS', 'By uploading, you certify that you have the right to distribute this audio file and that it does not violate the above [type].', array('[type]' => $termsType)); } else { $attributes = ' class="cbTermsLink"'; if ($termsOutput == 'text' && $termsDisplay == 'window') { $termsDisplay = 'modal'; } if ($termsDisplay == 'modal') { // Tooltip height percentage would be based off window height (including scrolling); lets change it to be based off the viewport height: $termsHeight = substr($termsHeight, -1) == '%' ? (int) substr($termsHeight, 0, -1) . 'vh' : $termsHeight; if ($termsOutput == 'url') { $tooltip = '<iframe class="cbTermsModalURL" height="100%" width="100%" src="' . htmlspecialchars($termsURL) . '"></iframe>'; } else { $tooltip = '<div class="cbTermsModalText" style="height:100%;width:100%;overflow:auto;">' . $termsText . '</div>'; } $url = 'javascript:void(0);'; $attributes .= ' ' . cbTooltip($_CB_framework->getUi(), $tooltip, $termsType, array($termsWidth, $termsHeight), null, null, null, 'data-hascbtooltip="true" data-cbtooltip-modal="true"'); } else { $url = htmlspecialchars($termsURL); $attributes .= ' target="_blank"'; } $return .= CBTxt::Th('BY_UPLOADING_YOU_CERTIFY_THAT_YOU_HAVE_THE_RIGHT_TO_DISTRIBUTE_THIS_AUDIO_FILE_URL_TERMS', 'By uploading, you certify that you have the right to distribute this audio file and that it does not violate the <a href="[url]"[attributes]>[type]</a>', array('[url]' => $url, '[attributes]' => $attributes, '[type]' => $termsType)); } } else { $return .= CBTxt::Th('BY_UPLOADING_YOU_CERTIFY_THAT_YOU_HAVE_THE_RIGHT_TO_DISTRIBUTE_THIS_AUDIO_FILE', 'By uploading, you certify that you have the right to distribute this audio file.'); } } else { $return .= CBTxt::Th('BY_UPLOADING_YOU_CERTIFY_THAT_YOU_HAVE_THE_RIGHT_TO_DISTRIBUTE_THIS_AUDIO_FILE', 'By uploading, you certify that you have the right to distribute this audio file.'); } $return .= '</div>' . '</div>' . '<div id="cbaudiofile_link_' . htmlspecialchars($fieldName) . '" class="form-group cb_form_line clearfix">' . '<p>'; if ($field->params->get('audio_allow_links', 1)) { $linkField = new FieldTable($field->getDbo()); foreach (array_keys(get_object_vars($linkField)) as $k) { $linkField->set($k, $field->get($k)); } $linkField->set('type', 'text'); $linkField->set('description', null); $user->set($fieldName, strpos($value, '/') !== false || strpos($value, '\\') !== false ? $value : null); $return .= parent::getField($linkField, $user, $output, $reason, 0); $user->set($fieldName, $value); unset($linkField); } $return .= '</p>' . '</div>'; return $return; }
/** * render frontend notifications * * @param NotificationTable $row * @param array $input * @param GroupTable $group * @param UserTable $user * @param CBplug_cbgroupjive $plugin * @return string */ static function showNotifications( $row, $input, $group, $user, $plugin ) { global $_CB_framework, $_PLUGINS; $js = "$( '.gjToggleNotifications' ).on( 'change', function() {" . "if ( $( this ).val() == 0 ) {" . "$( '.gjNotificationsForm' ).find( 'select:not(.gjToggleNotifications)' ).val( 0 ).change();" . "} else if ( $( this ).val() == 1 ) {" . "$( '.gjNotificationsForm' ).find( 'select:not(.gjToggleNotifications)' ).val( 1 ).change();" . "}" . "$( this ).val( -1 );" . "});"; $_CB_framework->outputCbJQuery( $js ); $pageTitle = CBTxt::T( 'Notifications' ); $_CB_framework->setPageTitle( $pageTitle ); cbValidator::loadValidation(); initToolTip(); $isModerator = CBGroupJive::isModerator( $user->get( 'id' ) ); $isOwner = ( $user->get( 'id' ) == $group->get( 'user_id' ) ); $status = CBGroupJive::getGroupStatus( $user, $group ); $return = null; $integrations = $_PLUGINS->trigger( 'gj_onBeforeDisplayNotifications', array( &$return, &$row, &$input, $group, $user ) ); $return .= '<div class="gjNotifications">' . '<form action="' . $_CB_framework->pluginClassUrl( $plugin->element, true, array( 'action' => 'notifications', 'func' => 'save', 'id' => (int) $group->get( 'id' ) ) ) . '" method="post" enctype="multipart/form-data" name="gjNotificationsForm" id="gjNotificationsForm" class="cb_form gjNotificationsForm form-auto cbValidation">' . ( $pageTitle ? '<div class="gjNotificationsTitle page-header"><h3>' . $pageTitle . '</h3></div>' : null ) . '<div class="cbft_select cbtt_select form-group cb_form_line clearfix">' . '<div class="cb_field col-sm-12 text-right">' . $input['toggle'] . '</div>' . '</div>' . '<div class="cbft_select cbtt_select form-group cb_form_line clearfix">' . '<label for="params__user_join" class="col-sm-9 control-label">' . CBTxt::T( 'Join of new user' ) . '</label>' . '<div class="cb_field col-sm-3 text-right">' . $input['user_join'] . '</div>' . '</div>' . '<div class="cbft_select cbtt_select form-group cb_form_line clearfix">' . '<label for="params__user_leave" class="col-sm-9 control-label">' . CBTxt::T( 'Leave of existing user' ) . '</label>' . '<div class="cb_field col-sm-3 text-right">' . $input['user_leave'] . '</div>' . '</div>'; if ( ( $isModerator || $isOwner || ( $status >= 2 ) ) && ( $group->get( 'type' ) == 2 ) ) { $return .= '<div class="cbft_select cbtt_select form-group cb_form_line clearfix">' . '<label for="params__user_approve" class="col-sm-9 control-label">' . CBTxt::T( 'New user requires approval' ) . '</label>' . '<div class="cb_field col-sm-3 text-right">' . $input['user_approve'] . '</div>' . '</div>' . '<div class="cbft_select cbtt_select form-group cb_form_line clearfix">' . '<label for="params__user_cancel" class="col-sm-9 control-label">' . CBTxt::T( 'New user join request cancelled' ) . '</label>' . '<div class="cb_field col-sm-3 text-right">' . $input['user_cancel'] . '</div>' . '</div>'; } if ( ( $plugin->params->get( 'groups_invites_display', 1 ) || ( $group->get( 'type' ) == 3 ) ) && ( $group->params()->get( 'invites', 1 ) || ( $isModerator || $isOwner || ( $status >= 3 ) ) ) ) { $return .= '<div class="cbft_select cbtt_select form-group cb_form_line clearfix">' . '<label for="params__invite_accept" class="col-sm-9 control-label">' . CBTxt::T( 'My group invite requests accepted' ) . '</label>' . '<div class="cb_field col-sm-3 text-right">' . $input['invite_accept'] . '</div>' . '</div>' . '<div class="cbft_select cbtt_select form-group cb_form_line clearfix">' . '<label for="params__invite_reject" class="col-sm-9 control-label">' . CBTxt::T( 'My group invite requests rejected' ) . '</label>' . '<div class="cb_field col-sm-3 text-right">' . $input['invite_reject'] . '</div>' . '</div>'; } if ( is_array( $integrations ) && $integrations ) { $return .= implode( '', $integrations ); } $return .= '<div class="form-group cb_form_line clearfix">' . '<div class="col-sm-12 text-right">' . '<input type="button" value="' . htmlspecialchars( CBTxt::T( 'Cancel' ) ) . '" class="gjButton gjButtonCancel btn btn-default" onclick="cbjQuery.cbconfirm( \'' . addslashes( CBTxt::T( 'Are you sure you want to cancel? All unsaved data will be lost!' ) ) . '\' ).done( function() { window.location.href = \'' . $_CB_framework->pluginClassUrl( $plugin->element, false, array( 'action' => 'groups', 'func' => 'show', 'id' => (int) $group->get( 'id' ) ) ) . '\'; })" />' . ' <input type="submit" value="' . htmlspecialchars( CBTxt::T( 'Update Notifications' ) ) . '" class="gjButton gjButtonSubmit btn btn-primary" ' . cbValidator::getSubmitBtnHtmlAttributes() . ' />' . '</div>' . '</div>' . cbGetSpoofInputTag( 'plugin' ) . '</form>' . '</div>'; $_PLUGINS->trigger( 'gj_onAfterDisplayNotifications', array( &$return, $row, $input, $group, $user ) ); $_CB_framework->setMenuMeta(); echo $return; }
/** * Checks if an email address has been supplied by the provider or if email form needs to render * * @param UserTable $user * @param Hybrid_User_Profile $profile * @return bool */ private function email( &$user, $profile ) { global $_CB_framework; $email = $this->input( 'email', null, GetterInterface::STRING ); $emailVerify = $this->input( 'email__verify', null, GetterInterface::STRING ); if ( $email ) { if ( ! cbIsValidEmail( $email ) ) { $_CB_framework->enqueueMessage( sprintf( CBTxt::T( 'UE_EMAIL_NOVALID', 'This is not a valid email address.' ), htmlspecialchars( $email ) ), 'error' ); $email = null; } else { $field = new FieldTable(); $field->load( array( 'name' => 'email' ) ); $field->set( 'params', new Registry( $field->get( 'params' ) ) ); if ( $field->params->get( 'fieldVerifyInput', 0 ) && ( $email != $emailVerify ) ) { $_CB_framework->enqueueMessage( CBTxt::T( 'Email and verification do not match, please try again.' ), 'error' ); $email = null; } } } if ( ! $email ) { $email = $profile->email; } if ( ! $email ) { $regAntiSpamValues = cbGetRegAntiSpams(); outputCbTemplate(); outputCbJs(); cbValidator::loadValidation(); $cbUser = CBuser::getInstance( null ); $_CB_framework->enqueueMessage( CBTxt::T( 'PROVIDER_SIGN_UP_INCOMPLETE', 'Your [provider] sign up is incomplete. Please complete the following.', array( '[provider]' => $this->_providerName ) ) ); $return = '<form action="' . $_CB_framework->pluginClassUrl( $this->element, false, array( 'provider' => $this->_provider, 'action' => 'authenticate', 'return' => base64_encode( $this->_returnUrl ) ) ) . '" method="post" enctype="multipart/form-data" name="adminForm" id="cbcheckedadminForm" class="cb_form form-auto cbValidation">' . '<div class="cbRegistrationTitle page-header">' . '<h3>' . CBTxt::T( 'Sign up incomplete' ) . '</h3>' . '</div>' . $cbUser->getField( 'email', null, 'htmledit', 'div', 'register', 0, true, array( 'required' => 1, 'edit' => 1, 'registration' => 1 ) ) . '<div class="form-group cb_form_line clearfix">' . '<div class="col-sm-offset-3 col-sm-9">' . '<input type="submit" value="Sign up" class="btn btn-primary cbRegistrationSubmit" data-submit-text="Loading...">' . '</div>' . '</div>' . cbGetSpoofInputTag( 'plugin' ) . cbGetRegAntiSpamInputTag( $regAntiSpamValues ) . '</form>'; echo $return; return false; } $user->set( 'email', $email ); return true; }
/** * render frontend group edit * * @param GroupTable $row * @param array $input * @param CategoryTable $category * @param UserTable $user * @param CBplug_cbgroupjive $plugin * @return string */ static function showGroupEdit( $row, $input, $category, $user, $plugin ) { global $_CB_framework, $_PLUGINS; cbValidator::loadValidation(); initToolTip(); $js = "$( '#canvas_method' ).on( 'change', function() {" . "if ( $( this ).val() == 1 ) {" . "$( '#gjCanvasUpload' ).removeClass( 'hidden' ).find( 'input' ).removeClass( 'cbValidationDisabled' );" . "} else {" . "$( '#gjCanvasUpload' ).addClass( 'hidden' ).find( 'input' ).addClass( 'cbValidationDisabled' ).val( '' );" . "}" . "}).change();" . "$( '#logo_method' ).on( 'change', function() {" . "if ( $( this ).val() == 1 ) {" . "$( '#gjLogoUpload' ).removeClass( 'hidden' ).find( 'input' ).removeClass( 'cbValidationDisabled' );" . "} else {" . "$( '#gjLogoUpload' ).addClass( 'hidden' ).find( 'input' ).addClass( 'cbValidationDisabled' ).val( '' );" . "}" . "}).change();"; $_CB_framework->outputCbJQuery( $js ); $isModerator = CBGroupJive::isModerator( $user->get( 'id' ) ); $returnUrl = CBGroupJive::getReturn( true, true ); $return = null; $integrations = $_PLUGINS->trigger( 'gj_onBeforeDisplayGroupEdit', array( &$return, &$row, &$input, $category, $user ) ); if ( $row->get( 'id' ) ) { $pageTitle = CBTxt::T( 'Edit Group' ); if ( ! $returnUrl ) { $returnUrl = $_CB_framework->pluginClassUrl( $plugin->element, false, array( 'action' => 'groups', 'func' => 'show', 'id' => (int) $row->get( 'id' ) ) ); } } else { $pageTitle = CBTxt::T( 'New Group' ); if ( ! $returnUrl ) { $returnUrl = $_CB_framework->pluginClassUrl( $plugin->element, false, array( 'action' => 'categories', 'func' => 'show', 'id' => (int) $category->get( 'id' ) ) ); } } $_CB_framework->setPageTitle( $pageTitle ); $return .= '<div class="gjGroupEdit">' . '<form action="' . $_CB_framework->pluginClassUrl( $plugin->element, true, array( 'action' => 'groups', 'func' => 'save', 'id' => (int) $row->get( 'id' ), 'return' => CBGroupJive::getReturn( true ) ) ) . '" method="post" enctype="multipart/form-data" name="gjGroupEditForm" id="gjGroupEditForm" class="cb_form gjGroupEditForm form-auto cbValidation">' . ( $pageTitle ? '<div class="gjGroupEditTitle page-header"><h3>' . $pageTitle . '</h3></div>' : null ); if ( $isModerator || ( $row->get( 'id' ) && ( $row->get( 'published' ) != -1 ) ) || ( ! $plugin->params->get( 'groups_create_approval', 0 ) ) ) { $return .= '<div class="cbft_select cbtt_select form-group cb_form_line clearfix">' . '<label for="published" class="col-sm-3 control-label">' . CBTxt::T( 'Published' ) . '</label>' . '<div class="cb_field col-sm-9">' . $input['published'] . getFieldIcons( null, 0, null, CBTxt::T( 'Select publish state of this group. Unpublished groups will not be visible to the public.' ) ) . '</div>' . '</div>'; } if ( $input['category'] ) { $return .= '<div class="cbft_select cbtt_select form-group cb_form_line clearfix">' . '<label for="category" class="col-sm-3 control-label">' . CBTxt::T( 'Category' ) . '</label>' . '<div class="cb_field col-sm-9">' . $input['category'] . getFieldIcons( null, 0, null, CBTxt::T( 'Select the group category. This is the category a group will belong to and decide its navigation path.' ) ) . '</div>' . '</div>'; } $return .= '<div class="cbft_select cbtt_select form-group cb_form_line clearfix">' . '<label for="type" class="col-sm-3 control-label">' . CBTxt::T( 'Type' ) . '</label>' . '<div class="cb_field col-sm-9">' . $input['type'] . getFieldIcons( null, 0, null, CBTxt::T( 'Select the group type. Type determines the way your group is joined (e.g. Invite requires new users to be invited to join your group).' ) ) . '</div>' . '</div>' . '<div class="cbft_text cbtt_input form-group cb_form_line clearfix">' . '<label for="name" class="col-sm-3 control-label">' . CBTxt::T( 'Name' ) . '</label>' . '<div class="cb_field col-sm-9">' . $input['name'] . getFieldIcons( null, 1, null, CBTxt::T( 'Input the group name. This is the name that will distinguish this group from others. Suggested to input something unique and intuitive.' ) ) . '</div>' . '</div>' . '<div class="cbft_textarea cbtt_textarea form-group cb_form_line clearfix">' . '<label for="description" class="col-sm-3 control-label">' . CBTxt::T( 'Description' ) . '</label>' . '<div class="cb_field col-sm-9">' . $input['description'] . getFieldIcons( null, 0, null, CBTxt::T( 'Optionally input the group description. The group description should be short and to the point; describing what your group is all about.' ) ) . '</div>' . '</div>'; if ( $row->get( 'canvas' ) ) { $return .= '<div class="cbft_delimiter form-group cb_form_line clearfix">' . '<label for="canvas_method" class="col-sm-3 control-label">' . CBTxt::T( 'Canvas' ) . '</label>' . '<div class="cb_field col-sm-9">' . $row->canvas() . '</div>' . '</div>' . '<div id="gjCanvasMethod" class="cbft_select cbtt_select form-group cb_form_line clearfix">' . '<div class="cb_field col-sm-offset-3 col-sm-9">' . $input['canvas_method'] . '</div>' . '</div>'; } $return .= '<div id="gjCanvasUpload" class="cbft_file cbtt_input form-group cb_form_line clearfix' . ( $row->get( 'canvas' ) ? ' hidden' : null ) . '">' . ( ! $row->get( 'canvas' ) ? '<label for="canvas" class="col-sm-3 control-label">' . CBTxt::T( 'Canvas' ) . '</label>' : null ) . '<div class="cb_field' . ( $row->get( 'canvas' ) ? ' col-sm-offset-3' : null ) . ' col-sm-9">' . $input['canvas'] . getFieldIcons( null, 0, null, CBTxt::T( 'Optionally select the group canvas. A canvas should represent the topic of your group; please be respectful and tasteful when selecting a canvas.' ) ) . '<div class="help-block">' . implode( ' ', $input['canvas_limits'] ) . '</div>' . '</div>' . '</div>'; if ( $row->get( 'logo' ) ) { $return .= '<div class="cbft_delimiter form-group cb_form_line clearfix">' . '<label for="logo_method" class="col-sm-3 control-label">' . CBTxt::T( 'Logo' ) . '</label>' . '<div class="cb_field col-sm-9">' . $row->logo() . '</div>' . '</div>' . '<div id="gjLogoMethod" class="cbft_select cbtt_select form-group cb_form_line clearfix">' . '<div class="cb_field col-sm-offset-3 col-sm-9">' . $input['logo_method'] . '</div>' . '</div>'; } $return .= '<div id="gjLogoUpload" class="cbft_file cbtt_input form-group cb_form_line clearfix' . ( $row->get( 'logo' ) ? ' hidden' : null ) . '">' . ( ! $row->get( 'logo' ) ? '<label for="logo" class="col-sm-3 control-label">' . CBTxt::T( 'Logo' ) . '</label>' : null ) . '<div class="cb_field' . ( $row->get( 'logo' ) ? ' col-sm-offset-3' : null ) . ' col-sm-9">' . $input['logo'] . getFieldIcons( null, 0, null, CBTxt::T( 'Optionally select the group logo. A logo should represent the topic of your group; please be respectful and tasteful when selecting a logo.' ) ) . '<div class="help-block">' . implode( ' ', $input['logo_limits'] ) . '</div>' . '</div>' . '</div>'; if ( ( $row->get( 'type' ) != 3 ) && ( $isModerator || $plugin->params->get( 'groups_invites_display', 1 ) ) ) { $return .= '<div class="cbft_select cbtt_select form-group cb_form_line clearfix">' . '<label for="params__invites" class="col-sm-3 control-label">' . CBTxt::T( 'Invites' ) . '</label>' . '<div class="cb_field col-sm-9">' . $input['invites'] . getFieldIcons( null, 0, null, CBTxt::T( 'Optionally enable or disable usage of group invites. Group invites allow group users to invite other users to join the group. Group owner and group administrators are exempt from this configuration and can always invite users. Note existing invites will still be accessible.' ) ) . '</div>' . '</div>'; } if ( is_array( $integrations ) && $integrations ) { $return .= implode( '', $integrations ); } if ( $isModerator ) { $return .= '<div class="cbft_text cbtt_input form-group cb_form_line clearfix">' . '<label for="user_id" class="col-sm-3 control-label">' . CBTxt::T( 'Owner' ) . '</label>' . '<div class="cb_field col-sm-9">' . $input['user_id'] . getFieldIcons( null, 1, null, CBTxt::T( 'Input the group owner id. Group owner determines the creator of the group specified as User ID.' ) ) . '</div>' . '</div>'; } if ( ( ! $isModerator ) && $plugin->params->get( 'groups_create_captcha', 0 ) ) { $_PLUGINS->loadPluginGroup( 'user' ); $captcha = $_PLUGINS->trigger( 'onGetCaptchaHtmlElements', array( false ) ); if ( ! empty( $captcha ) ) { $captcha = $captcha[0]; $return .= '<div class="form-group cb_form_line clearfix">' . '<label class="col-sm-3 control-label">' . CBTxt::T( 'Captcha' ) . '</label>' . '<div class="cb_field col-sm-9">' . ( isset( $captcha[0] ) ? $captcha[0] : null ) . '</div>' . '</div>' . '<div class="form-group cb_form_line clearfix">' . '<div class="cb_field col-sm-offset-3 col-sm-9">' . str_replace( 'inputbox', 'form-control', ( isset( $captcha[1] ) ? $captcha[1] : null ) ) . getFieldIcons( null, 1, null ) . '</div>' . '</div>'; } } $return .= '<div class="form-group cb_form_line clearfix">' . '<div class="col-sm-offset-3 col-sm-9">' . '<input type="submit" value="' . htmlspecialchars( ( $row->get( 'id' ) ? CBTxt::T( 'Update Group' ) : CBTxt::T( 'Create Group' ) ) ) . '" class="gjButton gjButtonSubmit btn btn-primary" ' . cbValidator::getSubmitBtnHtmlAttributes() . ' />' . ' <input type="button" value="' . htmlspecialchars( CBTxt::T( 'Cancel' ) ) . '" class="gjButton gjButtonCancel btn btn-default" onclick="cbjQuery.cbconfirm( \'' . addslashes( CBTxt::T( 'Are you sure you want to cancel? All unsaved data will be lost!' ) ) . '\' ).done( function() { window.location.href = \'' . $returnUrl . '\'; })" />' . '</div>' . '</div>' . cbGetSpoofInputTag( 'plugin' ) . '</form>' . '</div>'; $_PLUGINS->trigger( 'gj_onAfterDisplayGroupEdit', array( &$return, $row, $input, $category, $user ) ); $_CB_framework->setMenuMeta(); echo $return; }
static function registerForm($option, $emailpass, &$user, &$postvars, $regErrorMSG = null, $stillDisplayLoginModule = false) { global $_CB_framework, $_CB_database, $ueConfig, $_PLUGINS; $results = $_PLUGINS->trigger('onBeforeRegisterFormDisplay', array(&$user, $regErrorMSG)); if ($_PLUGINS->is_errors()) { echo "<script type=\"text/javascript\">alert(\"" . $_PLUGINS->getErrorMSG() . "\"); window.history.go(-1); </script>\n"; exit; } $cbTemplate = HTML_comprofiler::_cbTemplateLoad(); outputCbTemplate(1); outputCbJs(1); initToolTip(1); $output = 'htmledit'; $formatting = isset($ueConfig['use_divs']) && $ueConfig['use_divs'] ? 'divs' : 'tabletrs'; // gets registration tabs from plugins (including the contacts tab core plugin for username, password, etc: $tabs = new cbTabs(0, 1, null, false); // do not output unused JS code in registration page (IE7 and Safari bugs on that) //$tabcontent = $tabs->getEditTabs( $user, $postvars, $output, 'tabletrs', 'register', false ); $tabcontent = $tabs->getEditTabs($user, $postvars, $output, $formatting, 'register', false); // outputs the site terms and conditions link and approval checkbox: Not yet a CB field //TBD if ($ueConfig['reg_enable_toc']) { global $_CB_OneTwoRowsStyleToggle; $class = 'sectiontableentry' . $_CB_OneTwoRowsStyleToggle; $_CB_OneTwoRowsStyleToggle = $_CB_OneTwoRowsStyleToggle == 1 ? 2 : 1; if ($formatting == 'divs') { $tabcontent .= "\t<div class=\"" . $class . " cb_form_line cbclearboth\" id=\"cbfr_termsc\">\n" . '<div class="cb_field"><div id="cbfv_termsc">'; } else { $tabcontent .= "\t<tr class=\"" . $class . "\" id=\"cbfr_termsc\">\n" . "\t\t<td> </td>\n<td class='fieldCell'>"; } $tabcontent .= "<div class=\"cbSnglCtrlLbl\"><input type='checkbox' name='acceptedterms' id='acceptedterms' class='required' value='1' mosReq='0' mosLabel='" . htmlspecialchars(_UE_TOC) . "' /> <label for='acceptedterms'>" . sprintf(_UE_TOC_LINK, "<a href='" . cbSef(htmlspecialchars($ueConfig['reg_toc_url'])) . "' target='_BLANK'> ", "</a>") . '</label>' . getFieldIcons($_CB_framework->getUi(), 1, null, null, null) . "</div>"; if ($formatting == 'divs') { $tabcontent .= "</div></div></div>\n"; } else { $tabcontent .= "</td>\n" . "\t</tr>\n"; } } $_CB_framework->setPageTitle(_UE_REGISTRATION); $_CB_framework->appendPathWay(_UE_REGISTRATION); // starts outputing: // $cbSpoofField = cbSpoofField(); $cbSpoofString = cbSpoofString(null, 'registerForm'); // $regAntiSpamFieldName = cbGetRegAntiSpamFieldName(); $regAntiSpamValues = cbGetRegAntiSpams(); // <script type="text/javascript" src="includes/js/mambojavascript.js"></script> ob_start(); if (defined('_CB_VALIDATE_NEW')) { cbimport('cb.validator'); cbValidator::renderGenericJs(); $cbjavascript = ob_get_contents(); ob_end_clean(); $_CB_framework->outputCbJQuery($cbjavascript, array('metadata', 'validate')); } else { // old way: ?> var cbDefaultFieldBackground; function cbFrmSubmitButton() { var me = this.elements; <?php $version = checkJversion(); if ($version == 1) { // var r = new RegExp("^[a-zA-Z](([\.\-a-zA-Z0-9@])?[a-zA-Z0-9]*)*$", "i"); ?> var r = new RegExp("[\<|\>|\"|\'|\%|\;|\(|\)|\&]", "i"); <?php } elseif ($version == -1) { ?> var r = new RegExp("[^A-Za-z0-9]", "i"); <?php } else { ?> var r = new RegExp("[\<|\>|\"|\'|\%|\;|\(|\)|\&|\+|\-]", "i"); <?php } ?> var errorMSG = ''; var iserror=0; if (cbDefaultFieldBackground === undefined && typeof(me['username'])!='undefined') cbDefaultFieldBackground = ((me['username'].style.getPropertyValue) ? me['username'].style.getPropertyValue("backgroundColor") : me['username'].style.backgroundColor); <?php echo $tabs->fieldJS; ?> if (typeof(me['username'])!='undefined' && me['username'].value == "") { errorMSG += "<?php echo CBTxt::html_entity_decode(_REGWARN_UNAME); ?> \n"; me['username'].style.backgroundColor = "red"; iserror=1; } else if (typeof(me['username'])!='undefined' && ( r.exec(me['username'].value) || (me['username'].value.length < 3))) { errorMSG += "<?php printf(CBTxt::html_entity_decode(_VALID_AZ09), CBTxt::html_entity_decode(_PROMPT_UNAME), 2); ?> \n"; me['username'].style.backgroundColor = "red"; iserror=1; } else if (typeof(me['username'])!='undefined' && me['username'].style.backgroundColor.slice(0,3)=="red") { me['username'].style.backgroundColor = cbDefaultFieldBackground; <?php if ($emailpass != "1") { ?> } if (typeof(me['password'])!='undefined' && me['password'].value.length < 6) { errorMSG += "<?php printf(CBTxt::html_entity_decode(_VALID_AZ09), CBTxt::html_entity_decode(_REGISTER_PASS), 6); ?> \n"; me['password'].style.backgroundColor = "red"; iserror=1; } else if (typeof(me['password'])!='undefined' && (me['password'].value != "") && (me['password'].value != me['password__verify'].value)){ errorMSG += "<?php echo CBTxt::html_entity_decode(_REGWARN_VPASS2); ?> \n"; me['password'].style.backgroundColor = "red"; me['password__verify'].style.backgroundColor = "red"; iserror=1; } else if (typeof(me['password'])!='undefined') { if (me['password'].style.backgroundColor.slice(0,3)=="red") me['password'].style.backgroundColor = cbDefaultFieldBackground; if (me['password__verify'].style.backgroundColor.slice(0,3)=="red") me['password__verify'].style.backgroundColor = cbDefaultFieldBackground; <?php } ?> } <?php if ($ueConfig['reg_enable_toc']) { ?> if(!me['acceptedterms'].checked) { errorMSG += "<?php echo CBTxt::html_entity_decode(_UE_TOC_REQUIRED); ?> \n"; iserror=1; } <?php } ?> // loop through all input elements in form var fieldErrorMessages = new Array; for (var i=0; i < me.length; i++) { // check if element is mandatory; here mosReq="1" var myenabled = (typeof(me[i].getAttribute('mosNoReq')) == 'undefined' ) || (me[i].getAttribute('mosNoReq') != 1); var mytyp = me[i].getAttribute('type'); var myact = myenabled && mytyp != 'reset' && mytyp != 'button' && mytyp != 'submit' && mytyp != 'image'; if ( myact && (typeof(me[i].getAttribute('mosReq')) != "undefined") && ( me[i].getAttribute('mosReq') == 1) ) { if (me[i].type == 'radio' || me[i].type == 'checkbox') { var rOptions = me[me[i].getAttribute('name')]; var rChecked = 0; if(rOptions.length > 1) { for (var r=0; r < rOptions.length; r++) { if ( (typeof(rOptions[r].getAttribute('mosReq')) != "undefined") && ( rOptions[r].getAttribute('mosReq') == 1) ) { if (rOptions[r].checked) { rChecked=1; } } } } else { if (me[i].checked) { rChecked=1; } } if (rChecked==0) { for (var k=0; k < me.length; k++) { if (me[i].getAttribute('name') == me[k].getAttribute('name')) { if (me[k].checked) { rChecked=1; break; } } } } if (rChecked==0) { var alreadyFlagged = false; for (var j = 0, n = fieldErrorMessages.length; j < n; j++) { if (fieldErrorMessages[j] == me[i].getAttribute('name')) { alreadyFlagged = true; break } } if ( ! alreadyFlagged ) { fieldErrorMessages.push(me[i].getAttribute('name')); // add up all error messages errorMSG += me[i].getAttribute('mosLabel') + ' : <?php echo CBTxt::html_entity_decode(_UE_REQUIRED_ERROR); ?> \n'; // notify user by changing background color, in this case to red me[i].style.backgroundColor = "red"; iserror=1; } } else if (me[i].style.backgroundColor.slice(0,3)=="red") me[i].style.backgroundColor = cbDefaultFieldBackground; } if (me[i].value == '') { // add up all error messages errorMSG += me[i].getAttribute('mosLabel') + ' : <?php echo CBTxt::html_entity_decode(_UE_REQUIRED_ERROR); ?> \n'; // notify user by changing background color, in this case to red me[i].style.backgroundColor = "red"; iserror=1; } else if (me[i].style.backgroundColor.slice(0,3)=="red") me[i].style.backgroundColor = cbDefaultFieldBackground; } } if(iserror==1) { alert(errorMSG); return false; } else { return true; } } $('#cbcheckedadminForm').submit( cbFrmSubmitButton ); <?php $cbjavascript = ob_get_contents(); ob_end_clean(); $_CB_framework->outputCbJQuery($cbjavascript); // end of old } if ($regErrorMSG) { echo "<div class='error'>" . $regErrorMSG . "</div>\n"; } // output results of plugins event "onBeforeRegisterFormDisplay": if (is_array($results)) { echo implode('', $results); } $introMessage = isset($ueConfig['reg_intro_msg']) ? stripslashes(getLangDefinition($ueConfig['reg_intro_msg'])) : null; $conclusionMessage = isset($ueConfig['reg_conclusion_msg']) ? stripslashes(getLangDefinition($ueConfig['reg_conclusion_msg'])) : null; $https_post = checkCBPostIsHTTPS(true); $urlRegister = cbSef("index.php?option=" . $option); if ($https_post) { if (substr($urlRegister, 0, 5) != 'http:' && substr($urlRegister, 0, 6) != 'https:') { $urlRegister = $_CB_framework->getCfg('live_site') . '/' . $urlRegister; } $urlRegister = str_replace('http://', 'https://', $urlRegister); } $regFormTag = '<form action="' . $urlRegister . '" method="post" id="cbcheckedadminForm" name="adminForm" class="cb_form" enctype="multipart/form-data"> <input type="hidden" name="id" value="0" /> <input type="hidden" name="gid" value="0" /> <input type="hidden" name="emailpass" value="' . $emailpass . '" /> <input type="hidden" name="option" value="' . $option . '" /> <input type="hidden" name="task" value="saveregisters" /> ' . cbGetSpoofInputTag(null, $cbSpoofString) . ' ' . cbGetRegAntiSpamInputTag($regAntiSpamValues) . "\n"; $topIcons = null; $bottomIcons = null; if (!isset($ueConfig['reg_show_icons_explain']) || $ueConfig['reg_show_icons_explain'] > 0) { $icons = getFieldIcons(1, true, true, '', '', true); if (in_array($ueConfig['reg_show_icons_explain'], array(1, 3))) { $topIcons = $icons; } if (in_array($ueConfig['reg_show_icons_explain'], array(2, 3))) { $bottomIcons = $icons; } } $moduleContent = null; if (isset($ueConfig['reg_show_login_on_page']) && $ueConfig['reg_show_login_on_page'] == 1 && ($stillDisplayLoginModule || !$regErrorMSG)) { $params = null; $login_module_file = $_CB_framework->getCfg('absolute_path') . '/modules/' . (checkJversion() > 0 ? 'mod_cblogin/' : '') . 'mod_cblogin.php'; if (file_exists($login_module_file)) { define('_UE_LOGIN_FROM', 'regform'); $_CB_database->setQuery("SELECT params from #__modules WHERE module = 'mod_cblogin' ORDER BY ordering", 0, 1); $raw_params = $_CB_database->loadResult(); $params = new cbParamsBase($raw_params); // needed for login module // $params of login module is needed for the include( $login_module_file ) below !! ob_start(); include $login_module_file; $moduleContent = ob_get_contents(); ob_end_clean(); } } // renders using template viewer: echo HTML_comprofiler::_cbTemplateRender($cbTemplate, $user, 'RegisterForm', 'drawProfile', array(&$user, $tabcontent, $regFormTag, $introMessage, _LOGIN_REGISTER_TITLE, _REGISTER_TITLE, _UE_REGISTER, $moduleContent, $topIcons, $bottomIcons, $conclusionMessage, $formatting), $output); // finally small javascript to focus on first field on registration form if there is no introduction text and it's a text field: if (!(isset($ueConfig['reg_intro_msg']) && $ueConfig['reg_intro_msg'] || isset($ueConfig['reg_show_login_on_page']) && $ueConfig['reg_show_login_on_page'] == 1 || $regErrorMSG)) { $_CB_framework->outputCbJQuery('$("#cbcheckedadminForm input[type!=\'hidden\']:first").filter("[type=\'text\'],textarea,[type=\'password\']").focus();'); } }
function edituser($user, $option, $newCBuser, &$postdata) { global $_CB_framework, $_PLUGINS; $results = $_PLUGINS->trigger('onBeforeUserProfileEditDisplay', array(&$user, 2)); if ($_PLUGINS->is_errors()) { echo "<script type=\"text/javascript\">alert(\"" . str_replace(array("\n", '<br />'), array('\\n', '\\n'), addslashes($_PLUGINS->getErrorMSG())) . "\"); window.history.go(-1); </script>\n"; exit; } _CBsecureAboveForm('edituser'); outputCbTemplate(2); initToolTip(2); $tabs = new cbTabs($_CB_framework->getUi() == 2 && !isset($_REQUEST['tab']) ? 1 : 0, 2); // use cookies in backend to remember selected tab. $tabcontent = $tabs->getEditTabs($user, $postdata); outputCbJs(2); global $_CB_Backend_Title; //OLD: $_CB_Backend_Title = array( 0 => array( 'cbicon-48-users', "Community Builder User: <small>" . ( $user->id ? "Edit" . ' [ '. $user->username .' ]' : "New" ) . '</small>' ) ); //NEW: $_CB_Backend_Title = array(0 => array('cbicon-48-users', CBTxt::T('Community Builder User') . ": <small>" . ($user->id ? CBTxt::T('Edit') . ' [ ' . $user->username . ' ]' : CBTxt::T('New')) . '</small>')); ob_start(); if (defined('_CB_VALIDATE_NEW')) { cbimport('cb.validator'); cbValidator::renderGenericJs(); ?> $('div.cbtoolbaractions .cbtoolbaraction').click( function() { if ( $(this).attr('href') ) { var taskVal = $(this).attr('href').substring(1); } else if ( $(this).attr('value') ) { taskVal = $(this).attr('value').substring(1); } $('#cbcheckedadminForm input[name=task]').val( taskVal ); if (taskVal == 'showusers') { $('#cbcheckedadminForm')[0].submit(); } else { $('#cbcheckedadminForm').submit(); } return false; } ); <?php $cbjavascript = ob_get_contents(); ob_end_clean(); $_CB_framework->outputCbJQuery($cbjavascript, array('metadata', 'validate')); } else { // old way: ?> var cbDefaultFieldbackgroundColor; function cbFrmSubmitButton() { var me = this.elements; <?php $version = checkJversion(); if ($version == 1) { // var r = new RegExp("^[a-zA-Z](([\.\-a-zA-Z0-9@])?[a-zA-Z0-9]*)*$", "i"); ?> var r = new RegExp("^[\<|\>|\"|\'|\%|\;|\(|\)|\&|\+|\-]*$", "i"); <?php } elseif ($version == -1) { ?> var r = new RegExp("[^A-Za-z0-9]", "i"); <?php } else { ?> var r = new RegExp("[\<|\>|\"|\'|\%|\;|\(|\)|\&|\+|\-]", "i"); <?php } ?> var errorMSG = ''; var iserror=0; if (cbDefaultFieldbackgroundColor === undefined) cbDefaultFieldbackgroundColor = ((me['username'].style.getPropertyValue) ? me['username'].style.getPropertyValue("backgroundColor") : me['username'].style.backgroundColor); <?php echo $tabs->fieldJS; ?> if (me['username'].value == "") { errorMSG += "<?php echo str_replace(array("\n", "\r"), ' ', CBTxt::html_entity_decode(_REGWARN_UNAME)); ?> \n"; me['username'].style.backgroundColor = "red"; iserror=1; } else if (r.exec(me['username'].value) || (me['username'].value.length < 3)) { errorMSG += "<?php echo str_replace(array("\n", "\r"), ' ', sprintf(CBTxt::html_entity_decode(_VALID_AZ09), CBTxt::html_entity_decode(_PROMPT_UNAME), 2)); ?> \n"; me['username'].style.backgroundColor = "red"; iserror=1; } else if (me['username'].style.backgroundColor.slice(0,3)=="red") { me['username'].style.backgroundColor = cbDefaultFieldbackgroundColor; } if ((me['password'].value != "") && (me['password'].value != me['password__verify'].value)){ errorMSG += "<?php echo CBTxt::html_entity_decode(_REGWARN_VPASS2); ?> \n"; me['password'].style.backgroundColor = "red"; me['password__verify'].style.backgroundColor = "red"; iserror=1; } else { if (me['password'].style.backgroundColor.slice(0,3)=="red") me['password'].style.backgroundColor = cbDefaultFieldbackgroundColor; if (me['password__verify'].style.backgroundColor.slice(0,3)=="red") me['password__verify'].style.backgroundColor = cbDefaultFieldbackgroundColor; } if (!$('input[name^=\"gid\"],select[name^=\"gid\"]').val()) { errorMSG += '<?php echo addslashes(CBTxt::T('You must assign user to a group.')); ?> ' + "\n"; iserror=1; } // loop through all input elements in form var fieldErrorMessages = new Array; for (var i=0; i < me.length; i++) { // check if element is mandatory; here mosReq=1 if ( (typeof(me[i].getAttribute('mosReq')) != "undefined") && ( me[i].getAttribute('mosReq') == 1) ) { if (me[i].type == 'radio' || me[i].type == 'checkbox') { var rOptions = me[me[i].getAttribute('name')]; var rChecked = 0; if(rOptions.length > 1) { for (var r=0; r < rOptions.length; r++) { if ( (typeof(rOptions[r].getAttribute('mosReq')) != "undefined") && ( rOptions[r].getAttribute('mosReq') == 1) ) { if (rOptions[r].checked) { rChecked=1; } } } } else { if (me[i].checked) { rChecked=1; } } if(rChecked==0) { for (var k=0; k < me.length; k++) { if (me[i].getAttribute('name') == me[k].getAttribute('name')) { if (me[k].checked) { rChecked=1; break; } } } } if(rChecked==0) { var alreadyFlagged = false; for (var j = 0, n = fieldErrorMessages.length; j < n; j++) { if (fieldErrorMessages[j] == me[i].getAttribute('name')) { alreadyFlagged = true; break } } if ( ! alreadyFlagged ) { fieldErrorMessages.push(me[i].getAttribute('name')); // add up all error messages errorMSG += me[i].getAttribute('mosLabel') + ' : <?php echo CBTxt::html_entity_decode(_UE_REQUIRED_ERROR); ?> \n'; // notify user by changing background color, in this case to red me[i].style.backgroundColor = "red"; iserror=1; } } else if (me[i].style.backgroundColor.slice(0,3)=="red") me[i].style.backgroundColor = cbDefaultFieldbackgroundColor; } if (me[i].value == '') { // add up all error messages errorMSG += me[i].getAttribute('mosLabel') + ' : <?php echo CBTxt::html_entity_decode(_UE_REQUIRED_ERROR); ?> \n'; // notify user by changing background color, in this case to red me[i].style.backgroundColor = "red"; iserror=1; } else if (me[i].style.backgroundColor.slice(0,3)=="red") me[i].style.backgroundColor = cbDefaultFieldbackgroundColor; } } if(iserror==1) { alert(errorMSG); return false; } else { return true; } } $('#cbcheckedadminForm').submit( cbFrmSubmitButton ); $('div.cbtoolbaractions .cbtoolbaraction').click( function() { if ( $(this).attr('href') ) { var taskVal = $(this).attr('href').substring(1); } else if ( $(this).attr('value') ) { taskVal = $(this).attr('value').substring(1); } $('#cbcheckedadminForm input[name=task]').val( taskVal ); if (taskVal == 'showusers') { $('#userEditTable input').val(''); $('#cbcheckedadminForm')[0].submit(); } else { $('#cbcheckedadminForm').submit(); } return false; } ); <?php $cbjavascript = ob_get_contents(); ob_end_clean(); $_CB_framework->outputCbJQuery($cbjavascript); // end of old way } if (is_array($results)) { echo implode('', $results); } $this->_overideWebFxLayout(); ?> <div id="cbErrorMessages"></div> <form action="<?php echo $_CB_framework->backendUrl('index.php'); ?> " method="post" name="adminForm" id="cbcheckedadminForm" enctype="multipart/form-data" autocomplete="off"> <?php echo "<table cellspacing='0' cellpadding='4' border='0' width='100%' id='userEditTable'><tr><td width='100%'>\n"; echo $tabcontent; echo "</td></tr></table>"; ?> <input type="hidden" name="id" value="<?php echo $user->id; ?> " /> <input type="hidden" name="newCBuser" value="<?php echo $newCBuser; ?> " /> <input type="hidden" name="option" value="<?php echo $option; ?> " /> <input type="hidden" name="task" value="save" /> <?php echo cbGetSpoofInputTag('user'); ?> </form> <div style="align:center;"> <?php echo getFieldIcons(2, true, true, "", "", true); if (isset($_REQUEST['tab'])) { $_CB_framework->outputCbJQuery("showCBTab( '" . addslashes(urldecode(stripslashes(cbGetParam($_REQUEST, 'tab')))) . "' );"); } ?> </div> <?php }
/** * prepare frontend group edit render * * @param int $id * @param UserTable $user */ private function showGroupEdit( $id, $user ) { global $_CB_framework; $row = CBGroupJive::getGroup( $id ); $isModerator = CBGroupJive::isModerator( $user->get( 'id' ) ); $categoryId = $this->input( 'category', null, GetterInterface::INT ); if ( $categoryId === null ) { $category = $row->category(); } else { $category = CBGroupJive::getCategory( $categoryId ); } if ( $row->get( 'id' ) ) { $returnUrl = $_CB_framework->pluginClassUrl( $this->element, false, array( 'action' => 'groups', 'func' => 'show', 'id' => (int) $row->get( 'id' ) ) ); } else { $returnUrl = $_CB_framework->pluginClassUrl( $this->element, false, array( 'action' => 'categories', 'func' => 'show', 'id' => (int) $category->get( 'id' ) ) ); } if ( ! $isModerator ) { if ( ( $categoryId !== null ) && ( ! $category->get( 'id' ) ) && ( ! $this->params->get( 'groups_uncategorized', 1 ) ) ) { CBGroupJive::returnRedirect( $returnUrl, CBTxt::T( 'Category does not exist.' ), 'error' ); } elseif ( $category->get( 'id' ) && ( ( ! $category->get( 'published' ) ) || ( ! CBGroupJive::canAccess( (int) $category->get( 'access' ), (int) $user->get( 'id' ) ) ) ) ) { CBGroupJive::returnRedirect( $returnUrl, CBTxt::T( 'You do not have access to this category.' ), 'error' ); } elseif ( $row->get( 'id' ) ) { if ( $user->get( 'id' ) != $row->get( 'user_id' ) ) { CBGroupJive::returnRedirect( $returnUrl, CBTxt::T( 'You do not have sufficient permissions to edit this group.' ), 'error' ); } } elseif ( ! CBGroupJive::canCreateGroup( $user, ( $categoryId === null ? null : $category ) ) ) { if ( $category->get( 'id' ) ) { CBGroupJive::returnRedirect( $returnUrl, CBTxt::T( 'You do not have sufficient permissions to create a group in this category.' ), 'error' ); } else { CBGroupJive::returnRedirect( $returnUrl, CBTxt::T( 'You do not have sufficient permissions to create a group.' ), 'error' ); } } } CBGroupJive::getTemplate( 'group_edit' ); $input = array(); $publishedTooltip = cbTooltip( null, CBTxt::T( 'Select publish state of this group. Unpublished groups will not be visible to the public.' ), null, null, null, null, null, 'data-hascbtooltip="true"' ); $input['published'] = moscomprofilerHTML::yesnoSelectList( 'published', 'class="form-control"' . $publishedTooltip, (int) $this->input( 'post/published', $row->get( 'published', 1 ), GetterInterface::INT ) ); $categories = CBGroupJive::getCategoryOptions(); if ( $row->get( 'id' ) && $category->get( 'id' ) ) { $available = array(); foreach ( $categories as $option ) { $available[] = (int) $option->value; } if ( ! in_array( (int) $category->get( 'id' ), $available ) ) { array_unshift( $categories, moscomprofilerHTML::makeOption( (int) $category->get( 'id' ), CBTxt::T( $category->get( 'name' ) ) ) ); } } if ( $categories ) { if ( $this->params->get( 'groups_uncategorized', 1 ) || $isModerator ) { array_unshift( $categories, moscomprofilerHTML::makeOption( 0, CBTxt::T( 'Uncategorized' ) ) ); } $categoryTooltip = cbTooltip( null, CBTxt::T( 'Select the group category. This is the category a group will belong to and decide its navigation path.' ), null, null, null, null, null, 'data-hascbtooltip="true"' ); $input['category'] = moscomprofilerHTML::selectList( $categories, 'category', 'class="form-control"' . $categoryTooltip, 'value', 'text', (int) $category->get( 'id' ), 1, false, false ); } else { $input['category'] = null; if ( ! $this->params->get( 'groups_uncategorized', 1 ) ) { CBGroupJive::returnRedirect( $returnUrl, CBTxt::T( 'You do not have sufficient permissions to create a group in any categories.' ), 'error' ); } } $types = explode( '|*|', $category->get( 'types' ) ); $listType = array(); if ( in_array( 1, $types ) || $isModerator || ( ! $category->get( 'id' ) ) || ( ! $types ) ) { $listType[] = moscomprofilerHTML::makeOption( '1', CBTxt::T( 'Open' ) ); } if ( in_array( 2, $types ) || $isModerator || ( ! $category->get( 'id' ) ) || ( ! $types ) ) { $listType[] = moscomprofilerHTML::makeOption( '2', CBTxt::T( 'Approval' ) ); } if ( in_array( 3, $types ) || $isModerator || ( ! $category->get( 'id' ) ) || ( ! $types ) ) { $listType[] = moscomprofilerHTML::makeOption( '3', CBTxt::T( 'Invite' ) ); } $typeTooltip = cbTooltip( null, CBTxt::T( 'Select the group type. Type determines the way your group is joined (e.g. Invite requires new users to be invited to join your group).' ), null, null, null, null, null, 'data-hascbtooltip="true"' ); $input['type'] = moscomprofilerHTML::selectList( $listType, 'type', 'class="form-control"' . $typeTooltip, 'value', 'text', (int) $this->input( 'post/type', $row->get( 'type', 1 ), GetterInterface::INT ), 1, false, false ); $nameTooltup = cbTooltip( null, CBTxt::T( 'Input the group name. This is the name that will distinguish this group from others. Suggested to input something unique and intuitive.' ), null, null, null, null, null, 'data-hascbtooltip="true"' ); $input['name'] = '<input type="text" id="name" name="name" value="' . htmlspecialchars( $this->input( 'post/name', $row->get( 'name' ), GetterInterface::STRING ) ) . '" class="form-control" size="25"' . $nameTooltup . ' />'; $descriptionTooltip = cbTooltip( null, CBTxt::T( 'Optionally input the group description. The group description should be short and to the point; describing what your group is all about.' ), null, null, null, null, null, 'data-hascbtooltip="true"' ); $input['description'] = '<textarea id="description" name="description" class="form-control" cols="40" rows="5"' . $descriptionTooltip . '>' . htmlspecialchars( $this->input( 'post/description', $row->get( 'description' ), GetterInterface::STRING ) ) . '</textarea>'; $listMethods = array(); $listMethods[] = moscomprofilerHTML::makeOption( 0, CBTxt::T( 'No Change' ) ); $listMethods[] = moscomprofilerHTML::makeOption( 1, CBTxt::T( 'Upload' ) ); $listMethods[] = moscomprofilerHTML::makeOption( 2, CBTxt::T( 'Delete' ) ); $input['canvas_method'] = moscomprofilerHTML::selectList( $listMethods, 'canvas_method', 'class="form-control"', 'value', 'text', $this->input( 'post/canvas_method', 0, GetterInterface::INT ), 1, false, false ); $canvasMinFileSize = (int) $this->params->get( 'canvas_min_size', 0 ); $canvasMaxFileSize = (int) $this->params->get( 'canvas_max_size', 1024 ); $canvasValidation = array(); if ( $canvasMinFileSize || $canvasMaxFileSize ) { $canvasValidation[] = cbValidator::getRuleHtmlAttributes( 'filesize', array( $canvasMinFileSize, $canvasMaxFileSize, 'KB' ) ); } $canvasValidation[] = cbValidator::getRuleHtmlAttributes( 'extension', 'jpg,jpeg,gif,png' ); $canvasTooltip = cbTooltip( null, CBTxt::T( 'Optionally select the group canvas. A canvas should represent the topic of your group; please be respectful and tasteful when selecting a canvas.' ), null, null, null, null, null, 'data-hascbtooltip="true"' ); $input['canvas'] = '<input type="file" id="canvas" name="canvas" value="" class="form-control"' . $canvasTooltip . implode( ' ', $canvasValidation ) . ' />'; $input['canvas_limits'] = array( CBTxt::T( 'CANVAS_UPLOAD_LIMITS_EXT', 'Your file must be of [ext] type.', array( '[ext]' => 'jpg, jpeg, gif, png' ) ) ); if ( $canvasMinFileSize ) { $input['canvas_limits'][] = CBTxt::T( 'CANVAS_UPLOAD_LIMITS_MIN', 'Your file should exceed [size].', array( '[size]' => CBGroupJive::getFormattedFileSize( $canvasMinFileSize * 1024 ) ) ); } if ( $canvasMaxFileSize ) { $input['canvas_limits'][] = CBTxt::T( 'CANVAS_UPLOAD_LIMITS_MAX', 'Your file should not exceed [size].', array( '[size]' => CBGroupJive::getFormattedFileSize( $canvasMaxFileSize * 1024 ) ) ); } $input['logo_method'] = moscomprofilerHTML::selectList( $listMethods, 'logo_method', 'class="form-control"', 'value', 'text', $this->input( 'post/logo_method', 0, GetterInterface::INT ), 1, false, false ); $logoMinFileSize = (int) $this->params->get( 'logo_min_size', 0 ); $logoMaxFileSize = (int) $this->params->get( 'logo_max_size', 1024 ); $logoValidation = array(); if ( $logoMinFileSize || $logoMaxFileSize ) { $logoValidation[] = cbValidator::getRuleHtmlAttributes( 'filesize', array( $logoMinFileSize, $logoMaxFileSize, 'KB' ) ); } $logoValidation[] = cbValidator::getRuleHtmlAttributes( 'extension', 'jpg,jpeg,gif,png' ); $logoTooltip = cbTooltip( null, CBTxt::T( 'Optionally select the group logo. A logo should represent the topic of your group; please be respectful and tasteful when selecting a logo.' ), null, null, null, null, null, 'data-hascbtooltip="true"' ); $input['logo'] = '<input type="file" id="logo" name="logo" value="" class="form-control"' . $logoTooltip . implode( ' ', $logoValidation ) . ' />'; $input['logo_limits'] = array( CBTxt::T( 'LOGO_UPLOAD_LIMITS_EXT', 'Your file must be of [ext] type.', array( '[ext]' => 'jpg, jpeg, gif, png' ) ) ); if ( $logoMinFileSize ) { $input['logo_limits'][] = CBTxt::T( 'LOGO_UPLOAD_LIMITS_MIN', 'Your file should exceed [size].', array( '[size]' => CBGroupJive::getFormattedFileSize( $logoMinFileSize * 1024 ) ) ); } if ( $logoMaxFileSize ) { $input['logo_limits'][] = CBTxt::T( 'LOGO_UPLOAD_LIMITS_MAX', 'Your file should not exceed [size].', array( '[size]' => CBGroupJive::getFormattedFileSize( $logoMaxFileSize * 1024 ) ) ); } $invitesTooltip = cbTooltip( null, CBTxt::T( 'Optionally enable or disable usage of invites. Invites allow group users to invite other users to join the group. Group owner and group administrators are exempt from this configuration and can always invite users. Note existing invites will still be accessible.' ), null, null, null, null, null, 'data-hascbtooltip="true"' ); $input['invites'] = moscomprofilerHTML::yesnoSelectList( 'params[invites]', 'class="form-control"' . $invitesTooltip, (int) $this->input( 'post/params.invites', $row->params()->get( 'invites', 1 ), GetterInterface::INT ), CBTxt::T( 'Enable' ), CBTxt::T( 'Disable' ), false ); $ownerTooltip = cbTooltip( null, CBTxt::T( 'Input the group owner id. Group owner determines the creator of the group specified as User ID.' ), null, null, null, null, null, 'data-hascbtooltip="true"' ); $input['user_id'] = '<input type="text" id="user_id" name="user_id" value="' . (int) $this->input( 'post/user_id', $this->input( 'user', $row->get( 'user_id', $user->get( 'id' ) ), GetterInterface::INT ), GetterInterface::INT ) . '" class="digits required form-control" size="6"' . $ownerTooltip . ' />'; HTML_groupjiveGroupEdit::showGroupEdit( $row, $input, $category, $user, $this ); }
/** * Formatter: * Returns a field in specified format * * @param FieldTable $field * @param UserTable $user * @param string $output 'html', 'xml', 'json', 'php', 'csvheader', 'csv', 'rss', 'fieldslist', 'htmledit' * @param string $formatting 'tr', 'td', 'div', 'span', 'none', 'table'?? * @param string $reason 'profile' for user profile view, 'edit' for profile edit, 'register' for registration, 'search' for searches * @param int $list_compare_types IF reason == 'search' : 0 : simple 'is' search, 1 : advanced search with modes, 2 : simple 'any' search * @return mixed */ public function getAjaxDisplay( &$field, &$user, $output, $formatting, $reason, $list_compare_types ) { global $_CB_framework, $_PLUGINS, $ueConfig; if ( $formatting && ( $formatting != 'none' ) && $this->canAjax( $field, $user, $output, $reason ) ) { $field->set( '_noAjax', true ); $hasEdit = $_PLUGINS->callField( $field->get( 'type' ), 'getFieldRow', array( &$field, &$user, 'htmledit', 'none', 'edit', $list_compare_types ), $field ); if ( trim( $hasEdit ) ) { $placeholder = cbReplaceVars( CBTxt::T( $field->params->get( 'ajax_placeholder' ) ), $user ); $formatted = $_PLUGINS->callField( $field->get( 'type' ), 'getFieldRow', array( &$field, &$user, $output, 'none', $reason, $list_compare_types ), $field ); if ( ( ( ! $formatted ) || ( $formatted == $ueConfig['emptyFieldsText'] ) ) && $placeholder ) { $formatted = $placeholder; } $format = ( $field->params->get( 'fieldVerifyInput', 0 ) ? 'div' : 'none' ); if ( $format != 'none' ) { $edit = $_PLUGINS->callField( $field->get( 'type' ), 'getFieldRow', array( &$field, &$user, 'htmledit', $format, 'edit', $list_compare_types ), $field ); } else { $edit = $hasEdit; } if ( trim( $edit ) ) { static $JS_loaded = 0; if ( ! $JS_loaded++ ) { cbValidator::loadValidation(); $_CB_framework->document->addHeadStyleSheet( '/components/com_comprofiler/plugin/user/plug_cbcorefieldsajax/cbcorefieldsajax.css' ); $_CB_framework->addJQueryPlugin( 'cbajaxfield', '/components/com_comprofiler/plugin/user/plug_cbcorefieldsajax/cbcorefieldsajax.js' ); $_CB_framework->outputCbJQuery( "$( '.cbAjaxContainer' ).cbajaxfield();", array( 'cbajaxfield', 'form' ) ); } $formUrl = $_CB_framework->viewUrl( 'fieldclass', true, array( 'field' => $field->get( 'name' ), 'function' => 'savevalue', 'user' => (int) $user->get( 'id' ), 'reason' => $reason ), 'raw' ); $formId = ( htmlspecialchars( $field->get( 'name' ) ) . '_' . (int) $user->get( 'id' ) ) . '_ajax'; $return = '<div id="' . $formId . '_container" class="cbAjaxContainer">' . '<form action="' . $formUrl .'" name="' . $formId . '" id="' . $formId . '" enctype="multipart/form-data" method="post" class="cbAjaxForm cbValidation cb_form form-auto hidden">' . '<div class="cbAjaxInput form-group cb_form_line clearfix">' . '<div class="cb_field">' . $edit . '</div>' . '</div>' . '<div class="cbAjaxButtons form-group cb_form_line clearfix">' . '<input type="submit" class="cbAjaxSubmit btn btn-primary" value="' . htmlspecialchars( CBTxt::T( 'Update' ) ) . '" />' . ' <input type="button" class="cbAjaxCancel btn btn-default" value="' . htmlspecialchars( CBTxt::T( 'Cancel' ) ) . '" />' . '</div>' . cbGetSpoofInputTag( 'fieldclass' ) . cbGetRegAntiSpamInputTag() . '</form>' . '<div class="cbAjaxValue fa-before fa-pencil">' . $formatted . '</div>' . '</div>'; if ( $field->get( 'type' ) == 'editorta' ) { $js = "$( '#" . addslashes( $formId ) . "_container' ).on( 'cbajaxfield.serialize', function() {" . $_CB_framework->saveCmsEditorJS( $field->get( 'name' ), 0, false ) . "});"; $_CB_framework->outputCbJQuery( $js ); } return $this->renderFieldHtml( $field, $user, $return, $output, $formatting, $reason, array() ); } } $field->set( '_noAjax', false ); } return null; }
function ajaxCheckField(&$field, &$user, $reason, $validateParams = null) { global $_CB_framework; static $_CB_fieldajax_outputed = false; static $_CB_fieldajax_validator_outputed = false; $cbSpoofField = cbSpoofField(); $cbSpoofString = cbSpoofString(null, 'fieldclass'); $regAntiSpamFieldName = cbGetRegAntiSpamFieldName(); $regAntiSpamValues = cbGetRegAntiSpams(); $userid = (int) $user->id; $checking = _UE_CHECKING; // . '&start_debug=1', $live_site = $_CB_framework->getCfg('live_site'); $regAntiSpZ = $regAntiSpamValues[0]; $url = "index.php?option=com_comprofiler&task=fieldclass&function=checkvalue&user={$userid}&reason={$reason}"; if ($_CB_framework->getUi() == 2) { $ajaxUrl = $live_site . '/administrator/' . $_CB_framework->backendUrl($url, false, 'raw'); } else { $ajaxUrl = cbSef($url, false, 'raw'); } if ($validateParams !== null && defined('_CB_VALIDATE_NEW')) { if ($_CB_fieldajax_validator_outputed !== true) { cbimport('cb.validator'); cbValidator::addMethod('remotejhtml', <<<EOT jQuery.validator.addMethod("remotejhtml", function(value, element, param) { \t\t\tif ( this.optional(element) ) \t\t\t\treturn "dependency-mismatch"; \t\t\tvar previous = this.previousValue(element); \t\t\tif (!this.settings.messages[element.name] ) \t\t\t\tthis.settings.messages[element.name] = {}; \t\t\tthis.settings.messages[element.name].remote = typeof previous.message == "function" ? previous.message(value) : previous.message; \t\t\tparam = typeof param == "string" && {url:param} || param; \t\t\tvar respField = \$('#'+\$(element).attr('id')+'__Response'); \t\t\tif ( respField.html() != ' ' ) { \t\t\t\tif ( previous.old !== value ) { \t\t\t\t\trespField.fadeOut('medium' ); \t\t\t\t} else { \t\t\t\t\trespField.fadeIn('medium' ); \t\t\t\t} \t\t\t} \t\t\tif ( previous.old !== value && ! this.cbIsOnKeyUp && ! this.cbIsFormSubmitting ) { \t\t\t\tvar inputid = \$(element).attr('id'); \t\t\t\tif ( ! \$('#'+inputid+'__Response').size() ) { \t\t\t\t\tvar respField = '<div class=\\"cb_result_container\\"><div id=\\"' + inputid + '__Response\\"> </div></div>'; \t\t\t\t\t\$(element).parent().each( function() { \t\t\t\t\t\tif (this.tagName.toLowerCase() == 'td') { \t\t\t\t\t\t\t\$(this).append(respField); \t\t\t\t\t\t} else { \t\t\t\t\t\t\t\$(this).after(respField); \t\t\t\t\t\t} \t\t\t\t\t\t\$(inputid+'__Response').hide(); \t\t\t\t\t} ); \t\t\t\t} \t\t\t\tprevious.old = value; \t\t\t\tvar validator = this; \t\t\t\t// this.startRequest(element); \t\t\t\tvar data = {}; \t\t\t\tdata[element.name] = value; \t\t\t\t\$.ajax(\$.extend(true, { \t\t\t\t\ttype: 'POST', \t\t\t\t\turl: '{$ajaxUrl}&field='+encodeURIComponent(inputid), \t\t\t\t\tmode: "abort", \t\t\t\t\tport: "validate" + element.name, \t\t\t\t\tdataType: "html",\t/* """json", */ \t\t\t\t\tdata: 'value=' + encodeURIComponent(value) + '&{$cbSpoofField}=' + encodeURIComponent('{$cbSpoofString}') + '&{$regAntiSpamFieldName}=' + encodeURIComponent('{$regAntiSpZ}'), \t\t\t\t\t/* data: data, */ \t\t\t\t\tsuccess: function(response) { \t\t\t\t\t\t/* never errors on that one: */ \t\t\t\t\t\tvar submitted = validator.formSubmitted; \t\t\t\t\t\tvalidator.prepareElement(element); \t\t\t\t\t\tvalidator.formSubmitted = submitted; \t\t\t\t\t\tvalidator.successList.push(element); \t\t\t\t\t\tvalidator.showErrors(); \t\t\t\t\t\tprevious.valid = response; \t\t\t\t\t\t// validator.stopRequest(element, response); \t\t\t\t\t\tvar respField = \$('#'+\$(element).attr('id')+'__Response'); \t\t\t\t\t\trespField.fadeOut('fast', function() { \t\t\t\t\t\t\trespField.html(response).fadeIn('fast'); \t\t\t\t\t\t} ); \t\t\t\t\t}, \t\t\t\t\terror: function(jqXHR, textStatus) { \t\t\t\t\t\t// validator.stopRequest(element, textStatus); \t\t\t\t\t\tvar respField = \$('#'+\$(element).attr('id')+'__Response'); \t\t\t\t\t\trespField.fadeOut('fast', function() { \t\t\t\t\t\t\trespField.html(textStatus).fadeIn('fast'); \t\t\t\t\t\t} ); \t\t\t\t\t} \t\t\t\t}, param)); \t\t\t\t\$('#'+inputid+'__Response').html('<img alt=\\"\\" src=\\"{$live_site}/components/com_comprofiler/images/wait.gif\\" /> {$checking}').fadeIn('fast'); \t\t\t\treturn true;\t\t// "pending"; \t\t\t} else if( this.pending[element.name] ) { \t\t\t\treturn "pending"; \t\t\t} \t\t\treturn true; // previous.valid; }, 'Ajax Reply Error'); EOT ); /* jQuery.validator.addMethod("remotejhtml", function(value, element, param) { if ( this.optional(element) ) return "dependency-mismatch"; var previous = this.previousValue(element); if (!this.settings.messages[element.name] ) this.settings.messages[element.name] = {}; this.settings.messages[element.name].remote = typeof previous.message == "function" ? previous.message(value) : previous.message; param = typeof param == "string" && {url:param} || param; if ( previous.old !== value && ! this.cbIsOnKeyUp ) { previous.old = value; var validator = this; this.startRequest(element); var data = {}; data[element.name] = value; $.ajax($.extend(true, { type: 'POST', url: '$ajaxUrl&field='+encodeURIComponent(element.id), mode: "abort", port: "validate" + element.name, dataType: "html", data: 'value=' + encodeURIComponent(value) + '&$cbSpoofField=' + encodeURIComponent('$cbSpoofString') + '&$regAntiSpamFieldName=' + encodeURIComponent('$regAntiSpZ'), success: function(response) { if ( response == '' ) { var submitted = validator.formSubmitted; validator.prepareElement(element); validator.formSubmitted = submitted; validator.successList.push(element); validator.showErrors(); } else { var errors = {}; errors[element.name] = response || validator.defaultMessage( element, "remote" ); validator.showErrors(errors); } previous.valid = response; validator.stopRequest(element, response); } }, param)); return "pending"; } else if( this.pending[element.name] ) { return "pending"; } return previous.valid; }, 'Ajax Reply Error'); */ $_CB_fieldajax_validator_outputed = true; } } else { if ($_CB_fieldajax_outputed !== true) { $_CB_framework->outputCbJQuery(<<<EOT \$.fn.cb_field_ajaxCheck = function() { \tif ( ( \$(this).val() != '' ) && ( \$(this).val() != \$(this).data('cblastvalsent') ) ) { \t\tvar inputid = \$(this).attr('id'); \t\tif ( ! \$('#'+inputid+'__Response').size() ) { \t\t\tvar respField = '<div class=\\"cb_result_container\\"><div id=\\"' + inputid + '__Response\\"> </div></div>'; \t\t\t\$(this).parent().each( function() { \t\t\t\tif (this.tagName.toLowerCase() == 'td') { \t\t\t\t\t\$(this).append(respField); \t\t\t\t} else { \t\t\t\t\t\$(this).after(respField); \t\t\t\t} \t\t\t\t\$(inputid+'__Response').hide(); \t\t\t} ); \t\t} \t\tif ( \$('#'+inputid+'__Response').length > 0 ) { \t\t\t\$('#'+inputid+'__Response').html('<img alt=\\"\\" src=\\"{$live_site}/components/com_comprofiler/images/wait.gif\\" /> {$checking}').fadeIn('fast'); \t\t\tvar cbInputField = this; \t\t\tvar lastVal = \$(this).val(); \t\t\t\$(this).data('cblastvalsent', lastVal ); \t\t\t\$.ajax( {\ttype: 'POST', \t\t\t\t\t\turl: '{$ajaxUrl}&field='+encodeURIComponent(inputid), \t\t\t\t\t\tdata: 'value=' + encodeURIComponent( lastVal ) + '&{$cbSpoofField}=' + encodeURIComponent('{$cbSpoofString}') + '&{$regAntiSpamFieldName}=' + encodeURIComponent('{$regAntiSpZ}'), \t\t\t\t\t\tsuccess: function(response) { \t\t\t\t\t\t\tvar respField = \$('#'+\$(cbInputField).attr('id')+'__Response'); \t\t\t\t\t\t\trespField.fadeOut('fast', function() { \t\t\t\t\t\t\t\trespField.html(response).fadeIn('fast'); \t\t\t\t\t\t\t} ); \t\t\t\t\t\t\t\$(cbInputField).data( 'cblastvalchecked', lastVal ); \t\t\t\t\t\t}, \t\t\t\t\t\tdataType: 'html' \t\t\t}); \t\t} \t} }; \$.fn.cb_field_ajaxClear = function() { \tvar respField = \$('#'+\$(this).attr('id')+'__Response'); \tif ( respField.html() != ' ' ) { \t\tif ( \$(this).val() != \$(this).data( 'cblastvalchecked' ) ) { \t\t\trespField.fadeOut('medium' ); \t\t} else { \t\t\trespField.fadeIn('medium' ); \t\t} \t} }; EOT ); $_CB_fieldajax_outputed = true; } } if ($validateParams !== null && defined('_CB_VALIDATE_NEW')) { $validateParams[] = 'remotejhtml:true'; return $this->getMetaClass($field, $validateParams); } else { $_CB_framework->outputCbJQuery("\$('#" . $field->name . "').data( 'cblastvalsent', \$('#" . $field->name . "').val() ).blur( \$.fn.cb_field_ajaxCheck ).keyup( \$.fn.cb_field_ajaxClear );"); return null; } }
/** * render frontend event edit * * @param EventTable $row * @param array $input * @param GroupTable $group * @param UserTable $user * @param CBplug_cbgroupjiveevents $plugin * @return string */ static function showEventEdit( $row, $input, $group, $user, $plugin ) { global $_CB_framework, $_PLUGINS; $pageTitle = ( $row->get( 'id' ) ? CBTxt::T( 'Edit Event' ) : CBTxt::T( 'New Event' ) ); $_CB_framework->setPageTitle( $pageTitle ); cbValidator::loadValidation(); initToolTip(); $isModerator = CBGroupJive::isModerator( $user->get( 'id' ) ); $canModerate = ( CBGroupJive::getGroupStatus( $user, $group ) >= 2 ); $return = null; $_PLUGINS->trigger( 'gj_onBeforeDisplayEventEdit', array( &$return, &$row, &$input, $group, $user ) ); $return .= '<div class="gjEventEdit">' . '<form action="' . $_CB_framework->pluginClassUrl( $plugin->element, true, array( 'action' => 'events', 'func' => 'save', 'id' => (int) $row->get( 'id' ) ) ) . '" method="post" enctype="multipart/form-data" name="gjEventEditForm" id="gjEventEditForm" class="cb_form gjEventEditForm form-auto cbValidation">' . ( $pageTitle ? '<div class="gjEventEditTitle page-header"><h3>' . $pageTitle . '</h3></div>' : null ); if ( $isModerator || $canModerate || ( $row->get( 'id' ) && ( $row->get( 'published' ) != -1 ) ) || ( $group->params()->get( 'events', 1 ) != 2 ) ) { $return .= '<div class="cbft_select cbtt_select form-group cb_form_line clearfix">' . '<label for="published" class="col-sm-3 control-label">' . CBTxt::T( 'Published' ) . '</label>' . '<div class="cb_field col-sm-9">' . $input['published'] . getFieldIcons( null, 0, null, CBTxt::T( 'Select publish state of this event. Unpublished events will not be visible to the public.' ) ) . '</div>' . '</div>'; } $return .= '<div class="cbft_text cbtt_input form-group cb_form_line clearfix">' . '<label for="title" class="col-sm-3 control-label">' . CBTxt::T( 'Title' ) . '</label>' . '<div class="cb_field col-sm-9">' . $input['title'] . getFieldIcons( null, 1, null, CBTxt::T( 'Input the event title. This is the title that will distinguish this event from others. Suggested to input something to uniquely identify your event.' ) ) . '</div>' . '</div>' . '<div class="cbft_textarea cbtt_textarea form-group cb_form_line clearfix">' . '<label for="event" class="col-sm-3 control-label">' . CBTxt::T( 'Event' ) . '</label>' . '<div class="cb_field col-sm-9">' . $input['event'] . getFieldIcons( null, 1, null, CBTxt::T( 'Input a detailed description about this event.' ) ) . '</div>' . '</div>' . '<div class="cbft_text cbtt_input form-group cb_form_line clearfix">' . '<label for="location" class="col-sm-3 control-label">' . CBTxt::T( 'Location' ) . '</label>' . '<div class="cb_field col-sm-9">' . $input['location'] . getFieldIcons( null, 1, null, CBTxt::T( 'Input the location for this event (e.g. My House, The Park, Restaurant Name, etc..).' ) ) . '</div>' . '</div>'; if ( $plugin->params->get( 'groups_events_address', 1 ) ) { $js = "$( '.gjButtonLocation' ).on( 'click', function() {" . "if ( typeof navigator.geolocation == 'undefined' ) {" . "return null;" . "}" . "var input = $( this ).siblings( 'input' );" . "navigator.geolocation.getCurrentPosition( function( position ) {" . "input.val( position.coords.latitude + ',' + position.coords.longitude );" . "});" . "});"; $_CB_framework->outputCbJQuery( $js ); $return .= '<div class="cbft_text cbtt_input form-group cb_form_line clearfix">' . '<label for="address" class="col-sm-3 control-label">' . CBTxt::T( 'Address' ) . '</label>' . '<div class="cb_field col-sm-9">' . '<span class="gjEventEditAddress">' . $input['address'] . '<button type="button" class="gjButton gjButtonLocation btn btn-default"><span class="fa fa-map-marker"></span></button>' . '</span>' . getFieldIcons( null, 0, null, CBTxt::T( 'Optionally input the address for this event or click the map button to attempt to find your current location.' ) ) . '</div>' . '</div>'; } $return .= '<div class="cbft_datetime cbtt_input form-group cb_form_line clearfix">' . '<label for="start" class="col-sm-3 control-label">' . CBTxt::T( 'Start Date' ) . '</label>' . '<div class="cb_field col-sm-9">' . $input['start'] . getFieldIcons( null, 1, null, CBTxt::T( 'Select the date and time this event starts.' ) ) . '</div>' . '</div>' . '<div class="cbft_datetime cbtt_input form-group cb_form_line clearfix">' . '<label for="end" class="col-sm-3 control-label">' . CBTxt::T( 'End Date' ) . '</label>' . '<div class="cb_field col-sm-9">' . $input['end'] . getFieldIcons( null, 0, null, CBTxt::T( 'Optionally select the end date and time for this event.' ) ) . '</div>' . '</div>' . '<div class="cbft_text cbtt_input form-group cb_form_line clearfix">' . '<label for="limit" class="col-sm-3 control-label">' . CBTxt::T( 'Guest Limit' ) . '</label>' . '<div class="cb_field col-sm-9">' . $input['limit'] . getFieldIcons( null, 0, null, CBTxt::T( 'Optionally input a guest limit for this event.' ) ) . '</div>' . '</div>'; if ( $isModerator ) { $return .= '<div class="cbft_text cbtt_input form-group cb_form_line clearfix">' . '<label for="user_id" class="col-sm-3 control-label">' . CBTxt::T( 'Owner' ) . '</label>' . '<div class="cb_field col-sm-9">' . $input['user_id'] . getFieldIcons( null, 1, null, CBTxt::T( 'Input the event owner id. Event owner determines the creator of the event specified as User ID.' ) ) . '</div>' . '</div>'; } if ( ( ! $isModerator ) && $plugin->params->get( 'groups_events_captcha', 0 ) ) { $_PLUGINS->loadPluginGroup( 'user' ); $captcha = $_PLUGINS->trigger( 'onGetCaptchaHtmlElements', array( false ) ); if ( ! empty( $captcha ) ) { $captcha = $captcha[0]; $return .= '<div class="form-group cb_form_line clearfix">' . '<label class="col-sm-3 control-label">' . CBTxt::T( 'Captcha' ) . '</label>' . '<div class="cb_field col-sm-9">' . ( isset( $captcha[0] ) ? $captcha[0] : null ) . '</div>' . '</div>' . '<div class="form-group cb_form_line clearfix">' . '<div class="cb_field col-sm-offset-3 col-sm-9">' . str_replace( 'inputbox', 'form-control', ( isset( $captcha[1] ) ? $captcha[1] : null ) ) . getFieldIcons( null, 1, null ) . '</div>' . '</div>'; } } $return .= '<div class="form-group cb_form_line clearfix cbtwolines">' . '<div class="col-sm-offset-3 col-sm-9">' . '<input type="submit" value="' . htmlspecialchars( ( $row->get( 'id' ) ? CBTxt::T( 'Update Event' ) : CBTxt::T( 'Schedule Event' ) ) ) . '" class="gjButton gjButtonSubmit btn btn-primary" ' . cbValidator::getSubmitBtnHtmlAttributes() . ' />' . ' <input type="button" value="' . htmlspecialchars( CBTxt::T( 'Cancel' ) ) . '" class="gjButton gjButtonCancel btn btn-default" onclick="cbjQuery.cbconfirm( \'' . addslashes( CBTxt::T( 'Are you sure you want to cancel? All unsaved data will be lost!' ) ) . '\' ).done( function() { window.location.href = \'' . $_CB_framework->pluginClassUrl( $plugin->_gjPlugin->element, false, array( 'action' => 'groups', 'func' => 'show', 'id' => (int) $group->get( 'id' ) ) ) . '\'; })" />' . '</div>' . '</div>' . ( ! $row->get( 'id' ) ? '<input type="hidden" id="group" name="group" value="' . (int) $group->get( 'id' ) . '" />' : null ) . cbGetSpoofInputTag( 'plugin' ) . '</form>' . '</div>'; $_PLUGINS->trigger( 'gj_onAfterDisplayEventEdit', array( &$return, $row, $input, $group, $user ) ); $_CB_framework->setMenuMeta(); echo $return; }
/** * @param OrderedTable $row * @param string[] $input * @param UserTable $user * @param stdClass $model * @param PluginTable $plugin */ static function showBlogEdit( $row, $input, $user, /** @noinspection PhpUnusedParameterInspection */ $model, $plugin ) { global $_CB_framework, $_PLUGINS, $_LANG; cbValidator::loadValidation(); $blogMode = $plugin->params->get( 'hangout_mode', 1 ); $pageTitle = ( $row->get( 'id' ) ? $_LANG['Edit Hangout'] : $_LANG['Create Hangout'] ); $cbModerator = Application::User( (int) $user->get( 'id' ) )->isGlobalModerator(); $_CB_framework->setPageTitle( $pageTitle ); $_CB_framework->appendPathWay( htmlspecialchars( $_LANG['Hangout'] ), $_CB_framework->userProfileUrl( $row->get( 'user', $user->get( 'id' ) ), true, 'cbhangoutTab' ) ); $_CB_framework->appendPathWay( htmlspecialchars( $pageTitle ), $_CB_framework->pluginClassUrl( $plugin->element, true, ( $row->get( 'id' ) ? array( 'action' => 'hangout', 'func' => 'edit', 'id' => (int) $row->get( 'id' ) ) : array( 'action' => 'hangout', 'func' => 'new' ) ) ) ); initToolTip(); $return = '<div class="blogEdit">' . '<form action="' . $_CB_framework->pluginClassUrl( $plugin->element, true, array( 'action' => 'hangout', 'func' => 'save', 'id' => (int) $row->get( 'id' ) ) ) . '" method="post" enctype="multipart/form-data" name="blogForm" id="blogForm" class="cb_form blogForm form-auto cbValidation">' . ( $pageTitle ? '<div class="blogsTitle page-header"><h3>' . $pageTitle . '</h3></div>' : null ); if ( $cbModerator || ( ! $plugin->params->get( 'hangout_approval', 0 ) ) ) { $return .= '<div class="cbft_select cbtt_select form-group cb_form_line clearfix">' . '<label for="published" class="col-sm-3 control-label">' . CBTxt::Th( 'Published' ) . '</label>' . '<div class="cb_field col-sm-9">' . $input['published'] . getFieldIcons( 1, 0, null, '' ) . '</div>' . '</div>'; } if ( $plugin->params->get( 'hangout_category_config', 1 ) || $cbModerator ) { $return .= '<div class="cbft_select cbtt_select form-group cb_form_line clearfix">' . '<label for="category" class="col-sm-3 control-label">' . CBTxt::Th( 'Category' ) . '</label>' . '<div class="cb_field col-sm-9">' . $input['category'] . getFieldIcons( 1, 0, null, '' ) . '</div>' . '</div>'; } if ( $plugin->params->get( 'hangout_access_config', 1 ) || $cbModerator ) { $return .= '<div class="cbft_select cbtt_select form-group cb_form_line clearfix">' . '<label for="access" class="col-sm-3 control-label">' . CBTxt::Th( 'Access' ) . '</label>' . '<div class="cb_field col-sm-9">' . $input['access'] . getFieldIcons( 1, 0, null, '' ) . '</div>' . '</div>'; } $return .= '<div class="cbft_text cbtt_input form-group cb_form_line clearfix">' . '<label for="title" class="col-sm-3 control-label">' . CBTxt::Th( 'Title' ) . '</label>' . '<div class="cb_field col-sm-9">' . $input['title'] . getFieldIcons( 1, 1, null, '' ) . '</div>' . '</div>'; if ( in_array( $blogMode, array( 1, 2 ) ) ) { $return .= '<div class="cbft_textarea cbtt_textarea form-group cb_form_line clearfix">' . '<label for="hangout_intro" class="col-sm-3 control-label">' . ( $blogMode == 1 ? $_LANG['Text intro'] : $_LANG['Text intro'] ) . '</label>' . '<div class="cb_field col-sm-9">' . $input['hangout_intro'] . getFieldIcons( 1, 0, null, '' ) . '</div>' . '</div>'; } if ( in_array( $blogMode, array( 1, 3 ) ) ) { $return .= '<div class="cbft_textarea cbtt_textarea form-group cb_form_line clearfix">' . '<label for="hangout_full" class="col-sm-3 control-label">' . ( $blogMode == 1 ? $_LANG['Text full'] : $_LANG['Text full'] ) . '</label>' . '<div class="cb_field col-sm-9">' . $input['hangout_full'] . getFieldIcons( 1, 0, null, '' ) . '</div>' . '</div>'; $return .= '<div class="cbft_text cbtt_input form-group cb_form_line clearfix">' . '<label for="title" class="col-sm-3 control-label">' . $_LANG['Price'] . '</label>' . '<div class="cb_field col-sm-9">' . $input['price'] . getFieldIcons( 1, 0, null, $_LANG['Input price'] ) . '</div>' . '</div>'; } if ( $cbModerator ) { $return .= '<div class="cbft_text cbtt_input form-group cb_form_line clearfix">' . '<label for="user" class="col-sm-3 control-label">' . CBTxt::T( 'Owner' ) . '</label>' . '<div class="cb_field col-sm-9">' . $input['user'] . getFieldIcons( 1, 1, null, '' ) . '</div>' . '</div>'; } if ( $plugin->params->get( 'hangout_captcha', 0 ) && ( ! $cbModerator ) ) { $_PLUGINS->loadPluginGroup( 'user' ); $captcha = $_PLUGINS->trigger( 'onGetCaptchaHtmlElements', array( false ) ); if ( ! empty( $captcha ) ) { $captcha = $captcha[0]; $return .= '<div class="form-group cb_form_line clearfix">' . '<label class="col-sm-3 control-label">' . CBTxt::Th( 'Captcha' ) . '</label>' . '<div class="cb_field col-sm-9">' . ( isset( $captcha[0] ) ? $captcha[0] : null ) . '</div>' . '</div>' . '<div class="form-group cb_form_line clearfix">' . '<div class="cb_field col-sm-offset-3 col-sm-9">' . str_replace( 'inputbox', 'form-control', ( isset( $captcha[1] ) ? $captcha[1] : null ) ) . getFieldIcons( 1, 1, null ) . '</div>' . '</div>'; } } $return .= '<div class="form-group cb_form_line clearfix">' . '<div class="col-sm-offset-3 col-sm-9">' . '<input type="submit" value="' . htmlspecialchars( ( $row->get( 'id' ) ? $_LANG["Update Hangout"] : $_LANG["Create Hangout"] ) ) . '" class="blogsButton blogsButtonSubmit btn btn-primary"' . cbValidator::getSubmitBtnHtmlAttributes() . ' /> ' . ' <input type="button" value="' . htmlspecialchars( CBTxt::T( 'Cancel' ) ) . '" class="blogsButton blogsButtonCancel btn btn-default" onclick="if ( confirm( \'' . addslashes( CBTxt::T( 'Are you sure you want to cancel? All unsaved data will be lost!' ) ) . '\' ) ) { location.href = \'' . $_CB_framework->userProfileUrl( $row->get( 'user', $user->get( 'id' ) ), false, 'cbhangoutTab' ) . '\'; }" />' . '</div>' . '</div>' . cbGetSpoofInputTag( 'plugin' ) . '</form>' . '</div>'; echo $return; }
function _addSaveAndValidateCode($field, $user, $reason) { global $_CB_framework; $jsSaveCode = $_CB_framework->saveCmsEditorJS($field->name); if ($jsSaveCode) { $_CB_framework->outputCbJQuery("\$('#adminForm').submit( function() { " . $jsSaveCode . " return true; } );"); } if ($this->_isRequired($field, $user, $reason)) { // jQuery handles the onReady aspects very well... : if (defined('_CB_VALIDATE_NEW')) { $jsSaveCode = $_CB_framework->saveCmsEditorJS($field->name, 0, false); cbimport('cb.validator'); cbValidator::addMethod('cbeditorareaRequired' . $field->name, ' jQuery.validator.addMethod("cbeditorareaRequired' . $field->name . '", function(value, element, param) { ' . $jsSaveCode . '; return $(element).hasClass(\'requiredDisabled\') || $(element).closest(\'.fieldCell,.cb_field\').hasClass(\'requiredDisabled\') || $.trim($(element).val()).length > 0; }); $(\'form[name="adminForm"] textarea[name="' . $field->name . '"]\').addClass("required").rules( "add", { cbeditorareaRequired' . $field->name . ': true } );'); } else { $_CB_framework->outputCbJQuery('$(\'form[name="adminForm"] textarea[name="' . $field->name . '"]\').addClass("required");' . 'document.adminForm.' . $field->name . ".setAttribute('mosReq','1');" . 'document.adminForm.' . $field->name . ".setAttribute('mosLabel','" . addslashes($this->getFieldTitle($field, $user, 'text', $reason)) . "');"); } } }
/** * @param cbinvitesInviteTable $row * @param array $input * @param UserTable $user * @param cbPluginHandler $plugin */ static function showInviteEdit( $row, $input, $user, $plugin ) { global $_CB_framework, $_PLUGINS; cbValidator::loadValidation(); $cbModerator = Application::User( (int) $user->get( 'id' ) )->isGlobalModerator(); $pageTitle = ( $row->get( 'to' ) ? CBTxt::T( 'Edit Invite' ) : CBTxt::T( 'Create Invite' ) ); $_CB_framework->setPageTitle( $pageTitle ); $_CB_framework->appendPathWay( htmlspecialchars( CBTxt::T( 'Invites' ) ), $_CB_framework->userProfileUrl( $row->get( 'user', $user->get( 'id' ) ), true, 'cbinvitesTab' ) ); $_CB_framework->appendPathWay( htmlspecialchars( $pageTitle ), $_CB_framework->pluginClassUrl( $plugin->element, true, ( $row->get( 'id' ) ? array( 'action' => 'invites', 'func' => 'edit', 'id' => (int) $row->get( 'id' ) ) : array( 'action' => 'invites', 'func' => 'new' ) ) ) ); initToolTip(); $return = '<div class="invitesEdit">' . '<form action="' . $_CB_framework->pluginClassUrl( $plugin->element, true, array( 'action' => 'invites', 'func' => 'save', 'id' => (int) $row->get( 'id' ) ) ) . '" method="post" enctype="multipart/form-data" name="invitesForm" id="invitesForm" class="cb_form invitesForm form-auto cbValidation">' . ( $pageTitle ? '<div class="invitesTitle page-header"><h3>' . $pageTitle . '</h3></div>' : null ) . '<div class="cbft_text cbtt_input form-group cb_form_line clearfix">' . '<label for="to" class="col-sm-3 control-label">' . CBTxt::T( 'To' ) . '</label>' . '<div class="cb_field col-sm-9">' . $input['to'] . getFieldIcons( 1, 1, null, ( $plugin->params->get( 'invite_multiple', 1 ) ? CBTxt::T( 'Input invite email to address. Separate multiple email addresses with a comma.' ) : CBTxt::T( 'Input invite email to address.' ) ) ) . '</div>' . '</div>' . '<div class="cbft_text cbtt_input form-group cb_form_line clearfix">' . '<label for="subject" class="col-sm-3 control-label">' . CBTxt::T( 'Subject' ) . '</label>' . '<div class="cb_field col-sm-9">' . $input['subject'] . getFieldIcons( 1, 0, null, CBTxt::T( 'Input invite email subject; if left blank a subject will be applied.' ) ) . '</div>' . '</div>' . '<div class="cbft_textarea cbtt_textarea form-group cb_form_line clearfix">' . '<label for="body" class="col-sm-3 control-label">' . CBTxt::T( 'Body' ) . '</label>' . '<div class="cb_field col-sm-9">' . $input['body'] . getFieldIcons( 1, 0, null, CBTxt::T( 'Optionally input private message to include with invite email.' ) ) . '</div>' . '</div>'; if ( $cbModerator ) { $return .= '<div class="cbft_text cbtt_input form-group cb_form_line clearfix">' . '<label for="user_id" class="col-sm-3 control-label">' . CBTxt::T( 'Owner' ) . '</label>' . '<div class="cb_field col-sm-9">' . $input['user_id'] . getFieldIcons( 1, 1, null, CBTxt::T( 'Input owner of invite as single integer user_id. This is the user who sent the invite.' ) ) . '</div>' . '</div>' . '<div class="cbft_text cbtt_input form-group cb_form_line clearfix">' . '<label for="user" class="col-sm-3 control-label">' . CBTxt::T( 'User' ) . '</label>' . '<div class="cb_field col-sm-9">' . $input['user'] . getFieldIcons( 1, 0, null, CBTxt::T( 'Optionally input user of invite as single integer user_id. This is the user who accepted the invite.' ) ) . '</div>' . '</div>'; } if ( $plugin->params->get( 'invite_captcha', 0 ) && ( ! $cbModerator ) ) { $_PLUGINS->loadPluginGroup( 'user' ); $captcha = $_PLUGINS->trigger( 'onGetCaptchaHtmlElements', array( false ) ); if ( ! empty( $captcha ) ) { $captcha = $captcha[0]; $return .= '<div class="form-group cb_form_line clearfix">' . '<label class="col-sm-3 control-label">' . CBTxt::Th( 'Captcha' ) . '</label>' . '<div class="cb_field col-sm-9">' . ( isset( $captcha[0] ) ? $captcha[0] : null ) . '</div>' . '</div>' . '<div class="form-group cb_form_line clearfix">' . '<div class="cb_field col-sm-offset-3 col-sm-9">' . str_replace( 'inputbox', 'form-control', ( isset( $captcha[1] ) ? $captcha[1] : null ) ) . getFieldIcons( 1, 1, null ) . '</div>' . '</div>'; } } $return .= '<div class="form-group cb_form_line clearfix">' . '<div class="col-sm-offset-3 col-sm-9">' . '<input type="submit" value="' . htmlspecialchars( ( $row->get( 'id' ) ? CBTxt::T( 'Update Invite' ) : CBTxt::T( 'Send Invite' ) ) ) . '" class="invitesButton invitesButtonSubmit btn btn-primary"' . cbValidator::getSubmitBtnHtmlAttributes() . ' /> ' . ' <input type="button" value="' . htmlspecialchars( CBTxt::T( 'Cancel' ) ) . '" class="invitesButton invitesButtonCancel btn btn-default" onclick="if ( confirm( \'' . addslashes( CBTxt::T( 'Are you sure you want to cancel? All unsaved data will be lost!' ) ) . '\' ) ) { location.href = \'' . $_CB_framework->userProfileUrl( $row->get( 'user', $user->get( 'id' ) ), false, 'cbinvitesTab' ) . '\'; }" />' . '</div>' . '</div>' . cbGetSpoofInputTag( 'plugin' ) . '</form>' . '</div>'; echo $return; }
/** * @param cbinvitesInviteTable $row * @param array $input * @param UserTable $user * @param cbPluginHandler $plugin */ static function showProductEdit( $row, $input, $user, $plugin ) { global $_CB_framework, $_PLUGINS; cbValidator::loadValidation(); $cbModerator = Application::User( (int) $user->get( 'id' ) )->isGlobalModerator(); $pageTitle = ( $row->get( 'id' ) ? CBTxt::T( 'MEDPR_EDIT_PRODUCT' ) : CBTxt::T( 'MEDPR_CREATE_PRODUCT' ) ); $_CB_framework->setPageTitle( $pageTitle ); $_CB_framework->appendPathWay( htmlspecialchars( CBTxt::T( 'MEDPR_MEDICINE_PRODUCT' ) ), $_CB_framework->userProfileUrl( $row->get( 'user', $user->get( 'id' ) ), true, 'cbinvitesTab' ) ); $_CB_framework->appendPathWay( htmlspecialchars( $pageTitle ), $_CB_framework->pluginClassUrl( $plugin->element, true, ( $row->get( 'id' ) ? array( 'action' => 'medizd', 'func' => 'edit', 'id' => (int) $row->get( 'id' ) ) : array( 'action' => 'medizd', 'func' => 'new' ) ) ) ); initToolTip(); $return = '<div class="medizdEdit">' . '<form action="' . $_CB_framework->pluginClassUrl( $plugin->element, true, array( 'action' => 'medizd', 'func' => 'save', 'id' => (int) $row->get( 'id' ) ) ) . '" method="post" enctype="multipart/form-data" name="medizdForm" id="medizdForm" class="cb_form medizdForm form-auto cbValidation">' . ( $pageTitle ? '<div class="invitesTitle page-header"><h3>' . $pageTitle . '</h3></div>' : null ) . '<div class="cbft_text cbtt_input form-group cb_form_line clearfix">' . '<label for="to" class="col-sm-3 control-label">' . CBTxt::T( 'MEDPR_CODE' ) . '</label>' . '<div class="cb_field col-sm-9">' . $input['code'] . getFieldIcons( 1, 1, null) . '</div>' . '</div>' . '<div class="cbft_text cbtt_input form-group cb_form_line clearfix">' . '<label for="subject" class="col-sm-3 control-label">' . CBTxt::T( 'Name' ) . '</label>' . '<div class="cb_field col-sm-9">' . $input['name'] . getFieldIcons( 1, 1, null) . '</div>' . '</div>' . '<div class="cbft_textarea cbtt_textarea form-group cb_form_line clearfix">' . '<label for="body" class="col-sm-3 control-label">' . CBTxt::T( 'MEDPR_DESCRIPTION' ) . '</label>' . '<div class="cb_field col-sm-9">' . $input['description'] . getFieldIcons( 1, 0, null ) . '</div>' . '</div>'; $return .= '<div class="cbft_text cbtt_input form-group cb_form_line clearfix">' . '<label for="user_id" class="col-sm-3 control-label">' . CBTxt::T( 'Category' ) . '</label>' . '<div class="cb_field col-sm-9">' . $input['category'] . getFieldIcons( 1, 1, null) . '</div>' . '</div>' . '<div class="cbft_text cbtt_input form-group cb_form_line clearfix">' . '<label for="user" class="col-sm-3 control-label">' . CBTxt::T( 'MEDPR_MANUFACTURE' ) . '</label>' . '<div class="cb_field col-sm-9">' . $input['proizvoditel'] . getFieldIcons( 1, 0, null) . '</div>' . '</div>' . '<div class="cbft_text cbtt_input form-group cb_form_line clearfix">' . '<label for="user" class="col-sm-3 control-label">' . CBTxt::T( 'MEDPR_COUNTRY' ) . '</label>' . '<div class="cb_field col-sm-9">' . $input['country'] . getFieldIcons( 1, 0, null) . '</div>' . '</div>' . '<div class="cbft_text cbtt_input form-group cb_form_line clearfix">' . '<label for="user" class="col-sm-3 control-label">' . CBTxt::T( 'MEDPR_PRICE' ) . '</label>' . '<div class="cb_field col-sm-9">' . $input['price'] . getFieldIcons( 1, 0, null) . '</div>' . '</div>'; $return .= '<div class="form-group cb_form_line clearfix">' . '<div class="col-sm-offset-3 col-sm-9">' . '<input type="submit" value="' . htmlspecialchars( ( $row->get( 'id' ) ? CBTxt::T( 'MEDPR_UPDATE_PRODUCT' ) : CBTxt::T( 'MEDPR_SAVE_PRODUCT' ) ) ) . '" class="invitesButton invitesButtonSubmit btn btn-primary"' . cbValidator::getSubmitBtnHtmlAttributes() . ' /> ' . ' <input type="button" value="' . htmlspecialchars( CBTxt::T( 'Cancel' ) ) . '" class="invitesButton invitesButtonCancel btn btn-default" onclick="if ( confirm( \'' . addslashes( CBTxt::T( 'Are you sure you want to cancel? All unsaved data will be lost!' ) ) . '\' ) ) { location.href = \'' . $_CB_framework->userProfileUrl( $row->get( 'user', $user->get( 'id' ) ), false, 'cbmedizdFormTab' ) . '\'; }" />' . '</div>' . '</div>' . cbGetSpoofInputTag( 'plugin' ) . '</form>' . '</div>'; echo $return; }
/** * Generates the HTML to display the user profile tab * * @param \CB\Database\Table\TabTable $tab the tab database entry * @param \CB\Database\Table\UserTable $user the user being displayed * @param int $ui 1 for front-end, 2 for back-end * @return string|boolean Either string HTML for tab content, or false if ErrorMSG generated */ public function getDisplayTab($tab, $user, $ui) { global $_CB_framework, $_CB_database, $ueConfig; $return = null; if ($_CB_framework->myId() != $user->id && $_CB_framework->myId() > 0 && (isset($ueConfig['connectionPath']) && $ueConfig['connectionPath']) && $ueConfig['allowConnections']) { $myCBUser = CBuser::getInstance((int) $user->id, false); $myName = $myCBUser->getField('formatname', null, 'html', 'none', 'profile', 0, true); $myAvatar = $myCBUser->getField('avatar', null, 'html', 'none', 'profile', 0, true, array('_hideApproval' => 1)); $i = 0; $cbCon = new cbConnection($_CB_framework->myId()); $conGroups = $cbCon->getDegreeOfSepPath($_CB_framework->myId(), $user->id); $directConDetails = $cbCon->getConnectionDetails($_CB_framework->myId(), $user->id); $addConnURL = $_CB_framework->viewUrl('addconnection', true, array('connectionid' => (int) $user->id)); $removeConnURL = $_CB_framework->viewUrl('removeconnection', true, array('connectionid' => (int) $user->id)); $acceptConnURL = $_CB_framework->viewUrl('acceptconnection', true, array('connectionid' => (int) $user->id)); $denyConnURL = $_CB_framework->viewUrl('denyconnection', true, array('connectionid' => (int) $user->id)); if ($ueConfig['conNotifyType'] != 0) { cbValidator::loadValidation(); $tooltipTitle = sprintf(CBTxt::T('UE_CONNECTTO', 'Connect to %s'), $myName); $ooltipHTML = '<div class="form-group cb_form_line clearfix">' . CBTxt::Th('UE_CONNECTIONINVITATIONMSG', 'Personalize your invitation to connect by adding a message that will be included with your connection.') . '</div>' . '<form action="' . $addConnURL . '" method="post" id="connOverForm" name="connOverForm" class="cb_form cbValidation">' . '<div class="form-group cb_form_line clearfix">' . '<label for="message" class="control-label">' . CBTxt::T('UE_MESSAGE', 'Message') . '</label>' . '<div class="cb_field">' . '<textarea cols="40" rows="8" name="message" class="form-control"></textarea>' . '</div>' . '</div>' . '<div class="form-group cb_form_line clearfix">' . '<input type="submit" class="btn btn-primary cbConnReqSubmit" value="' . htmlspecialchars(CBTxt::Th('UE_SENDCONNECTIONREQUEST', 'Request Connection')) . '"' . cbValidator::getSubmitBtnHtmlAttributes() . ' />' . ' <input type="button" id="cbConnReqCancel" class="btn btn-default cbConnReqCancel cbTooltipClose" value="' . htmlspecialchars(CBTxt::Th('UE_CANCELCONNECTIONREQUEST', 'Cancel')) . '" />' . '</div>' . '</form>'; $tooltip = cbTooltip($ui, $ooltipHTML, $tooltipTitle, 400, null, null, null, 'data-hascbtooltip="true" data-cbtooltip-modal="true"'); } else { $tooltip = null; } $connected = '<div class="cbConnectionPaths alert alert-info">' . CBTxt::Th('CONNECTIONS_YOU_ARE_DIRECTLY_CONNECTED_WITH_USER', 'You are directly connected with [user]', array('[user]' => $myAvatar)) . '</div>'; $requestConnection = '<div class="cbConnectionPaths alert alert-info clearfix">' . '<div class="cbConnPathMessage col-sm-8">' . CBTxt::Th('CONNECTIONS_YOU_HAVE_NO_CONNECTION_WITH_USER', 'You have no established connection with [user]', array('[user]' => $myAvatar)) . '</div>' . '<div class="cbConnPathActions col-sm-4 text-right">' . '<input type="button" value="' . htmlspecialchars(CBTxt::Th('Request Connection')) . '" class="btn btn-success cbConnPathAccept"' . ($tooltip ? ' ' . $tooltip : ' onclick="location.href = \'' . addslashes($addConnURL) . '\';"') . ' />' . '</div>' . '</div>'; $cancelRequest = '<div class="cbConnectionPaths alert alert-info clearfix">' . '<div class="cbConnPathMessage col-sm-8">' . CBTxt::Th('CONNECTIONS_YOUR_CONNECTION_REQUEST_WITH_USER_IS_PENDING', 'Your connection request with [user] is pending acceptance', array('[user]' => $myAvatar)) . '</div>' . '<div class="cbConnPathActions col-sm-4 text-right">' . '<input type="button" value="' . htmlspecialchars(CBTxt::Th('Cancel Request')) . '" class="btn btn-danger cbConnPathReject" onclick="if ( confirm( \'' . addslashes(CBTxt::T('UE_CONFIRMREMOVECONNECTION', 'Are you sure you want to remove this connection?')) . '\' ) ) { location.href = \'' . addslashes($removeConnURL) . '\'; } else { return false }" />' . '</div>' . '</div>'; $acceptDenyRequest = '<div class="cbConnectionPaths alert alert-info clearfix">' . '<div class="cbConnPathMessage col-sm-8">' . CBTxt::Th('CONNECTIONS_THE_CONNECTION_WITH_USER_IS_PENDING_YOUR_ACCEPTANCE', 'The connection with [user] is pending your acceptance', array('[user]' => $myAvatar)) . '</div>' . '<div class="cbConnPathActions col-sm-4 text-right">' . '<input type="button" value="' . htmlspecialchars(CBTxt::Th('Accept')) . '" class="btn btn-success cbConnPathAccept" onclick="location.href = \'' . addslashes($acceptConnURL) . '\';" />' . ' <input type="button" value="' . htmlspecialchars(CBTxt::Th('Reject')) . '" class="btn btn-danger cbConnPathReject" onclick="if ( confirm( \'' . addslashes(CBTxt::T('UE_CONFIRMREMOVECONNECTION', 'Are you sure you want to remove this connection?')) . '\' ) ) { location.href = \'' . addslashes($denyConnURL) . '\'; } else { return false }" />' . '</div>' . '</div>'; $return .= $this->_writeTabDescription($tab, $user); if (is_array($conGroups) && count($conGroups) > 2) { cbArrayToInts($conGroups); $query = "SELECT u.name, u.email, u.username, c.avatar, c.avatarapproved, u.id " . "\n FROM #__comprofiler AS c" . "\n LEFT JOIN #__users AS u ON c.id=u.id" . "\n WHERE c.id IN (" . implode(',', $conGroups) . ")" . "\n AND c.approved=1 AND c.confirmed=1 AND c.banned=0 AND u.block=0"; $_CB_database->setQuery($query); $connections = $_CB_database->loadObjectList('id'); $prevConID = null; $prevConName = null; if (isset($connections[$user->id])) { $return .= '<div class="cbConnectionPaths alert alert-info">' . CBTxt::Th('CONNECTIONS_YOUR_CONNECTION_PATH_TO_USER_OF_DEGREE_IS', 'Your connection path to [user] of [degrees] degrees is ', array('[user]' => $myAvatar, '[degrees]' => $cbCon->getDegreeOfSep())); foreach ($conGroups as $conGroup) { $cbUser = CBuser::getInstance((int) $conGroup); if (!$cbUser) { $cbUser = CBuser::getInstance(null); } if ($i != 0) { $return .= ' <span class="fa fa-chevron-right fa-sm"></span> '; } $conName = $cbUser->getField('formatname', null, 'html', 'none', 'profile', 0, true); $conAvatar = $cbUser->getField('avatar', null, 'html', 'none', 'profile', 0, true, array('_hideApproval' => 1)); if ($conGroup != $_CB_framework->myId() && isset($connections[$conGroup])) { $conDetail = $cbCon->getConnectionDetails($prevConID, $conGroup); $tipField = getConnectionTab::renderConnectionToolTip($conDetail); $tipField .= '<div style="text-align: center; margin: 8px;">' . $cbUser->getField('avatar', null, 'html', 'none', 'list', 0, true) . '</div>'; $tipTitle = $prevConName . CBTxt::T('UE_DETAILSABOUT', ' Details About [PERSON_NAME]', array('[PERSON_NAME]' => htmlspecialchars($conName))); if ($conGroup != $user->id) { $href = $_CB_framework->userProfileUrl((int) $conGroup); } else { $href = null; } $return .= cbTooltip($ui, $tipField, $tipTitle, 300, null, $conAvatar, $href); } else { $return .= $conAvatar; } $i++; $prevConID = $conGroup; $prevConName = $conName; } $return .= '</div>'; if ($directConDetails !== false && $directConDetails->pending) { $return .= $cancelRequest; } elseif ($directConDetails !== false && !$directConDetails->accepted) { $return .= $acceptDenyRequest; } elseif ($directConDetails === false) { $return .= $requestConnection; } } else { $return .= $requestConnection; } } elseif (is_array($conGroups) && count($conGroups) == 2) { $return .= $connected; } else { if ($directConDetails !== false && $directConDetails->pending) { $return .= $cancelRequest; } elseif ($directConDetails !== false && !$directConDetails->accepted) { $return .= $acceptDenyRequest; } else { $return .= $requestConnection; } } } return $return; }
/** * @param cbantispamBlockTable $row * @param array $input * @param string $type * @param int|string $tab * @param UserTable $user * @param cbPluginHandler $plugin */ static public function showBlock( $row, $input, $type, $tab, $user, $plugin ) { global $_CB_framework, $ueConfig; cbValidator::loadValidation(); $name = CBuser::getInstance( (int) $user->get( 'id' ), false )->getField( 'formatname', null, 'html', 'none', 'profile', 0, true ); $pageTitle = CBTxt::T( 'BLOCK_NAME', 'Block [name]', array( '[name]' => $name ) ); $_CB_framework->setPageTitle( $pageTitle ); $_CB_framework->appendPathWay( htmlspecialchars( CBTxt::T( 'Blocks' ) ), $_CB_framework->userProfileUrl( (int) $user->get( 'id' ), true, $tab ) ); $_CB_framework->appendPathWay( htmlspecialchars( $pageTitle ), $_CB_framework->pluginClassUrl( $plugin->element, true, ( $row->get( 'id' ) ? array( 'action' => 'block', 'func' => ( $type ? $type : 'edit' ), 'id' => (int) $row->get( 'id' ), 'usr' => (int) $user->get( 'id' ) ) : array( 'action' => 'block', 'func' => ( $type ? $type : 'new' ), 'usr' => (int) $user->get( 'id' ) ) ) ) ); $return = '<div class="blockEdit">' . '<form action="' . $_CB_framework->pluginClassUrl( $plugin->element, true, array( 'action' => 'block', 'func' => 'save', 'id' => (int) $row->get( 'id' ), 'usr' => (int) $user->get( 'id' ) ) ) . '" method="post" enctype="multipart/form-data" name="blockForm" id="blockForm" class="cb_form blockForm form-auto cbValidation">' . ( $pageTitle ? '<div class="blockTitle page-header"><h3>' . $pageTitle . '</h3></div>' : null ) . '<div class="cbft_select cbtt_select form-group cb_form_line clearfix">' . '<label for="type" class="col-sm-3 control-label">' . CBTxt::T( 'Type' ) . '</label>' . '<div class="cb_field col-sm-9">' . $input['type'] . getFieldIcons( 1, 1, null, CBTxt::T( 'Select the block type. Type determines what value should be supplied.' ) ) . '</div>' . '</div>' . '<div class="cbft_text cbtt_input form-group cb_form_line clearfix">' . '<label for="value" class="col-sm-3 control-label">' . CBTxt::T( 'Value' ) . '</label>' . '<div class="cb_field col-sm-9">' . $input['value'] . getFieldIcons( 1, 1, null, CBTxt::T( 'Input block value in relation to the type. User type use the users user_id (e.g. 42). IP Address type use a full valid IP Address (e.g. 192.168.0.1). Email type use a fill valid email address (e.g. invalid@cb.invalid). Email Domain type use a full email address domain after @ (e.g. example.com).' ) ) . '</div>' . '</div>' . '<div class="cbft_date cbtt_input form-group cb_form_line clearfix">' . '<label for="date" class="col-sm-3 control-label">' . CBTxt::T( 'Date' ) . '</label>' . '<div class="cb_field col-sm-9">' . $input['date'] . getFieldIcons( 1, 1, null, CBTxt::T( 'Select the date and time the block should go in affect. Note date and time always functions in UTC.' ) ) . '</div>' . '</div>' . '<div class="cbft_text cbtt_input form-group cb_form_line clearfix">' . '<label for="duration" class="col-sm-3 control-label">' . CBTxt::T( 'Duration' ) . '</label>' . '<div class="cb_field col-sm-9">' . $input['duration'] . ' ' . $input['durations'] . getFieldIcons( 1, 0, null, CBTxt::T( 'Input the strtotime relative date (e.g. +1 Day). This duration will be added to the datetime specified above. Leave blank for a forever duration.' ) ) . '</div>' . '</div>' . '<div class="cbft_textarea cbtt_textarea form-group cb_form_line clearfix">' . '<label for="reason" class="col-sm-3 control-label">' . CBTxt::T( 'Reason' ) . '</label>' . '<div class="cb_field col-sm-9">' . $input['reason'] . getFieldIcons( 1, 0, null, CBTxt::T( 'Optionally input block reason. If left blank will default to spam.' ) ) . '</div>' . '</div>'; if ( isset( $ueConfig['allowUserBanning'] ) && $ueConfig['allowUserBanning'] ) { $return .= '<div id="banUsr" class="cbft_select cbtt_select form-group cb_form_line clearfix">' . '<label for="ban_user" class="col-sm-3 control-label">' . CBTxt::T( 'Ban Profile' ) . '</label>' . '<div class="cb_field col-sm-9">' . $input['ban_user'] . getFieldIcons( 1, 0, null, CBTxt::T( 'Optionally ban the users profile using Community Builder moderator ban feature. Note normal ban notification will be sent with the ban.' ) ) . '</div>' . '</div>' . '<div id="banUsrReason" class="cbft_textarea cbtt_textarea form-group cb_form_line clearfix">' . '<label for="ban_reason" class="col-sm-3 control-label">' . CBTxt::T( 'Ban Reason' ) . '</label>' . '<div class="cb_field col-sm-9">' . $input['ban_reason'] . getFieldIcons( 1, 0, null, CBTxt::T( 'Optionally input reason for profile ban.' ) ) . '</div>' . '</div>'; } $return .= '<div id="blockUsr" class="cbft_select cbtt_select form-group cb_form_line clearfix">' . '<label for="block_user" class="col-sm-3 control-label">' . CBTxt::T( 'Block Profile' ) . '</label>' . '<div class="cb_field col-sm-9">' . $input['block_user'] . getFieldIcons( 1, 0, null, CBTxt::T( 'Optionally block the users profile using Joomla block state.' ) ) . '</div>' . '</div>' . '<div class="form-group cb_form_line clearfix">' . '<div class="col-sm-offset-3 col-sm-9">' . '<input type="submit" value="' . htmlspecialchars( ( $row->get( 'id' ) ? CBTxt::T( 'Update Block' ) : CBTxt::T( 'Create Block' ) ) ) . '" class="blockButton blockButtonSubmit btn btn-primary"' . cbValidator::getSubmitBtnHtmlAttributes() . ' /> ' . ' <input type="button" value="' . htmlspecialchars( CBTxt::T( 'Cancel' ) ) . '" class="blockButton blockButtonCancel btn btn-default" onclick="if ( confirm( \'' . addslashes( CBTxt::T( 'Are you sure you want to cancel? All unsaved data will be lost!' ) ) . '\' ) ) { location.href = \'' . $_CB_framework->userProfileUrl( (int) $user->get( 'id' ), false, $tab ) . '\'; }" />' . '</div>' . '</div>' . cbGetSpoofInputTag( 'plugin' ) . '</form>' . '</div>'; echo $return; }
function emailUsers(&$rows, &$total, $search, $option, &$lists, $cid, $inputTextExtras, $searchTabContent, $emailSubject, $emailBody, $emailsPerBatch, $emailPause, $simulationMode, $pluginRows) { global $_CB_framework; _CBsecureAboveForm('showUsers'); outputCbTemplate(2); outputCbJs(2); global $_CB_Backend_Title; $_CB_Backend_Title = array(0 => array('cbicon-48-massmail', CBTxt::T('CB Email Users'))); ob_start(); cbimport('cb.validator'); cbValidator::renderGenericJs(); ?> $('div.cbtoolbaractions .cbtoolbaraction').click( function() { if ( $(this).attr('href') ) { var taskVal = $(this).attr('href').substring(1); } else if ( $(this).attr('value') ) { taskVal = $(this).attr('value').substring(1); } $('#cbcheckedadminForm input[name=task]').val( taskVal ); if (taskVal != 'startemailusers') { $('#cbcheckedadminForm')[0].submit(); } else { $('#cbcheckedadminForm').submit(); } return false; } ); <?php $cbjavascript = ob_get_contents(); ob_end_clean(); $_CB_framework->outputCbJQuery($cbjavascript, array('metadata', 'validate')); // Save code for HTML editor: $jsSaveCode = $_CB_framework->saveCmsEditorJS('emailbody'); if ($jsSaveCode) { $js = "\$('#" . 'emailbody' . "').parent('form').submit( function() { " . $jsSaveCode . " } );"; $_CB_framework->outputCbJQuery($js); } ?> <form action="<?php echo $_CB_framework->backendUrl('index.php'); ?> " method="post" name="adminForm" id="cbcheckedadminForm" class="cb_form"> <?php $this->_userslistFilters($search, $lists, $inputTextExtras, $searchTabContent, true); ?> <table cellpadding="4" cellspacing="0" border="0" width="100%" class="adminlist"> <thead> <tr> <th colspan="2" width="100%" class="title"><?php echo CBTxt::Th('CB Email Users'); ?> </th> </tr> </thead> <tbody> <tr> <td width="15%" class="captionCell"><?php echo sprintf(CBTxt::Th('Send Email to %s users'), (int) $total); ?> :</td> <td width="85%" class="fieldCell"> <?php $displayMax = 100; $i = $displayMax; $usermails = array(); foreach ($rows as $row) { $usermails[] = htmlspecialchars($row->name) . ' <' . htmlspecialchars($row->email) . '>'; if (--$i == 0) { if (count($rows) > $displayMax) { $usermails[] = '<strong>' . sprintf(CBTxt::Th('and %s more users.'), (int) ($total - $displayMax)) . '</strong>'; } break; } } echo implode(', ', $usermails); unset($usermails); ?> <br /><br /> </td> </tr> <tr> <td class="captionCell"><?php echo CBTxt::Th('Simulation mode'); ?> :</td> <td class="fieldCell"> <input type="checkbox" name="simulationmode" id="simulationmode"<?php if ($simulationMode) { echo ' checked="checked"'; } ?> " /> <label for="simulationmode"><?php echo CBTxt::Th('Do not send emails, just show me how it works'); ?> </label> </td> </tr> <tr> <td class="captionCell"><?php echo CBTxt::Th('Email Subject'); ?> :</td> <td class="fieldCell"> <input type="text" name="emailsubject" value="<?php echo htmlspecialchars($emailSubject); ?> " class="inputbox required" size="60" /> </td> </tr> <tr> <td class="captionCell"><?php echo CBTxt::Th('Email Message'); ?> :</td> <td class="fieldCell"> <?php echo $_CB_framework->displayCmsEditor('emailbody', $emailBody, 600, 200, 50, 7); ?> </td> </tr> <tr> <td class="captionCell"><?php echo CBTxt::Th('CB substitutions for subject and message'); ?> :</td> <td class="fieldCell"> <?php echo CBTxt::Th('You can use all CB substitutions as in most parts: e.g.: [cb:if team="winners"] Congratulations [cb:userfield field="name" /], you are in the winning team! [/cb:if]'); ?> </td> </tr> <?php $this->_pluginRows($pluginRows); ?> <tr> <td class="captionCell"><?php echo CBTxt::Th('Emails per batch'); ?> :</td> <td class="fieldCell"> <input type="text" name="emailsperbatch" value="<?php echo htmlspecialchars($emailsPerBatch); ?> " class="inputbox required digits" size="12" /> </td> </tr> <tr> <td class="captionCell"><?php echo CBTxt::Th('Seconds of pause between batches'); ?> :</td> <td class="fieldCell"> <input type="text" name="emailpause" value="<?php echo htmlspecialchars($emailPause); ?> " class="inputbox required digits" size="12" /> </td> </tr> </tbody> <tfoot> <tr> <th align="center" colspan="2"></th> </tr> </tfoot> </table> <input type="hidden" name="option" value="<?php echo $option; ?> " /> <input type="hidden" name="task" value="emailusers" /> <input type="hidden" name="boxchecked" value="0" /> <?php if (is_array($cid) && count($cid)) { foreach ($cid as $uid) { echo '<input type="hidden" name="cid[]" value="' . (int) $uid . '">'; } } echo cbGetSpoofInputTag('user'); ?> </form> <?php }
* applicable law or agreed to in writing, software distributed under the License is * distributed on an "AS IS" BASIS, WITHOUT ANY WARRANTIES OR CONDITIONS OF ANY KIND, * either express or implied. See the License for the specific language governing * permissions and limitations under the License. You may obtain a copy of the License * at <http://corebos.org/documentation/doku.php?id=en:devel:vpl11> ************************************************************************************************* * Module : Example Validation * Version : 1.0 * Author : JPL TSolucio, S. L. *************************************************************************************************/ /*********************************************************************************** param structure array contains all the form fields current values, the ones you want to validate return %%%OK%%% to indicate that all validations have passed correctly %%%CONFIRM%%% followed by any message to produce a screen that will ask for confirmation using the text following the CONFIRM label Any other message will be interpreted as an error message that will be shown to user. ************************************************************************************/ global $log, $currentModule, $adb; include_once 'include/validation/load_validations.php'; $screen_values = json_decode($_REQUEST['structure'], true); $v = new cbValidator(array('iban_number' => $screen_values['iban_number'])); $v->rule('required', 'iban_number'); $v->rule('IBAN_BankAccount', 'iban_number'); if ($v->validate()) { echo "Yay! We're all good!"; } else { // Errors print_r($v->errors()); } //echo '%%%OK%%%';
/** * Generates the HTML to display the user profile tab * * @param TabTable $tab the tab database entry * @param UserTable $user the user being displayed * @param int $ui 1 for front-end, 2 for back-end * @return string|boolean Either string HTML for tab content, or false if ErrorMSG generated */ public function getDisplayTab($tab, $user, $ui) { global $_CB_framework; $viewer = CBuser::getMyUserDataInstance(); if (!$this->isInstalled() || !$viewer->get('id') || !$user->get('id') || $viewer->get('id') == $user->get('id')) { return null; } if (!$tab->params instanceof ParamsInterface) { $tab->params = new Registry($tab->params); } $showTitle = (int) $tab->params->get('pmsShowTitle', 1); $showSubject = (int) $tab->params->get('pmsShowSubject', 0); $description = $this->_writeTabDescription($tab, $user); cbValidator::loadValidation(); $return = '<form action="' . $_CB_framework->pluginClassUrl($this->element, true, array('id' => (int) $user->get('id'))) . '" method="post" name="quickMsgForm" id="quickMsgForm" class="cb_form quickMsgForm cbValidation">' . '<div class="panel panel-default">' . ($showTitle ? '<div class="panel-heading">' . CBTxt::T($tab->title) . '</div>' : null) . '<div class="panel-body">'; if ($description) { $return .= '<div class="cbft_delimiter form-group cb_form_line clearfix">' . '<div class="cb_field col-sm-12">' . $description . '</div>' . '</div>'; } if ($showSubject) { $return .= '<div class="cbft_text cbtt_input form-group cb_form_line clearfix">' . '<label for="subject" class="col-sm-3 control-label">' . CBTxt::T('PM_SUBJECT', 'Subject') . '</label>' . '<div class="cb_field col-sm-9">' . '<input type="text" name="subject" value="" class="form-control" />' . '</div>' . '</div>'; } $return .= '<div class="cbft_textarea cbtt_textarea cb_form_line clearfix">' . ($showSubject ? '<label for="subject" class="col-sm-3 control-label">' . CBTxt::T('PM_MESSAGE', 'Message') . '</label>' : null) . '<div class="cb_field col-sm-' . ($showSubject ? 9 : 12) . '">' . '<textarea name="message" class="form-control required" rows="5"></textarea>' . '</div>' . '</div>' . '</div>' . '<div class="panel-footer">' . '<div class="cb_form_line clearfix">' . '<div class="' . ($showSubject ? 'col-sm-offset-3 col-sm-9' : 'col-sm-12') . '">' . '<input type="submit" value="' . htmlspecialchars(CBTxt::T('PM_SEND_MESSAGE', 'Send Message')) . '" class="quickMsgButton quickMsgButtonSubmit btn btn-primary" ' . cbValidator::getSubmitBtnHtmlAttributes() . ' /> ' . '</div>' . '</div>' . '</div>' . '</div>' . cbGetSpoofInputTag('plugin') . '</form>'; return $return; }
/** * render frontend wall edit * * @param WallTable $row * @param array $input * @param GroupTable $group * @param UserTable $user * @param CBplug_cbgroupjivewall $plugin * @return string */ static function showWallEdit( $row, $input, $group, $user, $plugin ) { global $_CB_framework, $_PLUGINS; $pageTitle = ( $row->get( 'id' ) ? CBTxt::T( 'Edit Post' ) : CBTxt::T( 'New Post' ) ); $_CB_framework->setPageTitle( $pageTitle ); cbValidator::loadValidation(); initToolTip(); $isModerator = CBGroupJive::isModerator( $user->get( 'id' ) ); $canModerate = ( CBGroupJive::getGroupStatus( $user, $group ) >= 2 ); $return = null; $_PLUGINS->trigger( 'gj_onBeforeDisplayWallEdit', array( &$return, &$row, &$input, $group, $user ) ); $return .= '<div class="gjWallEdit">' . '<form action="' . $_CB_framework->pluginClassUrl( $plugin->element, true, array( 'action' => 'wall', 'func' => 'save', 'id' => (int) $row->get( 'id' ) ) ) . '" method="post" enctype="multipart/form-data" name="gjWallEditForm" id="gjWallEditForm" class="cb_form gjWallEditForm form-auto cbValidation">' . ( $pageTitle ? '<div class="gjWallEditTitle page-header"><h3>' . $pageTitle . '</h3></div>' : null ); if ( $isModerator || $canModerate || ( $row->get( 'id' ) && ( $row->get( 'published' ) != -1 ) ) || ( $group->params()->get( 'wall', 1 ) != 2 ) ) { $return .= '<div class="cbft_select cbtt_select form-group cb_form_line clearfix">' . '<label for="published" class="col-sm-3 control-label">' . CBTxt::T( 'Published' ) . '</label>' . '<div class="cb_field col-sm-9">' . $input['published'] . getFieldIcons( null, 0, null, CBTxt::T( 'Select publish state of this post. Unpublished posts will not be visible to the public.' ) ) . '</div>' . '</div>'; } if ( $row->reply()->get( 'id' ) ) { $return .= '<div class="cbft_delimiter form-group cb_form_line clearfix">' . '<label class="col-sm-3 control-label">' . CBTxt::T( 'Reply' ) . '</label>' . '<div class="cb_field col-sm-9">' . $row->reply()->post() . '</div>' . '</div>'; } $return .= '<div class="cbft_textarea cbtt_textarea form-group cb_form_line clearfix">' . '<label for="post" class="col-sm-3 control-label">' . CBTxt::T( 'Post' ) . '</label>' . '<div class="cb_field col-sm-9">' . $input['post'] . getFieldIcons( null, 1, null, CBTxt::T( 'Input the post to share.' ) ) . '</div>' . '</div>'; if ( $isModerator ) { $return .= '<div class="cbft_text cbtt_input form-group cb_form_line clearfix">' . '<label for="user_id" class="col-sm-3 control-label">' . CBTxt::T( 'Owner' ) . '</label>' . '<div class="cb_field col-sm-9">' . $input['user_id'] . getFieldIcons( null, 1, null, CBTxt::T( 'Input the post owner id. Post owner determines the creator of the post specified as User ID.' ) ) . '</div>' . '</div>'; } $return .= '<div class="form-group cb_form_line clearfix cbtwolines">' . '<div class="col-sm-offset-3 col-sm-9">' . '<input type="submit" value="' . htmlspecialchars( ( $row->get( 'id' ) ? CBTxt::T( 'Update Post' ) : CBTxt::T( 'Post' ) ) ) . '" class="gjButton gjButtonSubmit btn btn-primary" ' . cbValidator::getSubmitBtnHtmlAttributes() . ' />' . ' <input type="button" value="' . htmlspecialchars( CBTxt::T( 'Cancel' ) ) . '" class="gjButton gjButtonCancel btn btn-default" onclick="cbjQuery.cbconfirm( \'' . addslashes( CBTxt::T( 'Are you sure you want to cancel? All unsaved data will be lost!' ) ) . '\' ).done( function() { window.location.href = \'' . $_CB_framework->pluginClassUrl( $plugin->_gjPlugin->element, false, array( 'action' => 'groups', 'func' => 'show', 'id' => (int) $group->get( 'id' ) ) ) . '\'; })" />' . '</div>' . '</div>' . ( ! $row->get( 'id' ) ? '<input type="hidden" id="group" name="group" value="' . (int) $group->get( 'id' ) . '" />' : null ) . cbGetSpoofInputTag( 'plugin' ) . '</form>' . '</div>'; $_PLUGINS->trigger( 'gj_onAfterDisplayWallEdit', array( &$return, $row, $input, $group, $user ) ); $_CB_framework->setMenuMeta(); echo $return; }
/** * @param \CB\Database\Table\TabTable $tab the tab database entry * @param \CB\Database\Table\UserTable $user the user being displayed * @param int $ui 1 for front-end, 2 for back-end * @return boolean */ public function getMenuAndStatus($tab, $user, $ui) { global $_CB_framework, $_CB_database, $ueConfig, $_REQUEST, $_POST; $params = $this->params; $userId = $user->id && $_CB_framework->myId() == $user->id ? null : $user->id; $firstMenuName = $params->get('firstMenuName', ''); // CBTxt::T( '_UE_MENU_CB', 'Community' ) $firstSubMenuName = $params->get('firstSubMenuName', ''); // CBTxt::T( '_UE_MENU_ABOUT_CB', 'About Community Builder...' ) $firstSubMenuHref = $params->get('firstSubMenuHref', ''); $secondSubMenuName = $params->get('secondSubMenuName', ''); $secondSubMenuHref = $params->get('secondSubMenuHref', ''); // ----- CUSTOM MENU ----- if ($firstMenuName != '') { $customMenu = array(); $customMenu['arrayPos'] = $firstMenuName; $customMenu['position'] = 'menuBar'; $customMenu['caption'] = CBTxt::T($firstMenuName); $this->addMenu($customMenu); if ($firstSubMenuName != '') { // Custom 1: $first = array(); $first['arrayPos'] = array($firstMenuName => array('_UE_FIRST' => null)); $first['position'] = 'menuBar'; $first['caption'] = CBTxt::T($firstSubMenuName); $first['url'] = $firstSubMenuHref == '' ? "javascript: void( 0 );" : cbSef($firstSubMenuHref); $first['target'] = ''; $first['img'] = ''; $first['tooltip'] = ''; $this->addMenu($first); if ($secondSubMenuName != '') { // Custom 2: $second = array(); $second['arrayPos'] = array($firstMenuName => array('_UE_SECOND' => null)); $second['position'] = 'menuBar'; $second['caption'] = CBTxt::T($secondSubMenuName); $second['url'] = $secondSubMenuHref == '' ? "javascript: void( 0 );" : cbSef($secondSubMenuHref); $second['target'] = ''; $second['img'] = ''; $second['tooltip'] = ''; $this->addMenu($second); } } } // ----- VIEW MENU ----- $viewMenu = array(); $viewMenu['arrayPos'] = '_UE_MENU_VIEW'; $viewMenu['position'] = 'menuBar'; $viewMenu['caption'] = CBTxt::T('_UE_MENU_VIEW', 'View'); $this->addMenu($viewMenu); if ($_CB_framework->myId() > 0) { if ($_CB_framework->displayedUser() === null || $_CB_framework->myId() != $user->id && $_CB_framework->displayedUser() !== null) { // View My Profile: $myProfile = array(); $myProfile['arrayPos'] = array('_UE_MENU_VIEW' => array('_UE_MENU_VIEWMYPROFILE' => null)); $myProfile['position'] = 'menuBar'; $myProfile['caption'] = CBTxt::T('UE_MENU_VIEWMYPROFILE', 'View Your Profile'); $myProfile['url'] = $_CB_framework->userProfileUrl(); $myProfile['target'] = ''; $myProfile['img'] = '<span class="fa fa-home"></span> '; $myProfile['tooltip'] = CBTxt::T('UE_MENU_VIEWMYPROFILE_DESC', 'View your own profile'); $this->addMenu($myProfile); } } // ----- EDIT MENU ----- $editMenu = array(); $editMenu['arrayPos'] = '_UE_MENU_EDIT'; $editMenu['position'] = 'menuBar'; $editMenu['caption'] = CBTxt::T('_UE_MENU_EDIT', 'Edit'); $this->addMenu($editMenu); if (!cbCheckIfUserCanPerformUserTask($user->id, 'allowModeratorsUserEdit')) { if ($user->id == $_CB_framework->myId()) { $menuTexts = array('_UE_UPDATEPROFILE' => CBTxt::T('UE_UPDATEPROFILE', 'Update Your Profile'), '_UE_MENU_UPDATEPROFILE_DESC' => CBTxt::T('UE_MENU_UPDATEPROFILE_DESC', 'Change your profile settings')); } else { $menuTexts = array('_UE_UPDATEPROFILE' => CBTxt::T('UE_MOD_MENU_UPDATEPROFILE', 'Update user profile'), '_UE_MENU_UPDATEPROFILE_DESC' => CBTxt::T('UE_MOD_MENU_UPDATEPROFILE_DESC', 'Change profile settings of this user profile')); } // Update Profile: $updateProfile = array(); $updateProfile['arrayPos'] = array('_UE_MENU_EDIT' => array('_UE_UPDATEPROFILE' => null)); $updateProfile['position'] = 'menuBar'; $updateProfile['caption'] = $menuTexts['_UE_UPDATEPROFILE']; $updateProfile['url'] = $_CB_framework->userProfileEditUrl($userId); $updateProfile['target'] = ''; $updateProfile['img'] = '<span class="fa fa-edit"></span> '; $updateProfile['tooltip'] = $menuTexts['_UE_MENU_UPDATEPROFILE_DESC']; $this->addMenu($updateProfile); } // ----- MESSAGES MENU ----- $messagesMenu = array(); $messagesMenu['arrayPos'] = '_UE_MENU_MESSAGES'; $messagesMenu['position'] = 'menuBar'; $messagesMenu['caption'] = CBTxt::T('_UE_MENU_MESSAGES', 'Messages'); $this->addMenu($messagesMenu); if ($_CB_framework->myId() != $user->id && $_CB_framework->myId() > 0) { global $_CB_PMS; $resultArray = $_CB_PMS->getPMSlinks($user->id, $_CB_framework->myId(), '', '', 1); if (count($resultArray) > 0) { foreach ($resultArray as $res) { if (is_array($res)) { // Send Private Message: $sendMessage = array(); $sendMessage['arrayPos'] = array('_UE_MENU_MESSAGES' => array('_UE_PM_USER' => null)); $sendMessage['position'] = 'menuBar'; $sendMessage['caption'] = $res['caption']; // Already translated in CB Menu $sendMessage['url'] = cbSef($res['url']); $sendMessage['target'] = ''; $sendMessage['img'] = '<span class="fa fa-comment"></span> '; $sendMessage['tooltip'] = $res['tooltip']; // Already translated in CB Menu $this->addMenu($sendMessage); } } } } if ($ueConfig['allow_email_display'] != 4 && $_CB_framework->myId() != $user->id && $_CB_framework->myId() > 0) { switch ($ueConfig['allow_email_display']) { case 1: // Display Email only $caption = moscomprofilerHTML::emailCloaking(htmlspecialchars($user->email), 0); $url = "javascript: void( 0 );;"; $desc = CBTxt::T('UE_MENU_USEREMAIL_DESC', 'Email address of this user'); break; case 2: // Display Email with link $caption = moscomprofilerHTML::emailCloaking(htmlspecialchars($user->email), 1); $url = "javascript: void( 0 );;"; $desc = CBTxt::T('UE_MENU_SENDUSEREMAIL_DESC', 'Send an Email to this user'); break; case 3: // Display Email-to text with link to web-form // Display Email-to text with link to web-form default: $caption = CBTxt::T('UE_MENU_SENDUSEREMAIL', 'Send Email to User'); $url = $_CB_framework->viewUrl('emailuser', true, array('uid' => $userId)); $desc = CBTxt::T('UE_MENU_SENDUSEREMAIL_DESC', 'Send an Email to this user'); break; } // Send Email: $sendEmail = array(); $sendEmail['arrayPos'] = array('_UE_MENU_MESSAGES' => array('_UE_MENU_SENDUSEREMAIL' => null)); $sendEmail['position'] = 'menuBar'; $sendEmail['caption'] = $caption; $sendEmail['url'] = $url; $sendEmail['target'] = ''; $sendEmail['img'] = '<span class="fa fa-envelope"></span> '; $sendEmail['tooltip'] = $desc; $this->addMenu($sendEmail); } // ----- CONNECTIONS MENU ----- $connectionsMenu = array(); $connectionsMenu['arrayPos'] = '_UE_MENU_CONNECTIONS'; $connectionsMenu['position'] = 'menuBar'; $connectionsMenu['caption'] = CBTxt::T('_UE_MENU_CONNECTIONS', 'Connections'); $this->addMenu($connectionsMenu); if ($ueConfig['allowConnections'] && $_CB_framework->myId() > 0) { // Manage My Connections: $manageConnections = array(); $manageConnections['arrayPos'] = array('_UE_MENU_CONNECTIONS' => array('_UE_MENU_MANAGEMYCONNECTIONS' => null)); $manageConnections['position'] = 'menuBar'; $manageConnections['caption'] = CBTxt::T('UE_MENU_MANAGEMYCONNECTIONS', 'Manage Your Connections'); $manageConnections['url'] = $_CB_framework->viewUrl('manageconnections'); $manageConnections['target'] = ''; $manageConnections['img'] = '<span class="fa fa-users"></span> '; $manageConnections['tooltip'] = CBTxt::T('UE_MENU_MANAGEMYCONNECTIONS_DESC', 'Manage your existing connections and pending connections actions'); $this->addMenu($manageConnections); if ($_CB_framework->myId() != $user->id) { $cbConnection = new cbConnection((int) $_CB_framework->myId()); $cbUser =& CBuser::getInstance((int) $user->id, false); $connClass = null; $connLink = null; $connDesc = null; $connMsg = null; $connImg = null; $isConnection = $cbConnection->isConnected((int) $user->id); if ($isConnection) { $isApproved = $cbConnection->isConnectionApproved((int) $user->id); $isAccepted = $cbConnection->isConnectionAccepted((int) $user->id); } else { $isApproved = false; $isAccepted = false; } if (!$isConnection) { $connUrl = $_CB_framework->viewUrl('addconnection', true, array('connectionid' => (int) $user->id)); if ($ueConfig['useMutualConnections'] == 1) { $connClass = 'UE_ADDCONNECTIONREQUEST'; $connMsg = CBTxt::T('UE_ADDCONNECTIONREQUEST', 'Request Connection'); $connDesc = CBTxt::T('UE_ADDCONNECTIONREQUEST_DESC', 'Request a Connection to that user'); } else { $connClass = 'UE_ADDCONNECTION'; $connMsg = CBTxt::T('UE_ADDCONNECTION', 'Add Connection'); $connDesc = CBTxt::T('UE_ADDCONNECTION_DESC', 'Add a Connection to that user'); } if ($ueConfig['conNotifyType'] != 0) { cbValidator::loadValidation(); $tooltipTitle = sprintf(CBTxt::T('UE_CONNECTTO', 'Connect to %s'), $cbUser->getField('formatname', null, 'html', 'none', 'profile', 0, true)); $connectionInvitationMsg = CBTxt::T('UE_CONNECTIONINVITATIONMSG', 'Personalize your invitation to connect by adding a message that will be included with your connection.'); $tooltip = null; if ($connectionInvitationMsg) { $tooltip .= '<div class="form-group cb_form_line clearfix">' . $connectionInvitationMsg . '</div>'; } $tooltip .= '<form action="' . $connUrl . '" method="post" id="connOverForm" name="connOverForm" class="cb_form cbValidation">' . '<div class="form-group cb_form_line clearfix">' . '<label for="message" class="control-label">' . CBTxt::T('UE_MESSAGE', 'Message') . '</label>' . '<div class="cb_field">' . '<textarea cols="40" rows="8" name="message" class="form-control"></textarea>' . '</div>' . '</div>' . '<div class="form-group cb_form_line clearfix">' . '<input type="submit" class="btn btn-primary cbConnReqSubmit" value="' . htmlspecialchars(CBTxt::Th('UE_SENDCONNECTIONREQUEST', 'Request Connection')) . '"' . cbValidator::getSubmitBtnHtmlAttributes() . ' />' . ' <input type="button" id="cbConnReqCancel" class="btn btn-default cbConnReqCancel cbTooltipClose" value="' . htmlspecialchars(CBTxt::Th('UE_CANCELCONNECTIONREQUEST', 'Cancel')) . '" />' . '</div>' . '</form>'; $connLink = cbTooltip($ui, $tooltip, $tooltipTitle, 400, null, '<span class="fa fa-heart"></span> ' . CBTxt::Th($connMsg), 'javascript: void( 0 );', 'data-hascbtooltip="true" data-cbtooltip-modal="true"'); } else { $connLink = $connUrl; $connImg = '<span class="fa fa-heart"></span> '; } } else { if ($isAccepted) { $connUrl = $_CB_framework->viewUrl('removeconnection', true, array('connectionid' => (int) $user->id)); if ($isApproved) { $connClass = 'UE_REMOVECONNECTION'; $connMsg = CBTxt::T('UE_REMOVECONNECTION', 'Remove Connection'); $connDesc = CBTxt::T('UE_REMOVECONNECTION_DESC', 'Remove Connection to that user'); } else { $connClass = 'UE_REVOKECONNECTIONREQUEST'; $connMsg = CBTxt::T('UE_REVOKECONNECTIONREQUEST', 'Revoke Connection Request'); $connDesc = CBTxt::T('UE_REVOKECONNECTIONREQUEST_DESC', 'Cancel the Connection Request to that user'); } $js = "if ( typeof confirmSubmit != 'function' ) {" . "function confirmSubmit() {" . "if ( confirm( '" . addslashes(CBTxt::T('UE_CONFIRMREMOVECONNECTION', 'Are you sure you want to remove this connection?')) . "' ) ) {" . "return true;" . "} else {" . "return false;" . "}" . "};" . "}"; $_CB_framework->document->addHeadScriptDeclaration($js); $connLink = $connUrl . '" onclick="return confirmSubmit();'; $connImg = '<span class="fa fa-heart-o"></span> '; } else { $connClass = null; $connMsg = null; } } if ($connMsg) { // Request/Add/Remove/Revoke Connection: $connectionRequest = array(); $connectionRequest['arrayPos'] = array('_UE_MENU_CONNECTIONS' => array($connClass => null)); $connectionRequest['position'] = 'menuBar'; $connectionRequest['caption'] = $connMsg; $connectionRequest['url'] = $connLink; $connectionRequest['target'] = ''; $connectionRequest['img'] = $connImg; $connectionRequest['tooltip'] = $connDesc; $this->addMenu($connectionRequest); } } } // ----- MODERATE MENU ----- $moderateMenu = array(); $moderateMenu['arrayPos'] = '_UE_MENU_MODERATE'; $moderateMenu['position'] = 'menuBar'; $moderateMenu['caption'] = CBTxt::T('_UE_MENU_MODERATE', 'Moderate'); $this->addMenu($moderateMenu); if ($_CB_framework->myId() == $user->id) { if ($user->banned == 1 && $this->cbUserIsModerator == 0 && $ueConfig['allowUserBanning'] == 1) { // Request Unban: $requestUnban = array(); $requestUnban['arrayPos'] = array('_UE_MENU_MODERATE' => array('_UE_REQUESTUNBANPROFILE' => null)); $requestUnban['position'] = 'menuBar'; $requestUnban['caption'] = CBTxt::T('UE_REQUESTUNBANPROFILE', 'Submit Unban Request'); $requestUnban['url'] = $_CB_framework->viewUrl('banprofile', true, array('act' => 2, 'reportform' => 1, 'uid' => (int) $user->id)); $requestUnban['target'] = ''; $requestUnban['img'] = '<span class="fa fa-envelope"></span> '; $requestUnban['tooltip'] = CBTxt::T('UE_MENU_REQUESTUNBANPROFILE_DESC', 'Submit a request to the site moderator to unban your profile'); $this->addMenu($requestUnban); } } else { if ($ueConfig['allowUserReports'] == 1 && $this->cbUserIsModerator == 0 && $_CB_framework->myId() > 0) { // Report User: $reportUser = array(); $reportUser['arrayPos'] = array('_UE_MENU_MODERATE' => array('_UE_REPORTUSER' => null)); $reportUser['position'] = 'menuBar'; $reportUser['caption'] = CBTxt::T('UE_REPORTUSER', 'Report User'); $reportUser['url'] = $_CB_framework->viewUrl('reportuser', true, array('uid' => (int) $user->id)); $reportUser['target'] = ''; $reportUser['img'] = '<span class="fa fa-bullhorn"></span> '; $reportUser['tooltip'] = CBTxt::T('UE_MENU_REPORTUSER_DESC', 'Report this user to the site moderator so that he can take appropriate action'); $this->addMenu($reportUser); } if ($this->cbMyIsModerator == 1 && $this->cbUserIsModerator == 0) { $query = 'SELECT COUNT(*)' . "\n FROM " . $_CB_database->NameQuote('#__comprofiler_userreports') . "\n WHERE " . $_CB_database->NameQuote('reporteduser') . " = " . (int) $user->id . "\n AND " . $_CB_database->NameQuote('reportedstatus') . " = 0"; $_CB_database->setQuery($query); $pendingReports = $_CB_database->loadResult(); $query = 'SELECT COUNT(*)' . "\n FROM " . $_CB_database->NameQuote('#__comprofiler_userreports') . "\n WHERE " . $_CB_database->NameQuote('reporteduser') . " = " . (int) $user->id; $_CB_database->setQuery($query); $processedReports = $_CB_database->loadResult(); if ($ueConfig['allowUserBanning'] == 1) { if ($user->banned != 0) { // Unban Profile: $unbanUser = array(); $unbanUser['arrayPos'] = array('_UE_MENU_MODERATE' => array('_UE_UNBANPROFILE' => null)); $unbanUser['position'] = 'menuBar'; $unbanUser['caption'] = CBTxt::T('UE_UNBANPROFILE', 'Unban Profile'); $unbanUser['url'] = $_CB_framework->viewUrl('banprofile', true, array('act' => 0, 'reportform' => 0, 'uid' => (int) $user->id)); $unbanUser['target'] = ''; $unbanUser['img'] = '<span class="fa fa-check-circle-o"></span> '; $unbanUser['tooltip'] = CBTxt::T('UE_MENU_UNBANPROFILE_DESC', 'As Site Moderator: Unban this profile, making it visible to other users'); $this->addMenu($unbanUser); } else { // Ban Profile: $banUser = array(); $banUser['arrayPos'] = array('_UE_MENU_MODERATE' => array('_UE_BANPROFILE' => null)); $banUser['position'] = 'menuBar'; $banUser['caption'] = CBTxt::T('UE_BANPROFILE', 'Ban Profile'); $banUser['url'] = $_CB_framework->viewUrl('banprofile', true, array('act' => 1, 'uid' => (int) $user->id)); $banUser['target'] = ''; $banUser['img'] = '<span class="fa fa-ban"></span> '; $banUser['tooltip'] = CBTxt::T('UE_MENU_BANPROFILE_DESC', 'As Site Moderator: Ban this profile, making it invisible to other users'); $this->addMenu($banUser); } if ($user->bannedby) { // Ban History: $banHistory = array(); $banHistory['arrayPos'] = array('_UE_MENU_MODERATE' => array('_UE_MENU_BANPROFILE_HISTORY' => null)); $banHistory['position'] = 'menuBar'; $banHistory['caption'] = CBTxt::T('UE_MENU_BANPROFILE_HISTORY', 'Ban history'); $banHistory['url'] = $_CB_framework->viewUrl('moderatebans', true, array('act' => 2, 'uid' => (int) $user->id)); $banHistory['target'] = ''; $banHistory['img'] = '<span class="fa fa-book"></span> '; $banHistory['tooltip'] = CBTxt::T('UE_MENU_BANPROFILE_HISTORY_DESC', 'As Site Moderator: See ban history of this profile'); $this->addMenu($banHistory); } } if ($ueConfig['allowUserReports'] == 1 && $pendingReports > 0) { // View Pending Reports: $userReports = array(); $userReports['arrayPos'] = array('_UE_MENU_MODERATE' => array('_UE_VIEWUSERREPORTS' => null)); $userReports['position'] = 'menuBar'; $userReports['caption'] = CBTxt::T('UE_VIEWUSERREPORTS', 'View User Reports'); $userReports['url'] = $_CB_framework->viewUrl('viewreports', true, array('uid' => (int) $user->id)); $userReports['target'] = ''; $userReports['img'] = '<span class="fa fa-warning"></span> '; $userReports['tooltip'] = CBTxt::T('UE_MENU_VIEWUSERREPORTS_DESC', 'As Site Moderator: View User Reports for this user'); $this->addMenu($userReports); } elseif ($ueConfig['allowUserReports'] == 1 && $processedReports > 0) { // View Processed Reports: $userReports = array(); $userReports['arrayPos'] = array('_UE_MENU_MODERATE' => array('_UE_VIEWUSERREPORTS' => null)); $userReports['position'] = 'menuBar'; $userReports['caption'] = CBTxt::T('UE_MOD_MENU_VIEWOLDUSERREPORTS', 'View processed user reports'); $userReports['url'] = $_CB_framework->viewUrl('viewreports', true, array('act' => 1, 'uid' => (int) $user->id)); $userReports['target'] = ''; $userReports['img'] = '<span class="fa fa-warning"></span> '; $userReports['tooltip'] = CBTxt::T('UE_MOD_MENU_VIEWOLDUSERREPORTS_DESC', 'As site moderator: View processed user reports for this user'); $this->addMenu($userReports); } } } }
/** * render frontend about edit * * @param GroupTable $row * @param array $input * @param UserTable $user * @param CBplug_cbgroupjiveabout $plugin * @return string */ static function showAboutEdit( $row, $input, $user, $plugin ) { global $_CB_framework, $_PLUGINS; $pageTitle = CBTxt::T( 'About' ); $_CB_framework->setPageTitle( $pageTitle ); cbValidator::loadValidation(); initToolTip(); $return = null; $_PLUGINS->trigger( 'gj_onBeforeDisplayAboutEdit', array( &$return, &$row, &$input, $user ) ); $return .= '<div class="gjAboutEdit">' . '<form action="' . $_CB_framework->pluginClassUrl( $plugin->element, true, array( 'action' => 'about', 'func' => 'save', 'id' => (int) $row->get( 'id' ) ) ) . '" method="post" enctype="multipart/form-data" name="gjAboutEditForm" id="gjAboutEditForm" class="cb_form gjAboutEditForm form-auto cbValidation">' . ( $pageTitle ? '<div class="gjAboutEditTitle page-header"><h3>' . $pageTitle . '</h3></div>' : null ) . '<div class="cbft_textarea cbtt_textarea form-group cb_form_line clearfix cbtwolines">' . '<div class="cb_field col-sm-12">' . $input['about'] . getFieldIcons( null, 0, null, CBTxt::T( 'Optionally input a detailed description about this group.' ) ) . '</div>' . '</div>'; if ( ( ! CBGroupJive::isModerator( $user->get( 'id' ) ) ) && $plugin->params->get( 'groups_about_captcha', 0 ) ) { $_PLUGINS->loadPluginGroup( 'user' ); $captcha = $_PLUGINS->trigger( 'onGetCaptchaHtmlElements', array( false ) ); if ( ! empty( $captcha ) ) { $captcha = $captcha[0]; $return .= '<div class="form-group cb_form_line clearfix">' . '<label class="col-sm-3 control-label">' . CBTxt::T( 'Captcha' ) . '</label>' . '<div class="cb_field col-sm-9">' . ( isset( $captcha[0] ) ? $captcha[0] : null ) . '</div>' . '</div>' . '<div class="form-group cb_form_line clearfix">' . '<div class="cb_field col-sm-offset-3 col-sm-9">' . str_replace( 'inputbox', 'form-control', ( isset( $captcha[1] ) ? $captcha[1] : null ) ) . getFieldIcons( null, 1, null ) . '</div>' . '</div>'; } } $return .= '<div class="form-group cb_form_line clearfix cbtwolines">' . '<div class="col-sm-12">' . '<input type="submit" value="' . htmlspecialchars( CBTxt::T( 'Update About' ) ) . '" class="gjButton gjButtonSubmit btn btn-primary" ' . cbValidator::getSubmitBtnHtmlAttributes() . ' />' . ' <input type="button" value="' . htmlspecialchars( CBTxt::T( 'Cancel' ) ) . '" class="gjButton gjButtonCancel btn btn-default" onclick="cbjQuery.cbconfirm( \'' . addslashes( CBTxt::T( 'Are you sure you want to cancel? All unsaved data will be lost!' ) ) . '\' ).done( function() { window.location.href = \'' . $_CB_framework->pluginClassUrl( $plugin->_gjPlugin->element, false, array( 'action' => 'groups', 'func' => 'show', 'id' => (int) $row->get( 'id' ) ) ) . '\'; })" />' . '</div>' . '</div>' . cbGetSpoofInputTag( 'plugin' ) . '</form>' . '</div>'; $_PLUGINS->trigger( 'gj_onAfterDisplayAboutEdit', array( &$return, $row, $input, $user ) ); $_CB_framework->setMenuMeta(); echo $return; }
/** * formats variable array into data attribute string * * @param FieldTable $field * @param UserTable $user * @param string $output * @param string $reason * @param array $attributeArray * @return null|string */ protected function getDataAttributes($field, $user, $output, $reason, $attributeArray = array()) { if (!is_array($attributeArray)) { $attributeArray = array(); } $fieldMinLength = $this->getMinLength($field); if ($fieldMinLength > 0) { $attributeArray[] = cbValidator::getRuleHtmlAttributes('minlength', (int) $fieldMinLength); } $fieldMaxLength = $this->getMaxLength($field); if ($fieldMaxLength > 0) { $attributeArray[] = cbValidator::getRuleHtmlAttributes('maxlength', (int) $fieldMaxLength); } if (isset($field->_identicalTo)) { $attributeArray[] = cbValidator::getRuleHtmlAttributes('equalto', '#' . $field->_identicalTo); } if (count($attributeArray) > 0) { $attributes = ' ' . implode(' ', $attributeArray); } else { $attributes = null; } return $attributes; }
/** * render frontend video edit * * @param VideoTable $row * @param array $input * @param GroupTable $group * @param UserTable $user * @param CBplug_cbgroupjivevideo $plugin * @return string */ static function showVideoEdit( $row, $input, $group, $user, $plugin ) { global $_CB_framework, $_PLUGINS; $pageTitle = ( $row->get( 'id' ) ? CBTxt::T( 'Edit Video' ) : CBTxt::T( 'New Video' ) ); $_CB_framework->setPageTitle( $pageTitle ); cbValidator::loadValidation(); initToolTip(); $isModerator = CBGroupJive::isModerator( $user->get( 'id' ) ); $canModerate = ( CBGroupJive::getGroupStatus( $user, $group ) >= 2 ); $return = null; $_PLUGINS->trigger( 'gj_onBeforeDisplayVideoEdit', array( &$return, &$row, &$input, $group, $user ) ); $return .= '<div class="gjVideoEdit">' . '<form action="' . $_CB_framework->pluginClassUrl( $plugin->element, true, array( 'action' => 'video', 'func' => 'save', 'id' => (int) $row->get( 'id' ) ) ) . '" method="post" enctype="multipart/form-data" name="gjVideoEditForm" id="gjVideoEditForm" class="cb_form gjVideoEditForm form-auto cbValidation">' . ( $pageTitle ? '<div class="gjVideoEditTitle page-header"><h3>' . $pageTitle . '</h3></div>' : null ); if ( $isModerator || $canModerate || ( $row->get( 'id' ) && ( $row->get( 'published' ) != -1 ) ) || ( $group->params()->get( 'video', 1 ) != 2 ) ) { $return .= '<div class="cbft_select cbtt_select form-group cb_form_line clearfix">' . '<label for="published" class="col-sm-3 control-label">' . CBTxt::T( 'Published' ) . '</label>' . '<div class="cb_field col-sm-9">' . $input['published'] . getFieldIcons( null, 0, null, CBTxt::T( 'Select publish state of this video. Unpublished videos will not be visible to the public.' ) ) . '</div>' . '</div>'; } $return .= '<div class="cbft_text cbtt_input form-group cb_form_line clearfix">' . '<label for="title" class="col-sm-3 control-label">' . CBTxt::T( 'Title' ) . '</label>' . '<div class="cb_field col-sm-9">' . $input['title'] . getFieldIcons( null, 0, null, CBTxt::T( 'Optionally input a video title to display instead of url.' ) ) . '</div>' . '</div>'; if ( $row->get( 'id' ) && $row->exists() ) { $_CB_framework->outputCbJQuery( "$( '.gjVideoPlayer' ).mediaelementplayer();", 'media' ); $return .= '<div class="cbft_delimiter form-group cb_form_line clearfix">' . '<div class="cb_field col-sm-offset-3 col-sm-9">' . '<video width="640" height="360" style="width: 100%; height: 100%;" id="gjVideoPlayer' . (int) $row->get( 'id' ) . '" src="' . htmlspecialchars( $row->get( 'url' ) ) . '" type="' . htmlspecialchars( $row->mimeType() ) . '" controls="controls" preload="none" class="gjVideoPlayer"></video>' . '</div>' . '</div>'; } $return .= '<div class="cbft_text cbtt_input form-group cb_form_line clearfix">' . '<label for="url" class="col-sm-3 control-label">' . CBTxt::T( 'Video' ) . '</label>' . '<div class="cb_field col-sm-9">' . $input['url'] . getFieldIcons( null, ( ! $row->get( 'id' ) ? 1 : 0 ), null, CBTxt::T( 'Input the URL to the video to publish.' ) ) . ( $input['url_limits'] ? '<div class="help-block">' . $input['url_limits'] . '</div>' : null ) . '</div>' . '</div>' . '<div class="cbft_textarea cbtt_textarea form-group cb_form_line clearfix">' . '<label for="caption" class="col-sm-3 control-label">' . CBTxt::T( 'Caption' ) . '</label>' . '<div class="cb_field col-sm-9">' . $input['caption'] . getFieldIcons( null, 0, null, CBTxt::T( 'Optionally input a video caption.' ) ) . '</div>' . '</div>'; if ( $isModerator ) { $return .= '<div class="cbft_text cbtt_input form-group cb_form_line clearfix">' . '<label for="user_id" class="col-sm-3 control-label">' . CBTxt::T( 'Owner' ) . '</label>' . '<div class="cb_field col-sm-9">' . $input['user_id'] . getFieldIcons( null, 1, null, CBTxt::T( 'Input the video owner id. Video owner determines the creator of the video specified as User ID.' ) ) . '</div>' . '</div>'; } if ( ( ! $isModerator ) && $plugin->params->get( 'groups_video_captcha', 0 ) ) { $_PLUGINS->loadPluginGroup( 'user' ); $captcha = $_PLUGINS->trigger( 'onGetCaptchaHtmlElements', array( false ) ); if ( ! empty( $captcha ) ) { $captcha = $captcha[0]; $return .= '<div class="form-group cb_form_line clearfix">' . '<label class="col-sm-3 control-label">' . CBTxt::T( 'Captcha' ) . '</label>' . '<div class="cb_field col-sm-9">' . ( isset( $captcha[0] ) ? $captcha[0] : null ) . '</div>' . '</div>' . '<div class="form-group cb_form_line clearfix">' . '<div class="cb_field col-sm-offset-3 col-sm-9">' . str_replace( 'inputbox', 'form-control', ( isset( $captcha[1] ) ? $captcha[1] : null ) ) . getFieldIcons( null, 1, null ) . '</div>' . '</div>'; } } $return .= '<div class="form-group cb_form_line clearfix cbtwolines">' . '<div class="col-sm-offset-3 col-sm-9">' . '<input type="submit" value="' . htmlspecialchars( ( $row->get( 'id' ) ? CBTxt::T( 'Update Video' ) : CBTxt::T( 'Publish Video' ) ) ) . '" class="gjButton gjButtonSubmit btn btn-primary" ' . cbValidator::getSubmitBtnHtmlAttributes() . ' />' . ' <input type="button" value="' . htmlspecialchars( CBTxt::T( 'Cancel' ) ) . '" class="gjButton gjButtonCancel btn btn-default" onclick="cbjQuery.cbconfirm( \'' . addslashes( CBTxt::T( 'Are you sure you want to cancel? All unsaved data will be lost!' ) ) . '\' ).done( function() { window.location.href = \'' . $_CB_framework->pluginClassUrl( $plugin->_gjPlugin->element, false, array( 'action' => 'groups', 'func' => 'show', 'id' => (int) $group->get( 'id' ) ) ) . '\'; })" />' . '</div>' . '</div>' . ( ! $row->get( 'id' ) ? '<input type="hidden" id="group" name="group" value="' . (int) $group->get( 'id' ) . '" />' : null ) . cbGetSpoofInputTag( 'plugin' ) . '</form>' . '</div>'; $_PLUGINS->trigger( 'gj_onAfterDisplayVideoEdit', array( &$return, $row, $input, $group, $user ) ); $_CB_framework->setMenuMeta(); echo $return; }