/** * Displays specific plans * * @param int[]|null $plans * @param int[]|null $plansToPreselect * @param UserTable $user * @param string $introText * @return null|string */ public static function displaySpecificPlans($plans, $plansToPreselect, $user, $introText) { global $_CB_framework, $_PLUGINS, $ueConfig; $return = ''; $subscriptionsGUI = new cbpaidControllerUI(); if (is_array($plans) && count($plans) == 0) { $return .= '<div class="message">' . _UE_NOT_AUTHORIZED . ($user === null ? ' ' . _UE_DO_LOGIN : '') . '</div>'; } else { $subscriptionsGUI->setShowOnlyPlans($plans); $subscriptionsGUI->setSelectedPlans($plansToPreselect); if ($user === null) { // Show registration form: if ($_CB_framework->getCfg('allowUserRegistration') == '0' && (!isset($ueConfig['reg_admin_allowcbregistration']) || $ueConfig['reg_admin_allowcbregistration'] != '1')) { cbNotAuth(); return null; } if ($_CB_framework->myId()) { $return .= '<div class="error">' . _UE_ALREADY_LOGGED_IN . '</div>'; return self::displayWithTemplate($return); } $fieldsQuery = null; $_PLUGINS->loadPluginGroup('user'); $_PLUGINS->loadPluginGroup('user/plug_cbpaidsubscriptions/plugin'); $regErrorMSG = null; $results = $_PLUGINS->trigger('onBeforeRegisterForm', array('com_comprofiler', isset($ueConfig['emailpass']) ? $ueConfig['emailpass'] : '******', &$regErrorMSG, $fieldsQuery)); if ($_PLUGINS->is_errors()) { $return .= "<script type=\"text/javascript\">alert('" . addslashes($_PLUGINS->getErrorMSG(" ; ")) . "'); </script>\n"; $return .= $_PLUGINS->getErrorMSG("<br />"); return self::displayWithTemplate($return); } if (implode('', $results) != "") { $allResults = implode("</div><div>", $results); $return .= "<div>" . $allResults . "</div>"; return self::displayWithTemplate($return); } $loginOrRegister = CBPTXT::Th(cbpaidApp::settingsParams()->get('plansLoginOrRegisterText', "If you already have an account, please login first. Otherwise you need to register using this form.")); $userComplete = new UserTable(); $option = 'com_comprofiler'; $emailpass = isset($ueConfig['emailpass']) ? $ueConfig['emailpass'] : '******'; $regErrorMSG = $loginOrRegister . ' ' . $introText; ob_start(); $null = null; HTML_comprofiler::registerForm($option, $emailpass, $userComplete, $null, $regErrorMSG, true); $return .= ob_get_contents(); ob_end_clean(); } else { // User logged in: Show upgrade form: $itsmyself = true; $params = cbpaidApp::settingsParams(); $subTxt = CBPTXT::T($params->get('subscriptions_name', 'subscriptions')); $title = ucfirst($subTxt); if ($title) { $return .= '<div class="contentheading" id="cbregProfileTitle">' . $title . "</div>\n"; } if ($introText) { $return .= '<div class="contentpane">' . $introText . '</div>'; } $return .= $subscriptionsGUI->getShowSubscriptionUpgrades($user, $itsmyself); } $subscriptionsGUI->setShowOnlyPlans(null); } return self::displayWithTemplate($return); }
/** * plugin uninstaller with best effort depending on what it finds. * * @param int $id * @param string $option * @param int $client * @param string $action * @return boolean */ function uninstall($id, $option, $client = 0) { global $_CB_database; $db = false; if ($this->checkPluginGetXml($id, $option, $client)) { if ($this->i_xmldocument !== null && count($this->i_xmldocument->children()) > 0) { $cbInstallXML =& $this->i_xmldocument; // get the element name: $e =& $cbInstallXML->getElementByPath('name'); $this->elementName($e->data()); // $cleanedElementName = strtolower(str_replace(array(" ","."),array("","_"),$this->elementName())); // get the files element $files_element =& $cbInstallXML->getElementByPath('files'); if ($files_element) { if (count($files_element->children())) { foreach ($files_element->children() as $file) { if ($file->attributes("plugin")) { $this->elementSpecial($file->attributes("plugin")); break; } } $cleanedMainFileName = strtolower(str_replace(array(" ", "."), array("", "_"), $this->elementSpecial())); } // Is there an uninstallfile $uninstallfile_elemet =& $cbInstallXML->getElementByPath('uninstallfile'); if ($uninstallfile_elemet !== false) { if (is_file($this->i_elementdir . $uninstallfile_elemet->data())) { global $_PLUGINS; // needed for the require_once below ! require_once $this->i_elementdir . $uninstallfile_elemet->data(); $ret = call_user_func_array("plug_" . $cleanedMainFileName . "_uninstall", array()); if ($ret != '') { $this->setError(0, $ret); } } } $adminFS =& cbAdminFileSystem::getInstance(); foreach ($files_element->children() as $file) { // delete the files $filename = $file->data(); if (file_exists($this->i_elementdir . $filename)) { $parts = pathinfo($filename); $subpath = $parts['dirname']; if ($subpath != '' && $subpath != '.' && $subpath != '..') { //echo '<br />'. 'Deleting' .': '. $this->i_elementdir . $subpath; $result = $adminFS->deldir(_cbPathName($this->i_elementdir . $subpath . '/')); } else { //echo '<br />'. 'Deleting' .': '. $this->i_elementdir . $filename; $result = $adminFS->unlink(_cbPathName($this->i_elementdir . $filename, false)); } //echo intval( $result ); } } // Are there any SQL queries?? $query_element =& $cbInstallXML->getElementByPath('uninstall/queries'); if ($query_element !== false) { foreach ($query_element->children() as $query) { $_CB_database->setQuery(trim($query->data())); if (!$_CB_database->query()) { $this->setError(1, "SQL Error " . $_CB_database->stderr(true)); return false; } } } // Are there any Database statements ?? $db =& $cbInstallXML->getElementByPath('database'); if ($db !== false && count($db->children()) > 0) { cbimport('cb.sql.upgrader'); $sqlUpgrader = new CBSQLupgrader($_CB_database, false); //$sqlUpgrader->setDryRun( true ); $success = $sqlUpgrader->checkXmlDatabaseDescription($db, $cleanedMainFileName, 'drop', null); /* var_dump( $success ); echo "<br>\nERRORS: " . $sqlUpgrader->getErrors( "<br /><br />\n\n", "<br />\n" ); echo "<br>\nLOGS: " . $sqlUpgrader->getLogs( "<br /><br />\n\n", "<br />\n" ); exit; */ if (!$success) { $this->setError(1, "Plugin database XML SQL Error " . $sqlUpgrader->getErrors()); return false; } } // Delete tabs and private fields of plugin: $this->deleteTabAndFieldsOfPlugin($id); // remove XML file from front $xmlRemoveResult = $adminFS->unlink(_cbPathName($this->i_installfilename, false)); $filesRemoveResult = true; /* // define folders that should not be removed $sysFolders = array( 'content', 'search' ); if ( ! in_array( $row->folder, $sysFolders ) ) { */ // delete the non-system folders if empty if (count(cbReadDirectory($this->i_elementdir)) < 1) { $filesRemoveResult = $adminFS->deldir($this->i_elementdir); } /* } */ if (!$xmlRemoveResult) { HTML_comprofiler::showInstallMessage('Could not delete XML file: ' . _cbPathName($this->i_installfilename, false) . ' due to permission error. Please remove manually.', 'Uninstall - warning', $this->returnTo($option, 'showPlugins')); } if (!$filesRemoveResult) { HTML_comprofiler::showInstallMessage('Could not delete directory: ' . $this->i_elementdir . ' due to permission error. Please remove manually.', 'Uninstall - warning', $this->returnTo($option, 'showPlugins')); } } } $_CB_database->setQuery("DELETE FROM #__comprofiler_plugin WHERE id = " . (int) $id); if (!$_CB_database->query()) { $msg = $_CB_database->stderr; HTML_comprofiler::showInstallMessage('Cannot delete plugin database entry due to error: ' . $msg, 'Uninstall - error', $this->returnTo($option, 'showPlugins')); return false; } if ($this->i_xmldocument !== null && $db !== false && count($db->children()) > 0) { HTML_comprofiler::fixcbdbShowResults($sqlUpgrader, true, false, $success, array(), array(), $this->elementName(), 1, false); } return true; } return false; }
/** * @param string $option */ function saveRegistrationNOCHECKSLOL($option) { global $_CB_framework, $_CB_database, $ueConfig, $_POST, $_PLUGINS; // Check rights to access: if ($_CB_framework->getCfg('allowUserRegistration') == '0' && (!isset($ueConfig['reg_admin_allowcbregistration']) || $ueConfig['reg_admin_allowcbregistration'] != '1') || $_CB_framework->myId()) { cbNotAuth(); return; } if (!isset($ueConfig['emailpass'])) { $ueConfig['emailpass'] = '******'; } $userComplete = new moscomprofilerUser($_CB_database); // Pre-registration trigger: $_PLUGINS->loadPluginGroup('user'); $_PLUGINS->trigger('onStartSaveUserRegistration', array()); if ($_PLUGINS->is_errors()) { echo "<script type=\"text/javascript\">alert('" . addslashes($_PLUGINS->getErrorMSG()) . "'); </script>\n"; $oldUserComplete = new moscomprofilerUser($_CB_database); $userComplete->bindSafely($_POST, $_CB_framework->getUi(), 'register', $oldUserComplete); HTML_comprofiler::registerForm($option, $ueConfig['emailpass'], $userComplete, $_POST, $_PLUGINS->getErrorMSG("<br />")); return; } // Check if this user already registered with exactly this username and password: $username = cbGetParam($_POST, 'username', ''); $usernameExists = $userComplete->loadByUsername($username); if ($usernameExists) { $password = cbGetParam($_POST, 'password', '', _CB_ALLOWRAW); if ($userComplete->verifyPassword($password)) { $pwd_md5 = $userComplete->password; $userComplete->password = $password; $messagesToUser = activateUser($userComplete, 1, 'SameUserRegistrationAgain'); $userComplete->password = $pwd_md5; echo "\n<div>" . implode("</div>\n<div>", $messagesToUser) . "</div>\n"; return; } else { $msg = sprintf(_UE_USERNAME_ALREADY_EXISTS, $username); echo "<script type=\"text/javascript\">alert('" . addslashes($msg) . "'); </script>\n"; $oldUserComplete = new moscomprofilerUser($_CB_database); $userComplete->bindSafely($_POST, $_CB_framework->getUi(), 'register', $oldUserComplete); HTML_comprofiler::registerForm($option, $ueConfig['emailpass'], $userComplete, $_POST, htmlspecialchars($msg)); return; } } // Store and check terms and conditions accepted (not a field yet !!!!): if (isset($_POST['acceptedterms'])) { $userComplete->acceptedterms = (int) cbGetParam($_POST, 'acceptedterms', 0) == 1 ? 1 : 0; } else { $userComplete->acceptedterms = null; } if ($ueConfig['reg_enable_toc']) { if ($userComplete->acceptedterms != 1) { echo "<script type=\"text/javascript\">alert('" . addslashes(cbUnHtmlspecialchars(_UE_TOC_REQUIRED)) . "'); </script>\n"; $oldUserComplete = new moscomprofilerUser($_CB_database); $userComplete->bindSafely($_POST, $_CB_framework->getUi(), 'register', $oldUserComplete); HTML_comprofiler::registerForm($option, $ueConfig['emailpass'], $userComplete, $_POST, _UE_TOC_REQUIRED . '<br />'); return; } } // Set id to 0 for autoincrement and store IP address used for registration: $userComplete->id = 0; $userComplete->registeripaddr = cbGetIPlist(); // Store new user state: $saveResult = $userComplete->saveSafely($_POST, $_CB_framework->getUi(), 'register'); if ($saveResult === false) { echo "<script type=\"text/javascript\">alert('" . str_replace('\\\\n', '\\n', addslashes(strip_tags(str_replace('<br />', '\\n', $userComplete->getError())))) . "'); </script>\n"; HTML_comprofiler::registerForm($option, $ueConfig['emailpass'], $userComplete, $_POST, $userComplete->getError()); return; } if ($saveResult['ok'] === true) { $messagesToUser = activateUser($userComplete, 1, "UserRegistration"); } foreach ($saveResult['tabs'] as $res) { if ($res) { $messagesToUser[] = $res; } } if ($saveResult['ok'] === false) { echo "<script type=\"text/javascript\">alert('" . str_replace('\\\\n', '\\n', addslashes(strip_tags(str_replace('<br />', '\\n', $userComplete->getError())))) . "'); </script>\n"; HTML_comprofiler::registerForm($option, $ueConfig['emailpass'], $userComplete, $_POST, $userComplete->getError()); return; } $_PLUGINS->trigger('onAfterUserRegistrationMailsSent', array(&$userComplete, &$userComplete, &$messagesToUser, $ueConfig['reg_confirmation'], $ueConfig['reg_admin_approval'], true)); foreach ($saveResult['after'] as $res) { if ($res) { echo "\n<div>" . $res . "</div>\n"; } } if ($_PLUGINS->is_errors()) { echo $_PLUGINS->getErrorMSG(); HTML_comprofiler::registerForm($option, $ueConfig['emailpass'], $userComplete, $_POST, $_PLUGINS->getErrorMSG()); return; } echo "\n<div>" . implode("</div>\n<div>", $messagesToUser) . "</div>\n"; }
/** * Registers a new user * * @param UserTable $user * @param Hybrid_User_Profile $profile * @return bool */ private function register( $user, $profile ) { global $_CB_framework, $_PLUGINS, $ueConfig; if ( ! $profile->identifier ) { cbRedirect( $this->_returnUrl, CBTxt::T( 'PROVIDER_PROFILE_MISSING', '[provider] profile could not be found.', array( '[provider]' => $this->_providerName ) ), 'error' ); return false; } $mode = $this->params->get( $this->_provider . '_mode', 1, GetterInterface::INT ); $approve = $this->params->get( $this->_provider . '_approve', 0, GetterInterface::INT ); $confirm = $this->params->get( $this->_provider . '_confirm', 0, GetterInterface::INT ); $usergroup = $this->params->get( $this->_provider . '_usergroup', null, GetterInterface::STRING ); $approval = ( $approve == 2 ? $ueConfig['reg_admin_approval'] : $approve ); $confirmation = ( $confirm == 2 ? $ueConfig['reg_confirmation'] : $confirm ); $usernameFormat = $this->params->get( $this->_provider . '_username', null, GetterInterface::STRING ); $username = null; $dummyUser = new UserTable(); if ( $usernameFormat ) { $extras = array( 'provider' => $this->_provider, 'provider_id' => $this->_providerId, 'provider_name' => $this->_providerName ); foreach ( (array) $profile as $k => $v ) { if ( ( ! is_array( $v ) ) && ( ! is_object( $v ) ) ) { $k = 'profile_' . $k; $extras[$k] = $v; } } $username = preg_replace( '/[<>\\\\"%();&\']+/', '', trim( cbReplaceVars( $usernameFormat, $user, true, false, $extras, false ) ) ); } else { if ( isset( $profile->username ) ) { $username = preg_replace( '/[<>\\\\"%();&\']+/', '', trim( $profile->username ) ); } if ( ( ! $username ) || ( $username && $dummyUser->loadByUsername( $username ) ) ) { $username = preg_replace( '/[<>\\\\"%();&\']+/', '', trim( $profile->displayName ) ); } } if ( ( ! $username ) || ( $username && $dummyUser->loadByUsername( $username ) ) ) { $username = (string) $profile->identifier; } if ( $mode == 2 ) { $user->set( 'email', $profile->email ); } else { if ( $dummyUser->loadByUsername( $username ) ) { cbRedirect( $this->_returnUrl, CBTxt::T( 'UE_USERNAME_NOT_AVAILABLE', "The username '[username]' is already in use.", array( '[username]' => htmlspecialchars( $username ) ) ), 'error' ); return false; } if ( ! $this->email( $user, $profile ) ) { return false; } if ( $dummyUser->loadByEmail( $user->get( 'email' ) ) ) { cbRedirect( $this->_returnUrl, CBTxt::T( 'UE_EMAIL_NOT_AVAILABLE', "The email '[email]' is already in use.", array( '[email]' => htmlspecialchars( $user->get( 'email' ) ) ) ), 'error' ); return false; } $this->avatar( $user, $profile, $mode ); if ( ! $usergroup ) { $gids = array( (int) $_CB_framework->getCfg( 'new_usertype' ) ); } else { $gids = cbToArrayOfInt( explode( '|*|', $usergroup ) ); } $user->set( 'gids', $gids ); $user->set( 'sendEmail', 0 ); $user->set( 'registerDate', $_CB_framework->getUTCDate() ); $user->set( 'password', $user->hashAndSaltPassword( $user->getRandomPassword() ) ); $user->set( 'registeripaddr', cbGetIPlist() ); if ( $approval == 0 ) { $user->set( 'approved', 1 ); } else { $user->set( 'approved', 0 ); } if ( $confirmation == 0 ) { $user->set( 'confirmed', 1 ); } else { $user->set( 'confirmed', 0 ); } if ( ( $user->get( 'confirmed' ) == 1 ) && ( $user->get( 'approved' ) == 1 ) ) { $user->set( 'block', 0 ); } else { $user->set( 'block', 1 ); } } if ( $profile->firstName || $profile->lastName ) { $user->set( 'name', trim( $profile->firstName . ' ' . $profile->lastName ) ); } elseif ( $profile->displayName ) { $user->set( 'name', trim( $profile->displayName ) ); } else { $user->set( 'name', $username ); } switch ( $ueConfig['name_style'] ) { case 2: $lastName = strrpos( $user->get( 'name' ), ' ' ); if ( $lastName !== false ) { $user->set( 'firstname', substr( $user->get( 'name' ), 0, $lastName ) ); $user->set( 'lastname', substr( $user->get( 'name' ), ( $lastName + 1 ) ) ); } else { $user->set( 'firstname', '' ); $user->set( 'lastname', $user->get( 'name' ) ); } break; case 3: $middleName = strpos( $user->get( 'name' ), ' ' ); $lastName = strrpos( $user->get( 'name' ), ' ' ); if ( $lastName !== false ) { $user->set( 'firstname', substr( $user->get( 'name' ), 0, $middleName ) ); $user->set( 'lastname', substr( $user->get( 'name' ), ( $lastName + 1 ) ) ); if ( $middleName !== $lastName ) { $user->set( 'middlename', substr( $user->get( 'name' ), ( $middleName + 1 ), ( $lastName - $middleName - 1 ) ) ); } else { $user->set( 'middlename', '' ); } } else { $user->set( 'firstname', '' ); $user->set( 'lastname', $user->get( 'name' ) ); } break; } $user->set( 'username', $username ); $user->set( $this->_providerField, $profile->identifier ); $this->fields( $user, $profile, $mode ); if ( $mode == 2 ) { foreach ( $user as $k => $v ) { $_POST[$k] = $v; } $emailPass = ( isset( $ueConfig['emailpass'] ) ? $ueConfig['emailpass'] : '******' ); $regErrorMSG = null; if ( ( ( $_CB_framework->getCfg( 'allowUserRegistration' ) == '0' ) && ( ( ! isset( $ueConfig['reg_admin_allowcbregistration'] ) ) || $ueConfig['reg_admin_allowcbregistration'] != '1' ) ) ) { $msg = CBTxt::T( 'UE_NOT_AUTHORIZED', 'You are not authorized to view this page!' ); } else { $msg = null; } $_PLUGINS->loadPluginGroup( 'user' ); $_PLUGINS->trigger( 'onBeforeRegisterFormRequest', array( &$msg, $emailPass, &$regErrorMSG ) ); if ( $msg ) { $_CB_framework->enqueueMessage( $msg, 'error' ); return false; } $fieldsQuery = null; $results = $_PLUGINS->trigger( 'onBeforeRegisterForm', array( 'com_comprofiler', $emailPass, &$regErrorMSG, $fieldsQuery ) ); if ( $_PLUGINS->is_errors() ) { $_CB_framework->enqueueMessage( $_PLUGINS->getErrorMSG( '<br />' ), 'error' ); return false; } if ( implode( '', $results ) != '' ) { $return = '<div class="cb_template cb_template_' . selectTemplate( 'dir' ) . '">' . '<div>' . implode( '</div><div>', $results ) . '</div>' . '</div>'; echo $return; return false; } $_CB_framework->enqueueMessage( CBTxt::T( 'PROVIDER_SIGN_UP_INCOMPLETE', 'Your [provider] sign up is incomplete. Please complete the following.', array( '[provider]' => $this->_providerName ) ) ); HTML_comprofiler::registerForm( 'com_comprofiler', $emailPass, $user, $_POST, $regErrorMSG ); return false; } else { $_PLUGINS->trigger( 'onBeforeUserRegistration', array( &$user, &$user ) ); if ( $user->store() ) { if ( $user->get( 'confirmed' ) == 0 ) { $user->store(); } $messagesToUser = activateUser( $user, 1, 'UserRegistration' ); $_PLUGINS->trigger( 'onAfterUserRegistration', array( &$user, &$user, true ) ); if ( $user->get( 'block' ) == 1 ) { $return = '<div class="cb_template cb_template_' . selectTemplate( 'dir' ) . '">' . '<div>' . implode( '</div><div>', $messagesToUser ) . '</div>' . '</div>'; echo $return; } else { return true; } } cbRedirect( $this->_returnUrl, CBTxt::T( 'SIGN_UP_WITH_PROVIDER_FAILED', 'Sign up with [provider] failed. Error: [error]', array( '[provider]' => $this->_providerName, '[error]' => $user->getError() ) ), 'error' ); return false; } }
/** * Writes a list of the defined modules * @param array An array of category objects */ static function showPlugins( &$rows, &$pageNav, $option, &$lists, $search ) { global $_CB_framework, $_PLUGINS; HTML_comprofiler::secureAboveForm('showPlugins'); outputCbTemplate( 2 ); outputCbJs( 2 ); initToolTip( 2 ); global $_CB_Backend_Title; $_CB_Backend_Title = array( 0 => array( 'cbicon-48-plugins', htmlspecialchars( CBTxt::T('CB Plugin Manager') ) . ' <small><small> <a href="#getplugins">' . htmlspecialchars( CBTxt::T('Get Plugins') ) . '</a></small></small>' . ' ' . ' <small><small> <a href="#install">' . htmlspecialchars( CBTxt::T('Install Plugin') ) . '</a></small></small>' ) ); HTML_comprofiler::_saveOrderJs( 'savepluginorder' ); ob_start(); ?> function submitbutton3(pressbutton) { var form = document.adminForm_dir; // do field validation if (form.userfile.value == ""){ alert('<?php echo addslashes( CBTxt::T('Please select a directory') ); ?>'); } else { form.submit(); } } <?php $js = ob_get_contents(); ob_end_clean(); $_CB_framework->document->addHeadScriptDeclaration( $js ); ?> <form action="<?php echo $_CB_framework->backendUrl( 'index.php' ); ?>" method="post" name="adminForm"> <table class="adminheading" style="width:100%"> <tr> <td style="width:80%"> <?php echo htmlspecialchars( CBTxt::T('Filter') ); ?>: <input type="text" name="search" value="<?php echo htmlspecialchars( $search );?>" class="text_area" onChange="document.adminForm.submit();" /> </td> <td align="right"> <?php echo $lists['type'];?> </td> </tr> </table> <table class="adminlist"> <thead> <tr> <th width="20"><?php echo htmlspecialchars( CBTxt::T('#') ); ?></th> <th width="20"> <input type="checkbox" name="toggle" value="" <?php echo 'onclick="checkAll(' . count( $rows ) . ');"';?> /> </th> <th class="title"> <?php echo htmlspecialchars( CBTxt::T('Plugin Name') ); ?> </th> <th nowrap="nowrap" width="5%"> <?php echo htmlspecialchars( CBTxt::T('Installed') ); ?> </th> <th nowrap="nowrap" width="5%"> <?php echo htmlspecialchars( CBTxt::T('Published') ); ?> </th> <th colspan="2" nowrap="nowrap" width="5%"> <?php echo htmlspecialchars( CBTxt::T('Reorder') ); ?> </th> <th width="2%"> <?php echo htmlspecialchars( CBTxt::T('Order') ); ?> </th> <th width="4%"> <a href="javascript: cbsaveorder( <?php echo count( $rows )-1; ?> )"><img src="../components/com_comprofiler/plugin/templates/luna/images/mini-icons/icon-16-filesave.png" border="0" width="16" height="16" alt="<?php echo htmlspecialchars( CBTxt::T('Save Order') ); ?>" /></a> </th> <th nowrap="nowrap" align="left" width="10%"> <?php echo htmlspecialchars( CBTxt::T('Access') ); ?> </th> <th nowrap="nowrap" align="left" width="10%"> <?php echo htmlspecialchars( CBTxt::T('Type') ); ?> </th> <th nowrap="nowrap" align="left" width="10%"> <?php echo htmlspecialchars( CBTxt::T('Directory') ); ?> </th> </tr> </thead> <tbody> <?php $k = 0; for ($i=0, $n=count( $rows ); $i < $n; $i++) { $row = &$rows[$i]; $xmlfile = $_PLUGINS->getPluginXmlPath( $row ); $filesInstalled = file_exists($xmlfile); $link = $_CB_framework->backendUrl( "index.php?option=com_comprofiler&task=editPlugin&cid=$row->id" ); //Access if ( !$row->access ) { $color_access = 'style="color: green;"'; $task_access = 'accessregistered'; } else if ( $row->access == 1 ) { $color_access = 'style="color: red;"'; $task_access = 'accessspecial'; } else { $color_access = 'style="color: black;"'; $task_access = 'accesspublic'; } $access = ' <a href="javascript: void(0);" onclick="return listItemTask(\'cb'. $i .'\',\''. $task_access .'\')" '. $color_access .'> '. $row->groupname .' </a>'; //Checked Out if ( $filesInstalled && $row->checked_out ) { $hover = ''; $date = cbFormatDate( $row->checked_out_time ); $checked_out_text = '<table>'; $checked_out_text .= '<tr><td>'. addslashes($row->editor) .'</td></tr>'; $checked_out_text .= '<tr><td>'. $date .'</td></tr>'; $checked_out_text .= '</table>'; $hover = 'onMouseOver="return overlib(\''. htmlspecialchars( $checked_out_text ) .'\', CAPTION, \'Checked Out\', BELOW, RIGHT);" onMouseOut="return nd();"'; if ( checkJversion() == 2 ) { $checked_img = 'templates/hathor/images/admin/checked_out.png'; } else { $checked_img = 'images/checked_out.png'; } $checked = '<img src="'. $checked_img .'" '. $hover .'/>'; } else { $checked = '<input type="checkbox" id="cb'.$i.'" name="cid[]" value="'.$row->id.'" onclick="isChecked(this.checked);" />'; } $imgpath='../components/com_comprofiler/images/'; //Installedg $instImg = $filesInstalled ? 'tick.png' : 'publish_x.png'; $instAlt = htmlspecialchars( $filesInstalled ? CBTxt::T('Installed') : CBTxt::T('Plugin Files missing') ); $installed = '<img src="' . $imgpath . $instImg .'" border="0" alt="'. $instAlt .'" title="'. $instAlt .'" />'; //Published $img = $row->published ? 'publish_g.png' : 'publish_x.png'; $task = $row->published ? 'unpublishPlugin' : 'publishPlugin'; $alt = $row->published ? CBTxt::T('Published') : CBTxt::T('Unpublished'); $action = $row->published ? CBTxt::T('Unpublish Item') : CBTxt::T('Publish item'); if ( ( $row->type == "language" ) && $row->published ) { $published = '<img src="' . $imgpath . 'publish_g.png" border="0" alt="' . htmlspecialchars( CBTxt::T('Published') ) . '" title="' . htmlspecialchars( CBTxt::T('language plugins cannot be unpublished, only uninstalled') ) . '" />'; } elseif ( ( $row->id == 1 ) && $row->published ) { $published = '<img src="' . $imgpath . 'publish_g.png" border="0" alt="' . htmlspecialchars( CBTxt::T('Published') ) . '" title="' . htmlspecialchars( CBTxt::T('CB core plugin cannot be unpublished') ) . '" />'; } else { $published = '<a href="javascript: void(0);" onclick="return listItemTask(\'cb'. $i .'\',\''. $task .'\')" title="'. htmlspecialchars( $action ) .'"> <img src="'. $imgpath . $img .'" border="0" alt="'. htmlspecialchars( $alt ) .'" /> </a>'; } //Backend plugin menu: $backendPluginMenus = array(); if ( isset( $row->backend_menu ) && $row->backend_menu ) { $backend = explode( ",", $row->backend_menu ); foreach ( $backend as $backendAction ) { $backendActionParts = explode( ":", $backendAction ); $backendActionLink = $_CB_framework->backendUrl( "index.php?option=com_comprofiler&task=pluginmenu&pluginid=$row->id&menu=$backendActionParts[1]" ); $backendPluginMenus[] = ' [<a href="' . $backendActionLink . '">' . $backendActionParts[0] . '</a>] '; } } ?> <tr class="<?php echo "row$k"; ?>"> <td align="right"><?php echo $i + 1 + $pageNav->limitstart ?></td> <td> <?php echo $checked; ?> </td> <td> <?php if ( ($row->checked_out && ( $row->checked_out != $_CB_framework->myId() )) || !$filesInstalled ) { if ( ! $filesInstalled ) { echo '<span title="' . $instAlt , '">'; } echo $row->name; if ( ! $filesInstalled ) { echo "</span>"; } } else { ?> <a href="<?php echo $link; ?>"> <?php echo htmlspecialchars( $row->name ); ?> </a> <?php echo implode( '', $backendPluginMenus ); } ?> </td> <td align="center"> <?php echo $installed;?> </td> <td align="center"> <?php echo $published;?> </td> <td> <?php if (($i > 0 || ($i+$pageNav->limitstart > 0)) && $row->type == @$rows[$i-1]->type) { ?> <a href="#reorder" onClick="return listItemTask('cb<?php echo $i;?>','orderupPlugin')"> <img src="../components/com_comprofiler/plugin/templates/luna/images/mini-icons/icon-12-uparrow.png" width="12" height="12" border="0" alt="<?php echo htmlspecialchars( CBTxt::T('Move Up') ); ?>" /> </a> <?php } ?> </td> <td> <?php if (($i < $n-1 || $i+$pageNav->limitstart < $pageNav->total-1) && $row->type == @$rows[$i+1]->type) { ?> <a href="#reorder" onClick="return listItemTask('cb<?php echo $i;?>','orderdownPlugin')"> <img src="../components/com_comprofiler/plugin/templates/luna/images/mini-icons/icon-12-downarrow.png" width="12" height="12" border="0" alt="<?php echo htmlspecialchars( CBTxt::T('Move Down') ); ?>" /> </a> <?php } ?> </td> <td align="center" colspan="2"> <input type="text" name="order[]" size="5" value="<?php echo $row->ordering; ?>" class="text_area" style="text-align: center" /> </td> <td align="left"> <?php echo $access;?> </td> <td align="left" nowrap="nowrap"> <?php echo $row->type;?> </td> <td align="left" nowrap="nowrap"> <?php if ( ! $filesInstalled ) { echo '<span style="text-decoration:line-through" title="' . $instAlt , '">'; } echo $row->element; if ( ! $filesInstalled ) { echo "</span>"; } ?> </td> </tr> <?php $k = 1 - $k; } ?> </tbody> <tfoot> <tr> <th align="center" colspan="12"> <?php echo $pageNav->getListFooter(); ?></th> </tr> </tfoot> </table> <input type="hidden" name="option" value="<?php echo $option;?>" /> <input type="hidden" name="task" value="showPlugins" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="hidemainmenu" value="0" /> <?php echo cbGetSpoofInputTag( 'plugin' ); ?> </form> <div style="clear:both; margin:20px 0px;"> <table class="adminheading"> <tr> <th class="install"> <a name="getplugins"><?php echo htmlspecialchars( CBTxt::T('Get Plugins') ); ?></a> </th> </tr> <tr> <td align="left" style="padding-bottom:10px;"> <a href="http://www.joomlapolis.com/cb-solutions" target="_blank"><?php echo htmlspecialchars( CBTxt::T('Click here to see more CB Plugins (Languages, Fields, Tabs, Signup-Connect, Paid Memberships and over 30 more) by CB Team at joomlapolis.com') ); ?></a> </td> </tr> <tr> <td align="left" style="padding-bottom:10px;"> <a href="http://www.joomlapolis.com/cb-solutions/directory" target="_blank"><?php echo htmlspecialchars( CBTxt::T('Click here to see CB Directory listing hundreds of CB extensions at joomlapolis.com') ); ?></a> </td> </tr> <tr> <td align="left" style="padding-bottom:10px;"> <a href="http://extensions.joomla.org/extensions/clients-a-communities/communities/210" target="_blank"><?php echo htmlspecialchars( CBTxt::T('Click here to Check our CB listing on JED and find more third-party free add-ons for your website') ); ?></a> </td> </tr> </table> </div> <div style="clear:both;"> <table class="adminheading"> <tr> <th class="install"> <a name="install"><?php echo htmlspecialchars( CBTxt::T('Install New Plugin') ); ?></a> </th> </tr> </table> <form enctype="multipart/form-data" action="<?php echo $_CB_framework->backendUrl( 'index.php' ); ?>" method="post" name="filename"> <table class="adminform"> <tr> <th> <?php echo htmlspecialchars( CBTxt::T('Upload Package File') ); ?> </th> </tr> <tr> <td align="left"> <?php echo htmlspecialchars( CBTxt::T('Package File:') ); ?> <input class="text_area" name="userfile" type="file" size="70"/> <input class="button" type="submit" value="<?php echo htmlspecialchars( CBTxt::T('Upload File & Install') ); ?>" /> <?php echo CBTxt::P( 'Maximum upload size: <strong>[filesize]</strong> <em>(upload_max_filesize setting in file [php.ini] )</em>', array( '[filesize]' => ini_get( 'upload_max_filesize' ), '[php.ini]' => ( is_callable( 'php_ini_loaded_file' ) && php_ini_loaded_file() ? htmlspecialchars( php_ini_loaded_file() ) : 'php.ini' ) ) ); ?> </td> </tr> </table> <input type="hidden" name="task" value="installPluginUpload"/> <input type="hidden" name="option" value="com_comprofiler"/> <input type="hidden" name="client" value=""/> <?php echo cbGetSpoofInputTag( 'plugin' ); ?> </form> <br /> <form enctype="multipart/form-data" action="<?php echo $_CB_framework->backendUrl( 'index.php' ); ?>" method="post" name="adminForm_dir"> <table class="adminform"> <tr> <th> <?php echo htmlspecialchars( CBTxt::T('Install from directory') ); ?> </th> </tr> <tr> <td align="left"> <?php echo htmlspecialchars( CBTxt::T('Install directory') ); ?>: <input type="text" name="userfile" class="text_area" size="65" value=""/> <input type="button" class="button" value="<?php echo htmlspecialchars( CBTxt::T('Install') ); ?>" onclick="submitbutton3()" /> </td> </tr> </table> <input type="hidden" name="task" value="installPluginDir" /> <input type="hidden" name="option" value="com_comprofiler"/> <input type="hidden" name="client" value=""/> <?php echo cbGetSpoofInputTag( 'plugin' ); ?> </form> <br /> <form enctype="multipart/form-data" action="<?php echo $_CB_framework->backendUrl( 'index.php' ); ?>" method="post" name="adminForm_URL"> <table class="adminform"> <tr> <th> <?php echo htmlspecialchars( CBTxt::T('Install package from web (http/https)') ); ?> </th> </tr> <tr> <td align="left"> <?php echo htmlspecialchars( CBTxt::T('Installation package URL') ); ?>: <input type="text" name="userfile" class="text_area" size="65" value=""/> <input class="button" type="submit" value="<?php echo htmlspecialchars( CBTxt::T('Download Package & Install') ); ?>" /> </td> </tr> </table> <input type="hidden" name="task" value="installPluginURL" /> <input type="hidden" name="option" value="com_comprofiler"/> <input type="hidden" name="client" value=""/> <?php echo cbGetSpoofInputTag( 'plugin' ); ?> </form> <br /> <table class="content"> <?php if (!is_callable(array("JFile","write")) || ($_CB_framework->getCfg('ftp_enable') != 1)) { writableCell( 'components/com_comprofiler/plugin/user' ); // writableCell( 'components/com_comprofiler/plugin/fieldtypes' ); writableCell( 'components/com_comprofiler/plugin/templates' ); writableCell( 'components/com_comprofiler/plugin/language' ); } writableCell( 'media' ); ?> </table> </div> <?php }
function manageConnections($userid) { global $_CB_framework, $ueConfig; if(!$ueConfig['allowConnections']) { echo _UE_FUNCTIONALITY_DISABLED; return; } if ( $_CB_framework->myId() != $userid || $_CB_framework->myId() == 0) { cbNotAuth(); return; } $cbCon = new cbConnection( $userid ); $connections = $cbCon->getActiveConnections( $userid ); $tabs = new cbTabs( 0, $_CB_framework->getUi() ); $tabs->element = ''; $pagingParams = $tabs->_getPaging( array(), array( 'connections_' ) ); $perpage = 20; //TBD unhardcode and get the code below better $total = $cbCon->getConnectionsCount( $userid, true ); if ( $pagingParams["connections_limitstart"] === null ) { $pagingParams["connections_limitstart"] = 0; } if ( $pagingParams["connections_limitstart"] > $total ) { $pagingParams["connections_limitstart"] = 0; } $offset = ( $pagingParams["connections_limitstart"] ? (int) $pagingParams["connections_limitstart"] : 0 ); $connections = $cbCon->getActiveConnections( $userid, $offset, $perpage ); $actions = $cbCon->getPendingConnections( $userid ); $connecteds = $cbCon->getConnectedToMe( $userid ); HTML_comprofiler::manageConnections( $connections, $actions, $total, $tabs, $pagingParams, $perpage, $connecteds ); }
function drawUsersList( $uid, $listid, $searchFormValuesRAW ) { global $_CB_database, $_CB_framework, $ueConfig, $Itemid, $_PLUGINS; $search = null; $searchGET = cbGetParam( $searchFormValuesRAW, 'search' ); $limitstart = (int) cbGetParam( $searchFormValuesRAW, 'limitstart', 0 ); $searchmode = (int) cbGetParam( $searchFormValuesRAW, 'searchmode', 0 ); $randomParam = (int) cbGetParam( $searchFormValuesRAW, 'rand', 0 ); // old search on formated name: /* if ( $searchPOST || count( $_POST ) ) { // simple spoof check security cbSpoofCheck( 'usersList' ); if ( cbGetParam( $searchFormValuesRAW, "action" ) == "search" ) { $search = $searchPOST; } } else if ( isset( $searchFormValuesRAW['limitstart'] ) ) { $search = stripslashes( $searchGET ); } */ // get my user and gets the list of user lists he is allowed to see (ACL): $myCbUser =& CBuser::getInstance( $uid ); if ( $myCbUser === null ) { $myCbUser =& CBuser::getInstance( null ); } $myUser =& $myCbUser->getUserData(); /* $myUser = new moscomprofilerUser( $_CB_database ); if ( $uid ) { $myUser->load( (int) $uid ); } */ $useraccessgroupSQL = " AND useraccessgroupid IN (".implode(',',getChildGIDS(userGID($uid))).")"; $_CB_database->setQuery( "SELECT listid, title FROM #__comprofiler_lists WHERE published=1" . $useraccessgroupSQL . " ORDER BY ordering" ); $plists = $_CB_database->loadObjectList(); $lists = array(); $publishedlists = array(); for ( $i=0, $n=count( $plists ); $i < $n; $i++ ) { $plist =& $plists[$i]; $listTitleNoHtml = strip_tags( cbReplaceVars( getLangDefinition( $plist->title ), $myUser, false, false ) ); $publishedlists[] = moscomprofilerHTML::makeOption( $plist->listid, $listTitleNoHtml ); } // select either list selected or default list to which he has access (ACL): if ( $listid == 0 ) { $_CB_database->setQuery( "SELECT listid FROM #__comprofiler_lists " . "\n WHERE `default`=1 AND published=1" . $useraccessgroupSQL ); $listid = (int) $_CB_database->loadresult(); if ( $listid == 0 && ( count( $plists ) > 0 ) ) { $listid = (int) $plists[0]->listid; } } if ( ! ( $listid > 0 ) ) { echo _UE_NOLISTFOUND; return; } // generates the drop-down list of lists: if ( count( $plists ) > 1 ) { $lists['plists'] = moscomprofilerHTML::selectList( $publishedlists, 'listid', 'class="inputbox" size="1" onchange="this.form.submit();"', 'value', 'text', $listid, 1 ); } // loads the list record: $row = new moscomprofilerLists( $_CB_database ); if ( ( ! $row->load( (int) $listid ) ) || ( $row->published != 1 ) ) { echo _UE_LIST_DOES_NOT_EXIST; return; } if ( ! allowAccess( $row->useraccessgroupid,'RECURSE', userGID($uid) ) ) { echo _UE_NOT_AUTHORIZED; return; } $params = new cbParamsBase( $row->params ); $hotlink_protection = $params->get( 'hotlink_protection', 0 ); if ( $hotlink_protection == 1 ) { if ( ( $searchGET !== null ) || $limitstart ) { cbSpoofCheck( 'usersList', 'GET' ); } } $limit = (int) $params->get( 'list_limit' ); if ( $limit == 0 ) { $limit = (int) $ueConfig['num_per_page']; } $showPaging = $params->get( 'list_paging', 1 ); if ( $showPaging != 1 ) { $limitstart = 0; } $isModerator = isModerator( $_CB_framework->myId() ); $_PLUGINS->loadPluginGroup( 'user' ); // $plugSearchFieldsArray = $_PLUGINS->trigger( 'onStartUsersList', array( &$listid, &$row, &$search, &$limitstart, &$limit ) ); $_PLUGINS->trigger( 'onStartUsersList', array( &$listid, &$row, &$search, &$limitstart, &$limit ) ); // handles the users allowed to be listed in the list by ACL: $allusergids = array(); $usergids = explode( ',', $row->usergroupids ); /* This was a bug tending to list admins when "public backend" was checked, and all frontend users when "public backend was checked. Now just ignore them: foreach( $usergids AS $usergid ) { $allusergids[] = $usergid; if ($usergid==29 || $usergid==30) { $groupchildren = array(); $groupchildren = $_CB_framework->acl->get_group_children( $usergid, 'ARO','RECURSE' ); $allusergids = array_merge($allusergids,$groupchildren); } } */ $allusergids = array_diff( $usergids, array( 29, 30 ) ); $usergids = implode( ",", $allusergids ); // build SQL Select query: $random = 0; if( $row->sortfields != '' ) { $matches = null; if ( preg_match( '/^RAND\(\)\s(ASC|DESC)$/', $row->sortfields, $matches ) ) { // random sorting needs to have same seed on pages > 1 to not have probability to show same users: if ( $limitstart ) { $random = (int) $randomParam; } if ( ! $random ) { $random = rand( 0, 32767 ); } $row->sortfields = 'RAND(' . (int) $random . ') ' . $matches[1]; } $orderby = "\n ORDER BY " . $row->sortfields; } $filterby = ''; if ( $row->filterfields != '' ) { $filterRules = utf8RawUrlDecode( substr( $row->filterfields, 1 ) ); if ( $_CB_framework->myId() ) { $user = new moscomprofilerUser( $_CB_database ); if ( $user->load( (int) $_CB_framework->myId() ) ) { $filterRules = cbReplaceVars( $filterRules, $user, array( $_CB_database, 'getEscaped' ), false, array() ); } } $filterby = " AND ". $filterRules; } // Prepare part after SELECT .... " and before "FROM" : $tableReferences = array( '#__comprofiler' => 'ue', '#__users' => 'u' ); // Fetch all fields: $tabs = $myCbUser->_getCbTabs(); // new cbTabs( 0, 1 ); //TBD: later: this private method should not be called here, but the whole users-list should go into there and be called here. $allFields = $tabs->_getTabFieldsDb( null, $myUser, 'list' ); // $_CB_database->setQuery( "SELECT * FROM #__comprofiler_fields WHERE published = 1" ); // $allFields = $_CB_database->loadObjectList( 'fieldid', 'moscomprofilerFields', array( &$_CB_database ) ); //Make columns array. This array will later be constructed from the tabs table: $columns = array(); for ( $i = 1; $i < 50; ++$i ) { $enabledVar = "col".$i."enabled"; if ( ! isset( $row->$enabledVar ) ) { break; } $titleVar = "col".$i."title"; $fieldsVar = "col".$i."fields"; $captionsVar = "col".$i."captions"; if ( $row->$enabledVar == 1 ) { $col = new stdClass(); $col->fields = ( $row->$fieldsVar ? explode( '|*|', $row->$fieldsVar ) : array() ); $col->title = $row->$titleVar; $col->titleRendered = $myCbUser->replaceUserVars( $col->title ); $col->captions = $row->$captionsVar; // $col->sort = 1; //All columns can be sorted $columns[$i] = $col; } } // build fields and tables accesses, also check for searchable fields: $searchableFields = array(); $fieldsSQL = cbUsersList::getFieldsSQL( $columns, $allFields, $tableReferences, $searchableFields, $params ); $_PLUGINS->trigger( 'onAfterUsersListFieldsSql', array( &$columns, &$allFields, &$tableReferences ) ); $tablesSQL = array(); $joinsSQL = array(); $tablesWhereSQL = array( 'block' => 'u.block = 0', 'approved' => 'ue.approved = 1', 'confirmed' => 'ue.confirmed = 1' ); if ( checkJversion() == 2 ) { $joinsSQL[] = 'JOIN #__user_usergroup_map g ON g.`user_id` = u.`id`'; } if ( ! $isModerator ) { $tablesWhereSQL['banned'] = 'ue.banned = 0'; } if ( $usergids ) { if ( checkJversion() == 2 ) { $tablesWhereSQL['gid'] = 'g.group_id IN (' . $usergids . ')'; } else { $tablesWhereSQL['gid'] = 'u.gid IN (' . $usergids . ')'; } } foreach ( $tableReferences as $table => $name ) { $tablesSQL[] = $table . ' ' . $name; if ( $name != 'u' ) { $tablesWhereSQL[] = "u.`id` = " . $name . ".`id`"; } } // handles search criterias: $list_compare_types = $params->get( 'list_compare_types', 0 ); $searchVals = new stdClass(); $searchesFromFields = $tabs->applySearchableContents( $searchableFields, $searchVals, $searchFormValuesRAW, $list_compare_types ); $whereFields = $searchesFromFields->reduceSqlFormula( $tableReferences, $joinsSQL, TRUE ); if ( $whereFields ) { $tablesWhereSQL[] = '(' . $whereFields . ')'; /* if ( $search === null ) { $search = ''; } */ } $_PLUGINS->trigger( 'onBeforeUsersListBuildQuery', array( &$tablesSQL, &$joinsSQL, &$tablesWhereSQL ) ); $queryFrom = "FROM " . implode( ', ', $tablesSQL ) . ( count( $joinsSQL ) ? "\n " . implode( "\n ", $joinsSQL ) : '' ) . "\n WHERE " . implode( "\n AND ", $tablesWhereSQL ); // handles old formatted names search: /* if ( $search != '' ) { $searchSQL = cbEscapeSQLsearch( strtolower( $_CB_database->getEscaped( $search ) ) ); $queryFrom .= " AND ("; $searchFields = array(); if ( $ueConfig['name_format']!='3' ) { $searchFields[] = "u.name LIKE '%%s%'"; } if ( $ueConfig['name_format']!='1' ) { $searchFields[] = "u.username LIKE '%%s%'"; } if ( is_array( $plugSearchFieldsArray ) ) { foreach ( $plugSearchFieldsArray as $v ) { if ( is_array( $v ) ) { $searchFields = array_merge( $searchFields, $v ); } } } $queryFrom .= str_replace( '%s', $searchSQL, implode( " OR ", $searchFields ) ); $queryFrom .= ")"; } */ $queryFrom .= " " . $filterby; $_PLUGINS->trigger( 'onBeforeUsersListQuery', array( &$queryFrom, 1, $listid ) ); // $uid = 1 $errorMsg = null; // counts number of users and loads the listed fields of the users if not in search-form-only mode: if ( $searchmode == 0 ) { if ( checkJversion() == 2 ) { $_CB_database->setQuery( "SELECT COUNT(DISTINCT u.id) " . $queryFrom ); } else { $_CB_database->setQuery( "SELECT COUNT(*) " . $queryFrom ); } $total = $_CB_database->loadResult(); if ( ( $limit > $total ) || ( $limitstart >= $total ) ) { $limitstart = 0; } // $query = "SELECT u.id, ue.banned, '' AS 'NA' " . ( $fieldsSQL ? ", " . $fieldsSQL . " " : '' ) . $queryFrom . " " . $orderby if ( checkJversion() == 2 ) { $query = "SELECT DISTINCT ue.*, u.*, '' AS 'NA' " . ( $fieldsSQL ? ", " . $fieldsSQL . " " : '' ) . $queryFrom . " " . $orderby; } else { $query = "SELECT ue.*, u.*, '' AS 'NA' " . ( $fieldsSQL ? ", " . $fieldsSQL . " " : '' ) . $queryFrom . " " . $orderby; } $_CB_database->setQuery( $query, (int) $limitstart, (int) $limit ); $users = $_CB_database->loadObjectList( null, 'moscomprofilerUser', array( &$_CB_database ) ); if ( ! $_CB_database->getErrorNum() ) { // creates the CBUsers in cache corresponding to the $users: foreach ( array_keys( $users ) as $k) { CBuser::setUserGetCBUserInstance( $users[$k] ); } } else { $users = array(); $errorMsg = _UE_ERROR_IN_QUERY_TURN_SITE_DEBUG_ON_TO_VIEW; } if ( count( get_object_vars( $searchVals ) ) > 0 ) { $search = ''; } else { $search = null; } } else { $total = null; $users = array(); if ( $search === null ) { $search = ''; } } // Compute itemId of users in users-list: if ( $Itemid ) { $option_itemid = (int) $Itemid; } else { $option_itemid = getCBprofileItemid( 0 ); } HTML_comprofiler::usersList( $row, $users, $columns, $allFields, $lists, $listid, $search, $searchmode, $option_itemid, $limitstart, $limit, $total, $myUser, $searchableFields, $searchVals, $tabs, $list_compare_types, $showPaging, $hotlink_protection, $errorMsg, $random ); }
function finishInstallation($option) { global $_CB_framework, $ueConfig, $task; // Try extending time, as unziping/ftping took already quite some... : @set_time_limit(240); HTML_comprofiler::secureAboveForm('finishInstallation'); $tgzFile = $_CB_framework->getCfg('absolute_path') . '/administrator/components/com_comprofiler/pluginsfiles.tgz'; $installerFile = $_CB_framework->getCfg('absolute_path') . '/administrator/components/com_comprofiler/'; if (file_exists($installerFile . 'comprofiler.xml')) { $installerFile .= 'comprofiler.xml'; } elseif (file_exists($installerFile . 'comprofilej.xml')) { $installerFile .= 'comprofilej.xml'; } elseif (file_exists($installerFile . 'comprofileg.xml')) { $installerFile .= 'comprofileg.xml'; } if (!file_exists($tgzFile)) { echo _UE_NOT_AUTHORIZED; return; } $installer = new cbInstallerPlugin(); $client = 2; // Check that the zlib is available if (!extension_loaded('zlib')) { HTML_comprofiler::showInstallMessage(CBTxt::T('The installer cannot continue before zlib is installed'), CBTxt::T('Installer - Error'), $installer->returnTo($option, $task, $client)); exit; } if (!$installer->upload($tgzFile, true, false)) { HTML_comprofiler::showInstallMessage(sprintf(CBTxt::T("Uncompressing %s failed."), $tgzFile), CBTxt::T('Installer - Error'), $installer->returnTo($option, '', 2)); exit; } $installFrom = $installer->installDir(); $installTo = $_CB_framework->getCfg('absolute_path') . '/components/com_comprofiler/plugin'; $filesList = cbReadDirectory($installFrom, '.', true); // create directories and remove them from file list: if (!$installer->mosMakePath(dirname($installTo) . '/', 'plugin')) { HTML_comprofiler::showInstallMessage(sprintf(CBTxt::T('Failed to create directory "%s"'), $installTo . '/plugin'), CBTxt::T('Installer - Error'), $installer->returnTo($option, '', 2)); exit; } foreach ($filesList as $k => $file) { if (basename($file) != $file) { $newdir = dirname($file); if (!$installer->mosMakePath($installTo . '/', $newdir)) { HTML_comprofiler::showInstallMessage(sprintf(CBTxt::T('Failed to create directory "%s"'), $installTo . '/' . $newdir), CBTxt::T('Installer - Error'), $installer->returnTo($option, '', 2)); exit; } } if (!is_file($installFrom . '/' . $file)) { unset($filesList[$k]); } } $result = $installer->copyFiles($installFrom, $installTo, $filesList, true); if ($result === false) { HTML_comprofiler::showInstallMessage(sprintf(CBTxt::T("Copying plugin files failed with error: %s"), $installer->getError()), CBTxt::T('Installer - Error'), $installer->returnTo($option, '', 2)); exit; } $adminFS =& cbAdminFileSystem::getInstance(); $result = $adminFS->deldir(_cbPathName($installFrom . '/')); if ($result === false) { HTML_comprofiler::showInstallMessage(CBTxt::T('Deleting expanded tgz file directory failed with an error.'), CBTxt::T('Installer - Error'), $installer->returnTo($option, '', 2)); } $tgzFileOS = _cbPathName($tgzFile, false); $result = $adminFS->unlink($tgzFileOS); if ($result === false) { HTML_comprofiler::showInstallMessage(sprintf(CBTxt::T("Deleting file %s failed with an error."), $tgzFileOS), CBTxt::T('Installer - Error'), $installer->returnTo($option, '', 2)); } // adapt published fields to global CB config (regarding name type) _cbAdaptNameFieldsPublished($ueConfig); $htmlToDisplay = $_CB_framework->getUserState('com_comprofiler_install'); // clears the session buffer memory after installaion done: $_CB_framework->setUserState('com_comprofiler_install', ''); cbimport('cb.xml.simplexml'); $installerXml = new CBSimpleXMLElement(file_get_contents($installerFile)); if (is_object($installerXml)) { $description = $installerXml->getElementByPath('description'); if ($description !== false) { echo '<h2>' . $description->data() . '</h2>'; } } echo $htmlToDisplay; ?> <div style="font-weight:bold;font-size:110%;background:#ffffe4;border:2px green solid;padding:5px;margin-bottom:20px;"><font color="green"><?php echo CBTxt::T('Second and last installation step of Community Builder Component (comprofiler) done successfully.'); ?> </font></div><br /> <div style="font-weight:bold;font-size:125%;background:#ffffe4;border:2px green solid;padding:5px;"> <font color="green"><b><?php echo CBTxt::T('Installation finished. Important: Please read README.TXT and installation manual for further settings.'); ?> <br /><br /><?php echo CBTxt::T('We also have a PDF installation guide as well as a complete documentation available on'); ?> <a href="http://www.joomlapolis.com">www.joomlapolis.com</a> <?php echo CBTxt::T('which will help you making the most out of your Community Builder installation, while supporting this project, as well as plugins and templates.'); ?> </b></font> </div> <?php $_CB_framework->setUserState("com_comprofiler_install", ''); }
static function banUserForm($option, $uid, $act, $orgbannedreason) { global $_CB_framework, $ueConfig; if ($ueConfig['allowUserBanning'] == 0) { echo _UE_FUNCTIONALITY_DISABLED; return; } $Itemid = $_CB_framework->itemid(); HTML_comprofiler::outputMosFormVal('#adminForm'); ?> <!-- TAB --> <div class="componentheading"><?php if ($_CB_framework->myId() != $uid) { echo _UE_REPORTBAN_TITLE; } else { echo _UE_REPORTUNBAN_TITLE; } ?> </div> <form action='<?php echo cbSef('index.php?option=com_comprofiler&task=banProfile&act=' . ($_CB_framework->myId() != $uid ? '1' : '2') . '&user='******' method="post" id="adminForm" name="adminForm"> <table width='100%' border='0' cellpadding='4' cellspacing='2'> <tr align='left' valign='middle'> <td colspan="4" class="titleCell"> <?php if ($_CB_framework->myId() != $uid) { echo _UE_BANREASON; } else { echo _UE_UNBANREQUEST; } ?> </td></tr> <tr><td colspan="4" align="center" class="fieldCell"> <textarea mosReq="1" mosLabel='<?php if ($_CB_framework->myId() != $uid) { echo htmlspecialchars(_UE_BANREASON); } else { echo htmlspecialchars(_UE_UNBANREQUEST); } ?> ' mosLength="4000" cols="60" rows="5" name="bannedreason"></textarea> </td></tr> <tr><td colspan="4" align="center"> <input class="button" type="submit" value="<?php echo _UE_SUBMITFORM; ?> " /> </td></tr> </table> <input type="hidden" name="bannedby" value="<?php echo $_CB_framework->myId(); ?> " /> <input type="hidden" name="uid" value="<?php echo $uid; ?> " /> <input type="hidden" name="orgbannedreason" value="<?php echo $orgbannedreason; ?> " /> <input type="hidden" name="reportform" value="0" /> <?php echo cbGetSpoofInputTag('banUserForm'); ?> </form> <?php }
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; } if ($regErrorMSG) { $_CB_framework->enqueueMessage($regErrorMSG, 'error'); } $cbTemplate = HTML_comprofiler::_cbTemplateLoad(); outputCbTemplate(1); outputCbJs(1); initToolTip(1); $output = 'htmledit'; $layout = isset($ueConfig['reg_layout']) ? $ueConfig['reg_layout'] : 'flat'; $formatting = isset($ueConfig['use_divs']) && !$ueConfig['use_divs'] ? $layout == 'flat' ? 'tabletrs' : 'table' : 'divs'; $tabbed = in_array($layout, array('tabbed', 'stepped')) ? true : false; $translatedRegistrationTitle = CBTxt::T('UE_REGISTRATION', 'Sign up'); if ($translatedRegistrationTitle) { $_CB_framework->setPageTitle($translatedRegistrationTitle); $_CB_framework->appendPathWay($translatedRegistrationTitle); } $tabs = new cbTabs(0, 1, null, $tabbed ? true : false); $tabcontent = $tabs->getEditTabs($user, $postvars, $output, $formatting, 'register', $layout == 'tabbed' ? 1 : ($layout == 'stepped' ? 2 : 0)); $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; } } cbValidator::loadValidation(); $moduleContent = null; if (isset($ueConfig['reg_show_login_on_page']) && $ueConfig['reg_show_login_on_page'] == 1 && ($stillDisplayLoginModule || !$regErrorMSG)) { $moduleFile = $_CB_framework->getCfg('absolute_path') . '/modules/' . (checkJversion() > 0 ? 'mod_cblogin/' : null) . 'mod_cblogin.php'; if (file_exists($moduleFile)) { define('_UE_LOGIN_FROM', 'loginform'); $query = 'SELECT *' . "\n FROM " . $_CB_database->NameQuote('#__modules') . "\n WHERE " . $_CB_database->NameQuote('module') . " = " . $_CB_database->Quote('mod_cblogin') . "\n AND " . $_CB_database->NameQuote('published') . " = 1" . "\n ORDER BY " . $_CB_database->NameQuote('ordering'); $_CB_database->setQuery($query, 0, 1); $module = null; $_CB_database->loadObject($module); if ($module) { $moduleContent = JModuleHelper::renderModule($module, array('style' => 'xhtml')); } else { $moduleContent = CBTxt::T('Error: CB Login module not created (required).'); } } else { $moduleContent = CBTxt::T('Error: CB Login module not installed (required).'); } } $headerMessage = isset($ueConfig['reg_intro_msg']) ? CBTxt::T($ueConfig['reg_intro_msg']) : null; $footerMessage = isset($ueConfig['reg_conclusion_msg']) ? CBTxt::T($ueConfig['reg_conclusion_msg']) : null; $registrationForm = '<form action="' . $_CB_framework->viewUrl('saveregisters', true, null, 'html', checkCBPostIsHTTPS(true) ? 1 : 0) . '" method="post" id="cbcheckedadminForm" name="adminForm" enctype="multipart/form-data" class="cb_form form-auto cbValidation">' . '<input type="hidden" name="id" value="0" />' . '<input type="hidden" name="gid" value="0" />' . '<input type="hidden" name="emailpass" value="' . htmlspecialchars($emailpass) . '" />' . cbGetSpoofInputTag('registerForm') . cbGetRegAntiSpamInputTag(); $return = $_PLUGINS->callTemplate($cbTemplate, 'RegisterForm', 'drawProfile', array(&$user, $tabcontent, $registrationForm, $headerMessage, CBTxt::Th('LOGIN_REGISTER_TITLE', 'Welcome. Please log in or sign up:'), CBTxt::Th('REGISTER_TITLE', 'Join us!'), CBTxt::Th('UE_REGISTER', 'Sign up'), $moduleContent, $topIcons, $bottomIcons, $footerMessage, $formatting, $results), $output) . cbPoweredBy(); echo $return; $_PLUGINS->trigger('onAfterRegisterFormDisplay', array($user, $tabcontent)); $_CB_framework->setMenuMeta(); }
function manageConnections($userid) { global $_CB_framework, $ueConfig, $_PLUGINS; if (!$ueConfig['allowConnections']) { $msg = CBTxt::Th('UE_FUNCTIONALITY_DISABLED', 'This functionality is currently disabled.'); } elseif ($_CB_framework->myId() != $userid || $_CB_framework->myId() == 0) { $msg = CBTxt::Th('UE_NOT_AUTHORIZED', 'You are not authorized to view this page!'); } else { $msg = null; } $_PLUGINS->loadPluginGroup('user'); $_PLUGINS->trigger('onBeforeManageConnectionsRequest', array($userid, &$msg)); if ($msg) { $_CB_framework->enqueueMessage($msg, 'error'); return; } $cbCon = new cbConnection($userid); $tabs = new cbTabs(0, $_CB_framework->getUi()); $tabs->element = ''; $pagingParams = $tabs->_getPaging(array(), array('connections_')); $perpage = 20; //TBD unhardcode and get the code below better $total = $cbCon->getConnectionsCount($userid, true); if ($pagingParams["connections_limitstart"] === null) { $pagingParams["connections_limitstart"] = 0; } if ($pagingParams["connections_limitstart"] > $total) { $pagingParams["connections_limitstart"] = 0; } $offset = $pagingParams["connections_limitstart"] ? (int) $pagingParams["connections_limitstart"] : 0; $connections = $cbCon->getActiveConnections($userid, $offset, $perpage); $actions = $cbCon->getPendingConnections($userid); $connecteds = $cbCon->getConnectedToMe($userid); HTML_comprofiler::manageConnections($connections, $actions, $total, $tabs, $pagingParams, $perpage, $connecteds); }
/** * Draws Users list (ECHO) * * @param int $userId * @param int $listId * @param array $postData * @return void */ public function drawUsersList($userId, $listId, $postData) { global $_CB_database, $_PLUGINS; $_PLUGINS->loadPluginGroup('user'); $searchData = cbGetParam($postData, 'search'); $limitstart = (int) cbGetParam($postData, 'limitstart'); $searchMode = (int) cbGetParam($postData, 'searchmode', 0); $random = (int) cbGetParam($postData, 'rand', 0); $cbUser = CBuser::getInstance((int) $userId, false); $user = $cbUser->getUserData(); $search = null; $input = array(); $publishedLists = array(); $query = 'SELECT *' . "\n FROM " . $_CB_database->NameQuote('#__comprofiler_lists') . "\n WHERE " . $_CB_database->NameQuote('published') . " = 1" . "\n AND " . $_CB_database->NameQuote('viewaccesslevel') . " IN " . $_CB_database->safeArrayOfIntegers(Application::MyUser()->getAuthorisedViewLevels()) . "\n ORDER BY " . $_CB_database->NameQuote('ordering'); $_CB_database->setQuery($query); /** @var ListTable[] $userLists */ $userLists = $_CB_database->loadObjectList(null, '\\CB\\Database\\Table\\ListTable', array($_CB_database)); if ($userLists) { foreach ($userLists as $userList) { $publishedLists[] = moscomprofilerHTML::makeOption((int) $userList->listid, strip_tags($cbUser->replaceUserVars($userList->title, false, false))); if (!$listId && $userList->default) { $listId = (int) $userList->listid; } } if (!$listId) { $listId = (int) $userLists[0]->listid; } } if (!$listId) { echo CBTxt::Th('UE_NOLISTFOUND', 'There are no published user lists!'); return; } if ($userLists) { $input['plists'] = moscomprofilerHTML::selectList($publishedLists, 'listid', 'class="form-control input-block" onchange="this.form.submit();"', 'value', 'text', (int) $listId, 1); } $row = self::getInstance((int) $listId); if (!$row) { echo CBTxt::Th('UE_LIST_DOES_NOT_EXIST', 'This list does not exist'); return; } if (!$cbUser->authoriseView('userslist', $row->listid)) { echo CBTxt::Th('UE_NOT_AUTHORIZED', 'You are not authorized to view this page!'); return; } $params = new Registry($row->params); if ($params->get('hotlink_protection', 0) == 1) { if ($searchData !== null || $limitstart) { cbSpoofCheck('userslist', 'GET'); } } $limit = (int) $params->get('list_limit', 30); if (!$limit) { $limit = 30; } if ($params->get('list_paging', 1) != 1) { $limitstart = 0; } $isModerator = Application::MyUser()->isGlobalModerator(); $_PLUGINS->trigger('onStartUsersList', array(&$listId, &$row, &$search, &$limitstart, &$limit)); // Prepare query variables: $userGroupIds = explode('|*|', $row->usergroupids); $orderBy = self::getSorting($listId, $userId, $random); $filterBy = self::getFiltering($listId, $userId); $columns = self::getColumns($listId, $userId); // Grab all the fields the $user can access: $tabs = new cbTabs(0, 1); $fields = $tabs->_getTabFieldsDb(null, $user, 'list'); // Build the field SQL: $tableReferences = array('#__comprofiler' => 'ue', '#__users' => 'u'); $searchableFields = array(); $fieldsSQL = cbUsersList::getFieldsSQL($columns, $fields, $tableReferences, $searchableFields, $params); $_PLUGINS->trigger('onAfterUsersListFieldsSql', array(&$columns, &$fields, &$tableReferences)); // Build the internal joins and where statements best off list parameters: $tablesSQL = array(); $joinsSQL = array(); $tablesWhereSQL = array(); if ($isModerator) { if (!$params->get('list_show_blocked', 0)) { $tablesWhereSQL['block'] = 'u.block = 0'; } if (!$params->get('list_show_banned', 1)) { $tablesWhereSQL['banned'] = 'ue.banned = 0'; } if (!$params->get('list_show_unapproved', 0)) { $tablesWhereSQL['approved'] = 'ue.approved = 1'; } if (!$params->get('list_show_unconfirmed', 0)) { $tablesWhereSQL['confirmed'] = 'ue.confirmed = 1'; } } else { $tablesWhereSQL = array('block' => 'u.block = 0', 'approved' => 'ue.approved = 1', 'confirmed' => 'ue.confirmed = 1', 'banned' => 'ue.banned = 0'); } $joinsSQL[] = 'JOIN #__user_usergroup_map g ON g.`user_id` = u.`id`'; if ($userGroupIds) { $tablesWhereSQL['gid'] = 'g.group_id IN ' . $_CB_database->safeArrayOfIntegers($userGroupIds); } foreach ($tableReferences as $table => $name) { if ($name == 'u') { $tablesSQL[] = $table . ' ' . $name; } else { $joinsSQL[] = 'JOIN ' . $table . ' ' . $name . ' ON ' . $name . '.`id` = u.`id`'; } } // Build the search criteria: $searchValues = new stdClass(); $searchesFromFields = $tabs->applySearchableContents($searchableFields, $searchValues, $postData, $params->get('list_compare_types', 0)); $whereFields = $searchesFromFields->reduceSqlFormula($tableReferences, $joinsSQL, true); if ($whereFields) { $tablesWhereSQL[] = '(' . $whereFields . ')'; } $_PLUGINS->trigger('onBeforeUsersListBuildQuery', array(&$tablesSQL, &$joinsSQL, &$tablesWhereSQL)); // Construct the FROM and WHERE for the userlist query: $queryFrom = "FROM " . implode(', ', $tablesSQL) . (count($joinsSQL) ? "\n " . implode("\n ", $joinsSQL) : '') . "\n WHERE " . implode("\n AND ", $tablesWhereSQL) . " " . $filterBy; $_PLUGINS->trigger('onBeforeUsersListQuery', array(&$queryFrom, 1, $listId)); // $ui = 1 (frontend) $errorMsg = null; // Checks if the list is being actively searched and it allows searching; otherwise reset back to normal: $searchCount = count(get_object_vars($searchValues)); if ($params->get('list_search', 1) > 0 && $params->get('list_search_empty', 0) && !$searchCount) { $searchMode = 1; $listAll = false; } else { $listAll = $searchCount ? true : false; } if ($searchMode == 0 || $searchMode == 1 && $searchCount || $searchMode == 2) { // Prepare the userlist count query for pagination: $_CB_database->setQuery("SELECT COUNT( DISTINCT u.id ) " . $queryFrom); $total = $_CB_database->loadResult(); if ($limit > $total || $limitstart >= $total) { $limitstart = 0; } // Prepare the actual userlist query to build a list of users: $query = "SELECT DISTINCT ue.*, u.*, '' AS 'NA' " . ($fieldsSQL ? ", " . $fieldsSQL . " " : '') . $queryFrom . " " . $orderBy; $_CB_database->setQuery($query, (int) $limitstart, (int) $limit); /** @var UserTable[] $users */ $users = $_CB_database->loadObjectList(null, '\\CB\\Database\\Table\\UserTable', array($_CB_database)); if (!$_CB_database->getErrorNum()) { $profileLink = $params->get('allow_profilelink', 1); // If users exist lets cache them and disable profile linking if necessary: if ($users) { foreach (array_keys($users) as $k) { // Add this user to cache: CBuser::setUserGetCBUserInstance($users[$k]); if (!$profileLink) { $users[$k]->set('_allowProfileLink', 0); } } } } else { $errorMsg = CBTxt::T('UE_ERROR_IN_QUERY_TURN_SITE_DEBUG_ON_TO_VIEW', 'There is an error in the database query. Site admin can turn site debug to on to view and fix the query.'); } if ($searchCount) { $search = ''; } else { $search = null; } if ($search === null && ($searchMode == 1 && $searchCount || $searchMode == 2)) { $search = ''; } } else { $total = 0; $users = array(); if ($search === null) { $search = ''; } } $pageNav = new cbPageNav($total, $limitstart, $limit); HTML_comprofiler::usersList($row, $users, $columns, $fields, $input, $search, $searchMode, $pageNav, $user, $searchableFields, $searchValues, $tabs, $errorMsg, $listAll, $random); }