XOOPS 2.5.6  Final
 All Classes Namespaces Files Functions Variables Pages
onupdate.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_update_'.$mydirname.'( $module ) { return protector_onupdate_base( $module , "'.$mydirname.'" ) ; } ' ) ;
12 
13 
14 if( ! function_exists( 'protector_onupdate_base' ) ) {
15 
16 function protector_onupdate_base( $module , $mydirname )
17 {
18  // transations on module update
19 
20  global $msgs ; // 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.ModuleUpdate.' . ucfirst($mydirname) . '.Success', 'protector_message_append_onupdate' ) ;
26  $msgs = array() ;
27  } else {
28  if( ! is_array( $msgs ) ) $msgs = array() ;
29  }
30 
32  $mid = $module->getVar('mid') ;
33 
34  // TABLES (write here ALTER TABLE etc. if necessary)
35 
36  // configs (Though I know it is not a recommended way...)
37  $check_sql = "SHOW COLUMNS FROM ".$db->prefix("config")." LIKE 'conf_title'" ;
38  if( ( $result = $db->query( $check_sql ) ) && ( $myrow = $db->fetchArray( $result ) ) && @$myrow['Type'] == 'varchar(30)' ) {
39  $db->queryF( "ALTER TABLE ".$db->prefix("config")." MODIFY `conf_title` varchar(255) NOT NULL default '', MODIFY `conf_desc` varchar(255) NOT NULL default ''" ) ;
40  }
41  list( , $create_string ) = $db->fetchRow( $db->query( "SHOW CREATE TABLE ".$db->prefix("config") ) ) ;
42  foreach( explode( 'KEY' , $create_string ) as $line ) {
43  if( preg_match( '/(\`conf\_title_\d+\`) \(\`conf\_title\`\)/' , $line , $regs ) ) {
44  $db->query( "ALTER TABLE ".$db->prefix("config")." DROP KEY ".$regs[1] ) ;
45  }
46  }
47  $db->query( "ALTER TABLE ".$db->prefix("config")." ADD KEY `conf_title` (`conf_title`)" ) ;
48 
49  // 2.x -> 3.0
50  list( , $create_string ) = $db->fetchRow( $db->query( "SHOW CREATE TABLE ".$db->prefix($mydirname."_log") ) ) ;
51  if( preg_match( '/timestamp\(/i' , $create_string ) ) {
52  $db->query( "ALTER TABLE ".$db->prefix($mydirname."_log")." MODIFY `timestamp` DATETIME" ) ;
53  }
54 
55 
56  // TEMPLATES (all templates have been already removed by modulesadmin)
57  $tplfile_handler =& xoops_gethandler( 'tplfile' ) ;
58  $tpl_path = dirname(__FILE__).'/templates' ;
59  if( $handler = @opendir( $tpl_path . '/' ) ) {
60  while( ( $file = readdir( $handler ) ) !== false ) {
61  if( substr( $file , 0 , 1 ) == '.' ) continue ;
62  $file_path = $tpl_path . '/' . $file ;
63  if( is_file( $file_path ) && in_array( strrchr( $file , '.' ) , array( '.html' , '.css' , '.js' ) ) ) {
64  $mtime = intval( @filemtime( $file_path ) ) ;
65  $tplfile =& $tplfile_handler->create() ;
66  $tplfile->setVar( 'tpl_source' , file_get_contents( $file_path ) , true ) ;
67  $tplfile->setVar( 'tpl_refid' , $mid ) ;
68  $tplfile->setVar( 'tpl_tplset' , 'default' ) ;
69  $tplfile->setVar( 'tpl_file' , $mydirname . '_' . $file ) ;
70  $tplfile->setVar( 'tpl_desc' , '' , true ) ;
71  $tplfile->setVar( 'tpl_module' , $mydirname ) ;
72  $tplfile->setVar( 'tpl_lastmodified' , $mtime ) ;
73  $tplfile->setVar( 'tpl_lastimported' , 0 ) ;
74  $tplfile->setVar( 'tpl_type' , 'module' ) ;
75  if( ! $tplfile_handler->insert( $tplfile ) ) {
76  $msgs[] = '<span style="color:#ff0000;">ERROR: Could not insert template <b>'.htmlspecialchars($mydirname.'_'.$file).'</b> to the database.</span>';
77  } else {
78  $tplid = $tplfile->getVar( 'tpl_id' ) ;
79  $msgs[] = 'Template <b>'.htmlspecialchars($mydirname.'_'.$file).'</b> added to the database. (ID: <b>'.$tplid.'</b>)';
80  // generate compiled file
81  include_once XOOPS_ROOT_PATH.'/class/xoopsblock.php' ;
82  include_once XOOPS_ROOT_PATH.'/class/template.php' ;
83  if( ! xoops_template_touch( $tplid ) ) {
84  $msgs[] = '<span style="color:#ff0000;">ERROR: Failed compiling template <b>'.htmlspecialchars($mydirname.'_'.$file).'</b>.</span>';
85  } else {
86  $msgs[] = 'Template <b>'.htmlspecialchars($mydirname.'_'.$file).'</b> compiled.</span>';
87  }
88  }
89  }
90  }
91  closedir( $handler ) ;
92  }
93  include_once XOOPS_ROOT_PATH.'/class/xoopsblock.php' ;
94  include_once XOOPS_ROOT_PATH.'/class/template.php' ;
96 
97  return true ;
98 }
99 
100 function protector_message_append_onupdate( &$module_obj , &$log )
101 {
102  if( is_array( @$GLOBALS['msgs'] ) ) {
103  foreach( $GLOBALS['msgs'] as $message ) {
104  $log->add( strip_tags( $message ) ) ;
105  }
106  }
107 
108  // use mLog->addWarning() or mLog->addError() if necessary
109 }
110 
111 }
112 
113 ?>