/** * Down **/ public function down() { if ($this->db->tableExists('#__assets')) { $rules = '{"core.admin":{"7":1},"core.manage":{"6":1},"core.view":[],"core.create":[],"core.delete":[],"core.edit":[],"core.edit.state":[],"core.edit.own":[]}'; $query = "SELECT id FROM `#__assets` WHERE `name` = 'com_answers' LIMIT 1"; $this->db->setQuery($query); $id = $this->db->loadResult(); if (!$id) { include_once PATH_CORE . DS . 'libraries' . DS . 'joomla' . DS . 'database' . DS . 'table' . DS . 'asset.php'; $tbl = new \JTableAsset($this->db); $tbl->level = 1; $tbl->parent = 1; $tbl->name = 'com_answers'; $tbl->title = 'com_answers'; $tbl->rules = $rules; $tbl->check(); $tbl->store(); } else { // Set the first zone as default $query = "UPDATE `#__assets` SET `rules` = " . $this->db->quote($rules) . " WHERE `id` = " . $this->db->quote($id); $this->db->setQuery($query); $this->db->query(); } } }
/** * Saves an asset * * @param JTableAsset $asset * @param string $name * @param int $parentId * @param string $title * @param array $rules * * @return int|boolean */ protected static function saveAsset($asset, $name, $parentId, $title, $rules) { $asset->parent_id = $parentId; $asset->name = $name; $asset->title = $title; $error = $asset->getError(); if ($error) { return false; } else { if (empty($asset->id) || $asset->parent_id != $parentId) { $asset->setLocation($parentId, 'last-child'); } $temp = array(); foreach ($rules as $ruleName => $rules) { $temp[$ruleName] = array(); foreach ($rules as $userGroup => $permission) { if ($permission !== "") { $temp[$ruleName][(int) $userGroup] = (int) $permission; } } } $asset->rules = json_encode($temp); if (!$asset->check() || !$asset->store()) { return false; } else { return $asset->id; } } }