php
common_load_preferences(): array;
common_save_preferences(array $prefs): bool;
Masquerade as a specific site (-d domain
) and/or user (-u user
) to retrieve the user preferences as JSON (-o format
). Manipulate using jq
, then save the preferences back declaring source input format (-i format
) as JSON.
bash
# jq isn't always installed
yum install -y jq
# set nexus.notify-create value to 1
cpcmd -i json common:save-preferences "$(cpcmd -o json common:load-preferences | jq -r '.nexus["notify-create"]=1')"
It's also possible to use PHP's serialize (serialize()
/unserialize()
) if the format is changed from json
to serialize
.
bash
cpcmd -i serialize common:save-preferences "$(cpcmd -o serialize common:load-preferences | php -r '$prefs = unserialize(file_get_contents("php://stdin")); $prefs["nexus"]["notify-create"] = 1; echo serialize($prefs);')"
However it's clear to see JSON has its terse advantages.