Plog 1.0.1 > Class / Action / Admin / Adminaddpostaction.class.php

Questions? Need Help? Want to share? » PHP Forum
Script Name:
Plog 1.0.1

Download:
plog-1.0.1.zip

Category:
Blog

Archive Content:

Plog 1.0.1

Plog 1.0.1 > Class

Plog 1.0.1 > Class > Action

Plog 1.0.1 > Class > Action > Admin

Plog 1.0.1 > Class > Action

Plog 1.0.1 > Class > Bayesian

Plog 1.0.1 > Class > Config

Plog 1.0.1 > Class > Controller

Plog 1.0.1 > Class > Dao

Plog 1.0.1 > Class > Dao > Customfields

Plog 1.0.1 > Class > Dao

Plog 1.0.1 > Class > Dao > Status

Plog 1.0.1 > Class > Dao

Plog 1.0.1 > Class > Data

Plog 1.0.1 > Class > Data > Date

Plog 1.0.1 > Class > Data

Plog 1.0.1 > Class > Data > Forms

Plog 1.0.1 > Class > Data

Plog 1.0.1 > Class > Data > Pager

Plog 1.0.1 > Class > Data

Plog 1.0.1 > Class > Data > Validator

Plog 1.0.1 > Class > Data > Validator > Rules

Plog 1.0.1 > Class > Data > Validator

Plog 1.0.1 > Class > Database

Plog 1.0.1 > Class > Database > Adodb

Plog 1.0.1 > Class > Database > Adodb > Datadict

Plog 1.0.1 > Class > Database > Adodb > Docs

Plog 1.0.1 > Class > Database > Adodb > Drivers

Plog 1.0.1 > Class > Database > Adodb > Lang

Plog 1.0.1 > Class > Database > Adodb

Plog 1.0.1 > Class > Database > Adodb > Perf

Plog 1.0.1 > Class > Database > Adodb

Plog 1.0.1 > Class > Database

Plog 1.0.1 > Class

Plog 1.0.1 > Class > File

Plog 1.0.1 > Class > File > Finder

Plog 1.0.1 > Class > File > Unpacker

Plog 1.0.1 > Class > Gallery

Plog 1.0.1 > Class > Gallery > Dao

Plog 1.0.1 > Class > Gallery > Data

Plog 1.0.1 > Class > Gallery

Plog 1.0.1 > Class > Gallery > Getid3

Plog 1.0.1 > Class > Gallery > Helperapps

Plog 1.0.1 > Class > Gallery > Resizers

Plog 1.0.1 > Class > Gallery > Template

Plog 1.0.1 > Class > Locale

Plog 1.0.1 > Class > Logger

Plog 1.0.1 > Class > Logger > Appender

Plog 1.0.1 > Class > Logger > Config

Plog 1.0.1 > Class > Logger > Layout

Plog 1.0.1 > Class > Logger > Logger

Plog 1.0.1 > Class > Logger

Plog 1.0.1 > Class > Mail

Plog 1.0.1 > Class > Mail > Phpmailer

Plog 1.0.1 > Class > Mail > Phpmailer > Language

Plog 1.0.1 > Class > Mail > Phpmailer

Plog 1.0.1 > Class > Misc

Plog 1.0.1 > Class > Net

Plog 1.0.1 > Class > Net > Http

Plog 1.0.1 > Class > Net > Http > Phpsniff

Plog 1.0.1 > Class > Net > Http > Session

Plog 1.0.1 > Class > Net > Http

Plog 1.0.1 > Class > Net

Plog 1.0.1 > Class > Net > Xmlrpc

Plog 1.0.1 > Class > Net

Plog 1.0.1 > Class > Object

Plog 1.0.1 > Class > Plugin

Plog 1.0.1 > Class > Security

Plog 1.0.1 > Class > Summary

Plog 1.0.1 > Class > Summary > Action

Plog 1.0.1 > Class > Summary > Dao

Plog 1.0.1 > Class > Summary > Data

Plog 1.0.1 > Class > Summary > Data > Validator

Plog 1.0.1 > Class > Summary > Mail

Plog 1.0.1 > Class > Summary > View

Plog 1.0.1 > Class > Template

Plog 1.0.1 > Class > Template > Menu

Plog 1.0.1 > Class > Template > Smarty

Plog 1.0.1 > Class > Template > Smarty > Core

Plog 1.0.1 > Class > Template > Smarty

Plog 1.0.1 > Class > Template > Smarty > Plugins

Plog 1.0.1 > Class > Template > Smarty

Plog 1.0.1 > Class > Template

Plog 1.0.1 > Class > Template > Templatesets

Plog 1.0.1 > Class > Template

Plog 1.0.1 > Class > View

Plog 1.0.1 > Class > View > Admin

Plog 1.0.1 > Class > View

Plog 1.0.1 > Class > Xml

Plog 1.0.1 > Class > Xml > Parser

Plog 1.0.1 > Class > Xml

Plog 1.0.1 > Class > Xml > Rssparser

Plog 1.0.1 > Class > Xml > Rssparser > Magpierss

Plog 1.0.1 > Class > Xml > Rssparser > Magpierss > Extlib

Plog 1.0.1 > Class > Xml > Rssparser > Magpierss

Plog 1.0.1 > Class > Xml > Rssparser

Plog 1.0.1 > Class > Xml > Tree

Plog 1.0.1 > Class > Xml

Plog 1.0.1

Plog 1.0.1 > Config

Plog 1.0.1

Plog 1.0.1 > Gallery

Plog 1.0.1

Plog 1.0.1 > Imgs

Plog 1.0.1 > Imgs > .xvpics

Plog 1.0.1 > Imgs > Admin

Plog 1.0.1 > Imgs

Plog 1.0.1

Plog 1.0.1 > Install

Plog 1.0.1 > Js

Plog 1.0.1 > Js > Calendar

Plog 1.0.1 > Js > Editor

Plog 1.0.1 > Js > Htmlarea

Plog 1.0.1 > Js > Htmlarea > Docs

Plog 1.0.1 > Js > Htmlarea

Plog 1.0.1 > Js > Htmlarea > Images

Plog 1.0.1 > Js > Htmlarea > Lang

Plog 1.0.1 > Js > Htmlarea > Plugins

Plog 1.0.1 > Js > Htmlarea > Plugins > CharacterMap

Plog 1.0.1 > Js > Htmlarea > Plugins > CharacterMap > Img

Plog 1.0.1 > Js > Htmlarea > Plugins > CharacterMap > Lang

Plog 1.0.1 > Js > Htmlarea > Plugins > CharacterMap > Popups

Plog 1.0.1 > Js > Htmlarea > Plugins > ContextMenu

Plog 1.0.1 > Js > Htmlarea > Plugins > ContextMenu > Lang

Plog 1.0.1 > Js > Htmlarea > Plugins > ContextMenu

Plog 1.0.1 > Js > Htmlarea > Plugins > CSS

Plog 1.0.1 > Js > Htmlarea > Plugins > CSS > Lang

Plog 1.0.1 > Js > Htmlarea > Plugins > DynamicCSS

Plog 1.0.1 > Js > Htmlarea > Plugins > DynamicCSS > Lang

Plog 1.0.1 > Js > Htmlarea > Plugins > EnterParagraphs

Plog 1.0.1 > Js > Htmlarea > Plugins > EnterParagraphs > Lang

Plog 1.0.1 > Js > Htmlarea > Plugins > FullPage

Plog 1.0.1 > Js > Htmlarea > Plugins > FullPage > Img

Plog 1.0.1 > Js > Htmlarea > Plugins > FullPage > Lang

Plog 1.0.1 > Js > Htmlarea > Plugins > FullPage > Popups

Plog 1.0.1 > Js > Htmlarea > Plugins > FullPage

Plog 1.0.1 > Js > Htmlarea > Plugins > InsertSmiley

Plog 1.0.1 > Js > Htmlarea > Plugins > InsertSmiley > Emoticons

Plog 1.0.1 > Js > Htmlarea > Plugins > InsertSmiley > Img

Plog 1.0.1 > Js > Htmlarea > Plugins > InsertSmiley

Plog 1.0.1 > Js > Htmlarea > Plugins > InsertSmiley > Lang

Plog 1.0.1 > Js > Htmlarea > Plugins > InsertSmiley > Popups

Plog 1.0.1 > Js > Htmlarea > Plugins > ListType

Plog 1.0.1 > Js > Htmlarea > Plugins > ListType > Lang

Plog 1.0.1 > Js > Htmlarea > Plugins > ListType

Plog 1.0.1 > Js > Htmlarea > Plugins

Plog 1.0.1 > Js > Htmlarea > Plugins > TableOperations

Plog 1.0.1 > Js > Htmlarea > Plugins > TableOperations > Img

Plog 1.0.1 > Js > Htmlarea > Plugins > TableOperations > Lang

Plog 1.0.1 > Js > Htmlarea > Plugins > TableOperations

Plog 1.0.1 > Js > Htmlarea

Plog 1.0.1 > Js > Htmlarea > Popups

Plog 1.0.1 > Js > Htmlarea

Plog 1.0.1 > Js > Ie7

Plog 1.0.1 > Js > Ie7 > Src

Plog 1.0.1 > Js

Plog 1.0.1 > Js > Ui

Plog 1.0.1

Plog 1.0.1 > Locale

Plog 1.0.1 > Locale > Unsupport

Plog 1.0.1 > Plugins

Plog 1.0.1

Plog 1.0.1 > Styles

Plog 1.0.1

Plog 1.0.1 > Templates

Plog 1.0.1 > Templates > Admin

Plog 1.0.1 > Templates > Admin > Xml

Plog 1.0.1 > Templates > Blueish

Plog 1.0.1 > Templates > Grey

Plog 1.0.1 > Templates > Misc

Plog 1.0.1 > Templates > Rss

Plog 1.0.1 > Templates > Standard

Plog 1.0.1 > Templates > Standard > Imgs

Plog 1.0.1 > Templates > Standard

Plog 1.0.1 > Templates > Summary

Plog 1.0.1 > Templates > Summary > Rss

Plog 1.0.1 > Templates > Summary

Plog 1.0.1 > Templates > Wizard

Plog 1.0.1 > Tmp

Plog 1.0.1

Adminaddpostaction.class.php:


<?php

    
include_once( PLOG_CLASS_PATH."class/action/admin/adminpostmanagementcommonaction.class.php" );
    include_once( 
PLOG_CLASS_PATH."class/view/admin/adminpostslistview.class.php" );    
    include_once( 
PLOG_CLASS_PATH."class/dao/articles.class.php" );
    include_once( 
PLOG_CLASS_PATH."class/locale/locale.class.php" );
    include_once( 
PLOG_CLASS_PATH."class/data/stringutils.class.php" );
    include_once( 
PLOG_CLASS_PATH."class/view/admin/admintemplatedview.class.php" );
    include_once( 
PLOG_CLASS_PATH."class/view/admin/adminnewpostview.class.php" );    
    include_once( 
PLOG_CLASS_PATH."class/bayesian/bayesianfiltercore.class.php" );
    include_once( 
PLOG_CLASS_PATH."class/data/validator/stringvalidator.class.php" );    
    include_once( 
PLOG_CLASS_PATH."class/data/validator/arrayvalidator.class.php" );        
    include_once( 
PLOG_CLASS_PATH."class/data/validator/integervalidator.class.php" );
    include_once( 
PLOG_CLASS_PATH."class/data/textfilter.class.php" );
    include_once( 
PLOG_CLASS_PATH."class/template/cachecontrol.class.php" );
    
    
/**
     * \ingroup Action
     * @private
     *
     * Action that adds a new post to the database.
     */
    
class AdminAddPostAction extends AdminPostManagementCommonAction
    
{
        
/**
         * 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->AdminPostManagementCommonAction$actionInfo,  $request );
            
            
// for data validation purposes,  posts must have at least a topic,  an intro text,  and a category
            
$this->registerFieldValidator"postText",  new StringValidator());
            
$this->registerFieldValidator"postTopic",  new StringValidator());
            
$this->registerFieldValidator"postCategories",  new ArrayValidator());
            
$view = new AdminNewPostView$this->_blogInfo );
            
$view->setErrorMessage$this->_locale->tr("error_adding_post"));
            
$this->setValidationErrorView$view );
            
            
// these fields do not need to be validated but should be there when we show the view once again
            
$this->registerField"postExtendedText" );
            
$this->registerField"postSlug" );
            
$this->registerField"postStatus" );
            
$this->registerField"sendNotification" );
            
$this->registerField"sendTrackbacks" );
            
$this->registerField"sendPings" );
            
$this->registerField"postId" );
            
$this->registerField"commentsEnabled" );
            
$this->registerField"customField" );
            
$this->registerField"postDateTime" );
        }

        
/**
         * @private
         *
         * returns the id of the post or 'false' if it couldn't be saved
         */
        
function _savePostData$article )
        {
            
$status $this->_postStatus;
            
            
$articles = new Articles();
            
$article->setFields$this->_getArticleCustomFields());            
            
            
// notifiy about this event
            
$this->notifyEventEVENT_PRE_POST_ADD,  Array( "article" => &$article ));                
            
            
// in case the post is already in the db
            
if( $this->_postId != "" ) {
                
$article->setId$this->_postId );
                
$artId $this->_postId;
                
$postSavedOk $articles->updateArticle$article );
                
                if( 
$postSavedOk )
                    
$artId $this->_postId;
                else
                    
$artId false;
            }
            else {
                
$artId $articles->addArticle$article );
            }
            
            return 
$artId;
        }

        
/**
         * Carries out the specified action
         */
        
function perform()
        {
            
$this->_fetchCommonData();

            
$this->_postId $this->_request->getValue"postId" );

            
$this->_previewPost    $this->_request->getValue"previewPost" );
            
$this->_addPost        $this->_request->getValue"addPost" );
            
$this->_saveDraft      $this->_request->getValue"isDraft" );
            
            
// we know for sure that the information is correct so we can now add
            // the post to the database
            
$postText Textfilter::xhtmlize($this->_postText).POST_EXTENDED_TEXT_MODIFIER.Textfilter::xhtmlize($this->_postExtendedText);
            
            
$article  = new Article$this->_postTopic,  $postText,  $this->_postCategories,
                                     
$this->_userInfo->getId(),  $this->_blogInfo->getId(),  $this->_postStatus,  0,  Array(),  $this->_postSlug );
            
// set also the date before it's too late
            
$article->setDateObject$this->_postTimestamp );
            
$article->setCommentsEnabled$this->_commentsEnabled );
        
            
// save the article to the db
            
$artId $this->_savePostData$article );
            
            
// once we have built the object,  we can add it to the database
            
if( $artId ) {
            
                
$this->_view = new AdminPostsListView$this->_blogInfo );
                
//$article->setId( $artId );
                
$message $this->_locale->tr("post_added_ok");
                
                
// train the filter
                
BayesianFilterCore::trainWithArticle$article );
                                
                
// add the article notification if requested to do so
                
if( $this->_sendNotification ) {
                    
$artNotifications = new ArticleNotifications();
                    
$artNotifications->addNotification$artId,  $this->_blogInfo->getId(),  $this->_userInfo->getId());
                    
$message .= " ".$this->_locale->tr("send_notifications_ok");
                }

                
// we only have to send trackback pings if the article was published
                // otherwise there is no need to...
                
$article->setId$artId );
                if( 
$article->getStatus() == POST_STATUS_PUBLISHED) {
                    
// get the output from the xmlrpc pings but only if the user decided to do so!
                    
if( $this->_sendPings ) {
                        
$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::getLinksstripslashes($article->getText()));

                        
// if no links,  there is nothing to do
                        
if( count($links) == ) {
                            
$this->_view = new AdminPostsListView$this->_blogInfo );
                        }
                        else {
                            
$this->_view = new AdminTemplatedView$this->_blogInfo,  "sendtrackbacks" );
                            
$this->_view->setValue"post",  $article );
                            
$this->_view->setValue"postlinks",  $links );
                         }
                    }
                    
$this->_view->setSuccessMessage$message );
                    
                    
$this->notifyEventEVENT_POST_POST_ADD,  Array( "article" => &$article )); 
                    
                    
// empty the cache used by this blog
                    
CacheControl::resetBlogCache$this->_blogInfo->getId());                        
                }
                else {
                    
$this->_view = new AdminPostsListView$this->_blogInfo );
                    
$this->_view->setSuccessMessage$this->_locale->tr("post_added_not_published") );
                    
                    
$this->notifyEventEVENT_POST_POST_ADD,  Array( "article" => &$article ));
                }
            }
            else {
                
$this->_view = new AdminPostsListView$this->_blogInfo );
                
$this->_view->setErrorMessage$this->_locale->tr("error_adding_post") );
            }

            
$this->setCommonData();

            
// better to return true if everything fine
            
return true;
        }
    }
?>



Other Blog Scripts:

WebMaster Resources Home

©RingsWorld.com