Commit 34fdd917e5f9e5a1f843b6630e45a4e621ff721e
1 parent
f40e4039
Added auto register to Email Plugin. Added error message return from KTAPIDocum…
…ent if the plugin is not enabled but the document email function is invoked. KTS-4406. KT Email plugin is not enabled by default & no error returned by webservice on attempting to use KT Email plugin Fixed Committed by: Paul Barrett Reviewed by: Jarrett Jordaan
Showing
3 changed files
with
34 additions
and
23 deletions
ktapi/KTAPIDocument.inc.php
| @@ -665,7 +665,8 @@ class KTAPI_Document extends KTAPI_FolderItem | @@ -665,7 +665,8 @@ class KTAPI_Document extends KTAPI_FolderItem | ||
| 665 | } | 665 | } |
| 666 | else | 666 | else |
| 667 | { | 667 | { |
| 668 | - return new PEAR_Error('A document with this title already exists in your chosen folder. Please choose a different folder, or specify a new title for the copied document.'); | 668 | + return new PEAR_Error('A document with this title already exists in your chosen folder. ' |
| 669 | + . 'Please choose a different folder, or specify a new title for the copied document.'); | ||
| 669 | } | 670 | } |
| 670 | } | 671 | } |
| 671 | 672 | ||
| @@ -685,7 +686,8 @@ class KTAPI_Document extends KTAPI_FolderItem | @@ -685,7 +686,8 @@ class KTAPI_Document extends KTAPI_FolderItem | ||
| 685 | } | 686 | } |
| 686 | else | 687 | else |
| 687 | { | 688 | { |
| 688 | - return new PEAR_Error('A document with this filename already exists in your chosen folder. Please choose a different folder, or specify a new filename for the copied document.'); | 689 | + return new PEAR_Error('A document with this filename already exists in your chosen folder. ' |
| 690 | + . 'Please choose a different folder, or specify a new filename for the copied document.'); | ||
| 689 | } | 691 | } |
| 690 | } | 692 | } |
| 691 | 693 | ||
| @@ -806,7 +808,8 @@ class KTAPI_Document extends KTAPI_FolderItem | @@ -806,7 +808,8 @@ class KTAPI_Document extends KTAPI_FolderItem | ||
| 806 | } | 808 | } |
| 807 | if ($clash) | 809 | if ($clash) |
| 808 | { | 810 | { |
| 809 | - return new PEAR_Error('A document with this title already exists in your chosen folder. Please choose a different folder, or specify a new title for the moved document.'); | 811 | + return new PEAR_Error('A document with this title already exists in your chosen folder. ' |
| 812 | + . 'Please choose a different folder, or specify a new title for the moved document.'); | ||
| 810 | } | 813 | } |
| 811 | 814 | ||
| 812 | $filename=$this->document->getFilename(); | 815 | $filename=$this->document->getFilename(); |
| @@ -819,7 +822,8 @@ class KTAPI_Document extends KTAPI_FolderItem | @@ -819,7 +822,8 @@ class KTAPI_Document extends KTAPI_FolderItem | ||
| 819 | } | 822 | } |
| 820 | if ($clash) | 823 | if ($clash) |
| 821 | { | 824 | { |
| 822 | - return new PEAR_Error('A document with this filename already exists in your chosen folder. Please choose a different folder, or specify a new filename for the moved document.'); | 825 | + return new PEAR_Error('A document with this filename already exists in your chosen folder. ' |
| 826 | + . 'Please choose a different folder, or specify a new filename for the moved document.'); | ||
| 823 | } | 827 | } |
| 824 | 828 | ||
| 825 | DBUtil::startTransaction(); | 829 | DBUtil::startTransaction(); |
| @@ -2427,7 +2431,8 @@ class KTAPI_Document extends KTAPI_FolderItem | @@ -2427,7 +2431,8 @@ class KTAPI_Document extends KTAPI_FolderItem | ||
| 2427 | 2431 | ||
| 2428 | /** | 2432 | /** |
| 2429 | * Emails a document as an attachment or hyperlink to a list of users, groups or external email addresses. | 2433 | * Emails a document as an attachment or hyperlink to a list of users, groups or external email addresses. |
| 2430 | - * In the case of external addresses, if a hyperlink is used then a timed download link (via webservices) is sent allowing the recipient a window period in which to download the document. | 2434 | + * In the case of external addresses, if a hyperlink is used then a timed download link (via webservices) is sent |
| 2435 | + * allowing the recipient a window period in which to download the document. | ||
| 2431 | * The period is set through the webservices config option webservice/downloadExpiry. Defaults to 30 minutes. | 2436 | * The period is set through the webservices config option webservice/downloadExpiry. Defaults to 30 minutes. |
| 2432 | * | 2437 | * |
| 2433 | * @author KnowledgeTree Team | 2438 | * @author KnowledgeTree Team |
| @@ -2435,12 +2440,18 @@ class KTAPI_Document extends KTAPI_FolderItem | @@ -2435,12 +2440,18 @@ class KTAPI_Document extends KTAPI_FolderItem | ||
| 2435 | * @param array $members The email recipients - KTPAI_Users, KTAPI_Groups or email addresses | 2440 | * @param array $members The email recipients - KTPAI_Users, KTAPI_Groups or email addresses |
| 2436 | * @param string $comment Content to be appended to the email | 2441 | * @param string $comment Content to be appended to the email |
| 2437 | * @param bool $attachDocument TRUE if document is an attachment | FALSE if using a hyperlink to the document | 2442 | * @param bool $attachDocument TRUE if document is an attachment | FALSE if using a hyperlink to the document |
| 2443 | + * | ||
| 2444 | + * NOTE this function requires that the Email Plugin be active. | ||
| 2445 | + * It seems that it is possible for this to be unintentionally turned off during a plugin re-read. | ||
| 2438 | */ | 2446 | */ |
| 2439 | public function email($members, $comment, $attachDocument = true) | 2447 | public function email($members, $comment, $attachDocument = true) |
| 2440 | { | 2448 | { |
| 2441 | - if (empty($members)) | ||
| 2442 | - { | ||
| 2443 | - return; | 2449 | + // check for active email plugin |
| 2450 | + if (!KTPluginUtil::pluginIsActive('ktstandard.email.plugin')) { | ||
| 2451 | + return new PEAR_Error('Email Plugin is not active'); | ||
| 2452 | + } | ||
| 2453 | + if (empty($members)) { | ||
| 2454 | + return new PEAR_Error('No recipients specified'); | ||
| 2444 | } | 2455 | } |
| 2445 | 2456 | ||
| 2446 | $userIds = array(); | 2457 | $userIds = array(); |
| @@ -2449,16 +2460,13 @@ class KTAPI_Document extends KTAPI_FolderItem | @@ -2449,16 +2460,13 @@ class KTAPI_Document extends KTAPI_FolderItem | ||
| 2449 | 2460 | ||
| 2450 | foreach($members as $member) | 2461 | foreach($members as $member) |
| 2451 | { | 2462 | { |
| 2452 | - if ($member instanceof KTAPI_User) | ||
| 2453 | - { | 2463 | + if ($member instanceof KTAPI_User) { |
| 2454 | $userIds[] = $member->Id; | 2464 | $userIds[] = $member->Id; |
| 2455 | } | 2465 | } |
| 2456 | - elseif ($member instanceof KTAPI_Group) | ||
| 2457 | - { | 2466 | + else if ($member instanceof KTAPI_Group) { |
| 2458 | $groupIds[] = $member->Id; | 2467 | $groupIds[] = $member->Id; |
| 2459 | } | 2468 | } |
| 2460 | - elseif (is_string($member)) | ||
| 2461 | - { | 2469 | + else if (is_string($member)) { |
| 2462 | $emailAddrs[] = $member; | 2470 | $emailAddrs[] = $member; |
| 2463 | } | 2471 | } |
| 2464 | } | 2472 | } |
| @@ -2468,12 +2476,12 @@ class KTAPI_Document extends KTAPI_FolderItem | @@ -2468,12 +2476,12 @@ class KTAPI_Document extends KTAPI_FolderItem | ||
| 2468 | $allowEmailAddresses = $config->get('email/allowEmailAddresses', false); | 2476 | $allowEmailAddresses = $config->get('email/allowEmailAddresses', false); |
| 2469 | 2477 | ||
| 2470 | // if attachments aren't allowed, set $attachDocument to false | 2478 | // if attachments aren't allowed, set $attachDocument to false |
| 2471 | - if(!$allowAttachment){ | 2479 | + if(!$allowAttachment) { |
| 2472 | $attachDocument = false; | 2480 | $attachDocument = false; |
| 2473 | } | 2481 | } |
| 2474 | 2482 | ||
| 2475 | // If sending to external email addresses is not allowed - set array of external recipients to empty | 2483 | // If sending to external email addresses is not allowed - set array of external recipients to empty |
| 2476 | - if(!$allowEmailAddresses){ | 2484 | + if(!$allowEmailAddresses) { |
| 2477 | $emailAddrs = array(); | 2485 | $emailAddrs = array(); |
| 2478 | } | 2486 | } |
| 2479 | 2487 | ||
| @@ -2482,19 +2490,16 @@ class KTAPI_Document extends KTAPI_FolderItem | @@ -2482,19 +2490,16 @@ class KTAPI_Document extends KTAPI_FolderItem | ||
| 2482 | $listEmails = array(); | 2490 | $listEmails = array(); |
| 2483 | 2491 | ||
| 2484 | sendGroupEmails($groupIds, $userEmails, $emailErrors); | 2492 | sendGroupEmails($groupIds, $userEmails, $emailErrors); |
| 2485 | - | ||
| 2486 | sendUserEmails($userIds, $userEmails, $emailErrors); | 2493 | sendUserEmails($userIds, $userEmails, $emailErrors); |
| 2487 | 2494 | ||
| 2488 | - if ($attachDocument) | ||
| 2489 | - { | 2495 | + if ($attachDocument) { |
| 2490 | sendManualEmails($emailAddrs, $userEmails, $emailErrors); | 2496 | sendManualEmails($emailAddrs, $userEmails, $emailErrors); |
| 2491 | } | 2497 | } |
| 2492 | - else | ||
| 2493 | - { | 2498 | + else { |
| 2494 | sendExternalEmails($emailAddrs, $this->documentid, $this->get_title(), $comment, $emailErrors); | 2499 | sendExternalEmails($emailAddrs, $this->documentid, $this->get_title(), $comment, $emailErrors); |
| 2495 | } | 2500 | } |
| 2496 | 2501 | ||
| 2497 | - if(empty($userEmails)){ | 2502 | + if(empty($userEmails)) { |
| 2498 | return; | 2503 | return; |
| 2499 | } | 2504 | } |
| 2500 | 2505 |
ktapi/ktapi.inc.php
| @@ -2678,7 +2678,12 @@ class KTAPI | @@ -2678,7 +2678,12 @@ class KTAPI | ||
| 2678 | } | 2678 | } |
| 2679 | } | 2679 | } |
| 2680 | 2680 | ||
| 2681 | - $document->email($recipients, $content, $attach); | 2681 | + $result = $document->email($recipients, $content, $attach); |
| 2682 | + | ||
| 2683 | + if (PEAR::isError($result)) { | ||
| 2684 | + $response['message'] = $result->getMessage(); | ||
| 2685 | + return $response; | ||
| 2686 | + } | ||
| 2682 | 2687 | ||
| 2683 | $response['status_code'] = 0; | 2688 | $response['status_code'] = 0; |
| 2684 | return $response; | 2689 | return $response; |
plugins/ktstandard/KTEmail.php
| @@ -580,6 +580,7 @@ class KTDocumentEmailAction extends KTDocumentAction { | @@ -580,6 +580,7 @@ class KTDocumentEmailAction extends KTDocumentAction { | ||
| 580 | 580 | ||
| 581 | class KTEmailPlugin extends KTPlugin { | 581 | class KTEmailPlugin extends KTPlugin { |
| 582 | var $sNamespace = 'ktstandard.email.plugin'; | 582 | var $sNamespace = 'ktstandard.email.plugin'; |
| 583 | + var $autoRegister = true; | ||
| 583 | 584 | ||
| 584 | function KTEmailPlugin($sFilename = null) { | 585 | function KTEmailPlugin($sFilename = null) { |
| 585 | $res = parent::KTPlugin($sFilename); | 586 | $res = parent::KTPlugin($sFilename); |