Changeset 13876 for sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/class-plugin-directory.php
- Timestamp:
- 07/04/2024 03:47:24 AM (17 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/class-plugin-directory.php
r13778 r13876 1729 1729 // Meta doesn't exist yet? Lets fill it out. 1730 1730 if ( false === $releases || ! is_array( $releases ) ) { 1731 update_post_meta( $plugin->ID, 'releases', [] ); 1732 1733 $tags = get_post_meta( $plugin->ID, 'tags', true ); 1734 if ( $tags ) { 1735 foreach ( $tags as $tag_version => $tag ) { 1736 self::add_release( $plugin, [ 1737 'date' => strtotime( $tag['date'] ), 1738 'tag' => $tag['tag'], 1739 'version' => $tag_version, 1740 'committer' => [ $tag['author'] ], 1741 'zips_built' => true, // Old release, assume they were built. 1742 'confirmations_required' => 0, // Old release, assume it's released. 1743 ] ); 1744 } 1745 } else { 1746 // Pull from SVN directly. 1747 $svn_tags = Tools\SVN::ls( "https://plugins.svn.wordpress.org/{$plugin->post_name}/tags/", true ) ?: []; 1748 foreach ( $svn_tags as $entry ) { 1749 // Discard files 1750 if ( 'dir' !== $entry['kind'] ) { 1751 continue; 1752 } 1753 1754 $tag = $entry['filename']; 1755 1756 // Prefix the 0 for plugin versions like 0.1 1757 if ( '.' == substr( $tag, 0, 1 ) ) { 1758 $tag = "0{$tag}"; 1759 } 1760 1761 self::add_release( $plugin, [ 1762 'date' => strtotime( $entry['date'] ), 1763 'tag' => $entry['filename'], 1764 'version' => $tag, 1765 'committer' => [ $entry['author'] ], 1766 'zips_built' => true, // Old release, assume they were built. 1767 'confirmations_required' => 0, // Old release, assume it's released. 1768 ] ); 1769 } 1770 } 1771 1772 $releases = get_post_meta( $plugin->ID, 'releases', true ) ?: []; 1731 $releases = self::prefill_releses_meta( $plugin ); 1773 1732 } 1774 1733 … … 1789 1748 1790 1749 /** 1750 * Prefill the releases meta for a plugin. 1751 * 1752 * @param \WP_Post $plugin Plugin post object. 1753 * @return array 1754 */ 1755 public static function prefill_releses_meta( $plugin ) { 1756 if ( ! $plugin->releases ) { 1757 update_post_meta( $plugin->ID, 'releases', [] ); 1758 } 1759 1760 $tags = get_post_meta( $plugin->ID, 'tags', true ); 1761 if ( $tags ) { 1762 foreach ( $tags as $tag_version => $tag ) { 1763 self::add_release( $plugin, [ 1764 'date' => strtotime( $tag['date'] ), 1765 'tag' => $tag['tag'], 1766 'version' => $tag_version, 1767 'committer' => [ $tag['author'] ], 1768 'zips_built' => true, // Old release, assume they were built. 1769 'confirmations_required' => 0, // Old release, assume it's released. 1770 ] ); 1771 } 1772 } else { 1773 // Pull from SVN directly. 1774 $svn_tags = Tools\SVN::ls( "https://plugins.svn.wordpress.org/{$plugin->post_name}/tags/", true ) ?: []; 1775 foreach ( $svn_tags as $entry ) { 1776 // Discard files 1777 if ( 'dir' !== $entry['kind'] ) { 1778 continue; 1779 } 1780 1781 $tag = $entry['filename']; 1782 1783 // Prefix the 0 for plugin versions like 0.1 1784 if ( '.' == substr( $tag, 0, 1 ) ) { 1785 $tag = "0{$tag}"; 1786 } 1787 1788 self::add_release( $plugin, [ 1789 'date' => strtotime( $entry['date'] ), 1790 'tag' => $entry['filename'], 1791 'version' => $tag, 1792 'committer' => [ $entry['author'] ], 1793 'zips_built' => true, // Old release, assume they were built. 1794 'confirmations_required' => 0, // Old release, assume it's released. 1795 ] ); 1796 } 1797 } 1798 1799 return get_post_meta( $plugin->ID, 'releases', true ) ?: []; 1800 } 1801 1802 /** 1791 1803 * Fetch a specific release of the plugin, by tag. 1792 1804 * 1793 * @param string $plugin Plugin slug.1794 * @param string $ tagRelease tag.1805 * @param string $plugin Plugin slug. 1806 * @param string $version Plugin version / Release tag. 1795 1807 * @return array|bool 1796 1808 */ 1797 public static function get_release( $plugin, $ tag) {1809 public static function get_release( $plugin, $version ) { 1798 1810 $releases = self::get_releases( $plugin ); 1799 1811 1812 // Look for the version released as a tag. 1800 1813 $filtered = wp_list_filter( $releases, compact( 'tag' ) ); 1801 1814 if ( $filtered ) { 1815 return array_shift( $filtered ); 1816 } 1817 1818 // Look for the tag as a trunk version. 1819 $filtered = wp_list_filter( $releases, [ 'tag' => "trunk@{$tag}", 'version' => $tag ] ); 1802 1820 if ( $filtered ) { 1803 1821 return array_shift( $filtered ); … … 1836 1854 // Fill the $release with the newish data. This could/should use wp_parse_args()? 1837 1855 foreach ( $data as $k => $v ) { 1838 $release[ $k ] = $v; 1856 if ( is_array( $release[ $k ] ) ) { 1857 $release[ $k ] = array_unique( array_merge( $release[ $k ], $v ) ); 1858 } else { 1859 $release[ $k ] = $v; 1860 } 1839 1861 } 1840 1862
Note: See TracChangeset
for help on using the changeset viewer.