[pLog-CVS] plog/class/action adminblogcustomfieldsaction.class.php,NONE,1.1 adminnewcustomfieldactio
Brought to you by:
jondaley
From: Oscar R. <phu...@us...> - 2004-04-21 18:45:34
|
Update of /cvsroot/plog/plog/class/action In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17379/class/action Modified Files: adminaddpostaction.class.php adminnewpostaction.class.php Added Files: adminblogcustomfieldsaction.class.php adminnewcustomfieldaction.class.php Log Message: Added support for custom fields -- Custom fields can be used to add fields for certain functions that we would like to have in each post. For example, we can add a custom field called "I'm feeling" (ála Livejournal) and plog will automatically display a textbox in the "New Post" page so that we can assign a value to that field. The value of the field will be stored in the database, with a reference to the article. The we only need to make certain modifications to the templates to make them show the values of those fields, using very simple methods such as $post->getField("my_field") $post->getFieldDescription("my_field") And so on. At the moment it works but the following items are still lacking: - support for removing fields - support for editing fields (name, description, etc) - fields can only be used when adding a new post. If the "preview" functionality is used, the value of the field will be lost and it will have to retyped again. - When editing the field, is not possible to get the value of the fields. - It is not integrated with the search feature. All these shortcomings will be fixed as soon as I have the time :) There are two new talbes in the database: one to hold the definition of each field (name, description, type), and another one to hold the values given to those fields for each article. In order to get it working, please rerun the wizard script so that the new tables are initialized. Also, have a look at the templates/blueish/post.template for an example of how to show the values of the fields. --- NEW FILE: adminblogcustomfieldsaction.class.php --- <?php include_once( PLOG_CLASS_PATH."class/action/blogowneradminaction.class.php" ); include_once( PLOG_CLASS_PATH."class/view/admintemplatedview.class.php" ); include_once( PLOG_CLASS_PATH."class/dao/customfields.class.php" ); /** * Custom fields that have been defined so far */ class AdminBlogCustomFieldsAction extends BlogOwnerAdminAction { function AdminBlogCustomFieldsAction( $actionInfo, $request ) { $this->BlogOwnerAdminAction( $actionInfo, $request ); } /** * Carries out the specified action */ function perform() { // load the custom fields that have been defined so far $customFields = new CustomFields(); $blogFields = $customFields->getBlogCustomFields( $this->_blogInfo->getId()); // if no fields, then quit if( count($blogFields ) == 0 ) { $this->_view = new AdminErrorView( $this->_blogInfo ); $this->_view->setMessage( $this->_locale->tr("error_no_custom_fields_defined")); $this->setCommonData(); return true; } // or else show them $this->_view = new AdminTemplatedView( $this->_blogInfo, "customfields" ); $this->_view->setValue( "fields", $blogFields ); $this->setCommonData(); // better to return true if everything fine return true; } } ?> Index: adminnewpostaction.class.php =================================================================== RCS file: /cvsroot/plog/plog/class/action/adminnewpostaction.class.php,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** adminnewpostaction.class.php 11 Feb 2004 17:56:09 -0000 1.6 --- adminnewpostaction.class.php 21 Apr 2004 18:44:50 -0000 1.7 *************** *** 6,9 **** --- 6,10 ---- include_once( PLOG_CLASS_PATH."class/dao/articlecategories.class.php" ); include_once( PLOG_CLASS_PATH."class/view/adminerrorview.class.php" ); + include_once( PLOG_CLASS_PATH."class/dao/customfields.class.php" ); /** *************** *** 11,15 **** * preview the article before posting it. */ ! class AdminNewPostAction extends AdminAction { /** --- 12,17 ---- * preview the article before posting it. */ ! class AdminNewPostAction extends AdminAction ! { /** *************** *** 61,64 **** --- 63,70 ---- "09", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23" ); + + // fetch the custom fields, if any + $customFields = new CustomFields(); + $blogFields = $customFields->getBlogCustomFields( $this->_blogInfo->getId()); // and put everything in the template *************** *** 73,76 **** --- 79,83 ---- $this->_view->setValue( "minutes", $minutes ); $this->_view->setValue( "disableJavascriptCalendar", $this->_config->getValue( "disable_javascript_calendar" )); + $this->_view->setValue( "customfields", $blogFields ); // better to return true if everything fine --- NEW FILE: adminnewcustomfieldaction.class.php --- <?php include_once( PLOG_CLASS_PATH."class/action/blogowneradminaction.class.php" ); include_once( PLOG_CLASS_PATH."class/view/admintemplatedview.class.php" ); /** * Defines blog-wide custom fields */ class AdminNewCustomFieldAction extends BlogOwnerAdminAction { function AdminBlogCustomFieldsAction( $actionInfo, $request ) { $this->BlogOwnerAdminAction( $actionInfo, $request ); } /** * Carries out the specified action */ function perform() { $this->_view = new AdminTemplatedView( $this->_blogInfo, "newcustomfield" ); $this->setCommonData(); // better to return true if everything fine return true; } } ?> Index: adminaddpostaction.class.php =================================================================== RCS file: /cvsroot/plog/plog/class/action/adminaddpostaction.class.php,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** adminaddpostaction.class.php 17 Apr 2004 21:33:51 -0000 1.8 --- adminaddpostaction.class.php 21 Apr 2004 18:44:47 -0000 1.9 *************** *** 1,295 **** ! <?php ! ! include_once( PLOG_CLASS_PATH."class/action/adminaction.class.php" ); ! include_once( PLOG_CLASS_PATH."class/view/adminmessageview.class.php" ); ! include_once( PLOG_CLASS_PATH."class/view/adminerrorview.class.php" ); ! include_once( PLOG_CLASS_PATH."class/view/adminsendtrackbacksview.class.php" ); ! include_once( PLOG_CLASS_PATH."class/dao/articles.class.php" ); ! include_once( PLOG_CLASS_PATH."class/dao/article.class.php" ); ! include_once( PLOG_CLASS_PATH."class/locale/locale.class.php" ); ! include_once( PLOG_CLASS_PATH."class/data/stringvalidator.class.php" ); ! include_once( PLOG_CLASS_PATH."class/data/stringutils.class.php" ); ! include_once( PLOG_CLASS_PATH."class/view/adminnewpostview.class.php" ); ! include_once( PLOG_CLASS_PATH."class/bayesian/bayesianfiltercore.class.php" ); ! ! /** ! * Action that adds a new post to the database. ! */ ! class AdminAddPostAction extends AdminAction { ! ! var $_postText; ! var $_postExtendedText; ! var $_postTopic; ! var $_postCategories; ! var $_postStatus; ! var $_sendNotification; ! //var $_subOp; ! var $_previewPost; ! var $_addPost; ! var $_locale; ! var $_commentsEnabled; ! // stuff about the date ! var $_postYear; ! var $_postMonth; ! var $_postDay; ! var $_postHour; ! var $_postMinutes; ! var $_postTimestamp; ! ! /** ! * Constructor. If nothing else, it also has to call the constructor of the parent ! * class, BlogAction with the same parameters ! */ ! function AdminAddPostAction( $actionInfo, $request ) ! { ! $this->AdminAction( $actionInfo, $request ); ! } ! ! /** ! * checks that all the information is correct ! */ ! function validate() ! { ! $this->_postText = rtrim(ltrim($this->_request->getValue( "postText" ))); ! $this->_postExtendedText = rtrim(ltrim($this->_request->getValue( "postExtendedText" ))); ! $this->_postTopic = rtrim(ltrim($this->_request->getValue( "postTopic" ))); ! $this->_postCategories = $this->_request->getValue( "postCategories" ); ! $this->_postStatus = $this->_request->getValue( "postStatus" ); ! $this->_sendNotification = $this->_request->getValue( "sendNotification" ); ! $this->_sendTrackbacks = $this->_request->getValue( "sendTrackbacks" ); ! //$this->_subOp = $this->_request->getValue( "subOp" ); ! $this->_previewPost = $this->_request->getValue( "previewPost" ); ! $this->_addPost = $this->_request->getValue( "addPost" ); ! $this->_commentsEnabled = $this->_request->getValue( "commentsEnabled" ); ! if( $this->_commentsEnabled != 1 ) ! $this->_commentsEnabled = false; ! else ! $this->_commentsEnabled = true; ! ! // fetch the timestamp that the post will have ! if( $this->_config->getValue( "disable_javascript_calendar")) { ! $this->_postDay = $this->_request->getValue( "postDay" ); ! $this->_postMonth = $this->_request->getValue( "postMonth" ); ! $this->_postHour = $this->_request->getValue( "postHour" ); ! $this->_postMinutes = $this->_request->getValue( "postMinutes" ); ! $this->_postYear = $this->_request->getValue( "postYear" ); ! } ! else { ! $postDateTime = $this->_request->getValue( "postDateTime" ); ! $dateTimeParts = explode(" ", $postDateTime); ! $dateParts = explode("/", $dateTimeParts[0] ); ! $timeParts = explode(":",$dateTimeParts[1] ); ! $this->_postDay = $dateParts[0]; ! $this->_postMonth = $dateParts[1]; ! $this->_postYear = $dateParts[2]; ! $this->_postHour = $timeParts[0]; ! $this->_postMinutes = $timeParts[1]; ! } ! ! $this->_postTimestamp = new Timestamp(); ! $this->_postTimestamp->setMinutes( $this->_postMinutes ); ! $this->_postTimestamp->setHour( $this->_postHour ); ! $this->_postTimestamp->setDay( $this->_postDay ); ! $this->_postTimestamp->setMonth( $this->_postMonth ); ! $this->_postTimestamp->setYear( $this->_postYear ); ! ! ! // we only have to check if we're adding the post ! if( $this->_subOp == $this->_locale->tr("add_post")) { ! $topicVal = new StringValidator( $this->_postTopic ); ! $textVal = new StringValidator( $this->_postText ); ! ! if( !$topicVal->validate() || !$textVal->validate()) { ! $this->_view = new AdminErrorView( $this->_blogInfo ); ! $this->_view->setValue( "message", $this->_locale->tr("error_must_give_post_intro")); ! $this->setCommonData(); ! ! return false; ! } ! ! if( count($this->_postCategories) == 0 ) { ! $this->_view = new AdminErrorView( $this->_blogInfo ); ! $this->_view->setValue( "message", $this->_locale->tr("error_no_category_selected")); ! $this->setCommonData(); ! ! return false; ! } ! } ! ! return true; ! } ! ! function sendXmlRpcPings() ! { ! // send the xmlrpc ping ! ! if( !$this->_config->getValue( "xmlrpc_ping_enabled", false )) ! return ""; ! ! $blogs = new Blogs(); ! $resultArray = $blogs->updateNotify( $this->_blogInfo ); ! //print_r($resultArray); ! foreach( $resultArray as $host => $result ) { ! if( $result == "OK" ) ! $message .= $this->_locale->tr("xmlrpc_ping_ok").$host.".<br/><br/>"; ! else { ! $message .= $this->_locale->tr("error_sending_xmlrpc_ping").$host."."; ! if( $result != "" ) $message .= "<br/>".$this->_locale->tr("error_sending_xmlrpc_ping_message").$result."."; ! $message .= "<br/><br/>"; ! } ! } ! ! return $message; ! } ! ! /** ! * Carries out the specified action ! */ ! function perform() ! { ! // we know for sure that the information is correct so we can now add ! // the post to the database ! ! if( $this->_addPost != "" ) { ! $status = $this->_postStatus; ! ! $articles = new Articles(); ! $postText = $this->_postText.POST_EXTENDED_TEXT_MODIFIER.$this->_postExtendedText; ! ! $article = new Article( $this->_postTopic, $postText, $this->_postCategories, ! $this->_userInfo->getId(), $this->_blogInfo->getId(), $status, 0); ! // set also the date before it's too late ! $article->setDateObject( $this->_postTimestamp ); ! $article->setCommentsEnabled( $this->_commentsEnabled ); ! ! // once we have built the object, we can add it to the database ! if(( $artId = $articles->addArticle( $article ))) { ! $this->_view = new AdminMessageView( $this->_blogInfo ); ! $article->setId( $artId ); ! $message = $this->_locale->tr("post_added"); ! ! // train the filter ! $bayesian = new BayesianFilterCore(); ! ! $bayesian->train( $this->_blogInfo->getId(), ! $this->_postTopic, ! $this->_postText . " " . $this->_postExtendedText, ! "", ! "", ! "", ! false ); ! ! // add the article notification if requested to do so ! if( $this->_sendNotification == "on" ) { ! $artNotifications = new ArticleNotifications(); ! $artNotifications->addNotification( $artId, $this->_blogInfo->getId(), $this->_userInfo->getId()); ! $message .= "<br/><br/>".$this->_locale->tr("you_will_be_notified"); ! } ! ! // we only have to send trackback pings if the article was published ! // otherwise there is no need to... ! if( $article->getStatus() == PUBLISHED) { ! ! // get the output from the xmlrpc pings ! $pingsOutput = $this->sendXmlRpcPings(); ! $message .= "<br/><br/>".$pingsOutput; ! ! // and now check what to do with the trackbacks ! if( $this->_sendTrackbacks ) { ! // get the links from the text of the post ! $links = StringUtils::getLinks( stripslashes($article->getText())); ! ! // if no links, there is nothing to do ! if( count($links) == 0 ) { ! $this->_view = new AdminMessageView( $this->_blogInfo ); ! } ! else { ! $this->_view = new AdminSendTrackbacksView( $this->_blogInfo ); ! $this->_view->setValue( "post", $article ); ! $this->_view->setValue( "postlinks", $links ); ! } ! } ! $this->_view->setValue( "message", $message ); ! } ! else { ! $this->_view = new AdminMessageView( $this->_blogInfo ); ! $this->_view->setMessage( $this->_locale->tr("post_added_not_published") ); ! } ! } ! else { ! $this->_view = new AdminErrorView( $this->_blogInfo ); ! $this->_view->setValue( "message", $this->_locale->tr("error_adding_post") ); ! } ! } ! elseif( $this->_previewPost != "") { ! // we need the categories ! $categories = new ArticleCategories(); ! $blogCategories = $categories->getBlogCategories( $this->_blogInfo->getId()); ! $days = $this->_locale->getDayNamesShort(); ! ! // and show the same form again with the data we've already typed ! $this->_view = new AdminNewPostView( $this->_blogInfo ); ! $this->_view->setValue( "categories", $blogCategories ); ! $this->_view->setValue( "postText", trim(stripslashes($this->_postText ))); ! $this->_view->setValue( "postExtendedText", trim(stripslashes($this->_postExtendedText))); ! $this->_view->setValue( "postStatus", $this->_postStatus ); ! $this->_view->setValue( "postTopic", ltrim(stripslashes($this->_postTopic ))); ! $this->_view->setValue( "postCategory", ltrim(stripslashes($this->_postCategory))); ! $this->_view->setValue( "postYear", $this->_postYear ); ! $this->_view->setValue( "postMonth", $this->_postMonth ); ! $this->_view->setValue( "postDay", $this->_postDay ); ! $this->_view->setValue( "postHour", $this->_postHour ); ! $this->_view->setValue( "postMinutes", $this->_postMinutes ); ! $this->_view->setValue( "commentsEnabled", $this->_commentsEnabled ); ! $this->_view->setValue( "disableJavascriptCalendar", $this->_config->getValue( "disable_javascript_calendar" )); ! $this->_view->setValue( "postCategories", $this->_postCategories ); ! $this->_view->setValue( "days", $days ); ! $t = new Timestamp(); ! ! // ! // :KLUDGE: ! // ! // this very dirty and should be fixed somehow... ! // we have the same piece of code in both AdminAddPostAction ! // and AdminNewPostAction and this is not what OOP is all about, ! // is it? :) ! // ! $months = $this->_locale->getMonthNames(); ! $years = range( 1990, 2030 ); ! $minutes = Array( "00", "01", "02", "03", "04", "05", "06", "07", "08", "09", ! "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", ! "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", ! "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", ! "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", ! "50", "51", "52", "53", "54", "55", "56", "57", "58", "59" ); ! $hours = Array( "00", "01", "02", "03", "04", "05", "06", "07", "08", ! "09", "10", "11", "12", "13", "14", "15", "16", "17", ! "18", "19", "20", "21", "22", "23" ); ! ! // put all this stuff back into the template ! $this->_view->setValue( "today", $t ); ! $this->_view->setValue( "months", $months ); ! $this->_view->setValue( "years", $years ); ! $this->_view->setValue( "minutes", $minutes ); ! $this->_view->setValue( "hours", $hours ); ! ! // send notification checkbox ! if( $this->_sendNotification == "on" ) ! $this->_view->setValue( "sendNotification", true ); ! else ! $this->_view->setValue( "sendNotification", false ); ! // trackback pings checkbox ! if( $this->_sendTrackbacks == "on" ) ! $this->_view->setValue( "sendTrackbacks", true ); ! else ! $this->_view->setValue( "sendTrackbacks", false ); ! $this->_view->setValue( "previewMode", true ); ! } ! ! $this->setCommonData(); ! ! // better to return true if everything fine ! return true; ! } ! } ?> \ No newline at end of file --- 1,310 ---- ! <?php ! ! include_once( PLOG_CLASS_PATH."class/action/adminaction.class.php" ); ! include_once( PLOG_CLASS_PATH."class/view/adminmessageview.class.php" ); ! include_once( PLOG_CLASS_PATH."class/view/adminerrorview.class.php" ); ! include_once( PLOG_CLASS_PATH."class/view/adminsendtrackbacksview.class.php" ); ! include_once( PLOG_CLASS_PATH."class/dao/articles.class.php" ); ! include_once( PLOG_CLASS_PATH."class/dao/article.class.php" ); ! include_once( PLOG_CLASS_PATH."class/locale/locale.class.php" ); ! include_once( PLOG_CLASS_PATH."class/data/stringvalidator.class.php" ); ! include_once( PLOG_CLASS_PATH."class/data/stringutils.class.php" ); ! include_once( PLOG_CLASS_PATH."class/view/adminnewpostview.class.php" ); ! include_once( PLOG_CLASS_PATH."class/bayesian/bayesianfiltercore.class.php" ); ! include_once( PLOG_CLASS_PATH."class/dao/customfieldsvalues.class.php" ); ! ! /** ! * Action that adds a new post to the database. ! */ ! class AdminAddPostAction extends AdminAction ! { ! ! var $_postText; ! var $_postExtendedText; ! var $_postTopic; ! var $_postCategories; ! var $_postStatus; ! var $_sendNotification; ! //var $_subOp; ! var $_previewPost; ! var $_addPost; ! var $_locale; ! var $_commentsEnabled; ! // stuff about the date ! var $_postYear; ! var $_postMonth; ! var $_postDay; ! var $_postHour; ! var $_postMinutes; ! var $_postTimestamp; ! // custom fields ! var $_customFields; ! ! ! /** ! * Constructor. If nothing else, it also has to call the constructor of the parent ! * class, BlogAction with the same parameters ! */ ! function AdminAddPostAction( $actionInfo, $request ) ! { ! $this->AdminAction( $actionInfo, $request ); ! } ! ! /** ! * checks that all the information is correct ! */ ! function validate() ! { ! $this->_postText = rtrim(ltrim($this->_request->getValue( "postText" ))); ! $this->_postExtendedText = rtrim(ltrim($this->_request->getValue( "postExtendedText" ))); ! $this->_postTopic = rtrim(ltrim($this->_request->getValue( "postTopic" ))); ! $this->_postCategories = $this->_request->getValue( "postCategories" ); ! $this->_postStatus = $this->_request->getValue( "postStatus" ); ! $this->_sendNotification = $this->_request->getValue( "sendNotification" ); ! $this->_sendTrackbacks = $this->_request->getValue( "sendTrackbacks" ); ! //$this->_subOp = $this->_request->getValue( "subOp" ); ! $this->_previewPost = $this->_request->getValue( "previewPost" ); ! $this->_addPost = $this->_request->getValue( "addPost" ); ! $this->_commentsEnabled = $this->_request->getValue( "commentsEnabled" ); ! if( $this->_commentsEnabled != 1 ) ! $this->_commentsEnabled = false; ! else ! $this->_commentsEnabled = true; ! ! // fetch the custom fields ! $this->_customFields = $this->_request->getValue( "customField" ); ! ! // fetch the timestamp that the post will have ! if( $this->_config->getValue( "disable_javascript_calendar")) { ! $this->_postDay = $this->_request->getValue( "postDay" ); ! $this->_postMonth = $this->_request->getValue( "postMonth" ); ! $this->_postHour = $this->_request->getValue( "postHour" ); ! $this->_postMinutes = $this->_request->getValue( "postMinutes" ); ! $this->_postYear = $this->_request->getValue( "postYear" ); ! } ! else { ! $postDateTime = $this->_request->getValue( "postDateTime" ); ! $dateTimeParts = explode(" ", $postDateTime); ! $dateParts = explode("/", $dateTimeParts[0] ); ! $timeParts = explode(":",$dateTimeParts[1] ); ! $this->_postDay = $dateParts[0]; ! $this->_postMonth = $dateParts[1]; ! $this->_postYear = $dateParts[2]; ! $this->_postHour = $timeParts[0]; ! $this->_postMinutes = $timeParts[1]; ! } ! ! $this->_postTimestamp = new Timestamp(); ! $this->_postTimestamp->setMinutes( $this->_postMinutes ); ! $this->_postTimestamp->setHour( $this->_postHour ); ! $this->_postTimestamp->setDay( $this->_postDay ); ! $this->_postTimestamp->setMonth( $this->_postMonth ); ! $this->_postTimestamp->setYear( $this->_postYear ); ! ! ! // we only have to check if we're adding the post ! if( $this->_subOp == $this->_locale->tr("add_post")) { ! $topicVal = new StringValidator( $this->_postTopic ); ! $textVal = new StringValidator( $this->_postText ); ! ! if( !$topicVal->validate() || !$textVal->validate()) { ! $this->_view = new AdminErrorView( $this->_blogInfo ); ! $this->_view->setValue( "message", $this->_locale->tr("error_must_give_post_intro")); ! $this->setCommonData(); ! ! return false; ! } ! ! if( count($this->_postCategories) == 0 ) { ! $this->_view = new AdminErrorView( $this->_blogInfo ); ! $this->_view->setValue( "message", $this->_locale->tr("error_no_category_selected")); ! $this->setCommonData(); ! ! return false; ! } ! } ! ! return true; ! } ! ! function sendXmlRpcPings() ! { ! // send the xmlrpc ping ! ! if( !$this->_config->getValue( "xmlrpc_ping_enabled", false )) ! return ""; ! ! $blogs = new Blogs(); ! $resultArray = $blogs->updateNotify( $this->_blogInfo ); ! //print_r($resultArray); ! foreach( $resultArray as $host => $result ) { ! if( $result == "OK" ) ! $message .= $this->_locale->tr("xmlrpc_ping_ok").$host.".<br/><br/>"; ! else { ! $message .= $this->_locale->tr("error_sending_xmlrpc_ping").$host."."; ! if( $result != "" ) $message .= "<br/>".$this->_locale->tr("error_sending_xmlrpc_ping_message").$result."."; ! $message .= "<br/><br/>"; ! } ! } ! ! return $message; ! } ! ! /** ! * Carries out the specified action ! */ ! function perform() ! { ! // we know for sure that the information is correct so we can now add ! // the post to the database ! ! if( $this->_addPost != "" ) { ! $status = $this->_postStatus; ! ! $articles = new Articles(); ! $postText = $this->_postText.POST_EXTENDED_TEXT_MODIFIER.$this->_postExtendedText; ! ! $article = new Article( $this->_postTopic, $postText, $this->_postCategories, ! $this->_userInfo->getId(), $this->_blogInfo->getId(), $status, 0); ! // set also the date before it's too late ! $article->setDateObject( $this->_postTimestamp ); ! $article->setCommentsEnabled( $this->_commentsEnabled ); ! ! // once we have built the object, we can add it to the database ! if(( $artId = $articles->addArticle( $article ))) { ! ! // if all went fine, then process the values of the custom fields ! $fieldValues = new CustomFieldsValues(); ! foreach( $this->_customFields as $fieldId => $fieldValue ) { ! $fieldValues->addCustomFieldValue( $fieldId, $fieldValue, $artId, $this->_blogInfo->getId()); ! } ! ! $this->_view = new AdminMessageView( $this->_blogInfo ); ! $article->setId( $artId ); ! $message = $this->_locale->tr("post_added"); ! ! // train the filter ! $bayesian = new BayesianFilterCore(); ! ! $bayesian->train( $this->_blogInfo->getId(), ! $this->_postTopic, ! $this->_postText . " " . $this->_postExtendedText, ! "", ! "", ! "", ! false ); ! ! // add the article notification if requested to do so ! if( $this->_sendNotification == "on" ) { ! $artNotifications = new ArticleNotifications(); ! $artNotifications->addNotification( $artId, $this->_blogInfo->getId(), $this->_userInfo->getId()); ! $message .= "<br/><br/>".$this->_locale->tr("you_will_be_notified"); ! } ! ! // we only have to send trackback pings if the article was published ! // otherwise there is no need to... ! if( $article->getStatus() == PUBLISHED) { ! ! // get the output from the xmlrpc pings ! $pingsOutput = $this->sendXmlRpcPings(); ! $message .= "<br/><br/>".$pingsOutput; ! ! // and now check what to do with the trackbacks ! if( $this->_sendTrackbacks ) { ! // get the links from the text of the post ! $links = StringUtils::getLinks( stripslashes($article->getText())); ! ! // if no links, there is nothing to do ! if( count($links) == 0 ) { ! $this->_view = new AdminMessageView( $this->_blogInfo ); ! } ! else { ! $this->_view = new AdminSendTrackbacksView( $this->_blogInfo ); ! $this->_view->setValue( "post", $article ); ! $this->_view->setValue( "postlinks", $links ); ! } ! } ! $this->_view->setValue( "message", $message ); ! } ! else { ! $this->_view = new AdminMessageView( $this->_blogInfo ); ! $this->_view->setMessage( $this->_locale->tr("post_added_not_published") ); ! } ! } ! else { ! $this->_view = new AdminErrorView( $this->_blogInfo ); ! $this->_view->setValue( "message", $this->_locale->tr("error_adding_post") ); ! } ! } ! elseif( $this->_previewPost != "") { ! // we need the categories ! $categories = new ArticleCategories(); ! $blogCategories = $categories->getBlogCategories( $this->_blogInfo->getId()); ! $days = $this->_locale->getDayNamesShort(); ! ! // and show the same form again with the data we've already typed ! $this->_view = new AdminNewPostView( $this->_blogInfo ); ! $this->_view->setValue( "categories", $blogCategories ); ! $this->_view->setValue( "postText", trim(stripslashes($this->_postText ))); ! $this->_view->setValue( "postExtendedText", trim(stripslashes($this->_postExtendedText))); ! $this->_view->setValue( "postStatus", $this->_postStatus ); ! $this->_view->setValue( "postTopic", ltrim(stripslashes($this->_postTopic ))); ! $this->_view->setValue( "postCategory", ltrim(stripslashes($this->_postCategory))); ! $this->_view->setValue( "postYear", $this->_postYear ); ! $this->_view->setValue( "postMonth", $this->_postMonth ); ! $this->_view->setValue( "postDay", $this->_postDay ); ! $this->_view->setValue( "postHour", $this->_postHour ); ! $this->_view->setValue( "postMinutes", $this->_postMinutes ); ! $this->_view->setValue( "commentsEnabled", $this->_commentsEnabled ); ! $this->_view->setValue( "disableJavascriptCalendar", $this->_config->getValue( "disable_javascript_calendar" )); ! $this->_view->setValue( "postCategories", $this->_postCategories ); ! $this->_view->setValue( "days", $days ); ! $t = new Timestamp(); ! ! // ! // :KLUDGE: ! // ! // this very dirty and should be fixed somehow... ! // we have the same piece of code in both AdminAddPostAction ! // and AdminNewPostAction and this is not what OOP is all about, ! // is it? :) ! // ! $months = $this->_locale->getMonthNames(); ! $years = range( 1990, 2030 ); ! $minutes = Array( "00", "01", "02", "03", "04", "05", "06", "07", "08", "09", ! "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", ! "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", ! "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", ! "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", ! "50", "51", "52", "53", "54", "55", "56", "57", "58", "59" ); ! $hours = Array( "00", "01", "02", "03", "04", "05", "06", "07", "08", ! "09", "10", "11", "12", "13", "14", "15", "16", "17", ! "18", "19", "20", "21", "22", "23" ); ! ! // put all this stuff back into the template ! $this->_view->setValue( "today", $t ); ! $this->_view->setValue( "months", $months ); ! $this->_view->setValue( "years", $years ); ! $this->_view->setValue( "minutes", $minutes ); ! $this->_view->setValue( "hours", $hours ); ! ! // send notification checkbox ! if( $this->_sendNotification == "on" ) ! $this->_view->setValue( "sendNotification", true ); ! else ! $this->_view->setValue( "sendNotification", false ); ! // trackback pings checkbox ! if( $this->_sendTrackbacks == "on" ) ! $this->_view->setValue( "sendTrackbacks", true ); ! else ! $this->_view->setValue( "sendTrackbacks", false ); ! $this->_view->setValue( "previewMode", true ); ! } ! ! $this->setCommonData(); ! ! // better to return true if everything fine ! return true; ! } ! } ?> \ No newline at end of file |