PageRenderTime 54ms CodeModel.GetById 24ms RepoModel.GetById 1ms app.codeStats 0ms

/www/admin/admin_style_add.php

https://github.com/Sweil/Frogsystem-2
PHP | 246 lines | 205 code | 21 blank | 20 comment | 46 complexity | 5c1d1f825cebd32d3aa2e2bea18a7631 MD5 | raw file
  1. <?php if (!defined('ACP_GO')) die('Unauthorized access!');
  2. /////////////////////////
  3. //// Save Data to DB ////
  4. /////////////////////////
  5. if (
  6. isset($_POST['style_tag']) && preg_match ( '/^[0-9a-z_\-]+$/', $_POST['style_tag'] ) === 1
  7. && $_POST['style_tag'] != '' && $_POST['style_tag'] != 'default' && strlen ( $_POST['style_tag'] ) >= 1
  8. && isset($_POST['style_name']) && $_POST['style_name'] != ''
  9. && ( $_POST['style_create_as'] == 'new' || ( $_POST['style_create_as'] == 'copy' && $_POST['copy_style_id'] ) )
  10. )
  11. {
  12. // Security Functions
  13. $_POST['style_folder'] = $_POST['style_tag'];
  14. $_POST['style_create_as'] = ( $_POST['style_create_as'] == 'copy' ) ? 'copy' : 'new';
  15. settype ( $_POST['style_allow_use'], 'integer' );
  16. settype ( $_POST['style_allow_edit'], 'integer' );
  17. //~ settype ( $_POST['copy_style_id'], 'integer' );
  18. // Folder Operations
  19. $new_ini_data = $_POST['style_name']."
  20. ".$_POST['style_version']."
  21. ".$_POST['style_copyright'];
  22. // New Style Path
  23. $new_style_path = FS2STYLES . '/' . $_POST['style_folder'];
  24. // Create Sytle Folder
  25. $ACCESS = new fileaccess();
  26. if (
  27. @$ACCESS->createDir( $new_style_path , 0777 )
  28. && @$ACCESS->putFileData( $new_style_path . '/style.ini', $new_ini_data )
  29. ) {
  30. // SQL-Queries
  31. $stmt = $FD->db()->conn()->prepare( '
  32. INSERT INTO
  33. `'.$FD->env('DB_PREFIX')."styles`
  34. ( `style_tag`, `style_allow_use`, `style_allow_edit` )
  35. VALUES
  36. ( ?, '".$_POST['style_allow_use']."', '".$_POST['style_allow_edit']."' )" );
  37. $stmt->execute(array($_POST['style_tag']));
  38. // Copy Style recursive
  39. if ( $_POST['style_create_as'] == 'copy' && $_POST['copy_style_id'] ) {
  40. if ('default' === $_POST['copy_style_id']) {
  41. $copy_style_path = FS2ADMIN . '/assets/styles/default';
  42. } else {
  43. settype($_POST['copy_style_id'], 'integer');
  44. // SQL-Queries
  45. $index = $FD->db()->conn()->query ( '
  46. SELECT `style_tag`
  47. FROM `'.$FD->env('DB_PREFIX').'styles`
  48. WHERE `style_id` = '.$_POST['copy_style_id'].'
  49. LIMIT 0,1' );
  50. $copy_style_path = FS2STYLES . '/' . $index->fetchColumn();
  51. }
  52. if (
  53. $ACCESS->copyAny( $copy_style_path, $new_style_path, 0777, 0644 )
  54. && $ACCESS->putFileData( $new_style_path . '/style.ini', $new_ini_data )
  55. ) {
  56. systext ( $FD->text("admin", "style_added"),
  57. $FD->text("admin", "info"), FALSE, $FD->text("admin", "icon_save_add") );
  58. } else {
  59. systext ( $FD->text("admin", "style_added").'<br>'.$FD->text("admin", "style_error_copy").'<br>'.$FD->text("admin", "error_file_access"),
  60. $FD->text("admin", "info"), FALSE, $FD->text("admin", "icon_save_add") );
  61. }
  62. // Create New Style
  63. } else {
  64. if (
  65. @$ACCESS->createDir( $new_style_path . '/images', 0777 )
  66. && @$ACCESS->createDir( $new_style_path . '/icons', 0777 )
  67. ) {
  68. systext ( $FD->text("admin", "style_added"),
  69. $FD->text("admin", "info"), FALSE, $FD->text("admin", "icon_save_add") );
  70. } else {
  71. systext ( $FD->text("admin", "style_added").'<br>'.$FD->text("admin", "style_error_folder_creation").'<br>'.$FD->text("admin", "error_file_access"),
  72. $FD->text("admin", "info"), FALSE, $FD->text("admin", "icon_save_add") );
  73. }
  74. }
  75. } else {
  76. @deleteAny ( $new_style_path );
  77. systext ( $FD->text("admin", "style_not_added").'<br>'.$FD->text("admin", "error_file_access"),
  78. $FD->text("admin", "error"), TRUE, $FD->text("admin", "icon_error") );
  79. }
  80. unset ( $_POST );
  81. }
  82. ////////////////////////
  83. //// Add Stlye Form ////
  84. ////////////////////////
  85. // Check for file rights
  86. if ( !is_writable ( FS2STYLES ) ) {
  87. systext ( $FD->text("admin", "style_folder_not_writable").'<br>'.$FD->text("admin", "error_file_access"),
  88. $FD->text("admin", "error"), TRUE, $FD->text("admin", "icon_error") );
  89. } else {
  90. // Check for Errors
  91. if ( isset ( $_POST['sended'] ) ) {
  92. $error_message = array();
  93. if ( $_POST['style_name'] == '' || $_POST['style_tag'] == '' ) {
  94. $error_message[] = $FD->text("admin", "form_not_filled");
  95. }
  96. if ( preg_match ( '/^[0-9a-z_\-]+$/', $_POST['style_tag'] ) !== 1 && $_POST['style_tag'] != '' ) {
  97. $error_message[] = $FD->text("admin", "form_only_allowed_values");
  98. }
  99. systext ( $FD->text("admin", "style_not_added").'<br>'.implode ( '<br>', $error_message ),
  100. $FD->text("admin", "error"), TRUE, $FD->text("admin", "icon_save_error") );
  101. // Set Data
  102. } else {
  103. $_POST['style_allow_use'] = 1;
  104. $_POST['style_allow_edit'] = 1;
  105. $_POST['copy_style_id'] = $FD->config('style_id');
  106. $_POST['style_create_as'] = 'new';
  107. }
  108. // Security Functions
  109. $_POST['style_name'] = isset($_POST['style_name']) ? killhtml ( $_POST['style_name'] ) : '';
  110. $_POST['style_version'] = isset($_POST['style_version']) ? killhtml ( $_POST['style_version'] ) : '';
  111. $_POST['style_copyright'] = isset($_POST['style_copyright']) ? killhtml ( $_POST['style_copyright'] ) : '';
  112. $_POST['style_tag'] = isset($_POST['style_tag']) ? killhtml ( $_POST['style_tag'] ) : '';
  113. $_POST['style_create_as'] = ( $_POST['style_create_as'] == 'copy' ) ? 'copy' : 'new';
  114. settype ( $_POST['style_allow_use'], 'integer' );
  115. settype ( $_POST['style_allow_edit'], 'integer' );
  116. settype ( $_POST['copy_style_id'], 'integer' );
  117. // Display Form
  118. echo '
  119. <form action="" method="post">
  120. <input type="hidden" name="go" value="style_add">
  121. <input type="hidden" name="sended" value="1">
  122. <table class="configtable" cellpadding="4" cellspacing="0">
  123. <tr><td class="line" colspan="2">'.$FD->text("admin", "style_content_title").'</td></tr>
  124. <td class="config">
  125. '.$FD->text("admin", "style_create_as_title").':<br>
  126. <span class="small">'.$FD->text("admin", "style_create_as_desc").'</span>
  127. </td>
  128. <td class="config">
  129. <input class="pointer middle" type="radio" name="style_create_as" id="style_create_as_new" value="new" '.getchecked ( 'new', $_POST['style_create_as'] ).'>
  130. <label class="pointer middle" for="style_create_as_new">'.$FD->text("admin", "style_create_as_empty").'</label><br><br>
  131. <input class="pointer middle" type="radio" name="style_create_as" id="style_create_as_copy" value="copy" '.getchecked ( 'copy', $_POST['style_create_as'] ).'>
  132. <label class="pointer middle" for="style_create_as_copy">'.$FD->text("admin", "style_create_as_copy").':</label>
  133. <br><br>
  134. <div align="right">
  135. <select class="input_width pointer middle" name="copy_style_id" size="1">
  136. <option value="default" '.getselected( 'default', $_POST['copy_style_id'] ).'>default</option>';
  137. $index = $FD->db()->conn()->query ( '
  138. SELECT `style_id`, `style_tag`
  139. FROM `'.$FD->env('DB_PREFIX').'styles`
  140. WHERE `style_tag` != \'default\'
  141. ORDER BY `style_id`' );
  142. while ( $style_arr = $index->fetch(PDO::FETCH_ASSOC) ) {
  143. settype ( $style_arr['style_id'], 'integer' );
  144. echo '<option value="'.$style_arr['style_id'].'" '.getselected( $style_arr['style_id'], $_POST['copy_style_id'] ).'>'.killhtml ( $style_arr['style_tag'] );
  145. echo ( $style_arr['style_id'] == $FD->config('style_id') ) ? ' ('.$FD->text('admin', 'active').')' : '';
  146. echo '</option>';
  147. }
  148. echo '
  149. </select>
  150. </div>
  151. </td>
  152. <tr><td class="space"></td></tr>
  153. <tr><td class="line" colspan="2">'.$FD->text("admin", "style_info_title").'</td></tr>
  154. <tr>
  155. <td class="config">
  156. '.$FD->text("admin", "style_tag_title").':<br>
  157. <span class="small">'.$FD->text("admin", "style_tag_desc").'</span>
  158. </td>
  159. <td class="config">
  160. <input class="text input_width_small" name="style_tag" maxlength="30" value="'.$_POST['style_tag'].'"><br>
  161. <span class="small">'.$FD->text("admin", "folder_name_info").'</span>
  162. </td>
  163. </tr>
  164. <tr>
  165. <td class="config">
  166. '.$FD->text("admin", "style_name_title").':<br>
  167. <span class="small">'.$FD->text("admin", "style_name_desc").'</span>
  168. </td>
  169. <td class="config">
  170. <input class="text input_width" name="style_name" maxlength="100" value="'.$_POST['style_name'].'">
  171. </td>
  172. </tr>
  173. <tr>
  174. <td class="config">
  175. '.$FD->text("admin", "style_version_title").': <span class="small">('.$FD->text("admin", "optional").')</span><br>
  176. <span class="small">'.$FD->text("admin", "style_version_desc").'</span>
  177. </td>
  178. <td class="config">
  179. <input class="text input_width_mini" name="style_version" maxlength="15" value="'.$_POST['style_version'].'">
  180. </td>
  181. </tr>
  182. <tr>
  183. <td class="config">
  184. '.$FD->text("admin", "style_copyright_title").': <span class="small">('.$FD->text("admin", "optional").')</span><br>
  185. <span class="small">'.$FD->text("admin", "style_copyright_desc").'</span>
  186. </td>
  187. <td class="config">
  188. <input class="text input_width" name="style_copyright" maxlength="255" value="'.$_POST['style_copyright'].'">
  189. </td>
  190. </tr>
  191. <tr><td class="space"></td></tr>
  192. <tr><td class="line" colspan="2">'.$FD->text("admin", "style_config_title").'</td></tr>
  193. <tr>
  194. <td class="config">
  195. '.$FD->text("admin", "style_allow_use_title").':<br>
  196. <span class="small">'.$FD->text("admin", "style_allow_use_desc").'</span>
  197. </td>
  198. <td class="config">
  199. <input class="pointer" type="checkbox" name="style_allow_use" value="1" '.getchecked ( 1, $_POST['style_allow_use'] ).'>
  200. </td>
  201. </tr>
  202. <tr>
  203. <td class="config">
  204. '.$FD->text("admin", "style_allow_edit_title").':<br>
  205. <span class="small">'.$FD->text("admin", "style_allow_edit_desc").'</span>
  206. </td>
  207. <td class="config">
  208. <input class="pointer" type="checkbox" name="style_allow_edit" value="1" '.getchecked ( 1, $_POST['style_allow_edit'] ).'>
  209. </td>
  210. </tr>
  211. <tr><td class="space"></td></tr>
  212. <tr>
  213. <td colspan="2" class="buttontd">
  214. <button class="button_new" type="submit">
  215. '.$FD->text("admin", "button_arrow").' '.$FD->text("admin", "style_add_title").'
  216. </button>
  217. </td>
  218. </tr>
  219. </table>
  220. </form>
  221. ';
  222. }
  223. ?>