/** * Resets and cascades permissions down to child objects * * @access private */ private static function cascade_permissions() { $db = new argent_database(); //$db->start_transaction(); /* Remove old cascade rules */ $sql = "\r\n DELETE FROM\r\n `ua_permissions`\r\n WHERE\r\n `master` != ''\r\n "; $db->query($sql); $sql = "\r\n SELECT\r\n *\r\n FROM\r\n `ua_permissions`\r\n WHERE\r\n `cascade` = 1\r\n "; $rules = $db->returntable($sql); if (count($rules) > 0) { foreach ($rules as $rule) { $user = $rule['user_id']; $meta_guid = $rule['meta_guid']; $descendents = argent_meta::descendents($rule['object_id']); if (count($descendents) > 0) { foreach ($descendents as $descendent) { $newguid = argent_identifier::meta_guid(); $sql = "\r\n INSERT INTO\r\n `ua_permissions`\r\n (\r\n `meta_guid`,\r\n `object_id`,\r\n `user_id`,\r\n `cascade`,\r\n `master`,\r\n `create`,\r\n `read`,\r\n `update`,\r\n `delete`,\r\n `meta_timestamp`\r\n )\r\n VALUES(\r\n '{$newguid}',\r\n '{$descendent}',\r\n '{$user}',\r\n 0,\r\n '{$meta_guid}',\r\n {$rule['create']},\r\n {$rule['read']},\r\n {$rule['update']},\r\n {$rule['delete']},\r\n NOW()\r\n )\r\n "; $db->query($sql); } } } } }