mod_item: better exception handling for api use
This commit is contained in:
		| @@ -126,6 +126,8 @@ class Item extends \Zotlabs\Web\Controller { | |||||||
| 			$ret = $this->item_check_service_class($uid,(($_REQUEST['webpage'] == ITEM_TYPE_WEBPAGE) ? true : false)); | 			$ret = $this->item_check_service_class($uid,(($_REQUEST['webpage'] == ITEM_TYPE_WEBPAGE) ? true : false)); | ||||||
| 			if (!$ret['success']) {  | 			if (!$ret['success']) {  | ||||||
| 				notice( t($ret['message']) . EOL) ; | 				notice( t($ret['message']) . EOL) ; | ||||||
|  | 				if($api_source) | ||||||
|  | 					return ( [ 'success' => false, 'message' => 'service class exception' ] );	 | ||||||
| 				if(x($_REQUEST,'return'))  | 				if(x($_REQUEST,'return'))  | ||||||
| 					goaway(z_root() . "/" . $return_path ); | 					goaway(z_root() . "/" . $return_path ); | ||||||
| 				killme(); | 				killme(); | ||||||
| @@ -180,6 +182,8 @@ class Item extends \Zotlabs\Web\Controller { | |||||||
| 	 | 	 | ||||||
| 			if(($r === false) || (! count($r))) { | 			if(($r === false) || (! count($r))) { | ||||||
| 				notice( t('Unable to locate original post.') . EOL); | 				notice( t('Unable to locate original post.') . EOL); | ||||||
|  | 				if($api_source) | ||||||
|  | 					return ( [ 'success' => false, 'message' => 'invalid post id' ] );	 | ||||||
| 				if(x($_REQUEST,'return'))  | 				if(x($_REQUEST,'return'))  | ||||||
| 					goaway(z_root() . "/" . $return_path ); | 					goaway(z_root() . "/" . $return_path ); | ||||||
| 				killme(); | 				killme(); | ||||||
| @@ -214,6 +218,8 @@ class Item extends \Zotlabs\Web\Controller { | |||||||
| 	 | 	 | ||||||
| 			if(! $can_comment) { | 			if(! $can_comment) { | ||||||
| 				notice( t('Permission denied.') . EOL) ; | 				notice( t('Permission denied.') . EOL) ; | ||||||
|  | 				if($api_source) | ||||||
|  | 					return ( [ 'success' => false, 'message' => 'permission denied' ] );	 | ||||||
| 				if(x($_REQUEST,'return'))  | 				if(x($_REQUEST,'return'))  | ||||||
| 					goaway(z_root() . "/" . $return_path ); | 					goaway(z_root() . "/" . $return_path ); | ||||||
| 				killme(); | 				killme(); | ||||||
| @@ -222,6 +228,8 @@ class Item extends \Zotlabs\Web\Controller { | |||||||
| 		else { | 		else { | ||||||
| 			if(! perm_is_allowed($profile_uid,$observer['xchan_hash'],($webpage) ? 'write_pages' : 'post_wall')) { | 			if(! perm_is_allowed($profile_uid,$observer['xchan_hash'],($webpage) ? 'write_pages' : 'post_wall')) { | ||||||
| 				notice( t('Permission denied.') . EOL) ; | 				notice( t('Permission denied.') . EOL) ; | ||||||
|  | 				if($api_source) | ||||||
|  | 					return ( [ 'success' => false, 'message' => 'permission denied' ] );	 | ||||||
| 				if(x($_REQUEST,'return'))  | 				if(x($_REQUEST,'return'))  | ||||||
| 					goaway(z_root() . "/" . $return_path ); | 					goaway(z_root() . "/" . $return_path ); | ||||||
| 				killme(); | 				killme(); | ||||||
| @@ -276,6 +284,8 @@ class Item extends \Zotlabs\Web\Controller { | |||||||
| 	 | 	 | ||||||
| 		if(! $channel) { | 		if(! $channel) { | ||||||
| 			logger("mod_item: no channel."); | 			logger("mod_item: no channel."); | ||||||
|  | 			if($api_source) | ||||||
|  | 				return ( [ 'success' => false, 'message' => 'no channel' ] );	 | ||||||
| 			if(x($_REQUEST,'return'))  | 			if(x($_REQUEST,'return'))  | ||||||
| 				goaway(z_root() . "/" . $return_path ); | 				goaway(z_root() . "/" . $return_path ); | ||||||
| 			killme(); | 			killme(); | ||||||
| @@ -291,6 +301,8 @@ class Item extends \Zotlabs\Web\Controller { | |||||||
| 		} | 		} | ||||||
| 		else { | 		else { | ||||||
| 			logger("mod_item: no owner."); | 			logger("mod_item: no owner."); | ||||||
|  | 			if($api_source) | ||||||
|  | 				return ( [ 'success' => false, 'message' => 'no owner' ] );	 | ||||||
| 			if(x($_REQUEST,'return'))  | 			if(x($_REQUEST,'return'))  | ||||||
| 				goaway(z_root() . "/" . $return_path ); | 				goaway(z_root() . "/" . $return_path ); | ||||||
| 			killme(); | 			killme(); | ||||||
| @@ -433,6 +445,8 @@ class Item extends \Zotlabs\Web\Controller { | |||||||
| 				if($preview) | 				if($preview) | ||||||
| 					killme(); | 					killme(); | ||||||
| 				info( t('Empty post discarded.') . EOL ); | 				info( t('Empty post discarded.') . EOL ); | ||||||
|  | 				if($api_source) | ||||||
|  | 					return ( [ 'success' => false, 'message' => 'no content' ] );	 | ||||||
| 				if(x($_REQUEST,'return'))  | 				if(x($_REQUEST,'return'))  | ||||||
| 					goaway(z_root() . "/" . $return_path ); | 					goaway(z_root() . "/" . $return_path ); | ||||||
| 				killme(); | 				killme(); | ||||||
| @@ -473,6 +487,8 @@ class Item extends \Zotlabs\Web\Controller { | |||||||
| 				} | 				} | ||||||
| 				else { | 				else { | ||||||
| 					notice( t('Executable content type not permitted to this channel.') . EOL); | 					notice( t('Executable content type not permitted to this channel.') . EOL); | ||||||
|  | 					if($api_source) | ||||||
|  | 						return ( [ 'success' => false, 'message' => 'forbidden content type' ] );	 | ||||||
| 					if(x($_REQUEST,'return'))  | 					if(x($_REQUEST,'return'))  | ||||||
| 						goaway(z_root() . "/" . $return_path ); | 						goaway(z_root() . "/" . $return_path ); | ||||||
| 					killme(); | 					killme(); | ||||||
| @@ -863,7 +879,8 @@ class Item extends \Zotlabs\Web\Controller { | |||||||
| 			logger('mod_item: post cancelled by plugin or duplicate suppressed.'); | 			logger('mod_item: post cancelled by plugin or duplicate suppressed.'); | ||||||
| 			if($return_path) | 			if($return_path) | ||||||
| 				goaway(z_root() . "/" . $return_path); | 				goaway(z_root() . "/" . $return_path); | ||||||
| 	 | 			if($api_source) | ||||||
|  | 				return ( [ 'success' => false, 'message' => 'operation cancelled' ] );	 | ||||||
| 			$json = array('cancel' => 1); | 			$json = array('cancel' => 1); | ||||||
| 			$json['reload'] = z_root() . '/' . $_REQUEST['jsreload']; | 			$json['reload'] = z_root() . '/' . $_REQUEST['jsreload']; | ||||||
| 			echo json_encode($json); | 			echo json_encode($json); | ||||||
| @@ -916,6 +933,10 @@ class Item extends \Zotlabs\Web\Controller { | |||||||
| 			if(! $nopush) | 			if(! $nopush) | ||||||
| 				\Zotlabs\Daemon\Master::Summon(array('Notifier', 'edit_post', $post_id)); | 				\Zotlabs\Daemon\Master::Summon(array('Notifier', 'edit_post', $post_id)); | ||||||
| 	 | 	 | ||||||
|  |  | ||||||
|  | 			if($api_source) | ||||||
|  | 				return($x); | ||||||
|  |  | ||||||
| 			if((x($_REQUEST,'return')) && strlen($return_path)) { | 			if((x($_REQUEST,'return')) && strlen($return_path)) { | ||||||
| 				logger('return: ' . $return_path); | 				logger('return: ' . $return_path); | ||||||
| 				goaway(z_root() . "/" . $return_path ); | 				goaway(z_root() . "/" . $return_path ); | ||||||
| @@ -990,8 +1011,11 @@ class Item extends \Zotlabs\Web\Controller { | |||||||
| 		else { | 		else { | ||||||
| 			logger('mod_item: unable to retrieve post that was just stored.'); | 			logger('mod_item: unable to retrieve post that was just stored.'); | ||||||
| 			notice( t('System error. Post not saved.') . EOL); | 			notice( t('System error. Post not saved.') . EOL); | ||||||
| 			goaway(z_root() . "/" . $return_path ); | 			if($return_path) | ||||||
| 			// NOTREACHED | 				goaway(z_root() . "/" . $return_path ); | ||||||
|  | 			if($api_source) | ||||||
|  | 				return ( [ 'success' => false, 'message' => 'system error' ] ); | ||||||
|  | 			killme(); | ||||||
| 		} | 		} | ||||||
| 		 | 		 | ||||||
| 		if(($parent) && ($parent != $post_id)) { | 		if(($parent) && ($parent != $post_id)) { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user