public function action_ajax_update($handler) { $users = Users::get(); $payload = $handler->handler_vars->raw('payload'); $decoded_payload = json_decode($payload); if (isset($decoded_payload)) { // Invalid decoded JSON is NULL. $commit_sha = $decoded_payload->after; $owner = isset($decoded_payload->repository->organization) ? $decoded_payload->repository->organization : $decoded_payload->repository->owner->name; $repo_URL = $decoded_payload->repository->url; $tree_URL = "https://api.github.com/repos/" . $owner . "/" . $decoded_payload->repository->name . "/git/trees/{$commit_sha}"; $decoded_tree = json_decode(file_get_contents($tree_URL, 0, null, null)); $xml_urls = array_map(function ($a) { if (strpos($a->path, ".plugin.xml") !== false || $a->path === 'theme.xml') { return $a->url; // path was just the filename, url is the API endpoint for the file itself } }, $decoded_tree->tree); $xml_urls = array_filter($xml_urls); // remove NULLs if (count($xml_urls) === 1) { $xml_URL = array_pop($xml_urls); $decoded_blob = json_decode(file_get_contents($xml_URL, 0, null, null)); if ($decoded_blob->encoding === 'base64') { $xml_data = base64_decode($decoded_blob->content); } else { if ($decoded_blob->encoding === 'utf-8') { // does it need to be decoded? } else { // there's an invalid encoding. return; } } $xml_object = simplexml_load_string($xml_data, 'SimpleXMLElement'); /* can't hurt to hold onto these */ $xml_object->addChild("xml_string", $xml_object->asXML()); /* won't always need these */ $xml_object->addChild("tree_url", $tree_URL); $xml_object->addChild("blob_url", $xml_URL); $xml_object->addChild("ping_contents", $payload); /* might need this. Or should it go in downloadurl? */ $xml_object->addChild("repo_url", $repo_URL); /* need to check if there's already a posts with this guid */ if (!isset($xml_object->guid) || trim($xml_object->guid) == '') { // You must have a GUID or we can't find your plugin... // @todo Send the owner an error message/file an issue on the repo $this->file_issue($owner, $decoded_payload->repository->name, 'Info XML needs a GUID', "Habari addons require a GUID to be listed in the Addons Directory.<br>Please create and add a GUID to your xml file. You can use this one, which is new:<br><b>" . UUID::get() . "</b>"); } else { EventLog::log(_t('Making post for GUID %s', array(trim($xml_object->guid))), 'info'); self::make_post_from_XML($xml_object); } } else { // Wrong number of xml files. $this->file_issue($owner, $decoded_payload->repository->name, 'Too many XML files', "Habari addons should have a single XML file containing addon information.<br>"); } } else { // Something has gone wrong with the json_decode. Do nothing, since there is nothing that can really be done. } }
/** * Provide a quick AJAX method to return a GUID for the post page. * * @param ActionHandler $handler The handler being executed. */ public function action_auth_ajax_generate_guid($handler) { echo UUID::get(); }
/** * Create a new session - that is, generate an ID and set the session cookie */ public static function create() { self::$session_id = UUID::get(); self::cookie(self::$session_id); }
/** * Test to make sure that a parameter in a preset can be overridden * Issue habari/habari#355 */ public function test_preset_override() { $preset_name = UUID::get(); Plugins::register(function ($presets) use($preset_name) { $presets[$preset_name] = array('content_type' => 1); return $presets; }, 'filter', 'posts_get_all_presets'); $q1 = Posts::get($preset_name); $expected1 = array('preset' => array(0 => $preset_name), 'content_type' => 1); $this->assert_associative_equal($q1->get_param_cache, $expected1, "The parameters defined for the preset aren't the same as those returned by the preset", array($q1->get_param_cache, $expected1)); $q2 = Posts::get(array('preset' => $preset_name, 'content_type' => 2, 'status' => 'published')); $expected2 = array('status' => 'published', 'content_type' => 2, 'preset' => array(0 => $preset_name)); $this->assert_associative_equal($q2->get_param_cache, $expected2, "The parameters provided to Posts::get() aren't the same as those returned", array($q2->get_param_cache, $expected2)); }
public function test_get() { // @TODO: figure out if there's a way to make this less dependent on randomness $this->assert_not_equal($this->uuid->get_hex(), UUID::get()); }
public static function Generate() { $uuid = new UUID(); return $uuid->get(); }