XOOPS 2.5.6  Final
 All Classes Namespaces Files Functions Variables Pages
oninstall.php
Go to the documentation of this file.
1 <?php
2 // start hack by Trabis
3 if (!class_exists('ProtectorRegistry')) exit('Registry not found');
4 
6 $mydirname = $registry->getEntry('mydirname');
7 $mydirpath = $registry->getEntry('mydirpath');
8 $language = $registry->getEntry('language');
9 // end hack by Trabis
10 
11 eval( ' function xoops_module_install_'.$mydirname.'( $module ) { return protector_oninstall_base( $module , "'.$mydirname.'" ) ; } ' ) ;
12 
13 
14 if( ! function_exists( 'protector_oninstall_base' ) ) {
15 
16 function protector_oninstall_base( $module , $mydirname )
17 {
18  // transations on module install
19 
20  global $ret ; // TODO :-D
21 
22  // for Cube 2.1
23  if( defined( 'XOOPS_CUBE_LEGACY' ) ) {
24  $root =& XCube_Root::getSingleton();
25  $root->mDelegateManager->add( 'Legacy.Admin.Event.ModuleInstall.' . ucfirst($mydirname) . '.Success' , 'protector_message_append_oninstall' ) ;
26  $ret = array() ;
27  } else {
28  if( ! is_array( $ret ) ) $ret = array() ;
29  }
30 
32  $mid = $module->getVar('mid') ;
33 
34  // TABLES (loading mysql.sql)
35  $sql_file_path = dirname(__FILE__).'/sql/mysql.sql' ;
36  $prefix_mod = $db->prefix() . '_' . $mydirname ;
37  if( file_exists( $sql_file_path ) ) {
38  $ret[] = "SQL file found at <b>".htmlspecialchars($sql_file_path)."</b>.<br /> Creating tables...";
39 
40  if( file_exists( XOOPS_ROOT_PATH.'/class/database/oldsqlutility.php' ) ) {
41  include_once XOOPS_ROOT_PATH.'/class/database/oldsqlutility.php' ;
42  $sqlutil = new OldSqlUtility ; //old code is -> $sqlutil =& new OldSqlUtility ; //hack by Trabis
43  } else {
44  include_once XOOPS_ROOT_PATH.'/class/database/sqlutility.php' ;
45  $sqlutil = new SqlUtility ; //old code is -> $sqlutil =& new SqlUtility ; //hack by Trabis
46  }
47 
48  $sql_query = trim( file_get_contents( $sql_file_path ) ) ;
49  $sqlutil->splitMySqlFile( $pieces , $sql_query ) ;
50  $created_tables = array() ;
51  foreach( $pieces as $piece ) {
52  $prefixed_query = $sqlutil->prefixQuery( $piece , $prefix_mod ) ;
53  if( ! $prefixed_query ) {
54  $ret[] = "Invalid SQL <b>".htmlspecialchars($piece)."</b><br />";
55  return false ;
56  }
57  if( ! $db->query( $prefixed_query[0] ) ) {
58  $ret[] = '<b>'.htmlspecialchars( $db->error() ).'</b><br />' ;
59  //var_dump( $db->error() ) ;
60  return false ;
61  } else {
62  if( ! in_array( $prefixed_query[4] , $created_tables ) ) {
63  $ret[] = 'Table <b>'.htmlspecialchars($prefix_mod.'_'.$prefixed_query[4]).'</b> created.<br />';
64  $created_tables[] = $prefixed_query[4];
65  } else {
66  $ret[] = 'Data inserted to table <b>'.htmlspecialchars($prefix_mod.'_'.$prefixed_query[4]).'</b>.</br />';
67  }
68  }
69  }
70  }
71 
72  // TEMPLATES
73  $tplfile_handler =& xoops_gethandler( 'tplfile' ) ;
74  $tpl_path = dirname(__FILE__).'/templates' ;
75  if( $handler = @opendir( $tpl_path . '/' ) ) {
76  while( ( $file = readdir( $handler ) ) !== false ) {
77  if( substr( $file , 0 , 1 ) == '.' ) continue ;
78  $file_path = $tpl_path . '/' . $file ;
79  if( is_file( $file_path ) && in_array( strrchr( $file , '.' ) , array( '.html' , '.css' , '.js' ) ) ) {
80  $mtime = intval( @filemtime( $file_path ) ) ;
81  $tplfile =& $tplfile_handler->create() ;
82  $tplfile->setVar( 'tpl_source' , file_get_contents( $file_path ) , true ) ;
83  $tplfile->setVar( 'tpl_refid' , $mid ) ;
84  $tplfile->setVar( 'tpl_tplset' , 'default' ) ;
85  $tplfile->setVar( 'tpl_file' , $mydirname . '_' . $file ) ;
86  $tplfile->setVar( 'tpl_desc' , '' , true ) ;
87  $tplfile->setVar( 'tpl_module' , $mydirname ) ;
88  $tplfile->setVar( 'tpl_lastmodified' , $mtime ) ;
89  $tplfile->setVar( 'tpl_lastimported' , 0 ) ;
90  $tplfile->setVar( 'tpl_type' , 'module' ) ;
91  if( ! $tplfile_handler->insert( $tplfile ) ) {
92  $ret[] = '<span style="color:#ff0000;">ERROR: Could not insert template <b>'.htmlspecialchars($mydirname.'_'.$file).'</b> to the database.</span><br />';
93  } else {
94  $tplid = $tplfile->getVar( 'tpl_id' ) ;
95  $ret[] = 'Template <b>'.htmlspecialchars($mydirname.'_'.$file).'</b> added to the database. (ID: <b>'.$tplid.'</b>)<br />';
96  // generate compiled file
97  include_once XOOPS_ROOT_PATH.'/class/xoopsblock.php' ;
98  include_once XOOPS_ROOT_PATH.'/class/template.php' ;
99  if( ! xoops_template_touch( $tplid ) ) {
100  $ret[] = '<span style="color:#ff0000;">ERROR: Failed compiling template <b>'.htmlspecialchars($mydirname.'_'.$file).'</b>.</span><br />';
101  } else {
102  $ret[] = 'Template <b>'.htmlspecialchars($mydirname.'_'.$file).'</b> compiled.</span><br />';
103  }
104  }
105  }
106  }
107  closedir( $handler ) ;
108  }
109  include_once XOOPS_ROOT_PATH.'/class/xoopsblock.php' ;
110  include_once XOOPS_ROOT_PATH.'/class/template.php' ;
112 
113  return true ;
114 }
115 
116 function protector_message_append_oninstall( &$module_obj , &$log )
117 {
118  if( is_array( @$GLOBALS['ret'] ) ) {
119  foreach( $GLOBALS['ret'] as $message ) {
120  $log->add( strip_tags( $message ) ) ;
121  }
122  }
123 
124  // use mLog->addWarning() or mLog->addError() if necessary
125 }
126 
127 }
128 
129 ?>