Commit 5ee725cd89865baf4e69fea2e0d1d201821e2807
1 parent
12398b72
KTS-2718
"Tags added to documents when the Tag Cloud add-in is disabled does not show in that Tag Cloud Dashlet once it has been enabled again." Fixed. Moved tag cloud trigger into core so it isn't dependant on the plugin. Committed By: Jonathan Byrne Reviewed By: Kevin Fourie git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@7772 c91229c3-7414-0410-bfa2-8a42b809f60b
Showing
3 changed files
with
254 additions
and
214 deletions
plugins/ktcore/KTCorePlugin.php
| @@ -158,6 +158,11 @@ class KTCorePlugin extends KTPlugin { | @@ -158,6 +158,11 @@ class KTCorePlugin extends KTPlugin { | ||
| 158 | $this->registerTrigger('edit', 'postValidate', 'SavedSearchSubscriptionTrigger', 'ktcore.search2.savedsearch.subscription.edit', KT_DIR . '/plugins/search2/Search2Triggers.php'); | 158 | $this->registerTrigger('edit', 'postValidate', 'SavedSearchSubscriptionTrigger', 'ktcore.search2.savedsearch.subscription.edit', KT_DIR . '/plugins/search2/Search2Triggers.php'); |
| 159 | $this->registerTrigger('add', 'postValidate', 'SavedSearchSubscriptionTrigger', 'ktcore.search2.savedsearch.subscription.add', KT_DIR . '/plugins/search2/Search2Triggers.php'); | 159 | $this->registerTrigger('add', 'postValidate', 'SavedSearchSubscriptionTrigger', 'ktcore.search2.savedsearch.subscription.add', KT_DIR . '/plugins/search2/Search2Triggers.php'); |
| 160 | $this->registerTrigger('discussion', 'postValidate', 'SavedSearchSubscriptionTrigger', 'ktcore.search2.savedsearch.subscription.discussion', KT_DIR . '/plugins/search2/Search2Triggers.php'); | 160 | $this->registerTrigger('discussion', 'postValidate', 'SavedSearchSubscriptionTrigger', 'ktcore.search2.savedsearch.subscription.discussion', KT_DIR . '/plugins/search2/Search2Triggers.php'); |
| 161 | + | ||
| 162 | + //Tag Cloud Triggers | ||
| 163 | + $this->registerTrigger('add', 'postValidate', 'KTAddDocumentTrigger', 'ktcore.triggers.tagcloud.add', KT_DIR.'/plugins/tagcloud/TagCloudTriggers.php'); | ||
| 164 | + $this->registerTrigger('edit', 'postValidate', 'KTEditDocumentTrigger', 'ktcore.triggers.tagcloud.edit', KT_DIR.'/plugins/tagcloud/TagCloudTriggers.php'); | ||
| 165 | + | ||
| 161 | 166 | ||
| 162 | // widgets | 167 | // widgets |
| 163 | $this->registerWidget('KTCoreHiddenWidget', 'ktcore.widgets.hidden', 'KTWidgets.php'); | 168 | $this->registerWidget('KTCoreHiddenWidget', 'ktcore.widgets.hidden', 'KTWidgets.php'); |
plugins/tagcloud/TagCloudPlugin.php
| 1 | <?php | 1 | <?php |
| 2 | 2 | ||
| 3 | /* | 3 | /* |
| 4 | - * $Id:$ | 4 | + * $Id$ |
| 5 | * | 5 | * |
| 6 | * KnowledgeTree Open Source Edition | 6 | * KnowledgeTree Open Source Edition |
| 7 | * Document Management Made Simple | 7 | * Document Management Made Simple |
| @@ -70,10 +70,7 @@ require_once(KT_LIB_DIR . '/templating/templating.inc.php'); | @@ -70,10 +70,7 @@ require_once(KT_LIB_DIR . '/templating/templating.inc.php'); | ||
| 70 | $this->registerCriterion('TagCloudCriterion', 'ktcore.criteria.tagcloud', KT_LIB_DIR . '/browse/Criteria.inc'); | 70 | $this->registerCriterion('TagCloudCriterion', 'ktcore.criteria.tagcloud', KT_LIB_DIR . '/browse/Criteria.inc'); |
| 71 | $this->registerDashlet('TagCloudDashlet', 'ktcore.tagcloud.feed.dashlet', 'TagCloudDashlet.php'); | 71 | $this->registerDashlet('TagCloudDashlet', 'ktcore.tagcloud.feed.dashlet', 'TagCloudDashlet.php'); |
| 72 | $this->registerPage('TagCloudRedirection', 'TagCloudRedirectPage', __FILE__); | 72 | $this->registerPage('TagCloudRedirection', 'TagCloudRedirectPage', __FILE__); |
| 73 | - $this->registerTrigger('add', 'postValidate', 'KTAddDocumentTrigger', | ||
| 74 | - 'ktcore.triggers.tagcloud.add'); | ||
| 75 | - $this->registerTrigger('edit', 'postValidate', 'KTEditDocumentTrigger', | ||
| 76 | - 'ktcore.triggers.tagcloud.edit'); | 73 | + |
| 77 | 74 | ||
| 78 | // Check if the tagcloud fielset entry exists, if not, create it | 75 | // Check if the tagcloud fielset entry exists, if not, create it |
| 79 | if(!TagCloudPlugin::tagFieldsetExists()){ | 76 | if(!TagCloudPlugin::tagFieldsetExists()){ |
| @@ -192,213 +189,4 @@ require_once(KT_LIB_DIR . '/templating/templating.inc.php'); | @@ -192,213 +189,4 @@ require_once(KT_LIB_DIR . '/templating/templating.inc.php'); | ||
| 192 | $oPluginRegistry =& KTPluginRegistry::getSingleton(); | 189 | $oPluginRegistry =& KTPluginRegistry::getSingleton(); |
| 193 | $oPluginRegistry->registerPlugin('TagCloudPlugin', 'ktcore.tagcloud.plugin', __FILE__); | 190 | $oPluginRegistry->registerPlugin('TagCloudPlugin', 'ktcore.tagcloud.plugin', __FILE__); |
| 194 | 191 | ||
| 195 | -/** | ||
| 196 | - * Trigger for document add (postValidate) | ||
| 197 | - * | ||
| 198 | - */ | ||
| 199 | -class KTAddDocumentTrigger { | ||
| 200 | - var $aInfo = null; | ||
| 201 | - /** | ||
| 202 | - * function to set the info for the trigger | ||
| 203 | - * | ||
| 204 | - * @param array $aInfo | ||
| 205 | - */ | ||
| 206 | - function setInfo(&$aInfo) { | ||
| 207 | - $this->aInfo =& $aInfo; | ||
| 208 | - } | ||
| 209 | - | ||
| 210 | - /** | ||
| 211 | - * postValidate method for trigger | ||
| 212 | - * | ||
| 213 | - * @return unknown | ||
| 214 | - */ | ||
| 215 | - function postValidate() { | ||
| 216 | - global $default; | ||
| 217 | - $oDocument =& $this->aInfo['document']; | ||
| 218 | - $aMeta = & $this->aInfo['aOptions']; | ||
| 219 | - | ||
| 220 | - $iDocId = $oDocument->getID(); | ||
| 221 | - | ||
| 222 | - // get tag id from document_fields table where name = Tag | ||
| 223 | - $sQuery = 'SELECT df.id AS id FROM document_fields AS df ' . | ||
| 224 | - 'WHERE df.name = \'Tag\''; | ||
| 225 | - | ||
| 226 | - $sTags = DBUtil::getOneResultKey(array($sQuery), 'id'); | ||
| 227 | - if (PEAR::isError($sTags)) { | ||
| 228 | - // XXX: log error | ||
| 229 | - return false; | ||
| 230 | - } | ||
| 231 | - $tagString = ''; | ||
| 232 | - // add tags | ||
| 233 | - if ($sTags) { | ||
| 234 | - if (count($aMeta['metadata']) > 0) | ||
| 235 | - { | ||
| 236 | - foreach($aMeta['metadata'] as $aMetaData) | ||
| 237 | - { | ||
| 238 | - | ||
| 239 | - $oProxy = $aMetaData[0]; | ||
| 240 | - if($oProxy->iId == $sTags) | ||
| 241 | - { | ||
| 242 | - $tagString = $aMetaData[1]; | ||
| 243 | - } | ||
| 244 | - } | ||
| 245 | - } | ||
| 246 | - if($tagString != ''){ | ||
| 247 | - $words_table = KTUtil::getTableName('tag_words'); | ||
| 248 | - $tagString = str_replace(' ', '', $tagString); | ||
| 249 | - $tags = explode(',',$tagString); | ||
| 250 | - | ||
| 251 | - $aTagIds = array(); | ||
| 252 | - | ||
| 253 | - foreach($tags as $sTag) | ||
| 254 | - { | ||
| 255 | - $sTag=strtolower(trim($sTag)); | ||
| 256 | - | ||
| 257 | - $res = DBUtil::getOneResult(array("SELECT id FROM $words_table WHERE tag = ?", array($sTag))); | ||
| 258 | - | ||
| 259 | - if (PEAR::isError($res)) { | ||
| 260 | - return $res; | ||
| 261 | - } | ||
| 262 | - | ||
| 263 | - if (is_null($res)) | ||
| 264 | - { | ||
| 265 | - $id = & DBUtil::autoInsert($words_table, array('tag'=>$sTag)); | ||
| 266 | - $aTagIds[$sTag] = $id; | ||
| 267 | - } | ||
| 268 | - else | ||
| 269 | - { | ||
| 270 | - $aTagIds[$sTag] = $res['id']; | ||
| 271 | - } | ||
| 272 | - } | ||
| 273 | - | ||
| 274 | - $doc_tags = KTUtil::getTableName('document_tags'); | ||
| 275 | - | ||
| 276 | - foreach($aTagIds as $sTag=>$tagid) | ||
| 277 | - { | ||
| 278 | - DBUtil::autoInsert($doc_tags, array( | ||
| 279 | - | ||
| 280 | - 'document_id'=>$iDocId, | ||
| 281 | - 'tag_id'=>$tagid), | ||
| 282 | - array('noid'=>true)); | ||
| 283 | - } | ||
| 284 | - } | ||
| 285 | - } | ||
| 286 | - } | ||
| 287 | -} | ||
| 288 | - | ||
| 289 | -/** | ||
| 290 | - * Trigger for document edit (postValidate) | ||
| 291 | - * | ||
| 292 | - */ | ||
| 293 | -class KTEditDocumentTrigger { | ||
| 294 | - var $aInfo = null; | ||
| 295 | - /** | ||
| 296 | - * function to set the info for the trigger | ||
| 297 | - * | ||
| 298 | - * @param array $aInfo | ||
| 299 | - */ | ||
| 300 | - function setInfo(&$aInfo) { | ||
| 301 | - $this->aInfo =& $aInfo; | ||
| 302 | - } | ||
| 303 | - | ||
| 304 | - /** | ||
| 305 | - * postValidate method for trigger | ||
| 306 | - * | ||
| 307 | - * @return unknown | ||
| 308 | - */ | ||
| 309 | - function postValidate() { | ||
| 310 | - global $default; | ||
| 311 | - $oDocument =& $this->aInfo['document']; | ||
| 312 | - $aMeta = & $this->aInfo['aOptions']; | ||
| 313 | - // get document id | ||
| 314 | - $iDocId = $oDocument->getID(); | ||
| 315 | - | ||
| 316 | - // get all tags that are linked to the document | ||
| 317 | - $sQuery = 'SELECT tw.id FROM tag_words AS tw, document_tags AS dt, documents AS d ' . | ||
| 318 | - 'WHERE dt.tag_id = tw.id ' . | ||
| 319 | - 'AND dt.document_id = d.id ' . | ||
| 320 | - 'AND d.id = ?'; | ||
| 321 | - $aParams = array($iDocId); | ||
| 322 | - $aTagId = DBUtil::getResultArray(array($sQuery, $aParams)); | ||
| 323 | - if (PEAR::isError($aTagId)) { | ||
| 324 | - // XXX: log error | ||
| 325 | - return false; | ||
| 326 | - } | ||
| 327 | - // if there are any related tags proceed | ||
| 328 | - if ($aTagId) { | ||
| 329 | - // delete all entries from document_tags table for the document | ||
| 330 | - $sQuery = 'DELETE FROM document_tags ' . | ||
| 331 | - 'WHERE document_id = ?'; | ||
| 332 | - $aParams = array($iDocId); | ||
| 333 | - $removed = DBUtil::runQuery(array($sQuery, $aParams)); | ||
| 334 | - if (PEAR::isError($removed)) { | ||
| 335 | - // XXX: log error | ||
| 336 | - return false; | ||
| 337 | - } | ||
| 338 | - } | ||
| 339 | - // proceed to add the tags as per normaly | ||
| 340 | - $sQuery = 'SELECT df.id AS id FROM document_fields AS df ' . | ||
| 341 | - 'WHERE df.name = \'Tag\''; | ||
| 342 | - | ||
| 343 | - $sTags = DBUtil::getOneResultKey(array($sQuery), 'id'); | ||
| 344 | - if (PEAR::isError($sTags)) { | ||
| 345 | - // XXX: log error | ||
| 346 | - return false; | ||
| 347 | - } | ||
| 348 | - $tagString = ''; | ||
| 349 | - if ($sTags) { | ||
| 350 | - // it is actually correct using $aMeta. It is different to the add trigger above... | ||
| 351 | - if (count($aMeta) > 0) | ||
| 352 | - { | ||
| 353 | - foreach($aMeta as $aMetaData) | ||
| 354 | - { | ||
| 355 | - $oProxy = $aMetaData[0]; | ||
| 356 | - if($oProxy->iId == $sTags) | ||
| 357 | - { | ||
| 358 | - $tagString = $aMetaData[1]; | ||
| 359 | - break; | ||
| 360 | - } | ||
| 361 | - } | ||
| 362 | - } | ||
| 363 | - if($tagString != ''){ | ||
| 364 | - $words_table = KTUtil::getTableName('tag_words'); | ||
| 365 | - $tagString = str_replace(' ', ' ', $tagString); | ||
| 366 | - $tags = explode(',',$tagString); | ||
| 367 | - | ||
| 368 | - $aTagIds = array(); | ||
| 369 | - | ||
| 370 | - foreach($tags as $sTag) | ||
| 371 | - { | ||
| 372 | - $sTag=strtolower(trim($sTag)); | ||
| 373 | - | ||
| 374 | - $res = DBUtil::getOneResult(array("SELECT id FROM $words_table WHERE tag = ?", array($sTag))); | ||
| 375 | - | ||
| 376 | - if (PEAR::isError($res)) { | ||
| 377 | - return $res; | ||
| 378 | - } | ||
| 379 | - | ||
| 380 | - if (is_null($res)) | ||
| 381 | - { | ||
| 382 | - $id = & DBUtil::autoInsert($words_table, array('tag'=>$sTag)); | ||
| 383 | - $aTagIds[$sTag] = $id; | ||
| 384 | - } | ||
| 385 | - else | ||
| 386 | - { | ||
| 387 | - $aTagIds[$sTag] = $res['id']; | ||
| 388 | - } | ||
| 389 | - } | ||
| 390 | - | ||
| 391 | - $doc_tags = KTUtil::getTableName('document_tags'); | ||
| 392 | - | ||
| 393 | - foreach($aTagIds as $sTag=>$tagid) | ||
| 394 | - { | ||
| 395 | - DBUtil::autoInsert($doc_tags, array( | ||
| 396 | - 'document_id'=>$iDocId, | ||
| 397 | - 'tag_id'=>$tagid), | ||
| 398 | - array('noid'=>true)); | ||
| 399 | - } | ||
| 400 | - } | ||
| 401 | - } | ||
| 402 | - } | ||
| 403 | -} | ||
| 404 | ?> | 192 | ?> |
plugins/tagcloud/TagCloudTriggers.php
0 โ 100644
| 1 | +<?php | ||
| 2 | +/* | ||
| 3 | + * $Id: $ | ||
| 4 | + * | ||
| 5 | + * KnowledgeTree Open Source Edition | ||
| 6 | + * Document Management Made Simple | ||
| 7 | + * Copyright (C) 2004 - 2007 The Jam Warehouse Software (Pty) Limited | ||
| 8 | + * | ||
| 9 | + * This program is free software; you can redistribute it and/or modify it under | ||
| 10 | + * the terms of the GNU General Public License version 3 as published by the | ||
| 11 | + * Free Software Foundation. | ||
| 12 | + * | ||
| 13 | + * This program is distributed in the hope that it will be useful, but WITHOUT | ||
| 14 | + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | ||
| 15 | + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more | ||
| 16 | + * details. | ||
| 17 | + * | ||
| 18 | + * You should have received a copy of the GNU General Public License | ||
| 19 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
| 20 | + * | ||
| 21 | + * You can contact The Jam Warehouse Software (Pty) Limited, Unit 1, Tramber Place, | ||
| 22 | + * Blake Street, Observatory, 7925 South Africa. or email info@knowledgetree.com. | ||
| 23 | + * | ||
| 24 | + * The interactive user interfaces in modified source and object code versions | ||
| 25 | + * of this program must display Appropriate Legal Notices, as required under | ||
| 26 | + * Section 5 of the GNU General Public License version 3. | ||
| 27 | + * | ||
| 28 | + * In accordance with Section 7(b) of the GNU General Public License version 3, | ||
| 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 | ||
| 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. | ||
| 34 | + * Contributor( s): ______________________________________ | ||
| 35 | + * | ||
| 36 | + */ | ||
| 37 | +/** | ||
| 38 | + * Trigger for document add (postValidate) | ||
| 39 | + * | ||
| 40 | + */ | ||
| 41 | +class KTAddDocumentTrigger { | ||
| 42 | + var $aInfo = null; | ||
| 43 | + /** | ||
| 44 | + * function to set the info for the trigger | ||
| 45 | + * | ||
| 46 | + * @param array $aInfo | ||
| 47 | + */ | ||
| 48 | + function setInfo(&$aInfo) { | ||
| 49 | + $this->aInfo =& $aInfo; | ||
| 50 | + } | ||
| 51 | + | ||
| 52 | + /** | ||
| 53 | + * postValidate method for trigger | ||
| 54 | + * | ||
| 55 | + * @return unknown | ||
| 56 | + */ | ||
| 57 | + function postValidate() { | ||
| 58 | + global $default; | ||
| 59 | + $oDocument =& $this->aInfo['document']; | ||
| 60 | + $aMeta = & $this->aInfo['aOptions']; | ||
| 61 | + | ||
| 62 | + $iDocId = $oDocument->getID(); | ||
| 63 | + | ||
| 64 | + // get tag id from document_fields table where name = Tag | ||
| 65 | + $sQuery = 'SELECT df.id AS id FROM document_fields AS df ' . | ||
| 66 | + 'WHERE df.name = \'Tag\''; | ||
| 67 | + | ||
| 68 | + $sTags = DBUtil::getOneResultKey(array($sQuery), 'id'); | ||
| 69 | + if (PEAR::isError($sTags)) { | ||
| 70 | + // XXX: log error | ||
| 71 | + return false; | ||
| 72 | + } | ||
| 73 | + $tagString = ''; | ||
| 74 | + // add tags | ||
| 75 | + if ($sTags) { | ||
| 76 | + if (count($aMeta['metadata']) > 0) | ||
| 77 | + { | ||
| 78 | + foreach($aMeta['metadata'] as $aMetaData) | ||
| 79 | + { | ||
| 80 | + | ||
| 81 | + $oProxy = $aMetaData[0]; | ||
| 82 | + if($oProxy->iId == $sTags) | ||
| 83 | + { | ||
| 84 | + $tagString = $aMetaData[1]; | ||
| 85 | + } | ||
| 86 | + } | ||
| 87 | + } | ||
| 88 | + if($tagString != ''){ | ||
| 89 | + $words_table = KTUtil::getTableName('tag_words'); | ||
| 90 | + $tagString = str_replace(' ', '', $tagString); | ||
| 91 | + $tags = explode(',',$tagString); | ||
| 92 | + | ||
| 93 | + $aTagIds = array(); | ||
| 94 | + | ||
| 95 | + foreach($tags as $sTag) | ||
| 96 | + { | ||
| 97 | + $sTag=strtolower(trim($sTag)); | ||
| 98 | + | ||
| 99 | + $res = DBUtil::getOneResult(array("SELECT id FROM $words_table WHERE tag = ?", array($sTag))); | ||
| 100 | + | ||
| 101 | + if (PEAR::isError($res)) { | ||
| 102 | + return $res; | ||
| 103 | + } | ||
| 104 | + | ||
| 105 | + if (is_null($res)) | ||
| 106 | + { | ||
| 107 | + $id = & DBUtil::autoInsert($words_table, array('tag'=>$sTag)); | ||
| 108 | + $aTagIds[$sTag] = $id; | ||
| 109 | + } | ||
| 110 | + else | ||
| 111 | + { | ||
| 112 | + $aTagIds[$sTag] = $res['id']; | ||
| 113 | + } | ||
| 114 | + } | ||
| 115 | + | ||
| 116 | + $doc_tags = KTUtil::getTableName('document_tags'); | ||
| 117 | + | ||
| 118 | + foreach($aTagIds as $sTag=>$tagid) | ||
| 119 | + { | ||
| 120 | + DBUtil::autoInsert($doc_tags, array( | ||
| 121 | + | ||
| 122 | + 'document_id'=>$iDocId, | ||
| 123 | + 'tag_id'=>$tagid), | ||
| 124 | + array('noid'=>true)); | ||
| 125 | + } | ||
| 126 | + } | ||
| 127 | + } | ||
| 128 | + } | ||
| 129 | +} | ||
| 130 | + | ||
| 131 | + | ||
| 132 | +/** | ||
| 133 | + * Trigger for document edit (postValidate) | ||
| 134 | + * | ||
| 135 | + */ | ||
| 136 | +class KTEditDocumentTrigger { | ||
| 137 | + var $aInfo = null; | ||
| 138 | + /** | ||
| 139 | + * function to set the info for the trigger | ||
| 140 | + * | ||
| 141 | + * @param array $aInfo | ||
| 142 | + */ | ||
| 143 | + function setInfo(&$aInfo) { | ||
| 144 | + $this->aInfo =& $aInfo; | ||
| 145 | + } | ||
| 146 | + | ||
| 147 | + /** | ||
| 148 | + * postValidate method for trigger | ||
| 149 | + * | ||
| 150 | + * @return unknown | ||
| 151 | + */ | ||
| 152 | + function postValidate() { | ||
| 153 | + global $default; | ||
| 154 | + $oDocument =& $this->aInfo['document']; | ||
| 155 | + $aMeta = & $this->aInfo['aOptions']; | ||
| 156 | + // get document id | ||
| 157 | + $iDocId = $oDocument->getID(); | ||
| 158 | + | ||
| 159 | + // get all tags that are linked to the document | ||
| 160 | + $sQuery = 'SELECT tw.id FROM tag_words AS tw, document_tags AS dt, documents AS d ' . | ||
| 161 | + 'WHERE dt.tag_id = tw.id ' . | ||
| 162 | + 'AND dt.document_id = d.id ' . | ||
| 163 | + 'AND d.id = ?'; | ||
| 164 | + $aParams = array($iDocId); | ||
| 165 | + $aTagId = DBUtil::getResultArray(array($sQuery, $aParams)); | ||
| 166 | + if (PEAR::isError($aTagId)) { | ||
| 167 | + // XXX: log error | ||
| 168 | + return false; | ||
| 169 | + } | ||
| 170 | + // if there are any related tags proceed | ||
| 171 | + if ($aTagId) { | ||
| 172 | + // delete all entries from document_tags table for the document | ||
| 173 | + $sQuery = 'DELETE FROM document_tags ' . | ||
| 174 | + 'WHERE document_id = ?'; | ||
| 175 | + $aParams = array($iDocId); | ||
| 176 | + $removed = DBUtil::runQuery(array($sQuery, $aParams)); | ||
| 177 | + if (PEAR::isError($removed)) { | ||
| 178 | + // XXX: log error | ||
| 179 | + return false; | ||
| 180 | + } | ||
| 181 | + } | ||
| 182 | + // proceed to add the tags as per normaly | ||
| 183 | + $sQuery = 'SELECT df.id AS id FROM document_fields AS df ' . | ||
| 184 | + 'WHERE df.name = \'Tag\''; | ||
| 185 | + | ||
| 186 | + $sTags = DBUtil::getOneResultKey(array($sQuery), 'id'); | ||
| 187 | + if (PEAR::isError($sTags)) { | ||
| 188 | + // XXX: log error | ||
| 189 | + return false; | ||
| 190 | + } | ||
| 191 | + $tagString = ''; | ||
| 192 | + if ($sTags) { | ||
| 193 | + // it is actually correct using $aMeta. It is different to the add trigger above... | ||
| 194 | + if (count($aMeta) > 0) | ||
| 195 | + { | ||
| 196 | + foreach($aMeta as $aMetaData) | ||
| 197 | + { | ||
| 198 | + $oProxy = $aMetaData[0]; | ||
| 199 | + if($oProxy->iId == $sTags) | ||
| 200 | + { | ||
| 201 | + $tagString = $aMetaData[1]; | ||
| 202 | + break; | ||
| 203 | + } | ||
| 204 | + } | ||
| 205 | + } | ||
| 206 | + if($tagString != ''){ | ||
| 207 | + $words_table = KTUtil::getTableName('tag_words'); | ||
| 208 | + $tagString = str_replace(' ', ' ', $tagString); | ||
| 209 | + $tags = explode(',',$tagString); | ||
| 210 | + | ||
| 211 | + $aTagIds = array(); | ||
| 212 | + | ||
| 213 | + foreach($tags as $sTag) | ||
| 214 | + { | ||
| 215 | + $sTag=strtolower(trim($sTag)); | ||
| 216 | + | ||
| 217 | + $res = DBUtil::getOneResult(array("SELECT id FROM $words_table WHERE tag = ?", array($sTag))); | ||
| 218 | + | ||
| 219 | + if (PEAR::isError($res)) { | ||
| 220 | + return $res; | ||
| 221 | + } | ||
| 222 | + | ||
| 223 | + if (is_null($res)) | ||
| 224 | + { | ||
| 225 | + $id = & DBUtil::autoInsert($words_table, array('tag'=>$sTag)); | ||
| 226 | + $aTagIds[$sTag] = $id; | ||
| 227 | + } | ||
| 228 | + else | ||
| 229 | + { | ||
| 230 | + $aTagIds[$sTag] = $res['id']; | ||
| 231 | + } | ||
| 232 | + } | ||
| 233 | + | ||
| 234 | + $doc_tags = KTUtil::getTableName('document_tags'); | ||
| 235 | + | ||
| 236 | + foreach($aTagIds as $sTag=>$tagid) | ||
| 237 | + { | ||
| 238 | + DBUtil::autoInsert($doc_tags, array( | ||
| 239 | + 'document_id'=>$iDocId, | ||
| 240 | + 'tag_id'=>$tagid), | ||
| 241 | + array('noid'=>true)); | ||
| 242 | + } | ||
| 243 | + } | ||
| 244 | + } | ||
| 245 | + } | ||
| 246 | +} | ||
| 247 | +?> | ||
| 0 | \ No newline at end of file | 248 | \ No newline at end of file |