Beispiel #1
0
function kigo_get_site_language()
{
    if (!is_array($solution_data = BAPISync::getSolutionData()) || !is_array($solution_data['Site']) || !is_string($solution_data['Site']['Language'])) {
        Loggly_logs::log(array('msg' => 'Unable to retrieve site language from solution data.', 'blog_id' => get_current_blog_id()));
        return 'en-US';
    }
    return $solution_data['Site']['Language'];
}
 /**
  * Handle the errors log if any
  * 
  * @param $debug_mode
  */
 private static function handle_logs($echo_logs = false)
 {
     if (count($logs = array_merge(self::$sync_error_logs, self::$wp_die_logs))) {
         if ($echo_logs) {
             echo '<pre>';
             print_r($logs);
             echo '</pre>';
         } else {
             Loggly_logs::log($logs, array(self::LOGGLY_TAG));
         }
     }
 }
 /**
  * Retrieve all the default and overwritten translations, and apply search and sort on it.
  * 
  * @param $nb_items
  *
  * @return array|null
  */
 private function _prepare_items(&$nb_items)
 {
     if (!is_string($lang_code = kigo_get_site_language()) || !is_array($translations = kigo_I18n::get_translations_for_edit($lang_code))) {
         Loggly_logs::log(array('msg' => 'Unable to retrieve translation for edit', 'lang_code' => $lang_code), array(kigo_I18n::LOGGLY_LOG_TAG_FATAL));
         return null;
     }
     // Handle the input search
     if (isset($_GET['s']) && strlen($search = wp_unslash(trim($_GET['s'])))) {
         $translations = array_filter($translations, function ($item) use($search) {
             return false !== stripos($item['key'], $search) || false !== stripos($item['default_value'], $search) || false !== stripos($item['value'], $search);
         });
     }
     $nb_items = count($translations);
     if (!isset($_REQUEST['orderby']) || !strlen($orderby = $_REQUEST['orderby']) || !in_array($orderby, array_keys(self::$sortable_colums))) {
         $orderby = 'key';
     }
     if (!isset($_REQUEST['order']) || !strlen($order = $_REQUEST['order']) || !in_array($orderby, array('asc', 'desc'))) {
         $order = 'asc';
     }
     uasort($translations, function ($item_a, $item_b) use($orderby, $order) {
         return ('desc' === $order ? -1 : 1) * strnatcasecmp($item_a[$orderby], $item_b[$orderby]);
     });
     return array_slice($translations, ($this->get_pagenum() - 1) * Kigo_Translations_List_Table::TRANSLATIONS_PER_PAGE, Kigo_Translations_List_Table::TRANSLATIONS_PER_PAGE, true);
 }
 /**
  * Echo the json response and exist
  * 
  * @param boolean $success
  * @param string $msg
  * @param array $data
  */
 private static function echo_json_response($success, $msg = '', $data = array())
 {
     header('Content-Type: application/json');
     if (!is_bool($success) || !is_string($msg) || !is_array($data)) {
         $data = array('success' => $success, 'msg' => $msg, 'data' => $data);
         Loggly_logs::log($data, array(self::LOGGLY_LOG_TAG_FATAL));
         echo json_encode(array('success' => false, 'msg' => 'Incorect parameters passed to method: ' . __METHOD__, 'data' => $data));
         exit;
     }
     echo json_encode(array('success' => $success, 'msg' => $msg, 'data' => $data));
     exit;
 }
Beispiel #5
0
 public function get($entity, $ids, $options = null)
 {
     if (!$this->isvalid()) {
         return null;
     }
     // In case init_get_cache() has been called before, try to retrieve the values from the local cache
     if (isset($this->use_cache_in_get_calls[$entity]) && $this->use_cache_in_get_calls[$entity]) {
         $fake_response = array('status' => 1, 'result' => array());
         $error = false;
         foreach ($ids as $id) {
             if (!isset($this->cache_get_call[$entity][$id])) {
                 $error = true;
                 break;
             }
             $fake_response['result'][] = $this->cache_get_call[$entity][$id];
         }
         if (!$error) {
             // In case of error, retrieving one or more id from the cache, default to the get call.
             return $fake_response;
         }
     }
     $url = $this->baseURL . "/ws/?method=get&apikey=" . $this->apikey . "&entity=" . $entity . '&ids=' . implode(",", $ids);
     if (!empty($options)) {
         $url = $url . "&" . http_build_query($options);
     }
     // adding <meta> on the page, for debugging purposes
     global $entityUpdateURL;
     $entityUpdateURL = $url;
     add_action('wp_head', 'bapi_add_entity_meta', 1);
     $response = wp_remote_get($url, array('sslverify' => !(defined('KIGO_DEBUG') && KIGO_DEBUG), 'timeout' => 50, 'headers' => array('User-Agent' => 'InstaSites Agent')));
     if (is_wp_error($response)) {
         Loggly_logs::log(array('BAPI get faillure', $response->get_error_message()), array('wp_bapi'));
         return false;
     }
     if (is_array($response) && isset($response['response']) && is_array($response['response']) && isset($response['response']['code']) && $response['response']['code'] == 200 && isset($response['body']) && is_string($response['body'])) {
         // BAPI also returns 200 when there are problems. So if the entity doesn't seem to be correctly retrieved, consider it a resource not found (404)
         if (!self::json_decode($decoded, $response['body']) || isset($decoded['error']) || !isset($decoded['status']) || $decoded['status'] != '1' || !isset($decoded['result']) || !is_array($decoded['result'])) {
             return true;
             // "not found"
         }
         return $decoded;
     }
     return false;
 }