install.comprofiler.php
上传用户:stephen_wu
上传日期:2008-07-05
资源大小:1757k
文件大小:43k
源码类别:

网络

开发平台:

Unix_Linux

  1. <?php
  2. /**
  3. * Joomla/Mambo Community Builder
  4. * @version $Id: install.comprofiler.php 567 2006-11-19 10:05:00Z beat $
  5. * @package Community Builder
  6. * @subpackage install.comprofiler.php
  7. * @author JoomlaJoe and Beat
  8. * @copyright (C) JoomlaJoe and Beat, www.joomlapolis.com
  9. * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU/GPL version 2
  10. */
  11. // ensure this file is being included by a parent file
  12. if ( ! ( defined( '_VALID_CB' ) || defined( '_JEXEC' ) || defined( '_VALID_MOS' ) ) ) { die( 'Direct Access to this location is not allowed.' ); }
  13. // Try extending time, as unziping/ftping took already quite some... :
  14. @set_time_limit( 240 );
  15. $memMax = trim( @ini_get( 'memory_limit' ) );
  16. if ( $memMax ) {
  17. $last = strtolower( $memMax{strlen( $memMax ) - 1} );
  18. switch( $last ) {
  19. case 'g':
  20. $memMax *= 1024;
  21. case 'm':
  22. $memMax *= 1024;
  23. case 'k':
  24. $memMax *= 1024;
  25. }
  26. if ( $memMax < 16000000 ) {
  27. @ini_set( 'memory_limit', '16M' );
  28. }
  29. if ( $memMax < 32000000 ) {
  30. @ini_set( 'memory_limit', '32M' );
  31. }
  32. if ( $memMax < 48000000 ) {
  33. @ini_set( 'memory_limit', '48M' ); // DOMIT XML parser can be very memory-hungry on PHP < 5.1.3
  34. }
  35. }
  36. ignore_user_abort( true );
  37. /**
  38.  * CB framework
  39.  * @global CBframework $_CB_framework
  40.  */
  41. global $_CB_framework;
  42. /** @global string $_CB_adminpath
  43.  *  @global string $_CB_joomla_adminpath
  44.  *  @global array $ueConfig
  45.  */
  46. global $_CB_joomla_adminpath, $_CB_adminpath, $ueConfig;
  47. if ( defined( 'JPATH_ADMINISTRATOR' ) ) {
  48. $_CB_joomla_adminpath = JPATH_ADMINISTRATOR;
  49. } else {
  50. global $mainframe;
  51. $_CB_joomla_adminpath = $mainframe->getCfg( 'absolute_path' ) . '/administrator';
  52. }
  53. $_CB_adminpath = $_CB_joomla_adminpath . '/components/com_comprofiler';
  54. // include_once( $_CB_adminpath . '/ue_config.php' );
  55. include_once( $_CB_adminpath . '/plugin.class.php' );
  56. //include_once( $_CB_adminpath . '/plugin.foundation.php' );
  57. include_once($_CB_adminpath."/comprofiler.class.php");
  58. $_CB_framework->cbset( '_ui', 2 ); // : we're in 1: frontend, 2: admin back-end
  59. if( $_CB_framework->getCfg( 'debug' ) ) {
  60. ini_set( 'display_errors', true );
  61. error_reporting( E_ALL );
  62. }
  63. /*
  64. Plugins are not yet installed:
  65. $UElanguagePath = $_CB_framework->getCfg( 'absolute_path' ) . '/components/com_comprofiler/plugin/language';
  66. $UElanguage = $_CB_framework->getCfg( 'lang' );
  67. if ( ! file_exists( $UElanguagePath . '/' . $_CB_framework->getCfg( 'lang' ) . '/' . $_CB_framework->getCfg( 'lang' ) . '.php' ) ) {
  68. $UElanguage = 'default_language';
  69. }
  70. include_once( $UElanguagePath . '/' . $UElanguage . '/' . $UElanguage . '.php' );
  71. */
  72. cbimport( 'cb.database' );
  73. cbimport( 'cb.adminfilesystem' );
  74. cbimport( 'cb.xml.simplexml' );
  75. cbimport( 'cb.dbchecker' );
  76. /*
  77. include_once( $_CB_adminpath . '/comprofiler.class.php' );
  78. cbimport( 'cb.installer' );
  79. cbimport( 'cb.params' );
  80. cbimport( 'cb.pagination' );
  81. include_once( $_CB_adminpath . '/imgToolbox.class.php' );
  82. if ( ! $_CB_framework->check_acl( 'canManageUsers', $_CB_framework->myUserType() ) ) {
  83. cbRedirect( 'index2.php', _UE_NOT_AUTHORIZED, 'error' );
  84. }
  85. /** Backend menu: 'show' : only displays close button, 'edit' : special close button
  86.  *  @global stdClass $_CB_Backend_Menu *
  87. global $_CB_Backend_Menu;
  88. $_CB_Backend_Menu = new stdClass();
  89. global $_CB_Backend_Title;
  90. $_CB_Backend_Title = array();
  91. */
  92. function cbInstaller_field_exists( $table, $field ) {
  93. global $_CB_database;
  94. static $cache = array();
  95. if ( ! isset( $cache[$table] ) ) {
  96. $tableDesc = $_CB_database->getTableFields( array( $table ) );
  97. if ( isset( $tableDesc[$table] ) && is_array( $tableDesc[$table] ) ) {
  98. $cache[$table] = $tableDesc[$table];
  99. }
  100. }
  101. if ( isset( $cache[$table] ) ) {
  102. return isset( $cache[$table][$field] );
  103. }
  104. return false;
  105. }
  106. function com_install() {
  107.   global $_CB_database, $_CB_framework;
  108.   ob_start();
  109.   # Show installation result to user
  110.   ?>
  111.  <div style="text-align:left;">
  112.   <table width="100%" border="0">
  113.     <tr>
  114.       <td>
  115. <img src="../components/com_comprofiler/images/smcblogo.gif" />
  116.       </td>
  117.     </tr>
  118.     <tr>
  119.       <td>
  120.      <br />Copyright 2004 - 2007 MamboJoe/JoomlaJoe, Beat and CB team on joomlapolis.com . This component is released under the GNU/GPL version 2 License and parts under Community Builder Free License. All copyright statements must be kept. Derivate work must prominently duly acknowledge original work and include visible online links. Official site: <a href="http://www.joomlapolis.com">www.joomlapolis.com</a>
  121.      <br />
  122.       </td>
  123.     </tr>
  124.     <tr>
  125.       <td background="F0F0F0" colspan="2">
  126.         <code>Installation Process:<br />
  127.         <?php
  128.           # Set up new icons for admin menu
  129.           // echo "Start correcting icons in administration backend.<br />";
  130.           if ( checkJversion() >= 1 ) {
  131.           $_CB_database->setQuery("UPDATE #__components SET admin_menu_img='js/ThemeOffice/static.png' WHERE admin_menu_link='option=com_comprofiler&task=showLists'");
  132.           } else {
  133.           $_CB_database->setQuery("UPDATE #__components SET admin_menu_img='js/ThemeOffice/content.png' WHERE admin_menu_link='option=com_comprofiler&task=showLists'");
  134.           }
  135.           $iconresult[0] = $_CB_database->query();
  136.           $_CB_database->setQuery("UPDATE #__components SET admin_menu_img='js/ThemeOffice/content.png' WHERE admin_menu_link='option=com_comprofiler&task=showField'");
  137.           $iconresult[1] = $_CB_database->query();
  138.           if ( checkJversion() >= 1 ) {
  139.           $_CB_database->setQuery("UPDATE #__components SET admin_menu_img='js/ThemeOffice/article.png' WHERE admin_menu_link='option=com_comprofiler&task=showTab'");
  140.           } else {
  141.           $_CB_database->setQuery("UPDATE #__components SET admin_menu_img='js/ThemeOffice/content.png' WHERE admin_menu_link='option=com_comprofiler&task=showTab'");
  142.           }
  143.           $iconresult[2] = $_CB_database->query();
  144.           $_CB_database->setQuery("UPDATE #__components SET admin_menu_img='js/ThemeOffice/config.png' WHERE admin_menu_link='option=com_comprofiler&task=showconfig'");
  145.           $iconresult[3] = $_CB_database->query();
  146.           if ( checkJversion() >= 1 ) {
  147.           $_CB_database->setQuery("UPDATE #__components SET admin_menu_img='js/ThemeOffice/user.png' WHERE admin_menu_link='option=com_comprofiler&task=showusers'");
  148.           } else {
  149.           $_CB_database->setQuery("UPDATE #__components SET admin_menu_img='js/ThemeOffice/users.png' WHERE admin_menu_link='option=com_comprofiler&task=showusers'");
  150.           }
  151.           $iconresult[4] = $_CB_database->query();
  152.           if ( checkJversion() >= 1 ) {
  153.   $_CB_database->setQuery("UPDATE #__components SET admin_menu_img='js/ThemeOffice/plugin.png' WHERE admin_menu_link='option=com_comprofiler&task=showPlugins'");
  154.           } else {
  155.   $_CB_database->setQuery("UPDATE #__components SET admin_menu_img='js/ThemeOffice/install.png' WHERE admin_menu_link='option=com_comprofiler&task=showPlugins'");
  156.           }
  157.           $iconresult[5] = $_CB_database->query();
  158. /* Despite numerous abstractions-level, the name of the component isn't taken from SQL but from xml <name> , same field as used to find comprofiler, so we can't display nicely:
  159.           if ( checkJversion() >= 1 ) {
  160.           $_CB_database->setQuery("UPDATE #__components SET name='Community Builder' WHERE admin_menu_link='option=com_comprofiler'");
  161.               $iconresult[6] = $_CB_database->query();
  162.           }
  163. */
  164.          foreach ($iconresult as $i=>$icresult) {
  165.             if ($icresult) {
  166.               // echo "<font color='green'>FINISHED:</font> Image of menu entry $i has been corrected.<br />";
  167.             } else {
  168.               echo "<font color='red'>ERROR:</font> Image of administration menu entry $i could not be corrected.<br />";
  169.             }
  170.           }
  171.  $_CB_database->setQuery("SELECT COUNT(*) FROM #__components WHERE link = 'option=com_comprofiler'");
  172.          $components = $_CB_database->loadresult();
  173.  IF($components > 1) {
  174. $_CB_database->setQuery("SELECT id FROM #__components WHERE link = 'option=com_comprofiler' ORDER BY id DESC LIMIT 1");
  175.           $comid = (int) $_CB_database->loadresult();
  176. $_CB_database->setQuery("DELETE FROM #__components WHERE link  = 'option=com_comprofiler' AND id != $comid  ");
  177.           $_CB_database->query();
  178. $_CB_database->setQuery("DELETE FROM #__components WHERE #__components.option = 'com_comprofiler' AND parent != $comid AND id != $comid ");
  179.           $_CB_database->query();
  180.         // update front-end menus component id:
  181.      $_CB_database->setQuery("UPDATE #__menu SET componentid=" . $comid . " WHERE type = 'component' AND link LIKE '%option=com_comprofiler%'");
  182.           $_CB_database->query();
  183.                echo "<font color='green'>Administrator and frontend menus corrected.</font><br />";
  184. }
  185. //Manage Database Upgrades
  186. $MCBUpgrades = array();
  187. //Beta 3 Upgrade
  188. $MCBUpgrades[0]['test'] = array( 'default', '#__comprofiler_lists' );
  189. $MCBUpgrades[0]['updates'][0] = "ALTER TABLE `#__comprofiler_lists`"
  190. ."n ADD `default` TINYINT( 1 ) DEFAULT '0' NOT NULL,"
  191. ."n ADD `usergroupids` VARCHAR( 255 ),"
  192. ."n ADD `sortfields` VARCHAR( 255 ),"
  193. ."n ADD `ordering` INT( 11 ) DEFAULT '0' NOT NULL AFTER `published`";
  194. $MCBUpgrades[0]['updates'][1] = "UPDATE #__comprofiler_lists SET `default`=1 WHERE published =1";
  195. $MCBUpgrades[0]['updates'][2] = "UPDATE #__comprofiler_lists SET usergroupids = '29, 18, 19, 20, 21, 30, 23, 24, 25', sortfields = '`username` ASC'";
  196. $MCBUpgrades[0]['updates'][3] = "ALTER TABLE `#__comprofiler` ADD `acceptedterms` TINYINT( 1 ) DEFAULT '0' NOT NULL AFTER `bannedreason`";
  197. $MCBUpgrades[0]['message'] = "1.0 Beta 2 to 1.0 Beta 3";
  198. //Beta 4 Upgrade
  199. $MCBUpgrades[1]['test'] = array( 'firstname', '#__comprofiler' );
  200. $MCBUpgrades[1]['updates'][0] = "ALTER TABLE #__comprofiler ADD `firstname` VARCHAR( 100 ) AFTER `user_id` ,"
  201. ."n ADD `middlename` VARCHAR( 100 ) AFTER `firstname` ,"
  202. ."n ADD `lastname` VARCHAR( 100 ) AFTER `middlename` ";
  203. $MCBUpgrades[1]['updates'][1] = "ALTER TABLE `#__comprofiler_fields` ADD `readonly` TINYINT( 1 ) DEFAULT '0' NOT NULL AFTER `profile`";
  204. $MCBUpgrades[1]['updates'][3] = "ALTER TABLE `#__comprofiler_tabs` ADD `width` VARCHAR( 10 ) DEFAULT '.5' NOT NULL AFTER `ordering` ,"
  205. ."n ADD `enabled` TINYINT( 1 ) DEFAULT '1' NOT NULL AFTER `width` ," 
  206. ."n ADD `plugin` VARCHAR( 255 ) DEFAULT NULL AFTER `enabled`" ;
  207. $MCBUpgrades[1]['message'] = "1.0 Beta 3 to 1.0 Beta 4";
  208. //RC 1 Upgrade
  209. $MCBUpgrades[2]['test'] = array( 'fields', '#__comprofiler_tabs' );
  210. $MCBUpgrades[2]['updates'][0] = "ALTER TABLE #__comprofiler_tabs ADD `plugin_include` VARCHAR( 255 ) AFTER `plugin` ,"
  211. ."n ADD `fields` TINYINT( 1 ) DEFAULT '1' NOT NULL AFTER `plugin_include` ";
  212. $MCBUpgrades[2]['updates'][1] = "INSERT INTO `#__comprofiler_tabs` ( `title`, `description`, `ordering`, `width`, `enabled`, `plugin`, `plugin_include`, `fields`, `sys`) VALUES " 
  213. ."n ( '_UE_CONTACT_INFO_HEADER', '', -4, '1', 1, 'getContactTab', NULL, 1, 1),"
  214. ."n ( '_UE_AUTHORTAB', '', -3, '1', 0, 'getAuthorTab', NULL, 0, 1),"
  215. ."n ( '_UE_FORUMTAB', '', -2, '1', 0, 'getForumTab', NULL, 0, 1),"
  216. ."n ( '_UE_BLOGTAB', '', -1, '1', 0, 'getBlogTab', NULL, 0, 1);";
  217. $MCBUpgrades[2]['updates'][2] = "ALTER TABLE `#__comprofiler_lists` ADD `filterfields` VARCHAR( 255 ) AFTER `sortfields`;";
  218. $MCBUpgrades[2]['message'] = "1.0 Beta 4 to 1.0 RC 1";
  219. //RC 2 Upgrade
  220. $MCBUpgrades[3]['test'] = array( 'description', '#__comprofiler_fields' );
  221. $MCBUpgrades[3]['updates'][0] = "ALTER TABLE `#__comprofiler_fields` ADD `description` MEDIUMTEXT  NOT NULL default '' AFTER `title` ";
  222. $MCBUpgrades[3]['updates'][1] = "ALTER TABLE `#__comprofiler_fields` CHANGE `title` `title` VARCHAR( 255 ) NOT NULL";
  223. $MCBUpgrades[3]['updates'][2] = "INSERT INTO `#__comprofiler_tabs` (`title`, `description`, `ordering`, `width`, `enabled`, `plugin`, `plugin_include`, `fields`, `sys`) VALUES " 
  224. ."n ( '_UE_CONNECTION', '',99, '1', 0, 'getConnectionTab', NULL, 0, 1);";
  225. $MCBUpgrades[3]['updates'][3] = "INSERT INTO `#__comprofiler_tabs` (`title`, `description`, `ordering`, `width`, `enabled`, `plugin`, `plugin_include`, `fields`, `sys`) VALUES " 
  226. ."n ( '_UE_NEWSLETTER_HEADER', '_UE_NEWSLETTER_INTRODCUTION', 99, '1', 0, 'getNewslettersTab', NULL, 0, 1);";
  227. $MCBUpgrades[3]['updates'][4] = "UPDATE `#__comprofiler_tabs` SET sys=2, enabled=1 WHERE plugin='getContactTab' ";
  228. $MCBUpgrades[3]['updates'][5] = "ALTER TABLE `#__comprofiler_lists` ADD `useraccessgroupid` INT( 9 ) DEFAULT '18' NOT NULL AFTER `usergroupids` ";
  229. $MCBUpgrades[3]['message'] = "1.0 RC 1 to 1.0 RC 2 part 1";
  230. $MCBUpgrades[4]['test'] = array( 'params', '#__comprofiler_tabs' );
  231. $MCBUpgrades[4]['updates'][0] = "ALTER TABLE `#__comprofiler_tabs` CHANGE `plugin` `pluginclass` VARCHAR( 255 ) DEFAULT NULL , "
  232. ."n CHANGE `plugin_include` `pluginid` INT( 11 ) DEFAULT NULL ";
  233. $MCBUpgrades[4]['updates'][1] = "ALTER TABLE `#__comprofiler_tabs` ADD `params` MEDIUMTEXT AFTER `fields` ;";
  234. $MCBUpgrades[4]['updates'][2] = "ALTER TABLE `#__comprofiler_fields` ADD `pluginid` INT( 11 ) , "
  235. ."n ADD `params` MEDIUMTEXT; ";
  236. $MCBUpgrades[4]['updates'][3] = "UPDATE `#__comprofiler_tabs` SET pluginid=1 WHERE pluginclass='getContactTab' ";
  237. $MCBUpgrades[4]['updates'][4] = "UPDATE `#__comprofiler_tabs` SET pluginid=1 WHERE pluginclass='getConnectionTab' ";
  238. $MCBUpgrades[4]['updates'][5] = "UPDATE `#__comprofiler_tabs` SET pluginid=3 WHERE pluginclass='getAuthorTab' ";
  239. $MCBUpgrades[4]['updates'][6] = "UPDATE `#__comprofiler_tabs` SET pluginid=4 WHERE pluginclass='getForumTab' ";
  240. $MCBUpgrades[4]['updates'][7] = "UPDATE `#__comprofiler_tabs` SET pluginid=5 WHERE pluginclass='getBlogTab' ";
  241. $MCBUpgrades[4]['updates'][8] = "UPDATE `#__comprofiler_tabs` SET pluginid=6 WHERE pluginclass='getNewslettersTab' ";
  242. $MCBUpgrades[4]['message'] = "1.0 RC 1 to 1.0 RC 2 part 2";
  243. $MCBUpgrades[5]['test'] = array( 'position', '#__comprofiler_tabs' );
  244. $MCBUpgrades[5]['updates'][1] = "ALTER TABLE `#__comprofiler_tabs`"
  245. ."n ADD `position` VARCHAR( 255 ) DEFAULT '' NOT NULL,"
  246. ."n ADD `displaytype` VARCHAR( 255 ) DEFAULT '' NOT NULL AFTER `sys`";
  247. $MCBUpgrades[5]['updates'][2] = "UPDATE `#__comprofiler_tabs` SET position='cb_tabmain', displaytype='tab' ";
  248. $MCBUpgrades[5]['updates'][3] = "INSERT INTO `#__comprofiler_tabs` (`title`, `description`, `ordering`, `width`, `enabled`, `pluginclass`, `pluginid`, `fields`, `sys`, `position`, `displaytype`) VALUES " 
  249. ."n ( '_UE_MENU', '', -10, '1', 1, 'getMenuTab', 14, 0, 1, 'cb_head', 'html'),"
  250. ."n ( '_UE_CONNECTIONPATHS', '', -9, '1', 1, 'getConnectionPathsTab', 2, 0, 1, 'cb_head', 'html'),"
  251. ."n ( '_UE_PROFILE_PAGE_TITLE', '', -8, '1', 1, 'getPageTitleTab', 1, 0, 1, 'cb_head', 'html'),"
  252. ."n ( '_UE_PORTRAIT', '', -7, '1', 1, 'getPortraitTab', 1, 0, 1, 'cb_middle', 'html'),"
  253. ."n ( '_UE_USER_STATUS', '', -6, '.5', 1, 'getStatusTab', 14, 0, 1, 'cb_right', 'html'),"
  254. ."n ( '_UE_PMSTAB', '', -5, '.5', 0, 'getmypmsproTab', 15, 0, 1, 'cb_right', 'html');";
  255. $MCBUpgrades[5]['updates'][5] = "UPDATE `#__comprofiler_tabs` SET pluginid=2 WHERE pluginclass='getConnectionTab' ";
  256. $MCBUpgrades[5]['updates'][6] = "ALTER TABLE `#__comprofiler_members` ADD `reason` MEDIUMTEXT default NULL AFTER `membersince` ";
  257. $MCBUpgrades[5]['updates'][7] = "UPDATE `#__comprofiler_tabs` SET `pluginclass`=NULL, `pluginid`=NULL WHERE `pluginclass` != 'getContactTab' AND `fields` = 1";
  258. // this is from build 10 to 11:
  259. // changed back sys=3 -> 1 for _UE_MENU and _UE_USER_STATUS
  260. // $MCBUpgrades[5]['updates'][8] = "ALTER TABLE `#__comprofiler_fields` CHANGE `default` `default` MEDIUMTEXT DEFAULT NULL";
  261. // this last one is only for upgrades from build 8 to 9.
  262. $MCBUpgrades[5]['message'] = "1.0 RC 1 to 1.0 RC 2 part 3";
  263. // from 1.0.1 to 1.0.2: (includes RC2 to 1.0):
  264. $MCBUpgrades[6]['test'] = array( 'cbactivation', '#__comprofiler' );
  265. // from RC2 to 1.0 stable: in fact did it always up to now, since we can alter tables indefinitely.
  266. $MCBUpgrades[6]['updates'][] = "ALTER TABLE `#__comprofiler_fields` CHANGE `default` `default` MEDIUMTEXT DEFAULT NULL;";
  267. $MCBUpgrades[6]['updates'][] = "ALTER TABLE `#__comprofiler_fields` CHANGE `tabid` `tabid` int(11) DEFAULT NULL;";
  268. $MCBUpgrades[6]['updates'][] = "UPDATE `#__users` SET usertype='Registered' WHERE usertype='';"; // fix effect of previous bug in CB registration
  269. // $MCBUpgrades[6]['message'] = "1.0 RC 2 to 1.0 stable";
  270. // from 1.0.1 to 1.0.2: (includes RC2 to 1.0):
  271. $MCBUpgrades[6]['updates'][] = "UPDATE `#__comprofiler_fields` SET `table`='#__users' WHERE name='email';";
  272. $MCBUpgrades[6]['updates'][] = "UPDATE `#__comprofiler_fields` SET `table`='#__users' WHERE name='lastvisitDate';";
  273. $MCBUpgrades[6]['updates'][] = "UPDATE `#__comprofiler_fields` SET `table`='#__users' WHERE name='registerDate';";
  274. $MCBUpgrades[6]['updates'][] = "ALTER TABLE #__comprofiler ADD `registeripaddr` VARCHAR( 50 ) DEFAULT '' NOT NULL AFTER `lastupdatedate`;";
  275. $MCBUpgrades[6]['updates'][] = "ALTER TABLE #__comprofiler ADD `cbactivation` VARCHAR( 50 ) DEFAULT '' NOT NULL AFTER `registeripaddr`;";
  276. $MCBUpgrades[6]['updates'][] = "ALTER TABLE #__comprofiler ADD `message_last_sent` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' AFTER `hits`;";
  277. $MCBUpgrades[6]['updates'][] = "ALTER TABLE #__comprofiler ADD `message_number_sent` INT( 11 ) DEFAULT 0 NOT NULL AFTER `message_last_sent`;";
  278. $MCBUpgrades[6]['updates'][] = "ALTER TABLE `#__comprofiler_field_values` ADD INDEX fieldid_ordering (`fieldid`, `ordering` );";
  279. $MCBUpgrades[6]['updates'][] = "ALTER TABLE `#__comprofiler_fields` ADD INDEX `tabid_pub_prof_order` ( `tabid` , `published` , `profile` , `ordering` );";
  280. $MCBUpgrades[6]['updates'][] = "ALTER TABLE `#__comprofiler_fields` ADD INDEX `readonly_published_tabid` ( `readonly` , `published` , `tabid` );";
  281. $MCBUpgrades[6]['updates'][] = "ALTER TABLE `#__comprofiler_fields` ADD INDEX `registration_published_order` ( `registration` , `published` , `ordering` );";
  282. $MCBUpgrades[6]['updates'][] = "ALTER TABLE `#__comprofiler_members` ADD INDEX `pamr` ( `pending` , `accepted` , `memberid` , `referenceid` );";
  283. $MCBUpgrades[6]['updates'][] = "ALTER TABLE `#__comprofiler_members` ADD INDEX `aprm` ( `accepted` , `pending` , `referenceid` , `memberid` );";
  284. $MCBUpgrades[6]['updates'][] = "ALTER TABLE `#__comprofiler_members` ADD INDEX `membrefid` ( `memberid` , `referenceid` );";
  285. $MCBUpgrades[6]['updates'][] = "ALTER TABLE `#__comprofiler_plugin` ADD INDEX `type_pub_order` ( `type` , `published` , `ordering` );";
  286. $MCBUpgrades[6]['updates'][] = "ALTER TABLE `#__comprofiler_tabs` ADD INDEX `enabled_position_ordering` ( `enabled` , `position` , `ordering` );";
  287. $MCBUpgrades[6]['updates'][] = "ALTER TABLE `#__comprofiler_lists` ADD INDEX `pub_ordering` ( `published` , `ordering` );";
  288. $MCBUpgrades[6]['updates'][] = "ALTER TABLE `#__comprofiler_lists` ADD INDEX `default_published` ( `default` , `published` );";
  289. $MCBUpgrades[6]['updates'][] = "ALTER TABLE `#__comprofiler_userreports` ADD INDEX `status_user_date` ( `reportedstatus` , `reporteduser` , `reportedondate` );";
  290. $MCBUpgrades[6]['updates'][] = "ALTER TABLE `#__comprofiler_userreports` ADD INDEX `reportedbyuser_ondate` ( `reportedbyuser` , `reportedondate` );";
  291. $MCBUpgrades[6]['updates'][] = "ALTER TABLE `#__comprofiler_views` ADD INDEX `lastview` ( `lastview` );";
  292. $MCBUpgrades[6]['updates'][] = "ALTER TABLE `#__comprofiler_views` ADD INDEX `profile_id_lastview` (`profile_id`,`lastview`);";
  293. $MCBUpgrades[6]['updates'][] = "UPDATE `#__comprofiler` SET `user_id`=`id` WHERE 1>0;"; // fix in case something corrupt for unique key
  294. $MCBUpgrades[6]['updates'][] = "ALTER TABLE `#__comprofiler` ADD UNIQUE KEY user_id (`user_id`);";
  295. $MCBUpgrades[6]['updates'][] = "ALTER TABLE `#__comprofiler` ADD INDEX `apprconfbanid` ( `approved` , `confirmed` , `banned` , `id` );";
  296. $MCBUpgrades[6]['updates'][] = "ALTER TABLE `#__comprofiler` ADD INDEX `avatappr_apr_conf_ban_avatar` ( `avatarapproved` , `approved` , `confirmed` , `banned` , `avatar` );";
  297. $MCBUpgrades[6]['updates'][] = "ALTER TABLE `#__comprofiler` ADD INDEX `lastupdatedate` ( `lastupdatedate` );";
  298. $MCBUpgrades[6]['message'] = "1.0 RC 2, 1.0 and 1.0.1 to 1.0.2";
  299. // from 1.0.2 to 1.1:
  300. $MCBUpgrades[7]['test'] = array( 'ordering_register', '#__comprofiler_tabs' );
  301. $MCBUpgrades[7]['updates'][] = "ALTER TABLE `#__comprofiler_plugin` ADD `backend_menu` VARCHAR(255) NOT NULL DEFAULT '' AFTER `folder`;";
  302. $MCBUpgrades[7]['updates'][] = "ALTER TABLE `#__comprofiler_tabs` ADD `ordering_register` int(11) NOT NULL DEFAULT 10 AFTER `ordering`;";
  303. $MCBUpgrades[7]['updates'][] = "ALTER TABLE `#__comprofiler_tabs` ADD `useraccessgroupid` int(9) DEFAULT -2 NOT NULL AFTER `position`;";
  304. $MCBUpgrades[7]['updates'][] = "ALTER TABLE `#__comprofiler_tabs` ADD INDEX `orderreg_enabled_pos_order` ( `enabled` , `ordering_register` , `position` , `ordering` );";
  305. $MCBUpgrades[7]['updates'][] = "ALTER TABLE `#__comprofiler` ADD `unbannedby` int(11) default NULL AFTER `bannedby`;";
  306. $MCBUpgrades[7]['updates'][] = "ALTER TABLE `#__comprofiler` ADD `unbanneddate` datetime default NULL AFTER `banneddate`;";
  307. $MCBUpgrades[7]['updates'][] = "ALTER TABLE `#__comprofiler_field_values` CHANGE `fieldtitle` `fieldtitle` VARCHAR(255) NOT NULL DEFAULT '';";
  308. $MCBUpgrades[7]['message'] = "1.0.2 to 1.1";
  309. // from 1.1 to 1.2: uses new method...
  310. //Apply Upgrades
  311. foreach ($MCBUpgrades AS $MCBUpgrade) {
  312. //if it fails test then apply upgrade
  313. if ( ! cbInstaller_field_exists( $MCBUpgrade['test'][1], $MCBUpgrade['test'][0] ) ) {
  314. foreach( $MCBUpgrade['updates'] as $MCBScript ) {
  315. $_CB_database->setQuery( $MCBScript );
  316. if( ! $_CB_database->query() ) {
  317. //Upgrade failed
  318. print("<font color=red>".$MCBUpgrade['message']." failed! SQL error:" . $_CB_database->stderr(true)."</font><br />");
  319. // return;
  320. }
  321. }
  322. //Upgrade was successful
  323. print "<font color=green>".$MCBUpgrade['message']." Upgrade Applied Successfully.</font><br />";
  324. }
  325. $sql="SELECT listid FROM #__comprofiler_lists ORDER BY ordering asc, published desc";
  326. $_CB_database->setQuery($sql);
  327. $lists = $_CB_database->loadObjectList();
  328. $order=0;
  329. if ( $lists ) {
  330. foreach($lists AS $list) {
  331. $_CB_database->setQuery("UPDATE #__comprofiler_lists SET ordering = $order WHERE listid='".$list->listid."'");
  332. $_CB_database->query();
  333. $order++;
  334. }
  335. }
  336. // fixing the tabid of installs before CB 1.0 RC 2:
  337. $sql = 'SELECT * FROM `#__comprofiler_tabs` ORDER BY `tabid`'; // `tabid`, `pluginclass`
  338. $_CB_database->setQuery( $sql );
  339. $tabs = $_CB_database->loadObjectList( 'tabid' );
  340. if ( $tabs === null ) {
  341. echo '<div style="color:red;">Tabs selection query error: ' . $_CB_database->getErrorMsg() . '</div>';
  342. }
  343. $shouldBe = array( 11 => 'getContactTab',
  344. 12 => 'getAuthorTab',
  345. 13 => 'getForumTab',
  346. 14 => 'getBlogTab',
  347. 15 => 'getConnectionTab',
  348. 16 => 'getNewslettersTab',
  349. 17 => 'getMenuTab',
  350. 18 => 'getConnectionPathsTab',
  351. 19 => 'getPageTitleTab',
  352. 20 => 'getPortraitTab',
  353. 21 => 'getStatusTab',
  354. 22 => 'getmypmsproTab',
  355.  );
  356. // 0) check if all tabs are fine (as for new installs with CB 1.0 RC 2 included or more recent:
  357. //    so we avoid checking and messing with 3pd plugins which use CB pluginclasses:
  358. $needToCleanTabs = false;
  359. if ( is_array( $tabs ) ) {
  360. foreach ( $tabs as $t ) {
  361. if ( isset( $shouldBe[$t->tabid] ) && ( $t->pluginclass == $shouldBe[$t->tabid] ) ) {
  362. // ok, cool, CORE tab: tabid and pluginclass match a core cb tab: no corrective action:
  363. continue;
  364. }
  365. if ( ( ! isset( $shouldBe[$t->tabid] ) ) && ( ! in_array( $t->pluginclass, $shouldBe ) ) ) {
  366. // ok, cool, NON-CORE tab: neither tabid nor pluginclass match a core cb tab: no corrective action:
  367. continue;
  368. }
  369. // well, we got a problem: either tabid XOR pluginclass of that tab are matching a CORE CB TAB:
  370. $needToCleanTabs = true;
  371. break;
  372. }
  373. }
  374. if ( $needToCleanTabs ) {
  375. $sql = 'SELECT `fieldid`, `tabid` FROM `#__comprofiler_fields` ORDER BY `tabid`';
  376. $_CB_database->setQuery( $sql );
  377. $fields = $_CB_database->loadObjectList( 'fieldid' );
  378. if ( $fields === null ) {
  379. echo '<div style="color:red;">Fields selection query error: ' . $_CB_database->getErrorMsg() . '</div>';
  380. }
  381. // 1) count and index tabs by core pluginclass and tabid holding array of fieldsids, so we can delete empty duplicate core tabs:
  382. $coreTabs = array();
  383. foreach ( $tabs as $t ) {
  384. if ( in_array( $t->pluginclass, $shouldBe ) ) {
  385. $coreTabs[$t->pluginclass][$t->tabid] = array();
  386. }
  387. }
  388. // 2) group fieldids by tabid
  389. // 3) add fields to $coreTabs[pluginclass][tabid][fieldid]
  390. $tabsFields = array();
  391. foreach ( $fields as $f ) {
  392. if ( isset( $tabs[$f->tabid] ) ) {
  393. $tabsFields[$f->tabid][$f->fieldid] = $f->fieldid;
  394. if ( $tabs[$f->tabid]->pluginclass != '' ) {
  395. $coreTabs[$tabs[$f->tabid]->pluginclass][$f->tabid][$f->fieldid] = $f->fieldid;
  396. }
  397. }
  398. }
  399. // 4) delete empty duplicate core tabs according to $coreTabs[pluginclass][tabid][fieldid]
  400. foreach ( $coreTabs as $pluginClass => $tabIds ) {
  401. if ( count( $tabIds ) > 1 ) {
  402. // there is more than one core tab for this core plugin class ! We need to decide which to keep:
  403. $tabidCandidatesToKeep = array();
  404. // 1st priority: keep tabs that are enabled AND have fields:
  405. foreach ( $tabIds as $tId => $tFields ) {
  406. if ( ( $tabs[$tId]->enabled == 1 ) && ( count( $tFields ) > 0 ) ) {
  407. $tabidCandidatesToKeep[] = $tId;
  408. }
  409. }
  410. // 2nd priority: keep tabs that have fields:
  411. if ( count( $tabidCandidatesToKeep ) == 0 ) {
  412. foreach ( $tabIds as $tId => $tFields ) {
  413. if ( count( $tFields ) > 0 ) {
  414. $tabidCandidatesToKeep[] = $tId;
  415. }
  416. }
  417. }
  418. // 3rd priority: keep tabs that are enabled:
  419. if ( count( $tabidCandidatesToKeep ) == 0 ) {
  420. foreach ( $tabIds as $tId => $tFields ) {
  421. if ( $tabs[$tId]->enabled == 1 ) {
  422. $tabidCandidatesToKeep[] = $tId;
  423. }
  424. }
  425. }
  426. // 4th priority: keep tab with the correct id:
  427. if ( count( $tabidCandidatesToKeep ) == 0 ) {
  428. foreach ( $tabIds as $tId => $tFields ) {
  429. if ( isset( $shouldBe[$tId] ) && ( $tabs[$tId]->pluginclass == $shouldBe[$tId] ) ) {
  430. $tabidCandidatesToKeep[] = $tId;
  431. }
  432. }
  433. }
  434. // 5th priority: well no more priorities to think of ! : just take first one !
  435. if ( count( $tabidCandidatesToKeep ) == 0 ) {
  436. foreach ( $tabIds as $tId => $tFields ) {
  437. $tabidCandidatesToKeep[] = $tId;
  438. break;
  439. }
  440. }
  441. // ok, by now we got at least one tab to keep: let's see which, in case we got more than one:
  442. if ( count( $tabidCandidatesToKeep ) == 1 ) {
  443. $tabToKeep = (int) $tabidCandidatesToKeep[0];
  444. } else {
  445. $tabToKeep = null;
  446. // a) has the right core id:
  447. foreach ( $tabidCandidatesToKeep as $tId ) {
  448. if ( isset( $shouldBe[$tId] ) && ( $tabs[$tId]->pluginclass == $shouldBe[$tId] ) ) {
  449. $tabToKeep = $tId;
  450. break;
  451. }
  452. }
  453. // b) first with fields:
  454. if ( $tabToKeep === null ) {
  455. foreach ( $tabidCandidatesToKeep as $tId ) {
  456. if ( count( $coreTabs[$tabs[$tId]->pluginclass][$tId] ) > 0 ) {
  457. $tabToKeep = $tId;
  458. break;
  459. }
  460. }
  461. }
  462. // c) first enabled one:
  463. if ( $tabToKeep === null ) {
  464. foreach ( $tabidCandidatesToKeep as $tId ) {
  465. if ( $tabs[$tId]->enabled == 1 ) {
  466. $tabToKeep = $tId;
  467. break;
  468. }
  469. }
  470. }
  471. // d) first one:
  472. if ( $tabToKeep === null ) {
  473. foreach ( $tabidCandidatesToKeep as $tId ) {
  474. $tabToKeep = $tId;
  475. break;
  476. }
  477. }
  478. }
  479. if ( $tabToKeep !== null ) {
  480. $tabsToDelete = array_diff( array_keys( $tabIds ), array( $tabToKeep ) );
  481. // first reassign the fields of the tabs to delete:
  482. $fieldsToReassign = array();
  483. foreach ( $tabIds as $tId => $tFields ) {
  484. if ( ( $tId != $tabToKeep ) && count( $tFields ) > 0 ) {
  485. $fieldsToReassign = array_merge( $fieldsToReassign, $tFields );
  486. }
  487. }
  488. if ( count( $fieldsToReassign ) > 0 ) {
  489. cbArrayToInts( $fieldsToReassign );
  490. $sql = 'UPDATE `#__comprofiler_fields` SET `tabid` = ' . (int) $tabToKeep . ' WHERE `fieldid` IN (' . implode( ',', $fieldsToReassign ) . ')';
  491. $_CB_database->setQuery( $sql );
  492. if ( ! $_CB_database->query() ) {
  493. echo '<div style="color:red;">Failed changing fieldids ' . implode( ',', $fieldsToReassign ) . ' from duplicates of kept core tabid: ' . $tabToKeep . ' because of error:' . $_CB_database->getErrorMsg() . '</div>';
  494. break;
  495. }
  496. }
  497. cbArrayToInts( $tabsToDelete );
  498. // c) remove duplicate core tabs:
  499. $sql = 'DELETE FROM `#__comprofiler_tabs` WHERE `tabid` IN (' . implode( ',', $tabsToDelete ) . ')';
  500. $_CB_database->setQuery( $sql );
  501. if ( ! $_CB_database->query() ) {
  502. echo '<div style="color:red;">Failed deleting duplicates tabids ' . implode( ',', $tabsToDelete ) . ' of the used core tabid: ' . $tabToKeep . ' because of error:' . $_CB_database->getErrorMsg() . '</div>';
  503. break;
  504. }
  505. }
  506. }
  507. }
  508. // 5) refetch tabs with now free space at reserved positions:
  509. $sql = 'SELECT * FROM `#__comprofiler_tabs` ORDER BY `tabid`'; // `tabid`, `pluginclass`
  510. $_CB_database->setQuery( $sql );
  511. $tabs = $_CB_database->loadObjectList( 'tabid' );
  512. if ( $tabs === null ) {
  513. echo '<div style="color:red;">Tabs 2nd selection query error: ' . $_CB_database->getErrorMsg() . '</div>';
  514. }
  515. unset( $coreTabs ); // this one is now invalid, and not needed anymore
  516. $sql = 'SELECT `fieldid`, `tabid` FROM `#__comprofiler_fields` ORDER BY `tabid`';
  517. $_CB_database->setQuery( $sql );
  518. $fields = $_CB_database->loadObjectList( 'fieldid' );
  519. if ( $fields === null ) {
  520. echo '<div style="color:red;">Fields 3nd selection query error: ' . $_CB_database->getErrorMsg() . '</div>';
  521. }
  522. // group fieldids by tabid
  523. $tabsFields = array();
  524. foreach ( $fields as $f ) {
  525. if ( isset( $tabs[$f->tabid] ) ) {
  526. $tabsFields[$f->tabid][$f->fieldid] = $f->fieldid;
  527. }
  528. }
  529. // 6) check tabs one by one, making room in reserved positions:
  530. foreach ( $tabs as $t ) {
  531. if ( isset( $shouldBe[$t->tabid] ) && ( $t->pluginclass == $shouldBe[$t->tabid] ) ) {
  532. // ok, cool, tabid and plugin matches: no corrective action:
  533. continue;
  534. }
  535. if ( isset( $shouldBe[$t->tabid] ) ) {
  536. // not ok: tabid is taken by another tab: we need to relocate this tab at last position:
  537. // a) insert same tab in another tabid
  538. $oldTabId = $t->tabid;
  539. $t->tabid = null;
  540. if ( ! $_CB_database->insertObject( '#__comprofiler_tabs', $t, 'tabid' ) ) {
  541. echo '<div style="color:red;">Failed moving (inserting) non-core tabid: ' . $oldTabId . ' because of error:' . $_CB_database->getErrorMsg() . '</div>';
  542. break;
  543. }
  544. $t->tabid = $_CB_database->insertid();
  545. // b) change fields' tabid:
  546. if ( isset( $tabsFields[$oldTabId] ) && ( count( $tabsFields[$oldTabId] ) > 0 ) ) {
  547. $sql = 'UPDATE `#__comprofiler_fields` SET `tabid` = ' . (int) $t->tabid . ' WHERE `tabid` = ' . (int) $oldTabId;
  548. $_CB_database->setQuery( $sql );
  549. if ( ! $_CB_database->query() ) {
  550. echo '<div style="color:red;">Failed changing fields from old non-core tabid: ' . $oldTabId . ' to new tabid: ' . $t->tabid . ' because of error:' . $_CB_database->getErrorMsg() . '</div>';
  551. break;
  552. }
  553. }
  554. // c) remove old tab:
  555. $sql = 'DELETE FROM `#__comprofiler_tabs` WHERE tabid = ' . (int) $oldTabId;
  556. $_CB_database->setQuery( $sql );
  557. if ( ! $_CB_database->query() ) {
  558. echo '<div style="color:red;">Failed deleting old non-core tabid: ' . $oldTabId . ' which is already copied to new tabid: ' . $t->tabid . ' because of error:' . $_CB_database->getErrorMsg() . '</div>';
  559. break;
  560. }
  561. }
  562. }
  563. // 7) refetch tabs with now free space at reserved positions as well as fields and recompute $tabFields:
  564. $sql = 'SELECT * FROM `#__comprofiler_tabs` ORDER BY `tabid`'; // `tabid`, `pluginclass`
  565. $_CB_database->setQuery( $sql );
  566. $tabs = $_CB_database->loadObjectList( 'tabid' );
  567. if ( $tabs === null ) {
  568. echo '<div style="color:red;">Tabs 3rd selection query error: ' . $_CB_database->getErrorMsg() . '</div>';
  569. }
  570. $sql = 'SELECT `fieldid`, `tabid` FROM `#__comprofiler_fields` ORDER BY `tabid`';
  571. $_CB_database->setQuery( $sql );
  572. $fields = $_CB_database->loadObjectList( 'fieldid' );
  573. if ( $fields === null ) {
  574. echo '<div style="color:red;">Fields 3nd selection query error: ' . $_CB_database->getErrorMsg() . '</div>';
  575. }
  576. // group fieldids by tabid
  577. $tabsFields = array();
  578. foreach ( $fields as $f ) {
  579. if ( isset( $tabs[$f->tabid] ) ) {
  580. $tabsFields[$f->tabid][$f->fieldid] = $f->fieldid;
  581. }
  582. }
  583. // 8) check tabs one by one, moving tabs back to reserved positions if needed:
  584. foreach ( $tabs as $t ) {
  585. if ( isset( $shouldBe[$t->tabid] ) && ( $t->pluginclass == $shouldBe[$t->tabid] ) ) {
  586. // ok, cool, tabid and plugin matches: no corrective action:
  587. continue;
  588. }
  589. if ( ( ! isset( $shouldBe[$t->tabid] ) ) && in_array( $t->pluginclass, $shouldBe ) ) {
  590. // ok we found a core CB tab which doesn't have the right id: the right id is now free, so just update the tab:
  591. $newTabId = array_search( $t->pluginclass, $shouldBe );
  592. if ( $newTabId !== false ) {
  593. // a) move the core tab to the right tabid:
  594. $sql = 'UPDATE `#__comprofiler_tabs` SET `tabid` = ' . (int) $newTabId . ' WHERE `tabid` = ' . (int) $t->tabid;
  595. $_CB_database->setQuery( $sql );
  596. if ( ! $_CB_database->query() ) {
  597. echo '<div style="color:red;">Failed moving core tab from old tabid: ' . $t->tabid . ' to new tabid: ' . $newTabId . ' because of error:' . $_CB_database->getErrorMsg() . '</div>';
  598. break;
  599. }
  600. // b) change fields' tabid:
  601. if ( isset( $tabsFields[$t->tabid] ) && ( count( $tabsFields[$t->tabid] ) > 0 ) ) {
  602. $sql = 'UPDATE `#__comprofiler_fields` SET `tabid` = ' . (int) $newTabId . ' WHERE `tabid` = ' . (int) $t->tabid;
  603. $_CB_database->setQuery( $sql );
  604. if ( ! $_CB_database->query() ) {
  605. echo '<div style="color:red;">Failed changing fields from old core tabid: ' . $oldTabId . ' to new tabid: ' . $t->tabid . ' because of error:' . $_CB_database->getErrorMsg() . '</div>';
  606. break;
  607. }
  608. }
  609. }
  610. }
  611. }
  612. // now missing core tabs will be inserted in the new 1.2 upgrader in next step.
  613. }
  614. // from CB 1.2 upwards:
  615. $dbChecker = new CBdbChecker( $_CB_database );
  616. $result = $dbChecker->checkDatabase( true, false );
  617. if ( $result == true ) {
  618. echo "<p><font color=green>Automatic database upgrade to current version applied successfully.</font></p>";
  619. } elseif ( is_string( $result ) ) {
  620. echo "<p><font color=red>" . $result . "</font></p>";
  621. } else {
  622. echo "<div style='color:red;'>";
  623. echo "<h3><font color=red>Database fixing errors:</font></h3>";
  624. $errors = $dbChecker->getErrors( false );
  625. foreach ( $errors as $err ) {
  626. echo '<div style="font-size:115%">' . $err[0];
  627. if ( $err[1] ) {
  628. echo '<div style="font-size:90%">' . $err[1] . '</div>';
  629. }
  630. echo '</div>';
  631. }
  632. echo "</div>";
  633. }
  634. $logs = $dbChecker->getLogs( false );
  635. if ( count( $logs ) > 0 ) {
  636. echo "<div><a href='#' id='cbdetailsLinkShow' onclick="document.getElementById('cbdetailsdbcheck').style.display='';return false;">Click to Show details</a></div>";
  637. echo "<div id='cbdetailsdbcheck' style='color:green;display:none;'>";
  638. foreach ( $logs as $err ) {
  639. echo '<div style="font-size:100%">' . $err[0];
  640. if ( $err[1] ) {
  641. echo '<div style="font-size:90%">' . $err[1] . '</div>';
  642. }
  643. echo '</div>';
  644. }
  645. echo '</div>';
  646. }
  647. echo "<p>Core CB database upgrades done. If all lines above are in green, database upgrade completed successfully. Otherwise, please report exact errors and queries to forum, and try checking database again in components : community builder : tools : check database.</p>";
  648.         ?>
  649. </code>
  650.       </td>
  651.     </tr>
  652.     <tr>
  653. <td>
  654. <?php
  655. $adminFS =& cbAdminFileSystem::getInstance();
  656. $imagesPath = $_CB_framework->getCfg( 'absolute_path' ) . "/images";
  657. $cbImages = $imagesPath . '/comprofiler';
  658. $cbImagesGallery = $cbImages . '/gallery';
  659. if ( $adminFS->isUsingStandardPHP() && ( ! $adminFS->file_exists( $cbImages ) ) && ! $adminFS->is_writable( $_CB_framework->getCfg( 'absolute_path' ) . "/images/" ) ) {
  660. print "<font color=red>". $imagesPath . "/ is not writable !</font><br />";
  661. } else {
  662. if ( ! $adminFS->file_exists( $cbImages ) ) {
  663. if ( $adminFS->mkdir( $cbImages ) ) {
  664. print "<font color=green>" . $cbImages . "/ Successfully added.</font><br />";
  665. } else {
  666. print "<font color=red>" . $cbImages . "/ Failed to be to be created, please do so manually !</font><br />";
  667. }
  668. }  else {
  669. // print "<font color=green>" . $cbImages . "/ already exists.</font><br />";
  670. }
  671. if ( ! $adminFS->file_exists( $cbImagesGallery ) ) {
  672. if ( $adminFS->mkdir( $cbImagesGallery ) ) {
  673. print "<font color=green>" . $cbImagesGallery ."/ Successfully added.</font><br />";
  674. } else {
  675. print "<font color=red>" . $cbImagesGallery . "/ Failed to be to be created, please do so manually !</font><br />";
  676. }
  677. }  else {
  678. // print "<font color=green>" . $cbImagesGallery . "/ already exists.</font><br />";
  679. }
  680. if( $adminFS->file_exists( $cbImages ) ) {
  681. if ( ! is_writable( $cbImages ) ) {
  682. if( ! $adminFS->chmod( $cbImages, 0777 ) ) {
  683. if ( ! @chmod( $cbImages, 0777 ) ) {
  684. print "<font color=red>" . $cbImages . "/ Failed to be chmod'd to 777 please do so manually !</font><br />";
  685. }
  686. }
  687. }
  688. if( ! is_writable( $cbImages ) ) {
  689. print "<font color=red>" . $cbImages . "/ is not writable and failed to be chmod'd to 777 please do so manually !</font><br />";
  690. }
  691. }
  692. if ( $adminFS->file_exists( $cbImagesGallery ) ) {
  693. if( ! is_writable( $cbImagesGallery ) ) {
  694. if( ! $adminFS->chmod( $cbImagesGallery, 0777 ) ) {
  695. if ( ! @chmod( $cbImagesGallery, 0777 ) ) {
  696. print "<font color=red>" . $cbImagesGallery . "/ Failed to be chmod'd to 777 please do so manually !</font><br />";
  697. }
  698. }
  699. }
  700. if( ! is_writable( $cbImagesGallery ) ) {
  701. print "<font color=red>" . $cbImagesGallery . "/ is not writable and failed to be chmod'd to 777 please do so manually !</font><br />";
  702. }
  703. $galleryFiles = array("airplane.gif"
  704. ,"ball.gif"
  705. ,"butterfly.gif"
  706. ,"car.gif"
  707. ,"dog.gif"
  708. ,"duck.gif"
  709. ,"fish.gif"
  710. ,"frog.gif"
  711. ,"guitar.gif"
  712. ,"kick.gif"
  713. ,"pinkflower.gif"
  714. ,"redflower.gif"
  715. ,"skater.gif"
  716. ,"index.html");
  717. foreach( $galleryFiles AS $galleryFile ) {
  718. if ( ! ( file_exists( $cbImagesGallery . '/' . $galleryFile ) && is_readable( $cbImagesGallery . '/' . $galleryFile ) ) ) {
  719. // try by www: we try it this way, as we can silence errors in php, but not in FTP:
  720. $result = @copy( $_CB_framework->getCfg( 'absolute_path' ) . "/components/com_comprofiler/images/gallery/".$galleryFile, $cbImagesGallery . '/' . $galleryFile );
  721. if ( ! $result ) {
  722. // otherwise try by FTP:
  723. $result = $adminFS->copy( $_CB_framework->getCfg( 'absolute_path' ) . "/components/com_comprofiler/images/gallery/".$galleryFile, $cbImagesGallery . '/' . $galleryFile );
  724. }
  725. if ( $result ) {
  726. // print "<font color=green>" . $galleryFile . " Successfully added to the gallery.</font><br />";
  727. } else {
  728. print "<font color=red>" . $galleryFile . " Failed to be added to the gallery please do so manually !</font><br />";
  729. }
  730. }
  731. }
  732. }
  733. }
  734. if ( ! ( $adminFS->file_exists( $cbImages ) && is_writable( $cbImages ) && $adminFS->file_exists( $cbImagesGallery ) ) ) {
  735. print "<br /><font color=red>Manually do the following:<br /> 1.) create ".$cbImages . "/ directory <br /> 2.) chmod it to 777 <br /> 3.) create ". $cbImagesGallery . "/ <br /> 4.) chmod it to 777 <br />5.) copy " . $_CB_framework->getCfg( 'absolute_path' ) . "/components/com_comprofiler/images/gallery/ and its contents to ". $cbImagesGallery . "/  </font><br />";
  736. }
  737. /*
  738. if (!file_exists($_CB_framework->getCfg( 'absolute_path' ) . "/includes/domit")) {
  739. print "<font color='red'>".$_CB_framework->getCfg( 'absolute_path' ) . "/includes/domit/ does not exist! This is normal with mambo 4.5.0 and 4.6.1. Community Builder needs this library for handling plugins.<br />  You Must Manually do the following:<br /> 1.) create ".$_CB_framework->getCfg( 'absolute_path' ) . "/includes/domit/ directory <br /> 2.) chmod it to 777 <br /> 3.) copy corresponding content of a mambo 4.5.2 directory.</font><br /><br />n";
  740. }
  741. */
  742. if ( ! ( $adminFS->file_exists( $_CB_framework->getCfg( 'absolute_path' ) . "/libraries/pcl") || $adminFS->file_exists($_CB_framework->getCfg( 'absolute_path' ) . '/administrator/includes/pcl' ) ) ) {
  743. print "<font color='red'>".$_CB_framework->getCfg( 'absolute_path' ) . "/administrator/includes/pcl/ does not exist! This is normal with mambo 4.5.0. Community Builder needs this library for handling plugins.<br />  Manually do the following:<br /> 1.) create ".$_CB_framework->getCfg( 'absolute_path' ) . "/administrator/includes/pcl/ directory <br /> 2.) chmod it to 777 <br /> 3.) copy corresponding content of a mambo 4.5.2 directory.</font><br /><br />n";
  744. }
  745. ?>
  746.       </td>
  747.     </tr>
  748.   </table>
  749.  </div>
  750.   <?php
  751.   $ret = ob_get_contents();
  752. ob_end_clean();
  753. $_CB_framework->setUserState( "com_comprofiler_install", htmlspecialchars( htmlspecialchars( $ret ) ) );
  754. ?>
  755. <div id="cbInstallNextStep" style="font-weight:bold;font-size:120%;background:#ffffdd;border:2px orange solid;padding:5px;">WAIT PLEASE: DO NOT INTERRUPT INSTALLATION PROCESS: PERFORMING SECOND INSTALLATION STEP: UNCOMPRESSING CORE PLUGINS. If this screen stays for over 2 minutes, <a href="index2.php?option=com_comprofiler&task=finishinstallation">please click here to continue next and last installation step</a>.</div>
  756. <?php
  757. echo $ret;
  758. // <script type="text/javascript">document.location.href='index2.php?option=com_comprofiler&task=finishinstallation'</script>
  759. // Add Javascript to go to step 2:
  760. $jsStepTwo = " $('form table.adminform').hide();" // hides other uploads in j 1.5.
  761. . " $('a[href=index2.php?option=com_installer&element=component]').hide();" // hides Continue in j 1.0 + Mambo
  762. . " $('#cbInstallNextStep').hide().fadeIn('1500', function() { $(this).fadeOut('1000', function() { $(this).fadeIn('1500', function() {"
  763. // Get the href of the user profile link:
  764. . "n window.location = 'index2.php?option=com_comprofiler&task=finishinstallation';"
  765. . "n } ) } ) } );"
  766. ;
  767. $_CB_framework->outputCbJQuery( $jsStepTwo );
  768. echo $_CB_framework->getAllJsPageCodes();
  769. }
  770. ?>