From: Eloi G. <ada...@us...> - 2004-08-21 17:03:07
|
Update of /cvsroot/phpwebsite-comm/modules/article/inc In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29156/inc Modified Files: AM_list_articles.php AM_view_news.php A_edit.php A_mail.php A_save.php editconfig.php saveconfig.php Added Files: A_view_diff.php A_view_history.php Log Message: 2.5 Release Files Index: editconfig.php =================================================================== RCS file: /cvsroot/phpwebsite-comm/modules/article/inc/editconfig.php,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** editconfig.php 18 Jun 2004 23:31:10 -0000 1.7 --- editconfig.php 21 Aug 2004 17:02:13 -0000 1.8 *************** *** 93,96 **** --- 93,100 ---- . CLS_help::show_link('configmanager', 'default_allow_anon'); + /* archive_days*/ + $tags['ARCHIVE_DAYS'] = PHPWS_Form::formSelect('CONFIG_archive_days', range(0,60), $this->val['archive_days'], TRUE) + . ' ' . $_SESSION['translate']->it('Number of days to store old versions of articles in the archives.'); + $tags['USERS_LABEL'] = $_SESSION['translate']->it('Registered users can'); Index: AM_list_articles.php =================================================================== RCS file: /cvsroot/phpwebsite-comm/modules/article/inc/AM_list_articles.php,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** AM_list_articles.php 18 Jun 2004 23:31:09 -0000 1.3 --- AM_list_articles.php 21 Aug 2004 17:02:12 -0000 1.4 *************** *** 123,127 **** /* Set up Edit button */ ! if ($this->can('edit',$value['created_username'])) { /* If someone else is not editing this page... */ --- 123,127 ---- /* Set up Edit button */ ! if ($this->can('edit',$value['created_username'],$value['mainarticle'])) { /* If someone else is not editing this page... */ Index: A_mail.php =================================================================== RCS file: /cvsroot/phpwebsite-comm/modules/article/inc/A_mail.php,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** A_mail.php 18 Jun 2004 23:31:10 -0000 1.2 --- A_mail.php 21 Aug 2004 17:02:13 -0000 1.3 *************** *** 21,25 **** $homepage = substr(PHPWS_HOME_HTTP, 0, -1); if (isset($_POST['ART_s_msg'])) { ! $tags['MESSAGE_LABEL'] = $_SESSION['translate']->it('Personal Message:'); $tags['MESSAGE'] = $_POST['ART_s_msg']; } --- 21,25 ---- $homepage = substr(PHPWS_HOME_HTTP, 0, -1); if (isset($_POST['ART_s_msg'])) { ! $tags['MESSAGE_LABEL'] = $_SESSION['translate']->it('Personal Message').':'; $tags['MESSAGE'] = $_POST['ART_s_msg']; } *************** *** 107,116 **** $tags['SUMMARYTEXT'] = PHPWS_Text::parseOutput($this->summary); $tags['BACKLINK'] = '['.PHPWS_Text::moduleLink($_SESSION['translate']->it('Back to Article'), 'article', array('view'=>$this->id)). ']'; ! $tags['R_MAIL_LABEL'] = $_SESSION['translate']->it('Friend\'s Email:'); $tags['R_MAIL_ADDR'] = PHPWS_Form::formTextField('ART_r_email', NULL, 40); $tags['R_MAIL_HELP'] = $_SESSION['translate']->it('Separate multiple addresses with commas. Maximum 200 characters.'); $tags['S_NAME_LABEL'] = $_SESSION['translate']->it('Your Full Name: (optional)'); $tags['S_NAME'] = PHPWS_Form::formTextField('ART_s_name', $_SESSION['OBJ_user']->username, 40); ! $tags['S_MAIL_LABEL'] = $_SESSION['translate']->it('Your Email Address:'); $tags['S_MAIL_ADDR'] = PHPWS_Form::formTextField('ART_s_email', $_SESSION['OBJ_user']->email, 40); $tags['S_MAIL_HELP'] = $_SESSION['translate']->it('These email addresses will be used to email the information on your behalf and will not be collected or used by us for any marketing purposes without your permission.'); --- 107,116 ---- $tags['SUMMARYTEXT'] = PHPWS_Text::parseOutput($this->summary); $tags['BACKLINK'] = '['.PHPWS_Text::moduleLink($_SESSION['translate']->it('Back to Article'), 'article', array('view'=>$this->id)). ']'; ! $tags['R_MAIL_LABEL'] = $_SESSION['translate']->it('Friend\'s Email').':'; $tags['R_MAIL_ADDR'] = PHPWS_Form::formTextField('ART_r_email', NULL, 40); $tags['R_MAIL_HELP'] = $_SESSION['translate']->it('Separate multiple addresses with commas. Maximum 200 characters.'); $tags['S_NAME_LABEL'] = $_SESSION['translate']->it('Your Full Name: (optional)'); $tags['S_NAME'] = PHPWS_Form::formTextField('ART_s_name', $_SESSION['OBJ_user']->username, 40); ! $tags['S_MAIL_LABEL'] = $_SESSION['translate']->it('Your Email Address').':'; $tags['S_MAIL_ADDR'] = PHPWS_Form::formTextField('ART_s_email', $_SESSION['OBJ_user']->email, 40); $tags['S_MAIL_HELP'] = $_SESSION['translate']->it('These email addresses will be used to email the information on your behalf and will not be collected or used by us for any marketing purposes without your permission.'); Index: AM_view_news.php =================================================================== RCS file: /cvsroot/phpwebsite-comm/modules/article/inc/AM_view_news.php,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** AM_view_news.php 19 Jul 2004 22:20:49 -0000 1.4 --- AM_view_news.php 21 Aug 2004 17:02:12 -0000 1.5 *************** *** 43,47 **** $result = $GLOBALS['core']->getCol('SELECT id FROM ' . $this->sql_article_table ! . ' WHERE ' . $this->get_published_sql().' AND mainarticle=0'.$this->sql_predicate . $filter.$this->news_filter['order']; $this->pager->setData($result); $result = NULL; --- 43,47 ---- $result = $GLOBALS['core']->getCol('SELECT id FROM ' . $this->sql_article_table ! . ' WHERE ' . $this->get_published_sql().' AND mainarticle=0'.$this->sql_predicate . $filter.$this->news_filter['order']); $this->pager->setData($result); $result = NULL; *************** *** 72,81 **** /* Create NewsPage HTML */ $alphabet = PHPWS_User::alphabet(); ! $tags['ALPHABET'] = PHPWS_Text::moduleLink($_SESSION['translate']->it('ALL'), 'article', array('view'=>'news', 'newsFilter'=>'') ) . " \n"; foreach ($alphabet as $alphachar) if ($alphachar!=$this->news_filter['letter']) ! $tags['ALPHABET'] .= PHPWS_Text::moduleLink($alphachar, 'article', array('view'=>'news', 'newsFilter'=>$alphachar) ) . " \n"; else ! $tags['ALPHABET'] .= $alphachar . " \n"; $tags['PAGE_BACKWARD_LINK'] = $this->pager->getBackLink(); $tags['PAGE_FORWARD_LINK'] = $this->pager->getForwardLink(); --- 72,81 ---- /* Create NewsPage HTML */ $alphabet = PHPWS_User::alphabet(); ! $tags['ALPHABET'] = PHPWS_Text::moduleLink($_SESSION['translate']->it('ALL'), 'article', array('view'=>'news', 'newsFilter'=>'') ) . " \n"; foreach ($alphabet as $alphachar) if ($alphachar!=$this->news_filter['letter']) ! $tags['ALPHABET'] .= PHPWS_Text::moduleLink($alphachar, 'article', array('view'=>'news', 'newsFilter'=>$alphachar) ) . " \n"; else ! $tags['ALPHABET'] .= $alphachar . " \n"; $tags['PAGE_BACKWARD_LINK'] = $this->pager->getBackLink(); $tags['PAGE_FORWARD_LINK'] = $this->pager->getForwardLink(); Index: A_save.php =================================================================== RCS file: /cvsroot/phpwebsite-comm/modules/article/inc/A_save.php,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** A_save.php 18 Jun 2004 23:31:10 -0000 1.2 --- A_save.php 21 Aug 2004 17:02:13 -0000 1.3 *************** *** 6,10 **** * @version $Id$ * ! * @author Adam Morton <ad...@NO...> * @module Article Manager * @param none --- 6,10 ---- * @version $Id$ * ! * @author Eloi George <el...@NO...> * @module Article Manager * @param none *************** *** 17,21 **** $query_data['rank'] = $this->rank; $query_data['created_username'] = $this->created_username; ! $query_data['updated_username'] = $this->updated_username; $query_data['created_date'] = $this->created_date; $query_data['updated_date'] = $this->updated_date; --- 17,23 ---- $query_data['rank'] = $this->rank; $query_data['created_username'] = $this->created_username; ! $query_data['created_id'] = $this->created_id; ! $query_data['updated_username'] = $_SESSION['OBJ_user']->username; ! $query_data['updated_id'] = $_SESSION['OBJ_user']->user_id; $query_data['created_date'] = $this->created_date; $query_data['updated_date'] = $this->updated_date; *************** *** 81,97 **** . $_SESSION['translate']->it('There was an error when inserting [var1] into the database [var2]' ,'article data','mod_article').'!'; - else - /* otherwise, send it for Approval */ - if (!$this->approved) - { - $information = "\n<b>" . $this->title . "</b><br />\n" . substr($this->summary, 0, 50); - PHPWS_Approval::add($this->id, $information, 'article'); - $this->submitted = TRUE; - } } /* otherwise, update the data */ ! else ! $GLOBALS['core']->sqlUpdate($query_data, 'mod_article', 'id', $this->id); /* Set category in FatCat */ if(isset($_SESSION['OBJ_fatcat'])) --- 83,125 ---- . $_SESSION['translate']->it('There was an error when inserting [var1] into the database [var2]' ,'article data','mod_article').'!'; } /* otherwise, update the data */ ! else { ! $GLOBALS['core']->sqlUpdate($query_data, 'mod_article', 'id', $this->id); ! /* If we're archiving old versions, do it */ ! if($_SESSION['SES_ART_master']->val['archive_days']>0) { ! /* Create a Diff object. */ ! require_once(PHPWS_SOURCE_DIR . 'mod/article/class/unified_diff.php'); ! $that = unserialize(stripslashes($this->oldversion['data'])); ! $lines1 = PHPWS_Text::sentence($that->view(1,1)); ! $lines2 = PHPWS_Text::sentence($this->view(1,1)); ! $diff = &new Text_Diff($lines1, $lines2); ! /*Determine what changes were made */ ! $renderer = &new Text_Diff_Renderer_html(999); ! $renderer->render($diff); ! /* Commit the old version to the archives */ ! $archive_data['article_id'] = $this->id; ! $archive_data['version'] = $this->version-1; ! $archive_data['archived_date'] = $this->updated_date; ! $archive_data['updated_userid'] = $this->oldversion['userid']; ! $archive_data['numadded'] = $renderer->linesadded; ! $archive_data['numdeleted'] = $renderer->linesdeleted; ! $archive_data['numchanged'] = $renderer->lineschanged; ! $archive_data['article'] = $this->oldversion['data']; ! $GLOBALS['core']->sqlInsert($archive_data, 'mod_article_oldversions'); ! /* Erase any versions that are too old */ ! $GLOBALS['core']->sqlDelete('mod_article_oldversions', 'archived_date' ! , date('Y-m-d H:i:s', time()-(86400*$_SESSION['SES_ART_master']->val['archive_days'])) ! , '<'); ! } ! } + /* If it's not automatically approved, send it for Approval */ + if (!$this->approved && !PHPWS_Approval::waitingForApproval($this->id, 'article')) + { + $information = '
<b>' . $this->title . '</b><br />
' . substr($this->summary, 0, 50); + PHPWS_Approval::add($this->id, $information, 'article'); + $this->submitted = TRUE; + } /* Set category in FatCat */ if(isset($_SESSION['OBJ_fatcat'])) *************** *** 106,114 **** $content = $_SESSION['translate']->it('Your work has successfully been saved to the database!'); if(!$this->approved) ! $content .= '<br />'.$_SESSION['translate']->it('It will be published after approval by an administrator.'); $GLOBALS['CNT_article']['title'] = $_SESSION['translate']->it('Article Manager') .' - '. $_SESSION['translate']->it('Article Saved').'!'; $GLOBALS['CNT_article']['content'] = $content .'<br /><br />'. $this->menuLink; - ?> --- 134,142 ---- $content = $_SESSION['translate']->it('Your work has successfully been saved to the database!'); if(!$this->approved) ! $content .= '<br />'.$_SESSION['translate']->it('It will be published after approval by an administrator.') ! . '<br />'.$_SESSION['translate']->it('You however, will still be able to see and edit it.'); $GLOBALS['CNT_article']['title'] = $_SESSION['translate']->it('Article Manager') .' - '. $_SESSION['translate']->it('Article Saved').'!'; $GLOBALS['CNT_article']['content'] = $content .'<br /><br />'. $this->menuLink; ?> Index: A_edit.php =================================================================== RCS file: /cvsroot/phpwebsite-comm/modules/article/inc/A_edit.php,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** A_edit.php 19 Jul 2004 22:23:00 -0000 1.4 --- A_edit.php 21 Aug 2004 17:02:13 -0000 1.5 *************** *** 30,37 **** $this->setEditLock(true); $this->editmode = TRUE; /* Does article need to be re-approved? */ $this->approved = (!$_SESSION['SES_ART_master']->val['need_approval'] || $_SESSION['OBJ_user']->allow_access('approval')) ?1:0; } ! // Get Article Title $article_tags['TITLE_LABEL'] = $_SESSION['translate']->it('Title').':'; $article_tags['TITLE'] = PHPWS_Form::formTextField('ARTICLE_title', $this->title, 55, 70) --- 30,41 ---- $this->setEditLock(true); $this->editmode = TRUE; + /* Serialize the article to save as an archived version */ + $this->oldversion['data'] = addslashes(serialize($this)); + $this->oldversion['userid'] = $this->updated_id; /* Does article need to be re-approved? */ $this->approved = (!$_SESSION['SES_ART_master']->val['need_approval'] || $_SESSION['OBJ_user']->allow_access('approval')) ?1:0; } ! ! /* Get Article Title */ $article_tags['TITLE_LABEL'] = $_SESSION['translate']->it('Title').':'; $article_tags['TITLE'] = PHPWS_Form::formTextField('ARTICLE_title', $this->title, 55, 70) *************** *** 42,45 **** --- 46,53 ---- . $_SESSION['translate']->it('Main Menu') . '</a>'; + //Link to view article history + if($_SESSION['SES_ART_master']->val['archive_days']>0) + $article_tags['HISTORYLINK'] = '<a href="index.php?module=article&viewhistory='. $this->id.'" target="_blank">' . $_SESSION['translate']->it('View Revision History').'</a>'; + // Get the article summary text $article_tags['SUMMARY_LABEL'] = $_SESSION['translate']->it('Summary').':' --- NEW FILE: A_view_history.php --- <?php /** * Displays the revision history of this article. * * @author Eloi George <el...@NO...> * @module Article Manager * @param id : Id of the article to show. * @return none */ /* If user is unathorized to use this method, leave */ /* Construct revision history table template */ /* Append this content to the view of the current article */ /* Retrieve available revision data */ class PHPWS_history_list { function PHPWS_history_list($data) { if(is_array($data)) foreach($data as $key => $value) { $this->$key = $value; } } function getListDiff() { $curr = $_SESSION['translate']->it('Compare with the current version'); $prev = $_SESSION['translate']->it('Compare with the previous version'); return '[<a href="index.php?module=article&viewdiff=' . $_REQUEST['viewhistory'].'&this='.$this->version.'&that=current" title="' . $curr .'" alt="'.$curr.'">'.$_SESSION['translate']->it('curr') . '</a>] [<a href="index.php?module=article&viewdiff=' . $_REQUEST['viewhistory'].'&this='.$this->version.'&that=previous" title="' . $prev .'" alt="'.$prev.'">'.$_SESSION['translate']->it('last') . '</a>]'; } function getListPick() { return '<input name="this" value="'.$this->version.'" type="radio"><input name="that" value="'.$this->version.'" type="radio">'; } function getListArchived_date() { return date(PHPWS_DATE_FORMAT . ' ' . PHPWS_TIME_FORMAT, (strtotime($this->archived_date)+$GLOBALS['core']->datetime->time_dif)); } function getListUsername() { return $this->username; } function getListVersion() { $viewtext = $_SESSION['translate']->it('View this version on a new page'); return '<a href="index.php?module=article&viewarchive='.$_REQUEST['viewhistory'].'&version='.$this->version . '" title="'.$viewtext.'" alt="'.$viewtext.'" target="_blank">'.$this->version.'</a>'; } } if(!isset($this->_list)) $this->_list = new PHPWS_List; $this->_list->setModule('article'); $this->_list->setClass('PHPWS_history_list'); $this->_list->setTable('mod_article_oldversions LEFT JOIN '.PHPWS_TBL_PREFIX.'mod_users ON user_id=updated_userid'); $this->_list->setDbColumns(array('id','version','archived_date','numadded','numdeleted','numchanged','username')); $this->_list->setWhere('article_id='.$this->id); $this->_list->setOrder('version DESC'); $this->_list->setListColumns(array('version', 'diff', 'pick', 'archived_date', 'username')); $this->_list->setName('history'); $this->_list->setOp('viewhistory='.$this->id); $this->_list->setPaging(array('limit'=>20, 'section'=>TRUE, 'limits'=>array(5,10,20,50,100), 'back'=>'<<', 'forward'=>'>>', 'anchor'=>FALSE)); $tags = array(); $tags['ID'] = $this->id; $tags['TITLE1'] = $_SESSION['translate']->it('Revison History'); $tags['TITLE2'] = $_SESSION['translate']->it('The Current Version Is [var1]', $this->version); $tags['DIFF_LABEL'] = $_SESSION['translate']->it('Compare To').':'; $tags['VERSION_LABEL'] = $_SESSION['translate']->it('Version'); $tags['UPDATED_LABEL'] = $_SESSION['translate']->it('Updated'); $tags['EDITOR_LABEL'] = $_SESSION['translate']->it('Editor'); $tags['DIFF_HELP'] = CLS_help::show_link('article', 'history_picker'); $tags['COMPARE_BTN'] = $_SESSION['translate']->it('Compare Selected'); $this->_list->setExtraListTags($tags); $GLOBALS['CNT_article']['title'] = $this->title; $GLOBALS['CNT_article']['content'] = $this->_list->getList(); ?> Index: saveconfig.php =================================================================== RCS file: /cvsroot/phpwebsite-comm/modules/article/inc/saveconfig.php,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** saveconfig.php 18 Jun 2004 23:31:10 -0000 1.5 --- saveconfig.php 21 Aug 2004 17:02:13 -0000 1.6 *************** *** 46,51 **** $query_data['make_metatags'] = ($_POST['CONFIG_make_metatags'])?1:0; $query_data['brand_printable'] = ($_POST['CONFIG_brand_printable'])?1:0; ! $query_data['use_comments'] = ($_POST['CONFIG_use_comments'])?1:0; $GLOBALS['core']->sqlUpdate($query_data, 'mod_article_config'); ?> --- 46,56 ---- $query_data['make_metatags'] = ($_POST['CONFIG_make_metatags'])?1:0; $query_data['brand_printable'] = ($_POST['CONFIG_brand_printable'])?1:0; ! $query_data['use_comments'] = ($_POST['CONFIG_use_comments'])?1:0; ! $query_data['archive_days'] = $_POST['CONFIG_archive_days']; $GLOBALS['core']->sqlUpdate($query_data, 'mod_article_config'); + + /* Erase any versions that are too old */ + $GLOBALS['core']->sqlDelete('mod_article_oldversions', 'archived_date' + , date('Y-m-d H:i:s', time()-(86400*$query_data['archive_days'])), '<'); ?> --- NEW FILE: A_view_diff.php --- <?php /** * Displays differences between 2 versions of this article. * * @author Eloi George <el...@NO...> * @module Article Manager * @param int new : Version # of the newer revision. * @param int old : Version # of the older revision. * @return none */ /* If user is unathorized to use this method, leave */ /* Retrieve the requested versions */ /* If both the requested versions aren't available, leave */ /* Create Diff output of the requested versions */ /* Set the change summary text */ require_once(PHPWS_SOURCE_DIR . 'mod/article/class/unified_diff.php'); $sql = 'SELECT * FROM mod_article_oldversions WHERE article_id='.$this->id.' AND version='; /* Retrieve the older article version */ $result = $GLOBALS['core']->query($sql.$oldversion, 1); $viewtext = $_SESSION['translate']->it('View this version on a new page'); if ($result && $row = $result->fetchrow(DB_FETCHMODE_ASSOC)) { $old_object = unserialize(stripslashes($row['article'])); $tags['THIS_LABEL'] = $_SESSION['translate']->it('Revision [[var2]] as of [var1]', date(PHPWS_DATE_FORMAT . ' ' . PHPWS_TIME_FORMAT, (strtotime($old_object->updated_date)+$GLOBALS['core']->datetime->time_dif)) , '<a href="index.php?module=article&viewarchive='.$this->id.'&version='.$oldversion . '" title="'.$viewtext.'" alt="'.$viewtext.'" target="_blank">'.$oldversion.'</a>'); } else echo 'ERROR: Version '.$oldversion.' not found!!!<br />'; /* Retrieve the newer article version */ if($newversion==$this->version) { $new_object = $this; $tags['THAT_LABEL'] = $_SESSION['translate']->it('Current Version'); } else { $result = $GLOBALS['core']->query($sql.$newversion, 1); if ($result && $row = $result->fetchrow(DB_FETCHMODE_ASSOC)) { $new_object = unserialize(stripslashes($row['article'])); $tags['THAT_LABEL'] = $_SESSION['translate']->it('Revision [[var2]] as of [var1]', date(PHPWS_DATE_FORMAT . ' ' . PHPWS_TIME_FORMAT, (strtotime($new_object->updated_date)+$GLOBALS['core']->datetime->time_dif)) , '<a href="index.php?module=article&viewarchive='.$this->id.'&version='.$newversion . '" title="'.$viewtext.'" alt="'.$viewtext.'" target="_blank">'.$newversion.'</a>'); } else echo 'ERROR: Version '.$newversion.' not found!!!<br />'; } /* Create a Diff object. (Unified HTML - Tags Stripped) */ $allowedtags = '<b>,<a>,<i>,<img>,<h1>,<h2>,<h3>,<h4>,<h5>,<h6>,<font>'; $lines1 = PHPWS_Text::sentence(strip_tags($old_object->view(1,1), $allowedtags)); $lines2 = PHPWS_Text::sentence(strip_tags($new_object->view(1,1), $allowedtags)); $diff = &new Text_Diff($lines1, $lines2); /* Determine what changes were made */ $renderer = &new Text_Diff_Renderer_html(999); $tags['DIFFCONTENT'] = $renderer->render($diff); $tags['BACKLINK'] = '<a href="index.php?module=article&viewhistory='. $_REQUEST['viewdiff'].'">' . $_SESSION['translate']->it('Back To Revision History').'</a>'; $tags['TITLE'] = $_SESSION['translate']->it('Difference Between Revisions'); $tags['STATS'] = $_SESSION['translate']->it('Lines Added:[var1] Deleted:[var2] Changed:[var3]', (string)$renderer->linesadded, $renderer->linesdeleted, $renderer->lineschanged); $tags['TITLE2'] = $_SESSION['translate']->it('Current Version of This Article'); $tags['CURR_ARTICLE'] = $this->view(1,1); $GLOBALS['CNT_article']['title'] = $this->title; $GLOBALS['CNT_article']['content'] = PHPWS_Template::processTemplate($tags, 'article', 'diff.tpl'); ?> |