�PNG  IHDR22?�� pHYs  �� OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*! J�!��Q�EEȠ�����Q, � ��!���������{�kּ������>���� �H3Q5� �B�������.@� $p�d!s�#�~<<+"��x� �M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH���� � 0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4���������x����6��_-��"bb���ϫp@�t~��,/��;�m��%�h^ �u��f�@����W�p�~<�5�j>{�-�]c�K'Xt����o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A��,���� �`6�B$��BB d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(�� A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=� �C��7�F� �dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8, �c˱"� ���V����cϱw�E� 6wB aAHXLXN�H� $4� 7 �Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[ �b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w ��Ljg(�gw��L�Ӌ�T071���oUX*�*|�� �J�&�*/T����ު U�U�T��^S}�FU3S� Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k ��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN �(���~���)�)�4L�1e\k����X�H�Q�G�6������E�Y��A�J'\'Gg����S�Sݧ �M=:��.�k���Dw�n��^��Lo��y���}/�T�m���G X� $� �<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��= ���Z~s�r:V:ޚΜ�?}����/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z���������ۯ�6�i�ܟ�4�)�Y3s���C�Q��? ��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�������!h�쐭!��Α�i�P~���a�a��~ '���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl������� �{�/�]py�����.,:�@L�N8��A*��%�w%� y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y- �B��TZ(�*�geWf�͉�9���+��̳�ې7�����ᒶ��KW-X潬j9�������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n �ڴ �V����E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa��n��{��4���[���>ɾ�UUM�f�e�I���?�������m]�Nmq����#�׹���=TR��+�G�����w- 6 U����#pDy��� �� :�v�{���vg/jB��F�S��[b[�O�>����z�G��499�?r����C�d�&����ˮ/~�����јѡ�򗓿m|������������x31^�V���w�w��O�| (�h���SЧ��������c3-� cHRMz%������u0�`:�o�_�F5IDATx��ytUս�?�;���fN$$��@B�!�k��� -*�gE���j�O�kQ�ʠ`U�B_ �AÐ0%�Ȕ�@r3ޛ;߳��$�@��v����^�s����������$��ߢ !�W��5�̱'-٘������4�>�Rƫ$�G��0U�H}�_ _� #��k�MJ/=�9Du *ڲ�k�PQ;0��j|�*�$�^컂脛y���>�z×� B��� ��(�:$�ʔ_�6��C!B����MVx��a��ζyY����j��ƋY2�9�F�{r��r�딟F��Q��hY6��� x��[l��RC��������nt@��;P��3��� F�w��7��:�P���ɋ'���mj���Bƪ�$�Q�L��y��߷g��\���z����v5�p�v$�v櫻�`6~K �Y�X����,�:��"�o�e0II"(��,������l_�C���/4�+f�E�!q��:����u����c��樼.UE�@� �]K�W���$-�h]�JG���Dz)�`��.�A/ ���mᏣc�3jK� �!�>���$�Q�!�_�? \�C2(E �M$Z I{�U���s�ǣ���=��@Բe ޻��W�����@ �w����}�9v,)��.}*|"�s��di���,���G�]W�AC�������|<����[��ߕ������K�*�G nߴ!��‹��J�!��6(L�a)��Am��������;adf��:�xm��nh�;֦I��(���o�C~ډa?�=��s����h��E������xp����)���_���t��W�����´;8���`dz=(��@@�+,�;�`�fhl��XȌ�3,uI�~z(J����� �ZX�A����H'�À�㜦�82|��a�n�z2��I���� ���EY�h�ε<�0�q�{��C��v�˅��?"@��χ�x�WS+��N�~�KQ�J�8ل�� _.W��� !TU{�����,��"�� �;�������HI S� ��))�o�1�H�D� ���� (� ;����"Ҕ��,���� �F=���O��&�Ph>�`���y��߲ &S��P�<��'��1s�1cĂ�N����2)����@�u��tv��<�+�-&�����h��[!FSG���' � z z0��<����8d&�����E0�,��<��"!P�b4��� �{S�����X����.�囤���T��hEF��X�q0"-<����h���]�Py*����F⩍��@v�˂�Y08�� .q��a��s����(!<̫1�3�L�H��7sYW�`��qtu�\7��?�@�Y�� %Ka�x�GZ�*W�P��y�����N0r9��Z�c�%���q,��k�����!!,��>���IB��� �x1�Xu�Y���v-���ֺ��N������JP��a�2`�e5��w��u;�6�i���̃��(K���ťa��(l51��JL��O'%���]���ٖ뿉!��{*�p+f ���i8��D�ȑ���ܩ�M��V��ӟz��x�7Z�1i}�^͜���6e����x��)u�d�ˏ�V�eG�\�X1�����=n�U'�~Y����L�\,�(d!x ,�:�TW8� M`r���@��r+v�Q0��>^;˴�VbF��('����� �*O��i��j�Ӆ����^�S3&� ���{������.ی�� N;��NU%d0�Ce\r"�C�b��&t7N�7��� �ȪD�[%l�۪�$��'m?�A9tI�9>��NVL ��� 6v~M�����ъ�B���0����9$&=ώm��W�0���L���&��E���f�f��'+�9��hv��7,���M��6�D�&�^� �����8 D֮�����o��k^z��O��hP�8q�5d*��YVq3�{��������#LX4�?��jP=3�~�؅c�ݰ�̱�ұ��8̲��2�G�����j��έ�9��w7���U�X�w�85C��?!I&���o&����L���I#�^�eV�,�^t5�k� �xs˛\��U�8��."���{���ǵ�l4��ݼ�;��r"���G�/~���gJV�N糦��ZZ^k+NN�D��I$�=OE�z����|*�*{��%k���G��>�`9��b;�s���8,�qs��c��.b��q�%�>r��n�R�Ƨ�%�,�A��le#�8���}; 21�0�b�&�QX�f���q�00����$>�h�N�'�a3��A���/�r ��L5�8�GԲ'�����w;��c#�q1���h$*��V^�k��QĽ�b:i������� ����H F#�_���,��]g����Ը����`RUU���� ��"�qD���>-��ϤI�~��3�̴�����NZ[[555�eeek7�m����YF#[��Đ��R��i��L�H�r ��@��J-�Pŝ��_|�-��6y��ks�V�U~��6���w.����(��0A� 4��f��� /���C�xŊ�ٳ����z=6�����rg���mKo��o�/����a�g���?'9%9��P��斓��~���L{�� �H��{AW��B��$����v�1b�&Mb�ر��ر#�0`�`xMBp! )Z�Nmo�mZ�g�}�eذaWTVV ���'99��C5��&�&+5�bT>|8��PUUETT����&���t��~TE%��'������b�tEGG;RSS�S�N�v��ѯ��t����u1@�ޚ"f��͈���r'L�Ph��m��ƌ�74o��`�x�q�P���NRSS�X,�����l&&&��MFFA!-��`��ҷ�n��Yuu�����x<I�LB%����KԒ50�!�3�bz�����ʸKL���;---�l6[��`��������Ȏ;�����egg4��!D�T��jWujyZ��������K����%����p�^���X,6��sV=�ܖ����6�3�X ���4ҿ��A2�&����_k�;d�� �VfOIEND�B`� 0x0x
PHP 8.1.34
Preview: class-wp-entity-actions-registry.php Size: 24.18 KB
/home2/astrociv/public_html/gurujii.in/wp-includes/class-wp-entity-actions-registry.php
<?php
/**
 * Entity Actions API: WP_Entity_Actions_Registry class
 *
 * @package WordPress
 * @subpackage Entity Actions
 * @since 7.2.0
 */

/**
 * Holds the actions registered for entities.
 *
 * The registry maps an entity, identified by its kind and name, to its
 * registered action definitions keyed by id, in registration order, each
 * with the origin that registered it, and to the script modules registered
 * for it, each with the ids of the actions it applies to. register() adds
 * actions and validates the definitions before storing them: an action
 * that cannot be stored is reported and skipped, and the rest of the call
 * is stored. To change a registered action, unregister it and register it
 * again.
 *
 * Actions are registered on the `wp_entity_actions_api_init` action, and only
 * there, with wp_register_entity_actions() and wp_unregister_entity_actions():
 * register() and unregister() refuse to run while the action is not
 * firing.
 *
 * The registry is filled lazily: the first time its actions are read, it
 * fires the `wp_entity_actions_api_init` action, on which the actions of every
 * entity are registered. A read before `init` has completed is refused,
 * see initialize().
 *
 * Once the action has fired the registry does not change: every reader of
 * a request, the REST controller as well as the import map of the editor
 * script, sees the same actions.
 *
 * @since 7.2.0
 *
 * @access private
 */
class WP_Entity_Actions_Registry {

	/**
	 * The values DataViews supports for the properties of an action that
	 * take one of a set of values, see packages/dataviews/src/types/dataviews.ts.
	 *
	 * @since 7.2.0
	 *
	 * @var array<string, string[]>
	 */
	const SUPPORTED_VALUES = array(
		'context'   => array( 'list' ),
		'modalSize' => array( 'small', 'medium', 'large', 'fill' ),
	);

	/**
	 * Registered actions, as kind => name => array of action id => definition.
	 *
	 * Kept nested rather than under a joined `{$kind}/{$name}` key: both parts
	 * may contain any character, so no separator keeps two entities apart.
	 *
	 * @since 7.2.0
	 *
	 * @var array<string, array<string, array<string, array>>>
	 */
	protected $actions = array();

	/**
	 * Registered script modules, as kind => name => array of module id =>
	 * list of the ids of the actions the module applies to, in registration
	 * order.
	 *
	 * @since 7.2.0
	 *
	 * @var array<string, array<string, array<string, string[]>>>
	 */
	protected $action_modules = array();

	/**
	 * Whether the `wp_entity_actions_api_init` action has fired since the registry
	 * was created.
	 *
	 * @since 7.2.0
	 *
	 * @var bool
	 */
	protected $initialized = false;

	/**
	 * Whether the registry is firing the `wp_entity_actions_api_init` action, the
	 * only time register() and unregister() run.
	 *
	 * @since 7.2.0
	 *
	 * @var bool
	 */
	protected $initializing = false;

	/**
	 * The singleton instance.
	 *
	 * @since 7.2.0
	 *
	 * @var WP_Entity_Actions_Registry|null
	 */
	protected static $instance = null;

	/**
	 * Returns the singleton instance.
	 *
	 * @since 7.2.0
	 *
	 * @return WP_Entity_Actions_Registry The registry.
	 */
	public static function get_instance() {
		if ( null === self::$instance ) {
			self::$instance = new self();
		}

		return self::$instance;
	}

	/**
	 * Registers actions for an entity.
	 *
	 * The actions must be new: an action with the id of a registered action
	 * is reported and skipped, and so is every definition after the first of
	 * an id that appears more than once in the call. The rest of the actions
	 * of the call are registered: an action another plugin got to first does
	 * not cost a plugin the others. A definition that is not an array with a
	 * non-empty string `id` is reported and skipped the same way. To replace
	 * a registered action, unregister it first. The script module, if any,
	 * applies to every action the call registers.
	 *
	 * A value DataViews does not support is reported, and a property only a
	 * script module can provide is reported and removed, see
	 * report_invalid_values().
	 *
	 * The origin is stored as the `origin` property of each action, as
	 * `registeredBy`, replacing any `origin` the definition sets.
	 *
	 * @since 7.2.0
	 *
	 * @param string      $origin        Who registers the actions: `core`, or
	 *                                   the slug of the plugin or theme.
	 * @param string      $kind          The entity kind (e.g. `postType`).
	 * @param string      $name          The entity name (e.g. `page`).
	 * @param array[]     $actions       The list of action definitions, each with an `id`.
	 * @param string|null $script_module The id of the script module providing
	 *                                   the JavaScript parts of the actions, if any.
	 * @return string[] The ids of the actions registered, in the order of the
	 *                  call. Empty when none is, when called outside the
	 *                  `wp_entity_actions_api_init` action, or when an argument is
	 *                  invalid.
	 */
	public function register( $origin, $kind, $name, $actions, $script_module = null ) {
		if ( ! $this->validate_arguments( __METHOD__, $origin, $kind, $name, $actions, $script_module ) ) {
			return array();
		}
		$actions = $this->skip_invalid_definitions( __METHOD__, $kind, $name, $actions );
		if ( ! $actions ) {
			return array();
		}

		$new_actions    = array();
		$duplicated     = array();
		$registered_ids = array();
		foreach ( $actions as $action ) {
			$id = $action['id'];
			if ( isset( $this->actions[ $kind ][ $name ][ $id ] ) ) {
				$registered_ids[ $id ] = $id;
			} elseif ( isset( $new_actions[ $id ] ) ) {
				$duplicated[ $id ] = $id;
			} else {
				$new_actions[ $id ] = $action;
			}
		}

		if ( $duplicated ) {
			_doing_it_wrong(
				__METHOD__,
				sprintf(
					/* translators: 1: Entity kind, e.g. postType. 2: Entity name, e.g. page. 3: Comma-separated list of action ids. */
					__( 'An action can only be registered once. These actions of %1$s "%2$s" appear more than once in the same call: %3$s. Only their first definition is registered.' ),
					$kind,
					$name,
					implode( ', ', $duplicated )
				),
				'7.2.0'
			);
		}

		if ( $registered_ids ) {
			_doing_it_wrong(
				__METHOD__,
				sprintf(
					/* translators: 1: Entity kind, e.g. postType. 2: Entity name, e.g. page. 3: Comma-separated list of action ids. */
					__( 'An action can only be registered once. These actions of %1$s "%2$s" are skipped because they are already registered: %3$s. Unregister an action first to replace it.' ),
					$kind,
					$name,
					implode( ', ', $registered_ids )
				),
				'7.2.0'
			);
		}

		if ( ! $new_actions ) {
			return array();
		}
		$new_actions = $this->report_invalid_values( __METHOD__, $kind, $name, $new_actions );

		foreach ( $new_actions as $action ) {
			$this->actions[ $kind ][ $name ][ $action['id'] ] = array_merge(
				$action,
				array(
					'origin' => array(
						'registeredBy' => $origin,
					),
				)
			);
		}
		$ids = array_column( $new_actions, 'id' );
		$this->add_action_module( $kind, $name, $ids, $script_module );

		return $ids;
	}

	/**
	 * Reports the values of action definitions that DataViews does not
	 * support, and the properties only a script module can provide, with
	 * _doing_it_wrong().
	 *
	 * A value DataViews does not support is otherwise silent: an action
	 * whose `context` is not `list` shows on no screen. Such a value is
	 * kept, like the field types the fields registry reports.
	 * `callback`, `RenderModal`, and `isEligible` are functions and
	 * components, which only a script module can provide: a value set on
	 * the server would be called on the client and fail, so it is removed.
	 *
	 * @since 7.2.0
	 *
	 * @param string  $method  The calling method, for the notice.
	 * @param string  $kind    The entity kind.
	 * @param string  $name    The entity name.
	 * @param array[] $actions The action definitions, keyed by id.
	 * @return array[] The definitions, without the properties only a script
	 *                 module can provide.
	 */
	protected function report_invalid_values( $method, $kind, $name, $actions ) {
		$invalid = array();
		foreach ( $actions as $id => $action ) {
			foreach ( self::SUPPORTED_VALUES as $property => $values ) {
				if ( array_key_exists( $property, $action ) && ! in_array( $action[ $property ], $values, true ) ) {
					$invalid[] = sprintf(
						'%1$s (%2$s)',
						$id,
						wp_sprintf(
							/* translators: 1: Property name, e.g. context. 2: List of the values DataViews supports. */
							__( '%1$s is not one of %2$l.' ),
							$property,
							$values
						)
					);
				}
			}
			foreach ( array( 'callback', 'RenderModal', 'isEligible' ) as $property ) {
				if ( array_key_exists( $property, $action ) ) {
					unset( $actions[ $id ][ $property ] );
					$invalid[] = sprintf(
						/* translators: 1: Action id. 2: Property name, e.g. callback. */
						__( '%1$s (%2$s can only come from a script module, so it is removed.)' ),
						$id,
						$property
					);
				}
			}
		}
		if ( $invalid ) {
			_doing_it_wrong(
				$method,
				sprintf(
					/* translators: 1: Entity kind, e.g. postType. 2: Entity name, e.g. page. 3: Comma-separated list of action ids, each with the error of a value. */
					__( 'These actions of %1$s "%2$s" have values DataViews does not support: %3$s' ),
					$kind,
					$name,
					implode( ', ', $invalid )
				),
				'7.2.0'
			);
		}

		return $actions;
	}

	/**
	 * Unregisters actions of an entity.
	 *
	 * Unregistering an action removes its registered definition and drops
	 * it from the script modules that applied to it (a module left with no
	 * action is forgotten). Unregistering every action forgets the entity:
	 * its registered actions and script modules.
	 *
	 * Like register(), it only runs on the `wp_entity_actions_api_init` action, and
	 * an invalid entity is reported and unregisters nothing. An id that is
	 * not a non-empty string is reported and skipped, like a definition
	 * register() cannot store.
	 *
	 * @since 7.2.0
	 *
	 * @param string        $kind The entity kind (e.g. `postType`).
	 * @param string        $name The entity name (e.g. `page`).
	 * @param string[]|null $ids  The ids of the actions to unregister.
	 *                            Default null, every action of the entity.
	 * @return array[] The list of the definitions unregistered, in
	 *                 registration order, as get_registered() returns them.
	 *                 Empty when none of the actions is registered, when
	 *                 called outside the `wp_entity_actions_api_init` action, or
	 *                 when the entity is invalid.
	 */
	public function unregister( $kind, $name, $ids = null ) {
		if ( ! $this->doing_entity_actions_api_init( __METHOD__ ) || ! $this->validate_entity( __METHOD__, $kind, $name ) ) {
			return array();
		}

		if ( null === $ids ) {
			$unregistered = array_values( $this->actions[ $kind ][ $name ] ?? array() );
			unset( $this->actions[ $kind ][ $name ], $this->action_modules[ $kind ][ $name ] );
			$this->forget_empty_entity( $kind, $name );
			return $unregistered;
		}

		$ids = $this->skip_invalid_ids( __METHOD__, $kind, $name, (array) $ids );
		if ( ! $ids ) {
			return array();
		}

		$unregistered = array_intersect_key( $this->actions[ $kind ][ $name ] ?? array(), array_flip( $ids ) );
		if ( empty( $unregistered ) ) {
			return array();
		}

		// A script module only ever applies to registered actions: register()
		// adds it for the actions it stores, and actions leave both lists
		// together here. So the actions removed are all the registry loses,
		// and the modules are not returned: the ones that applied to them are
		// listed by get_registered_action_modules(), read beforehand.
		$ids = array_keys( $unregistered );
		foreach ( $ids as $id ) {
			unset( $this->actions[ $kind ][ $name ][ $id ] );
		}
		foreach ( $this->action_modules[ $kind ][ $name ] ?? array() as $module => $module_ids ) {
			$remaining = array_values( array_diff( $module_ids, $ids ) );
			if ( empty( $remaining ) ) {
				unset( $this->action_modules[ $kind ][ $name ][ $module ] );
			} else {
				$this->action_modules[ $kind ][ $name ][ $module ] = $remaining;
			}
		}
		$this->forget_empty_entity( $kind, $name );

		return array_values( $unregistered );
	}

	/**
	 * Returns the actions registered for an entity.
	 *
	 * @since 7.2.0
	 *
	 * @param string $kind The entity kind (e.g. `postType`).
	 * @param string $name The entity name (e.g. `page`).
	 * @return array[] The list of action definitions, in registration order.
	 *                 Empty when the entity is invalid.
	 */
	public function get_registered( $kind, $name ) {
		if ( ! $this->validate_entity( __METHOD__, $kind, $name ) ) {
			return array();
		}
		$this->initialize();
		return array_values( $this->actions[ $kind ][ $name ] ?? array() );
	}

	/**
	 * Returns the actions registered for every entity.
	 *
	 * @since 7.2.0
	 *
	 * @return array<string, array<string, array[]>> The lists of action
	 *                                               definitions, keyed by
	 *                                               kind, then by name.
	 */
	public function get_all_registered() {
		$this->initialize();
		return array_map(
			static function ( $entities ) {
				return array_map( 'array_values', $entities );
			},
			$this->actions
		);
	}

	/**
	 * Returns the script modules registered for an entity.
	 *
	 * @since 7.2.0
	 *
	 * @param string $kind The entity kind (e.g. `postType`).
	 * @param string $name The entity name (e.g. `page`).
	 * @return array[] {
	 *     The script modules, in registration order. Empty when the entity
	 *     is invalid.
	 *
	 *     @type array ...$0 {
	 *         @type string   $id      The id of the script module.
	 *         @type string[] $actions The ids of the actions the module
	 *                                 applies to, in registration order.
	 *     }
	 * }
	 */
	public function get_registered_action_modules( $kind, $name ) {
		if ( ! $this->validate_entity( __METHOD__, $kind, $name ) ) {
			return array();
		}
		$this->initialize();
		$modules = array();
		foreach ( $this->action_modules[ $kind ][ $name ] ?? array() as $module => $action_ids ) {
			$modules[] = array(
				// A numeric module id is an integer as an array key.
				'id'      => (string) $module,
				'actions' => $action_ids,
			);
		}
		return $modules;
	}

	/**
	 * Returns the ids of the script modules registered for every entity.
	 *
	 * @since 7.2.0
	 *
	 * @return array<string, array<string, string[]>> The lists of module ids,
	 *                                                keyed by kind, then by
	 *                                                name.
	 */
	public function get_all_registered_action_modules() {
		$this->initialize();
		return array_map(
			static function ( $entities ) {
				return array_map(
					static function ( $modules ) {
						// A numeric module id is an integer as an array key.
						return array_map( 'strval', array_keys( $modules ) );
					},
					$entities
				);
			},
			$this->action_modules
		);
	}

	/**
	 * Fires the `wp_entity_actions_api_init` action the first time the registry
	 * is read.
	 *
	 * The read is refused until `init` has completed. The registry holds the
	 * actions of post types, and post types are not known until then: core
	 * registers its own on `init` at priority 0, plugins theirs at the
	 * default priority, and supports are added and removed on `init` too.
	 * The actions of a post type can derive from its supports, and the
	 * action fires once, so a read before or during `init` would fix them
	 * from the post types registered so far for the rest of the request.
	 *
	 * did_action() is true from the first `init` callback on, hence the
	 * doing_action() check for the reads made while it runs.
	 *
	 * @since 7.2.0
	 */
	protected function initialize() {
		if ( $this->initialized ) {
			return;
		}

		if ( ! did_action( 'init' ) || doing_action( 'init' ) ) {
			_doing_it_wrong(
				__METHOD__,
				__( 'The registered actions cannot be read until the `init` action has completed: the post types and supports they derive from are registered on `init`. Read them once `init` has completed, or hook `wp_entity_actions_api_init`.' ),
				'7.2.0'
			);
			return;
		}

		// Set before firing, so a callback reading the registry to inspect
		// the actions it unregisters does not fire the action again.
		$this->initialized = true;

		$this->initializing = true;
		try {
			/**
			 * Fires the first time the registered actions are read, after `init`.
			 *
			 * Register or remove actions here, with wp_register_entity_actions() and
			 * wp_unregister_entity_actions(): it is the only time they run.
			 *
			 * The first read happens wherever the actions are needed: while
			 * handling a REST request as well as on `admin_footer` of the pages
			 * that load the editor script. A callback should register actions
			 * and nothing else; script modules, styles, and their enqueue hooks
			 * belong on `init`.
			 *
			 * @since 7.2.0
			 */
			do_action( 'wp_entity_actions_api_init' );
		} finally {
			$this->initializing = false;
		}
	}

	/**
	 * Checks that the registry is firing the `wp_entity_actions_api_init` action,
	 * as register() and unregister() require.
	 *
	 * Outside the action a registration would either come before the
	 * registrations made on it, and take the ids they register, or after
	 * the actions have been read and the import map of the editor script
	 * built from them. Refusing keeps the registry immutable once read,
	 * even when the action is fired again with do_action(), which is why
	 * the registry tracks its own firing rather than check doing_action().
	 *
	 * @since 7.2.0
	 *
	 * @param string $method The calling method, for the notice.
	 * @return bool Whether the action is firing.
	 */
	protected function doing_entity_actions_api_init( $method ) {
		if ( $this->initializing ) {
			return true;
		}

		_doing_it_wrong(
			$method,
			__( 'Actions can only be registered and unregistered on the `wp_entity_actions_api_init` action.' ),
			'7.2.0'
		);
		return false;
	}

	/**
	 * Validates the arguments of register().
	 *
	 * @since 7.2.0
	 *
	 * @param string $method        The calling method, for the notice.
	 * @param mixed  $origin        The origin.
	 * @param mixed  $kind          The entity kind.
	 * @param mixed  $name          The entity name.
	 * @param mixed  $actions       The action definitions.
	 * @param mixed  $script_module The script module id, if any.
	 * @return bool Whether the call may proceed: the `wp_entity_actions_api_init`
	 *              action is firing and the arguments are valid.
	 */
	protected function validate_arguments( $method, $origin, $kind, $name, $actions, $script_module ) {
		if ( ! $this->doing_entity_actions_api_init( $method ) ) {
			return false;
		}

		if ( ! is_string( $origin ) || '' === $origin ) {
			_doing_it_wrong(
				$method,
				__( 'The origin must be a non-empty string.' ),
				'7.2.0'
			);
			return false;
		}

		if ( ! $this->validate_entity( $method, $kind, $name ) ) {
			return false;
		}

		if ( ! is_array( $actions ) || empty( $actions ) || ! array_is_list( $actions ) ) {
			_doing_it_wrong(
				$method,
				__( 'The actions must be a list of non-empty action definitions.' ),
				'7.2.0'
			);
			return false;
		}

		if ( null !== $script_module && ( ! is_string( $script_module ) || '' === $script_module ) ) {
			_doing_it_wrong(
				$method,
				__( 'The script module must be the id of a script module.' ),
				'7.2.0'
			);
			return false;
		}

		return true;
	}

	/**
	 * Checks that the entity kind and name are non-empty strings, reporting
	 * them with _doing_it_wrong() otherwise.
	 *
	 * @since 7.2.0
	 *
	 * @param string $method The calling method, for the notice.
	 * @param mixed  $kind   The entity kind.
	 * @param mixed  $name   The entity name.
	 * @return bool Whether both are valid.
	 */
	protected function validate_entity( $method, $kind, $name ) {
		foreach ( array( $kind, $name ) as $argument ) {
			if ( ! is_string( $argument ) || '' === $argument ) {
				_doing_it_wrong(
					$method,
					__( 'The entity kind and the entity name must be non-empty strings.' ),
					'7.2.0'
				);
				return false;
			}
		}
		return true;
	}

	/**
	 * Drops the definitions that are not an array with a non-empty string
	 * `id`, reporting their positions in the call with _doing_it_wrong():
	 * like a duplicated action, an invalid definition does not cost the call
	 * its other actions.
	 *
	 * @since 7.2.0
	 *
	 * @param string  $method  The calling method, for the notice.
	 * @param string  $kind    The entity kind.
	 * @param string  $name    The entity name.
	 * @param array[] $actions The list of action definitions.
	 * @return array[] The valid definitions, in the order of the call.
	 */
	protected function skip_invalid_definitions( $method, $kind, $name, $actions ) {
		$valid   = array();
		$invalid = array();
		foreach ( $actions as $position => $action ) {
			if ( is_array( $action ) && isset( $action['id'] ) && is_string( $action['id'] ) && '' !== $action['id'] ) {
				$valid[] = $action;
			} else {
				$invalid[] = '#' . ( $position + 1 );
			}
		}

		if ( $invalid ) {
			$message = sprintf(
				/* translators: 1: Entity kind, e.g. postType. 2: Entity name, e.g. page. 3: Comma-separated list of positions, e.g. #2, #4. */
				__( 'Every action definition must be an array with a non-empty string `id`. These definitions of %1$s "%2$s" are skipped: %3$s.' ),
				$kind,
				$name,
				implode( ', ', $invalid )
			);
			if ( $valid ) {
				$message .= ' ' . __( 'The rest of the actions of the call are stored.' );
			}
			_doing_it_wrong( $method, $message, '7.2.0' );
		}

		return $valid;
	}

	/**
	 * Drops the ids that are not a non-empty string, reporting their
	 * positions in the call with _doing_it_wrong(): like an invalid
	 * definition, an invalid id does not cost the call its other ids.
	 *
	 * @since 7.2.0
	 *
	 * @param string $method The calling method, for the notice.
	 * @param string $kind   The entity kind.
	 * @param string $name   The entity name.
	 * @param array  $ids    The ids of the actions.
	 * @return string[] The valid ids, in the order of the call.
	 */
	protected function skip_invalid_ids( $method, $kind, $name, $ids ) {
		$valid   = array();
		$invalid = array();
		foreach ( array_values( $ids ) as $position => $id ) {
			if ( is_string( $id ) && '' !== $id ) {
				$valid[] = $id;
			} else {
				$invalid[] = '#' . ( $position + 1 );
			}
		}

		if ( $invalid ) {
			$message = sprintf(
				/* translators: 1: Entity kind, e.g. postType. 2: Entity name, e.g. page. 3: Comma-separated list of positions, e.g. #2, #4. */
				__( 'Every action id must be a non-empty string. These ids of %1$s "%2$s" are skipped: %3$s.' ),
				$kind,
				$name,
				implode( ', ', $invalid )
			);
			if ( $valid ) {
				$message .= ' ' . __( 'The rest of the actions of the call are unregistered.' );
			}
			_doing_it_wrong( $method, $message, '7.2.0' );
		}

		return $valid;
	}

	/**
	 * Applies a script module to actions of an entity, after the actions it
	 * already applies to.
	 *
	 * @since 7.2.0
	 *
	 * @param string      $kind          The entity kind.
	 * @param string      $name          The entity name.
	 * @param string[]    $ids           The ids of the actions.
	 * @param string|null $script_module The id of the script module, if any.
	 */
	protected function add_action_module( $kind, $name, $ids, $script_module ) {
		if ( null === $script_module ) {
			return;
		}

		$module_ids = $this->action_modules[ $kind ][ $name ][ $script_module ] ?? array();
		foreach ( $ids as $id ) {
			if ( ! in_array( $id, $module_ids, true ) ) {
				$module_ids[] = $id;
			}
		}
		$this->action_modules[ $kind ][ $name ][ $script_module ] = $module_ids;
	}

	/**
	 * Forgets an entity left without actions or script modules, and its kind
	 * once no entity of the kind is left, so the registry only lists
	 * entities that have some.
	 *
	 * @since 7.2.0
	 *
	 * @param string $kind The entity kind.
	 * @param string $name The entity name.
	 */
	protected function forget_empty_entity( $kind, $name ) {
		if ( empty( $this->actions[ $kind ][ $name ] ) ) {
			unset( $this->actions[ $kind ][ $name ] );
		}
		if ( empty( $this->actions[ $kind ] ) ) {
			unset( $this->actions[ $kind ] );
		}
		if ( empty( $this->action_modules[ $kind ][ $name ] ) ) {
			unset( $this->action_modules[ $kind ][ $name ] );
		}
		if ( empty( $this->action_modules[ $kind ] ) ) {
			unset( $this->action_modules[ $kind ] );
		}
	}
}

Directory Contents

Dirs: 34 × Files: 266
Name Size Perms Modified Actions
abilities DIR
- drwxr-xr-x 2026-10-28 14:44:54
Edit Download
- drwxr-xr-x 2026-10-28 14:44:54
Edit Download
ai-client DIR
- drwxr-xr-x 2026-10-28 14:44:54
Edit Download
assets DIR
- drwxr-xr-x 2026-10-28 14:44:54
Edit Download
- drwxr-xr-x 2026-10-28 14:44:54
Edit Download
- drwxr-xr-x 2026-10-28 14:44:54
Edit Download
- drwxr-xr-x 2026-10-28 14:44:54
Edit Download
blocks DIR
- drwxr-xr-x 2026-10-28 14:44:54
Edit Download
build DIR
- drwxr-xr-x 2026-10-28 14:44:54
Edit Download
- drwxr-xr-x 2026-10-28 14:44:54
Edit Download
css DIR
- drwxr-xr-x 2026-10-28 14:44:54
Edit Download
customize DIR
- drwxr-xr-x 2026-10-28 14:44:54
Edit Download
fonts DIR
- drwxr-xr-x 2026-10-28 14:44:54
Edit Download
html-api DIR
- drwxr-xr-x 2026-10-28 14:44:54
Edit Download
ID3 DIR
- drwxr-xr-x 2026-10-28 14:44:54
Edit Download
images DIR
- drwxr-xr-x 2026-10-28 14:44:54
Edit Download
- drwxr-xr-x 2026-10-28 14:44:54
Edit Download
IXR DIR
- drwxr-xr-x 2026-10-28 14:44:54
Edit Download
js DIR
- drwxr-xr-x 2026-10-28 14:44:54
Edit Download
l10n DIR
- drwxr-xr-x 2026-10-28 14:44:54
Edit Download
- drwxr-xr-x 2026-10-28 14:44:54
Edit Download
- drwxr-xr-x 2026-10-28 14:44:54
Edit Download
PHPMailer DIR
- drwxr-xr-x 2026-10-28 14:44:54
Edit Download
pomo DIR
- drwxr-xr-x 2026-10-28 14:44:54
Edit Download
Requests DIR
- drwxr-xr-x 2026-10-28 14:44:54
Edit Download
rest-api DIR
- drwxr-xr-x 2026-10-28 14:44:54
Edit Download
secrets DIR
- drwxr-xr-x 2026-10-28 14:44:54
Edit Download
SimplePie DIR
- drwxr-xr-x 2026-10-28 14:44:54
Edit Download
sitemaps DIR
- drwxr-xr-x 2026-10-28 14:44:54
Edit Download
- drwxr-xr-x 2026-10-28 14:44:54
Edit Download
- drwxr-xr-x 2026-10-28 14:44:54
Edit Download
Text DIR
- drwxr-xr-x 2026-10-28 14:44:54
Edit Download
- drwxr-xr-x 2026-10-28 14:44:54
Edit Download
widgets DIR
- drwxr-xr-x 2026-10-28 14:44:54
Edit Download
38.89 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
12.77 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
40.76 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
4.38 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
11.90 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
19.71 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
7.62 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
29.07 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
316 B lrw-r--r-- 2026-10-28 14:44:54
Edit Download
15.28 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
62.33 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
17.89 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
121.84 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
12.61 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
15.45 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
10.76 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
13.17 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
35.62 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
42.64 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
56.33 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
14.47 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
29.30 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
539 B lrw-r--r-- 2026-10-28 14:44:54
Edit Download
367 B lrw-r--r-- 2026-10-28 14:44:54
Edit Download
2.55 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
42.65 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
401 B lrw-r--r-- 2026-10-28 14:44:54
Edit Download
6.61 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
664 B lrw-r--r-- 2026-10-28 14:44:54
Edit Download
20.61 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
2.18 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
453 B lrw-r--r-- 2026-10-28 14:44:54
Edit Download
457 B lrw-r--r-- 2026-10-28 14:44:54
Edit Download
36.81 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
2.41 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
8.28 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
13.89 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
11.76 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
2.65 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
7.44 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
21.30 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
5.26 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
16.70 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
8.10 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
2.92 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
1.32 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
4.72 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
11.57 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
2.50 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
1.95 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
10.97 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
4.24 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
9.99 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
69.58 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
7.50 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
7.87 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
2.06 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
6.95 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
5.22 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
16.92 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
27.57 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
3.93 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
48.31 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
17.34 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
14.88 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
25.50 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
198.41 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
56.67 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
10.45 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
10.95 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
29.30 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
70.91 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
34.55 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
17.01 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
2.59 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
39.88 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
70.53 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
15.54 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
24.18 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
35.51 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
7.34 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
253 B lrw-r--r-- 2026-10-28 14:44:54
Edit Download
7.96 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
3.35 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
969 B lrw-r--r-- 2026-10-28 14:44:54
Edit Download
760 B lrw-r--r-- 2026-10-28 14:44:54
Edit Download
17.83 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
7.16 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
12.95 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
6.53 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
3.58 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
5.84 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
1.99 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
4.14 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
3.15 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
16.37 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
41.50 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
6.40 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
14.93 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
20.12 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
42.44 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
17.05 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
7.27 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
6.64 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
16.54 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
1.79 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
29.79 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
6.53 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
8.96 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
19.84 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
12.57 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
17.27 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
6.74 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
33.05 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
4.95 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
4.25 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
24.62 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
30.52 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
8.90 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
161.08 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
6.72 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
10.90 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
4.80 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
3.44 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
11.37 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
70.26 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
2.49 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
9.11 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
39.79 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
35.81 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
7.15 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
3.47 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
1.87 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
30.92 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
8.09 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
7.70 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
16.91 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
19.00 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
18.35 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
40.95 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
5.56 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
979 B lrw-r--r-- 2026-10-28 14:44:54
Edit Download
18.48 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
10.54 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
1.76 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
35.92 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
7.19 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
232.13 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
65.75 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
28.38 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
4.69 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
2.88 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
43.24 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
2.29 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
22.78 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
28.71 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
12.97 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
4.02 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
18.17 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
214.92 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
28.15 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
120.91 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
373 B lrw-r--r-- 2026-10-28 14:44:54
Edit Download
343 B lrw-r--r-- 2026-10-28 14:44:54
Edit Download
338 B lrw-r--r-- 2026-10-28 14:44:54
Edit Download
101.45 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
151.46 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
18.93 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
21.95 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
32.45 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
45.52 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
400 B lrw-r--r-- 2026-10-28 14:44:54
Edit Download
11.14 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
40.46 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
2.23 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
194.51 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
338 B lrw-r--r-- 2026-10-28 14:44:54
Edit Download
38.31 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
6.49 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
9.20 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
5.43 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
4.00 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
5.49 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
3.14 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
2.50 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
1.16 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
4.00 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
3.56 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
29.76 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
9.56 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
351.83 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
298.90 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
20.02 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
8.45 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
182.98 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
19.14 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
28.35 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
5.72 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
4.63 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
8.38 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
13.02 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
123.42 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
74.33 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
157.91 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
59.10 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
162 B lrw-r--r-- 2026-10-28 14:44:54
Edit Download
62.17 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
241.95 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
68.41 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
25.91 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
4.81 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
6.48 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
21.26 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
2.79 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
90.46 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
19.58 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
3.89 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
4.10 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
42.18 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
25.42 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
43.23 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
107.16 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
6.18 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
125.19 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
37.41 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
6.90 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
68.38 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
10.62 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
314.27 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
47.63 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
200 B lrw-r--r-- 2026-10-28 14:44:54
Edit Download
200 B lrw-r--r-- 2026-10-28 14:44:54
Edit Download
106.11 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
30.62 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
19.98 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
5.06 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
277 B lrw-r--r-- 2026-10-28 14:44:54
Edit Download
22.66 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
177.92 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
12.02 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
25.38 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
258 B lrw-r--r-- 2026-10-28 14:44:54
Edit Download
23.82 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
3.19 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
11.60 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
441 B lrw-r--r-- 2026-10-28 14:44:54
Edit Download
7.87 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
180.39 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
544 B lrw-r--r-- 2026-10-28 14:44:54
Edit Download
4.17 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
37.92 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
2.01 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
2.82 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
3.96 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
9.58 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
132.79 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
37.37 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
177.83 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
6.82 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
6.45 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
1.09 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
21.18 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
2.87 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
69.47 KB lrw-r--r-- 2026-10-28 14:44:54
Edit Download
445 B lrw-r--r-- 2026-10-28 14:44:54
Edit Download
792 B lrw-r--r-- 2026-10-28 14:44:54
Edit Download
If ZipArchive is unavailable, a .tar will be created (no compression).
© 2026 0xNothings — Secure File Manager. All rights reserved. Built with ❤️ & Tailwind x Dark UI