/**
  * @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() . ']');
     }
 }
示例#3
0
 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'));
 }
示例#4
0
 /**
  * @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);
 }