/trunk/manage/controllers/knowledgebase/articlecontroller.php
PHP | 333 lines | 276 code | 51 blank | 6 comment | 30 complexity | 3073c06b7cd7fe8e4c90a26d5d35a505 MD5 | raw file
Possible License(s): LGPL-2.1
- <?php
-
- class Articlecontroller extends Contentelementcontroller{
-
- public function __construct( PeacockCarterFrameworkRegistry $registry, $directCall )
- {
- $this->registry = $registry;
- if( $this->registry->getObject('authenticate')->isAuthorised('content_blog') == true )
- {
- $this->registry->getObject('adminmenubuilder')->buildMenu( 'knowledgebase.articles' );
- $this->registry->getObject('template')->addJavaScriptFile('views/new/js/knowledgebase.js');
- if( $this->registry->getURLBit(2) != '' )
- {
-
- switch( $this->registry->getURLBit(2) )
- {
-
- case 'create':
- $this->createArticle();
- break;
- case 'edit':
- $this->editArticle( intval( $this->registry->getURLBit(3) ) );
- break;
- case 'lookup-group-children':
- $this->lookupGroupChildren();
- break;
- case 'toggle-active':
- $this->toggleActiveArticle( intval( $this->registry->getURLBit(3) ) );
- break;
- case 'delete':
- $this->deleteArticle( intval( $this->registry->getURLBit(3) ) );
- break;
- default:
- $this->listArticles();
- break;
- }
- }
- else
- {
- $this->listArticles();
- }
- }
- else
- {
- $this->registry->getObject('authenticate')->redirectToAuthorised('primary');
- }
-
- }
-
- private function createArticle()
- {
- if( isset( $_POST['createarticle'] ) )
- {
-
- require_once( FRAMEWORK_PATH . 'models/content.php');
- require_once( FRAMEWORK_PATH . 'models/knowledgebasearticle/knowledgebasearticle.php');
-
- $article = new Knowledgebasearticle( $this->registry, 0);
- $article->setName( $this->registry->getObject('db')->sanitizeData( $_POST['page_name'] ) );
- $article->setTitle( $this->registry->getObject('db')->sanitizeData( $_POST['page_metatitle'] ) );
- $article->setHeading( $this->registry->getObject('db')->sanitizeData( $_POST['page_heading'] ) );
- $article->setMetakeywords( $this->registry->getObject('db')->sanitizeData( $_POST['page_metakeywords'] ) );
- $article->setMetadescription( $this->registry->getObject('db')->sanitizeData( $_POST['page_metadescription'] ) );
- $article->setContent( $this->registry->getObject('db')->sanitizeData( $_POST['page_content'] ) );
- $path = '';
- $endpath = preg_replace('/[^a-zA-Z0-9\s]/', '', $_POST['page_name'] );
- $endpath = str_replace( ' ', '-', $endpath );
- $endpath = strtolower( $endpath );
- $path = $path . $endpath;
- $path = $this->registry->getObject('db')->sanitizeData( $path );
- $article->setPath( $path );
- $article->setActive(1);
- $article->setSecure(0);
- $article->generateType();
- $article->setAuthor( $this->registry->getObject('authenticate')->getUserID() );
-
- // article
- $article->setArticleType( $this->registry->getObject('db')->sanitizeData( $_POST['article_type'] ) );
- if( isset( $_POST['article_groups'] ) && !empty( $_POST['article_groups'] ) && is_array( $_POST['article_groups'] ) )
- {
- $article->setGroupAssociations( $this->registry->getObject('db')->sanitizeData( $_POST['article_groups'] ) );
- }
-
-
- $article->save();
-
- $aid = $article->getID();
-
-
- if( isset( $_FILES['imageupload'] ) )
- {
- include( FRAMEWORK_PATH . 'lib/images/imagemanager.class.php');
- $manager = new Imagemanager();
- if ($manager->loadFromPost( 'imageupload', $this->registry->getSetting('uploads_path') . 'articles/images/' ))
- {
- $manager->resizeScaleHeight( $this->registry->getSetting('image.large_width') );
- $manager->save( $this->registry->getSetting('uploads_path') . 'articles/images/' . str_replace(" ", "", $manager->getName()) );
- }
- $imageName = str_replace(" ", "", $_FILES['imageupload']['name']);
-
- $insertImage = array();
- $insertImage['article_id'] = $this->registry->getObject('db')->sanitizeData( $aid );
- $insertImage['image'] = $this->registry->getObject('db')->sanitizeData( $imageName );
- $this->registry->getObject('db')->insertRecords( 'article_images', $insertImage );
- }
- else
- {
- $insertImage = array();
- $insertImage['article_id'] = $this->registry->getObject('db')->sanitizeData( $aid );
- $insertImage['image'] = 'equality-south-west_logo.png';
- $this->registry->getObject('db')->insertRecords( 'article_images', $insertImage );
- }
-
- if( isset( $_FILES['pdfupload'] ) && is_array($_FILES['pdfupload']) && count( $_FILES['pdfupload'] ) > 0 )
- {
- if( is_uploaded_file( $_FILES[ 'pdfupload' ]['tmp_name'] ) )
- {
- $path = $this->registry->getSetting('uploads_path') . 'articles/pdfs/';
- move_uploaded_file( $_FILES[ 'pdfupload' ]['tmp_name'] , $path . str_replace(" ", "", $_FILES[ 'pdfupload' ]['name']) );
-
- $insert = array();
- $insert['article_id'] = $this->registry->getObject('db')->sanitizeData( $aid );
- $insert['document'] = $this->registry->getObject('db')->sanitizeData( str_replace(" ", "", $_FILES[ 'pdfupload' ]['name']) );
- $this->registry->getObject('db')->insertRecords( 'article_documents', $insert );
- }
- }
-
- $this->registry->redirectUser(array('knowledgebase'),'Article created','The article has been created and added to the CMS.',true);
-
- }
- else
- {
- // article types
- require_once( FRAMEWORK_PATH . 'models/knowledgebasearticle/smodel.php');
- $sModel = new Knowledgebaselister( $this->registry );
- $this->registry->getObject('template')->getPage()->addTag( 'article_types', array( 'SQL', $sModel->getArticleTypes() ) );
- $this->registry->getObject('template')->getPage()->addTag( 'article_parent_groups', array( 'SQL', $sModel->getArticleGroupParents( true ) ) );
-
- foreach( $sModel->getArticleChildGroups() as $key => $data )
- {
- $data = $this->registry->getObject('db')->cacheData( $data );
- $this->registry->getObject('template')->getPage()->addPPTag( 'article_child_groups_' . $key, array( 'DATA', $data ) );
- }
-
- $this->registry->getObject('template')->buildFromTemplates('header.tpl.php', 'knowledgebase/articles/create.tpl.php', 'footer.tpl.php');
- }
- }
-
- private function editArticle( $id )
- {
- require_once( FRAMEWORK_PATH . 'models/content.php');
- require_once( FRAMEWORK_PATH . 'models/knowledgebasearticle/knowledgebasearticle.php');
- $article = new Knowledgebasearticle( $this->registry, $id);
- if( isset( $_POST['editarticle'] ) )
- {
- $article->setName( $this->registry->getObject('db')->sanitizeData( $_POST['page_name'] ) );
- $article->setTitle( $this->registry->getObject('db')->sanitizeData( $_POST['page_metatitle'] ) );
- $article->setHeading( $this->registry->getObject('db')->sanitizeData( $_POST['page_heading'] ) );
- $article->setMetakeywords( $this->registry->getObject('db')->sanitizeData( $_POST['page_metakeywords'] ) );
- $article->setMetadescription( $this->registry->getObject('db')->sanitizeData( $_POST['page_metadescription'] ) );
- $article->setContent( $this->registry->getObject('db')->sanitizeData( $_POST['page_content'] ) );
- $article->setActive(1);
- $article->setSecure(0);
- $article->generateType();
- $article->setAuthor( $this->registry->getObject('authenticate')->getUserID() );
-
- // article
- $article->setArticleType( $this->registry->getObject('db')->sanitizeData( $_POST['article_type'] ) );
- if( isset( $_POST['article_groups'] ) && !empty( $_POST['article_groups'] ) && is_array( $_POST['article_groups'] ) )
- {
- $article->setGroupAssociations( $this->registry->getObject('db')->sanitizeData( $_POST['article_groups'] ) );
- }
-
- $article->save();
-
- $aid = $article->getID();
-
- if( isset( $_FILES['imageupload'] ) )
- {
- include( FRAMEWORK_PATH . 'lib/images/imagemanager.class.php');
- $manager = new Imagemanager();
- if ($manager->loadFromPost( 'imageupload', $this->registry->getSetting('uploads_path') . 'articles/images/' ))
- {
- $manager->resizeScaleHeight( $this->registry->getSetting('image.large_width') );
- $manager->save( $this->registry->getSetting('uploads_path') . 'articles/images/' . str_replace(" ", "", $manager->getName()) );
- }
- $imageName = str_replace(" ", "", $_FILES['imageupload']['name']);
-
- $insertImage = array();
- $insertImage['article_id'] = $this->registry->getObject('db')->sanitizeData( $aid );
- $insertImage['image'] = $this->registry->getObject('db')->sanitizeData( $imageName );
- $this->registry->getObject('db')->insertRecords( 'article_images', $insertImage );
- }
-
- if( isset( $_FILES['pdfupload'] ) && is_array($_FILES['pdfupload']) && count( $_FILES['pdfupload'] ) > 0 )
- {
- if( is_uploaded_file( $_FILES[ 'pdfupload' ]['tmp_name'] ) )
- {
- $path = $this->registry->getSetting('uploads_path') . 'articles/pdfs/';
- move_uploaded_file( $_FILES[ 'pdfupload' ]['tmp_name'] , $path . str_replace(" ", "", $_FILES[ 'pdfupload' ]['name']) );
-
- $insert = array();
- $insert['article_id'] = $this->registry->getObject('db')->sanitizeData( $aid );
- $insert['document'] = $this->registry->getObject('db')->sanitizeData( str_replace(" ", "", $_FILES[ 'pdfupload' ]['name']) );
- $this->registry->getObject('db')->insertRecords( 'article_documents', $insert );
- }
- }
-
-
- $this->registry->redirectUser(array('knowledgebase'),'Article updated','The article has been updated and the changes saved to the CMS.',true);
-
-
- }
- else
- {
- $articleData = $article->getProperties();
- $this->registry->getObject('template')->dataToTags( $article->getProperties(), 'art_');
- $this->registry->getObject('template')->getPage()->addAdditionalParsingData( 'article_types', 'ID', $article->getArticleType(), 'extra', "selected='selected'");
- $uploads_url = $this->registry->getSetting('uploads_url');
-
- $sql="SELECT image FROM article_images WHERE article_id = " . $articleData['id'];
- $this->registry->getObject('db')->executeQuery( $sql );
- $imagedata = $this->registry->getObject('db')->getRows();
- if($imagedata['image']=="")
- {
- $imagedata['image'] = '<p>No image added</p>';
- $this->registry->getObject('template')->dataToTags( $imagedata, 'image_');
- }
- else
- {
- $imagedata['image'] ="<a href= " . $uploads_url . "articles/images/" . $imagedata['image'] . " target='blank'><img src= " . $uploads_url . "articles/images/ " .$imagedata['image'] . "/></a>";
- $this->registry->getObject('template')->dataToTags( $imagedata, 'image_');
- }
-
- $sql="SELECT document FROM article_documents WHERE article_id = " . $articleData['id'];
- $this->registry->getObject('db')->executeQuery( $sql );
- $pdfdata = $this->registry->getObject('db')->getRows();
- if($pdfdata['document']=="")
- {
- $pdfdata['document'] = '<p>No file added</p>';
- $this->registry->getObject('template')->dataToTags( $pdfdata, 'file_');
- }
- else
- {
- $pdfdata['document'] = "<a href= " . $uploads_url . 'articles/pdfs/' . $pdfdata['document'] . " target='blank'>Download</a>";
- $this->registry->getObject('template')->dataToTags( $pdfdata, 'file_');
- }
-
- // article types
- require_once( FRAMEWORK_PATH . 'models/knowledgebasearticle/smodel.php');
- $sModel = new Knowledgebaselister( $this->registry );
- $this->registry->getObject('template')->getPage()->addTag( 'article_types', array( 'SQL', $sModel->getArticleTypes() ) );
- $this->registry->getObject('template')->getPage()->addTag( 'article_parent_groups', array( 'SQL', $sModel->getArticleGroupParents(true) ) );
-
- foreach( $sModel->getArticleChildGroups() as $key => $data )
- {
- $data = $this->registry->getObject('db')->cacheData( $data );
- $this->registry->getObject('template')->getPage()->addPPTag( 'article_child_groups_' . $key, array( 'DATA', $data ) );
- }
- if( $article->getGroupAssociations() )
- {
- foreach( $article->getGroupAssociations() as $group_id )
- {
- $this->registry->getObject('template')->getPage()->addPPTag( 'form_checked' . $group_id, "checked='checked'");
- }
- }
-
-
- $this->registry->getObject('template')->buildFromTemplates('header.tpl.php', 'knowledgebase/articles/edit.tpl.php', 'footer.tpl.php');
- }
- }
-
- private function listArticles()
- {
-
- $this->buildSiteStructure($extrafields =array(), $extratable =array(), $extraconditions =array());
- $offset = intval( $this->registry->getURLBit(2) );
- $pagination = $this->registry->pagination( $this->registry->getObject('sitestructure')->getContentSQL(), 20, $offset, 'cache' );
- $pagination['actionstr'] = 'article';
- $this->paginate( $pagination, $link = 'knowledgebase/page/', $block_name = 'structure' );
-
- // /$this->buildSiteStructure($extrafields =array(), $extratable =array(), $extraconditions =array());
- $this->registry->getObject('template')->buildFromTemplates('header.tpl.php', 'knowledgebase/articles/list.tpl.php', 'footer.tpl.php');
- }
-
- private function buildSiteStructure( $fields, $tables, $conditions )
- {
- $this->setType('kb-article');
- $this->buildStructure( $fields, $tables, $conditions );
- }
-
- private function toggleActiveArticle( $id )
- {
- $sql = "UPDATE content SET active=1-active WHERE ID={$id}";
- $this->registry->getObject('db')->executeQuery( $sql );
- header('Location: ' . $this->registry->buildURL(array('knowledgebase'), '', true ) );
- exit();
- }
-
- private function deleteArticle( $id )
- {
- require_once( FRAMEWORK_PATH . 'models/content.php');
- require_once( FRAMEWORK_PATH . 'models/knowledgebasearticle/knowledgebasearticle.php');
- $article = new Knowledgebasearticle( $this->registry, $id);
- $article->delete();
- $this->registry->redirectUser(array('knowledgebase', 'article'), 'Article deleted', 'The article has now been deleted.',true);
- }
-
-
- private function lookupGroupChildren()
- {
- if( isset( $_POST['id'] ) )
- {
- require_once( FRAMEWORK_PATH . 'models/knowledgebasearticle/smodel.php');
- $sModel = new Knowledgebaselister( $this->registry );
- $groupChildren = $sModel->getArticleGroupChildren( $_POST['id'] );
- if( $groupChildren )
- {
- echo json_encode( $groupChildren );
- }
-
- exit();
- }
- else
- {
- // error
- }
- }
-
-
- }
-
- ?>