admin.comprofiler.controller.php
上传用户:stephen_wu
上传日期:2008-07-05
资源大小:1757k
文件大小:164k
源码类别:
网络
开发平台:
Unix_Linux
- $connectionDisplay[] = moscomprofilerHTML::makeOption( '1', _UE_PRIVATE );
- $noVersionCheck = array();
- $noVersionCheck[] = moscomprofilerHTML::makeOption( '0', _UE_AUTOMATIC );
- $noVersionCheck[] = moscomprofilerHTML::makeOption( '1', _UE_MANUAL );
- $userprofileEdits = array();
- $userprofileEdits[] = moscomprofilerHTML::makeOption( '0', _UE_NO );
- $userprofileEdits[] = moscomprofilerHTML::makeOption( '1', _UE_MODERATORS_AND_ABOVE );
- $userprofileEdits[] = moscomprofilerHTML::makeOption( '24', _UE_ADMINS_AND_SUPERADMINS_ONLY );
- $userprofileEdits[] = moscomprofilerHTML::makeOption( '25', _UE_SUPERADMINS_ONLY );
- $reg_show_icons_explain = array();
- $reg_show_icons_explain[] = moscomprofilerHTML::makeOption( '0', _UE_NO );
- $reg_show_icons_explain[] = moscomprofilerHTML::makeOption( '1', _UE_TOP );
- $reg_show_icons_explain[] = moscomprofilerHTML::makeOption( '2', _UE_BOTTOM );
- $reg_show_icons_explain[] = moscomprofilerHTML::makeOption( '3', _UE_TOP_AND_BOTTOM );
- $icons_display = array();
- $icons_display[] = moscomprofilerHTML::makeOption( '0', _UE_NO );
- $icons_display[] = moscomprofilerHTML::makeOption( '1', _UE_REQUIRED_ONLY );
- $icons_display[] = moscomprofilerHTML::makeOption( '2', _UE_PROFILE_ONLY );
- $icons_display[] = moscomprofilerHTML::makeOption( '3', _UE_REQUIRED_AND_PROFILE_ONLY );
- $icons_display[] = moscomprofilerHTML::makeOption( '4', _UE_INFO_ONLY );
- $icons_display[] = moscomprofilerHTML::makeOption( '5', _UE_REQUIRED_AND_INFO_ONLY );
- $icons_display[] = moscomprofilerHTML::makeOption( '6', _UE_PROFILE_AND_INFO_ONLY );
- $icons_display[] = moscomprofilerHTML::makeOption( '7', _UE_REQUIRED_PROFILE_AND_INFO );
- // NEXT 9 LINES: CB 1.2 RC 2 + CB 1.2 specific : remove after !
- if ( ! defined( '_UE_USERNAME_OR_EMAIL' ) ) {
- DEFINE('_UE_USERNAME_OR_EMAIL','Username or email');
- }
- if ( ! defined( '_UE_LOGIN_TYPE' ) ) {
- DEFINE('_UE_LOGIN_TYPE','Login field type');
- }
- if ( ! defined( '_UE_LOGIN_TYPE_DESC' ) ) {
- DEFINE('_UE_LOGIN_TYPE_DESC','Login can be by username + password, username or email + password, or email + password. The CB login module also adapts accordingly.');
- }
- $login_type = array();
- $login_type[] = moscomprofilerHTML::makeOption( '0', _UE_USERNAME );
- $login_type[] = moscomprofilerHTML::makeOption( '1', _UE_USERNAME_OR_EMAIL );
- $login_type[] = moscomprofilerHTML::makeOption( '2', _UE_EMAIL );
- // ensure user can't add group higher than themselves
- if ( checkJversion() <= 0 ) {
- $my_groups = $_CB_framework->acl->get_object_groups( 'users', $_CB_framework->myId(), 'ARO' );
- } else {
- $aro_id = $_CB_framework->acl->get_object_id( 'users', $_CB_framework->myId(), 'ARO' );
- $my_groups = $_CB_framework->acl->get_object_groups( $aro_id, 'ARO' );
- }
- //print_r($my_groups);
- if (is_array( $my_groups ) && count( $my_groups ) > 0) {
- $ex_groups = $_CB_framework->acl->get_group_children( $my_groups[0], 'ARO', 'RECURSE' );
- } else {
- $ex_groups = array();
- }
- //print_r($ex_groups);
- $gtree = $_CB_framework->acl->get_group_children_tree( null, 'USERS', false );
- // remove users 'above' me
- $i = 0;
- if (is_array($ex_groups)) {
- while ($i < count( $gtree )) {
- if (in_array( $gtree[$i]->value, $ex_groups )) {
- array_splice( $gtree, $i, 1 );
- } else {
- $i++;
- }
- }
- }
- $gtree2=array();
- $gtree2[] = moscomprofilerHTML::makeOption( -2 , '- ' ._UE_GROUPS_EVERYBODY . ' -' ); // '- Everybody -'
- $gtree2[] = moscomprofilerHTML::makeOption( -1, '- ' . _UE_GROUPS_ALL_REG_USERS . ' -' ); // '- All Registered Users -'
- $gtree2 = array_merge( $gtree2, $_CB_framework->acl->get_group_children_tree( null, 'USERS', false ));
- $lists['imageApproverGid'] = moscomprofilerHTML::selectList( $gtree, 'cfg_imageApproverGid', 'size="4"', 'value', 'text', $ueConfig['imageApproverGid'], 2 );
- $lists['allow_profileviewbyGID']=moscomprofilerHTML::selectList( $gtree2, 'cfg_allow_profileviewbyGID', 'size="4"', 'value', 'text', $ueConfig['allow_profileviewbyGID'], 2 );
- //$lists['allow_listviewbyGID']=moscomprofilerHTML::selectList( $gtree2, 'cfg_allow_listviewbyGID', 'size="4"', 'value', 'text', $ueConfig['allow_listviewbyGID'], 2 );
- // registered users only
- $tempdir = array();
- $_CB_database->setQuery("SELECT `name`,`folder` FROM `#__comprofiler_plugin` WHERE `type`='templates' AND `published`=1 ORDER BY ordering");
- //echo $_CB_database->getQuery();
- $templates = $_CB_database->loadObjectList();
- foreach ( $templates AS $template ) {
- $tempdir[] = moscomprofilerHTML::makeOption( $template->folder , $template->name );
- }
- /*
- require($_CB_framework->getCfg('absolute_path').'/components/com_comprofiler/plugin/user/plug_yancintegration/yanc.php');
- $getNewslettersTab= new getNewslettersTab();
- $newslettersList = $getNewslettersTab->getNewslettersList();
- $newslettersRegList = array();
- if ($newslettersList !== false) {
- foreach ($newslettersList AS $nl) {
- $newslettersRegList[] = moscomprofilerHTML::makeOption( $nl->id, $nl->list_name);
- }
- }
- */
- $cbFielfs = & new cbFields();
- $badHtmlFilter = & $cbFielfs->getInputFilter( array (), array (), 1, 1 );
- $lists['_filteredbydefault'] = implode( ' ', $badHtmlFilter->tagBlacklist );
- if ( ! isset( $ueConfig['html_filter_allowed_tags'] ) ) {
- $ueConfig['html_filter_allowed_tags'] = '';
- }
- $lists['allow_email_display'] = moscomprofilerHTML::selectList( $emailhandling, 'cfg_allow_email_display', 'class="inputbox" size="1"', 'value', 'text', $ueConfig['allow_email_display'], 2 );
- $lists['allow_email_replyto'] = moscomprofilerHTML::selectList( $emailreplyto, 'cfg_allow_email_replyto', 'class="inputbox" size="1"', 'value', 'text', (isset($ueConfig['allow_email_replyto']) ? $ueConfig['allow_email_replyto'] : '1'), 2 );
- $lists['name_format'] = moscomprofilerHTML::selectList($nameformats, 'cfg_name_format','class="inputbox" size="1"', 'value', 'text', $ueConfig['name_format'], 2 );
- $lists['name_style'] = moscomprofilerHTML::selectList($namestyles, 'cfg_name_style','class="inputbox" size="1"', 'value', 'text', $ueConfig['name_style'], 2 );
- $lists['date_format'] = moscomprofilerHTML::selectList($dateformats, 'cfg_date_format','class="inputbox" size="1"', 'value', 'text', $ueConfig['date_format'], 2 );
- $lists['calendar_type'] = moscomprofilerHTML::selectList($calendartypes, 'cfg_calendar_type','class="inputbox" size="1"', 'value', 'text', ( isset( $ueConfig['calendar_type'] ) ? $ueConfig['calendar_type'] : '2' ), 2 );
- $lists['usernameedit'] = moscomprofilerHTML::selectList( $yesno, 'cfg_usernameedit', 'class="inputbox" size="1"', 'value', 'text', $ueConfig['usernameedit'], 2 );
- $lists['allow_profilelink'] = moscomprofilerHTML::selectList( $yesno, 'cfg_allow_profilelink', 'class="inputbox" size="1"', 'value', 'text', $ueConfig['allow_profilelink'], 2 );
- $lists['allow_email'] = moscomprofilerHTML::selectList( $yesno, 'cfg_allow_email', 'class="inputbox" size="1"', 'value', 'text', $ueConfig['allow_email'], 2 );
- $lists['allow_onlinestatus'] = moscomprofilerHTML::selectList( $yesno, 'cfg_allow_onlinestatus', 'class="inputbox" size="1"', 'value', 'text', $ueConfig['allow_onlinestatus'], 2 );
- $lists['allow_website'] = moscomprofilerHTML::selectList( $yesno, 'cfg_allow_website', 'class="inputbox" size="1"', 'value', 'text', $ueConfig['allow_website'], 2 );
- $lists['icons_display'] = moscomprofilerHTML::selectList( $icons_display, 'cfg_icons_display', 'class="inputbox" size="1"', 'value', 'text', ( isset( $ueConfig['icons_display'] ) ? $ueConfig['icons_display'] : '7' ), 2 );
- $lists['login_type'] = moscomprofilerHTML::selectList( $login_type, 'cfg_login_type', 'class="inputbox" size="1"', 'value', 'text', ( isset( $ueConfig['login_type'] ) ? $ueConfig['login_type'] : '0' ), 2 );
- $lists['reg_enable_toc'] = moscomprofilerHTML::selectList( $yesno, 'cfg_reg_enable_toc', 'class="inputbox" size="1"', 'value', 'text', $ueConfig['reg_enable_toc'], 2 );
- $lists['admin_allowcbregistration'] = moscomprofilerHTML::selectList( $admin_allowcbregistration, 'cfg_reg_admin_allowcbregistration', 'class="inputbox" size="1"', 'value', 'text', (isset($ueConfig['reg_admin_allowcbregistration']) ? $ueConfig['reg_admin_allowcbregistration'] : '0' ), 2 );
- $lists['emailpass'] = moscomprofilerHTML::selectList( $yesno, 'cfg_emailpass', 'class="inputbox" size="1"', 'value', 'text', (isset($ueConfig['emailpass']) ? $ueConfig['emailpass'] : '0' ), 2 );
- $lists['admin_approval'] = moscomprofilerHTML::selectList( $yesno, 'cfg_reg_admin_approval', 'class="inputbox" size="1"', 'value', 'text', $ueConfig['reg_admin_approval'], 2 );
- $lists['confirmation'] = moscomprofilerHTML::selectList( $yesno, 'cfg_reg_confirmation', 'class="inputbox" size="1"', 'value', 'text', $ueConfig['reg_confirmation'], 2 );
- $lists['reg_username_checker'] = moscomprofilerHTML::selectList( $yesno, 'cfg_reg_username_checker', 'class="inputbox" size="1"', 'value', 'text', ( isset( $ueConfig['reg_username_checker'] ) ? $ueConfig['reg_username_checker'] : '0' ), 2 );
- $lists['reg_email_checker'] = moscomprofilerHTML::selectList( $email_checker, 'cfg_reg_email_checker', 'class="inputbox" size="1"', 'value', 'text', ( isset( $ueConfig['reg_email_checker'] ) ? $ueConfig['reg_email_checker'] : '0' ), 2 );
- $lists['reg_show_login_on_page'] = moscomprofilerHTML::selectList( $yesno, 'cfg_reg_show_login_on_page', 'class="inputbox" size="1"', 'value', 'text', ( isset( $ueConfig['reg_show_login_on_page'] ) ? $ueConfig['reg_show_login_on_page'] : '0' ), 2 );
- $lists['reg_show_icons_explain'] = moscomprofilerHTML::selectList( $reg_show_icons_explain, 'cfg_reg_show_icons_explain', 'class="inputbox" size="1"', 'value', 'text', ( isset( $ueConfig['reg_show_icons_explain'] ) ? $ueConfig['reg_show_icons_explain'] : '3' ), 2 );
- $lists['allowAvatar'] = moscomprofilerHTML::selectList( $yesno, 'cfg_allowAvatar', 'class="inputbox" size="1"', 'value', 'text', $ueConfig['allowAvatar'], 2 );
- $lists['allowAvatarUpload'] = moscomprofilerHTML::selectList( $yesno, 'cfg_allowAvatarUpload', 'class="inputbox" size="1"', 'value', 'text', $ueConfig['allowAvatarUpload'], 2 );
- $lists['avatarResizeAlways'] = moscomprofilerHTML::selectList( $yesno, 'cfg_avatarResizeAlways', 'class="inputbox" size="1"', 'value', 'text', isset( $ueConfig['avatarResizeAlways'] ) ? $ueConfig['avatarResizeAlways'] : '1', 2 );
- $lists['allowAvatarGallery'] = moscomprofilerHTML::selectList( $yesno, 'cfg_allowAvatarGallery', 'class="inputbox" size="1"', 'value', 'text', $ueConfig['allowAvatarGallery'], 2 );
- $lists['avatarUploadApproval'] = moscomprofilerHTML::selectList( $yesno, 'cfg_avatarUploadApproval', 'class="inputbox" size="1"', 'value', 'text', $ueConfig['avatarUploadApproval'], 2 );
- $lists['allowUserReports'] = moscomprofilerHTML::selectList( $yesno, 'cfg_allowUserReports', 'class="inputbox" size="1"', 'value', 'text', $ueConfig['allowUserReports'], 2 );
- $lists['allowModeratorsUserEdit'] = moscomprofilerHTML::selectList( $userprofileEdits, 'cfg_allowModeratorsUserEdit', 'class="inputbox" size="1"', 'value', 'text', isset($ueConfig['allowModeratorsUserEdit']) ? $ueConfig['allowModeratorsUserEdit'] : '0', 2 );
- $lists['allowUserBanning'] = moscomprofilerHTML::selectList( $yesno, 'cfg_allowUserBanning', 'class="inputbox" size="1"', 'value', 'text', $ueConfig['allowUserBanning'], 2 );
- $lists['adminrequiredfields'] = moscomprofilerHTML::selectList( $yesno, 'cfg_adminrequiredfields', 'class="inputbox" size="1"', 'value', 'text', $ueConfig['adminrequiredfields'], 2 );
- $lists['moderatorEmail'] = moscomprofilerHTML::selectList( $yesno, 'cfg_moderatorEmail', 'class="inputbox" size="1"', 'value', 'text', $ueConfig['moderatorEmail'], 2 );
- $lists['allowModUserApproval'] = moscomprofilerHTML::selectList( $yesno, 'cfg_allowModUserApproval', 'class="inputbox" size="1"', 'value', 'text', $ueConfig['allowModUserApproval'], 2 );
- $lists['templatedir'] = moscomprofilerHTML::selectList( $tempdir, 'cfg_templatedir', 'class="inputbox" size="1"', 'value', 'text', $ueConfig['templatedir'], 2 );
- $lists['showEmptyTabs'] = moscomprofilerHTML::selectList( $yesno, 'cfg_showEmptyTabs', 'class="inputbox" size="1"', 'value', 'text', isset( $ueConfig['showEmptyTabs'] ) ? $ueConfig['showEmptyTabs'] : 0, 2 );
- $lists['showEmptyFields'] = moscomprofilerHTML::selectList( $yesno, 'cfg_showEmptyFields', 'class="inputbox" size="1"', 'value', 'text', isset( $ueConfig['showEmptyFields'] ) ? $ueConfig['showEmptyFields'] : 0, 2 );
- $lists['nesttabs'] = moscomprofilerHTML::selectList( $yesno, 'cfg_nesttabs', 'class="inputbox" size="1"', 'value', 'text', $ueConfig['nesttabs'], 2 );
- $lists['xhtmlComply'] = moscomprofilerHTML::selectList( $yesno, 'cfg_xhtmlComply', 'class="inputbox" size="1"', 'value', 'text', $ueConfig['xhtmlComply'], 2 );
- $lists['frontend_userparams'] = moscomprofilerHTML::selectList( $yesno, 'cfg_frontend_userparams', 'class="inputbox" size="1"', 'value', 'text', isset( $ueConfig['frontend_userparams'] ) ? $ueConfig['frontend_userparams'] : ( in_array( $_CB_framework->getCfg( "frontend_userparams" ), array( '1', null) ) ? '1' : '0' ), 2 );
- $lists['conversiontype'] = moscomprofilerHTML::selectList( $conversiontype, 'cfg_conversiontype', 'class="inputbox" size="1"', 'value', 'text', $ueConfig['conversiontype'], 2 );
- $lists['allowConnections'] = moscomprofilerHTML::selectList( $yesno, 'cfg_allowConnections', 'class="inputbox" size="1"', 'value', 'text', $ueConfig['allowConnections'], 2 );
- $lists['useMutualConnections'] = moscomprofilerHTML::selectList( $yesno, 'cfg_useMutualConnections', 'class="inputbox" size="1"', 'value', 'text', $ueConfig['useMutualConnections'], 2 );
- $lists['autoAddConnections'] = moscomprofilerHTML::selectList( $yesno, 'cfg_autoAddConnections', 'class="inputbox" size="1"', 'value', 'text', $ueConfig['autoAddConnections'], 2 );
- $lists['conNotifyTypes'] = moscomprofilerHTML::selectList( $conNotifyTypes, 'cfg_conNotifyType', 'class="inputbox" size="1"', 'value', 'text', $ueConfig['conNotifyType'], 2 );
- $lists['connectionDisplay'] = moscomprofilerHTML::selectList( $connectionDisplay, 'cfg_connectionDisplay', 'class="inputbox" size="1"', 'value', 'text', $ueConfig['connectionDisplay'], 2 );
- $lists['connectionPath'] = moscomprofilerHTML::selectList( $yesno, 'cfg_connectionPath', 'class="inputbox" size="1"', 'value', 'text', $ueConfig['connectionPath'], 2 );
- $lists['noVersionCheck'] = moscomprofilerHTML::selectList( $noVersionCheck, 'cfg_noVersionCheck', 'class="inputbox" size="1"', 'value', 'text', isset($ueConfig['noVersionCheck']) ? $ueConfig['noVersionCheck'] : '0', 2 );
- HTML_comprofiler::showConfig( $ueConfig, $lists, $option );
- }
- function saveConfig ( $option ) {
- global $_CB_adminpath, $_POST;
- cbimport( 'cb.adminfilesystem' );
- $adminFS =& cbAdminFileSystem::getInstance();
- $configfile = $_CB_adminpath."/ue_config.php";
- //Add code to check if config file is writeable.
- if ( $adminFS->isUsingStandardPHP() && ! is_writable($configfile)) {
- @chmod ($configfile, 0766);
- if (!is_writable($configfile)) {
- cbRedirect("index2.php?option=$option", "FATAL ERROR: Config File Not writeable" );
- }
- }
- // safely evaluate post:
- $newConfig = array();
- foreach ( $_POST as $k => $v ) {
- $newVal = cbGetParam( $_POST, $k, '', _CB_ALLOWRAW | _CB_NOTRIM );
- //TBD later when moving to DB storage:
- // $newVal = stripslashes( $newVal );
- // then check for stripslashes all over the place incl. in configuration display and email of welcome messages
- if ( is_array( $newVal ) ) {
- $newVal = implode( '|*|', $newVal );
- }
- if ( strpos( $k, 'cfg_' ) === 0 ) {
- $newK = addslashes( substr( $k, 4 ) );
- $newConfig[$newK] = $newVal;
- }
- }
- // compose PHP ueconfig.php file:
- $txt = "<?phpn";
- foreach ( $newConfig as $k => $v ) {
- $txt .= "$ueConfig['" . $k . "']='$v';n";
- }
- $txt .= "?>";
- // write file:
- /*
- if (is_callable(array("JFile","write"))) {
- $result = JFile::write( $configfile, $txt );
- } else {
- $result = false;
- $fp = fopen( $configfile, "w");
- if ( $fp ) {
- $result = fwrite($fp, $txt, strlen($txt));
- fclose ($fp);
- }
- }
- */
- $result = $adminFS->file_put_contents( $configfile, $txt );
- if ( $result ) {
- if ( _cbAdmin_chmod( $configfile ) ) {
- $msg = "Configuration file saved";
- } else {
- $msg = 'Failed to change the permissions of the config file '.$configfile;
- }
- } else {
- $msg = 'Failed to create and write config file in '.$configfile;
- }
- if ( $result !== false ) {
- // adapt name fields to new name:
- _cbAdaptNameFieldsPublished( $newConfig );
- cbRedirect( "index2.php?option=$option&task=showconfig", $msg );
- } else {
- cbRedirect( "index2.php?option=$option", $msg . ': ' . "ERROR: Configuration file administrator/components/com_comprofiler/ue_config.php could not be written by webserver. Please change file permissions in your web-pannel." );
- }
- }
- function _cbAdaptNameFieldsPublished( &$newConfig ) {
- global $_CB_database;
- switch ( $newConfig['name_style'] ) {
- case 2:
- $sqlArray = array( 'name' => 0, 'firstname' => 1, 'middlename' => 0, 'lastname' => 1 );
- break;
- case 3:
- $sqlArray = array( 'name' => 0, 'firstname' => 1, 'middlename' => 1, 'lastname' => 1 );
- break;
- case 1:
- default:
- $sqlArray = array( 'name' => 1, 'firstname' => 0, 'middlename' => 0, 'lastname' => 0 );
- break;
- }
- foreach ( $sqlArray as $name => $published ) {
- $sql = 'UPDATE #__comprofiler_fields SET '
- . $_CB_database->NameQuote( 'published' )
- . ' = '
- . (int) $published
- . ' WHERE '
- . $_CB_database->NameQuote( 'name' )
- . ' = '
- . $_CB_database->Quote( $name )
- ;
- $_CB_database->setQuery( $sql );
- if ( ! $_CB_database->query() ) {
- echo "<script type="text/javascript"> alert('_cbAdaptNameFieldsPublished: db error: " . addslashes( $_CB_database->getErrorMsg() ) . "'); window.history.go(-1);</script>n";
- exit;
- }
- }
- }
- function requiredField( $cid=null, $flag=1, $option ) {
- global $_CB_database;
- if (count( $cid ) < 1) {
- $action = $flag ? 'Make Required' : 'Make Non-required';
- echo "<script type="text/javascript"> alert('Select an item to $action'); window.history.go(-1);</script>n";
- exit;
- }
- foreach ($cid AS $cids) {
- $_CB_database->setQuery( "UPDATE #__comprofiler_fields SET required = " . (int) $flag . " WHERE fieldid = " . (int) $cids);
- $_CB_database->query();
- //print $_CB_database->getquery();
- }
- cbRedirect( "index2.php?option=$option&task=showField" );
- }
- function publishField( $cid=null, $flag=1, $option ) {
- global $_CB_database;
- if (count( $cid ) < 1) {
- $action = $flag ? 'Publish' : 'UnPublish';
- echo "<script type="text/javascript"> alert('Select an item to $action'); window.history.go(-1);</script>n";
- exit;
- }
- foreach ($cid AS $cids) {
- $_CB_database->setQuery( "UPDATE #__comprofiler_fields SET published = " . (int) $flag . " WHERE fieldid = " . (int) $cids) . " AND sys = 0";
- $_CB_database->query();
- //print $_CB_database->getquery();
- }
- cbRedirect( "index2.php?option=$option&task=showField" );
- }
- function registrationField( $cid=null, $flag=1, $option ) {
- global $_CB_database;
- if (count( $cid ) < 1) {
- $action = $flag ? 'Add to Registration' : 'Remove from Registration';
- echo "<script type="text/javascript"> alert('Select an item to $action'); window.history.go(-1);</script>n";
- exit;
- }
- foreach ($cid AS $cids) {
- $_CB_database->setQuery( "UPDATE #__comprofiler_fields SET registration = " . (int) $flag . " WHERE fieldid = " . (int) $cids);
- $_CB_database->query();
- //print $_CB_database->getquery();
- }
- cbRedirect( "index2.php?option=$option&task=showField" );
- }
- function searchableField( $cid=null, $flag=1, $option ) {
- global $_CB_database;
- $flag = $flag ? 1 : 0;
- $action = $flag ? 'field searchable in users-lists' : 'field not searchable in users-lists';
- if (count( $cid ) < 1) {
- echo "<script type="text/javascript"> alert('Select an item to make $action'); window.history.go(-1);</script>n";
- exit;
- }
- foreach ($cid AS $cids) {
- $_CB_database->setQuery( "UPDATE #__comprofiler_fields SET searchable = " . (int) $flag . " WHERE fieldid = " . (int) $cids);
- $_CB_database->query();
- //print $_CB_database->getquery();
- }
- cbRedirect( "index2.php?option=$option&task=showField", "Made " . $action );
- }
- function listPublishedField( $cid=null, $flag=1, $option ) {
- global $_CB_database;
- if (count( $cid ) < 1) {
- $action = $flag ? 'Publish' : 'UnPublish';
- echo "<script type="text/javascript"> alert('Select an item to $action'); window.history.go(-1);</script>n";
- exit;
- }
- foreach ($cid AS $cids) {
- $_CB_database->setQuery( "UPDATE #__comprofiler_lists SET published = " . (int) $flag . " WHERE listid = " . (int) $cids);
- $_CB_database->query();
- //print $_CB_database->getquery();
- }
- cbRedirect( "index2.php?option=$option&task=showLists" );
- }
- function tabPublishedField( $cid=null, $flag=1, $option ) {
- global $_CB_database;
- if (count( $cid ) < 1) {
- $action = $flag ? 'Publish' : 'UnPublish';
- echo "<script type="text/javascript"> alert('Select an item to $action'); window.history.go(-1);</script>n";
- exit;
- }
- foreach ($cid AS $cids) {
- $_CB_database->setQuery( "UPDATE #__comprofiler_tabs SET enabled = " . (int) $flag . " WHERE tabid = " . (int) $cids);
- $_CB_database->query();
- //print $_CB_database->getquery();
- }
- cbRedirect( "index2.php?option=$option&task=showTab" );
- }
- function listDefaultField( $cid=null, $flag=1, $option ) {
- global $_CB_database;
- if (count( $cid ) < 1) {
- $action = $flag ? 'Make Default' : 'Reset Default';
- echo "<script type="text/javascript"> alert('Select an item to $action'); window.history.go(-1);</script>n";
- exit;
- }
- $published = "";
- if($flag==1) {
- $published = ", published = 1";
- }
- foreach ($cid AS $cids) {
- $_CB_database->setQuery( "UPDATE #__comprofiler_lists SET `default` = 0");
- $_CB_database->query();
- $_CB_database->setQuery( "UPDATE #__comprofiler_lists SET `default` = " . (int) $flag . " $published WHERE listid = " . (int) $cids);
- $_CB_database->query();
- //print $_CB_database->getquery();
- }
- cbRedirect( "index2.php?option=$option&task=showLists" );
- }
- function profileField( $cid=null, $flag=1, $option ) {
- global $_CB_database;
- if (count( $cid ) < 1) {
- $action = $flag ? 'Add to Profile' : 'Remove from Profile';
- echo "<script type="text/javascript"> alert('Select an item to $action'); window.history.go(-1);</script>n";
- exit;
- }
- foreach ($cid AS $cids) {
- $_CB_database->setQuery( "UPDATE #__comprofiler_fields SET profile = " . (int) $flag . " WHERE fieldid = " . (int) $cids);
- $_CB_database->query();
- //print $_CB_database->getquery();
- }
- cbRedirect( "index2.php?option=$option&task=showField" );
- }
- function loadSampleData() {
- global $_CB_database;
- $sql = "SELECT COUNT(*) FROM #__comprofiler_fields"
- . "n WHERE name IN ('website','location','occupation','interests','company','address','city','state','zipcode','country','phone','fax')";
- $_CB_database->setQuery($sql);
- $fieldCount = $_CB_database->loadresult();
- IF($fieldCount < 1) {
- $sqlStatements = array();
- $sqlStatements[0]['query'] = "INSERT IGNORE INTO `#__comprofiler_tabs` (`tabid`, `title`, `position`, `ordering`, `sys`, `displaytype`) "
- ."n VALUES (2, '_UE_ADDITIONAL_INFO_HEADER', 'cb_tabmain', 1, 0, 'tab')";
- $sqlStatements[0]['message'] = '<font color="green">Tab Added Successfully!</font><br />';
- $sqlStatements[1]['query'] = "ALTER TABLE `#__comprofiler` ADD `website` varchar(255) default NULL,"
- ."n ADD `location` varchar(255) default NULL,"
- ."n ADD `occupation` varchar(255) default NULL,"
- ."n ADD `interests` varchar(255) default NULL,"
- ."n ADD `company` varchar(255) default NULL,"
- ."n ADD `address` varchar(255) default NULL,"
- ."n ADD `city` varchar(255) default NULL,"
- ."n ADD `state` varchar(255) default NULL,"
- ."n ADD `zipcode` varchar(255) default NULL,"
- ."n ADD `country` varchar(255) default NULL,"
- ."n ADD `phone` varchar(255) default NULL,"
- ."n ADD `fax` varchar(255) default NULL";
- $sqlStatements[1]['message'] = '<font color="green">Schema Changes Added Successfully!</font><br />';
- $sqlStatements[2]['query'] = "INSERT IGNORE INTO `#__comprofiler_fields` (`fieldid`, `name`, `tablecolumns`, `table`, `title`, `type`, `maxlength`, `size`, `required`, `tabid`, `ordering`, `cols`, `rows`, `value`, `default`, `published`, `registration`, `profile`, `calculated`, `sys`, `pluginid`) "
- ."n VALUES (30, 'website', 'website', '#__comprofiler', '_UE_Website', 'webaddress', 0, 0, 0, 2, 1, 0, 0, NULL, NULL, 1, 0, 1, 0, 0, 1),"
- ."n (31, 'location', 'location', '#__comprofiler', '_UE_Location', 'text', 50, 25, 0, 2, 2, 0, 0, NULL, NULL, 1, 0, 1, 0, 0, 1),"
- ."n (32, 'occupation', 'occupation', '#__comprofiler', '_UE_Occupation', 'text', 0, 0, 0, 2, 3, 0, 0, NULL, NULL, 1, 0, 1, 0, 0, 1),"
- ."n (33, 'interests', 'interests', '#__comprofiler', '_UE_Interests', 'text', 0, 0, 0, 2, 4, 0, 0, NULL, NULL, 1, 0, 1, 0, 0, 1),"
- ."n (34, 'company', 'company', '#__comprofiler', '_UE_Company', 'text', 0, 0, 0, 2, 5, 0, 0, NULL, NULL, 1, 1, 1, 0, 0, 1),"
- ."n (35, 'city', 'city', '#__comprofiler', '_UE_City', 'text', 0, 0, 0, 2, 6, 0, 0, NULL, NULL, 1, 1, 1, 0, 0, 1),"
- ."n (36, 'state', 'state', '#__comprofiler', '_UE_State', 'text', 10, 4, 0, 2, 7, 0, 0, NULL, NULL, 1, 1, 1, 0, 0, 1),"
- ."n (37, 'zipcode', 'zipcode', '#__comprofiler', '_UE_ZipCode', 'text', 0, 0, 0, 2, 8, 0, 0, NULL, NULL, 1, 1, 1, 0, 0, 1),"
- ."n (38, 'country', 'country', '#__comprofiler', '_UE_Country', 'text', 0, 0, 0, 2, 9, 0, 0, NULL, NULL, 1, 1, 1, 0, 0, 1),"
- ."n (40, 'address', 'address', '#__comprofiler', '_UE_Address', 'text', 0, 0, 0, 2, 10, 0, 0, NULL, NULL, 1, 1, 1, 0, 0, 1),"
- ."n (43, 'phone', 'phone', '#__comprofiler', '_UE_PHONE', 'text', 0, 0, 0, 2, 11, 0, 0, NULL, NULL, 1, 1, 1, 0, 0, 1),"
- ."n (44, 'fax', 'fax', '#__comprofiler', '_UE_FAX', 'text', 0, 0, 0, 2, 12, 0, 0, NULL, NULL, 1, 1, 1, 0, 0, 1)";
- $sqlStatements[2]['message'] = '<font color="green">Fields Added Successfully!</font><br />';
- $sqlStatements[3]['query'] = "INSERT INTO `#__comprofiler_lists` (`listid`, `title`, `description`, `published`, `default`, `usergroupids`, `sortfields`, `col1title`, `col1enabled`, `col1fields`, `col2title`, `col2enabled`, `col1captions`, `col2fields`, `col2captions`, `col3title`, `col3enabled`, `col3fields`, `col3captions`, `col4title`, `col4enabled`, `col4fields`, `col4captions`) "
- ."n VALUES (2, 'Members List', 'my Description', 1, 1, '29, 18, 19, 20, 21, 30, 23, 24, 25', '`username` ASC', 'Image', 1, '29', 'Username', 1, 0, '42', 0, 'Other', 1, '26|*|28|*|27', 1, '', 0, '', 0)";
- $sqlStatements[3]['message'] = '<font color="green">List Added Successfully!</font><br />';
- foreach ($sqlStatements AS $sql) {
- $_CB_database->setQuery($sql['query']);
- if (!$_CB_database->query()) {
- print("<font color=red>SQL error" . $_CB_database->stderr(true)."</font><br />");
- return;
- } else {
- print $sql['message'];
- }
- //print $_CB_database->getquery();
- }
- } else {
- print "Sample Data is already loaded!";
- }
- }
- function syncUsers() {
- global $_CB_database, $ueConfig, $_PLUGINS;
- // Try extending time, as unziping/ftping took already quite some... :
- @set_time_limit( 240 );
- $_PLUGINS->loadPluginGroup('user');
- $messages = $_PLUGINS->trigger( 'onBeforeSyncUser', true );
- foreach ( $messages as $msg ) {
- if ( $msg ) {
- echo "<p>" . $msg . "</p>";
- }
- }
- // 1. add missing comprofiler entries, guessing naming depending on CB's name style:
- switch ( $ueConfig['name_style'] ) {
- case 2:
- // firstname + lastname:
- $sql = "INSERT IGNORE INTO #__comprofiler(id,user_id,lastname,firstname) "
- ." SELECT id,id, SUBSTRING_INDEX(name,' ',-1), "
- ."SUBSTRING( name, 1, length( name ) - length( SUBSTRING_INDEX( name, ' ', -1 ) ) -1 ) "
- ." FROM #__users";
- break;
- case 3:
- // firstname + middlename + lastname:
- $sql = "INSERT IGNORE INTO #__comprofiler(id,user_id,middlename,lastname,firstname) "
- . " SELECT id,id,SUBSTRING( name, INSTR( name, ' ' ) +1,"
- ." length( name ) - INSTR( name, ' ' ) - length( SUBSTRING_INDEX( name, ' ', -1 ) ) -1 ),"
- ." SUBSTRING_INDEX(name,' ',-1),"
- ." IF(INSTR(name,' '),SUBSTRING_INDEX( name, ' ', 1 ),'') "
- . " FROM #__users";
- break;
- default:
- // name only:
- $sql = "INSERT IGNORE INTO #__comprofiler(id,user_id) SELECT id,id FROM #__users";
- break;
- }
- $_CB_database->setQuery($sql);
- if (!$_CB_database->query()) {
- print("<font color=red>SQL error" . $_CB_database->stderr(true)."</font><br />");
- return;
- }
- $affected = $_CB_database->getAffectedRows();
- if ($affected) {
- print "<p><font color='orange'>Added ".$affected." new entries to Community Builder from users Table.</font></p>";
- }
- $sql = "UPDATE #__comprofiler SET `user_id`=`id`";
- $_CB_database->setQuery($sql);
- if (!$_CB_database->query()) {
- print("<font color=red>SQL error" . $_CB_database->stderr(true)."</font><br />");
- return;
- }
- $affected = $_CB_database->getAffectedRows();
- if ($affected) {
- print "<p><font color='orange'>Fixed ".$affected." existing entries in Community Builder: fixed wrong user_id.</font></p>";
- }
- // 2. remove excessive comprofiler entries (e.g. if admin used mambo/joomla delete user function:
- $sql = "SELECT c.id FROM #__comprofiler c LEFT JOIN #__users u ON u.id = c.id WHERE u.id IS NULL";
- $_CB_database->setQuery($sql);
- $users = $_CB_database->loadResultArray();
- if ($_CB_database->getErrorNum()) {
- print("<font color=red>SQL error" . $_CB_database->stderr(true)."</font><br />");
- return;
- }
- if (count($users)) {
- print "<p><font color='orange'>Removing ".count($users)." entries from Community Builder missing in users Table.</font></p>";
- $msg = deleteUsers($users, true);
- print "<p>".$msg."</p>";
- }
- print "<font color=green>Joomla/Mambo User Table and Joomla/Mambo Community Builder User Table now in sync!</font>";
- $messages = $_PLUGINS->trigger( 'onAfterSyncUser', true );
- foreach ( $messages as $msg ) {
- if ( $msg ) {
- echo "<p>" . $msg . "</p>";
- }
- }
- }
- function checkcbdb( $dbId = 0 ) {
- global $_CB_database, $_CB_framework, $ueConfig, $_PLUGINS;
- // Try extending time, as unziping/ftping took already quite some... :
- @set_time_limit( 240 );
- HTML_comprofiler::secureAboveForm('checkcbdb');
- outputCbTemplate( 2 );
- outputCbJs( 2 );
- global $_CB_Backend_Title;
- $_CB_Backend_Title = array( 0 => array( 'cbicon-48-tools', "CB Tools: Check database: Results" ) );
- $cbSpoofField = cbSpoofField();
- $cbSpoofString = cbSpoofString( null, 'cbtools' );
- if ( $dbId == 0 ) {
- echo "<div style='text-align:left;'><p>Checking Community Builder Datbase:</p>";
- // 1. check comprofiler_field_values table for bad rows
- $sql = "SELECT fieldvalueid,fieldid FROM #__comprofiler_field_values WHERE fieldid=0";
- $_CB_database->setQuery($sql);
- $bad_rows = $_CB_database->loadObjectList();
- if ( $bad_rows === null ) {
- echo "<p><font color=red>ERROR: sql query: " . htmlspecialchars( $sql ) . " : returned error: " . stripslashes( $_CB_database->getErrorMsg() ) . "</font></p>";
- } elseif (count($bad_rows)!=0) {
- echo "<p><font color=red>Warning: ".count($bad_rows)." entries in Community Builder comprofiler_field_values have bad fieldid values.</font></p>";
- foreach ($bad_rows as $bad_row) {
- if ( $bad_row->fieldvalueid == 0 ) {
- echo "<p><font color=red>ZERO fieldvalueid illegal: fieldvalueid=" . $bad_row->fieldvalueid . " fieldid=0</font></p>";
- } else {
- echo "<p><font color=red>fieldvalueid=" . $bad_row->fieldvalueid . " fieldid=0</font></p>";
- }
- }
- echo "<p><font color=red>This one can be fixed in SQL using a tool like phpMyAdmin.</font></p>";
- } else {
- echo "<p><font color=green>All Community Builder comprofiler_field_values table fieldid rows all match existing fields.</font></p>";
- }
- // 2. check if comprofiler_field_values table has entries where corresponding fieldtype value in comprofiler_fields table
- // does not allow values
- $sql = "SELECT v.fieldvalueid, v.fieldid, f.name, f.type FROM #__comprofiler_field_values as v, #__comprofiler_fields as f WHERE v.fieldid = f.fieldid AND f.type NOT IN ('checkbox','multicheckbox','select','multiselect','radio')";
- $_CB_database->setQuery($sql);
- $bad_rows = $_CB_database->loadObjectList();
- if ( $bad_rows === null ) {
- echo "<p><font color=red>ERROR: sql query: " . htmlspecialchars( $sql ) . " : returned error: " . stripslashes( $_CB_database->getErrorMsg() ) . "</font></p>";
- } elseif (count($bad_rows)!=0) {
- echo "<p><font color=red>Warning: ".count($bad_rows)." entries in Community Builder comprofiler_field_values link back to fields of wrong fieldtype.</font></p>";
- foreach ($bad_rows as $bad_row) {
- echo "<p><font color=red>fieldvalueid=" . $bad_row->fieldvalueid . " fieldtype=" . $bad_row->type ."</font></p>";
- }
- echo "<p><font color=red>This one can be fixed in SQL using a tool like phpMyAdmin.</font></p>";
- } else {
- echo "<p><font color=green>All Community Builder comprofiler_field_values table rows link to correct fieldtype fields in comprofiler_field table.</font></p>";
- }
- // 3. check if comprofiler table is in sync with users table
- $sql = "SELECT c.id FROM #__comprofiler c LEFT JOIN #__users u ON u.id = c.id WHERE u.id IS NULL";
- $_CB_database->setQuery($sql);
- $bad_rows = $_CB_database->loadObjectList();
- if ( $bad_rows === null ) {
- echo "<p><font color=red>ERROR: sql query: " . htmlspecialchars( $sql ) . " : returned error: " . stripslashes( $_CB_database->getErrorMsg() ) . "</font></p>";
- } elseif (count($bad_rows)!=0) {
- echo "<p><font color=red>Warning: ".count($bad_rows)." entries in Community Builder comprofiler table without corresponding user table rows.</font></p>";
- $badids = array();
- foreach ($bad_rows as $bad_row) {
- $badids[(int) $bad_row->id] = $bad_row->id;
- }
- echo "<p><font color=red>Following comprofiler id: " . implode( ', ', $badids ) . " are missing in user table" . ( isset( $badids[0] ) ? " This comprofiler entry with id 0 should be removed, as it's not allowed." : "" ) . "</font></p>";
- echo "<p><font color=red>This one can be fixed using menu Components-> Community Builder-> tools and then click `Synchronize users`.</font></p>";
- } else {
- echo "<p><font color=green>All Community Builder comprofiler table rows have links to user table.</font></p>";
- }
- // 4. check if users table is in sync with comprofiler table
- $sql = "SELECT u.id FROM #__users u LEFT JOIN #__comprofiler c ON c.id = u.id WHERE c.id IS NULL";
- $_CB_database->setQuery($sql);
- $bad_rows = $_CB_database->loadObjectList();
- if ( $bad_rows === null ) {
- echo "<p><font color=red>ERROR: sql query: " . htmlspecialchars( $sql ) . " : returned error: " . stripslashes( $_CB_database->getErrorMsg() ) . "</font></p>";
- } elseif (count($bad_rows)!=0) {
- echo "<p><font color=red>Warning: ".count($bad_rows)." entries in users table without corresponding comprofiler table rows.</font></p>";
- $badids = array();
- foreach ($bad_rows as $bad_row) {
- $badids[(int) $bad_row->id] = $bad_row->id;
- }
- echo "<p><font color=red>users id: " . implode( ', ', $badids ) . " are missing in comprofiler table</font></p>";
- echo "<p><font color=red>This one can be fixed using menu Components-> Community Builder-> tools and then click `Synchronize users`.</font></p>";
- } else {
- echo "<p><font color=green>All users table rows have links to comprofiler table.</font></p>";
- }
- // 5. check if all cb defined fields have corresponding comprofiler columns
- $sql = "SELECT * FROM #__comprofiler LIMIT 1";
- $_CB_database->setQuery($sql);
- $all_comprofiler_fields_and_values = $_CB_database->loadAssoc();
- $all_comprofiler_fields = array();
- while ( false != ( list( $_cbfield ) = each( $all_comprofiler_fields_and_values ) ) ) {
- array_push( $all_comprofiler_fields, $_cbfield );
- }
- $sql = "SELECT * FROM #__comprofiler_fields WHERE `name` != 'NA' AND `table` = '#__comprofiler'";
- $_CB_database->setQuery( $sql );
- $field_rows = $_CB_database->loadObjectList( null, 'moscomprofilerFields', array( &$_CB_database ) );
- if ( $field_rows === null ) {
- echo "<p><font color=red>ERROR: sql query: " . htmlspecialchars( $sql ) . " : returned error: " . stripslashes( $_CB_database->getErrorMsg() ) . "</font></p>";
- } else {
- $html_output = array();
- $cb11 = true;
- foreach ( $field_rows as $field_row ) {
- if ( $field_row->tablecolumns !== null ) {
- // CB 1.2 way:
- if ( $field_row->tablecolumns != '' ) {
- $tableColumns = explode( ',', $field_row->tablecolumns );
- foreach ( $tableColumns as $col ) {
- if ( ! in_array( $col, $all_comprofiler_fields ) ) {
- $html_output[] = "<p><font color=red> - Field " . $field_row->name . " - Column " . $col . " is missing from comprofiler table.</font></p>";
- }
- }
- }
- $cb11 = false;
- } else {
- // cb 1.1 way
- if ( ! in_array( $field_row->name, $all_comprofiler_fields ) ) {
- $html_output[] = "<p><font color=red> - Column " . $field_row->name . " is missing from comprofiler table.</font></p>";
- }
- }
- }
- if ( count( $html_output ) > 0 ) {
- echo "<p><font color=red>There are " . count( $html_output ) . " column(s) missing in the comprofiler table, which are defined as fields (rows in comprofiler_fields):</font></p>";
- echo implode( '', $html_output );
- echo "<p><font color=red>This one can be fixed by deleting and recreating the field(s) using components -> Community Builder -> Field Management.<br />"
- . "Please additionally make sure that columns in comprofiler table <strong>are not also duplicated in users table</strong>.</font></p>";
- } elseif ( $cb11 ) {
- echo "<p><font color=red>All Community Builder fields from comprofiler_fields are present as columns in the comprofiler table, but comprofiler_fields table is not yet upgraded to CB 1.2 table structure. You can do this by clicking on the upgrade link below.</font></p>";
- } else {
- echo "<p><font color=green>All Community Builder fields from comprofiler_fields are present as columns in the comprofiler table.</font></p>";
- }
- }
- // 6. check if users table has id=0 in it
- $sql = "SELECT u.id FROM #__users u WHERE u.id = 0";
- $_CB_database->setQuery($sql);
- $bad_rows = $_CB_database->loadObjectList();
- if ( $bad_rows === null ) {
- echo "<p><font color=red>ERROR: sql query: " . htmlspecialchars( $sql ) . " : returned error: " . stripslashes( $_CB_database->getErrorMsg() ) . "</font></p>";
- } elseif (count($bad_rows)!=0) {
- echo "<p><font color=red>Warning: ".count($bad_rows)." entries in users table with id=0.</font></p>";
- foreach ($bad_rows as $bad_row) {
- echo "<p><font color=red>users id=" . $bad_row->id . " is not allowed.</font></p>";
- }
- echo "<p><font color=red>This one can be fixed in SQL using a tool like phpMyAdmin. <strong><u>You also need to check in SQL if id is autoincremented.<u><strong></font></p>";
- } else {
- echo "<p><font color=green>users table has no zero id row.</font></p>";
- }
- // 7. check if comprofiler table has id=0 in it
- $sql = "SELECT c.id FROM #__comprofiler c WHERE c.id = 0";
- $_CB_database->setQuery($sql);
- $bad_rows = $_CB_database->loadObjectList();
- if ( $bad_rows === null ) {
- echo "<p><font color=red>ERROR: sql query: " . htmlspecialchars( $sql ) . " : returned error: " . stripslashes( $_CB_database->getErrorMsg() ) . "</font></p>";
- } elseif (count($bad_rows)!=0) {
- echo "<p><font color=red>Warning: ".count($bad_rows)." entries in comprofiler table with id=0.</font></p>";
- foreach ($bad_rows as $bad_row) {
- echo "<p><font color=red>comprofiler id=" . $bad_row->id . " is not allowed.</font></p>";
- }
- echo "<p><font color=red>This one can be fixed using menu Components-> Community Builder-> tools and then click `Synchronize users` if users table has no such entry with id=0, otherwise in SQL using a tool like phpMyAdmin.</font></p>";
- } else {
- echo "<p><font color=green>comprofiler table has no zero id row.</font></p>";
- }
- // 8. check if comprofiler table has user_id != id in it
- $sql = "SELECT c.id, c.user_id FROM #__comprofiler c WHERE c.id <> c.user_id";
- $_CB_database->setQuery($sql);
- $bad_rows = $_CB_database->loadObjectList();
- if ( $bad_rows === null ) {
- echo "<p><font color=red>ERROR: sql query: " . htmlspecialchars( $sql ) . " : returned error: " . stripslashes( $_CB_database->getErrorMsg() ) . "</font></p>";
- } elseif (count($bad_rows)!=0) {
- echo "<p><font color=red>Warning: ".count($bad_rows)." entries in comprofiler table with user_id <> id.</font></p>";
- foreach ($bad_rows as $bad_row) {
- echo "<p><font color=red>comprofiler id=" . $bad_row->id . " is different from user_id=" . $bad_row->user_id . ".</font></p>";
- }
- echo "<p><font color=red>This one can be fixed using menu Components-> Community Builder-> tools and then click `Synchronize users`.</font></p>";
- } else {
- echo "<p><font color=green>All rows in comprofiler table have user_id columns identical to id columns.</font></p>";
- }
- // 9. Check if images/comprofiler is writable:
- $folder = 'images/comprofiler/';
- if ( $ueConfig['allowAvatarUpload'] == 1 ) {
- echo "<p>Checking Community Builder folders:</p>";
- if ( ! is_writable( $_CB_framework->getCfg('absolute_path'). '/' . $folder ) ) {
- echo '<font color="red">Avatars and thumbnails folder: ' . $_CB_framework->getCfg('absolute_path') . '/' . $folder . ' is NOT writeable by the webserver.</font>';
- } else {
- echo '<font color="green">Avatars and thumbnails folder is Writeable.</font>';
- }
- }
- // 10. check if #__core_acl_aro table is in sync with users table : A: user -> aro
- $sql = "SELECT u.id FROM #__users u LEFT JOIN #__core_acl_aro a ON a.section_value = 'users' AND a.value = CAST( u.id AS CHAR ) WHERE a.value IS NULL";
- $_CB_database->setQuery($sql);
- $bad_rows = $_CB_database->loadObjectList();
- if ( $bad_rows === null ) {
- echo "<p><font color=red>ERROR: sql query: " . htmlspecialchars( $sql ) . " : returned error: " . stripslashes( $_CB_database->getErrorMsg() ) . "</font></p>";
- } elseif ( count( $bad_rows ) != 0 ) {
- echo "<p><font color=red>Warning: ".count($bad_rows)." entries in the users table without corresponding core_acl_aro table rows.</font></p>";
- $badids = array();
- foreach ($bad_rows as $bad_row) {
- $badids[(int) $bad_row->id] = $bad_row->id;
- }
- echo "<p><font color=red>user id: " . implode( ', ', $badids ) . " are missing in core_acl_aro table" . ( isset( $badids[0] ) ? " This user entry with id 0 should be removed, as it's not allowed." : "" ) . "</font></p>";
- echo "<p><font color=red>This one can be fixed in SQL using a tool like phpMyAdmin.</font></p>";
- } else {
- echo "<p><font color=green>All users table rows have ACL entries in core_acl_aro table.</font></p>";
- }
- // 11. check if #__core_acl_aro table is in sync with users table : B: aro -> user
- if ( checkJversion() == 1 ) {
- $sql = "SELECT a.value AS id, a.id AS aro_id FROM #__core_acl_aro a LEFT JOIN #__users u ON u.id = a.value WHERE a.section_value = 'users' AND u.id IS NULL";
- } else {
- $sql = "SELECT a.value AS id, a.aro_id FROM #__core_acl_aro a LEFT JOIN #__users u ON u.id = a.value WHERE a.section_value = 'users' AND u.id IS NULL";
- }
- $_CB_database->setQuery($sql);
- $bad_rows = $_CB_database->loadObjectList();
- if ( $bad_rows === null ) {
- echo "<p><font color=red>ERROR: sql query: " . htmlspecialchars( $sql ) . " : returned error: " . stripslashes( $_CB_database->getErrorMsg() ) . "</font></p>";
- } elseif (count($bad_rows)!=0) {
- echo "<p><font color=red>Warning: ".count($bad_rows)." entries in the core_acl_aro table without corresponding users table rows.</font></p>";
- $badids = array();
- foreach ($bad_rows as $bad_row) {
- $badids[(int) $bad_row->id] = "user id=" . $bad_row->id . " (aro_id=" . $bad_row->aro_id . ")";
- }
- echo "<p><font color=red>Following entries of core_acl_aro table are missing in users table: " . implode( ', ', $badids ) . '.' . ( isset( $badids[0] ) ? "<br /> This core_acl_aro entry with (user) value 0 should be removed, as it's not allowed." : "" ) . ( ( $bad_row->aro_id == 0 ) ? " This core_acl_aro entry with aro_id 0 should be removed, as it's not allowed." : "" ) . "</font></p>";
- echo "<p><font color=red>This one can be fixed in SQL using a tool like phpMyAdmin.</font></p>";
- } else {
- echo "<p><font color=green>All users table rows have ACL entries in core_acl_aro table.</font></p>";
- }
- // 12. check if #__core_acl_groups_aro_map table is in sync with #__core_acl_aro table A: aro -> groups
- if ( checkJversion() == 1 ) {
- $sql = "SELECT a.value AS id, a.id AS aro_id FROM #__core_acl_aro a LEFT JOIN #__core_acl_groups_aro_map g ON g.aro_id = a.id WHERE g.aro_id IS NULL";
- } else {
- $sql = "SELECT a.value AS id, a.aro_id FROM #__core_acl_aro a LEFT JOIN #__core_acl_groups_aro_map g ON g.aro_id = a.aro_id WHERE g.aro_id IS NULL";
- }
- $_CB_database->setQuery($sql);
- $bad_rows = $_CB_database->loadObjectList();
- if ( $bad_rows === null ) {
- echo "<p><font color=red>ERROR: sql query: " . htmlspecialchars( $sql ) . " : returned error: " . stripslashes( $_CB_database->getErrorMsg() ) . "</font></p>";
- } elseif (count($bad_rows)!=0) {
- echo "<p><font color=red>Warning: ".count($bad_rows)." entries in the core_acl_aro table without corresponding core_acl_groups_aro_map table rows.</font></p>";
- $badids = array();
- foreach ($bad_rows as $bad_row) {
- $badids[(int) $bad_row->id] = "user id=" . $bad_row->id . " (aro_id=" . $bad_row->aro_id . ")";
- }
- echo "<p><font color=red>Following entries of core_acl_aro table are missing in core_acl_groups_aro_map table: " . implode( ', ', $badids ) . '.' . ( isset( $badids[0] ) ? "<br /> This core_acl_aro entry with (user) value 0 should be removed, as it's not allowed." : "" ) . ( ( $bad_row->aro_id == 0 ) ? " This core_acl_aro entry with aro_id 0 should be removed, as it's not allowed." : "" ) . "</font></p>";
- echo "<p><font color=red>This one can be fixed in SQL using a tool like phpMyAdmin.</font></p>";
- } else {
- echo "<p><font color=green>All core_acl_aro table rows have ACL entries in core_acl_groups_aro_map table.</font></p>";
- }
- // 13. check if #__core_acl_groups_aro_map table is in sync with #__core_acl_aro table B: groups -> aro
- if ( checkJversion() == 1 ) {
- $sql = "SELECT g.aro_id AS id FROM #__core_acl_groups_aro_map g LEFT JOIN #__core_acl_aro a ON a.id = g.aro_id WHERE a.id IS NULL";
- } else {
- $sql = "SELECT g.aro_id AS id FROM #__core_acl_groups_aro_map g LEFT JOIN #__core_acl_aro a ON a.aro_id = g.aro_id WHERE a.aro_id IS NULL";
- }
- $_CB_database->setQuery($sql);
- $bad_rows = $_CB_database->loadObjectList();
- if ( $bad_rows === null ) {
- echo "<p><font color=red>ERROR: sql query: " . htmlspecialchars( $sql ) . " : returned error: " . stripslashes( $_CB_database->getErrorMsg() ) . "</font></p>";
- } elseif (count($bad_rows)!=0) {
- echo "<p><font color=red>Warning: ".count($bad_rows)." entries in the core_acl_groups_aro_map without corresponding core_acl_aro table table rows.</font></p>";
- $badids = array();
- foreach ($bad_rows as $bad_row) {
- $badids[(int) $bad_row->id] = $bad_row->id;
- }
- echo "<p><font color=red>aro_id = " . implode( ', ', $badids ) . " are missing in core_acl_aro table table." . ( isset( $badids[0] ) ? " This entry with aro_id 0 should be removed, as it's not allowed." : "" ) . "</font></p>";
- echo "<p><font color=red>This one can be fixed in SQL using a tool like phpMyAdmin.</font></p>";
- } else {
- echo "<p><font color=green>All core_acl_aro table rows have ACL entries in core_acl_groups_aro_map table.</font></p>";
- }
- cbimport( 'cb.dbchecker' );
- $dbChecker = new CBdbChecker( $_CB_database );
- $result = $dbChecker->checkDatabase( false );
- $_PLUGINS->loadPluginGroup('user');
- $messagesAfter = $_PLUGINS->trigger( 'onAfterCheckCbDb', true );
- $dbName = "Core CB";
- $messagesBefore = array();
- HTML_comprofiler::fixcbdbShowResults( $dbChecker, false, false, $result, $messagesBefore, $messagesAfter, $dbName, $dbId );
- echo '</div>';
- // adapt published fields to global CB config (regarding name type)
- _cbAdaptNameFieldsPublished( $ueConfig );
- } else {
- // Check plugins db:
- $dbName = "CB plugin";
- $messagesBefore = array();
- $messagesAfter = array();
- cbimport( 'cb.installer' );
- $sql = 'SELECT `id`, `name` FROM `#__comprofiler_plugin` ORDER BY `ordering`';
- $_CB_database->setQuery( $sql );
- $plugins = $_CB_database->loadObjectList();
- if ( is_array( $plugins ) ) {
- $cbInstaller = new cbInstallerPlugin();
- foreach ( $plugins as $plug ) {
- $result = $cbInstaller->checkDatabase( $plug->id, false );
- if ( is_bool( $result ) ) {
- HTML_comprofiler::fixcbdbShowResults( $cbInstaller, false, false, $result, $messagesBefore, $messagesAfter, $dbName . ' "' . $plug->name . '"', $dbId, false );
- } elseif ( is_string( $result ) ) {
- echo '<div style="color:orange;">' . $dbName . ' "' . $plug->name . '"' . ': ' . $result . '</div>';
- } else {
- echo '<div style="color:black;">' . $dbName . ' "' . $plug->name . '"' . ': no database or no database description.</div>';
- }
- }
- }
- $dbName = "CB plugins";
- $null = null;
- HTML_comprofiler::fixcbdbShowResults( $null, false, false, $result, array(), array(), $dbName, $dbId, true );
- }
- global $_CB_Backend_Title;
- $_CB_Backend_Title = array( 0 => array( 'cbicon-48-tools', "CB Tools: Check " . $dbName . " database: Results" ) );
- }
- function fixcbdb( $dryRun, $dbId = 0 ) {
- global $_CB_database, $_CB_framework, $ueConfig, $_PLUGINS;
- // Try extending time, as unziping/ftping took already quite some... :
- @set_time_limit( 240 );
- $dryRun = ( $dryRun == 1 );
- if ( $dbId == 0 ) {
- // Fix core CB:
- $dbName = "Core CB";
- $_PLUGINS->loadPluginGroup('user');
- $messagesBefore = $_PLUGINS->trigger( 'onBeforeFixDb', array( $dryRun ) );
- cbimport( 'cb.dbchecker' );
- $dbChecker = new CBdbChecker( $_CB_database );
- $result = $dbChecker->checkDatabase( true, $dryRun );
- $messagesAfter = $_PLUGINS->trigger( 'onAfterFixDb', array( $dryRun ) );
- // adapt published fields to global CB config (regarding name type)
- _cbAdaptNameFieldsPublished( $ueConfig );
- } else {
- // Fix plugin $dbId:
- $dbName = "CB plugin";
- $messagesBefore = array();
- $messagesAfter = array();
- cbimport( 'cb.installer' );
- $sql = 'SELECT `id`, `name` FROM `#__comprofiler_plugin` ORDER BY `ordering`';
- $_CB_database->setQuery( $sql );
- $plugins = $_CB_database->loadObjectList();
- if ( is_array( $plugins ) ) {
- $cbInstaller = new cbInstallerPlugin();
- foreach ( $plugins as $plug ) {
- $result = $cbInstaller->checkDatabase( $plug->id, true, $dryRun );
- if ( is_bool( $result ) ) {
- HTML_comprofiler::fixcbdbShowResults( $cbInstaller, true, $dryRun, $result, $messagesBefore, $messagesAfter, $dbName . ' "' . $plug->name . '"', $dbId, false );
- } elseif ( is_string( $result ) ) {
- echo '<div style="color:orange;">' . $dbName . ' "' . $plug->name . '"' . ': ' . $result . '</div>';
- } else {
- echo '<div style="color:black;">' . $dbName . ' "' . $plug->name . '"' . ': no database or no database description.</div>';
- }
- }
- }
- $dbName = "CB plugins";
- $null = null;
- }
- HTML_comprofiler::secureAboveForm('fixcbdb');
- outputCbTemplate( 2 );
- outputCbJs( 2 );
- global $_CB_Backend_Title;
- $_CB_Backend_Title = array( 0 => array( 'cbicon-48-tools', "CB Tools: Fix " . $dbName . " database: " . ( $dryRun ? 'Dry-run:' : 'Fixed:' ) . " Results" ) );
- HTML_comprofiler::fixcbdbShowResults( $dbChecker, true, $dryRun, $result, $messagesBefore, $messagesAfter, $dbName, $dbId );
- }
- function loadTools() {
- HTML_comprofiler::showTools();
- }
- /**
- * Compacts the ordering sequence of the selected records
- * @param array of table key ids which need to get saved ($row[]->ordering contains old ordering and $_POST['order'] contains new ordering)
- * @param object derived from comprofilerDBTable of corresponding class
- * @param string Additional "WHERE" query to limit ordering to a particular subset of records
- */
- function saveOrder( $cid, &$row, $conditionStatement ) {
- global $_CB_database,$_POST;
- $total = count( $cid );
- $order = cbGetParam( $_POST, 'order', array(0) );
- $conditions = array();
- $cidsChanged = array();
- // update ordering values
- for( $i=0; $i < $total; $i++ ) {
- $row->load( (int) $cid[$i] );
- if ($row->ordering != $order[$i]) {
- $row->ordering = $order[$i];
- if (!$row->store( (int) $cid[$i])) {
- echo "<script type="text/javascript"> alert('saveOrder:".$_CB_database->getErrorMsg()."'); window.history.go(-1); </script>n";
- exit();
- } // if
- $cidsChanged[] = $cid[$i];
- // remember to updateOrder this group if multiple groups (conditionStatement gives the group)
- if ($conditionStatement) {
- $condition=null; // to make php checker happy: the next line defines $condition
- eval($conditionStatement);
- $found = false;
- foreach ( $conditions as $cond )
- if ($cond[1]==$condition) {
- $found = true;
- break;
- } // if
- if (!$found) $conditions[] = array($cid[$i], $condition);
- }
- } // if
- } // for
- if ($conditionStatement) {
- // execute updateOrder for each group
- foreach ( $conditions as $cond ) {
- $row->load( (int) $cond[0] );
- $row->updateOrder( $cond[1], $cidsChanged );
- } // foreach
- } else if ($cidsChanged) {
- $row->load( (int) $cidsChanged[0] );
- $row->updateOrder( null, $cidsChanged );
- }
- return 'New ordering saved';
- } // saveOrder
- function saveFieldOrder( &$cid ) {
- global $_CB_database;
- $row = new moscomprofilerFields( $_CB_database );
- $msg = saveOrder( $cid, $row, "$condition = "tabid=$row->tabid";" );
- cbRedirect( 'index2.php?option=com_comprofiler&task=showField', $msg );
- } // saveFieldOrder
- function saveTabOrder( &$cid ) {
- global $_CB_database;
- $row = new moscomprofilerTabs( $_CB_database );
- $msg = saveOrder( $cid, $row, "$condition = "position='$row->position' AND ordering > -10000 AND ordering < 10000 ";" );
- cbRedirect( 'index2.php?option=com_comprofiler&task=showTab', $msg );
- } // saveTabOrder saveOrder
- function saveListOrder( &$cid ) {
- global $_CB_database;
- $row = new moscomprofilerLists( $_CB_database );
- $msg = saveOrder( $cid, $row, null );
- cbRedirect( 'index2.php?option=com_comprofiler&task=showLists', $msg );
- } // saveListOrder saveOrder
- //plugin
- function viewPlugins( $option ) {
- global $_CB_database, $_CB_framework, $_CB_joomla_adminpath;
- $limit = (int) $_CB_framework->getCfg( 'list_limit' );
- if ( $limit == 0 ) {
- $limit = 10;
- }
- $limit = $_CB_framework->getUserStateFromRequest( "viewlistlimit", 'limit', $limit );
- $lastCBlist = $_CB_framework->getUserState( "view{$option}lastCBlist", null );
- if ($lastCBlist == 'showplugins') {
- $limitstart = $_CB_framework->getUserStateFromRequest( "view{$option}limitstart", 'limitstart', 0 );
- $lastSearch = $_CB_framework->getUserState( "search{$option}", null );
- $search = $_CB_framework->getUserStateFromRequest( "search{$option}", 'search', '' );
- if ($lastSearch != $search) {
- $limitstart = 0;
- $_CB_framework->setUserState( "view{$option}limitstart", $limitstart );
- }
- $search = trim( strtolower( $search ) );
- $filter_type = $_CB_framework->getUserStateFromRequest( "filter_type{$option}", 'filter_type', "0" );
- } else {
- clearSearchBox();
- $search="";
- $limitstart = 0;
- $_CB_framework->setUserState( "view{$option}limitstart", $limitstart );
- $_CB_framework->setUserState( "view{$option}lastCBlist", "showplugins" );
- $filter_type = "0";
- $_CB_framework->setUserState( "filter_type{$option}", $filter_type );
- }
- $where=array();
- // used by filter
- if ( $filter_type ) {
- $where[] = "m.type = '$filter_type'";
- }
- if ( $search ) {
- $search = cbEscapeSQLsearch( trim( strtolower( cbGetEscaped($search))));
- $where[] = "LOWER( m.name ) LIKE '%$search%'";
- }
- // get the total number of records
- $query = "SELECT COUNT(*) FROM #__comprofiler_plugin AS m ". ( count( $where ) ? "n WHERE " . implode( ' AND ', $where ) : '' );
- $_CB_database->setQuery( $query );
- $total = $_CB_database->loadResult();
- if ($total <= $limitstart) $limitstart = 0;
- cbimport( 'cb.pagination' );
- $pageNav = new cbPageNav( $total, $limitstart, $limit );
- $query = "SELECT m.*, u.name AS editor, g.name AS groupname"
- . "n FROM #__comprofiler_plugin AS m"
- . "n LEFT JOIN #__users AS u ON u.id = m.checked_out"
- . "n LEFT JOIN #__groups AS g ON g.id = m.access"
- . ( count( $where ) ? "n WHERE " . implode( ' AND ', $where ) : '' )
- . "n GROUP BY m.id"
- . "n ORDER BY m.type ASC, m.ordering ASC, m.name ASC"
- . "n LIMIT " . (int) $pageNav->limitstart . ", " . (int) $pageNav->limit
- ;
- $_CB_database->setQuery( $query );
- $rows = $_CB_database->loadObjectList();
- if ($_CB_database->getErrorNum()) {
- echo $_CB_database->stderr();
- return false;
- }
- // get list of Positions for dropdown filter
- $query = "SELECT type AS value, type AS text"
- . "n FROM #__comprofiler_plugin"
- . "n GROUP BY type"
- . "n ORDER BY type"
- ;
- $types[] = moscomprofilerHTML::makeOption( '0', (!defined('_SEL_TYPE')) ? '- Select Type -' : _SEL_TYPE ); // Mambo 4.5.1 Compatibility
- $_CB_database->setQuery( $query );
- $types = array_merge( $types, $_CB_database->loadObjectList() );
- $lists['type'] = moscomprofilerHTML::selectList( $types, 'filter_type', 'class="inputbox" size="1" onchange="document.adminForm.submit( );"', 'value', 'text', $filter_type, 2 );
- HTML_comprofiler::showPlugins( $rows, $pageNav, $option, $lists, $search );
- return true;
- }
- /**
- * Saves the CB plugin after an edit form submit
- */
- function savePlugin( $option, $task ) {
- global $_CB_database, $_PLUGINS;
- if ( $task == 'showPlugins' ) {
- cbRedirect( 'index2.php?option=' . $option . '&task=showPlugins');
- return;
- }
- $action = cbGetParam( $_REQUEST, 'action' );
- if ( ! $action ) {
- savePluginParams( $option, $task );
- } else {
- $uid = cbGetParam( $_REQUEST, 'cid' );
- $row = new moscomprofilerPlugin($_CB_database);
- if ( $uid ) {
- $row->load( (int) $uid );
- }
- // get params values
- if ($row->type !== "language") {
- $_PLUGINS->loadPluginGroup($row->type,array($row->id), 0);
- }
- // xml file for plugin
- $element =& $_PLUGINS->loadPluginXML( 'action', $action, $row->id );
- $_REQUEST['task'] = 'editPlugin'; // so that the actionPath matches
- $params =& new cbParamsBase( $row->params );
- editPluginView( $row, $option, 'editPlugin', $uid, $action, $element, $task, $params );
- }
- }
- /**
- * Saves the CB plugin params after an edit form submit
- */
- function savePluginParams( $option, $task ) {
- global $_CB_database, $_POST;
- if ( isset( $_POST['params'] ) ) {
- $_POST['params'] = cbParamsEditorController::getRawParams( $_POST['params'] );
- } else {
- $_POST['params'] = null;
- }
- $row = new moscomprofilerPlugin( $_CB_database );
- if (!$row->bind( $_POST )) {
- echo "<script type="text/javascript"> alert('".$row->getError()."'); window.history.go(-1); </script>n";
- exit();
- }
- if (!$row->check()) {
- echo "<script type="text/javascript"> alert('".$row->getError()."'); window.history.go(-1); </script>n";
- exit();
- }
- if (!$row->store()) {
- echo "<script type="text/javascript"> alert('".$row->getError()."'); window.history.go(-1); </script>n";
- exit();
- }
- $row->checkin();
- $row->updateOrder( "type='".$_CB_database->getEscaped($row->type)."' AND ordering > -10000 AND ordering < 10000 " );
- switch ( $task ) {
- case 'applyPlugin':
- $msg = 'Successfully Saved changes to Plugin: '. $row->name;
- cbRedirect( 'index2.php?option='. $option .'&task=editPlugin&cid='. $row->id, $msg );
- case 'savePlugin':
- default:
- $msg = 'Successfully Saved Plugin: '. $row->name;
- cbRedirect( 'index2.php?option='. $option .'&task=showPlugins' , $msg );
- break;
- }
- }
- /**
- * Compiles information to add or edit a plugin
- * @param string The current GET/POST option
- * @param integer The unique id of the record to edit
- */
- function editPlugin( $option, $task, $uid) {
- global $_CB_database, $_CB_framework, $_PLUGINS, $_POST;
- $action = cbGetParam( $_REQUEST, 'action', null );
- if ( ! $uid ) {
- $uid = cbGetParam( $_POST, 'id' );
- }
- $row = new moscomprofilerPlugin($_CB_database);
- if ( $uid ) {
- // load the row from the db table
- $row->load( (int) $uid );
- }
- // fail if checked out not by 'me'
- if ($row->checked_out && $row->checked_out <> $_CB_framework->myId() ) {
- echo "<script type="text/javascript">alert('The plugin $row->name is currently being edited by another administrator'); document.location.href='index2.php?option=$option'</script>n";
- exit(0);
- }
- // get params values
- if ( $row->type !== "language" && $row->id ) {
- $_PLUGINS->loadPluginGroup($row->type,array($row->id), 0);
- }
- // xml file for plugin
- $element = null;
- if ($uid) {
- $element =& $_PLUGINS->loadPluginXML( 'action', $action, $row->id );
- }
- if ( $element && ( $action === null ) ) {
- $adminActionsModel =& $element->getChildByNameAttr( 'actions', 'ui', 'admin' );
- if ( $adminActionsModel ) {
- $defaultAction =& $adminActionsModel->getChildByNameAttr( 'action', 'name', 'default' );
- $actionRequest = $defaultAction->attributes( 'request' );
- $actionAction = $defaultAction->attributes( 'action' );
- if ( ( $actionRequest === '' ) && ( $actionRequest === '' ) ) {
- $action = $actionAction;
- }
- }
- }
- if ( $element ) {
- $description =& $element->getChildByNameAttributes( 'description' );
- } else {
- $description = null;
- }
- if ( $description ) {
- $row->description = $description->data();
- } else {
- $row->description = '-';
- }
- if ( $action === null ) {
- $params =& new cbParamsEditorController( $row->params, $element, $element, $row );
- $options = array( 'option' => $option, 'task' => $task, 'pluginid' => $uid, 'tabid' => null );
- $params->setOptions( $options );
- editPluginSettingsParams( $row, $option, $task, $uid, $element, $params, $options );
- } else {
- $params =& new cbParamsBase( $row->params );
- editPluginView( $row, $option, $task, $uid, $action, $element, 'editPlugin', $params );
- }
- }
- function editPluginSettingsParams( &$row, $option, $task, $uid, &$element, &$params, &$options ) {
- global $_CB_database, $_CB_framework;
- $lists = array();
- // get list of groups
- if ($row->access == 99 || $row->client_id == 1) {
- $lists['access'] = 'Administrator<input type="hidden" name="access" value="99" />';
- } else {
- // build the html select list for the group access
- $_CB_database->setQuery( 'SELECT id AS value, name AS text FROM #__groups ORDER BY id' );
- $lists['access'] = moscomprofilerHTML::selectList( $_CB_database->loadObjectList(), 'access', 'class="inputbox" size="3"', 'value', 'text', intval( $row->access ), 2 );
- }
- if ($uid) {
- $row->checkout( $_CB_framework->myId() );
- if ( $row->ordering > -10000 && $row->ordering < 10000 ) {
- // build the html select list for ordering
- $query = "SELECT ordering AS value, name AS text"
- . "n FROM #__comprofiler_plugin"
- . "n WHERE type='" . $_CB_database->getEscaped( $row->type ) . "'"
- . "n AND published > 0"
- . "n AND ordering > -10000"
- . "n AND ordering < 10000"
- . "n ORDER BY ordering"
- ;
- $order = _cbGetOrderingList( $query );
- $lists['ordering'] = moscomprofilerHTML::selectList( $order, 'ordering', 'class="inputbox" size="1"', 'value', 'text', intval( $row->ordering ), 2 );
- } else {
- $lists['ordering'] = '<input type="hidden" name="ordering" value="'. $row->ordering .'" />This plugin cannot be reordered';
- }
- $lists['type'] = '<input type="hidden" name="type" value="'. $row->type .'" />'. $row->type;
- if ($element && $element->name() == 'cbinstall' && $element->attributes( 'type' ) == 'plugin' ) {
- $description =& $element->getElementByPath( 'description' );
- $row->description = ( $description ) ? trim( $description->data() ) : '';
- }
- } else {
- $row->folder = '';
- $row->ordering = 999;
- $row->published = 1;
- $row->description = '';
- $folders = cbReadDirectory( $_CB_framework->getCfg('absolute_path') . '/components/com_comprofiler/plugin/' );
- $folders2 = array();
- foreach ($folders as $folder) {
- if (is_dir( $_CB_framework->getCfg('absolute_path') . '/components/com_comprofiler/plugin/' . $folder ) && ( $folder <> 'CVS' ) ) {
- $folders2[] = moscomprofilerHTML::makeOption( $folder );
- }
- }
- $lists['type'] = moscomprofilerHTML::selectList( $folders2, 'type', 'class="inputbox" size="1"', 'value', 'text', null, 2 );
- $lists['ordering'] = '<input type="hidden" name="ordering" value="'. $row->ordering .'" />New items default to the last place. Ordering can be changed after this item is saved.';
- }
- $Yesoptions = array();
- $Yesoptions[] = moscomprofilerHTML::makeOption( '1', _UE_YES );
- if ( ( $row->type == 'language' ) || ( $row->id == 1 ) ) {
- $row->published = 1;
- } else {
- $Yesoptions[] = moscomprofilerHTML::makeOption( '0', _UE_NO );
- }
- $lists['published'] = moscomprofilerHTML::radioList( $Yesoptions, 'published', 'class="inputbox"', 'value', 'text', $row->published, 2 );
- HTML_comprofiler::editPlugin( $row, $lists, $params, $options );
- }
- function editPluginView( &$row, $option, $task, $uid, $action, &$element, $mode, &$pluginParams ) {
- global $_CB_database;
- if ( ! $row->id ) {
- echo 'Plugin id not found.';
- return null;;
- }
- if ( ! $element ) {
- echo 'No plugin XML found.';
- return null;
- }
- $adminHandlerModel =& $element->getChildByNameAttr( 'handler', 'ui', 'admin' );
- if ( ! $adminHandlerModel ) {
- echo 'No admin handler defined in XML';
- return null;
- }
- $class = $adminHandlerModel->attributes( 'class' );
- if ( ! class_exists( $class ) ) {
- echo 'Admin handler class ' . $class . ' does not exist.';
- return null;
- }
- $handler =& new $class( $_CB_database );
- return $handler->editPluginView( $row, $option, $task, $uid, $action, $element, $mode, $pluginParams );
- }
- /**
- * Compiles information to add or edit a plugin
- * @param string The current GET/POST option
- * @param integer The unique id of the record to edit
- */
- function pluginMenu( $option, $uid) {
- global $_CB_database, $_CB_framework, $_PLUGINS;
- if ( ! $uid ) {
- echo "<script type="text/javascript">alert('No plugin selected'); document.location.href='index2.php?option=$option'</script>n";
- exit(0);
- }
- $row = new moscomprofilerPlugin($_CB_database);
- // load the row from the db table
- $row->load( (int) $uid );
- // fail if checked out not by 'me'
- if ($row->checked_out && $row->checked_out <> $_CB_framework->myId() ) {
- echo "<script type="text/javascript">alert('The plugin $row->name is currently being edited by another administrator'); document.location.href='index2.php?option=$option'</script>n";
- exit(0);
- }
- $basepath = $_CB_framework->getCfg('absolute_path') . '/components/com_comprofiler/plugin/' . $row->type . '/'.$row->folder.'/';
- $phpfile = $basepath . "admin." . $row->element . '.php';
- // see if there is an xml install file, must be same name as element
- if (file_exists( $phpfile )) {
- // get params values
- if ( $row->type !== "language" ) {
- $_PLUGINS->loadPluginGroup($row->type,array($row->id), 0);
- }
- $menu = cbGetParam( $_REQUEST, 'menu' );
- $element =& $_PLUGINS->loadPluginXML( 'menu', $menu, $row->id ); // xml file for plugin
- $params =& new cbParamsEditorController( $row->params, $element, $element, $row );
- outputCbTemplate( 2 );
- outputCbJs( 2 );
- echo initToolTip( 2 );
- require_once( $phpfile );
- $classname = $row->element . "Admin";
- $adminClass = new $classname();
- echo $adminClass->menu( $row, $menu, $params );
- } else {
- echo "<script type="text/javascript">alert('The plugin $row->name has no administrator file $phpfile'); document.location.href='index2.php?option=$option'</script>n";
- exit(0);
- }
- }
- /**
- * Deletes one or more plugins
- *
- * Also deletes associated entries in the #__comprofiler_plugin table.
- * @param array An array of unique category id numbers
- */
- function removePlugin( &$cid, $option ) {
- if (count( $cid ) < 1) {
- echo "<script type="text/javascript"> alert('Select a plugin to delete'); window.history.go(-1);</script>n";
- exit;
- }
- $installer = new cbInstallerPlugin();
- foreach($cid AS $id) {
- $ret = $installer->uninstall($id,$option);
- if ( ! $ret ) {
- break;
- }
- }
- if ( $ret ) {
- HTML_comprofiler::showInstallMessage( $installer->getError(), 'Uninstall Plugin - '.($ret ? 'Success' : 'Failed'),
- $installer->returnTo( $option, 'showPlugins' ) );
- }
- }
- /**
- * Publishes or Unpublishes one or more plugins
- * @param array An array of unique category id numbers
- * @param integer 0 if unpublishing, 1 if publishing
- */
- function publishPlugin( $cid=null, $publish=1, $option ) {
- global $_CB_database, $_CB_framework;
- if (count( $cid ) < 1) {
- $action = $publish ? 'publish' : 'unpublish';
- echo "<script type="text/javascript"> alert('Select a plugin to $action'); window.history.go(-1);</script>n";
- exit;
- }
- cbArrayToInts($cid);
- if ( $publish == 0 ) {
- foreach ( $cid as $k => $id ) {
- $row = new moscomprofilerPlugin( $_CB_database );
- if ( $row->load( (int) $id ) ) {
- if ( ( $row->type == "language" ) && $row->published ) {
- cbRedirect( 'index2.php?option='. $option .'&task=showPlugins', 'Language plugins cannot be unpublished, only uninstalled', 'error' );
- } elseif ( ( $row->id == 1 ) && $row->published ) {
- cbRedirect( 'index2.php?option='. $option .'&task=showPlugins', 'Core plugin cannot be unpublished', 'error' );
- }
- } else {
- cbRedirect( 'index2.php?option='. $option .'&task=showPlugins', 'Plugin can not be found', 'error' );
- }
- }
- }
- $cids = implode( ',', $cid );
- $query = "UPDATE #__comprofiler_plugin SET published = " . (int) $publish
- . "n WHERE id IN ($cids)"
- . "n AND ((checked_out = 0) OR (checked_out = " . (int) $_CB_framework->myId() . "))"
- ;
- $_CB_database->setQuery( $query );
- if (!$_CB_database->query()) {
- echo "<script type="text/javascript"> alert('".$_CB_database->getErrorMsg()."'); window.history.go(-1); </script>n";
- exit();
- }
- if (count( $cid ) == 1) {
- $row = new moscomprofilerPlugin( $_CB_database );
- $row->checkin( $cid[0] );
- }
- cbRedirect( 'index2.php?option='. $option .'&task=showPlugins' );
- }
- /**
- * Cancels an edit operation
- */
- function cancelPlugin( $option) {
- global $_CB_database, $_POST;
- $row = new moscomprofilerPlugin( $_CB_database );
- $row->bind( $_POST );
- $row->checkin();
- cbRedirect( 'index2.php?option='. $option .'&task=showPlugins' );
- }
- function cancelPluginAction( $option) {
- global $_POST;
- $pluginId = (int) cbGetParam( $_POST, 'cid' );
- if ( $pluginId ) {
- cbRedirect( 'index2.php?option='. $option .'&task=editPlugin&cid=' . $pluginId );
- } else {
- cbRedirect( 'index2.php?option='. $option .'&task=showPlugins' );
- }
- }
- /**
- * Moves the order of a record
- * @param integer The unique id of record
- * @param integer The increment to reorder by
- */
- function orderPlugin( $uid, $inc, $option ) {
- global $_CB_database;
- $row = new moscomprofilerPlugin( $_CB_database );
- $row->load( (int) $uid );
- $row->move( $inc, "type='$row->type' AND ordering > -10000 AND ordering < 10000 " );
- cbRedirect( 'index2.php?option='. $option .'&task=showPlugins' );
- }
- /**
- * changes the access level of a record
- * @param integer The increment to reorder by
- */
- function accessMenu( $uid, $access, $option ) {
- global $_CB_database;
- switch ( $access ) {
- case 'accesspublic':
- $access = 0;
- break;
- case 'accessregistered':
- $access = 1;
- break;
- case 'accessspecial':
- $access = 2;
- break;
- }
- $row = new moscomprofilerPlugin( $_CB_database );
- $row->load( (int) $uid );
- $row->access = $access;
- if ( !$row->check() ) {
- return $row->getError();
- }
- if ( !$row->store() ) {
- return $row->getError();
- }
- cbRedirect( 'index2.php?option='. $option .'&task=showPlugins' );
- return null;
- }
- function savePluginOrder( &$cid ) {
- global $_CB_database;
- $row = new moscomprofilerPlugin( $_CB_database );
- $msg = saveOrder( $cid, $row, "$condition = "type='$row->type' AND ordering > -10000 AND ordering < 10000 ";" );
- cbRedirect( 'index2.php?option=com_comprofiler&task=showPlugins', $msg );
- } // savePluginOrder
- function installPluginUpload() {
- global $_FILES;
- // Try extending time, as unziping/ftping took already quite some... :
- @set_time_limit( 240 );
- HTML_comprofiler::secureAboveForm('showPlugins');
- outputCbTemplate( 2 );
- outputCbJs( 2 );
- echo initToolTip( 2 );
- $option = "com_comprofiler";
- $task = "showPlugins";
- $client = 0;
- //echo "installPluginUpload";
- $installer = new cbInstallerPlugin();
- // Check if file uploads are enabled
- if ( ! (bool) ini_get( 'file_uploads' ) ) {
- HTML_comprofiler::showInstallMessage( "The installer can't continue before file uploads are enabled. Please use the install from directory method.",
- 'Installer - Error', $installer->returnTo( $option, $task, $client ) );
- exit();
- }
- // Check that the zlib is available
- if( ! extension_loaded( 'zlib' ) ) {
- HTML_comprofiler::showInstallMessage( "The installer can't continue before zlib is installed",
- 'Installer - Error', $installer->returnTo( $option, $task, $client ) );
- exit();
- }
- $userfile = cbGetParam( $_FILES, 'userfile', null );
- if ( ! $userfile || ( $userfile == null ) ) {
- HTML_comprofiler::showInstallMessage( 'No file selected', 'Upload new plugin - error',
- $installer->returnTo( $option, $task, $client ));
- exit();
- }
- // $userfile['tmp_name'] = stripslashes( $userfile['tmp_name'] );
- // $userfile['name'] = stripslashes( $userfile['name'] );
- $msg = '';
- $localName = $_FILES['userfile']['name'];
- $resultdir = uploadFile( $_FILES['userfile']['tmp_name'], $localName , $msg ); // $localName is updated here
- if ( $resultdir !== false ) {
- if ( ! $installer->upload( $localName ) ) {
- if ( $installer->unpackDir() ) {
- cleanupInstall( $localName, $installer->unpackDir() );
- }
- HTML_comprofiler::showInstallMessage( $installer->getError(), 'Upload '.$task.' - Upload Failed',
- $installer->returnTo( $option, $task, $client ) );
- }
- $ret = $installer->install();
- cleanupInstall( $localName, null );
- HTML_comprofiler::showInstallMessage( $installer->getError(), 'Upload '.$task.' - ' . ( $ret ? 'Success' : 'Failed' ),
- $installer->returnTo( $option, $task, $client ) );
- cleanupInstall( $localName, $installer->unpackDir() );
- } else {
- HTML_comprofiler::showInstallMessage( $msg, 'Upload '.$task.' - Upload Error',
- $installer->returnTo( $option, $task, $client ) );
- }
- }
- function _cbAdmin_chmod( $filename ) {
- global $_CB_framework;
- cbimport( 'cb.adminfilesystem' );
- $adminFS =& cbAdminFileSystem::getInstance();
- $origmask = null;
- if ( $_CB_framework->getCfg( 'dirperms' ) == '' ) {
- // rely on umask
- // $mode = 0777;
- return true;
- } else {
- $origmask = @umask( 0 );
- $mode = octdec( $_CB_framework->getCfg( 'dirperms' ) );
- }
- $ret = $adminFS->chmod( $filename, $mode );
- if ( isset( $origmask ) ) {
- @umask( $origmask );
- }
- return $ret;
- }
- function uploadFile( $filename, &$userfile_name, &$msg ) {
- global $_CB_framework;
- cbimport( 'cb.adminfilesystem' );
- $adminFS =& cbAdminFileSystem::getInstance();
- $baseDir = _cbPathName( $_CB_framework->getCfg('tmp_path') );
- $userfile_name = $baseDir . $userfile_name; // WARNING: this parameter is returned !
- if ( $adminFS->file_exists( $baseDir ) ) {
- if ( $adminFS->is_writable( $baseDir ) ) {
- if ( move_uploaded_file( $filename, $userfile_name ) ) {
- // if ( _cbAdmin_chmod( $userfile_name ) ) {
- return true;
- // } else {
- // $msg = 'Failed to change the permissions of the uploaded file.';
- // }
- } else {
- $msg = sprintf( 'Failed to move uploaded file to %s directory.', '<code>' . htmlspecialchars( $baseDir ) . '</code>' );
- }
- } else {
- $msg = sprintf( 'Upload failed as %s directory is not writable.', '<code>' . htmlspecialchars( $baseDir ) . '</code>' );
- }
- } else {
- $msg = sprintf( 'Upload failed as %s directory does not exist.', '<code>' . htmlspecialchars( $baseDir ) . '</code>' );
- }
- return false;
- }
- function installPluginDir() {
- // Try extending time, as unziping/ftping took already quite some... :
- @set_time_limit( 240 );
- HTML_comprofiler::secureAboveForm('showPlugins');
- outputCbTemplate( 2 );
- outputCbJs( 2 );
- echo initToolTip( 2 );
- $option="com_comprofiler";
- $task="showPlugins";
- $client=0;
- // echo "installPluginDir";
- $installer = new cbInstallerPlugin();
- $userfile = cbGetParam( $_REQUEST, 'userfile', null );
- // Check if file name exists
- if (!$userfile) {
- HTML_comprofiler::showInstallMessage( 'No file selected', 'Install new plugin from directory - error',
- $installer->returnTo( $option, $task, $client ) );
- exit();
- }
- $path = _cbPathName( $userfile );
- if (!is_dir( $path )) {
- $path = dirname( $path );
- }
- $ret = $installer->install( $path);
- HTML_comprofiler::showInstallMessage( $installer->getError(), 'Install new plugin from directory '.$userfile.' - '.($ret ? 'Success' : 'Failed'),
- $installer->returnTo( $option, $task, $client ) );
- }
- function installPluginURL() {
- global $_CB_framework;
- // Try extending time, as unziping/ftping took already quite some... :
- @set_time_limit( 240 );
- HTML_comprofiler::secureAboveForm('showPlugins');
- outputCbTemplate( 2 );
- outputCbJs( 2 );
- echo initToolTip( 2 );
- $option="com_comprofiler";
- $task="showPlugins";
- $client=0;
- // echo "installPluginURL";
- $installer = new cbInstallerPlugin();
- // Check that the zlib is available
- if(!extension_loaded('zlib')) {
- HTML_comprofiler::showInstallMessage( "The installer can't continue before zlib is installed",
- 'Installer - Error', $installer->returnTo( $option, $task, $client ) );
- exit();
- }
- $userfileURL = cbGetParam( $_REQUEST, 'userfile', null );
- if (!$userfileURL) {
- HTML_comprofiler::showInstallMessage( 'No URL selected', 'Upload new plugin - error',
- $installer->returnTo( $option, $task, $client ));
- exit();
- }
- cbimport( 'cb.adminfilesystem' );
- $adminFS =& cbAdminFileSystem::getInstance();
- if ( $adminFS->isUsingStandardPHP() ) {
- $baseDir = _cbPathName( $_CB_framework->getCfg('tmp_path') );
- } else {
- $baseDir = $_CB_framework->getCfg( 'absolute_path' ) . '/tmp/';
- }
- $userfileName = $baseDir . 'comprofiler_temp.zip';
- $msg = '';
- //echo "step-uploadfile<br />";
- $resultdir = uploadFileURL( $userfileURL, $userfileName, $msg );
- if ($resultdir !== false) {
- //echo "step-upload<br />";
- if (!$installer->upload( $userfileName )) {
- HTML_comprofiler::showInstallMessage( $installer->getError(), 'Download '.$userfileURL.' - Upload Failed',
- $installer->returnTo( $option, $task, $client ) );
- }
- //echo "step-install<br />";
- $ret = $installer->install();
- if ( $ret ) {
- HTML_comprofiler::showInstallMessage( $installer->getError(), 'Download '.$userfileURL.' - '.($ret ? 'Success' : 'Failed'),
- $installer->returnTo( $option, $task, $client ) );
- }
- cleanupInstall( $userfileName, $installer->unpackDir() );
- } else {
- HTML_comprofiler::showInstallMessage( $msg, 'Download '.$userfileURL.' - Download Error',
- $installer->returnTo( $option, $task, $client ) );
- }
- }
- function uploadFileURL( $userfileURL, $userfile_name, &$msg ) {
- global $_CB_framework;
- include_once( $_CB_framework->getCfg('absolute_path') . '/administrator/components/com_comprofiler/Snoopy.class.php' );
- cbimport( 'cb.adminfilesystem' );
- $adminFS =& cbAdminFileSystem::getInstance();
- if ( $adminFS->isUsingStandardPHP() ) {
- $baseDir = _cbPathName( $_CB_framework->getCfg('tmp_path') );
- } else {
- $baseDir = $_CB_framework->getCfg( 'absolute_path' ) . '/tmp';
- }
- if ( file_exists( $baseDir ) ) {
- if ( $adminFS->is_writable( $baseDir ) || ! $adminFS->isUsingStandardPHP() ) {
- $s = new Snoopy();
- $fetchResult = @$s->fetch( $userfileURL );
- if ( $fetchResult && ! $s->error && ( $s->status == 200 ) ) {
- cbimport( 'cb.adminfilesystem' );
- $adminFS =& cbAdminFileSystem::getInstance();
- if ( $adminFS->file_put_contents( $baseDir . $userfile_name, $s->results ) ) {
- if ( _cbAdmin_chmod( $baseDir . $userfile_name ) ) {
- return true;
- } else {
- $msg = 'Failed to change the permissions of the uploaded file '.$baseDir.$userfile_name;
- }
- } else {
- $msg = 'Failed to create and write uploaded file in '.$baseDir.$userfile_name;
- }
- } else {
- $msg = 'Failed to download package file from <code>'.$userfileURL
- .'</code> to <code>/media</code> directory due to following' . ' ' . ( $s->error ? 'error' . ': ' . $s->error : 'status' . ': ' . $s->status . ': ' . $s->response_code );
- }
- } else {
- $msg = sprintf( 'Upload failed as %s directory is not writable.', '<code>' . htmlspecialchars( $baseDir ) . '</code>' );
- }
- } else {
- $msg = sprintf( 'Upload failed as %s directory does not exist.', '<code>' . htmlspecialchars( $baseDir ) . '</code>' );
- }
- return false;
- }
- function clearSearchBox(){
- global $_CB_framework;
- $_CB_framework->setUserState('searchcom_comprofiler','');
- }
- // Ajax: administrator/index3.php?option=com_comprofiler&task=latestVersion&no_html=1&format=raw :
- function latestVersion(){
- global $_CB_framework, $ueConfig;
- include_once( $_CB_framework->getCfg('absolute_path') . '/administrator/components/com_comprofiler/Snoopy.class.php' );
- $s = new Snoopy();
- $s->read_timeout = 90;
- $s->referer = $_CB_framework->getCfg( 'live_site' );
- @$s->fetch('http://www.joomlapolis.com/versions/comprofilerversion.php?currentversion='.urlencode($ueConfig['version']));
- $version_info = $s->results;
- $version_info_pos = strpos($version_info, ":");
- if ($version_info_pos === false) {
- $version = $version_info;
- $info = null;
- } else {
- $version = substr( $version_info, 0, $version_info_pos );
- $info = substr( $version_info, $version_info_pos + 1 );
- }
- if($s->error || $s->status != 200){
- echo '<font color="red">Connection to update server failed: ERROR: ' . $s->error . ($s->status == -100 ? 'Timeout' : $s->status).'</font>';
- } else if($version == $ueConfig['version']){
- echo '<font color="green">' . $version . '</font>' . $info;
- } else {
- echo '<font color="red">' . $version . '</font>' . $info;
- }
- }
- // NB for now duplicated in frontend an admin backend:
- function tabClass( $option, $task, $uid ) {
- global $_CB_framework, $_CB_database, $_PLUGINS, $_REQUEST, $_POST;
- $user = new moscomprofilerUser( $_CB_database );
- if ( ! $user->load( (int) $uid ) ) {
- $user = null;
- }
- $unsecureChars = array( '/', '\', ':', ';', '{', '}', '(', ')', """, "'", '.', ',', "