getItemActiveServices($itemID); return Users::model()->userSave($itemID, ['svc' => join(',', $active)]); } /** * Get item data * @param int|string $itemID * @param array $columns * @return array|null */ public function getUserData($itemID, array $columns = []): ?array { return Users::model()->userData($itemID, $columns); } /** * Update item data * @param int|string $itemID * @param array $data * @return bool */ public function updateUserData($itemID, array $data): bool { return Users::model()->userSave($itemID, $data); } /** * @param array $filter * @return array */ public function list(array $filter = []): array { $filter = $this->defaults($filter, [ 'enabled' => true, ]); $icons = ['icon_b', 'icon_s']; $result = []; foreach ($this->services as $k => $v) { if ($filter['enabled'] && ! $v['enabled']) { continue; } foreach ($icons as $i) { if (isset($v['settings'][$i])) { $v[$i] = DataForm::getImageURL($v['settings'][$i], 'o'); } } $result[$k] = $v; } uasort($result, function ($a, $b) { return ($a['num'] > $b['num'] ? 1 : -1); }); return $result; } public function getUserPromoteServices($itemID, $userID, array $itemData = [], array $opts = []) { $services = $this->list(); foreach ($services as $k => & $v) { $service = $this->getService($v['class_name']); if (! $service) { unset($services[$k]); continue; } $service->setSettings($v); $service->setActivationSettings($itemID, $userID, $opts['activationSettings'] ?? null); $v['price'] = $service->getPrice(); $service->onActivationForm($v); } unset($v); return $services; } public function formParams(&$params) { $svc = $this->input->postget('svc', TYPE_STR); if ($svc) { $params['svc'] = $svc; $service = $this->getService($svc); if ($service) { $service->formParams($params); } } } }