| 1 |
<?php |
| 2 |
|
| 3 |
namespace JFB_Modules\Actions_V2\Update_User\Properties; |
| 4 |
|
| 5 |
use Jet_Form_Builder\Actions\Methods\Abstract_Modifier; |
| 6 |
use Jet_Form_Builder\Actions\Methods\Object_Properties_Collection; |
| 7 |
use Jet_Form_Builder\Classes\Arrayable\Collection; |
| 8 |
use Jet_Form_Builder\Classes\Tools; |
| 9 |
use Jet_Form_Builder\Exceptions\Action_Exception; |
| 10 |
|
| 11 |
// If this file is called directly, abort. |
| 12 |
if ( ! defined( 'WPINC' ) ) { |
| 13 |
die; |
| 14 |
} |
| 15 |
|
| 16 |
class User_Modifier extends Abstract_Modifier { |
| 17 |
|
| 18 |
private $self_promotable_roles = array(); |
| 19 |
|
| 20 |
protected function get_properties(): Object_Properties_Collection { |
| 21 |
return new Object_Properties_Collection( |
| 22 |
array( |
| 23 |
new User_Id_Property(), |
| 24 |
new User_Role_Property(), |
| 25 |
new User_Email_Property(), |
| 26 |
new User_Password_Property(), |
| 27 |
new User_Confirm_Password_Property(), |
| 28 |
new User_Compare_Password_Property(), |
| 29 |
new First_Name_Property(), |
| 30 |
new Last_Name_Property(), |
| 31 |
new User_Url_Property(), |
| 32 |
new User_Meta_Property(), |
| 33 |
new Display_Name_Property(), |
| 34 |
new Description_Property(), |
| 35 |
new Nick_Name_Property(), |
| 36 |
new User_Nicename_Property(), |
| 37 |
) |
| 38 |
); |
| 39 |
} |
| 40 |
|
| 41 |
public function get_actions(): Collection { |
| 42 |
return apply_filters( |
| 43 |
'jet-form-builder/user-modifier/object-actions', |
| 44 |
new Collection( |
| 45 |
array( |
| 46 |
new Update_Action(), |
| 47 |
) |
| 48 |
) |
| 49 |
); |
| 50 |
} |
| 51 |
|
| 52 |
/** |
| 53 |
* @throws Action_Exception |
| 54 |
*/ |
| 55 |
public function run() { |
| 56 |
if ( ! is_user_logged_in() && ! Tools::is_webhook() ) { |
| 57 |
// Only logged in users can edit other users |
| 58 |
throw new Action_Exception( 'internal_error' ); |
| 59 |
} |
| 60 |
|
| 61 |
parent::run(); |
| 62 |
} |
| 63 |
|
| 64 |
public function set_self_promotable_roles( array $roles ): self { |
| 65 |
$roles = array_map( 'strval', $roles ); |
| 66 |
$roles = array_filter( $roles ); |
| 67 |
$roles = array_values( array_unique( $roles ) ); |
| 68 |
|
| 69 |
$this->self_promotable_roles = $roles; |
| 70 |
|
| 71 |
return $this; |
| 72 |
} |
| 73 |
|
| 74 |
public function get_self_promotable_roles(): array { |
| 75 |
return $this->self_promotable_roles; |
| 76 |
} |
| 77 |
} |
| 78 |
|