/** * Updates or adds a news article and returns the object of that article * * @param array $reports display * @param bool $newarticle true if a new article * * @return object */ function updateArticle(&$reports, $newarticle = false) { $date = date('Y-m-d_H-i-s'); $title = process_language_string_save("title", 2); $author = sanitize($_POST['author']); $content = zpFunctions::updateImageProcessorLink(process_language_string_save("content", EDITOR_SANITIZE_LEVEL)); $extracontent = zpFunctions::updateImageProcessorLink(process_language_string_save("extracontent", EDITOR_SANITIZE_LEVEL)); $custom = process_language_string_save("custom_data", 1); $show = getcheckboxState('show'); $date = sanitize($_POST['date']); $expiredate = getExpiryDatePost(); $permalink = getcheckboxState('permalink'); $lastchange = sanitize($_POST['lastchange']); $lastchangeauthor = sanitize($_POST['lastchangeauthor']); $commentson = getcheckboxState('commentson'); if (zp_loggedin(CODEBLOCK_RIGHTS)) { $codeblock = processCodeblockSave(0); } $locked = getcheckboxState('locked'); if ($newarticle) { $titlelink = seoFriendly(get_language_string($title)); if (empty($titlelink)) { $titlelink = seoFriendly($date); } $sql = 'SELECT `id` FROM ' . prefix('news') . ' WHERE `titlelink`=' . db_quote($titlelink); $rslt = query_single_row($sql, false); if ($rslt) { //already exists $time = explode(' ', microtime()); $titlelink = $titlelink . '_' . ($time[1] + $time[0]); $reports[] = "<p class='warningbox fade-message'>" . gettext('Duplicate article title') . '</p>'; } $oldtitlelink = $titlelink; $id = 0; } else { $titlelink = $oldtitlelink = sanitize($_POST['titlelink-old'], 3); $id = sanitize($_POST['id']); } if (getcheckboxState('edittitlelink')) { $titlelink = sanitize($_POST['titlelink'], 3); if (empty($titlelink)) { $titlelink = seoFriendly(get_language_string($title)); if (empty($titlelink)) { $titlelink = seoFriendly($date); } } } else { if (!$permalink) { // allow the title link to change. $link = seoFriendly(get_language_string($title)); if (!empty($link)) { $titlelink = $link; } } } $rslt = true; if ($titlelink != $oldtitlelink) { // title link change must be reflected in DB before any other updates $rslt = query('UPDATE ' . prefix('news') . ' SET `titlelink`=' . db_quote($titlelink) . ' WHERE `id`=' . $id, false); if (!$rslt) { $titlelink = $oldtitlelink; // force old link so data gets saved } else { SearchEngine::clearSearchCache(); } } // update article $article = new ZenpageNews($titlelink, true); $article->setTitle($title); $article->setContent($content); $article->setExtracontent($extracontent); $article->setCustomData(zp_apply_filter('save_article_custom_data', $custom, $article)); $article->setShow($show); $article->setDateTime($date); $article->setCommentsAllowed($commentson); if (zp_loggedin(CODEBLOCK_RIGHTS)) { $article->setCodeblock($codeblock); } $article->setAuthor($author); $article->setLastchange($lastchange); $article->setLastchangeauthor($lastchangeauthor); $article->setPermalink($permalink); $article->setLocked($locked); $article->setExpiredate($expiredate); $article->setSticky(sanitize_numeric($_POST['sticky'])); if (getcheckboxState('resethitcounter')) { $article->set('hitcounter', 0); } if (getcheckboxState('reset_rating')) { $article->set('total_value', 0); $article->set('total_votes', 0); $article->set('used_ips', 0); } $article->setTruncation(getcheckboxState('truncation')); processTags($article); $categories = array(); $result2 = query_full_array("SELECT * FROM " . prefix('news_categories') . " ORDER BY titlelink"); foreach ($result2 as $cat) { if (isset($_POST["cat" . $cat['id']])) { $categories[] = $cat['titlelink']; } } $article->setCategories($categories); if ($newarticle) { $msg = zp_apply_filter('new_article', '', $article); if (empty($title)) { $reports[] = "<p class='errorbox fade-message'>" . sprintf(gettext("Article <em>%s</em> added but you need to give it a <strong>title</strong> before publishing!"), get_language_string($titlelink)) . '</p>'; } else { $reports[] = "<p class='messagebox fade-message'>" . sprintf(gettext("Article <em>%s</em> added"), $titlelink) . '</p>'; } } else { $msg = zp_apply_filter('update_article', '', $article, $oldtitlelink); if (!$rslt) { $reports[] = "<p class='errorbox fade-message'>" . sprintf(gettext("An article with the title/titlelink <em>%s</em> already exists!"), $titlelink) . '</p>'; } else { if (empty($title)) { $reports[] = "<p class='errorbox fade-message'>" . sprintf(gettext("Article <em>%s</em> updated but you need to give it a <strong>title</strong> before publishing!"), get_language_string($titlelink)) . '</p>'; } else { $reports[] = "<p class='messagebox fade-message'>" . sprintf(gettext("Article <em>%s</em> updated"), $titlelink) . '</p>'; } } } $article->save(); if ($msg) { $reports[] = $msg; } return $article; }
/** * Updates a news article and returns the object of that article * * @return object */ function updateArticle(&$reports) { $date = date('Y-m-d_H-i-s'); $title = process_language_string_save("title", 2); $author = sanitize($_POST['author']); $content = process_language_string_save("content", 0); // TinyMCE already clears unallowed code $extracontent = process_language_string_save("extracontent", 0); // TinyMCE already clears unallowed code $custom = process_language_string_save("custom_data", 1); $show = getcheckboxState('show'); $date = sanitize($_POST['date']); $expiredate = getExpiryDatePost(); $permalink = getcheckboxState('permalink'); $lastchange = sanitize($_POST['lastchange']); $lastchangeauthor = sanitize($_POST['lastchangeauthor']); $commentson = getcheckboxState('commentson'); $codeblock1 = sanitize($_POST['codeblock1'], 0); $codeblock2 = sanitize($_POST['codeblock2'], 0); $codeblock3 = sanitize($_POST['codeblock3'], 0); $codeblock = serialize(array("1" => $codeblock1, "2" => $codeblock2, "3" => $codeblock3)); $locked = getcheckboxState('locked'); $titlelink = $oldtitlelink = sanitize($_POST['titlelink-old'], 3); if (getcheckboxState('edittitlelink')) { $titlelink = sanitize($_POST['titlelink'], 3); if (empty($titlelink)) { $titlelink = seoFriendly(get_language_string($title)); if (empty($titlelink)) { $titlelink = seoFriendly($date); } } } else { if (!$permalink) { // allow the title link to change. $link = seoFriendly(get_language_string($title)); if (!empty($link)) { $titlelink = $link; } } } $id = sanitize($_POST['id']); $rslt = true; if ($titlelink != $oldtitlelink) { // title link change must be reflected in DB before any other updates $rslt = query('UPDATE ' . prefix('news') . ' SET `titlelink`=' . db_quote($titlelink) . ' WHERE `id`=' . $id, false); if (!$rslt) { $titlelink = $oldtitlelink; // force old link so data gets saved } } // update article $article = new ZenpageNews($titlelink, true); $article->setTitle($title); $article->setContent($content); $article->setExtracontent($extracontent); $article->setCustomData(zp_apply_filter('save_article_custom_data', $custom, $article)); $article->setShow($show); $article->setDateTime($date); $article->setCommentsAllowed($commentson); $article->setCodeblock($codeblock); $article->setAuthor($author); $article->setLastchange($lastchange); $article->setLastchangeauthor($lastchangeauthor); $article->setPermalink($permalink); $article->setLocked($locked); $article->setExpiredate($expiredate); $article->setSticky(sanitize_numeric($_POST['sticky'])); if (getcheckboxState('resethitcounter')) { $article->set('hitcounter', 0); } processTags($article); $categories = array(); $result2 = query_full_array("SELECT * FROM " . prefix('news_categories') . " ORDER BY titlelink"); foreach ($result2 as $cat) { if (isset($_POST["cat" . $cat['id']])) { $categories[] = $cat['titlelink']; } } $article->setCategories($categories); $msg = zp_apply_filter('update_article', '', $article, $oldtitlelink); $article->save(); if (!$rslt) { $reports[] = "<p class='errorbox fade-message'>" . sprintf(gettext("An article with the title/titlelink <em>%s</em> already exists!"), $titlelink) . '</p>'; } else { if (empty($title)) { $reports[] = "<p class='errorbox fade-message'>" . sprintf(gettext("Article <em>%s</em> updated but you need to give it a <strong>title</strong> before publishing!"), get_language_string($titlelink)) . '</p>'; } else { $reports[] = "<p class='messagebox fade-message'>" . sprintf(gettext("Article <em>%s</em> updated"), $titlelink) . '</p>'; } } if ($msg) { $reports[] = $msg; } return $article; }
/** * Updates or adds a news article and returns the object of that article * * @param array $reports display * @param bool $newarticle true if a new article * * @return object */ function updateArticle(&$reports, $newarticle = false) { global $_zp_current_admin_obj; $date = date('Y-m-d_H-i-s'); $title = process_language_string_save("title", 2); $author = sanitize($_POST['author']); $content = zpFunctions::updateImageProcessorLink(process_language_string_save("content", EDITOR_SANITIZE_LEVEL)); $show = getcheckboxState('show'); $date = sanitize($_POST['date']); $pubdate = sanitize($_POST['pubdate']); $expiredate = getExpiryDatePost(); $permalink = getcheckboxState('permalink'); $lastchange = sanitize($_POST['lastchange']); $lastchangeauthor = sanitize($_POST['lastchangeauthor']); $commentson = getcheckboxState('commentson'); $locked = getcheckboxState('locked'); $show = getcheckboxState('show'); if ($newarticle) { $titlelink = seoFriendly(get_language_string($title)); if (empty($titlelink)) { $titlelink = seoFriendly($date); } $sql = 'SELECT `id` FROM ' . prefix('news') . ' WHERE `titlelink`=' . db_quote($titlelink); $rslt = query_single_row($sql, false); if ($rslt) { //already exists $time = explode(' ', microtime()); $titlelink = $titlelink . '_' . ($time[1] + $time[0]); $reports[] = "<p class='warningbox fade-message'>" . gettext('Duplicate article title') . '</p>'; } $oldtitlelink = $titlelink; $id = 0; } else { $titlelink = $oldtitlelink = sanitize($_POST['titlelink-old'], 3); $id = sanitize($_POST['id']); } if (getcheckboxState('edittitlelink')) { $titlelink = sanitize($_POST['titlelink'], 3); if (empty($titlelink)) { $titlelink = seoFriendly(get_language_string($title)); if (empty($titlelink)) { $titlelink = seoFriendly($date); } } } else { if (!$permalink) { // allow the title link to change. $link = seoFriendly(get_language_string($title)); if (!empty($link)) { $titlelink = $link; } } } $rslt = true; if ($titlelink != $oldtitlelink) { // title link change must be reflected in DB before any other updates $rslt = query('UPDATE ' . prefix('news') . ' SET `titlelink`=' . db_quote($titlelink) . ' WHERE `id`=' . $id, false); if (!$rslt) { $titlelink = $oldtitlelink; // force old link so data gets saved } } // update article $article = newArticle($titlelink, true); $article->setTitle($title); $article->setContent($content); $article->setDateTime($date); $article->setCommentsAllowed($commentson); $article->setAuthor($author); $article->setLastchange($lastchange); $article->setLastchangeauthor($lastchangeauthor); $article->setPermalink($permalink); $article->setLocked($locked); $article->setExpiredate($expiredate); $article->setPublishDate($pubdate); $article->setSticky(sanitize_numeric($_POST['sticky'])); if (getcheckboxState('resethitcounter')) { $article->set('hitcounter', 0); } if (getcheckboxState('reset_rating')) { $article->set('total_value', 0); $article->set('total_votes', 0); $article->set('used_ips', 0); } $article->setTruncation(getcheckboxState('truncation')); processTags($article); $categories = array(); $myCategories = array_flip($_zp_current_admin_obj->getObjects('news')); if (isset($_POST['addcategories'])) { $cats = sanitize($_POST['addcategories']); $result2 = query_full_array("SELECT * FROM " . prefix('news_categories') . " ORDER BY titlelink", true, 'id'); if ($result2) { foreach ($cats as $cat) { if (isset($result2[$cat])) { $categories[] = $result2[$cat]['titlelink']; } } } if (!zp_loggedin(MANAGE_ALL_NEWS_RIGHTS)) { foreach ($categories as $key => $cat) { if (!isset($myCategories[$cat])) { unset($categories[$key]); } } } } $article->setCategories($categories); $article->setShow($show); if (!zp_loggedin(MANAGE_ALL_NEWS_RIGHTS) && empty($categories)) { // check if he is allowed to make un-categorized articles if (!isset($myCategories['`'])) { $reports[] = "<p class='errorbox fade-message'>" . sprintf(gettext("Article <em>%s</em> may not be un-categorized."), $titlelink) . '</p>'; unset($myCategories['`']); $cagegories[] = array_shift($myCategories); } } if ($newarticle) { $msg = zp_apply_filter('new_article', '', $article); if (empty($title)) { $reports['success'] = "<p class='errorbox fade-message'>" . sprintf(gettext("Article <em>%s</em> added but you need to give it a <strong>title</strong> before publishing!"), get_language_string($titlelink)) . '</p>'; } else { $reports['success'] = "<p class='messagebox fade-message'>" . sprintf(gettext("Article <em>%s</em> added"), $titlelink) . '</p>'; } } else { $msg = zp_apply_filter('update_article', '', $article, $oldtitlelink); if (!$rslt) { $reports[] = "<p class='errorbox fade-message'>" . sprintf(gettext("An article with the title/titlelink <em>%s</em> already exists!"), $titlelink) . '</p>'; } else { if (empty($title)) { $reports['success'] = "<p class='errorbox fade-message'>" . sprintf(gettext("Article <em>%s</em> updated but you need to give it a <strong>title</strong> before publishing!"), get_language_string($titlelink)) . '</p>'; } else { $reports['success'] = "<p class='messagebox fade-message'>" . sprintf(gettext("Article <em>%s</em> updated"), $titlelink) . '</p>'; } } } zp_apply_filter('save_article_custom_data', NULL, $article); $article->save(); $msg = zp_apply_filter('edit_error', $msg); if ($msg) { $reports[] = $msg; } return $article; }