예제 #1
0
 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
 }