private function toArrayFromModel(Disk\Internals\Model $model) { $entity = null; if ($model instanceof Disk\Storage) { $entity = new Entity\Storage(); } elseif ($model instanceof Disk\File) { $entity = new Entity\Folder(); } elseif ($model instanceof Disk\Folder) { $entity = new Entity\File(); } else { throw new RestException('Unknown object ' . get_class($model)); } $toArray = array_intersect_key($model->toArray(), $entity->getFieldsForShow()); foreach ($entity->getFieldsForMap() as $fieldName => $modifiers) { if (!isset($toArray[$fieldName])) { continue; } $toArray[$fieldName] = call_user_func_array($modifiers['OUT'], array($toArray[$fieldName])); } unset($fieldName, $modifiers); if ($model instanceof Disk\File) { $toArray['DOWNLOAD_URL'] = $this->host . $this->urlManager->getUrlForDownloadFile($model) . '&auth=' . $this->restServer->getAuth(); if ($model->getStorage()->getProxyType() instanceof Disk\ProxyType\RestApp) { $toArray['DETAIL_URL'] = null; } else { $toArray['DETAIL_URL'] = $this->host . $this->urlManager->getPathFileDetail($model); } } elseif ($model instanceof Disk\Folder) { if ($model->getStorage()->getProxyType() instanceof Disk\ProxyType\RestApp) { $toArray['DETAIL_URL'] = null; } else { $toArray['DETAIL_URL'] = $this->host . $this->urlManager->getPathInListing($model) . $model->getName(); } } return $toArray; }
/** * @param array $params * @param $start * @param \CRestServer $restServer * @return Service\Base * @throws RestException */ private function buildService(array $params, $start, \CRestServer $restServer) { list(, $entityName, $method) = explode('.', $restServer->getMethod()); $serviceClass = $this->getServiceClassByEntity($entityName); $reflection = new \ReflectionClass($serviceClass); return $reflection->newInstanceArgs(array($method, $params, $start, $restServer)); }
/** * @param array $params Input params. * @param int $n Offset. * @param \CRestServer $server Rest server instance. * @return array * @throws AccessException * @throws \Bitrix\Main\ArgumentException */ public static function getActivityList($params, $n, $server) { self::checkAdminPermissions(); $iterator = RestActivityTable::getList(array('select' => array('CODE'), 'filter' => array('=APP_ID' => $server->getAppId()))); $result = array(); while ($row = $iterator->fetch()) { $result[] = $row['CODE']; } return $result; }
/** * @param array $params * @param $start * @param \CRestServer $restServer * @return Service\Base * @throws RestException */ private function buildService(array $params, $start, \CRestServer $restServer) { list($prefix, $entityName, $method) = explode('.', $restServer->getMethod()); if ($prefix === \CRestUtil::METHOD_DOWNLOAD) { $entityName = 'file'; $method = \CRestUtil::METHOD_DOWNLOAD; } $serviceClass = $this->getServiceClassByEntity($entityName); $reflection = new \ReflectionClass($serviceClass); return $reflection->newInstanceArgs(array($method, $params, $start, $restServer)); }
protected function externalizeProductFile($productID, $fieldName, $valueID, $fileID, $dynamic = true) { $handlerUrl = "/bitrix/components/bitrix/crm.product.file/download.php"; $showUrl = CComponentEngine::MakePathFromTemplate("{$handlerUrl}?productId=#product_id#&fieldName=#field_name#&dynamic=#dynamic#&fileId=#file_id#", array('field_name' => $fieldName, 'file_id' => $fileID, 'product_id' => $productID, 'dynamic' => $dynamic ? 'Y' : 'N')); $downloadUrl = CComponentEngine::MakePathFromTemplate("{$handlerUrl}?auth=#auth#&productId=#product_id#&fieldName=#field_name#&dynamic=#dynamic#&fileId=#file_id#", array('auth' => $this->server ? $this->server->getAuth() : '', 'field_name' => $fieldName, 'file_id' => $fileID, 'product_id' => $productID, 'dynamic' => $dynamic ? 'Y' : 'N')); $result = array('id' => $fileID, 'showUrl' => $showUrl, 'downloadUrl' => $downloadUrl); if ($dynamic) { $result = array('valueId' => $valueID, 'value' => $result); } return $result; }