PageRenderTime 24ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 0ms

/application/controllers/new_project.php

https://bitbucket.org/prat_h/rakbuku
PHP | 372 lines | 297 code | 60 blank | 15 comment | 54 complexity | 3239c5f287cca830e50ec0bd8b6eb575 MD5 | raw file
Possible License(s): LGPL-2.1
  1. <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
  2. require_once(APPPATH.'controllers/project.php');
  3. class New_project extends Project {
  4. function __construct() {
  5. parent::__construct();
  6. //$generatedKey = md5(mt_rand(10000,99999).time().$str);
  7. $this->data["jurusan"] = $this->jurusan->get_jurusan();
  8. if( !is_login($this->data['login']) ){
  9. show_404();
  10. }
  11. }
  12. public function index() {
  13. if( !is_login($this->data['login']) ){
  14. show_404();
  15. }
  16. $this->data['types'] = $this->types->get_types();
  17. $this->data['title'] = 'New Project';
  18. $this->load->view("project/new_project", $this->data);
  19. }
  20. /**
  21. * ---------======@[ NEW FORM ]@======---------
  22. */
  23. public function new_form() {
  24. if( !is_login($this->data['login']) || ( $this->input->post("project_state") == "" && ($this->laststate != $this->uri->segment( 1 )) ) ){
  25. show_404();
  26. }
  27. $prevstate_process = $this->input->post("project_state");
  28. $this->data["type"] = $this->input->post("project_type");
  29. $par = array(
  30. "type_id" => $this->data["type"]
  31. );
  32. $this->data["types"] = $this->types->get_types($par);
  33. //print_r($this->data["jurusan"]);
  34. $this->set_destination($this->data["type"], $prevstate_process);
  35. $this->load->view("project/form_new", $this->data);
  36. }
  37. /**
  38. * ---------======@[ SAVE NEW PROJECT ]@======---------
  39. *
  40. * saving new project
  41. */
  42. public function save_new_project(){
  43. if( !is_login($this->data['login']) || ( $this->input->post("project_state") == "" && ($this->laststate != $this->uri->segment( 1 )) ) ){
  44. show_404();
  45. }
  46. $this->data["type"] = $this->input->post( "project_type" );
  47. $this->data["status"] = $this->input->post( "project_status" );
  48. $this->data["state"] = $this->input->post( "project_state" );
  49. $this->data["nextstate"] = $this->input->post( "nextstate" );
  50. $this->data["nexturl"] = $this->input->post( "nexturl" );
  51. $this->data["currenturl"] = $this->input->post( "currenturl" );
  52. $project_title = $this->input->post( "project_title" );
  53. $project_content = $this->input->post( "project_content" );
  54. $project_author = $this->input->post( "project_author" );
  55. $project_reviewer = $this->input->post( "project_reviewer" );
  56. $project_year = $this->input->post( "project_year" );
  57. $project_chapters = $this->input->post( "project_chapters" );
  58. $project_jurusan = $this->input->post( "project_jurusan" );
  59. $project_fakultas = $this->input->post( "project_fakultas" );
  60. $project_strata = $this->input->post( "project_strata" );
  61. $this->form_validation->set_rules('project_title', 'Judul', 'required|xss_clean');
  62. $this->form_validation->set_rules('project_content', 'Abstract', 'required|xss_clean');
  63. $this->form_validation->set_rules('project_author', 'Nama Lengkap', 'required|xss_clean');
  64. $this->form_validation->set_rules('project_year', 'Tahun Pembuatan', 'required|numeric|xss_clean');
  65. $this->form_validation->set_rules('project_jurusan', 'Jurusan', 'required|xss_clean');
  66. $this->form_validation->set_rules('project_fakultas', 'Fakultas', 'required|xss_clean');
  67. $this->form_validation->set_rules('project_strata', 'Strata', 'required|xss_clean');
  68. if($this->data["type"] == 1 || $this->data["type"] == 2 || $this->data["type"] == 3 || $this->data["type"] == 4 || $this->data["type"] == 5) {
  69. $this->form_validation->set_rules('project_reviewer', 'Pembimbing', 'required|xss_clean');
  70. }
  71. $judul = $this->projects_model->get_projects('', '', NULL, NULL, "project_title");
  72. $this->data["cekjuudul"] = "";
  73. if( isset($judul) ) {
  74. foreach( $judul as $k => $v ) {
  75. if( array_search( $project_title, $v ) ){
  76. $this->data["cekjuudul"] = "ada";
  77. }
  78. }
  79. }
  80. if($this->form_validation->run() == FALSE || $this->data["cekjuudul"] == "ada") {
  81. $par = array(
  82. "type_id" => $this->input->post( "project_type" )
  83. );
  84. $this->data["types"] = $this->types->get_types($par);
  85. $prevstate_process = $this->prev_state($this->data["type"], $this->data["state"]);
  86. $this->data["type"] = $this->input->post("project_type");
  87. $this->set_destination($this->data["type"], $prevstate_process);
  88. $this->load->view("project/form_new", $this->data);
  89. } else {
  90. //save disini 2012-05-31 06:36:46
  91. $save = $this->save_process($this->input->post());
  92. }
  93. }
  94. protected function save_process($post) {
  95. if( !is_login($this->data['login']) || ( $this->input->post("project_state") == "" && ($this->laststate != $this->uri->segment( 1 )) ) ){
  96. show_404();
  97. }
  98. //$this->output->enable_profiler(TRUE);
  99. //echo "<pre>";
  100. //print_r($_FILES);
  101. //echo "</pre>";
  102. $arrcountatt = 0;
  103. foreach( $_FILES as $k => $v ) {
  104. if($v["name"] !== "") {
  105. $arrcountatt++;
  106. }
  107. }
  108. $arrcountatt;
  109. $datestring = "%Y-%m-%d %H:%i:%s";
  110. $time = time();
  111. $now = mdate($datestring, $time);
  112. error_reporting(0);
  113. $exp = explode( "|", $post["project_reviewer"] );
  114. $reviewer = serialize($exp);
  115. $string = $post["project_title"];
  116. $url = spliturl($string, 50);
  117. $project_keywords_temp = $this->input->post( "project_keywords" );
  118. $project_keywords_exp = explode( ',', $project_keywords_temp );
  119. $project_keywordstrim = array();
  120. foreach( $project_keywords_exp as $k => $v ) {
  121. array_push($project_keywordstrim, trim($v));
  122. }
  123. $project_keywords = serialize($project_keywordstrim);
  124. $data_project = array(
  125. "project_id" => NULL,
  126. "project_chapters" => $post["project_chapters"],
  127. "project_chapter_num" => $post["project_chapters"],
  128. "project_title" => $post["project_title"],
  129. "project_content" => $post["project_content"],
  130. "project_is_parent" => "yes",
  131. "project_parent" => NULL,
  132. "project_made" => $now,
  133. "project_published" => NULL,
  134. "project_status" => "created",
  135. "project_attachment_count" => $arrcountatt,
  136. "project_downloadable" => "yes",
  137. "project_year" => $post["project_year"],
  138. "type_id" => $this->data["type"],
  139. "user_id" => $this->data['current_user_id'],
  140. "project_author" => $post["project_author"],
  141. "project_reviewer" => $reviewer,
  142. "project_jurusan" => $post["project_jurusan"],
  143. "project_fakultas" => $post["project_fakultas"],
  144. "project_strata" => $post["project_strata"],
  145. "project_url" => $url,
  146. "project_keywords" => $project_keywords,
  147. "project_link" => $post["project_link"]
  148. );
  149. $insert_project = $this->projects_model->add_new_project($data_project);
  150. if( $insert_project ) {
  151. $par = array(
  152. "rb_projects_fw" => array(
  153. "type_id" => $this->data["type"]
  154. )
  155. );
  156. $fw = $this->projects_model->get_projects_fw($par);
  157. $data_project_state = array(
  158. "project_state_id" => NULL,
  159. "project_id" => $insert_project,
  160. "project_state" => $post["project_state"],
  161. "project_state_next_state" => $post["nextstate"],
  162. "project_state_next_url" => $post["nexturl"],
  163. "project_state_fw" => $fw[0]["fw"]
  164. );
  165. $insert_project_state = $this->projects_model->add_new_project_state($data_project_state);
  166. }
  167. if( $post["project_chapters"] > 1 ) {
  168. $chaps = $post["project_chapters"];
  169. $b = 0;
  170. $projattachcount = array();
  171. foreach( $_FILES as $k => $v) {
  172. if($v["name"] !== "") {
  173. $projattachcount[$b] = $v["name"];
  174. }
  175. $b++;
  176. }
  177. for( $i = 0; $i < $chaps; $i++ ) {
  178. $x = $i+1;
  179. if( $post["project_chap_title"][$i] == "") {
  180. $chap_title = "BAB ".$x;
  181. $urlc = spliturl($chap_title, 50);
  182. } else {
  183. $chap_title = $post["project_chap_title"][$i];
  184. $urlc = spliturl($chap_title, 50);
  185. }
  186. error_reporting(0);
  187. $proatc = 0;
  188. if($projattachcount[$i]) {
  189. $proatc = 1;
  190. }
  191. $data_project2 = array(
  192. "project_id" => NULL,
  193. "project_chapters" => NULL,
  194. "project_chapter_num" => NULL,
  195. "project_title" => $chap_title,
  196. "project_content" => $post["project_content"],
  197. "project_is_parent" => "no",
  198. "project_parent" => $insert_project,
  199. "project_made" => $now,
  200. "project_published" => NULL,
  201. "project_status" => "created",
  202. "project_attachment_count" => $proatc,
  203. "project_downloadable" => "yes",
  204. "project_year" => $post["project_year"],
  205. "type_id" => NULL,
  206. "user_id" => $this->data['current_user_id'],
  207. "project_author" => $post["project_author"],
  208. "project_reviewer" => $reviewer,
  209. "project_jurusan" => $post["project_jurusan"],
  210. "project_fakultas" => $post["project_fakultas"],
  211. "project_strata" => $post["project_strata"],
  212. "project_url" => $urlc
  213. );
  214. $insert_project2 = $this->projects_model->add_new_project($data_project2);
  215. if($this->upload->do_upload( "project_chap_file_".$x )){
  216. $dataup = array('upload_data' => $this->upload->data());
  217. $ver = array(
  218. "version_id" => NULL,
  219. "version_number" => 1,
  220. "project_id" => $insert_project2
  221. );
  222. $insert_version = $this->versions->add_new_version($ver);
  223. if( $insert_version ) {
  224. $att = array(
  225. "attachment_id" => NULL,
  226. "attachment_url" => $dataup["upload_data"]["file_name"],
  227. "attachment_file" => $dataup["upload_data"]["file_name"],
  228. "attachment_file_ext" => $dataup["upload_data"]["file_ext"],
  229. "attachment_file_path" => $dataup["upload_data"]["full_path"]
  230. );
  231. $insert_attachment = $this->attach->add_new_attachment($att);
  232. if( $insert_attachment ){
  233. $attachvers = array(
  234. "attachment_id" => $insert_attachment,
  235. "version_id" => $insert_version
  236. );
  237. $insert_attachvers = $this->attach->add_new_attachment_version($attachvers);
  238. }
  239. }
  240. }
  241. }
  242. if( $insert_project ){
  243. $destination = $this->input->post( "currenturl" );
  244. redirect($destination.'/'.$url, "refresh");
  245. }
  246. } else {
  247. $projattachcount = 0;
  248. foreach( $_FILES as $k => $v) {
  249. if($v["name"] !== "") {
  250. $projattachcount = 1;
  251. }
  252. }
  253. $chap_title = "BAB I";
  254. $urlc = spliturl($chap_title, 50);
  255. $data_project2 = array(
  256. "project_id" => NULL,
  257. "project_chapters" => NULL,
  258. "project_chapter_num" => NULL,
  259. "project_title" => $chap_title,
  260. "project_content" => $post["project_content"],
  261. "project_is_parent" => "no",
  262. "project_parent" => $insert_project,
  263. "project_made" => $now,
  264. "project_published" => NULL,
  265. "project_status" => "created",
  266. "project_attachment_count" => $projattachcount,
  267. "project_downloadable" => "yes",
  268. "project_year" => $post["project_year"],
  269. "type_id" => NULL,
  270. "user_id" => $this->data['current_user_id'],
  271. "project_author" => $post["project_author"],
  272. "project_reviewer" => $reviewer,
  273. "project_jurusan" => $post["project_jurusan"],
  274. "project_fakultas" => $post["project_fakultas"],
  275. "project_strata" => $post["project_strata"],
  276. "project_url" => $urlc
  277. );
  278. $insert_project2 = $this->projects_model->add_new_project($data_project2);
  279. if ( $this->upload->do_upload( "project_chap_file_0" ) ) {
  280. $dataup = array('upload_data' => $this->upload->data());
  281. $ver = array(
  282. "version_id" => NULL,
  283. "version_number" => 1,
  284. "project_id" => $insert_project2
  285. );
  286. $insert_version = $this->versions->add_new_version($ver);
  287. if( $insert_version ) {
  288. $att = array(
  289. "attachment_id" => NULL,
  290. "attachment_url" => $dataup["upload_data"]["file_name"],
  291. "attachment_file" => $dataup["upload_data"]["file_name"],
  292. "attachment_file_ext" => $dataup["upload_data"]["file_ext"],
  293. "attachment_file_path" => $dataup["upload_data"]["full_path"]
  294. );
  295. $insert_attachment = $this->attach->add_new_attachment($att);
  296. if( $insert_attachment ){
  297. $attachvers = array(
  298. "attachment_id" => $insert_attachment,
  299. "version_id" => $insert_version
  300. );
  301. $insert_attachvers = $this->attach->add_new_attachment_version($attachvers);
  302. }
  303. }
  304. }
  305. if( $insert_project ){
  306. $destination = $this->input->post( "currenturl" );
  307. $string = $post["project_title"];
  308. redirect($destination.'/'.$url, "refresh");
  309. }
  310. }
  311. }
  312. }