Exemple #1
0
 /**
  * Get list of media
  * @param array $params list of params of page
  * @return returns the list of object Media saved
  */
 public static function getMediaByParams($params)
 {
     $domainDa = \Innomatic\Core\InnomaticContainer::instance('\\Innomatic\\Core\\InnomaticContainer')->getCurrentDomain()->getDataAccess();
     $pageModule = $params['pagemodule'];
     $pageName = $params['pagename'];
     $pageId = strlen($params['pageid']) ? $params['pageid'] : '0';
     $blockModule = $params['blockmodule'];
     $blockName = $params['blockname'];
     $blockCounter = $params['blockcounter'];
     $fileId = $params['fileid'];
     $fieldName = $params['fieldname'];
     $default_language = \Innomedia\Locale\LocaleWebApp::getDefaultLanguage();
     // $current_language = \Innomedia\Locale\LocaleWebApp::getCurrentLanguage('backend');
     $current_language = \Innomedia\Locale\LocaleWebApp::getLanguageOfBlock($blockModule . '/' . $blockName, 'backend');
     $list_language_available = \Innomedia\Locale\LocaleWebApp::getListLanguagesAvailable();
     if ($current_language == $default_language) {
         $i = 0;
         $string_not_like = '';
         foreach ($list_language_available as $key => $value) {
             if ($i != 0) {
                 $string_not_like .= " AND ";
             }
             $string_not_like .= "params NOT LIKE '%\"{$key}\":%'";
             $i++;
         }
     }
     $page = "{$pageModule}/{$pageName}";
     $sql = "SELECT  params\n                FROM    innomedia_blocks\n                WHERE   page " . ($page != "/" ? "= '{$page}'" : "is NULL") . "\n                    AND pageid " . ($pageId != 0 ? "= {$pageId}" : "is NULL") . "\n                    AND block = '{$blockModule}/{$blockName}'\n                    AND counter = {$blockCounter}\n                    AND params LIKE '%\"{$fieldName}\":%'\n                    AND (\n                        (params LIKE '%\"{$current_language}\":%')\n                        " . ($current_language == $default_language ? "OR ({$string_not_like})" : '') . "\n                    )";
     $blocksQuery = $domainDa->execute($sql);
     $list_media = array();
     while (!$blocksQuery->eof) {
         $json_params = json_decode($blocksQuery->getFields('params'), true);
         $params = \Innomedia\Locale\LocaleWebApp::getParamsDecodedByLocales("{$blockModule}/{$blockName}", $json_params, 'backend');
         if (!is_array($params[$fieldName])) {
             $list_id_media[] = $params[$fieldName];
         } else {
             $list_id_media = $params[$fieldName];
         }
         $i = 0;
         foreach ($list_id_media as $value_id) {
             $page = "{$pageModule}/{$pageName}";
             $sql = "SELECT  *\n                        FROM    innomedia_media\n                        WHERE   page " . ($page != "/" ? "= '{$page}'" : "is NULL") . "\n                            AND pageid " . ($pageId != 0 ? "= {$pageId}" : "is NULL") . "\n                            AND block = '{$blockModule}/{$blockName}'\n                            AND blockcounter = {$blockCounter}\n                            AND fileid = '{$fileId}'\n                            AND id = {$value_id}";
             $mediaQuery = $domainDa->execute($sql);
             if (is_object($mediaQuery) && $mediaQuery->resultrows > 0) {
                 $list_media[$i]['id'] = $mediaQuery->getFields('id');
                 $list_media[$i]['name'] = $mediaQuery->getFields('name');
                 $list_media[$i]['path'] = $mediaQuery->getFields('path');
                 $list_media[$i]['filetype'] = $mediaQuery->getFields('filetype');
             }
             $i++;
         }
         $blocksQuery->moveNext();
     }
     return $list_media;
 }