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'));
?>
--- /dev/null
+<?php
+require_once dirname(__FILE__) . '/widget.blog.owner.php';
+
+class XorgWebservice extends dcUrlHandlers {
+ static private function canRunServices() {
+ return true;
+ }
+
+ static public function handle($args) {
+ if (!self::canRunServices()) {
+ header($_SERVER['SERVER_PROTOCOL'] . ' 403 Forbidden');
+ echo "You're not allowed to run the webservices";
+ exit;
+ }
+ $service = null;
+ switch ($args) {
+ case 'createBlog':
+ $service = array('XorgWebservice', $args);
+ break;
+ }
+ if ($service == null) {
+ header($_SERVER['SERVER_PROTOCOL'] . ' 404 Not Found');
+ echo 'Webservice does not handle "' . $args . '"';
+ exit;
+ }
+ global $core;
+ $result = $core->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');
+ }
+}
+
+?>
}
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');
}
}
+
}
?>