예제 #1
0
 public static void DashboardWidget(this WpApp app, string widget_id, string widget_name, Action <TextWriter> htmlwriter)
 {
     app.AddFilter(
         "wp_dashboard_setup",
         new Action(() => app.Context.Call("wp_add_dashboard_widget",
                                           (PhpValue)widget_id, (PhpValue)widget_name, PhpValue.FromClass(new Action(() => htmlwriter(app.Context.Output))))));
 }
예제 #2
0
 public static void Footer(this WpApp app, Action <TextWriter> callback, long priority = 100)
 {
     app.AddFilter("wp_footer", new Action(() =>
     {
         callback(app.Context.Output);
     }), priority);
 }
예제 #3
0
 /// <summary>
 /// Invoked by PHP plugin implementation (peachpie-api.php) to bridge into .NET.
 /// </summary>
 public virtual void AppStarted(WpApp app)
 {
     // activate plugins:
     foreach (var plugin in _plugins)
     {
         plugin.Configure(app);
     }
 }
예제 #4
0
 public static void AddAjaxAction(this WpApp app, string action, Func <string> callback)
 {
     app.AddFilter("wp_ajax_" + action, new Action(() =>
     {
         app.Context.Echo(callback());
         app.Context.Call("wp_die");
     }));
 }
예제 #5
0
 /// <summary>
 /// Invoked by PHP plugin implementation (DotNetBridge.php) to pass the WpApp PHP class.
 /// </summary>
 public static void AppStarted(Context ctx, WpApp host)
 {
     if (ctx.Globals["peachpie_wp_loader"].AsObject() is WpLoader loader)
     {
         loader.AppStarted(host);
     }
     else
     {
         throw new InvalidOperationException();
     }
 }
예제 #6
0
        public static string?AddManagementPage(this WpApp app, string pageTitle, string menuTitle, string capability, string slug, Action <TextWriter> callback, int?position = null)
        {
            var hook = app.Context.Call("add_management_page", pageTitle, menuTitle, capability, slug, new Action(() =>
            {
                callback(app.Context.Output);
            }), position.HasValue ? position.Value : PhpValue.Null);

            if (hook.IsFalse)
            {
                return(null);
            }

            return(hook.ToString());
        }
예제 #7
0
 public static PhpValue GetUserMeta(this WpApp app, int userId, string metaKey, bool single = false)
 => GetMetaData(app, "user", userId, metaKey, single);
예제 #8
0
 public static bool AddUserMeta(this WpApp app, int userid, string metakey, PhpValue metavalue, bool unique = false)
 {
     return(app.Context
            .Call("add_user_meta", (PhpValue)userid, (PhpValue)metakey, metavalue, unique)
            .IsInteger());
 }
예제 #9
0
 public static string?GetAdminEmail(this WpApp app)
 {
     return(GetOption(app, "admin_email").IsString(out var email) ? email : null);
 }
예제 #10
0
 public static void DashboardRightNow(this WpApp app, Action <TextWriter> htmlwriter)
 {
     app.AddFilter(
         "rightnow_end",
         new Action <Context>(ctx => htmlwriter(ctx.Output)));
 }
예제 #11
0
 public static void FilterPermalink(this WpApp app, the_permalink_filter filter) => app.AddFilter("the_permalink", filter);
예제 #12
0
 public static void FilterTitle(this WpApp app, the_title_filter filter) => app.AddFilter("the_title", filter);
예제 #13
0
 public static string GetVersion(this WpApp app) => app.Context.Globals["wp_version"].ToString();
예제 #14
0
 public static bool UpdateOption(this WpApp app, string option, PhpValue value)
 {
     return((bool)app.Context.Call("update_option", option, value));
 }
예제 #15
0
 public static void AdminNotices(this WpApp app, Func <string> callback)
 {
     app.AddFilter("admin_notices", new Action(() => app.Context.Echo(callback())));
 }
예제 #16
0
 public static void AdminMenu(this WpApp app, Action action) => app.AddFilter("admin_menu", action);
예제 #17
0
 public static void OnAdminInit(this WpApp app, Action action) => app.AddFilter("admin_init", action);
예제 #18
0
 public static PhpValue GetMetaData(this WpApp app, string metaType, int objectId, string metaKey, bool single = false)
 {
     return(app.Context.Call("get_metadata", metaType, (PhpValue)objectId, metaKey, single));
 }
예제 #19
0
 public static void FilterContent(this WpApp app, the_content_filter filter) => app.AddFilter("the_content", filter);
예제 #20
0
 public static PhpValue GetOption(this WpApp app, string option, PhpValue @default = default /*NULL*/)
 {
     return(app.Context.Call("get_option", option, @default));
 }
예제 #21
0
 public static string GetSiteUrl(this WpApp app, string path = "", string?scheme = null) => app.Context.Call("site_url", path, scheme).ToString();