Plugin Directory

Changeset 3469652


Ignore:
Timestamp:
02/25/2026 05:45:16 PM (4 weeks ago)
Author:
welcher
Message:

Release 4.4.0

Location:
advanced-query-loop
Files:
45 added
20 edited

Legend:

Unmodified
Added
Removed
  • advanced-query-loop/trunk/build/variations.asset.php

    r3339814 r3469652  
    1 <?php return array('dependencies' => array('react', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-editor', 'wp-element', 'wp-hooks', 'wp-html-entities', 'wp-i18n', 'wp-primitives'), 'version' => 'aef35b274d7db186fee3');
     1<?php return array('dependencies' => array('react', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-editor', 'wp-element', 'wp-hooks', 'wp-html-entities', 'wp-i18n', 'wp-primitives'), 'version' => '073f8c97461b01d3d038');
  • advanced-query-loop/trunk/build/variations.js

    r3339814 r3469652  
    1 var aql;(()=>{"use strict";var e={d:(t,r)=>{for(var a in r)e.o(r,a)&&!e.o(t,a)&&Object.defineProperty(t,a,{enumerable:!0,get:r[a]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{AQL:()=>ee,AQLControls:()=>c,AQLControlsInheritedQuery:()=>p});const r=window.wp.blocks,a=window.wp.i18n,n=window.React,l=window.wp.hooks,o=window.wp.blockEditor,u=window.wp.components,{Fill:d,Slot:i}=(0,u.createSlotFill)("AQLControls"),s=({children:e})=>(0,n.createElement)(d,null,e);s.Slot=({fillProps:e})=>(0,n.createElement)(i,{fillProps:e},(e=>e.length?e:null));const c=s,{Fill:y,Slot:m}=(0,u.createSlotFill)("AQLControlsInheritedQuery"),_=({children:e})=>(0,n.createElement)(y,null,e);_.Slot=m;const p=_,{Fill:q,Slot:h}=(0,u.createSlotFill)("AQLLegacyControls"),g=({children:e})=>(0,n.createElement)(q,null,e);g.Slot=({fillProps:e})=>(0,n.createElement)(h,{fillProps:e},(e=>e.length?e:null));const v=g,E={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};let b;const f=new Uint8Array(16);function x(){if(!b&&(b="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!b))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return b(f)}const C=[];for(let e=0;e<256;++e)C.push((e+256).toString(16).slice(1));const w=function(e,t,r){if(E.randomUUID&&!t&&!e)return E.randomUUID();const a=(e=e||{}).random||(e.rng||x)();if(a[6]=15&a[6]|64,a[8]=63&a[8]|128,t){r=r||0;for(let e=0;e<16;++e)t[r+e]=a[e];return t}return function(e,t=0){return C[e[t+0]]+C[e[t+1]]+C[e[t+2]]+C[e[t+3]]+"-"+C[e[t+4]]+C[e[t+5]]+"-"+C[e[t+6]]+C[e[t+7]]+"-"+C[e[t+8]]+C[e[t+9]]+"-"+C[e[t+10]]+C[e[t+11]]+C[e[t+12]]+C[e[t+13]]+C[e[t+14]]+C[e[t+15]]}(a)},S=window.wp.coreData,T=window.wp.element,k=["=","!=",">",">=","<","<=","LIKE","NOT LIKE","IN","NOT IN","BETWEEN","NOT BETWEEN","EXISTS","NOT EXISTS","REGEXP","NOT REGEXP","RLIKE"],N=["CHAR","NUMERIC","BINARY","DATE","DATETIME","DECIMAL","SIGNED","TIME","UNSIGNED"],A={marginTop:"0.75em",marginBottom:"0.75em"},B=({registeredMetaKeys:e,id:t,queries:r,attributes:l,setAttributes:o})=>{const d=r.find((e=>e.id===t)),[i,s]=(0,T.useState)(!1),[c,y]=(0,T.useState)(!1);(0,T.useEffect)((()=>{d?.meta_type&&"CHAR"!==d?.meta_type||d?.meta_compare&&"="!==d?.meta_compare?(s(!0),y(!0)):y(!1)}),[d?.meta_type,d?.meta_compare]);const m=(e,t,r,a)=>e.map((e=>e.id===t?{...e,[r]:a}:e));return(0,n.createElement)(n.Fragment,null,(0,n.createElement)(u.FormTokenField,{label:(0,a.__)("Meta Key","advanced-query-loop"),value:d?.meta_key?.length?[d.meta_key]:[],__experimentalShowHowTo:!1,suggestions:e,maxLength:1,onChange:e=>{o({query:{...l.query,meta_query:{...l.query.meta_query,queries:m(r,t,"meta_key",e[0])}}})}}),d?.meta_key?.length>0&&(0,n.createElement)(n.Fragment,null,(0,n.createElement)(u.TextControl,{label:(0,a.__)("Meta Value","advanced-query-loop"),value:d.meta_value,onChange:e=>{o({query:{...l.query,meta_query:{...l.query.meta_query,queries:m(r,t,"meta_value",e)}}})}}),i&&(0,n.createElement)(n.Fragment,null,(0,n.createElement)(u.SelectControl,{label:(0,a.__)("Meta Compare","advanced-query-loop"),value:d.meta_compare,options:[...k.map((e=>({label:e,value:e})))],onChange:e=>{o({query:{...l.query,meta_query:{...l.query.meta_query,queries:m(r,t,"meta_compare",e)}}})}}),(0,n.createElement)(u.SelectControl,{label:(0,a.__)("Meta Type","advanced-query-loop"),value:d.meta_type,options:[...N.map((e=>({label:e,value:e})))],onChange:e=>{o({query:{...l.query,meta_query:{...l.query.meta_query,queries:m(r,t,"meta_type",e)}}})},__nextHasNoMarginBottom:!0}))),(0,n.createElement)("hr",null),(0,n.createElement)(u.__experimentalHStack,{alignment:d?.meta_key?"edge":"right",style:A},d?.meta_key&&(0,n.createElement)(u.ToggleControl,{checked:i,label:(0,a.__)("Advanced mode","advanced-query-loop"),onChange:()=>s(!i),disabled:c}),(0,n.createElement)(u.Button,{key:t,variant:"secondary",size:"small",isDestructive:!0,onClick:()=>{const e=r.filter((e=>e.id!==t));o({query:{...l.query,meta_query:{...l.query.meta_query,queries:e}}})}},(0,a.__)("Remove query","advanced-query-loop"))),(0,n.createElement)("hr",null),(0,n.createElement)("br",null))},D=window.wp.data,P=({attributes:e,setAttributes:t,allowedControls:r})=>{const{query:{postType:l,meta_query:{relation:o="",queries:d=[]}={}}={}}=e,{records:i}=(0,S.useEntityRecords)("postType",l,{per_page:1}),[s]=(0,T.useState)(l);if((0,T.useEffect)((()=>{l!==s&&t({query:{...e.query,meta_query:{}}})}),[l]),!r.includes("post_meta_query"))return null;const c=(e=>({...e?.[0]?.meta,...e?.[0]?.acf}))(i);return(0,n.createElement)(n.Fragment,null,(0,n.createElement)(u.Dropdown,{popoverProps:{placement:"left-start",offset:36},renderToggle:({isOpen:e,onToggle:t})=>(0,n.createElement)(u.Button,{variant:e?"primary":"secondary",onClick:t,"aria-haspopup":"true","aria-expanded":e,disabled:0===Object.keys(c).length},e?(0,a.__)("Close Post meta query builder","advanced-query-loop"):(0,a.__)("Open Post Meta query builder","advanced-query-loop")),renderContent:()=>(0,n.createElement)(u.__experimentalDropdownContentWrapper,{paddingSize:"none",style:{width:"30rem"}},(0,n.createElement)(u.Panel,{header:(0,a.__)("Meta Query Builder","advanced-query-loop")},(0,n.createElement)(u.PanelBody,null,d.length>1&&(0,n.createElement)(n.Fragment,null,(0,n.createElement)(u.ToggleControl,{label:(0,a.__)("Match Any Condition","advanced-query-loop"),help:(0,a.__)("By default, conditions are combined using the AND operator, meaning all conditions must be met. Enable this option to use the OR operator instead, allowing results that match any of the conditions.","advanced-query-loop"),checked:"OR"===o,onChange:()=>{t({query:{...e.query,meta_query:{...e.query.meta_query,relation:"OR"===e.query.meta_query.relation?"AND":"OR"}}})},__nextHasNoMarginBottom:!1}),(0,n.createElement)("hr",null)),d.map((({id:r,meta_key:a,meta_value:l,compare:o})=>(0,n.createElement)(B,{key:r,id:r,metaKey:a,metaValue:l,metaCompare:o,registeredMetaKeys:Object.keys(c),queries:d,attributes:e,setAttributes:t}))),(0,n.createElement)(u.__experimentalHStack,null,(0,n.createElement)(u.Button,{variant:"primary",onClick:()=>{const r=[...d,{id:w(),meta_key:"",meta_value:"",meta_compare:""}];t({query:{...e.query,meta_query:{...e.query.meta_query,queries:r}}})}},(0,a.__)("Add new query","advanced-query-loop")),d.length>0&&(0,n.createElement)(u.Button,{variant:"primary",isDestructive:!0,onClick:()=>{t({query:{...e.query,meta_query:{}}})}},(0,a.__)("Reset queries","advanced-query-loop"))))))}))},M=({attributes:e,setAttributes:t,allowedControls:r})=>{const{query:{date_query:{relation:l="",date_primary:o=new Date,date_secondary:d=new Date,inclusive:i=!1,range:s="",current_date_in_range:c=!1}={}}={}}=e;return(0,n.createElement)(n.Fragment,null,(0,n.createElement)("h2",null,(0,a.__)("Post Date Query","advanced-query-loop")),r.includes("date_query_dynamic_range")&&(0,n.createElement)(u.SelectControl,{label:(0,a.__)("Dynamic Range","advanced-query-loop"),help:(0,a.__)("Show posts from the last month, 3 months, 6 months, or 12 months. Posts are shown from the 1st of the month.","advanced-query-loop"),value:s,disabled:""!==l,options:[{label:(0,a.__)("None","advanced-query-loop"),value:""},{label:(0,a.__)("Last month","advanced-query-loop"),value:"last-month"},{label:(0,a.__)("Last 3 months","advanced-query-loop"),value:"three-months"},{label:(0,a.__)("Last 6 months","advanced-query-loop"),value:"six-months"},{label:(0,a.__)("Last 12 months","advanced-query-loop"),value:"twelve-months"}],onChange:r=>{t({query:{...e.query,date_query:{...e.query.date_query,range:r}}})},__nextHasNoMarginBottom:!0}),""!==s&&r.includes("date_query_dynamic_range")&&(0,n.createElement)(u.CheckboxControl,{label:(0,a.__)("Include up to current date","advanced-query-loop"),help:(0,a.__)("Should the dynamic range include up to the current date?","advanced-query-loop"),disabled:""===s,checked:c,onChange:r=>{t({query:{...e.query,date_query:{...e.query.date_query,current_date_in_range:r}}})}}),r.includes("date_query_relationship")&&(0,n.createElement)(u.SelectControl,{label:(0,a.__)("Date Relationship","advanced-query-loop"),help:(0,a.__)("Show posts before or after the current date, or before, after, or between specific dates.","advanced-query-loop"),value:l,disabled:r.includes("date_query_dynamic_range")&&""!==s,options:[{label:(0,a.__)("None","advanced-query-loop"),value:""},{label:(0,a.__)("Before current date","advanced-query-loop"),value:"before-current"},{label:(0,a.__)("After current date","advanced-query-loop"),value:"after-current"},{label:(0,a.__)("Before specific date","advanced-query-loop"),value:"before"},{label:(0,a.__)("After specific date","advanced-query-loop"),value:"after"},{label:(0,a.__)("Between specific dates","advanced-query-loop"),value:"between"}],onChange:r=>{t({query:{...e.query,date_query:""!==r?{...e.query.date_query,relation:r}:""}})},__nextHasNoMarginBottom:!0}),""!==l&&!l.includes("current")&&r.includes("date_query_relationship")&&(0,n.createElement)(n.Fragment,null,"between"===l&&(0,n.createElement)("h4",null,(0,a.__)("Start date","advanced-query-loop")),(0,n.createElement)(u.DatePicker,{currentDate:o,onChange:r=>{t({query:{...e.query,date_query:{...e.query.date_query,date_primary:r}}})}}),"between"===l&&(0,n.createElement)(n.Fragment,null,(0,n.createElement)("h4",null,(0,a.__)("End date","advanced-query-loop")),(0,n.createElement)(u.DatePicker,{currentDate:d,onChange:r=>{t({query:{...e.query,date_query:{...e.query.date_query,date_secondary:r}}})}})),(0,n.createElement)("br",null),(0,n.createElement)(u.CheckboxControl,{label:(0,a.__)("Include selected date(s)","advanced-query-loop"),help:(0,a.__)("Should the selected date(s) be included in your query?","advanced-query-loop"),checked:i,onChange:r=>{t({query:{...e.query,date_query:{...e.query.date_query,inclusive:r}}})}})))},I=({attributes:e,setAttributes:t,allowedControls:r})=>{const{query:{multiple_posts:l=[],postType:o}={}}=e,d=(0,D.useSelect)((e=>e(S.store).getPostTypes({per_page:50})?.filter((({viewable:e})=>e))?.map((({slug:e})=>e))),[]);return r.includes("additional_post_types")?d?(0,n.createElement)(u.BaseControl,{help:(0,a.__)("These post types will be queried in addition to the main post type.","advanced-query-loop"),__nextHasNoMarginBottom:!0},(0,n.createElement)(u.FormTokenField,{label:(0,a.__)("Additional Post Types","advanced-query-loop"),value:[...l.filter((e=>e!==o))],suggestions:[...d?.filter((e=>e!==o))],onChange:r=>{t({query:{...e.query,multiple_posts:r||[]}})},__experimentalExpandOnFocus:!0,__experimentalShowHowTo:!1,__nextHasNoMarginBottom:!0})):(0,n.createElement)("div",null,(0,a.__)("Loading…","advanced-query-loop")):null},F=[{label:(0,a.__)("Name","advanced-query-loop"),value:"name"},{label:(0,a.__)("Author","advanced-query-loop"),value:"author"},{label:(0,a.__)("Comment Count","advanced-query-loop"),value:"comment_count"},{label:(0,a.__)("Date","advanced-query-loop"),value:"date"},{label:(0,a.__)("Included Posts","advanced-query-loop"),value:"post__in"},{label:(0,a.__)("Last Modified Date","advanced-query-loop"),value:"modified"},{label:(0,a.__)("Menu Order","advanced-query-loop"),value:"menu_order"},{label:(0,a.__)("Meta Value","advanced-query-loop"),value:"meta_value"},{label:(0,a.__)("Meta Value Num","advanced-query-loop"),value:"meta_value_num"},{label:(0,a.__)("Post ID","advanced-query-loop"),value:"id"},{label:(0,a.__)("Random","advanced-query-loop"),value:"rand"},{label:(0,a.__)("Title","advanced-query-loop"),value:"title"}],O=({attributes:e,setAttributes:t,allowedControls:r})=>{const{query:{order:l,orderBy:o}={}}=e;return r.includes("post_order")?(0,n.createElement)(n.Fragment,null,(0,n.createElement)(u.SelectControl,{label:(0,a.__)("Post Order By","advanced-query-loop"),value:o,help:"meta_value"===o||"meta_value_num"===o?(0,a.__)("Meta Value and Meta Value Num require that Meta Key is set in the Meta Query section.","advanced-query-loop"):"",options:F.sort(((e,t)=>e.label.localeCompare(t.label))),onChange:r=>{t({query:{...e.query,orderBy:r}})},__nextHasNoMarginBottom:!0}),(0,n.createElement)(u.ToggleControl,{label:(0,a.__)("Ascending Order","advanced-query-loop"),checked:"asc"===l,onChange:()=>{t({query:{...e.query,order:"asc"===l?"desc":"asc"}})},__nextHasNoMarginBottom:!0})):null},H=window.wp.htmlEntities,R=({attributes:e,setAttributes:t,allowedControls:r})=>{const{query:{exclude_current:l,exclude_posts:o=[]}={}}=e;return r.includes("exclude_current_post")||r.includes("exclude_posts")?(0,n.createElement)(n.Fragment,null,(0,n.createElement)("h2",null," ",(0,a.__)("Exclude Posts","advanced-query-loop")),(0,n.createElement)(L,{attributes:e,setAttributes:t,allowedControls:r}),(0,n.createElement)(Q,{attributes:e,setAttributes:t,allowedControls:r})):null},L=({attributes:e,setAttributes:t,allowedControls:r})=>{const{query:{exclude_current:l}={}}=e,{record:o}=(0,S.useEntityRecord)("root","site"),{currentPost:d,isAdmin:i}=(0,D.useSelect)((e=>({currentPost:e("core/editor").getCurrentPost(),isAdmin:e(S.store).canUser("update",{kind:"root",name:"site"})})),[]);if(!r.includes("exclude_current_post"))return null;if(!d)return(0,n.createElement)("div",null,(0,a.__)("Loading…","advanced-query-loop"));const s=()=>{if(!i)return!1;const{show_on_front:e}=o,t=["archive","search",..."posts"===e?["home","front-page"]:[]];return"wp_template"===d.type&&t.includes(d.slug)};return(0,n.createElement)(u.ToggleControl,{__nextHasNoMarginBottom:!0,label:(0,a.__)("Exclude Current Post","advanced-query-loop"),checked:!!l,disabled:s(),onChange:r=>{t({query:{...e.query,exclude_current:r?d.id:0}})},help:s()?(0,a.__)("This option is disabled for this template as there is no dedicated post to exclude.","advanced-query-loop"):(0,a.__)("Remove the associated post for this template/content from the query results.","advanced-query-loop")})},Q=({attributes:e,setAttributes:t,allowedControls:r})=>{const{query:{exclude_posts:l=[],multiple_posts:o=[],postType:d}={}}=e,i=(0,D.useSelect)((e=>{const{getEntityRecords:t}=e("core");return[...o,d].reduce(((e,r)=>[...e,...t("postType",r,{per_page:-1})||[]]),[])}),[d,o]);return r.includes("exclude_posts")?i?(0,n.createElement)(u.BaseControl,{help:(0,a.__)("Start typing to search for a post title to exclude, or manually enter one.","advanced-query-loop")},(0,n.createElement)(u.FormTokenField,{label:(0,a.__)("Posts to Exclude","advanced-query-loop"),value:l.flatMap((e=>(e=>{const t=i.find((t=>t.id===e));return t?[(0,H.decodeEntities)(t.title.rendered.trim())]:[]})(e))),suggestions:i.map((e=>(0,H.decodeEntities)(e.title.rendered.trim()))),onChange:r=>{t({query:{...e.query,exclude_posts:r.flatMap((e=>(e=>{const t=i.find((t=>(0,H.decodeEntities)(t.title.rendered.trim())===e));return t?[t.id]:[]})(e)))||[]}})},__experimentalExpandOnFocus:!0,__experimentalShowHowTo:!1})):(0,n.createElement)("div",null,(0,a.__)("Loading…","advanced-query-loop")):null},z=window.wp.compose,U=(e,t,r,a)=>e.map((e=>e.id===t?{...e,[r]:a}:e)),V=["EXISTS","NOT EXISTS","AND"],K=["IN","NOT IN",...V],j={marginTop:"1.5em",marginBottom:"0.75em"},X=({id:e,taxonomy:t,terms:r,operator:l,includeChildren:o,availableTaxonomies:d,attributes:i,setAttributes:s})=>{const[c,y]=((e,t)=>{const[r,a]=(0,T.useState)(e);return[r,(0,z.useDebounce)(a,t)]})("",500),[m,_]=(0,T.useState)(!1),[p,q]=(0,T.useState)(!1),{records:h}=(0,S.useEntityRecords)("taxonomy",t,{per_page:10,search:c,_fields:"id,name",context:"view"}),g=(0,T.useMemo)((()=>(null!=h?h:[]).map((e=>e.name))),[h]);return(0,T.useEffect)((()=>{V.includes(l)||!1===o?(_(!0),q(!0)):q(!1)}),[l,o]),(0,n.createElement)(n.Fragment,null,(0,n.createElement)(u.SelectControl,{label:(0,a.__)("Taxonomy","advanced-query-loop"),value:t,options:[{label:"Choose taxonomy",value:""},...d.map((({name:e,slug:t})=>({label:e,value:t})))],onChange:t=>{s({query:{...i.query,tax_query:{...i.query.tax_query,queries:U(i.query.tax_query.queries,e,"taxonomy",t)}}})},__next40pxDefaultSize:!0}),t.length>1&&(0,n.createElement)(n.Fragment,null,(0,n.createElement)(u.FormTokenField,{label:(0,a.__)("Terms","advanced-query-loop"),suggestions:g,value:r,onInputChange:e=>{y(e)},onChange:t=>{s({query:{...i.query,tax_query:{...i.query.tax_query,queries:U(i.query.tax_query.queries,e,"terms",t)}}})},__next40pxDefaultSize:!0}),m?(0,n.createElement)(n.Fragment,null,(0,n.createElement)(u.SelectControl,{label:(0,a.__)("Operator","advanced-query-loop"),value:l,options:[...K.map((e=>({label:e,value:e})))],onChange:t=>{s({query:{...i.query,tax_query:{...i.query.tax_query,queries:U(i.query.tax_query.queries,e,"operator",t)}}})},__next40pxDefaultSize:!0}),(0,n.createElement)("div",{style:j},(0,n.createElement)(u.ToggleControl,{label:(0,a.__)("Include children","advanced-query-loop"),className:"advanced-query-loop__include-children",checked:o,onChange:t=>{s({query:{...i.query,tax_query:{...i.query.tax_query,queries:U(i.query.tax_query.queries,e,"include_children",t)}}})},__next40pxDefaultSize:!0}))):(0,n.createElement)(u.ToggleControl,{label:(0,a.__)("Exclude these terms from the query","advanced-query-loop"),checked:"NOT IN"===l,onChange:()=>{const t=i.query.tax_query.queries.find((t=>t.id===e));s({query:{...i.query,tax_query:{...i.query.tax_query,queries:U(i.query.tax_query.queries,e,"operator","IN"===t.operator?"NOT IN":"IN")}}})},__next40pxDefaultSize:!0})),(0,n.createElement)("hr",null),(0,n.createElement)(u.__experimentalHStack,{alignment:t?"edge":"right",style:j},t&&(0,n.createElement)(u.ToggleControl,{checked:m,label:(0,a.__)("Advanced mode","advanced-query-loop"),onChange:()=>_(!m),disabled:p,__nextHasNoMarginBottom:!0}),(0,n.createElement)(u.Button,{key:e,variant:"secondary",size:"small",isDestructive:!0,onClick:()=>s({query:{...i.query,tax_query:{...i.query.tax_query,queries:i.query.tax_query.queries.filter((({id:t})=>t!==e))}}})},(0,a.__)("Remove query","advanced-query-loop"))),(0,n.createElement)("hr",null),(0,n.createElement)("br",null))},G=({attributes:e,setAttributes:t,allowedControls:r})=>{const{query:{postType:l,multiple_posts:o=[],tax_query:{relation:d="",queries:i=[]}={}}={}}=e,s=(0,D.useSelect)((e=>e(S.store).getTaxonomies({per_page:50})?.filter((({types:e})=>e.some((e=>[l,...o].includes(e)))))));return r.includes("taxonomy_query_builder")?(0,n.createElement)(n.Fragment,null,(0,n.createElement)(u.Dropdown,{popoverProps:{placement:"left-start",offset:36},renderToggle:({isOpen:e,onToggle:t})=>(0,n.createElement)(u.Button,{variant:e?"primary":"secondary",onClick:t,"aria-haspopup":"true","aria-expanded":e,disabled:0===s.length},e?(0,a.__)("Close Taxonomy query builder","advanced-query-loop"):(0,a.__)("Open Taxonomy query builder","advanced-query-loop")),renderContent:()=>(0,n.createElement)(u.__experimentalDropdownContentWrapper,{paddingSize:"none",style:{width:"30rem"}},(0,n.createElement)(u.Panel,{header:(0,a.__)("Taxonomy Query Builder","advanced-query-loop")},(0,n.createElement)(u.PanelBody,null,i.length>1&&(0,n.createElement)(n.Fragment,null,(0,n.createElement)(u.ToggleControl,{label:(0,a.__)("Combine filters","advanced-query-loop"),help:(0,a.__)("By default, filters are combined with the OR operator. Enable this option to combine filters with the AND operator.","advanced-query-loop"),checked:"AND"===d,onChange:()=>{t({query:{...e.query,tax_query:{...e.query.tax_query,relation:"OR"===e.query.tax_query.relation?"AND":"OR"}}})},__nextHasNoMarginBottom:!1}),(0,n.createElement)("hr",null)),i.map((({id:r,taxonomy:a,terms:l,operator:o,include_children:u})=>(0,n.createElement)(X,{key:r,taxonomy:a,operator:o,terms:l,id:r,relation:d,includeChildren:u,availableTaxonomies:s,setAttributes:t,attributes:e}))),(0,n.createElement)(u.__experimentalHStack,null,(0,n.createElement)(u.Button,{variant:"primary",onClick:()=>{t({query:{...e.query,tax_query:{relation:d||"OR",queries:[...i,{id:w(),taxonomy:"",terms:[],include_children:!0,operator:"IN"}]}}})}},(0,a.__)("Add new query","advanced-query-loop")),i.length>0&&(0,n.createElement)(u.Button,{variant:"primary",isDestructive:!0,onClick:()=>{t({query:{...e.query,tax_query:[]}})}},(0,a.__)("Reset queries","advanced-query-loop"))))))})):null},W=({attributes:e,setAttributes:t,allowedControls:r})=>{const{query:{include_posts:l=[],postType:o,multiple_posts:d=[],exclude_current:i=0}={}}=e,[s,c]=(0,T.useState)(""),[y,m]=(0,T.useState)(d),_=(0,D.useSelect)((e=>{const{getEntityRecords:t}=e("core");return[...d,o].reduce(((e,r)=>[...e,...t("postType",r,{per_page:10,search:s,exclude:i?[i]:[]})||[]]),[])}),[o,d,i,s]);return(0,T.useEffect)((()=>{JSON.stringify(d)!==JSON.stringify(y)&&(t({query:{...e.query,include_posts:[]}}),m(d))}),[d]),r.includes("include_posts")?_?_.length>0&&!_[0].title?null:(0,n.createElement)(n.Fragment,null,(0,n.createElement)("h2",null," ",(0,a.__)("Include Posts","advanced-query-loop")),(0,n.createElement)(u.BaseControl,{help:(0,a.__)("Start typing to search for a post title or manually enter one.","advanced-query-loop"),__nextHasNoMarginBottom:!0},(0,n.createElement)(u.FormTokenField,{label:(0,a.__)("Posts","advanced-query-loop"),value:l.map((e=>(0,H.decodeEntities)(e.title))),suggestions:_.map((e=>(0,H.decodeEntities)(e?.title?.rendered||""))),onInputChange:e=>c(e),onChange:r=>{t({query:{...e.query,include_posts:r.map((e=>(e=>{const t=l.find((t=>(0,H.decodeEntities)(t.title)===e))||_.find((t=>(0,H.decodeEntities)(t.title.rendered.trim())===e));return t.title.rendered?{id:t.id,title:t.title.rendered}:t})(e)))||[]}}),c("")},__experimentalExpandOnFocus:!0,__experimentalShowHowTo:!1,__nextHasNoMarginBottom:!0}))):(0,n.createElement)("div",null,(0,a.__)("Loading…","advanced-query-loop")):null},J=({attributes:e,setAttributes:t,allowedControls:r})=>{const{query:{disable_pagination:l}={}}=e;return r.includes("pagination")?(0,n.createElement)(u.ToggleControl,{label:(0,a.__)("Disable pagination","advanced-query-loop"),help:(0,a.__)("Disabling pagination will not show any pagination controls on the front end. It can also provide a performance improvement for complicated queries.","advanced-query-loop"),checked:!!l,onChange:()=>{t({query:{...e.query,disable_pagination:!l}})},__nextHasNoMarginBottom:!0}):null},Y=window.wp.editor,$=({attributes:e,setAttributes:t,allowedControls:r})=>{const{query:{post_parent:l}={}}=e,{isHierarchial:o,postTypeName:d,postID:i}=(0,D.useSelect)((e=>{const t=e(Y.store).getCurrentPost(),r=e(Y.store).getCurrentPostType(),a=e(S.store).getPostType(r);return{isHierarchial:a?.hierarchical,postTypeName:r,postID:t?.id}}),[]);return r.includes("child_items_only")?(0,n.createElement)(u.ToggleControl,{__nextHasNoMarginBottom:!0,label:(0,a.__)("Show child items only","advanced-query-loop"),help:(0,a.__)("Only show child items of this item. This option is only available for hierarchical post types such as pages.","advanced-query-loop"),disabled:!o&&"wp_template"!==d,checked:!!l,onChange:r=>t({query:{...e.query,post_parent:r?i:0}})}):null};(0,l.addFilter)("editor.BlockEdit","aql/add-add-controls/core/query",(e=>t=>{if((e=>{const{attributes:{namespace:t}}=e;return t&&t===ee})(t)){const{allowedControls:r}=window?.aql,{attributes:l}=t,d=r.split(","),i={...t,allowedControls:d};return l.query.inherit?(0,n.createElement)(n.Fragment,null,(0,n.createElement)(e,{...t}),(0,n.createElement)(o.InspectorControls,null,(0,n.createElement)(u.PanelBody,{title:(0,a.__)("Advanced Query Settings","advanced-query-loop")},(0,n.createElement)(O,{...i}),(0,n.createElement)(p.Slot,{fillProps:{...i}})))):(0,n.createElement)(n.Fragment,null,(0,n.createElement)(e,{...t}),(0,n.createElement)(o.InspectorControls,null,(0,n.createElement)(u.PanelBody,{title:(0,a.__)("Advanced Query Settings","advanced-query-loop")},(0,n.createElement)(v.Slot,{fillProps:{...i}}),(0,n.createElement)(I,{...i}),(0,n.createElement)(u.BaseControl,{label:(0,a.__)("Query Builders","advanced-query-loop"),id:"query-builders"},(0,n.createElement)(u.__experimentalVStack,{alignment:"center"},(0,n.createElement)(G,{...i}),(0,n.createElement)(P,{...i}))),(0,n.createElement)(O,{...i}),(0,n.createElement)(R,{...i}),(0,n.createElement)(W,{...i}),(0,n.createElement)($,{...i}),(0,n.createElement)(M,{...i}),(0,n.createElement)(J,{...i}),(0,n.createElement)(c.Slot,{fillProps:{...i}}))))}return(0,n.createElement)(e,{...t})})),(0,l.addFilter)("blocks.registerBlockType","aql/add-transforms/query-block",(function(e,t){return"core/query"!==t?e:{...e,keywords:[...e.keywords,"AQL","aql"],transforms:{to:e?.transforms?.to||[],from:[...e?.transforms?.from||[],{type:"enter",regExp:/^(AQL|aql)$/,transform:()=>(0,r.createBlock)("core/query",{namespace:"advanced-query-loop"},[])}]}}}));const Z=window.wp.primitives,ee="advanced-query-loop";(0,r.registerBlockVariation)("core/query",{name:ee,title:(0,a.__)("Advanced Query Loop","advanced-query-loop"),description:(0,a.__)("Create advanced queries","advanced-query-loop"),icon:function(){return(0,n.createElement)(Z.SVG,{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",fill:"none",viewBox:"0 0 24 24"},(0,n.createElement)(Z.Path,{fill:"#2D2B55",d:"M0 0h24v24H0V0z"}),(0,n.createElement)(Z.Path,{fill:"#fff",d:"M17.936 8.438h1.217v6.125h2.867v1.093h-4.084V8.437zM10.364 12.047c0 .515.11.97.33 1.361.22.392.519.701.897.928.385.22.815.33 1.289.33.481 0 .907-.106 1.279-.32.371-.22.663-.522.876-.907.213-.385.32-.825.32-1.32 0-.495-.107-.942-.32-1.34a2.455 2.455 0 00-.886-.95c-.372-.233-.812-.35-1.32-.35-.475 0-.898.11-1.269.33-.371.22-.663.526-.877.918-.213.385-.32.825-.32 1.32zm-1.29 0c0-.543.094-1.042.28-1.495.192-.454.456-.846.793-1.176a3.685 3.685 0 011.197-.784c.46-.185.955-.278 1.485-.278.543 0 1.041.093 1.495.278a3.57 3.57 0 011.186.784c.337.33.598.722.784 1.176.185.453.278.952.278 1.495 0 .536-.093 1.034-.278 1.495-.186.46-.447.86-.784 1.196-.33.337-.722.602-1.176.795a3.941 3.941 0 01-1.505.278 3.964 3.964 0 01-1.496-.278 3.676 3.676 0 01-1.196-.795 3.545 3.545 0 01-.784-1.196 3.964 3.964 0 01-.278-1.495zm3.425.515H13.9l3.248 3.146h-1.433l-3.217-3.146z"}),(0,n.createElement)(Z.Path,{fill:"#E76F51",d:"M3.546 13.8l.227-1.031h3.351l.237 1.031H3.546zm1.887-3.32l-1.134 2.65-.021.268-1 2.258H1.906l3.527-7.62 3.527 7.62H7.588l-.98-2.196-.03-.3-1.145-2.68z"}))},isActive:["namespace"],attributes:{namespace:ee},scope:["inserter","transform"]}),aql=t})();
     1var aql;(()=>{"use strict";var e={d:(t,r)=>{for(var a in r)e.o(r,a)&&!e.o(t,a)&&Object.defineProperty(t,a,{enumerable:!0,get:r[a]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{AQL:()=>ae,AQLControls:()=>_,AQLControlsInheritedQuery:()=>h});const r=window.wp.blocks,a=window.wp.i18n,n=window.React,l=window.wp.hooks,o=window.wp.blockEditor,u=window.wp.data,d=window.wp.components,s=window.wp.editor,{Fill:i,Slot:c}=(0,d.createSlotFill)("AQLControls"),y=({children:e})=>(0,n.createElement)(i,null,e);y.Slot=({fillProps:e})=>(0,n.createElement)(c,{fillProps:e},(e=>e.length?e:null));const _=y,{Fill:m,Slot:p}=(0,d.createSlotFill)("AQLControlsInheritedQuery"),q=({children:e})=>(0,n.createElement)(m,null,e);q.Slot=p;const h=q,{Fill:g,Slot:v}=(0,d.createSlotFill)("AQLLegacyControls"),E=({children:e})=>(0,n.createElement)(g,null,e);E.Slot=({fillProps:e})=>(0,n.createElement)(v,{fillProps:e},(e=>e.length?e:null));const b=E,f={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};let C;const x=new Uint8Array(16);function w(){if(!C&&(C="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!C))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return C(x)}const T=[];for(let e=0;e<256;++e)T.push((e+256).toString(16).slice(1));const S=function(e,t,r){if(f.randomUUID&&!t&&!e)return f.randomUUID();const a=(e=e||{}).random||(e.rng||w)();if(a[6]=15&a[6]|64,a[8]=63&a[8]|128,t){r=r||0;for(let e=0;e<16;++e)t[r+e]=a[e];return t}return function(e,t=0){return T[e[t+0]]+T[e[t+1]]+T[e[t+2]]+T[e[t+3]]+"-"+T[e[t+4]]+T[e[t+5]]+"-"+T[e[t+6]]+T[e[t+7]]+"-"+T[e[t+8]]+T[e[t+9]]+"-"+T[e[t+10]]+T[e[t+11]]+T[e[t+12]]+T[e[t+13]]+T[e[t+14]]+T[e[t+15]]}(a)},k=window.wp.element,A=["=","!=",">",">=","<","<=","LIKE","NOT LIKE","IN","NOT IN","BETWEEN","NOT BETWEEN","EXISTS","NOT EXISTS","REGEXP","NOT REGEXP","RLIKE"],P=["CHAR","NUMERIC","BINARY","DATE","DATETIME","DECIMAL","SIGNED","TIME","UNSIGNED"],N={marginTop:"0.75em",marginBottom:"0.75em"},B=({registeredMetaKeys:e,id:t,queries:r,attributes:l,setAttributes:o})=>{const u=r.find((e=>e.id===t)),[s,i]=(0,k.useState)(!1),[c,y]=(0,k.useState)(!1);(0,k.useEffect)((()=>{u?.meta_type&&"CHAR"!==u?.meta_type||u?.meta_compare&&"="!==u?.meta_compare?(i(!0),y(!0)):y(!1)}),[u?.meta_type,u?.meta_compare]);const _=(e,t,r,a)=>e.map((e=>e.id===t?{...e,[r]:a}:e));return(0,n.createElement)(n.Fragment,null,(0,n.createElement)(d.FormTokenField,{label:(0,a.__)("Meta Key","advanced-query-loop"),value:u?.meta_key?.length?[u.meta_key]:[],__experimentalShowHowTo:!1,suggestions:e,maxLength:1,onChange:e=>{o({query:{...l.query,meta_query:{...l.query.meta_query,queries:_(r,t,"meta_key",e[0])}}})}}),u?.meta_key?.length>0&&(0,n.createElement)(n.Fragment,null,(0,n.createElement)(d.TextControl,{label:(0,a.__)("Meta Value","advanced-query-loop"),value:u.meta_value,onChange:e=>{o({query:{...l.query,meta_query:{...l.query.meta_query,queries:_(r,t,"meta_value",e)}}})}}),s&&(0,n.createElement)(n.Fragment,null,(0,n.createElement)(d.SelectControl,{label:(0,a.__)("Meta Compare","advanced-query-loop"),value:u.meta_compare,options:[...A.map((e=>({label:e,value:e})))],onChange:e=>{o({query:{...l.query,meta_query:{...l.query.meta_query,queries:_(r,t,"meta_compare",e)}}})}}),(0,n.createElement)(d.SelectControl,{label:(0,a.__)("Meta Type","advanced-query-loop"),value:u.meta_type,options:[...P.map((e=>({label:e,value:e})))],onChange:e=>{o({query:{...l.query,meta_query:{...l.query.meta_query,queries:_(r,t,"meta_type",e)}}})},__nextHasNoMarginBottom:!0}))),(0,n.createElement)("hr",null),(0,n.createElement)(d.__experimentalHStack,{alignment:u?.meta_key?"edge":"right",style:N},u?.meta_key&&(0,n.createElement)(d.ToggleControl,{checked:s,label:(0,a.__)("Advanced mode","advanced-query-loop"),onChange:()=>i(!s),disabled:c}),(0,n.createElement)(d.Button,{key:t,variant:"secondary",size:"small",isDestructive:!0,onClick:()=>{const e=r.filter((e=>e.id!==t));o({query:{...l.query,meta_query:{...l.query.meta_query,queries:e}}})}},(0,a.__)("Remove query","advanced-query-loop"))),(0,n.createElement)("hr",null),(0,n.createElement)("br",null))},D=window.wp.coreData,I=({attributes:e,setAttributes:t,allowedControls:r})=>{const{query:{postType:l,multiple_posts:o=[],meta_query:{relation:s="",queries:i=[]}={}}={}}=e,c=(_=[l,...o],(0,u.useSelect)((e=>{let t={};return Array.isArray(_)&&0!==_.length?(_.filter(Boolean).forEach((r=>{const a=e(D.store).getEntityRecords("postType",r,{per_page:1});a&&void 0!==a?.[0]?.meta&&(t={...t,...a?.[0]?.meta,...a?.[0]?.acf})})),t):t}),[_])),[y]=(0,k.useState)(l);var _;return(0,k.useEffect)((()=>{l!==y&&t({query:{...e.query,meta_query:{}}})}),[l]),r.includes("post_meta_query")?(0,n.createElement)(n.Fragment,null,(0,n.createElement)(d.Dropdown,{popoverProps:{placement:"left-start",offset:36},renderToggle:({isOpen:e,onToggle:t})=>(0,n.createElement)(d.Button,{variant:e?"primary":"secondary",onClick:t,"aria-haspopup":"true","aria-expanded":e,disabled:0===Object.keys(c).length},e?(0,a.__)("Close Post meta query builder","advanced-query-loop"):(0,a.__)("Open Post Meta query builder","advanced-query-loop")),renderContent:()=>(0,n.createElement)(d.__experimentalDropdownContentWrapper,{paddingSize:"none",style:{width:"30rem"}},(0,n.createElement)(d.Panel,{header:(0,a.__)("Meta Query Builder","advanced-query-loop")},(0,n.createElement)(d.PanelBody,null,i.length>1&&(0,n.createElement)(n.Fragment,null,(0,n.createElement)(d.ToggleControl,{label:(0,a.__)("Match Any Condition","advanced-query-loop"),help:(0,a.__)("By default, conditions are combined using the AND operator, meaning all conditions must be met. Enable this option to use the OR operator instead, allowing results that match any of the conditions.","advanced-query-loop"),checked:"OR"===s,onChange:()=>{t({query:{...e.query,meta_query:{...e.query.meta_query,relation:"OR"===e.query.meta_query.relation?"AND":"OR"}}})},__nextHasNoMarginBottom:!1}),(0,n.createElement)("hr",null)),i.map((({id:r,meta_key:a,meta_value:l,compare:o})=>(0,n.createElement)(B,{key:r,id:r,metaKey:a,metaValue:l,metaCompare:o,registeredMetaKeys:Object.keys(c),queries:i,attributes:e,setAttributes:t}))),(0,n.createElement)(d.__experimentalHStack,null,(0,n.createElement)(d.Button,{variant:"primary",onClick:()=>{const r=[...i,{id:S(),meta_key:"",meta_value:"",meta_compare:""}];t({query:{...e.query,meta_query:{...e.query.meta_query,queries:r}}})}},(0,a.__)("Add new query","advanced-query-loop")),i.length>0&&(0,n.createElement)(d.Button,{variant:"primary",isDestructive:!0,onClick:()=>{t({query:{...e.query,meta_query:{}}})}},(0,a.__)("Reset queries","advanced-query-loop"))))))})):null},M=({attributes:e,setAttributes:t,allowedControls:r})=>{const{query:{date_query:{relation:l="",date_primary:o=new Date,date_secondary:u=new Date,inclusive:s=!1,range:i="",current_date_in_range:c=!1}={}}={}}=e;return(0,n.createElement)(n.Fragment,null,(0,n.createElement)("h2",null,(0,a.__)("Post Date Query","advanced-query-loop")),r.includes("date_query_dynamic_range")&&(0,n.createElement)(d.SelectControl,{label:(0,a.__)("Dynamic Range","advanced-query-loop"),help:(0,a.__)("Show posts from the last month, 3 months, 6 months, or 12 months. Posts are shown from the 1st of the month.","advanced-query-loop"),value:i,disabled:""!==l,options:[{label:(0,a.__)("None","advanced-query-loop"),value:""},{label:(0,a.__)("Last month","advanced-query-loop"),value:"last-month"},{label:(0,a.__)("Last 3 months","advanced-query-loop"),value:"three-months"},{label:(0,a.__)("Last 6 months","advanced-query-loop"),value:"six-months"},{label:(0,a.__)("Last 12 months","advanced-query-loop"),value:"twelve-months"}],onChange:r=>{t({query:{...e.query,date_query:{...e.query.date_query,range:r}}})},__nextHasNoMarginBottom:!0}),""!==i&&r.includes("date_query_dynamic_range")&&(0,n.createElement)(d.CheckboxControl,{label:(0,a.__)("Include up to current date","advanced-query-loop"),help:(0,a.__)("Should the dynamic range include up to the current date?","advanced-query-loop"),disabled:""===i,checked:c,onChange:r=>{t({query:{...e.query,date_query:{...e.query.date_query,current_date_in_range:r}}})}}),r.includes("date_query_relationship")&&(0,n.createElement)(d.SelectControl,{label:(0,a.__)("Date Relationship","advanced-query-loop"),help:(0,a.__)("Show posts before or after the current date, or before, after, or between specific dates.","advanced-query-loop"),value:l,disabled:r.includes("date_query_dynamic_range")&&""!==i,options:[{label:(0,a.__)("None","advanced-query-loop"),value:""},{label:(0,a.__)("Before current date","advanced-query-loop"),value:"before-current"},{label:(0,a.__)("After current date","advanced-query-loop"),value:"after-current"},{label:(0,a.__)("Before specific date","advanced-query-loop"),value:"before"},{label:(0,a.__)("After specific date","advanced-query-loop"),value:"after"},{label:(0,a.__)("Between specific dates","advanced-query-loop"),value:"between"}],onChange:r=>{t({query:{...e.query,date_query:""!==r?{...e.query.date_query,relation:r}:""}})},__nextHasNoMarginBottom:!0}),""!==l&&!l.includes("current")&&r.includes("date_query_relationship")&&(0,n.createElement)(n.Fragment,null,"between"===l&&(0,n.createElement)("h4",null,(0,a.__)("Start date","advanced-query-loop")),(0,n.createElement)(d.DatePicker,{currentDate:o,onChange:r=>{t({query:{...e.query,date_query:{...e.query.date_query,date_primary:r}}})}}),"between"===l&&(0,n.createElement)(n.Fragment,null,(0,n.createElement)("h4",null,(0,a.__)("End date","advanced-query-loop")),(0,n.createElement)(d.DatePicker,{currentDate:u,onChange:r=>{t({query:{...e.query,date_query:{...e.query.date_query,date_secondary:r}}})}})),(0,n.createElement)("br",null),(0,n.createElement)(d.CheckboxControl,{label:(0,a.__)("Include selected date(s)","advanced-query-loop"),help:(0,a.__)("Should the selected date(s) be included in your query?","advanced-query-loop"),checked:s,onChange:r=>{t({query:{...e.query,date_query:{...e.query.date_query,inclusive:r}}})}})))},F=({attributes:e,setAttributes:t,allowedControls:r})=>{const{query:{multiple_posts:l=[],postType:o}={}}=e,s=(0,u.useSelect)((e=>e(D.store).getPostTypes({per_page:50})?.filter((({viewable:e})=>e))?.map((({slug:e})=>e))),[]);return r.includes("additional_post_types")?s?(0,n.createElement)(d.BaseControl,{help:(0,a.__)("These post types will be queried in addition to the main post type.","advanced-query-loop"),__nextHasNoMarginBottom:!0},(0,n.createElement)(d.FormTokenField,{label:(0,a.__)("Additional Post Types","advanced-query-loop"),value:[...l.filter((e=>e!==o))],suggestions:[...s?.filter((e=>e!==o))],onChange:r=>{t({query:{...e.query,multiple_posts:r||[]}})},__experimentalExpandOnFocus:!0,__experimentalShowHowTo:!1,__nextHasNoMarginBottom:!0})):(0,n.createElement)("div",null,(0,a.__)("Loading…","advanced-query-loop")):null},O=[{label:(0,a.__)("Name","advanced-query-loop"),value:"name"},{label:(0,a.__)("Author","advanced-query-loop"),value:"author"},{label:(0,a.__)("Comment Count","advanced-query-loop"),value:"comment_count"},{label:(0,a.__)("Date","advanced-query-loop"),value:"date"},{label:(0,a.__)("Included Posts","advanced-query-loop"),value:"post__in"},{label:(0,a.__)("Last Modified Date","advanced-query-loop"),value:"modified"},{label:(0,a.__)("Menu Order","advanced-query-loop"),value:"menu_order"},{label:(0,a.__)("Meta Value","advanced-query-loop"),value:"meta_value"},{label:(0,a.__)("Meta Value Num","advanced-query-loop"),value:"meta_value_num"},{label:(0,a.__)("Post ID","advanced-query-loop"),value:"id"},{label:(0,a.__)("Random","advanced-query-loop"),value:"rand"},{label:(0,a.__)("Title","advanced-query-loop"),value:"title"}],H=({attributes:e,setAttributes:t,allowedControls:r})=>{const{query:{order:l,orderBy:o}={}}=e;return r.includes("post_order")?(0,n.createElement)(n.Fragment,null,(0,n.createElement)(d.SelectControl,{label:(0,a.__)("Post Order By","advanced-query-loop"),value:o,help:"meta_value"===o||"meta_value_num"===o?(0,a.__)("Meta Value and Meta Value Num require that Meta Key is set in the Meta Query section.","advanced-query-loop"):"",options:O.sort(((e,t)=>e.label.localeCompare(t.label))),onChange:r=>{t({query:{...e.query,orderBy:r,..."rand"===r&&{enable_caching:!1}}})},__nextHasNoMarginBottom:!0}),(0,n.createElement)(d.ToggleControl,{label:(0,a.__)("Ascending Order","advanced-query-loop"),checked:"asc"===l,onChange:()=>{t({query:{...e.query,order:"asc"===l?"desc":"asc"}})},__nextHasNoMarginBottom:!0})):null},R=window.wp.htmlEntities,L=({attributes:e,setAttributes:t,allowedControls:r})=>r.includes("exclude_current_post")||r.includes("exclude_posts")?(0,n.createElement)(n.Fragment,null,(0,n.createElement)("h2",null," ",(0,a.__)("Exclude Posts","advanced-query-loop")),(0,n.createElement)(Q,{attributes:e,setAttributes:t,allowedControls:r}),(0,n.createElement)(z,{attributes:e,setAttributes:t,allowedControls:r})):null,Q=({attributes:e,setAttributes:t,allowedControls:r})=>{const{query:{exclude_current:l}={}}=e,{record:o}=(0,D.useEntityRecord)("root","site"),{currentPost:s,isAdmin:i}=(0,u.useSelect)((e=>({currentPost:e("core/editor").getCurrentPost(),isAdmin:e(D.store).canUser("update",{kind:"root",name:"site"})})),[]);if(!r.includes("exclude_current_post"))return null;if(!s)return(0,n.createElement)("div",null,(0,a.__)("Loading…","advanced-query-loop"));const c=()=>{if(!i||!s)return!1;if("wp_template"!==s.type)return!1;const{show_on_front:e}=o;return["archive","search",..."posts"===e?["home","front-page"]:[]].includes(s.slug)};return(0,n.createElement)(d.ToggleControl,{__nextHasNoMarginBottom:!0,label:(0,a.__)("Exclude Current Post","advanced-query-loop"),checked:!!l,disabled:c(),onChange:r=>{t({query:{...e.query,exclude_current:r}})},help:c()?(0,a.__)("This option is disabled for this template as there is no dedicated post to exclude.","advanced-query-loop"):(0,a.__)("Remove the associated post for this template/content from the query results.","advanced-query-loop")})},z=({attributes:e,setAttributes:t,allowedControls:r})=>{const{query:{exclude_posts:l=[],multiple_posts:o=[],postType:s}={}}=e,i=(0,u.useSelect)((e=>{const{getEntityRecords:t}=e("core");return[...o,s].reduce(((e,r)=>[...e,...t("postType",r,{per_page:-1})||[]]),[])}),[s,o]);return r.includes("exclude_posts")?i?(0,n.createElement)(d.BaseControl,{help:(0,a.__)("Start typing to search for a post title to exclude, or manually enter one.","advanced-query-loop")},(0,n.createElement)(d.FormTokenField,{label:(0,a.__)("Posts to Exclude","advanced-query-loop"),value:l.flatMap((e=>(e=>{const t=i.find((t=>t.id===e));return t?[(0,R.decodeEntities)(t.title.rendered.trim())]:[]})(e))),suggestions:i.map((e=>(0,R.decodeEntities)(e.title.rendered.trim()))),onChange:r=>{t({query:{...e.query,exclude_posts:r.flatMap((e=>(e=>{const t=i.find((t=>(0,R.decodeEntities)(t.title.rendered.trim())===e));return t?[t.id]:[]})(e)))||[]}})},__experimentalExpandOnFocus:!0,__experimentalShowHowTo:!1})):(0,n.createElement)("div",null,(0,a.__)("Loading…","advanced-query-loop")):null},V=window.wp.compose,U=(e,t,r,a)=>e.map((e=>e.id===t?{...e,[r]:a}:e)),K=["EXISTS","NOT EXISTS","AND"],j=["IN","NOT IN",...K],X={marginTop:"1.5em",marginBottom:"0.75em"},G=({id:e,taxonomy:t,terms:r,operator:l,includeChildren:o,availableTaxonomies:u,attributes:s,setAttributes:i})=>{const[c,y]=((e,t)=>{const[r,a]=(0,k.useState)(e);return[r,(0,V.useDebounce)(a,t)]})("",500),[_,m]=(0,k.useState)(!1),[p,q]=(0,k.useState)(!1),{records:h}=(0,D.useEntityRecords)("taxonomy",t,{per_page:10,search:c,_fields:"id,name",context:"view"}),g=(0,k.useMemo)((()=>(null!=h?h:[]).map((e=>e.name))),[h]);return(0,k.useEffect)((()=>{K.includes(l)||!1===o?(m(!0),q(!0)):q(!1)}),[l,o]),(0,n.createElement)(n.Fragment,null,(0,n.createElement)(d.SelectControl,{label:(0,a.__)("Taxonomy","advanced-query-loop"),value:t,options:[{label:"Choose taxonomy",value:""},...u.map((({name:e,slug:t})=>({label:e,value:t})))],onChange:t=>{i({query:{...s.query,tax_query:{...s.query.tax_query,queries:U(s.query.tax_query.queries,e,"taxonomy",t)}}})},__next40pxDefaultSize:!0}),t.length>1&&(0,n.createElement)(n.Fragment,null,(0,n.createElement)(d.FormTokenField,{label:(0,a.__)("Terms","advanced-query-loop"),suggestions:g,value:r,onInputChange:e=>{y(e)},onChange:t=>{i({query:{...s.query,tax_query:{...s.query.tax_query,queries:U(s.query.tax_query.queries,e,"terms",t)}}})},__next40pxDefaultSize:!0}),_?(0,n.createElement)(n.Fragment,null,(0,n.createElement)(d.SelectControl,{label:(0,a.__)("Operator","advanced-query-loop"),value:l,options:[...j.map((e=>({label:e,value:e})))],onChange:t=>{i({query:{...s.query,tax_query:{...s.query.tax_query,queries:U(s.query.tax_query.queries,e,"operator",t)}}})},__next40pxDefaultSize:!0}),(0,n.createElement)("div",{style:X},(0,n.createElement)(d.ToggleControl,{label:(0,a.__)("Include children","advanced-query-loop"),className:"advanced-query-loop__include-children",checked:o,onChange:t=>{i({query:{...s.query,tax_query:{...s.query.tax_query,queries:U(s.query.tax_query.queries,e,"include_children",t)}}})},__next40pxDefaultSize:!0}))):(0,n.createElement)(d.ToggleControl,{label:(0,a.__)("Exclude these terms from the query","advanced-query-loop"),checked:"NOT IN"===l,onChange:()=>{const t=s.query.tax_query.queries.find((t=>t.id===e));i({query:{...s.query,tax_query:{...s.query.tax_query,queries:U(s.query.tax_query.queries,e,"operator","IN"===t.operator?"NOT IN":"IN")}}})},__next40pxDefaultSize:!0})),(0,n.createElement)("hr",null),(0,n.createElement)(d.__experimentalHStack,{alignment:t?"edge":"right",style:X},t&&(0,n.createElement)(d.ToggleControl,{checked:_,label:(0,a.__)("Advanced mode","advanced-query-loop"),onChange:()=>m(!_),disabled:p,__nextHasNoMarginBottom:!0}),(0,n.createElement)(d.Button,{key:e,variant:"secondary",size:"small",isDestructive:!0,onClick:()=>i({query:{...s.query,tax_query:{...s.query.tax_query,queries:s.query.tax_query.queries.filter((({id:t})=>t!==e))}}})},(0,a.__)("Remove query","advanced-query-loop"))),(0,n.createElement)("hr",null),(0,n.createElement)("br",null))},W=({attributes:e,setAttributes:t,allowedControls:r})=>{const{query:{postType:l,multiple_posts:o=[],tax_query:{relation:s="",queries:i=[]}={}}={}}=e,c=(0,u.useSelect)((e=>e(D.store).getTaxonomies({per_page:50})?.filter((({types:e})=>e.some((e=>[l,...o].includes(e)))))));return r.includes("taxonomy_query_builder")?(0,n.createElement)(n.Fragment,null,(0,n.createElement)(d.Dropdown,{popoverProps:{placement:"left-start",offset:36},renderToggle:({isOpen:e,onToggle:t})=>(0,n.createElement)(d.Button,{variant:e?"primary":"secondary",onClick:t,"aria-haspopup":"true","aria-expanded":e,disabled:0===c.length},e?(0,a.__)("Close Taxonomy query builder","advanced-query-loop"):(0,a.__)("Open Taxonomy query builder","advanced-query-loop")),renderContent:()=>(0,n.createElement)(d.__experimentalDropdownContentWrapper,{paddingSize:"none",style:{width:"30rem"}},(0,n.createElement)(d.Panel,{header:(0,a.__)("Taxonomy Query Builder","advanced-query-loop")},(0,n.createElement)(d.PanelBody,null,i.length>1&&(0,n.createElement)(n.Fragment,null,(0,n.createElement)(d.ToggleControl,{label:(0,a.__)("Combine filters","advanced-query-loop"),help:(0,a.__)("By default, filters are combined with the OR operator. Enable this option to combine filters with the AND operator.","advanced-query-loop"),checked:"AND"===s,onChange:()=>{t({query:{...e.query,tax_query:{...e.query.tax_query,relation:"OR"===e.query.tax_query.relation?"AND":"OR"}}})},__nextHasNoMarginBottom:!1}),(0,n.createElement)("hr",null)),i.map((({id:r,taxonomy:a,terms:l,operator:o,include_children:u})=>(0,n.createElement)(G,{key:r,taxonomy:a,operator:o,terms:l,id:r,relation:s,includeChildren:u,availableTaxonomies:c,setAttributes:t,attributes:e}))),(0,n.createElement)(d.__experimentalHStack,null,(0,n.createElement)(d.Button,{variant:"primary",onClick:()=>{t({query:{...e.query,tax_query:{relation:s||"OR",queries:[...i,{id:S(),taxonomy:"",terms:[],include_children:!0,operator:"IN"}]}}})}},(0,a.__)("Add new query","advanced-query-loop")),i.length>0&&(0,n.createElement)(d.Button,{variant:"primary",isDestructive:!0,onClick:()=>{t({query:{...e.query,tax_query:[]}})}},(0,a.__)("Reset queries","advanced-query-loop"))))))})):null},J=({attributes:e,setAttributes:t,allowedControls:r})=>{const{query:{include_posts:l=[],postType:o,multiple_posts:s=[],exclude_current:i=0}={}}=e,[c,y]=(0,k.useState)(""),[_,m]=(0,k.useState)(s),p=(0,u.useSelect)((e=>{const{getEntityRecords:t}=e("core");return[...s,o].reduce(((e,r)=>[...e,...t("postType",r,{per_page:10,search:c,exclude:i?[i]:[]})||[]]),[])}),[o,s,i,c]);return(0,k.useEffect)((()=>{JSON.stringify(s)!==JSON.stringify(_)&&(t({query:{...e.query,include_posts:[]}}),m(s))}),[s]),r.includes("include_posts")?p?p.length>0&&!p[0].title?null:(0,n.createElement)(n.Fragment,null,(0,n.createElement)("h2",null," ",(0,a.__)("Include Posts","advanced-query-loop")),(0,n.createElement)(d.BaseControl,{help:(0,a.__)("Start typing to search for a post title or manually enter one.","advanced-query-loop"),__nextHasNoMarginBottom:!0},(0,n.createElement)(d.FormTokenField,{label:(0,a.__)("Posts","advanced-query-loop"),value:l.map((e=>(0,R.decodeEntities)(e.title))),suggestions:p.map((e=>(0,R.decodeEntities)(e?.title?.rendered||""))),onInputChange:e=>y(e),onChange:r=>{t({query:{...e.query,include_posts:r.map((e=>(e=>{const t=l.find((t=>(0,R.decodeEntities)(t.title)===e))||p.find((t=>(0,R.decodeEntities)(t.title.rendered.trim())===e));return t.title.rendered?{id:t.id,title:t.title.rendered}:t})(e)))||[]}}),y("")},__experimentalExpandOnFocus:!0,__experimentalShowHowTo:!1,__nextHasNoMarginBottom:!0}))):(0,n.createElement)("div",null,(0,a.__)("Loading…","advanced-query-loop")):null},Y=({attributes:e,setAttributes:t,allowedControls:r})=>{const{query:{disable_pagination:l}={}}=e;return r.includes("pagination")?(0,n.createElement)(d.ToggleControl,{label:(0,a.__)("Disable pagination","advanced-query-loop"),help:(0,a.__)("Disabling pagination will not show any pagination controls on the front end. It can also provide a performance improvement for complicated queries.","advanced-query-loop"),checked:!!l,onChange:()=>{t({query:{...e.query,disable_pagination:!l}})},__nextHasNoMarginBottom:!0}):null},$=({attributes:e,setAttributes:t,allowedControls:r})=>{const{query:{post_parent:l}={}}=e,{isHierarchial:o,postTypeName:i,postID:c}=(0,u.useSelect)((e=>{const t=e(s.store).getCurrentPost(),r=e(s.store).getCurrentPostType(),a=e(D.store).getPostType(r);return{isHierarchial:a?.hierarchical,postTypeName:r,postID:t?.id}}),[]);return r.includes("child_items_only")?(0,n.createElement)(d.ToggleControl,{__nextHasNoMarginBottom:!0,label:(0,a.__)("Show child items only","advanced-query-loop"),help:(0,a.__)("Only show child items of this item. This option is only available for hierarchical post types such as pages.","advanced-query-loop"),disabled:!o&&"wp_template"!==i,checked:!!l,onChange:r=>t({query:{...e.query,post_parent:r?c:0}})}):null},Z=({attributes:e,setAttributes:t,allowedControls:r})=>{const{query:{enable_caching:l,orderBy:o}={}}=e;return r.includes("enable_caching")?(0,n.createElement)(d.__experimentalToolsPanel,{label:(0,a.__)("AQL: Performance Controls","advanced-query-loop"),resetAll:()=>t({query:{...e.query,enable_caching:!1}})},(0,n.createElement)(d.__experimentalToolsPanelItem,{hasValue:()=>!!l,label:(0,a.__)("Caching","advanced-query-loop"),onDeselect:()=>t({query:{...e.query,enable_caching:!1}})},(0,n.createElement)(d.ToggleControl,{label:(0,a.__)("Enable Caching for this query","advanced-query-loop"),help:(0,a.__)("Enabling caching will store the results for subsequent page loads and will work to improve your site performance. This may not be needed for simple queries.","advanced-query-loop"),disabled:"rand"===o,checked:!!l,onChange:()=>{t({query:{...e.query,enable_caching:!l}})},__nextHasNoMarginBottom:!0}))):null},ee=e=>{const{attributes:{namespace:t}}=e;return t&&t===ae},te=["additional_post_types","taxonomy_query_builder","post_meta_query","post_order","exclude_current_post","include_posts","child_items_only","date_query_dynamic_range","date_query_relationship","pagination","exclude_posts","enable_caching"];(0,l.addFilter)("editor.BlockEdit","aql/add-add-controls/core/query",(e=>t=>{const{currentPostId:r,currentPostType:l}=(0,u.useSelect)((e=>{if(!ee(t))return{currentPostId:void 0,currentPostType:void 0};const r=e(s.store);return{currentPostId:r.getCurrentPostId(),currentPostType:r.getCurrentPostType()}}),[t?.attributes?.namespace]);if(ee(t)){var i,c;const{allowedControls:u}=null!==(i=window?.aql)&&void 0!==i?i:{},{attributes:s}=t,y=null!==(c=u?.split(","))&&void 0!==c?c:te,m={...t,allowedControls:y,context:{...t.context,currentPostId:r,currentPostType:l}};return s.query.inherit?(0,n.createElement)(n.Fragment,null,(0,n.createElement)(e,{...t}),(0,n.createElement)(o.InspectorControls,null,(0,n.createElement)(d.PanelBody,{title:(0,a.__)("Advanced Query Settings","advanced-query-loop")},(0,n.createElement)(H,{...m}),(0,n.createElement)(h.Slot,{fillProps:{...m}})))):(0,n.createElement)(n.Fragment,null,(0,n.createElement)(e,{...t}),(0,n.createElement)(o.InspectorControls,null,(0,n.createElement)(d.PanelBody,{title:(0,a.__)("Advanced Query Settings","advanced-query-loop")},(0,n.createElement)(b.Slot,{fillProps:{...m}}),(0,n.createElement)(F,{...m}),(0,n.createElement)(d.BaseControl,{label:(0,a.__)("Query Builders","advanced-query-loop"),id:"query-builders"},(0,n.createElement)(d.__experimentalVStack,{alignment:"center"},(0,n.createElement)(W,{...m}),(0,n.createElement)(I,{...m}))),(0,n.createElement)(H,{...m}),(0,n.createElement)(L,{...m}),(0,n.createElement)(J,{...m}),(0,n.createElement)($,{...m}),(0,n.createElement)(M,{...m}),(0,n.createElement)(Y,{...m}),(0,n.createElement)(_.Slot,{fillProps:{...m}})),(0,n.createElement)(Z,{...m})))}return(0,n.createElement)(e,{...t})})),(0,l.addFilter)("blocks.registerBlockType","aql/add-transforms/query-block",(function(e,t){return"core/query"!==t?e:{...e,keywords:[...e.keywords,"AQL","aql"],transforms:{to:e?.transforms?.to||[],from:[...e?.transforms?.from||[],{type:"enter",regExp:/^(AQL|aql)$/,transform:()=>(0,r.createBlock)("core/query",{namespace:"advanced-query-loop"},[])}]}}}));const re=window.wp.primitives,ae="advanced-query-loop";(0,r.registerBlockVariation)("core/query",{name:ae,title:(0,a.__)("Advanced Query Loop","advanced-query-loop"),description:(0,a.__)("Create advanced queries","advanced-query-loop"),icon:function(){return(0,n.createElement)(re.SVG,{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",fill:"none",viewBox:"0 0 24 24"},(0,n.createElement)(re.Path,{fill:"#2D2B55",d:"M0 0h24v24H0V0z"}),(0,n.createElement)(re.Path,{fill:"#fff",d:"M17.936 8.438h1.217v6.125h2.867v1.093h-4.084V8.437zM10.364 12.047c0 .515.11.97.33 1.361.22.392.519.701.897.928.385.22.815.33 1.289.33.481 0 .907-.106 1.279-.32.371-.22.663-.522.876-.907.213-.385.32-.825.32-1.32 0-.495-.107-.942-.32-1.34a2.455 2.455 0 00-.886-.95c-.372-.233-.812-.35-1.32-.35-.475 0-.898.11-1.269.33-.371.22-.663.526-.877.918-.213.385-.32.825-.32 1.32zm-1.29 0c0-.543.094-1.042.28-1.495.192-.454.456-.846.793-1.176a3.685 3.685 0 011.197-.784c.46-.185.955-.278 1.485-.278.543 0 1.041.093 1.495.278a3.57 3.57 0 011.186.784c.337.33.598.722.784 1.176.185.453.278.952.278 1.495 0 .536-.093 1.034-.278 1.495-.186.46-.447.86-.784 1.196-.33.337-.722.602-1.176.795a3.941 3.941 0 01-1.505.278 3.964 3.964 0 01-1.496-.278 3.676 3.676 0 01-1.196-.795 3.545 3.545 0 01-.784-1.196 3.964 3.964 0 01-.278-1.495zm3.425.515H13.9l3.248 3.146h-1.433l-3.217-3.146z"}),(0,n.createElement)(re.Path,{fill:"#E76F51",d:"M3.546 13.8l.227-1.031h3.351l.237 1.031H3.546zm1.887-3.32l-1.134 2.65-.021.268-1 2.258H1.906l3.527-7.62 3.527 7.62H7.588l-.98-2.196-.03-.3-1.145-2.68z"}))},isActive:["namespace"],attributes:{namespace:ae},scope:["inserter","transform"]}),aql=t})();
  • advanced-query-loop/trunk/includes/Query_Params_Generator.php

    r3339814 r3469652  
    2222    use Traits\Tax_Query;
    2323    use Traits\Post_Parent;
     24    use Traits\Enable_Caching;
     25    use Traits\OrderBy;
    2426
    2527    /**
     
    3032        'taxonomy_query_builder'   => 'tax_query',
    3133        'post_meta_query'          => 'meta_query',
    32         'post_order'               => 'post_order',
     34        'post_order'               => 'orderBy',
    3335        'exclude_current_post'     => 'exclude_current',
    3436        'include_posts'            => 'include_posts',
     
    3840        'pagination'               => 'disable_pagination',
    3941        'exclude_posts'            => 'exclude_posts',
     42        'enable_caching'           => 'enable_caching',
    4043    );
    4144
     
    6063     * @var array
    6164     */
    62     private array $custom_args = array();
     65    private array $custom_args = array( 'is_aql' => true );
    6366
    6467    /**
  • advanced-query-loop/trunk/includes/Traits/Exclude_Current.php

    r3313905 r3469652  
    2121     * Helper to generate the array
    2222     *
    23      * @param mixed $to_exclude The value to be excluded.
     23     * @param int $exclude_current_post The value to be excluded.
    2424     *
    2525     * @return array The ids to exclude
    2626     */
    27     public function get_exclude_ids( $to_exclude ) {
     27    public function get_exclude_ids( $exclude_current_post ) {
    2828        // If there are already posts to be excluded, we need to add to them.
    29         $exclude_ids = $this->custom_args['post__not_in'] ?? array();
     29        $exclude_ids     = $this->custom_args['post__not_in'] ?? array();
     30        $post_to_exclude = 0;
     31        if ( true !== $exclude_current_post && is_numeric( $exclude_current_post ) && $exclude_current_post >= 1 ) {
     32            $post_to_exclude = intval( $exclude_current_post );
     33        } else {
     34            // Try to get the queried object ID (frontend context)
     35            if ( function_exists( 'get_queried_object_id' ) ) {
     36                $post_to_exclude = get_queried_object_id();
     37            }
    3038
    31         if ( $this->is_post_id( $to_exclude ) ) {
    32             array_push( $exclude_ids, intval( $to_exclude ) );
    33         } else {
    34             // This is usually when this was set on a template.
    35             global $post;
    36             if ( $post ) {
    37                 array_push( $exclude_ids, $post->ID );
     39            // Fallback to global $post (editor, unit tests, etc.)
     40            if ( ! $post_to_exclude ) {
     41                global $post;
     42                if ( $post && isset( $post->ID ) ) {
     43                    $post_to_exclude = $post->ID;
     44                }
    3845            }
    3946        }
     47
     48        if ( $post_to_exclude > 0 ) {
     49            array_push( $exclude_ids, intval( $post_to_exclude ) );
     50        }
     51
    4052        return $exclude_ids;
    4153    }
  • advanced-query-loop/trunk/includes/Traits/Exclude_Taxonomies.php

    r3166016 r3469652  
    1616    public function process_exclude_taxonomies(): void {
    1717        $taxonomies_to_exclude = $this->custom_params['exclude_taxonomies'];
    18         if( count( $taxonomies_to_exclude ) ) {
     18        if ( count( $taxonomies_to_exclude ) ) {
    1919            $tax_query = [];
    2020            foreach ( $taxonomies_to_exclude as $slug ) {
    21                 $tax_query[]  = [
     21                $tax_query[] = [
    2222                    'taxonomy' => $slug,
    23                     'operator' => 'NOT EXISTS'
     23                    'operator' => 'NOT EXISTS',
    2424                ];
    2525            }
     
    2828    }
    2929}
    30 
  • advanced-query-loop/trunk/includes/enqueues.php

    r3325173 r3469652  
    1010use function AdvancedQueryLoop\Utils\{ is_gutenberg_plugin_version_or_higher, is_core_version_or_higher };
    1111
     12// Prevent direct access.
     13defined( 'ABSPATH' ) || exit;
    1214
    1315// Bail on unit tests.
     
    3941            wp_add_inline_script(
    4042                'advanced-query-loop',
    41                 'aql.allowedControls = "' . implode( ',', Query_Params_Generator::get_allowed_controls() ) . '";'
     43                'window.aql = window.aql || {}; window.aql.allowedControls = "' . implode( ',', Query_Params_Generator::get_allowed_controls() ) . '";'
    4244            );
    4345        }
  • advanced-query-loop/trunk/includes/query-loop.php

    r3339814 r3469652  
    77
    88namespace AdvancedQueryLoop;
     9
     10// Prevent direct access.
     11defined( 'ABSPATH' ) || exit;
    912
    1013// Bail on unit tests.
     
    99102    'init',
    100103    function () {
    101         $registered_post_types = \get_post_types( array( 'show_in_rest' => true, 'public' => true ) );
     104        $registered_post_types = \get_post_types(
     105            array(
     106                'show_in_rest' => true,
     107                'public'       => true,
     108            )
     109        );
    102110        foreach ( $registered_post_types as $registered_post_type ) {
    103111            \add_filter( 'rest_' . $registered_post_type . '_query', __NAMESPACE__ . '\add_custom_query_params', 10, 2 );
     
    117125 *
    118126 * @param array $query_params The query params.
    119  * @param array $post_type    The post type.
    120127 *
    121128 * @return array
     
    160167    return $merged;
    161168}
     169
     170
     171
     172/**
     173 * Retrieve any cached AQL instances and bypass making a query.
     174 */
     175
     176add_filter(
     177    'posts_pre_query',
     178    function ( $null_return, $query ) {
     179
     180        if ( ! $query->is_admin &&
     181            isset( $query->query['is_aql'] ) &&
     182            isset( $query->query['enable_caching'] ) &&
     183            true === $query->query['enable_caching'] &&
     184            ! isset( $_GET['context'] ) && // phpcs:ignore
     185            ! isset( $_GET['canvas'] ) // phpcs:ignore
     186        ) {
     187            $cached_query = get_transient( $query->query_vars_hash );
     188            if ( $cached_query ) {
     189                $query->found_posts   = $cached_query->found_posts;
     190                $query->max_num_pages = $cached_query->max_num_pages;
     191                return $cached_query->posts;
     192            }
     193        }
     194
     195        return $null_return;
     196    },
     197    10,
     198    2
     199);
     200
     201/**
     202 * Create a cache for the Query generated by the AQL instance.
     203 */
     204add_filter(
     205    'the_posts',
     206    function ( $posts, $query ) {
     207        if ( ! $query->is_admin &&
     208            isset( $query->query['is_aql'] ) &&
     209            isset( $query->query['enable_caching'] ) &&
     210            true === $query->query['enable_caching'] &&
     211            ! isset( $_GET['context'] ) && // phpcs:ignore
     212            ! isset( $_GET['canvas'] ) // phpcs:ignore
     213        ) {
     214            if ( ! get_transient( $query->query_vars_hash ) ) {
     215                set_transient( $query->query_vars_hash, $query, HOUR_IN_SECONDS );
     216            }
     217        }
     218        return $posts;
     219    },
     220    10,
     221    2
     222);
  • advanced-query-loop/trunk/includes/taxonomy.php

    r3203196 r3469652  
    77
    88namespace AdvancedQueryLoop\Taxonomy;
     9
     10// Prevent direct access.
     11defined( 'ABSPATH' ) || exit;
    912
    1013function convert_names_to_ids( $names, $tax ) {
  • advanced-query-loop/trunk/includes/utilities.php

    r3166016 r3469652  
    77
    88namespace AdvancedQueryLoop\Utils;
     9
     10// Prevent direct access.
     11defined( 'ABSPATH' ) || exit;
    912
    1013/**
     
    3437    return version_compare( $core, $version, '>=' );
    3538}
    36 
  • advanced-query-loop/trunk/index.php

    r3339814 r3469652  
    44 * Description:       Query loop block variations to create custom queries.
    55 * Plugin URI:        https://github.com/ryanwelcher/advanced-query-loop/
    6  * Version:           4.3.0
     6 * Version:           4.4.0
    77 * Requires at least: 6.2
    88 * Requires PHP:      7.4
  • advanced-query-loop/trunk/readme.md

    r3339814 r3469652  
    22
    33![](https://github.com/ryanwelcher/advanced-query-loop/actions/workflows/phpunit.yml/badge.svg?branch=trunk)
     4![](https://github.com/ryanwelcher/advanced-query-loop/actions/workflows/static-linting.yml/badge.svg?branch=trunk)
     5![](https://github.com/ryanwelcher/advanced-query-loop/actions/workflows/e2e.yml/badge.svg?branch=trunk)
    46
    57## Description
    68
    7 This plugin introduces a Query Loop block variation that will empower users to be able to do much more complicated queries with the Query Loop block, such number of posts to display and post meta
     9This plugin introduces a Query Loop block variation that will empower users to be able to do much more complicated queries with the Query Loop block, such as taxonomy queries, post meta queries, date queries, post ordering, and more
    810
    911### Support/Issues
     
    2931Remove the current post from the query.
    3032
    31 #### Exclude posts by category
    32 
    33 Choose to exclude posts from a list of categories.
    34 
    3533#### Exclude posts list
    3634
     
    5048
    5149-   Author
     50-   Comment Count
    5251-   Date
     52-   Included Posts
    5353-   Last Modified Date
    54 -   Title
     54-   Menu Order (props to @jvanja)
    5555-   Meta Value
    5656-   Meta Value Num
    57 -   Random
    58 -   Menu Order (props to @jvanja)
    5957-   Name (props @philbee)
    6058-   Post ID (props to @markhowellsmead)
    61 
    62 **Please note that this is a slight duplication of the existing sorting controls. They both work interchangeably but it just looks a bit odd in the UI**
     59-   Random
     60-   Title
    6361
    6462#### Disable Pagination
    6563
    66 Improve the performance of the query by disabling pagination. This is done automatically when there is now Pagination block in teh Post Template.
     64Improve the performance of the query by disabling pagination.
     65
     66#### Enable Caching
     67
     68Store query results in a transient for one hour to reduce database load on subsequent page loads. The caching toggle is unavailable when the order is set to Random, and switching to Random order will clear any existing caching setting. Found in the **AQL: Performance Controls** panel.
    6769
    6870## Filtering the available controls
     
    9698-   `'post_order'`
    9799-   `'exclude_current_post'`
     100-   `'exclude_posts'`
    98101-   `'include_posts'`
    99102-   `'child_items_only'`
     
    101104-   `'date_query_relationship'`
    102105-   `'pagination'`
     106-   `'enable_caching'`
    103107
    104108## Extending AQL
  • advanced-query-loop/trunk/readme.txt

    r3460887 r3469652  
    44Requires at least: 6.2
    55Tested up to: 6.9
    6 Stable tag: 4.3.0
     6Stable tag: 4.4.0
    77Requires PHP: 7.4
    88License: GPL v2 or later
     
    5353* **Exclude current post**: Automatically hide the post being viewed
    5454* **Exclude a list of posts**: Curate a list of posts to exclude from the query
    55 * **Category filtering**: Exclude posts from specific categories
    5655
    5756==== 🔍 Advanced Post Meta Queries ====
     
    8483* **Post ID**: Sort by post ID
    8584* **Comment Count**: Sort by engagement
     85* **Included Posts**: Sort by post inclusion order
    8686
    8787==== ⚡ Performance Optimization ====
    8888
    89 * **Smart pagination**: Automatically disable pagination when not needed
     89* **Disable pagination**: Reduce query overhead by turning off pagination when it is not needed
     90* **Enable caching**: Store query results in a transient for one hour to reduce database load on subsequent page loads. The caching toggle is unavailable when the order is set to Random, and switching to Random order will clear any existing caching setting
    9091* **Efficient queries**: Optimized database queries for better performance
    91 * **Caching friendly**: Works seamlessly with popular caching plugins
    9292
    9393=== Customization & Extensibility ===
     
    117117* `'post_order'` - Sorting options
    118118* `'exclude_current_post'` - Current post exclusion
     119* `'exclude_posts'` - Exclude a curated list of posts
    119120* `'include_posts'` - Manual post inclusion
    120121* `'child_items_only'` - Child post filtering
     
    122123* `'date_query_relationship'` - Date query logic
    123124* `'pagination'` - Pagination controls
     125* `'enable_caching'` - Query result caching
    124126
    125127==== Developer-Friendly ====
     
    156158== Changelog ==
    157159
     160= 4.4.0 =
     161* Add transient caching for query results and related UI control.
     162* Add current post ID and post type to context for SlotFill extensions.
     163* Add E2E tests using Playground and expand unit test coverage.
     164* Add static linting for PHP and JavaScript.
     165* Fix and improve caching controls.
     166* Fix TypeError crash when window.aql.allowedControls is undefined.
     167* Fix Exclude Current Post for synced patterns and templates.
     168* Fix Post ID ordering not working on the frontend.
     169* Fix post meta fetching to include all selected post types.
     170* Small fixes to pass Plugin Check plugin tests.
     171
    158172= 4.3.0 =
    159173* Exclude posts (props @darylldoyle, @Pulsar-X).
  • advanced-query-loop/trunk/vendor/autoload.php

    r3299559 r3469652  
    1515        }
    1616    }
    17     trigger_error(
    18         $err,
    19         E_USER_ERROR
    20     );
     17    throw new RuntimeException($err);
    2118}
    2219
  • advanced-query-loop/trunk/vendor/composer/ClassLoader.php

    r3097589 r3469652  
    4646    private static $includeFile;
    4747
    48     /** @var ?string */
     48    /** @var string|null */
    4949    private $vendorDir;
    5050
    5151    // PSR-4
    5252    /**
    53      * @var array[]
    54      * @psalm-var array<string, array<string, int>>
     53     * @var array<string, array<string, int>>
    5554     */
    5655    private $prefixLengthsPsr4 = array();
    5756    /**
    58      * @var array[]
    59      * @psalm-var array<string, array<int, string>>
     57     * @var array<string, list<string>>
    6058     */
    6159    private $prefixDirsPsr4 = array();
    6260    /**
    63      * @var array[]
    64      * @psalm-var array<string, string>
     61     * @var list<string>
    6562     */
    6663    private $fallbackDirsPsr4 = array();
     
    6865    // PSR-0
    6966    /**
    70      * @var array[]
    71      * @psalm-var array<string, array<string, string[]>>
     67     * List of PSR-0 prefixes
     68     *
     69     * Structured as array('F (first letter)' => array('Foo\Bar (full prefix)' => array('path', 'path2')))
     70     *
     71     * @var array<string, array<string, list<string>>>
    7272     */
    7373    private $prefixesPsr0 = array();
    7474    /**
    75      * @var array[]
    76      * @psalm-var array<string, string>
     75     * @var list<string>
    7776     */
    7877    private $fallbackDirsPsr0 = array();
     
    8281
    8382    /**
    84      * @var string[]
    85      * @psalm-var array<string, string>
     83     * @var array<string, string>
    8684     */
    8785    private $classMap = array();
     
    9189
    9290    /**
    93      * @var bool[]
    94      * @psalm-var array<string, bool>
     91     * @var array<string, bool>
    9592     */
    9693    private $missingClasses = array();
    9794
    98     /** @var ?string */
     95    /** @var string|null */
    9996    private $apcuPrefix;
    10097
    10198    /**
    102      * @var self[]
     99     * @var array<string, self>
    103100     */
    104101    private static $registeredLoaders = array();
    105102
    106103    /**
    107      * @param ?string $vendorDir
     104     * @param string|null $vendorDir
    108105     */
    109106    public function __construct($vendorDir = null)
     
    114111
    115112    /**
    116      * @return string[]
     113     * @return array<string, list<string>>
    117114     */
    118115    public function getPrefixes()
     
    126123
    127124    /**
    128      * @return array[]
    129      * @psalm-return array<string, array<int, string>>
     125     * @return array<string, list<string>>
    130126     */
    131127    public function getPrefixesPsr4()
     
    135131
    136132    /**
    137      * @return array[]
    138      * @psalm-return array<string, string>
     133     * @return list<string>
    139134     */
    140135    public function getFallbackDirs()
     
    144139
    145140    /**
    146      * @return array[]
    147      * @psalm-return array<string, string>
     141     * @return list<string>
    148142     */
    149143    public function getFallbackDirsPsr4()
     
    153147
    154148    /**
    155      * @return string[] Array of classname => path
    156      * @psalm-return array<string, string>
     149     * @return array<string, string> Array of classname => path
    157150     */
    158151    public function getClassMap()
     
    162155
    163156    /**
    164      * @param string[] $classMap Class to filename map
    165      * @psalm-param array<string, string> $classMap
     157     * @param array<string, string> $classMap Class to filename map
    166158     *
    167159     * @return void
     
    180172     * appending or prepending to the ones previously set for this prefix.
    181173     *
    182      * @param string          $prefix  The prefix
    183      * @param string[]|string $paths   The PSR-0 root directories
    184      * @param bool            $prepend Whether to prepend the directories
     174     * @param string              $prefix  The prefix
     175     * @param list<string>|string $paths   The PSR-0 root directories
     176     * @param bool                $prepend Whether to prepend the directories
    185177     *
    186178     * @return void
     
    188180    public function add($prefix, $paths, $prepend = false)
    189181    {
     182        $paths = (array) $paths;
    190183        if (!$prefix) {
    191184            if ($prepend) {
    192185                $this->fallbackDirsPsr0 = array_merge(
    193                     (array) $paths,
     186                    $paths,
    194187                    $this->fallbackDirsPsr0
    195188                );
     
    197190                $this->fallbackDirsPsr0 = array_merge(
    198191                    $this->fallbackDirsPsr0,
    199                     (array) $paths
     192                    $paths
    200193                );
    201194            }
     
    206199        $first = $prefix[0];
    207200        if (!isset($this->prefixesPsr0[$first][$prefix])) {
    208             $this->prefixesPsr0[$first][$prefix] = (array) $paths;
     201            $this->prefixesPsr0[$first][$prefix] = $paths;
    209202
    210203            return;
     
    212205        if ($prepend) {
    213206            $this->prefixesPsr0[$first][$prefix] = array_merge(
    214                 (array) $paths,
     207                $paths,
    215208                $this->prefixesPsr0[$first][$prefix]
    216209            );
     
    218211            $this->prefixesPsr0[$first][$prefix] = array_merge(
    219212                $this->prefixesPsr0[$first][$prefix],
    220                 (array) $paths
     213                $paths
    221214            );
    222215        }
     
    227220     * appending or prepending to the ones previously set for this namespace.
    228221     *
    229      * @param string          $prefix  The prefix/namespace, with trailing '\\'
    230      * @param string[]|string $paths   The PSR-4 base directories
    231      * @param bool            $prepend Whether to prepend the directories
     222     * @param string              $prefix  The prefix/namespace, with trailing '\\'
     223     * @param list<string>|string $paths   The PSR-4 base directories
     224     * @param bool                $prepend Whether to prepend the directories
    232225     *
    233226     * @throws \InvalidArgumentException
     
    237230    public function addPsr4($prefix, $paths, $prepend = false)
    238231    {
     232        $paths = (array) $paths;
    239233        if (!$prefix) {
    240234            // Register directories for the root namespace.
    241235            if ($prepend) {
    242236                $this->fallbackDirsPsr4 = array_merge(
    243                     (array) $paths,
     237                    $paths,
    244238                    $this->fallbackDirsPsr4
    245239                );
     
    247241                $this->fallbackDirsPsr4 = array_merge(
    248242                    $this->fallbackDirsPsr4,
    249                     (array) $paths
     243                    $paths
    250244                );
    251245            }
     
    257251            }
    258252            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
    259             $this->prefixDirsPsr4[$prefix] = (array) $paths;
     253            $this->prefixDirsPsr4[$prefix] = $paths;
    260254        } elseif ($prepend) {
    261255            // Prepend directories for an already registered namespace.
    262256            $this->prefixDirsPsr4[$prefix] = array_merge(
    263                 (array) $paths,
     257                $paths,
    264258                $this->prefixDirsPsr4[$prefix]
    265259            );
     
    268262            $this->prefixDirsPsr4[$prefix] = array_merge(
    269263                $this->prefixDirsPsr4[$prefix],
    270                 (array) $paths
     264                $paths
    271265            );
    272266        }
     
    277271     * replacing any others previously set for this prefix.
    278272     *
    279      * @param string          $prefix The prefix
    280      * @param string[]|string $paths  The PSR-0 base directories
     273     * @param string              $prefix The prefix
     274     * @param list<string>|string $paths  The PSR-0 base directories
    281275     *
    282276     * @return void
     
    295289     * replacing any others previously set for this namespace.
    296290     *
    297      * @param string          $prefix The prefix/namespace, with trailing '\\'
    298      * @param string[]|string $paths  The PSR-4 base directories
     291     * @param string              $prefix The prefix/namespace, with trailing '\\'
     292     * @param list<string>|string $paths  The PSR-4 base directories
    299293     *
    300294     * @throws \InvalidArgumentException
     
    430424    {
    431425        if ($file = $this->findFile($class)) {
    432             (self::$includeFile)($file);
     426            $includeFile = self::$includeFile;
     427            $includeFile($file);
    433428
    434429            return true;
     
    481476
    482477    /**
    483      * Returns the currently registered loaders indexed by their corresponding vendor directories.
    484      *
    485      * @return self[]
     478     * Returns the currently registered loaders keyed by their corresponding vendor directories.
     479     *
     480     * @return array<string, self>
    486481     */
    487482    public static function getRegisteredLoaders()
     
    561556    }
    562557
    563     private static function initializeIncludeClosure(): void
     558    /**
     559     * @return void
     560     */
     561    private static function initializeIncludeClosure()
    564562    {
    565563        if (self::$includeFile !== null) {
     
    575573         * @return void
    576574         */
    577         self::$includeFile = static function($file) {
     575        self::$includeFile = \Closure::bind(static function($file) {
    578576            include $file;
    579         };
     577        }, null, null);
    580578    }
    581579}
  • advanced-query-loop/trunk/vendor/composer/InstalledVersions.php

    r3097589 r3469652  
    2828{
    2929    /**
     30     * @var string|null if set (by reflection by Composer), this should be set to the path where this class is being copied to
     31     * @internal
     32     */
     33    private static $selfDir = null;
     34
     35    /**
    3036     * @var mixed[]|null
    3137     * @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}|array{}|null
    3238     */
    3339    private static $installed;
     40
     41    /**
     42     * @var bool
     43     */
     44    private static $installedIsLocalDir;
    3445
    3546    /**
     
    99110        foreach (self::getInstalled() as $installed) {
    100111            if (isset($installed['versions'][$packageName])) {
    101                 return $includeDevRequirements || empty($installed['versions'][$packageName]['dev_requirement']);
     112                return $includeDevRequirements || !isset($installed['versions'][$packageName]['dev_requirement']) || $installed['versions'][$packageName]['dev_requirement'] === false;
    102113            }
    103114        }
     
    120131    public static function satisfies(VersionParser $parser, $packageName, $constraint)
    121132    {
    122         $constraint = $parser->parseConstraints($constraint);
     133        $constraint = $parser->parseConstraints((string) $constraint);
    123134        $provided = $parser->parseConstraints(self::getVersionRanges($packageName));
    124135
     
    310321        self::$installed = $data;
    311322        self::$installedByVendor = array();
     323
     324        // when using reload, we disable the duplicate protection to ensure that self::$installed data is
     325        // always returned, but we cannot know whether it comes from the installed.php in __DIR__ or not,
     326        // so we have to assume it does not, and that may result in duplicate data being returned when listing
     327        // all installed packages for example
     328        self::$installedIsLocalDir = false;
     329    }
     330
     331    /**
     332     * @return string
     333     */
     334    private static function getSelfDir()
     335    {
     336        if (self::$selfDir === null) {
     337            self::$selfDir = strtr(__DIR__, '\\', '/');
     338        }
     339
     340        return self::$selfDir;
    312341    }
    313342
     
    323352
    324353        $installed = array();
     354        $copiedLocalDir = false;
    325355
    326356        if (self::$canGetVendors) {
     357            $selfDir = self::getSelfDir();
    327358            foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
     359                $vendorDir = strtr($vendorDir, '\\', '/');
    328360                if (isset(self::$installedByVendor[$vendorDir])) {
    329361                    $installed[] = self::$installedByVendor[$vendorDir];
    330362                } elseif (is_file($vendorDir.'/composer/installed.php')) {
    331                     $installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php';
    332                     if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) {
    333                         self::$installed = $installed[count($installed) - 1];
     363                    /** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $required */
     364                    $required = require $vendorDir.'/composer/installed.php';
     365                    self::$installedByVendor[$vendorDir] = $required;
     366                    $installed[] = $required;
     367                    if (self::$installed === null && $vendorDir.'/composer' === $selfDir) {
     368                        self::$installed = $required;
     369                        self::$installedIsLocalDir = true;
    334370                    }
     371                }
     372                if (self::$installedIsLocalDir && $vendorDir.'/composer' === $selfDir) {
     373                    $copiedLocalDir = true;
    335374                }
    336375            }
     
    341380            // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
    342381            if (substr(__DIR__, -8, 1) !== 'C') {
    343                 self::$installed = require __DIR__ . '/installed.php';
     382                /** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $required */
     383                $required = require __DIR__ . '/installed.php';
     384                self::$installed = $required;
    344385            } else {
    345386                self::$installed = array();
    346387            }
    347388        }
    348         $installed[] = self::$installed;
     389
     390        if (self::$installed !== array() && !$copiedLocalDir) {
     391            $installed[] = self::$installed;
     392        }
    349393
    350394        return $installed;
  • advanced-query-loop/trunk/vendor/composer/autoload_classmap.php

    r3339814 r3469652  
    1010    'AdvancedQueryLoop\\Traits\\Date_Query' => $baseDir . '/includes/Traits/Date_Query.php',
    1111    'AdvancedQueryLoop\\Traits\\Disable_Pagination' => $baseDir . '/includes/Traits/Disable_Pagination.php',
     12    'AdvancedQueryLoop\\Traits\\Enable_Caching' => $baseDir . '/includes/Traits/Enable_Caching.php',
    1213    'AdvancedQueryLoop\\Traits\\Exclude_Current' => $baseDir . '/includes/Traits/Exclude_Current.php',
    1314    'AdvancedQueryLoop\\Traits\\Exclude_Posts' => $baseDir . '/includes/Traits/Exclude_Posts.php',
     
    1617    'AdvancedQueryLoop\\Traits\\Meta_Query' => $baseDir . '/includes/Traits/Meta_Query.php',
    1718    'AdvancedQueryLoop\\Traits\\Multiple_Posts' => $baseDir . '/includes/Traits/Multiple_Posts.php',
     19    'AdvancedQueryLoop\\Traits\\OrderBy' => $baseDir . '/includes/Traits/OrderBy.php',
    1820    'AdvancedQueryLoop\\Traits\\Post_Parent' => $baseDir . '/includes/Traits/Post_Parent.php',
    1921    'AdvancedQueryLoop\\Traits\\Tax_Query' => $baseDir . '/includes/Traits/Tax_Query.php',
  • advanced-query-loop/trunk/vendor/composer/autoload_real.php

    r3299559 r3469652  
    3535
    3636        $filesToLoad = \Composer\Autoload\ComposerStaticInit2c7947baa07b931fce151839e3d6ffbe::$files;
    37         $requireFile = static function ($fileIdentifier, $file) {
     37        $requireFile = \Closure::bind(static function ($fileIdentifier, $file) {
    3838            if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
    3939                $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
     
    4141                require $file;
    4242            }
    43         };
     43        }, null, null);
    4444        foreach ($filesToLoad as $fileIdentifier => $file) {
    45             ($requireFile)($fileIdentifier, $file);
     45            $requireFile($fileIdentifier, $file);
    4646        }
    4747
  • advanced-query-loop/trunk/vendor/composer/autoload_static.php

    r3339814 r3469652  
    1414
    1515    public static $prefixLengthsPsr4 = array (
    16         'A' => 
     16        'A' =>
    1717        array (
    1818            'AdvancedQueryLoop\\' => 18,
     
    2121
    2222    public static $prefixDirsPsr4 = array (
    23         'AdvancedQueryLoop\\' => 
     23        'AdvancedQueryLoop\\' =>
    2424        array (
    2525            0 => __DIR__ . '/../..' . '/includes',
     
    3131        'AdvancedQueryLoop\\Traits\\Date_Query' => __DIR__ . '/../..' . '/includes/Traits/Date_Query.php',
    3232        'AdvancedQueryLoop\\Traits\\Disable_Pagination' => __DIR__ . '/../..' . '/includes/Traits/Disable_Pagination.php',
     33        'AdvancedQueryLoop\\Traits\\Enable_Caching' => __DIR__ . '/../..' . '/includes/Traits/Enable_Caching.php',
    3334        'AdvancedQueryLoop\\Traits\\Exclude_Current' => __DIR__ . '/../..' . '/includes/Traits/Exclude_Current.php',
    3435        'AdvancedQueryLoop\\Traits\\Exclude_Posts' => __DIR__ . '/../..' . '/includes/Traits/Exclude_Posts.php',
     
    3738        'AdvancedQueryLoop\\Traits\\Meta_Query' => __DIR__ . '/../..' . '/includes/Traits/Meta_Query.php',
    3839        'AdvancedQueryLoop\\Traits\\Multiple_Posts' => __DIR__ . '/../..' . '/includes/Traits/Multiple_Posts.php',
     40        'AdvancedQueryLoop\\Traits\\OrderBy' => __DIR__ . '/../..' . '/includes/Traits/OrderBy.php',
    3941        'AdvancedQueryLoop\\Traits\\Post_Parent' => __DIR__ . '/../..' . '/includes/Traits/Post_Parent.php',
    4042        'AdvancedQueryLoop\\Traits\\Tax_Query' => __DIR__ . '/../..' . '/includes/Traits/Tax_Query.php',
  • advanced-query-loop/trunk/vendor/composer/installed.php

    r3339814 r3469652  
    44        'pretty_version' => 'dev-trunk',
    55        'version' => 'dev-trunk',
    6         'reference' => '65d8d5a9b8e08f5c38bfa09042d2715a7c413680',
     6        'reference' => '4ba3c2cf4f6dc5e71453dfb0d0c398ca29915d2b',
    77        'type' => 'wordpress-plugin',
    88        'install_path' => __DIR__ . '/../../',
     
    1414            'pretty_version' => 'dev-trunk',
    1515            'version' => 'dev-trunk',
    16             'reference' => '65d8d5a9b8e08f5c38bfa09042d2715a7c413680',
     16            'reference' => '4ba3c2cf4f6dc5e71453dfb0d0c398ca29915d2b',
    1717            'type' => 'wordpress-plugin',
    1818            'install_path' => __DIR__ . '/../../',
  • advanced-query-loop/trunk/vendor/composer/platform_check.php

    r3104737 r3469652  
    2020        }
    2121    }
    22     trigger_error(
    23         'Composer detected issues in your platform: ' . implode(' ', $issues),
    24         E_USER_ERROR
     22    throw new \RuntimeException(
     23        'Composer detected issues in your platform: ' . implode(' ', $issues)
    2524    );
    2625}
Note: See TracChangeset for help on using the changeset viewer.