Commit 4d6f17842f32d665b26d345228da31f88699f124

Authored by kevin_fourie
1 parent fd047c5d

Merged in from DEV trunk...

KTS-2841
"Document linked to a tag (with non-alphaneumeric characters) not returned when the tag is navigated."
Fixed. Replaced the strtolower.

Committed by: Megan Watson
Reviewed by: Jonathan Byrne

KTS-3051
"Scheduler running time to be configurable in the config file"
Fixed. Added the config setting.

Committed by: Megan Watson
Reviewed by: Jonathan Byrne

KTS-3049
"Plugin is unable to change filename during checkout"
Fixed. Triggers on now checked on the download. They check for the action 'checkoutDownload'.

Committed by: Megan Watson
Reviewed by: Jonathan Byrne

WSA-113
"Implement returning of basic permissions returned by get_listing() and document detail."
Fixed.

Committed By: Conrad Vermeulen
Reviewed By: Megan Watson

WSA-113
"Implement returning of basic permissions returned by get_listing() and document detail."
Fixed.

Committed By: Conrad Vermeulen
Reviewed By: Megan Watson

KTS-3147
"Scheduler calls the default php and doesn't check for the stack php"
Fixed. It now checks for the stack php first.

Committed by: Megan Watson
Reviewed by: Conrad Vermeulen

Added new contributors to about page.


git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/STABLE/trunk@8247 c91229c3-7414-0410-bfa2-8a42b809f60b
bin/scheduler.php
1 1 <?php
2 2 /**
3   - * $Id: scheduler.php 8085 2008-02-18 15:22:27Z kevin_fourie $
  3 + * $Id: scheduler.php 8245 2008-03-11 13:06:57Z megan_w $
4 4 *
5 5 * KnowledgeTree Open Source Edition
6 6 * Document Management Made Simple
... ... @@ -193,7 +193,8 @@ if (empty($aList))
193 193 if ($ext == 'php')
194 194 {
195 195 $config = KTConfig::getSingleton();
196   - $phpPath = $config->get('externalBinary/php');
  196 + $phpPath = KTUtil::checkForStackCommand('externalBinary/php');
  197 + //$config->get('externalBinary/php');
197 198  
198 199 // being protective as some scripts work on relative paths
199 200 $dirname = dirname($file);
... ...
config/config.ini
... ... @@ -73,6 +73,9 @@ useNewDashboard = default
73 73 ; Defaults to /usr/share/file/magic
74 74 magicDatabase = default
75 75  
  76 +; The interval in seconds between each iteration of the scheduler
  77 +schedulerInterval = 30
  78 +
76 79 [dashboard]
77 80 ; Display the "Your Checked-out Documents" dashlet even when empty.
78 81 ; Defaults to false
... ... @@ -302,7 +305,7 @@ javaLuceneURL = default
302 305  
303 306 [openoffice]
304 307 ; The host on which open office is installed
305   -; defaults to 127.0.0.1
  308 +; defaults to 127.0.0.1
306 309 host = default
307 310  
308 311 ; The port on which open office is listening
... ...
ktapi/KTAPIDocument.inc.php
... ... @@ -1605,7 +1605,7 @@ class KTAPI_Document extends KTAPI_FolderItem
1605 1605 $detail['is_immutable'] = (bool) $document->getImmutable();
1606 1606  
1607 1607 // check permissions
1608   - $detail['permissions'] = KTWSAPI_Document::get_permission_string($document);
  1608 + $detail['permissions'] = KTAPI_Document::get_permission_string($document);
1609 1609  
1610 1610 // get workflow name
1611 1611 $workflowid = $document->getWorkflowId();
... ...
ktapi/KTAPIFolder.inc.php
... ... @@ -399,7 +399,7 @@ class KTAPI_Folder extends KTAPI_FolderItem
399 399 'version' => 'n/a',
400 400  
401 401 'is_immutable'=> 'n/a',
402   - 'permissions' => KTWSAPI_Folder::get_permission_string($folder),
  402 + 'permissions' => KTAPI_Folder::get_permission_string($folder),
403 403  
404 404 'workflow'=>'n/a',
405 405 'workflow_state'=>'n/a',
... ... @@ -533,7 +533,7 @@ class KTAPI_Folder extends KTAPI_FolderItem
533 533 'version' => $document->getMajorVersionNumber() . '.' . $document->getMinorVersionNumber(),
534 534  
535 535 'is_immutable'=> $document->getImmutable()?'true':'false',
536   - 'permissions' => KTWSAPI_Document::get_permission_string($document),
  536 + 'permissions' => KTAPI_Document::get_permission_string($document),
537 537  
538 538 'workflow'=> $workflow,
539 539 'workflow_state'=> $state,
... ...
lib/browse/BrowseColumns.inc.php
... ... @@ -115,7 +115,7 @@ class TitleColumn extends BrowseColumn {
115 115 }
116 116  
117 117 function renderFolderLink($aDataRow) {
118   - $outStr = '<a href="' . $this->buildFolderLink($aDataRow) . '">';
  118 + $outStr = '<a class="contenttype_href" href="' . $this->buildFolderLink($aDataRow) . '">';
119 119 $outStr .= htmlentities($aDataRow['folder']->getName(), ENT_NOQUOTES, 'UTF-8');
120 120 $outStr .= '</a> ';
121 121 return $outStr;
... ...
plugins/browseabledashlet/templates/browseabledashlet/dashlet.smarty
... ... @@ -10,7 +10,7 @@
10 10 <tbody>
11 11 {foreach from=$folders item=oFolder}
12 12 <tr class="browse_column {cycle values=odd,even}"><td><span
13   - class="contenttype folder"><a {capture assign=fid}{$oFolder->getId()}{/capture}
  13 + class="contenttype folder"><a class="contenttype_href" {capture assign=fid}{$oFolder->getId()}{/capture}
14 14 href="{ktLink base="browse.php" query="fFolderId=`$fid`"}">{$oFolder->getName()|sanitize}</a> </span>
15 15 </td></tr>
16 16 {/foreach}
... ...
plugins/ktcore/KTBulkActions.php
... ... @@ -916,6 +916,23 @@ class KTBrowseBulkCheckoutAction extends KTBulkAction {
916 916 $oDocumentTransaction = new DocumentTransaction($oEntity, "Document part of bulk checkout", 'ktstandard.transactions.check_out', array());
917 917 $oDocumentTransaction->create();
918 918 }
  919 +
  920 + $oKTTriggerRegistry = KTTriggerRegistry::getSingleton();
  921 + $aTriggers = $oKTTriggerRegistry->getTriggers('checkoutDownload', 'postValidate');
  922 + foreach ($aTriggers as $aTrigger) {
  923 + $sTrigger = $aTrigger[0];
  924 + $oTrigger = new $sTrigger;
  925 + $aInfo = array(
  926 + 'document' => $oEntity,
  927 + );
  928 + $oTrigger->setInfo($aInfo);
  929 + $ret = $oTrigger->postValidate();
  930 + if (PEAR::isError($ret)) {
  931 + return $ret;
  932 + }
  933 + }
  934 + $oEntity->setFileName('outterfile.pdf');
  935 +
919 936 $this->oZip->addDocumentToZip($oEntity);
920 937 }
921 938  
... ... @@ -1005,6 +1022,24 @@ class KTBrowseBulkCheckoutAction extends KTBulkAction {
1005 1022 $oDocumentTransaction = new DocumentTransaction($oDocument, 'Document part of bulk checkout', 'ktstandard.transactions.check_out', array());
1006 1023 $oDocumentTransaction->create();
1007 1024 }
  1025 +
  1026 + $oKTTriggerRegistry = KTTriggerRegistry::getSingleton();
  1027 + $aTriggers = $oKTTriggerRegistry->getTriggers('checkoutDownload', 'postValidate');
  1028 + foreach ($aTriggers as $aTrigger) {
  1029 + $sTrigger = $aTrigger[0];
  1030 + $oTrigger = new $sTrigger;
  1031 + $aInfo = array(
  1032 + 'document' => $oDocument,
  1033 + );
  1034 + $oTrigger->setInfo($aInfo);
  1035 + $ret = $oTrigger->postValidate();
  1036 + if (PEAR::isError($ret)) {
  1037 + return $ret;
  1038 + }
  1039 + }
  1040 +
  1041 + $oDocument->setFileName('innerfile.pdf');
  1042 +
1008 1043 $sDocFolderId = $oDocument->getFolderID();
1009 1044 $oFolder = isset($aFolderObjects[$sDocFolderId]) ? $aFolderObjects[$sDocFolderId] : Folder::get($sDocFolderId);
1010 1045 $this->oZip->addDocumentToZip($oDocument, $oFolder);
... ...
plugins/ktcore/KTColumns.inc.php
... ... @@ -88,7 +88,7 @@ class AdvancedTitleColumn extends AdvancedColumn {
88 88 }
89 89  
90 90 if($this->link_folders) {
91   - $outStr = '<a href="' . $this->buildFolderLink($aDataRow) . '">' . $outStr . '</a>';
  91 + $outStr = '<a class="contenttype_href" href="' . $this->buildFolderLink($aDataRow) . '">' . $outStr . '</a>';
92 92 }
93 93 return $outStr;
94 94 }
... ...
plugins/ktcore/KTDocumentActions.php
... ... @@ -172,7 +172,7 @@ class KTDocumentVersionHistoryAction extends KTDocumentAction {
172 172 if($isActive){
173 173 $oRegistry =& KTPluginRegistry::getSingleton();
174 174 $oPlugin =& $oRegistry->getPlugin('document.comparison.plugin');
175   -
  175 +
176 176 if($oPlugin->load()){
177 177 $sUrl = $oPlugin->getPagePath('DocumentComparison');
178 178 $file = $oPlugin->_aPages['document.comparison.plugin/DocumentComparison'][2];
... ... @@ -497,6 +497,20 @@ class KTDocumentCheckOutAction extends KTDocumentAction {
497 497 $sReason = KTUtil::arrayGet($_REQUEST, 'reason');
498 498 $this->oValidator->notEmpty($sReason);
499 499  
  500 + $oKTTriggerRegistry = KTTriggerRegistry::getSingleton();
  501 + $aTriggers = $oKTTriggerRegistry->getTriggers('checkoutDownload', 'postValidate');
  502 + foreach ($aTriggers as $aTrigger) {
  503 + $sTrigger = $aTrigger[0];
  504 + $oTrigger = new $sTrigger;
  505 + $aInfo = array(
  506 + 'document' => $oDocument,
  507 + );
  508 + $oTrigger->setInfo($aInfo);
  509 + $ret = $oTrigger->postValidate();
  510 + if (PEAR::isError($ret)) {
  511 + return $ret;
  512 + }
  513 + }
500 514  
501 515 $oStorage =& KTStorageManagerUtil::getSingleton();
502 516 $oStorage->download($this->oDocument, true);
... ...
plugins/tagcloud/TagCloudTriggers.php
... ... @@ -5,32 +5,32 @@
5 5 * KnowledgeTree Open Source Edition
6 6 * Document Management Made Simple
7 7 * Copyright (C) 2004 - 2008 The Jam Warehouse Software (Pty) Limited
8   - *
  8 + *
9 9 * This program is free software; you can redistribute it and/or modify it under
10 10 * the terms of the GNU General Public License version 3 as published by the
11 11 * Free Software Foundation.
12   - *
  12 + *
13 13 * This program is distributed in the hope that it will be useful, but WITHOUT
14 14 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
15 15 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
16 16 * details.
17   - *
  17 + *
18 18 * You should have received a copy of the GNU General Public License
19 19 * along with this program. If not, see <http://www.gnu.org/licenses/>.
20   - *
  20 + *
21 21 * You can contact The Jam Warehouse Software (Pty) Limited, Unit 1, Tramber Place,
22 22 * Blake Street, Observatory, 7925 South Africa. or email info@knowledgetree.com.
23   - *
  23 + *
24 24 * The interactive user interfaces in modified source and object code versions
25 25 * of this program must display Appropriate Legal Notices, as required under
26 26 * Section 5 of the GNU General Public License version 3.
27   - *
  27 + *
28 28 * In accordance with Section 7(b) of the GNU General Public License version 3,
29 29 * these Appropriate Legal Notices must retain the display of the "Powered by
30   - * KnowledgeTree" logo and retain the original copyright notice. If the display of the
  30 + * KnowledgeTree" logo and retain the original copyright notice. If the display of the
31 31 * logo is not reasonably feasible for technical reasons, the Appropriate Legal Notices
32   - * must display the words "Powered by KnowledgeTree" and retain the original
33   - * copyright notice.
  32 + * must display the words "Powered by KnowledgeTree" and retain the original
  33 + * copyright notice.
34 34 * Contributor( s): ______________________________________
35 35 *
36 36 */
... ... @@ -56,11 +56,11 @@ class KTAddDocumentTrigger {
56 56 */
57 57 function postValidate() {
58 58 global $default;
59   - $oDocument =& $this->aInfo['document'];
  59 + $oDocument =& $this->aInfo['document'];
60 60 $aMeta = & $this->aInfo['aOptions'];
61   -
62   - $iDocId = $oDocument->getID();
63   -
  61 +
  62 + $iDocId = $oDocument->getID();
  63 +
64 64 // get tag id from document_fields table where name = Tag
65 65 $sQuery = 'SELECT df.id AS id FROM document_fields AS df ' .
66 66 'WHERE df.name = \'Tag\'';
... ... @@ -77,7 +77,7 @@ class KTAddDocumentTrigger {
77 77 {
78 78 foreach($aMeta['metadata'] as $aMetaData)
79 79 {
80   -
  80 +
81 81 $oProxy = $aMetaData[0];
82 82 if($oProxy->iId == $sTags)
83 83 {
... ... @@ -89,35 +89,39 @@ class KTAddDocumentTrigger {
89 89 $words_table = KTUtil::getTableName('tag_words');
90 90 $tagString = str_replace(' ', '', $tagString);
91 91 $tags = explode(',',$tagString);
92   -
  92 +
93 93 $aTagIds = array();
94   -
  94 +
95 95 foreach($tags as $sTag)
96 96 {
97   - $sTag = mb_strtolower(trim($sTag), mb_detect_encoding($sTag));
  97 + $sTag = trim($sTag);
  98 + $sTag = utf8_decode($sTag);
  99 + $sTag = mb_strtolower($sTag);
  100 + $sTag = utf8_encode($sTag);
  101 +
98 102 $res = DBUtil::getOneResult(array("SELECT id FROM $words_table WHERE tag = ?", array($sTag)));
99   -
  103 +
100 104 if (PEAR::isError($res)) {
101 105 return $res;
102 106 }
103   -
104   - if (is_null($res))
  107 +
  108 + if (is_null($res))
105 109 {
106 110 $id = & DBUtil::autoInsert($words_table, array('tag'=>$sTag));
107 111 $aTagIds[$sTag] = $id;
108 112 }
109   - else
  113 + else
110 114 {
111 115 $aTagIds[$sTag] = $res['id'];
112 116 }
113 117 }
114   -
  118 +
115 119 $doc_tags = KTUtil::getTableName('document_tags');
116   -
  120 +
117 121 foreach($aTagIds as $sTag=>$tagid)
118 122 {
119 123 DBUtil::autoInsert($doc_tags, array(
120   -
  124 +
121 125 'document_id'=>$iDocId,
122 126 'tag_id'=>$tagid),
123 127 array('noid'=>true));
... ... @@ -150,11 +154,11 @@ class KTEditDocumentTrigger {
150 154 */
151 155 function postValidate() {
152 156 global $default;
153   - $oDocument =& $this->aInfo['document'];
  157 + $oDocument =& $this->aInfo['document'];
154 158 $aMeta = & $this->aInfo['aOptions'];
155 159 // get document id
156   - $iDocId = $oDocument->getID();
157   -
  160 + $iDocId = $oDocument->getID();
  161 +
158 162 // get all tags that are linked to the document
159 163 $sQuery = 'SELECT tw.id FROM tag_words AS tw, document_tags AS dt, documents AS d ' .
160 164 'WHERE dt.tag_id = tw.id ' .
... ... @@ -178,7 +182,7 @@ class KTEditDocumentTrigger {
178 182 return false;
179 183 }
180 184 }
181   - // proceed to add the tags as per normaly
  185 + // proceed to add the tags as per normal
182 186 $sQuery = 'SELECT df.id AS id FROM document_fields AS df ' .
183 187 'WHERE df.name = \'Tag\'';
184 188  
... ... @@ -206,32 +210,35 @@ class KTEditDocumentTrigger {
206 210 $words_table = KTUtil::getTableName('tag_words');
207 211 $tagString = str_replace(' ', ' ', $tagString);
208 212 $tags = explode(',',$tagString);
209   -
  213 +
210 214 $aTagIds = array();
211   -
  215 +
212 216 foreach($tags as $sTag)
213 217 {
214   - $sTag=strtolower(trim($sTag));
215   -
  218 + $sTag = trim($sTag);
  219 + $sTag = utf8_decode($sTag);
  220 + $sTag = mb_strtolower($sTag);
  221 + $sTag = utf8_encode($sTag);
  222 +
216 223 $res = DBUtil::getOneResult(array("SELECT id FROM $words_table WHERE tag = ?", array($sTag)));
217   -
  224 +
218 225 if (PEAR::isError($res)) {
219 226 return $res;
220 227 }
221   -
222   - if (is_null($res))
  228 +
  229 + if (is_null($res))
223 230 {
224 231 $id = & DBUtil::autoInsert($words_table, array('tag'=>$sTag));
225 232 $aTagIds[$sTag] = $id;
226 233 }
227   - else
  234 + else
228 235 {
229 236 $aTagIds[$sTag] = $res['id'];
230 237 }
231 238 }
232   -
  239 +
233 240 $doc_tags = KTUtil::getTableName('document_tags');
234   -
  241 +
235 242 foreach($aTagIds as $sTag=>$tagid)
236 243 {
237 244 DBUtil::autoInsert($doc_tags, array(
... ...
resources/css/kt-contenttypes.css
... ... @@ -11,7 +11,9 @@
11 11 padding-top: 5px;
12 12 padding-bottom: 5px;
13 13 padding-right: 0;
14   - margin-right: 25px;
  14 + /*This margin-right has been moved to kt-framing
  15 + under contenttype_href to fix a display bug in IE 6 */
  16 + /*margin-right: 25px;*/
15 17 }
16 18  
17 19 .contenttype.office { background-image: url(../../resources/mimetypes/office.png); }
... ...
resources/css/kt-framing.css
... ... @@ -2117,4 +2117,10 @@ body #content #add_dashlet
2117 2117 top: 400px;
2118 2118 left: 500px;
2119 2119 display: block;
  2120 +}
  2121 +
  2122 +/*contenttype_href class style is used to stop underline error on a hyperlink in IE*/
  2123 +.contenttype_href
  2124 +{
  2125 + margin-right: 25px;
2120 2126 }
2121 2127 \ No newline at end of file
... ...
templates/ktcore/principals/about.smarty
... ... @@ -67,6 +67,9 @@ Call Sales: +1 415 670-9759
67 67 Artur Kiwa
68 68 </li>
69 69 <li>
  70 + Michael Knight
  71 + </li>
  72 + <li>
70 73 Rogerio Kohler
71 74 </li>
72 75 <li>
... ... @@ -124,9 +127,15 @@ Call Sales: +1 415 670-9759
124 127 Phillip Steinbachs
125 128 </li>
126 129 <li>
  130 + Tahir Tahang
  131 + </li>
  132 + <li>
127 133 Paul Trgina
128 134 </li>
129 135 <li>
  136 + Harry Tsio
  137 + </li>
  138 + <li>
130 139 Bjarte Kalstveit Vebj&oslash;rnsen
131 140 </li>
132 141 <li>
... ...
templates/ktcore/principals/unitadmin.smarty
... ... @@ -27,7 +27,7 @@ membership of groups that belong to the unit.{/i18n}&lt;/p&gt;
27 27 <td>{$oUnit->getName()}</td>
28 28 <td><a href="{addQS}action=editUnit&unit_id={$oUnit->getId()}{/addQS}" class="ktAction ktEdit">{i18n}Edit{/i18n}</a></td>
29 29 <td><a href="{addQS}action=deleteUnit&unit_id={$oUnit->getId()}{/addQS}" class="ktAction ktDelete">{i18n}Delete{/i18n}</a></td>
30   - <td><span class="contenttype folder"><a href="{getUrlForFolder
  30 + <td><span class="contenttype folder"><a class="contenttype_href" href="{getUrlForFolder
31 31 folder=$oUnit->getFolderId()}">{assign var=oFolder
32 32 value=$oUnit->getFolder()}{$oFolder->getName()}</a></span></td>
33 33 </tr>
... ...