function Websites_seo_post() { if (empty($_REQUEST['streamName'])) { throw new Q_Exception_RequiredField(array('field' => 'streamName')); } $prefix = "Websites/seo/"; if (substr($_REQUEST['streamName'], 0, strlen($prefix)) !== $prefix) { throw new Q_Exception_WrongValue(array('field' => 'streamName', 'range' => "string beginning with {$prefix}")); } $user = Users::loggedInUser(true); $publisherId = Users::communityId(); $type = "Websites/seo"; if (!Streams::isAuthorizedToCreate($user->id, $publisherId, $type)) { throw new Users_Exception_NotAuthorized(); } $stream = new Streams_Stream($publisherId); $stream->publisherId = $publisherId; $stream->name = $_REQUEST['streamName']; $stream->type = $type; if (isset($_REQUEST['uri'])) { $stream->setAttribute('uri', $_REQUEST['uri']); } $stream->save(); $stream->post($user->id, array('type' => 'Streams/created', 'content' => '', 'instructions' => Q::json_encode($stream->toArray())), true); $stream->subscribe(); // autosubscribe to streams you yourself create, using templates Q_Response::setSlot('stream', $stream->exportArray()); }
/** * Tool for admins to edit the url, title, keywords, description of the current page * @class Websites seo * @constructor * @param {Object} [$options] Options for the tool * @param {String} [$options.skipIfNotAuthorized=true] Whether to skip rendering the contents of the tool if the logged-in user is not authorized to edit the SEO information for this page. */ function Websites_seo_tool($options) { $skipIfNotAuthorized = Q::ifset($options, 'skipIfNotAuthorized', true); if ($skipIfNotAuthorized) { $websitesUserId = Users::communityId(); $sha1 = sha1(Q_Dispatcher::uri()); $seoStreamName = "Websites/seo/{$sha1}"; $stream = Streams::fetchOne(null, $websitesUserId, $seoStreamName); $user = Users::loggedInUser(); if (!$user or $stream and !$stream->testWriteLevel('suggest')) { $options['skip'] = true; } if (!$stream and !Streams::isAuthorizedToCreate($user->id, $websitesUserId, 'Websites/seo')) { $options['skip'] = true; } } unset($options['skipIfNotAuthorized']); Q_Response::addStylesheet('plugins/Websites/css/Websites.css'); Q_Response::addScript("plugins/Websites/js/Websites.js"); Q_Response::setToolOptions($options); $user = Users::loggedInUser(false, false); $userId = $user ? $user->id : ""; $communityId = Users::communityId(); $sha1 = sha1(Q_Dispatcher::uri()); $seoStreamName = "Websites/seo/{$sha1}"; $streams = Streams::fetch($userId, $communityId, array("Websites/header", "Websites/title", "Websites/slogan", $seoStreamName)); foreach ($streams as $name => $s) { if ($s) { $s->addPreloaded($userId); } } }
/** * Tool for admins to edit the url, title, keywords, description of the current page * @class Websites seo * @constructor * @param {Object} [$options] Options for the tool * @param {String} [$options.skipIfNotAuthorized=true] Whether to skip rendering the contents of the tool if the logged-in user is not authorized to edit the SEO information for this page. */ function Websites_seo_tool($options) { $skipIfNotAuthorized = Q::ifset($options, 'skipIfNotAuthorized', true); if ($skipIfNotAuthorized) { $websitesUserId = Q_Config::expect("Websites", "user", "id"); $sha1 = sha1(Q_Dispatcher::uri()); $seoStreamName = "Websites/seo/{$sha1}"; $stream = Streams::fetchOne(null, $websitesUserId, $seoStreamName); $user = Users::loggedInUser(); if (!$user or $stream and !$stream->testWriteLevel('suggest')) { $options['skip'] = true; } if (!$stream and !Streams::isAuthorizedToCreate($user->id, $websitesUserId, 'Websites/seo')) { $options['skip'] = true; } } unset($options['skipIfNotAuthorized']); Q_Response::addStylesheet('plugins/Websites/css/Websites.css'); Q_Response::addScript("plugins/Websites/js/Websites.js"); Q_Response::setToolOptions($options); }