Advertisement
Guest User

Untitled

a guest
Mar 22nd, 2017
267
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 19.83 KB | None | 0 0
  1. <?php
  2.  
  3. /************************************
  4. * @author Mian Saleem *
  5. * @package SMA2 *
  6. * @subpackage install *
  7. ************************************/
  8.  
  9. $installFile = "../SMA2";
  10. $indexFile = "../index.php";
  11. $configFolder = "../sma/config";
  12. $configFile = "../sma/config/config.php";
  13. $dbFile = "../sma/config/database.php";
  14. if (is_file($installFile)) {
  15.  
  16. switch($_GET['step']){
  17. default: ?>
  18. <ul class="steps">
  19. <li class="active pk">Checklist</li>
  20. <li>Register</li>
  21. <li>Database</li>
  22. <li>Site Config</li>
  23. <li class="last">Done!</li>
  24. </ul>
  25. <h3>Pre-Install Checklist</h3>
  26. <?php
  27. $error = FALSE;
  28. if(!is_writeable($indexFile)){$error = TRUE; echo "<div class='alert alert-error'><i class='icon-remove'></i> Index Filer (index.php) is not writeable!</div>"; }
  29. if(!is_writeable($configFolder)){$error = TRUE; echo "<div class='alert alert-error'><i class='icon-remove'></i> Config Folder (sma/config/) is not writeable!</div>"; }
  30. if(!is_writeable($configFile)){$error = TRUE; echo "<div class='alert alert-error'><i class='icon-remove'></i> Config File (sma/config/config.php) is not writeable!</div>"; }
  31. if(!is_writeable($dbFile)){$error = TRUE; echo "<div class='alert alert-error'><i class='icon-remove'></i> Database File (sma/config/database.php) is not writeable!</div>"; }
  32. if(phpversion() < "5.3"){$error = TRUE; echo "<div class='alert alert-error'><i class='icon-remove'></i> Your PHP version is ".phpversion()."! PHP 5.3 or higher required!</div>";}else{echo "<div class='alert alert-success'><i class='icon-ok'></i> You are running PHP ".phpversion()."</div>";}
  33. if(!extension_loaded('mcrypt')){$error = TRUE; echo "<div class='alert alert-error'><i class='icon-remove'></i> Mcrypt PHP extension missing!</div>";}else{echo "<div class='alert alert-success'><i class='icon-ok'></i> Mcrypt PHP extension loaded!</div>";}
  34. if(!extension_loaded('mysql')){$error = TRUE; echo "<div class='alert alert-error'><i class='icon-remove'></i> Mysql PHP extension missing!</div>";}else{echo "<div class='alert alert-success'><i class='icon-ok'></i> Mysql PHP extension loaded!</div>";}
  35. if(!extension_loaded('mysqli')){$error = TRUE; echo "<div class='alert alert-error'><i class='icon-remove'></i> Mysqli PHP extension missing!</div>";}else{echo "<div class='alert alert-success'><i class='icon-ok'></i> Mysqli PHP extension loaded!</div>";}
  36. if(!extension_loaded('mbstring')){$error = TRUE; echo "<div class='alert alert-error'><i class='icon-remove'></i> MBString PHP extension missing!</div>";}else{echo "<div class='alert alert-success'><i class='icon-ok'></i> MBString PHP extension loaded!</div>";}
  37. if(!extension_loaded('gd')){echo "<div class='alert alert-error'><i class='icon-remove'></i> GD PHP extension missing!</div>";}else{echo "<div class='alert alert-success'><i class='icon-ok'></i> GD PHP extension loaded!</div>";}
  38. if(!extension_loaded('curl')){$error = TRUE; echo "<div class='alert alert-error'><i class='icon-remove'></i> CURL PHP extension missing!</div>";}else{echo "<div class='alert alert-success'><i class='icon-ok'></i> CURL PHP extension loaded!</div>";}
  39. ?>
  40. <div class="bottom">
  41. <?php if($error){ ?>
  42. <a href="#" class="btn btn-primary disabled">Next Step</a>
  43. <?php }else{ ?>
  44. <a href="?step=0" class="btn btn-primary">Next Step</a>
  45. <?php } ?>
  46. </div>
  47.  
  48. <?php
  49. break;
  50. case "0": ?>
  51. <ul class="steps">
  52. <li class="ok"><i class="icon icon-ok"></i>Checklist</li>
  53. <li class="active">Register SMA</li>
  54. <li>Database</li>
  55. <li>Site Config</li>
  56. <li class="last">Done!</li>
  57. </ul>
  58. <h3>Varify your purchase</h3>
  59. <?php
  60. if($_POST){
  61. $code = $_POST["code"];
  62. $username = $_POST["username"];
  63. $curl_handle = curl_init();
  64. curl_setopt($curl_handle, CURLOPT_URL, 'http://tecdiary.com/support/api/register/');
  65. curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
  66. curl_setopt($curl_handle, CURLOPT_POST, 1);
  67. $referer = "http://".$_SERVER["SERVER_NAME"].substr($_SERVER["REQUEST_URI"], 0, -15);
  68. $path = substr(realpath(dirname(__FILE__)), 0, -8);
  69. curl_setopt($curl_handle, CURLOPT_POSTFIELDS, array(
  70. 'username' => $_POST["username"],
  71. 'email' => $_POST["email"],
  72. 'code' => $_POST["code"] ,
  73. 'id' => '5403161',
  74. 'ip' => $_SERVER['REMOTE_ADDR'],
  75. 'referer' => $referer,
  76. 'path' => $path
  77. ));
  78.  
  79. $buffer = curl_exec($curl_handle);
  80. curl_close($curl_handle);
  81.  
  82. $object = json_decode($buffer);
  83.  
  84. if ($object->status == 'success') {
  85. ?>
  86. <form action="?step=1" method="POST" class="form-horizontal">
  87.  
  88. <div class="alert alert-success"><i class='icon-ok'></i> <strong><?php echo ucfirst($object->status); ?></strong>:<br /><?php echo $object->message; ?></div>
  89. <input id="code" type="hidden" name="code" value="<?php echo $code; ?>" />
  90. <input id="username" type="hidden" name="username" value="<?php echo $username; ?>" />
  91. <div class="bottom">
  92. <input type="submit" class="btn btn-primary" value="Next Step"/>
  93. </div>
  94. </form>
  95. <?php
  96. }else{ ?>
  97. <div class="alert alert-error"><i class='icon-remove'></i> <strong><?php echo ucfirst($object->status); ?></strong>:<br /> <?php echo $object->message; ?></div>
  98. <form action="?step=0" method="POST" class="form-horizontal">
  99. <div class="control-group">
  100. <label class="control-label" for="username">Envato Username</label>
  101. <div class="controls">
  102. <input id="username" type="text" name="username" class="input-large" required data-error="Username is required" placeholder="Envato Username" />
  103. </div>
  104. </div>
  105. <div class="control-group">
  106. <label class="control-label" for="email">Support Email</label>
  107. <div class="controls">
  108. <input id="email" type="text" name="email" class="input-large" required data-error="Email is required" placeholder="Support Email" />
  109. </div>
  110. </div>
  111. <div class="control-group">
  112. <label class="control-label" for="code">Purchase Code <a href="#myModal" role="button" data-toggle="modal"><i class="icon-question-sign"></i></a></label>
  113. <div class="controls">
  114. <input id="code" type="text" name="code" class="input-large" required data-error="Purchase Code is required" placeholder="Purchase Code" />
  115. </div>
  116. </div>
  117. <div class="bottom">
  118. <input type="submit" class="btn btn-primary" value="Check"/>
  119. </div>
  120. </form>
  121. <?php
  122. }
  123. }else{ ?>
  124. <p>Please enter the required informarmation to register free support account and varify your purchase. </p><br>
  125. <form action="?step=0" method="POST" class="form-horizontal">
  126. <div class="control-group">
  127. <label class="control-label" for="username">Envato Username</label>
  128. <div class="controls">
  129. <input id="username" type="text" name="username" class="input-large" required data-error="Username is required" placeholder="Envato Username" />
  130. </div>
  131. </div>
  132. <div class="control-group">
  133. <label class="control-label" for="email">Support Email</label>
  134. <div class="controls">
  135. <input id="email" type="text" name="email" class="input-large" required data-error="Email is required" placeholder="Support Email" />
  136. </div>
  137. </div>
  138. <div class="control-group">
  139. <label class="control-label" for="code">Purchase Code <a href="#myModal" role="button" data-toggle="modal"><i class="icon-question-sign"></i></a></label>
  140. <div class="controls">
  141. <input id="code" type="text" name="code" class="input-large" required data-error="Purchase Code is required" placeholder="Purchase Code" />
  142. </div>
  143. </div>
  144.  
  145. <div class="bottom">
  146. <input type="submit" class="btn btn-primary" value="Validate"/>
  147. </div>
  148. </form>
  149. <?php }
  150. break;
  151. case "1": ?>
  152. <ul class="steps">
  153. <li class="ok"><i class="icon icon-ok"></i>Checklist</li>
  154. <li class="ok"><i class="icon icon-ok"></i>Register</li>
  155. <li class="active">Database</li>
  156. <li>Site Config</li>
  157. <li class="last">Done!</li>
  158. </ul>
  159. <?php if($_POST){ ?>
  160. <h3>Database Config</h3>
  161. <p>If the database does not exist the system will try to create it.</p>
  162. <form action="?step=2" method="POST" class="form-horizontal">
  163. <div class="control-group">
  164. <label class="control-label" for="dbhost">Database Host</label>
  165. <div class="controls">
  166. <input id="dbhost" type="text" name="dbhost" class="input-large" required data-error="DB Host is required" placeholder="DB Host" value="localhost" />
  167. </div>
  168. </div>
  169. <div class="control-group">
  170. <label class="control-label" for="dbusername">Database Username</label>
  171. <div class="controls">
  172. <input id="dbusername" type="text" name="dbusername" class="input-large" required data-error="DB Username is required" placeholder="DB Username" />
  173. </div>
  174. </div>
  175. <div class="control-group">
  176. <label class="control-label" for="dbpassword">Database Password</a></label>
  177. <div class="controls">
  178. <input id="dbpassword" type="password" name="dbpassword" class="input-large" required data-error="DB Password is required" placeholder="DB Password" />
  179. </div>
  180. </div>
  181. <div class="control-group">
  182. <label class="control-label" for="dbname">Database Name</label>
  183. <div class="controls">
  184. <input id="dbname" type="text" name="dbname" class="input-large" required data-error="DB Name is required" placeholder="DB Name" />
  185. </div>
  186. </div>
  187.  
  188. <input id="code" type="hidden" name="code" value="<?php echo $_POST['code']; ?>" />
  189. <input type="hidden" name="username" value="<?php echo $_POST['username']; ?>" />
  190. <div class="bottom">
  191. <input type="submit" class="btn btn-primary" value="Next Step"/>
  192. </div>
  193. </form>
  194. <?php }
  195. break;
  196. case "2":
  197. ?>
  198. <ul class="steps">
  199. <li class="ok"><i class="icon icon-ok"></i>Checklist</li>
  200. <li class="ok"><i class="icon icon-ok"></i>Register</li>
  201. <li class="active">Database</li>
  202. <li>Site Config</li>
  203. <li class="last">Done!</li>
  204. </ul>
  205. <h3>Saving database config</h3>
  206. <?php
  207. if($_POST){
  208. $dbhost = $_POST["dbhost"];
  209. $dbusername = $_POST["dbusername"];
  210. $dbpassword = $_POST["dbpassword"];
  211. $dbname = $_POST["dbname"];
  212. $code = $_POST["code"];
  213. $username = $_POST["username"];
  214. $link = @mysql_connect($dbhost, $dbusername, $dbpassword);
  215. if (!$link) {
  216. echo "<div class='alert alert-error'><i class='icon-remove'></i> Could not connect to MYSQL!</div>";
  217. }else{
  218. echo '<div class="alert alert-success"><i class="icon-ok"></i> Connection to MYSQL successful!</div>';
  219.  
  220. $db_selected = @mysql_select_db($dbname, $link);
  221. if (!$db_selected) {
  222. if(!mysql_query("CREATE DATABASE IF NOT EXISTS `$dbname` /*!40100 CHARACTER SET utf8 COLLATE 'utf8_general_ci' */")){
  223. echo "<div class='alert alert-error'><i class='icon-remove'></i> Database ".$dbname." does not exist and could not be created. Please create the Database manually and retry this step.</div>";
  224.  
  225. return FALSE;
  226. }else{ echo "<div class='alert alert-success'><i class='icon-ok'></i> Database ".$dbname." created</div>";}
  227. }
  228. mysql_select_db($dbname);
  229.  
  230. require_once('includes/core_class.php');
  231. $core = new Core();
  232. $dbdata = array(
  233. 'hostname' => $dbhost,
  234. 'username' => $dbusername,
  235. 'password' => $dbpassword,
  236. 'database' => $dbname
  237. );
  238.  
  239. if ($core->write_database($dbdata) == false) {
  240. echo "<div class='alert alert-error'><i class='icon-remove'></i> Failed to write database details to ".$dbFile."</div>";
  241. } else {
  242. echo "<div class='alert alert-success'><i class='icon-ok'></i> Database config written to the database file.</div>";
  243. }
  244.  
  245. }
  246. } else { echo "<div class='alert alert-success'><i class='icon-question-sign'></i> Nothing to do...</div>"; }
  247. ?>
  248. <div class="bottom">
  249. <form action="?step=1" method="POST" class="form-horizontal">
  250. <input id="code" type="hidden" name="code" value="<?php echo $_POST['code']; ?>" />
  251. <input id="username" type="hidden" name="username" value="<?php echo $_POST['username']; ?>" />
  252. <input type="submit" class="btn pull-left" value="Previous Step"/>
  253. </form>
  254. <form action="?step=3" method="POST" class="form-horizontal">
  255. <input id="code" type="hidden" name="code" value="<?php echo $_POST['code']; ?>" />
  256. <input id="username" type="hidden" name="username" value="<?php echo $_POST['username']; ?>" />
  257. <input type="submit" class="btn btn-primary pull-right" value="Next Step">
  258. </form>
  259. <br clear="all">
  260. </div>
  261. <?php
  262. break;
  263. case "3":
  264. ?>
  265. <ul class="steps">
  266. <li class="ok"><i class="icon icon-ok"></i>Checklist</li>
  267. <li class="ok"><i class="icon icon-ok"></i>Register</li>
  268. <li class="ok"><i class="icon icon-ok"></i>Database</li>
  269. <li class="active">Site Config</li>
  270. <li class="last">Done!</li>
  271. </ul>
  272. <h3>Site Config</h3>
  273. <?php if($_POST){ ?>
  274. <form action="?step=4" method="POST" class="form-horizontal">
  275. <div class="control-group">
  276. <label class="control-label" for="domain">SMA URL</a></label>
  277. <div class="controls">
  278. <input type="text" id="domain" name="domain" class="xlarge" required data-error="SMA URL is required" value="<?php echo "http://".$_SERVER["SERVER_NAME"].substr($_SERVER["REQUEST_URI"], 0, -15); ?>" />
  279. </div>
  280. </div>
  281. <div class="control-group">
  282. <label class="control-label" for="domain">Your Timezone</a></label>
  283. <div class="controls">
  284. <?php
  285. require_once('includes/timezones_class.php');
  286. $tz = new Timezones();
  287. $timezones = $tz->get_timezones();
  288. echo '<select name="timezone" required="required" data-error="TimeZone is required">';
  289. foreach ($timezones as $key => $zone){
  290. echo '<option value="'.$key.'">'.$zone.'</option>';
  291. }
  292. echo '</select>'; ?>
  293. </div>
  294. </div>
  295. <input type="hidden" name="code" value="<?php echo $_POST['code']; ?>" />
  296. <input type="hidden" name="username" value="<?php echo $_POST['username']; ?>" />
  297. <div class="bottom">
  298. <a href="?step=2" class="btn pull-left">Previous Step</a>
  299. <input type="submit" class="btn btn-primary" value="Next Step"/>
  300. </div>
  301. </form>
  302.  
  303. <?php }
  304. break;
  305. case "4":
  306. ?>
  307. <ul class="steps">
  308. <li class="ok"><i class="icon icon-ok"></i>Checklist</li>
  309. <li class="ok"><i class="icon icon-ok"></i>Register</li>
  310. <li class="ok">Database</li>
  311. <li class="active">Site Config</li>
  312. <li class="last">Done!</li>
  313. </ul>
  314. <h3>Saving site config</h3>
  315. <?php
  316. if($_POST){
  317. $domain = $_POST['domain'];
  318. $timezone = $_POST['timezone'];
  319. $code = $_POST["code"];
  320. $username = $_POST["username"];
  321.  
  322. require_once('includes/core_class.php');
  323. $core = new Core();
  324.  
  325. if ($core->write_config($domain) == false) {
  326. echo "<div class='alert alert-error'><i class='icon-remove'></i> Failed to write config details to ".$configFile."</div>";
  327. } elseif ($core->write_index($timezone) == false) {
  328. echo "<div class='alert alert-error'><i class='icon-remove'></i> Failed to write timezone details to ".$indexFile."</div>";
  329. } else {
  330. echo "<div class='alert alert-success'><i class='icon-ok'></i> Config details written to the config file.</div>";
  331. }
  332.  
  333.  
  334. } else { echo "<div class='alert alert-success'><i class='icon-question-sign'></i> Nothing to do...</div>"; }
  335. ?>
  336. <div class="bottom">
  337. <form action="?step=2" method="POST" class="form-horizontal">
  338. <input id="code" type="hidden" name="code" value="<?php echo $_POST['code']; ?>" />
  339. <input id="username" type="hidden" name="username" value="<?php echo $_POST['username']; ?>" />
  340. <input type="submit" class="btn pull-left" value="Previous Step"/>
  341. </form>
  342. <form action="?step=5" method="POST" class="form-horizontal">
  343. <input id="code" type="hidden" name="code" value="<?php echo $_POST['code']; ?>" />
  344. <input id="username" type="hidden" name="username" value="<?php echo $_POST['username']; ?>" />
  345. <input type="submit" class="btn btn-primary pull-right" value="Next Step">
  346. </form>
  347. <br clear="all">
  348. </div>
  349.  
  350. <?php
  351. break;
  352. case "5": ?>
  353. <ul class="steps">
  354. <li class="ok"><i class="icon icon-ok"></i>Checklist</li>
  355. <li class="ok"><i class="icon icon-ok"></i>Register</li>
  356. <li class="ok"><i class="icon icon-ok"></i>Database</li>
  357. <li class="ok"><i class="icon icon-ok"></i>Site Config</li>
  358. <li class="active">Done!</li>
  359. </ul>
  360.  
  361. <?php if($_POST){
  362. $code = $_POST['code'];
  363. $username = $_POST['username'];
  364. define("BASEPATH", "install/");
  365. include("../sma/config/database.php");
  366. $curl_handle = curl_init();
  367. curl_setopt($curl_handle, CURLOPT_URL, 'http://tecdiary.com/support/api/getdb/');
  368. curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
  369. curl_setopt($curl_handle, CURLOPT_POST, 1);
  370. curl_setopt($curl_handle, CURLOPT_POSTFIELDS, array(
  371. 'username' => $_POST["username"],
  372. 'code' => $_POST["code"] ,
  373. 'id' => '5403161',
  374. 'version' => '2.3',
  375. 'type' => 'install'
  376. ));
  377. $buffer = curl_exec($curl_handle);
  378. curl_close($curl_handle);
  379. $object = json_decode($buffer);
  380.  
  381. if ($object->status == 'success') {
  382. $dbdata = array(
  383. 'hostname' => $db['default']['hostname'],
  384. 'username' => $db['default']['username'],
  385. 'password' => $db['default']['password'],
  386. 'database' => $db['default']['database'],
  387. 'dbtables' => $object->database
  388. );
  389. require_once('includes/database_class.php');
  390. $database = new Database();
  391. if ($database->create_tables($dbdata) == false) {
  392. $finished = FALSE;
  393. echo "<div class='alert alert-warning'><i class='icon-warning'></i> The database tables could not be created, please try again.</div>";
  394. } else {
  395. $finished = TRUE;
  396. if(!@unlink('../SMA2')){
  397. echo "<div class='alert alert-warning'><i class='icon-warning'></i> Please remove the SMA2 file from the main folder in order to lock the ipdate tool.</div>";
  398. }
  399.  
  400. }
  401.  
  402. }else{
  403. echo "<div class='alert alert-error'><i class='icon-remove'></i> Error while validating your purchase code!</div>";
  404. }
  405.  
  406.  
  407. }
  408. if($finished) {
  409. ?>
  410.  
  411. <h3><i class='icon-ok'></i> Installation completed!</h3>
  412. <div class="alert alert-info"><i class='icon-info-sign'></i> You can login now using the following credential:<br /><br />
  413. Username: <span style="font-weight:bold; letter-spacing:1px;">owner@tecdiary.com</span><br />Password: <span style="font-weight:bold; letter-spacing:1px;">12345678</span><br /><br /></div>
  414. <div class="alert alert-warning"><i class='icon-warning-sign'></i> Please don't forget to change username and password.</div>
  415. <div class="bottom">
  416. <a href="<?php echo "http://".$_SERVER["SERVER_NAME"].substr($_SERVER["REQUEST_URI"], 0, -15); ?>" class="btn btn-primary">Go to Login</a>
  417. </div>
  418.  
  419. <?php
  420. }
  421. }
  422.  
  423. }else{
  424. echo "<div style='width: 100%; font-size: 10em; color: #757575; text-shadow: 0 0 2px #333, 0 0 2px #333, 0 0 2px #333; text-align: center;'><i class='icon-lock'></i></div><h3 class='alert-text text-center'>Installer is locked!<br><small style='color:#666;'>Please contact your developer/support.</small></h3>";
  425. }
  426. ?>
  427.  
  428.  
  429. <!-- Modal -->
  430. <div id="myModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
  431. <div class="modal-header">
  432. <button type="button" class="close" data-dismiss="modal" aria-hidden="true"><i class="icon-remove"></i></button>
  433. <h3 id="myModalLabel">How to find your purchase code</h3>
  434. </div>
  435. <div class="modal-body">
  436. <img src="img/purchaseCode.png">
  437. </div>
  438. </div>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement