Esempio n. 1
0
 /**
  * Retourne les données sql sur base des paramètres passés en paramète
  * @param $custom
  * @param array $current
  * @return array|null
  */
 public static function getData($custom, $current)
 {
     if (!is_array($custom)) {
         return null;
     }
     if (!array_key_exists('cms', $current)) {
         return null;
     }
     $conf = array('id' => null, 'type' => null, 'limit' => null, 'lang' => $current['lang']['iso'], 'context' => array(1 => 'parent'));
     $current = $current['cms'];
     // custom values: data_sort
     if (isset($custom['select'])) {
         if ($custom['select'] == 'current') {
             $conf['id'] = isset($current['parent']['id']) ? $current['parent']['id'] : $current['record']['id'];
         } elseif (is_array($custom['select'])) {
             if (array_key_exists($conf['lang'], $custom['select'])) {
                 $conf['id'] = $custom['select'][$conf['lang']];
             }
         }
     } elseif (isset($custom['exclude'])) {
         if (is_array($custom['exclude'])) {
             if (array_key_exists($conf['lang'], $custom['exclude'])) {
                 $conf['id'] = $custom['exclude'][$conf['lang']];
                 $conf['type'] = 'exclude';
             }
         }
     }
     // custom values: display
     if (isset($custom['context'])) {
         if (is_array($custom['context'])) {
             foreach ($custom['context'] as $k => $v) {
                 $conf['context'][1] = $k;
                 $conf['context'][2] = $v;
             }
         } else {
             $allowed = array('', 'all', 'parent', 'child', 'mix');
             if (in_array($custom['context'], $allowed)) {
                 $conf['context'][1] = $custom['context'];
             }
         }
     }
     // *** Load SQL data
     if ($conf['context'][1] == 'parent' or $conf['context'][1] == 'all') {
         $data = parent::s_page($conf['lang'], $conf['id'], $conf['type'], $conf['limit']);
         if ($data != null and ($conf['context'][2] == 'child' or $conf['context'][1] == 'all')) {
             foreach ($data as $k1 => $v1) {
                 $data_2 = parent::s_page_child($conf['lang'], $v1['idpage']);
                 if ($data_2 != null) {
                     $data[$k1]['subdata'] = $data_2;
                 }
             }
             $data_2 = null;
         }
     } elseif ($conf['context'][1] == 'child') {
         $data = parent::s_page_child($conf['lang'], $conf['id'], $conf['type'], $conf['limit']);
     } elseif ($conf['context'][1] == 'mix') {
         $data = parent::s_page_all($conf['lang'], $conf['id'], $conf['type'], $conf['limit']);
         if ($data != null and ($conf['context'][2] == 'child' or $conf['context'][1] == 'all')) {
             foreach ($data as $k1 => $v1) {
                 $data_2 = parent::s_page_child($conf['lang'], $v1['idpage']);
                 if ($data_2 != null) {
                     $data[$k1]['subdata'] = $data_2;
                 }
             }
             $data_2 = null;
         }
     }
     return $data;
 }