public function update_post($_title, $_date, $_content, $_post_cat_id, $_status, $_tag_list, $_post_id) { global $sql, $user; $values = array('post_date' => $_date, 'post_title' => $_title, 'post_content' => $_content, 'post_cat_id' => $_post_cat_id, 'post_status' => $_status); $conds = array('post_id' => $_post_id); $sql->update_table('post', $values, $conds); //címke updatelés /* először nézzük meg h létezik-e már ilyen tag az usernél ha igen, nézzük meg, hogy benne van-e a tag_post táblában ezzel a post_id-val ha nincs, tegyük bele, és count++ ha nem hozzuk létre adjuk hozzá a tag_post táblához count++ */ $_tag_list = explode(",", $_tag_list); $new_tag_array = array(); //ebben tároljuk az újonnan létrehozott tag-eket, amiket majd hozzá kell adni az adatbázishoz $old_tag_array = array(); //ebben tároljuk a már létező tag-eket, amiket majd updatelünk az adatbázisban $valid_ids = array(); //ebben tároljuk a törlendő tag_post_id-k komplementer halmazáz foreach ($_tag_list as $tag) { $tag_id = tag::tag_exists($tag, $user->get_user_id()); if (!$tag_id) { $new_tag = new tag(); $new_tag->set_tag_data($tag, $user->get_user_id()); $new_tag_array[] = $new_tag; $valid_ids[] = $new_tag->get_tag_id(); } else { //itt ellenőrizzük, hogy ehhez a posthoz hozzá van-e már rendelve ez a címke if (!tag::is_tag_in_post($tag_id, $_post_id)) { $new_tag = new tag(); $new_tag->set_tag_data_by_id($tag_id); $update_array = array('tag_count' => 'tag_count + 1'); $conds_array = array('tag_id' => $tag_id); $sql->update_table('tag', $update_array, $conds_array, false); $sql->add_tag_post($tag_id, $_post_id); $old_tag_array[] = $tag_id; } $valid_ids[] = $tag_id; // } } if (count($new_tag_array)) { $sql->add_tag($new_tag_array, $user->get_user_id(), $_post_id); } //ez adja hozzá az adatbázishoz, TODO: sql->insert_into //töröljük azokat, amiket már nem soroltunk fel //TODO: tag_cont--, ha 0, delete $delete_query = 'delete from tag_post where tp_post_id = ' . $_post_id . ' and tp_tag_id not in ('; $n = count($valid_ids); $i = 0; foreach ($valid_ids as $v_id) { $delete_query .= $v_id . ($i != $n - 1 ? ', ' : ');'); $i++; } $sql->execute_query($delete_query); //updateljük a tag_count-ot $sql->execute_query('update tag set tag_count = (select count(tp_id) from tag_post where tp_tag_id = tag_id) where tag_author = ' . $user->get_user_id() . ';'); //amiknek 0 countja, azokat töröljük $sql->execute_query('delete from tag where tag_count = 0 and tag_author = ' . $user->get_user_id()); //törlés end //címke updatelés end }