0byt3m1n1
Path:
/
data
/
applications
/
aps.bak
/
osticket
/
1.6.r0-1
/
standard
/
htdocs
/
setup
/
[
Home
]
File: upgrade.php
<?php /********************************************************************* upgrade.php osTicket upgrade script Peter Rotich <peter@osticket.com> Copyright (c) 2006-2010 osTicket http://www.osticket.com Released under the GNU General Public License WITHOUT ANY WARRANTY. See LICENSE.TXT for details. vim: expandtab sw=4 ts=4 sts=4: $Id: $ **********************************************************************/ if(!file_exists('../main.inc.php')) die('Fatal error..get tech support'); require_once('../main.inc.php'); require_once('setup.inc.php'); require_once(INCLUDE_DIR.'class.staff.php'); //Only admins can upgrade the system. $thisuser = new StaffSession($_SESSION['_staff']['userID']); /*always reload???*/ if(!is_object($thisuser) || !$thisuser->getId() || !$thisuser->isValid() || !$thisuser->isadmin()){ $_SESSION['_staff']['auth']['dest']=THISPAGE; $_SESSION['_staff']['auth']['msg']='Admin access level required.'; session_write_close(); session_regenerate_id(); header('Location: ../scp/login.php'); exit; } //Let's roll. $errors=array(); $fp=null; define('VERSION','1.6 ST'); //Current version number define('SCHEMAFILE','./inc/v16rc5.sql'); //osTicket upgrade SQL schema. define('PREFIX',TABLE_PREFIX); $info='<strong>Need help?</strong> <a href="http://www.osticket.com/support/" target="_blank">Don\'t panic - Professional Upgrade Available!</a>'; //Basic checks $inc='upgrade.inc.php'; if(!strcasecmp($cfg->getVersion(),VERSION)) { $errors['err']=' Nothing to do! System already upgraded'; $inc='upgradedone.inc.php'; }elseif($_SESSION['abort']){ die('Upgrade already aborted! Restore previous version and start all over again (logout required) or get help.'); }elseif((double)phpversion()<4.3){ //Old PHP installation $errors['err']='PHP installation seriously out of date'; $inc='php.inc.php'; }elseif(!ini_get('short_open_tag')) { $errors['err']='Short open tag disabled! - osTicket requires it turned on.'; $inc='shortopentag.inc.php'; }elseif($_POST && !$errors){ $step=(!strcasecmp($cfg->getVersion(),'1.6 RC5'))?2:1; //gods help us! //die("Step #$step"); switch($step): case 1: //Upgrading to RC5 from any old version.. RC1-RC4. $schema='./inc/v1.6rc5-upgrade.sql'; $vars=$errors=array(); $result=db_query('SELECT alert_email,noreply_email,api_whitelist,api_key,default_dept FROM '.CONFIG_TABLE.' WHERE id=1'); if($result && db_num_rows($result)) { $vars=db_fetch_array($result); if(!load_sql_schema($schema,$errors) && !$errors['err']) $errors['err']='Error parsing SQL schema! Get help from developers'; }else{ $errors['err']='Db problems - Get help from developers'; } if(!$errors) { //update version. db_query('UPDATE '.CONFIG_TABLE.' SET ostversion='.db_input('1.6 RC5')); //API keys $ips=array_filter(explode(',',ereg_replace(' ','',$vars['api_whitelist']))); foreach($ips as $ip) { $sql='INSERT INTO '.PREFIX.'api_key SET created=NOW(), updated=NOW(), isactive=1 '. ',ipaddr='.db_input($ip). ',apikey='.db_input(strtoupper(md5($ip.md5($vars['api_key'])))); db_query($sql); } //get pop info into the improved table. $sql='SELECT pop3.* FROM '.PREFIX.'email email INNER JOIN '.PREFIX.'email_pop3 pop3 USING(email_id)'; if(($result=db_query($sql)) && db_num_rows($result)) { //We are disabling mail fetching on purpose while($row=db_fetch_array($result)) { $sql='UPDATE '.EMAIL_TABLE.' SET updated=NOW(), mail_protocol="POP",mail_encryption="NONE",mail_port=110,mail_active=0 '. ',mail_host='.db_input($row['pophost']). ',mail_fetchfreq='.db_input($row['fetchfreq']). ',mail_delete='.db_input($row['delete_msgs']). ',userid='.db_input($row['popuser']). ',userpass='.db_input($row['poppasswd']?Misc::encrypt($row['poppasswd'],SECRET_SALT):''). ' WHERE email_id='.db_input($row['email_id']); db_query($sql); } } $deptId=$vars['default_dept']?$vars['default_dept']:1; //Default dept. //Move alert and noreply emails to email table. $sql='INSERT INTO '.PREFIX.'email SET created=NOW(), updated=NOW(), priority_id=2 '. ',dept_id='.db_input($deptId).',name='.db_input('osTicket Alerts').',email='.db_input($vars['alert_email']); if(db_query($sql) && ($alertId=db_insert_id())) db_query('UPDATE '.PREFIX.'config SET alert_email_id='.db_input($alertId)); $sql='INSERT INTO '.PREFIX.'email SET created=NOW(), updated=NOW(), priority_id=2 '. ',dept_id='.db_input($deptId).',name='.db_input('').',email='.db_input($vars['noreply_email']); if(db_query($sql) && ($noreplyId=db_insert_id())) db_query('UPDATE '.PREFIX.'department SET autoresp_email_id='.db_input($noreplyId).' WHERE noreply_autoresp=1'); //Url path & variables changes on templates. $sql='SELECT tpl_id,ticket_autoresp_body,message_autoresp_body,ticket_overlimit_body,ticket_reply_body FROM '.PREFIX.'email_template'; if(($result=db_query($sql)) && db_num_rows($result)) { while($row=db_fetch_array($result)) { $ticket_reply=str_replace('%message','%response',str_replace('view.php','tickets.php',$row['ticket_reply_body'])); $sql='UPDATE '.PREFIX.'email_template SET updated=NOW() '. ',ticket_autoresp_body='.db_input(str_replace('view.php','tickets.php',$row['ticket_autoresp_body'])). ',message_autoresp_body='.db_input(str_replace('view.php','tickets.php',$row['message_autoresp_body'])). ',ticket_overlimit_body='.db_input(str_replace('view.php','tickets.php',$row['ticket_overlimit_body'])). ',ticket_reply_body='.db_input($ticket_reply). ' WHERE tpl_id='.db_input($row['tpl_id']); db_query($sql); } } //Drops. db_query('ALTER TABLE '.PREFIX.'department DROP `noreply_autoresp`'); db_query('ALTER TABLE '.PREFIX.'config DROP `noreply_email` ,DROP `alert_email` ,DROP `api_whitelist`'); db_query('TRUNCATE TABLE '.PREFIX.'email_pop3'); db_query('DROP TABLE '.PREFIX.'email_pop3'); } if($errors) break; //break on any errors. case 2: //upgrading v1.6 ST (latest release). $schema='./inc/v1.6st-upgrade.sql'; $vars=$errors=array(); if(!load_sql_schema($schema,$errors) && !$errors['err']) $errors['err']='Error parsing SQL schema! Get help from developers'; if(!$errors) { //update the version to the latest $sendnotices=$cfg->autoRespONNewTicket()?1:0; db_query('UPDATE '.CONFIG_TABLE.' SET ostversion='.db_input(VERSION).',ticket_notice_active='.db_input($sendnotice)); //Fix attachment issues. require_once(INCLUDE_DIR.'class.ticket.php'); $sql='SELECT ticket.ticket_id, count(attach_id) as attachments FROM '.TICKET_TABLE.' ticket '. 'LEFT JOIN '.TICKET_ATTACHMENT_TABLE.' attach ON ticket.ticket_id=attach.ticket_id '. 'GROUP BY ticket.ticket_id'; //echo $sql; $resp = db_query($sql); if($resp && db_num_rows($resp)){ while(list($id,$files)=db_fetch_row($resp)){ if(!$files) continue; $ticket = new Ticket($id); $ticket->fixAttachments(); } } $sql='SELECT tpl_id,ticket_overlimit_subj,ticket_overlimit_body FROM '.PREFIX.'email_template'; if(($result=db_query($sql)) && db_num_rows($result)) { while($row=db_fetch_array($result)) { $sql='UPDATE '.PREFIX.'email_template SET updated=NOW() '. ',ticket_overlimit_subj='.db_input(str_replace('%ticket','%id',$row['ticket_overlimit_subj'])). ',ticket_overlimit_body='.db_input(str_replace('%ticket','%id',$row['ticket_overlimit_body'])). ' WHERE tpl_id='.db_input($row['tpl_id']); db_query($sql); } //Update $sql='UPDATE '.PREFIX.'email_template SET updated=NOW() '. ',ticket_notice_subj = "[#%ticket] %subject"'. ',ticket_notice_body = "%name,\r\n\r\nOur customer care team personnel has created a ticket #%ticket on your behalf, with the following message;\r\n\r\n%message\r\n\r\nIf you wish to provide additional comments or information regarding this issue, please don\'t open a new ticket. You can update or view this ticket\'s progress online here: %url/view.php?e=%email&t=%ticket.\r\n\r\n%signature"'; db_query($sql); } } endswitch; if(!$errors) { //upgrade went smooth! //Log a message. $log=sprintf("Congratulations osTicket upgraded to version %s by %s \n\nThank you for choosing osTicket!",VERSION,$thisuser->getName()); $sql='INSERT INTO '.PREFIX.'syslog SET created=NOW(),updated=NOW() '. ',title="osTicket upgraded!",log_type="Debug" '. ',log='.db_input($log). ',ip_address='.db_input($_SERVER['REMOTE_ADDR']); mysql_query($sql); //Create a ticket $sql='INSERT INTO '.PREFIX.'ticket SET created=NOW(),ticketID='.db_input(Misc::randNumber(6)). ',dept_id='.db_input($deptId?$deptId:$cfg->getDefaultDeptId()). ",priority_id=2,email='support@osticket.com',name='osTicket Support' ". ",subject='osTicket Upgraded!',helptopic='osTicket Support',status='open',source='Web'"; if(db_query($sql) && ($id=db_insert_id())){ $sql='INSERT INTO '.PREFIX.'ticket_message SET created=NOW(), updated=NOW(), source="Web" '. ',ticket_id='.db_input($id). ',message='.db_input(OSTICKET_UPGRADED); db_query($sql); } //Report the good news. $inc='upgradedone.inc.php'; $msg='osTicket upgraded to version '.VERSION; }else{ //errors....aborting. $inc='abortedupgrade.inc.php'; $errors['err']=$errors['err']?$errors['err']:'Yikes! upgrade error(s) occured'; $_SESSION['abort']=true; } } $title=sprintf('osTicket upgrade wizard v %s','1.6 ST (stable)'); ?> <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <title>osTicket upgrade wizard</title> <link rel="stylesheet" href="style.css" media="screen"> </head> <body> <div id="container"> <div id="header"> <a id="logo" href="#" title="osTicket"><img src="images/ostlogo.jpg" width="188" height="72" alt="osTicket Upgrade Wizard"></a> <p id="info"><?=$info?></p> </div> <div id="nav"> <ul id="sub_nav"> <li><?=$title?></li> </ul> </div> <div class="clear"></div> <div id="content" width="100%" height="100%"> <div> <?if($errors['err']) {?> <p align="center" id="errormessage"><?=$errors['err']?></p> <?}elseif($msg) {?> <p align="center" id="infomessage"><?=$msg?></p> <?}elseif($warn) {?> <p align="center" id="warnmessage"><?=$warn?></p> <?}?> </div> <div style="padding:0 3px 5px 3px;"> <?php if(file_exists("./inc/$inc")) require("./inc/$inc"); else echo '<span class="error">Invalid path - get technical support</span>'; ?> </div> </div> <div id="footer">Copyright © <?=date('Y')?> osTicket.com. All Rights Reserved.</div> </div> </body> </html>