예제 #1
0
 /**
  * Resolves path in complex component (socialnetwork) and find target file or folder.
  * @param \CComponentEngine $engine Component engine.
  * @param array             $pageCandidates Page candidates.
  * @param array             &$variables Output variables.
  * @return int|string
  */
 public function resolveSocNetPathComponentEngine(\CComponentEngine $engine, $pageCandidates, &$variables)
 {
     $component = $engine->getComponent();
     if (!$component) {
         list($pageId, $variables) = each($pageCandidates);
         return $pageId;
     }
     $storage = null;
     foreach ($pageCandidates as $pageId => $variablesTmp) {
         if (!empty($variablesTmp["PATH"]) && is_string($variablesTmp["PATH"])) {
             $storage = $this->getStorageByVariables($variablesTmp);
             if (!$storage) {
                 return '';
             }
             $variables = array_merge($variablesTmp, $this->resolvePathToFolder($storage, $variablesTmp["PATH"]));
             if (empty($variables['FOLDER_ID'])) {
                 return '';
             }
             return $pageId;
         } elseif (!empty($variablesTmp["FILE_PATH"]) && is_string($variablesTmp["FILE_PATH"])) {
             $storage = $this->getStorageByVariables($variablesTmp);
             if (!$storage) {
                 return '';
             }
             $variables = array_merge($variablesTmp, $this->resolvePathToFile($storage, $variablesTmp["FILE_PATH"]));
             if (empty($variables['FILE_ID'])) {
                 return '';
             }
             return $pageId;
         } elseif (!empty($variablesTmp["TRASH_PATH"]) && is_string($variablesTmp["TRASH_PATH"])) {
             $storage = $this->getStorageByVariables($variablesTmp);
             if (!$storage) {
                 return '';
             }
             $variables = array_merge($variablesTmp, $this->resolvePathToTrashFolder($storage, $variablesTmp["TRASH_PATH"]));
             if (empty($variables['FOLDER_ID'])) {
                 return '';
             }
             return $pageId;
         } elseif (!empty($variablesTmp["TRASH_FILE_PATH"]) && is_string($variablesTmp["TRASH_FILE_PATH"])) {
             $storage = $this->getStorageByVariables($variablesTmp);
             if (!$storage) {
                 return '';
             }
             $variables = array_merge($variablesTmp, $this->resolvePathToTrashFile($storage, $variablesTmp["TRASH_FILE_PATH"]));
             if (empty($variables['FILE_ID'])) {
                 return '';
             }
             return $pageId;
         }
     }
     list($pageId, $variables) = each($pageCandidates);
     return $pageId;
 }