예제 #1
0
 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;
 }
예제 #2
0
 /**
  * @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));
 }
예제 #3
0
 /**
  * @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;
 }
예제 #4
0
 /**
  * @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));
 }
예제 #5
0
 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;
 }