Esempio n. 1
0
 /**
  * Imports all active languages from the according network option into the languages table.
  *
  * @return void
  */
 private function import_active_languages()
 {
     $languages = (array) get_network_option(null, 'inpsyde_multilingual', []);
     if (!$languages) {
         return;
     }
     $table = $this->languages_table->name();
     $query = "SELECT ID FROM {$table} WHERE wp_locale = %s OR iso_639_1 = %s";
     array_walk($languages, function (array $language) use($table, $query) {
         $language_id = $this->db->get_var($this->db->prepare($query, $language['lang'], $language['lang']));
         if ($language_id) {
             $this->db->update($table, ['priority' => 10], ['ID' => $language_id]);
             return;
         }
         if (!isset($language['lang'])) {
             $language['lang'] = '';
         }
         if (!isset($language['text'])) {
             $language['text'] = '';
         }
         $this->db->insert($table, ['english_name' => '' === $language['text'] ? $language['lang'] : $language['text'], 'wp_locale' => $language['lang'], 'http_name' => str_replace('_', '-', $language['lang'])]);
     });
 }
 /**
  * Constructor. Sets up the properties.
  *
  * @since 3.0.0
  *
  * @param Table         $table          Content relations table object.
  * @param SiteRelations $site_relations Site relations API object.
  */
 public function __construct(Table $table, SiteRelations $site_relations)
 {
     $this->table = $table->name();
     $this->site_relations = $site_relations;
     $this->db = $GLOBALS['wpdb'];
 }
 /**
  * Constructor. Sets up the properties.
  *
  * @since 3.0.0
  *
  * @param Table $table Site relations table object.
  */
 public function __construct(Table $table)
 {
     $this->table = $table->name();
     $this->db = $GLOBALS['wpdb'];
 }
 /**
  * Returns an array with column names as keys and the individual printf conversion specification as value.
  *
  * There are a lot more conversion specifications, but we don't need more than telling a string from an int.
  *
  * @param Table $table Table object.
  *
  * @return string[] The array with column names as keys and the individual printf conversion specification as value.
  */
 private function extract_field_specifications_from_table(Table $table)
 {
     $numeric_types = implode('|', ['BIT', 'DECIMAL', 'DOUBLE', 'FLOAT', 'INT', 'NUMERIC', 'REAL']);
     $schema = $table->schema();
     return array_combine(array_keys($schema), array_map(function ($definition) use($numeric_types) {
         return preg_match('/^\\s*[A-Z]*(' . $numeric_types . ')/', $definition) ? '%d' : '%s';
     }, $schema));
 }
 /**
  * Inserts the according default content into the given table.
  *
  * @param Table $table Table object.
  *
  * @return void
  */
 private function insert_default_content(Table $table)
 {
     $table_name = $table->name();
     // Bail if the table is not empty.
     if ($this->db->query("SELECT 1 FROM {$table_name} LIMIT 1")) {
         return;
     }
     $default_content = $table->default_content_sql();
     if (empty($default_content)) {
         return;
     }
     $columns = array_keys($table->schema());
     $columns = array_diff($columns, $table->columns_without_default_content());
     $columns = implode(',', $columns);
     $this->db->query("INSERT INTO {$table_name} ({$columns}) VALUES {$default_content}");
 }