From: Florent Bruneau Date: Sun, 1 Jun 2008 14:37:09 +0000 (+0200) Subject: Stuff to create a blog via a webservice. X-Git-Url: http://git.polytechnique.org/?p=dotclear.git;a=commitdiff_plain;h=5322432c77c1ec34f7329ed0334c54b82e362b64 Stuff to create a blog via a webservice. Signed-off-by: Florent Bruneau --- diff --git a/_public.php b/_public.php index 1403395..e5f5f23 100644 --- a/_public.php +++ b/_public.php @@ -3,8 +3,14 @@ require_once dirname(__FILE__) . '/page.auth.php'; require_once dirname(__FILE__) . '/widget.auth.php'; require_once dirname(__FILE__) . '/widget.post.perms.php'; require_once dirname(__FILE__) . '/class.xorg.auth.php'; +require_once dirname(__FILE__) . '/page.webservice.php'; -$core->url->register('xorgAuth', 'Xorg', '^auth/(.*)$', array('xorgAuthentifier', 'doAuth')); +/* Xorg auth */ +$core->url->register('xorgAuth', 'XorgAuth', '^auth/(.*)$', array('xorgAuthentifier', 'doAuth')); +/* Post permission handling */ $core->addBehavior('coreBlogGetPosts', array('xorgPostPermsWidget', 'behavior_coreBlogGetPosts')); + +/* Webservice to create new blog */ +$core->url->register('xorgWebservice', 'XorgWebservice', '^xorgservice/(.*)$', array('XorgWebservice', 'handle')); ?> diff --git a/class.xorg.auth.php b/class.xorg.auth.php index 9fa422c..868cdfd 100644 --- a/class.xorg.auth.php +++ b/class.xorg.auth.php @@ -56,7 +56,7 @@ class xorgAuth extends dcAuth { $cur->user_email = $_SESSION['auth-xorg'] . '@polytechnique.org'; $cur->user_options = $core->userDefaults(); $cur->user_options['post_xorg_perms'] = 'public'; - $cur->user_default_blog = 'default'; // FIXME + $cur->user_default_blog = $_SERVER['DC_BLOG_ID']; $core->addUser($cur); } } diff --git a/page.webservice.php b/page.webservice.php new file mode 100644 index 0000000..e4783cb --- /dev/null +++ b/page.webservice.php @@ -0,0 +1,72 @@ +auth->sudo($service); + if ($result['status']) { + header($_SERVER['SERVER_PROTOCOL'] . ' 200 Success'); + } else { + header($_SERVER['SERVER_PROTOCOL'] . ' 500 Internal Server Error'); + } + echo $result['message']; + exit; + } + + static public function createBlog() { + global $core; + if (!isset($_GET['owner']) || !isset($_GET['url']) || !isset($_GET['type'])) { + return array('status' => false, + 'message' => 'Missing parameters'); + } + $owner = $_GET['owner']; + $url = $_GET['url']; + $type = $_GET['type']; + if ($type != 'user' && $type != 'group-member' && $type != 'group-admin') { + return array('status' => false, + 'message' => 'Invalid blog type required'); + } + if (isset($_GET['ownername'])) { + $ownername = $_GET['ownername']; + } else { + $ownername = $owner; + } + + $cur = new cursor($core->con, 'dc_blog'); + $cur->blog_id = $owner; + $cur->blog_uid = $owner; + $cur->blog_url = $url; + $cur->blog_name = 'Blog de ' . $ownername; + $cur->blog_status = 1; + $core->addBlog($cur); + + $settings = new dcSettings($core, $owner); + xorgBlogOwnerWidget::setXorgOwner($settings, $type, $owner); + + return array('status' => true, + 'message' => 'blog created'); + } +} + +?> diff --git a/widget.blog.owner.php b/widget.blog.owner.php index 66a234c..7cf24f4 100644 --- a/widget.blog.owner.php +++ b/widget.blog.owner.php @@ -59,12 +59,18 @@ class xorgBlogOwnerWidget { } public static function behavior_adminBeforeBlogSettingsUpdate(&$settings) { + self::setXorgOwner($settings, $_POST['xorg_blog_type'], $_POST['xorg_blog_owner']); + } + + public static function setXorgOwner(&$settings, $type, $owner) { global $core; if ($core->auth->isSuperAdmin()) { - $settings->put('xorg_blog_type', $_POST['xorg_blog_type'], 'string', 'Type de blog X.org'); - $settings->put('xorg_blog_owner', $_POST['xorg_blog_owner'], 'string', 'Propriétaire X.org du blog'); + $settings->setNamespace('xorgauth'); + $settings->put('xorg_blog_type', $type, 'string', 'Type de blog X.org'); + $settings->put('xorg_blog_owner', $owner, 'string', 'Propriétaire X.org du blog'); } } + } ?>