/** * @param Category $category */ public function add(Category $category) { $id_parent = $category->get_id_parent(); $max_order = $this->db_querier->get_column_value($this->table_name, 'MAX(c_order)', 'WHERE id_parent=:id_parent', array('id_parent' => $id_parent)); $max_order = NumberHelper::numeric($max_order); if ($this->get_categories_cache()->category_exists($id_parent)) { $order = $category->get_order(); if ($order <= 0 || $order > $max_order) { $category->set_order($max_order + 1); $result = $this->db_querier->insert($this->table_name, $category->get_properties()); $this->regenerate_cache(); return $result->get_last_inserted_id(); } else { $result = PersistenceContext::get_querier()->select_rows($this->table_name, array('id', 'c_order'), 'WHERE id_parent=:id_parent AND c_order >= :order', array('id_parent' => $id_parent, 'order' => $category->get_order())); while ($row = $result->fetch()) { $this->db_querier->update($this->table_name, array('c_order' => $row['c_order'] + 1, 'WHERE id=:id', array('id' => $row['id']))); } $result = $this->db_querier->insert($this->table_name, $category->get_properties()); $this->regenerate_cache(); return $result->get_last_inserted_id(); } } else { throw new CategoryNotFoundException($id_parent); } }
/** * {@inheritDoc} */ public function associate($user_id) { $data = $this->get_google_user_data(); $authentication_method_columns = array('user_id' => $user_id, 'method' => self::AUTHENTICATION_METHOD, 'identifier' => $data['id'], 'data' => serialize($data)); try { $this->querier->insert(DB_TABLE_AUTHENTICATION_METHOD, $authentication_method_columns); } catch (SQLQuerierException $ex) { throw new IllegalArgumentException('User Id ' . $user_id . ' is already associated with an authentication method [' . $ex->getMessage() . ']'); } }
private function insert_smileys_data() { self::$db_querier->insert(self::$smileys_table, array('idsmiley' => 1, 'code_smiley' => ':o', 'url_smiley' => 'wow.png')); self::$db_querier->insert(self::$smileys_table, array('idsmiley' => 2, 'code_smiley' => ':whistle', 'url_smiley' => 'whistle.png')); self::$db_querier->insert(self::$smileys_table, array('idsmiley' => 3, 'code_smiley' => ':)', 'url_smiley' => 'smile.png')); self::$db_querier->insert(self::$smileys_table, array('idsmiley' => 4, 'code_smiley' => ':lol', 'url_smiley' => 'laugh.png')); self::$db_querier->insert(self::$smileys_table, array('idsmiley' => 5, 'code_smiley' => ':p', 'url_smiley' => 'tongue.png')); self::$db_querier->insert(self::$smileys_table, array('idsmiley' => 6, 'code_smiley' => ':(', 'url_smiley' => 'sad.png')); self::$db_querier->insert(self::$smileys_table, array('idsmiley' => 7, 'code_smiley' => ';)', 'url_smiley' => 'wink.png')); self::$db_querier->insert(self::$smileys_table, array('idsmiley' => 8, 'code_smiley' => ':what', 'url_smiley' => 'what.png')); self::$db_querier->insert(self::$smileys_table, array('idsmiley' => 9, 'code_smiley' => ':D', 'url_smiley' => 'grin.png')); self::$db_querier->insert(self::$smileys_table, array('idsmiley' => 10, 'code_smiley' => '^^', 'url_smiley' => 'happy.png')); self::$db_querier->insert(self::$smileys_table, array('idsmiley' => 11, 'code_smiley' => ':|', 'url_smiley' => 'straight.png')); self::$db_querier->insert(self::$smileys_table, array('idsmiley' => 12, 'code_smiley' => ':gne', 'url_smiley' => 'gne.png')); self::$db_querier->insert(self::$smileys_table, array('idsmiley' => 13, 'code_smiley' => ':top', 'url_smiley' => 'top.png')); self::$db_querier->insert(self::$smileys_table, array('idsmiley' => 14, 'code_smiley' => ':party', 'url_smiley' => 'party.png')); self::$db_querier->insert(self::$smileys_table, array('idsmiley' => 15, 'code_smiley' => ':devil', 'url_smiley' => 'devil.png')); self::$db_querier->insert(self::$smileys_table, array('idsmiley' => 16, 'code_smiley' => ':@', 'url_smiley' => 'angry.png')); self::$db_querier->insert(self::$smileys_table, array('idsmiley' => 17, 'code_smiley' => ':\'(', 'url_smiley' => 'cry.png')); self::$db_querier->insert(self::$smileys_table, array('idsmiley' => 18, 'code_smiley' => ':crazy', 'url_smiley' => 'crazy.png')); self::$db_querier->insert(self::$smileys_table, array('idsmiley' => 19, 'code_smiley' => ':cool', 'url_smiley' => 'cool.png')); self::$db_querier->insert(self::$smileys_table, array('idsmiley' => 20, 'code_smiley' => ':night', 'url_smiley' => 'night.png')); self::$db_querier->insert(self::$smileys_table, array('idsmiley' => 21, 'code_smiley' => ':vomit', 'url_smiley' => 'vomit.png')); self::$db_querier->insert(self::$smileys_table, array('idsmiley' => 22, 'code_smiley' => ':unhappy', 'url_smiley' => 'unhappy.png')); self::$db_querier->insert(self::$smileys_table, array('idsmiley' => 23, 'code_smiley' => ':love', 'url_smiley' => 'love.png')); self::$db_querier->insert(self::$smileys_table, array('idsmiley' => 24, 'code_smiley' => ':hum', 'url_smiley' => 'confused.png')); self::$db_querier->insert(self::$smileys_table, array('idsmiley' => 25, 'code_smiley' => ':drool', 'url_smiley' => 'drooling.png')); self::$db_querier->insert(self::$smileys_table, array('idsmiley' => 26, 'code_smiley' => ':cold', 'url_smiley' => 'cold.png')); self::$db_querier->insert(self::$smileys_table, array('idsmiley' => 27, 'code_smiley' => ':hot', 'url_smiley' => 'hot.png')); self::$db_querier->insert(self::$smileys_table, array('idsmiley' => 28, 'code_smiley' => ':hi', 'url_smiley' => 'hello.png')); self::$db_querier->insert(self::$smileys_table, array('idsmiley' => 29, 'code_smiley' => ':bal', 'url_smiley' => 'balloon.png')); self::$db_querier->insert(self::$smileys_table, array('idsmiley' => 30, 'code_smiley' => ':bomb', 'url_smiley' => 'bomb.png')); self::$db_querier->insert(self::$smileys_table, array('idsmiley' => 31, 'code_smiley' => ':brokenheart', 'url_smiley' => 'brokenheart.png')); self::$db_querier->insert(self::$smileys_table, array('idsmiley' => 32, 'code_smiley' => ':cake', 'url_smiley' => 'cake.png')); self::$db_querier->insert(self::$smileys_table, array('idsmiley' => 33, 'code_smiley' => ':dead', 'url_smiley' => 'dead.png')); self::$db_querier->insert(self::$smileys_table, array('idsmiley' => 34, 'code_smiley' => ':drink', 'url_smiley' => 'drink.png')); self::$db_querier->insert(self::$smileys_table, array('idsmiley' => 35, 'code_smiley' => ':flower', 'url_smiley' => 'flower.png')); self::$db_querier->insert(self::$smileys_table, array('idsmiley' => 36, 'code_smiley' => ':ghost', 'url_smiley' => 'ghost.png')); self::$db_querier->insert(self::$smileys_table, array('idsmiley' => 37, 'code_smiley' => ':gift', 'url_smiley' => 'gift.png')); self::$db_querier->insert(self::$smileys_table, array('idsmiley' => 38, 'code_smiley' => ':girly', 'url_smiley' => 'girly.png')); self::$db_querier->insert(self::$smileys_table, array('idsmiley' => 39, 'code_smiley' => ':heart', 'url_smiley' => 'heart.png')); self::$db_querier->insert(self::$smileys_table, array('idsmiley' => 40, 'code_smiley' => ':hug', 'url_smiley' => 'hug.png')); self::$db_querier->insert(self::$smileys_table, array('idsmiley' => 41, 'code_smiley' => ':idea', 'url_smiley' => 'idea.png')); self::$db_querier->insert(self::$smileys_table, array('idsmiley' => 42, 'code_smiley' => ':kiss', 'url_smiley' => 'kiss.png')); self::$db_querier->insert(self::$smileys_table, array('idsmiley' => 43, 'code_smiley' => ':mail', 'url_smiley' => 'mail.png')); self::$db_querier->insert(self::$smileys_table, array('idsmiley' => 44, 'code_smiley' => ':x', 'url_smiley' => 'mute.png')); self::$db_querier->insert(self::$smileys_table, array('idsmiley' => 46, 'code_smiley' => ':nerd', 'url_smiley' => 'nerd.png')); self::$db_querier->insert(self::$smileys_table, array('idsmiley' => 47, 'code_smiley' => ':sick', 'url_smiley' => 'sick.png')); self::$db_querier->insert(self::$smileys_table, array('idsmiley' => 48, 'code_smiley' => ':boring', 'url_smiley' => 'boring.png')); self::$db_querier->insert(self::$smileys_table, array('idsmiley' => 49, 'code_smiley' => ':zombie', 'url_smiley' => 'zombie.png')); }
/** * @desc save a Menu in the database * @param Menu $menu The Menu to save * @return bool true if the save have been correctly done */ public static function save(Menu $menu) { $block_position = $menu->get_block_position(); if (($block = $menu->get_block()) != Menu::MENU_NOT_ENABLED && ($block_position = $menu->get_block_position()) == -1) { $block_position = self::get_next_position($block); } $id_menu = $menu->get_id(); $columns = array('title' => $menu->get_title(), 'object' => serialize($menu), 'class' => get_class($menu), 'enabled' => (int) $menu->is_enabled(), 'block' => $block, 'position' => $menu->get_block_position()); if ($id_menu > 0) { self::$querier->update(DB_TABLE_MENUS, $columns, 'WHERE id=:id', array('id' => $id_menu)); } else { $result = self::$querier->insert(DB_TABLE_MENUS, $columns); $menu->id($result->get_last_inserted_id()); } return true; }
private function update_kernel_tables() { // Création des nouvelles tables pour l'authentification $tables = self::$db_utils->list_tables(true); // Modification de la table member $columns = self::$db_utils->desc_table(PREFIX . 'member'); if (!in_array(PREFIX . 'authentication_method', $tables) || isset($columns['login'])) { self::$db_utils->drop(array(PREFIX . 'authentication_method')); $fields = array('user_id' => array('type' => 'integer', 'length' => 11, 'notnull' => 1), 'method' => array('type' => 'string', 'length' => 32, 'default' => "''"), 'identifier' => array('type' => 'string', 'length' => 128, 'default' => "''"), 'data' => array('type' => 'text', 'length' => 65000)); $options = array('indexes' => array('method' => array('type' => 'unique', 'fields' => array('method', 'identifier')))); self::$db_utils->create_table(PREFIX . 'authentication_method', $fields, $options); } if (!in_array(PREFIX . 'internal_authentication', $tables) || isset($columns['login'])) { self::$db_utils->drop(array(PREFIX . 'internal_authentication')); $fields = array('user_id' => array('type' => 'integer', 'length' => 11, 'autoincrement' => true, 'notnull' => 1), 'login' => array('type' => 'string', 'length' => 255, 'default' => "''"), 'password' => array('type' => 'string', 'length' => 64, 'default' => "''"), 'registration_pass' => array('type' => 'string', 'length' => 30, 'notnull' => 1, 'default' => 0), 'change_password_pass' => array('type' => 'string', 'length' => 64, 'notnull' => 1, 'default' => "''"), 'connection_attemps' => array('type' => 'boolean', 'length' => 4, 'notnull' => 1, 'default' => 0), 'last_connection' => array('type' => 'integer', 'length' => 11, 'notnull' => 1, 'default' => 0), 'approved' => array('type' => 'boolean', 'length' => 1, 'notnull' => 1, 'default' => 0)); $options = array('primary' => array('user_id'), 'indexes' => array('login' => array('type' => 'unique', 'fields' => 'login'))); self::$db_utils->create_table(PREFIX . 'internal_authentication', $fields, $options); } if (!in_array(PREFIX . 'internal_authentication_failures', $tables) || isset($columns['login'])) { self::$db_utils->drop(array(PREFIX . 'internal_authentication_failures')); $fields = array('id' => array('type' => 'integer', 'length' => 11, 'autoincrement' => true, 'notnull' => 1), 'session_id' => array('type' => 'string', 'length' => 64, 'default' => "''"), 'login' => array('type' => 'string', 'length' => 255, 'default' => "''"), 'connection_attemps' => array('type' => 'boolean', 'length' => 4, 'notnull' => 1, 'default' => 0), 'last_connection' => array('type' => 'integer', 'length' => 11, 'notnull' => 1, 'default' => 0)); $options = array('primary' => array('id'), 'indexes' => array('session_id' => array('type' => 'key', 'fields' => 'session_id'))); self::$db_utils->create_table(PREFIX . 'internal_authentication_failures', $fields, $options); } // Insertions des mots de passe des membres actuels dans la nouvelle table if (isset($columns['login'])) { $result = self::$db_querier->select_rows(PREFIX . 'member', array('user_id', 'login', 'password', 'approbation_pass', 'change_password_pass', 'last_connect', 'user_aprob')); while ($row = $result->fetch()) { self::$db_querier->insert(PREFIX . 'authentication_method', array('user_id' => $row['user_id'], 'method' => PHPBoostAuthenticationMethod::AUTHENTICATION_METHOD, 'identifier' => $row['user_id'])); self::$db_querier->insert(PREFIX . 'internal_authentication', array('user_id' => $row['user_id'], 'login' => $row['login'], 'password' => $row['password'], 'registration_pass' => $row['approbation_pass'], 'change_password_pass' => $row['change_password_pass'], 'connection_attemps' => 0, 'last_connection' => $row['last_connect'], 'approved' => $row['user_aprob'])); } $result->dispose(); } $rows_change = array('login' => 'display_name VARCHAR(255)', 'timestamp' => 'registration_date INT(11)', 'user_groups' => 'groups TEXT', 'user_lang' => 'locale VARCHAR(25)', 'user_theme' => 'theme VARCHAR(50)', 'user_mail' => 'email VARCHAR(50)', 'user_show_mail' => 'show_email INT(4)', 'user_editor' => 'editor VARCHAR(15)', 'user_timezone' => 'timezone VARCHAR(50)', 'user_msg' => 'posted_msg INT(6)', 'user_pm' => 'unread_pm INT(6)', 'user_warning' => 'warning_percentage INT(6)', 'user_readonly' => 'delay_readonly INT(11)', 'user_ban' => 'delay_banned INT(11)', 'last_connect' => 'last_connection_date INT(11)'); foreach ($rows_change as $old_name => $new_name) { if (isset($columns[$old_name])) { self::$db_querier->inject('ALTER TABLE ' . PREFIX . 'member CHANGE ' . $old_name . ' ' . $new_name); } } if (isset($columns['password'])) { self::$db_utils->drop_column(PREFIX . 'member', 'password'); } if (isset($columns['test_connect'])) { self::$db_utils->drop_column(PREFIX . 'member', 'test_connect'); } if (isset($columns['approbation_pass'])) { self::$db_utils->drop_column(PREFIX . 'member', 'approbation_pass'); } if (isset($columns['change_password_pass'])) { self::$db_utils->drop_column(PREFIX . 'member', 'change_password_pass'); } if (isset($columns['user_aprob'])) { self::$db_utils->drop_column(PREFIX . 'member', 'user_aprob'); } if (!isset($columns['autoconnect_key'])) { self::$db_utils->add_column(PREFIX . 'member', 'autoconnect_key', array('type' => 'string', 'length' => 64, 'default' => "''")); } if (isset($columns['login'])) { self::$db_querier->inject('ALTER TABLE ' . PREFIX . 'member DROP KEY `user_id`'); } if (isset($columns['display_name']) && !$columns['display_name']['key'] || !isset($columns['display_name'])) { self::$db_querier->inject('ALTER TABLE ' . PREFIX . 'member ADD UNIQUE KEY `display_name` (`display_name`)'); } if (isset($columns['email']) && !$columns['email']['key'] || !isset($columns['email'])) { self::$db_querier->inject('ALTER TABLE ' . PREFIX . 'member ADD UNIQUE KEY `email` (`email`)'); } // Modification des tables extended fields $columns = self::$db_utils->desc_table(PREFIX . 'member_extended_fields'); if (!isset($columns['user_pmtomail'])) { self::$db_utils->add_column(PREFIX . 'member_extended_fields', 'user_pmtomail', array('type' => 'text', 'notnull' => 1)); self::$db_querier->insert(PREFIX . 'member_extended_fields_list', array('position' => 1, 'name' => LangLoader::get_message('type.user_pmtomail', 'admin-user-common'), 'field_name' => 'user_pmtomail', 'description' => '', 'field_type' => 'MemberUserPMToMailExtendedField', 'possible_values' => 's:0:"";', 'default_value' => '', 'required' => 0, 'display' => 0, 'regex' => 0, 'freeze' => 1, 'auth' => serialize(array('r-1' => 2, 'r0' => 2, 'r1' => 3)))); } // Modification de la table sessions $columns = self::$db_utils->desc_table(PREFIX . 'sessions'); $rows_change = array('session_ip' => 'ip VARCHAR(64)', 'session_time' => 'timestamp INT(11)', 'session_script' => 'location_script VARCHAR(100)', 'session_script_title' => 'location_title VARCHAR(100)', 'modules_parameters' => 'cached_data TEXT'); foreach ($rows_change as $old_name => $new_name) { if (isset($columns[$old_name])) { self::$db_querier->inject('ALTER TABLE ' . PREFIX . 'sessions CHANGE ' . $old_name . ' ' . $new_name); } } if (isset($columns['level'])) { self::$db_utils->drop_column(PREFIX . 'sessions', 'level'); } if (isset($columns['session_script_get'])) { self::$db_utils->drop_column(PREFIX . 'sessions', 'session_script_get'); } if (isset($columns['session_flag'])) { self::$db_utils->drop_column(PREFIX . 'sessions', 'session_flag'); } if (isset($columns['user_theme'])) { self::$db_utils->drop_column(PREFIX . 'sessions', 'user_theme'); } if (isset($columns['user_lang'])) { self::$db_utils->drop_column(PREFIX . 'sessions', 'user_lang'); } if (!isset($columns['data'])) { self::$db_utils->add_column(PREFIX . 'sessions', 'data', array('type' => 'text', 'length' => 65000)); } self::$db_querier->inject('ALTER TABLE ' . PREFIX . 'sessions DROP KEY `user_id`'); self::$db_querier->inject('ALTER TABLE ' . PREFIX . 'sessions ADD KEY `user_id` (`user_id`)'); if (isset($columns['timestamp']) && !$columns['timestamp']['key'] || !isset($columns['timestamp'])) { self::$db_querier->inject('ALTER TABLE ' . PREFIX . 'sessions ADD KEY `timestamp` (`timestamp`)'); } }
private function insert_failure_info() { $columns = array('session_id' => AppContext::get_session()->get_session_id(), 'login' => $this->login, 'last_connection' => $this->last_connection_date, 'connection_attemps' => $this->connection_attempts); $this->querier->insert(DB_TABLE_INTERNAL_AUTHENTICATION_FAILURES, $columns); }